タグ

sqlに関するmuamqmのブックマーク (10)

  • 「SQL アンチパターン」は色んな戦争の火種になりそう - yoshiori.github.io

    監訳の一人である @t_wada に献頂きました。 ありがとうございます!!! でだ、いきなりだけどコレ、タイトルで損してると思うんだよね…… だって、SQL のアンチパターンてタイトルだったら、 join した結果の方で where で絞るよりも on 句で先に絞れ 的なのが書いてあると思うじゃん!! 問い合わせ言語の事だと思うじゃん!!! 違った…… ほとんど書いてあるのは DB 設計についてだった…… まぁ、副題は「Avoiding the Pitfalls of Database Programming」のだし、まぁいいか。 んで、読んでみた感想とか もうね、何年か DB 絡んだ開発したことのある人なら(・∀・)ニヤニヤ出来ると思う。 「”マルチカラムアトリビュート”とか 10 年前に通ったわー」 とか 「あーはいはい”インデックスショットガン”乙」 みたいな。 Explain

    muamqm
    muamqm 2013/02/11
    読んだ方がよさげだな〜
  • SQLアンチパターン

    書はDB設計やSQL記述の際に避けるべき事柄を1章で1つ、25個紹介する書籍です。リレーショナルデータベースを中心に据えたシステム開発には、様々な場面で陥りやすい失敗(アンチパターン)があります。書はデータベース論理設計、データベース物理設計、クエリの記述、アプリケーション開発という4つのカテゴリに分け、それぞれの分野におけるアンチパターンを紹介し、失敗を避けるためのより良い方法を紹介します。複数の値を持つ属性や再帰的なツリー構造の格納から、小数値の丸めやNULLの扱いに起因する問題、全文検索やSQLインジェクション、MVCアーキテクチャなど、実践的かつ幅広いトピックを網羅します。日語版では、MySQLのエキスパートとして著名な奥野幹也氏によるアンチパターンを収録。データベースに関わるすべてのエンジニア必携の一冊です。 書への称賛の声 監訳者まえがき はじめに I部 データベース論

    SQLアンチパターン
    muamqm
    muamqm 2013/01/16
  • INをEXISTSに書き換えると速くなるサンプルSQLを作るのは難しい - 極北データモデリング

    「INをEXISTSに書き換えると速くなる」という話が、DBMSやそのバージョンを限定せずにSQL一般の話として語られることがあるけど、実感としてそれはないだろうと。 そこでどういう場合に速くなるのか確認しようと思ったけどうまくいかなかったので、どういう場合に速くならないかを書いてみます。 速くならない(1) - 同一の実行計画になる SQL Server 2005で以下のSQLを流すと、IN/EXISTSで同一の実行計画が出てきた。 IN select count(*) from 受注 t where 商品CD in (select 商品CD from 商品) EXISTS select count(*) from 受注 t where exists (select * from 商品 where 商品CD=t.商品CD) 実行計画 |--Compute Scalar(DEFINE:([

    INをEXISTSに書き換えると速くなるサンプルSQLを作るのは難しい - 極北データモデリング
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • CakePHP 1.2RC1からは比較演算子をキーに書く

    via: “1.2RC1でのSQLインジェクション対策” フォーラム – CakePHP Users in Japan リンク先にあるとおり、1.2RC1ではfind()の条件を指定する際、比較演算子を配列のキー側に書くように変更されています。 CakePHPでは値の先頭にある比較演算子をSQLとして実行してしまう特性があったので、1.2betaまでは以下のようなコードを記述していました。 // $id = 1が外部から来るとする $user = $this->User->find(array('id' => '= ' . $id)); しかし1.2RC1でこのコードを実行すると[‘= ‘ . $id]が値として認識されてしまいます。 SELECT * FROM users WHERE id = '''= '' 1'; 1.2RC1では条件配列のキーの部分に比較演算子を書くようになっていま

  • JsonSQL登場 - JSONをSQLで操作 | エンタープライズ | マイコミジャーナル

    Ajax Webアプリケーションにおけるデータ形式として普及がはじまっているJSONデータ形式だが、同データを扱うおもしろいライブラリが発表されたので紹介したい。2008年1月に新しく発表されたJavaScriptライブラリ「JsonSQL」だ。Apache License Version 2.0のもとで公開されている。コード自体はコメントを抜いて90行ほどと短く、実現されている機能も限られたものだ。コンセプトプルーフ的なライブラリだがなかなか興味深い。 JsonSQLはJSONデータをSQL命令を使って操作できるようにするライブラリ。2008年1月現在公開されているバージョン0.1ではselect命令だけがサポートされており、"*"によるワイルドカード指定はフィールドに対してのみ適用できる。値をカンマで区切って指定する場合は","にスペースを加えずに詰めて記述する必要がある。whereの

    muamqm
    muamqm 2008/01/18
    発想がすげぇ
  • PreparedStatementAndNull

    312 :1/3:05/03/12 03:17:26 ID:??? 突然ですが,面白い SQL を思いついたので,ご意見を頂きたいです.興味を持たれた方は使ってみてくだちい。 一般的に,SQL の発行は,プリペアドステートメントを使う方がよいとされている.その理由は, DBMS のキャッシュが良く効く. SQL インジェクション等の危険が避けられる,等. しかし,webアプリの検索フォームなどでは,プリペアドステートメントは使えない場合が多かった.検索条件項目が複数存在していて,いずれの項目も必須で無い場合,項目が入力されているかどうかをチェックし,それに合わせてSQL 文の WHERE 句の内容をツギハギしなければならないからだ. SQL文そのものも,そしてそれにセットする引数の個数も可変なので,プリペアドステートメントを使うのは無理だったのである. 今回思いついたのは,このような条件で

  • SQL文をきれいにフォーマットしてくれる『SQL in Form』 | POP*POP

    長~いSQL文を見ているとどこがどういう構造になっているのかがわからなくなってきますよね。 そうしたときに使えそうなのが「SQL in Form」です。 一般向けのサービスではないですが、関係ある方には便利なのでは。 以下に簡単にご紹介。 ↑ たとえばこのようなSQL文。コメント分やインデントがわかりにくくなっています。 ↑ SQL in Formを通せばこの通り。構造がすっきりして見やすいですね。 変換する際には改行やインデント、空白の扱いなどの設定をすることもできます。またデスクトップ用のアプリもあるみたいですね。 ご利用は以下からどうぞ。無料で使えます。 » SQL Formatter / SQLFormatter formats SQL Statements

  • 3値論理とNULL:CodeZine

    要するに、データベースにnullが1つでも含まれていれば、クエリから正しくない結果が返される可能性がある。しかも、一般的には、どのクエリから正しくない結果が返されるのかを知る方法はないので、すべての結果があやしく見えてくる。nullが含まれたデータベースから正しい結果が得られることは確信できない。筆者に言わせれば、この状況はまさにお手上げである。 ――――C.J.デイト はじめに 多くのプログラミング言語が、真理値型(BOOL型、BOOLEAN型)というデータ型を持っています。もちろん、SQLにも真理値型が存在します。ユーザーが直接扱えるデータ型として定義されたのはSQL-99ですが、WHERE句などの条件の評価時にも真理値の演算が行なわれています。 ところで、普通のプログラミング言語の真理値型とSQLの真理値型の違いをご存知でしょうか? それは、普通の言語の真理値型が、true、fals

  • 1