タグ

SQLに関するpopioのブックマーク (18)

  • Entity-Attribute-Value: SQL アンチパターン - ペンギンラボ Wiki

    Bill Karwin “SQL Antipatterns: Avoiding the Pitfalls of Database Programming” の読書メモ。 Jaywalking 目的 ある属性について、複数の値を持たせる。 アンチパターン : カンマ区切りリスト カンマ区切りで複数の値を 1 つの列に納める。 例では、特定の製品についての担当者を複数設定するのにカンマ区切りで、担当者のアカウントIDを記述している。 create table products ( product_id integer, product_name varchar(1000), acount_id varchar(100), -- comma separated list -- ... ); insert into products (product_id, product_name, accou

    popio
    popio 2014/03/05
  • SQL の相関サブクエリ (3) - 量化された比較述語 ALL, ANY

    SQL をはじめて触ったとき、exists 述語と並んで直感的に理解しずらかったのが ALL や ANY を伴った比較。 WHERE 句において単体の値を比較するのは問題ないけれど、 「すべての XXXX と比べてどうか?」 とか、「少なくとも 1 つの XXXX と比べてどうなのか?」 となるとイメージしずらくなる。 量化 – Wikipedia によると、 全ての人間の言語は、完全な数体系がない場合でも、量化を利用している(Wiese 2004)。例えば、日語での例は次の通りである。 「全ての方針に目を通す必要がある」 「川を渡っている人のうち何人かが白い腕章をしている」 「私が話した人々のほとんどが、誰に投票するか決めていなかった」 「待合室の誰もが小沢氏に対する少なくとも1つの不満を持っていた」 「クラスの誰かが、私の出した全ての問題に答えられるはずだ」 「多くの人々は賢明である

    SQL の相関サブクエリ (3) - 量化された比較述語 ALL, ANY
    popio
    popio 2013/01/24
    ALL,ANYについて
  • 第1回 連番の特性を利用してデータ操作をもっと自由に SQLで連番を扱う (2)行集合に連番を割り当てる | gihyo.jp

    まず、ROW_NUMBERを使う場合には、特に悩む必要はありません。ORDER BYのキーに追加しましょう(リスト3⁠)⁠。実行結果は図2です。 リスト3 主キーが複数列の場合(ROW_NUMBER) SELECT class, student_id, ROW_NUMBER() OVER (ORDER BY class, student_id) AS seq FROM Weights2; 図2 リスト3、4の実行結果 class student_id seq ----- ------------ --- 1 100 1 1 101 2 1 102 3 2 100 4 2 101 5 2 102 6 2 103 7 一方、相関サブクエリの場合はどうでしょう。いくつか方法があるのですが、私が最もシンプルと思うのは、複合キーを文字列とみなして連結し、強引に1列のキーに作り変えてしまうことです。そ

    第1回 連番の特性を利用してデータ操作をもっと自由に SQLで連番を扱う (2)行集合に連番を割り当てる | gihyo.jp
    popio
    popio 2012/08/24
    SQL 連番
  • ER図の表記法ごとにカーディナリティを並べてみた - kanonji’s diary

    ER図の表記法として、IE表記とIDEF1Xの2つが良く使われています。 それぞれカーディナリティの表し方が違うし、どちらもあまり直感的じゃない気がします。 分からなくなった時に参照できるように、それぞれのER図でカーディナリティを並べてみました。 なお、ER図はA5:SQL Mk-2を使って書きました。 親エンティティ側のカーディナリティが 0 or 1 の場合、子エンティティ側とは違った菱形の記号になる事に気が付いたので、画像を差し替えました。 親が0というのは、非依存な関係の場合にのみありえるので、菱形は独立エンティティの場合にのみ指定できるという説明を見かけたけました。 ツール上は依存エンティティでも 0 or 1 に指定できて菱形も出るけど、たぶんツールではそこまでチェックして無いということなのかな。 IDEF1X “P” (for positive) is placed bes

    ER図の表記法ごとにカーディナリティを並べてみた - kanonji’s diary
    popio
    popio 2012/04/03
    ER図の表記法
  • リレーショナル・データベースの世界

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

    popio
    popio 2012/03/06
    SQLの基礎について詳しく解説してある
  • サービス終了のお知らせ

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

  • インデックスの基礎知識

    ■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲

    popio
    popio 2011/08/04
  • SQL講座 INNER JOINを使った表の結合

    副問い合わせの中に相関副問い合わせという方法がある。これは、主問い合わせの結果をチェックするというものである。 副問い合わせではWHERE句で指定されたSELECT文の実行結果を元に主問い合わせを実行した。 それに対して、相関副問い合わせでは主問い合わせの表の1行ごとに副問い合わせを実行する。 そして、EXISTSを指定された副問い合わせでは、主問い合わせで指定されたデータが存在すれば真を返し、存在しなければ偽を返す。真の行だけが抽出される。 まず、準備としてEXISTS述語を指定したSELECT文の実行結果が分かりやすいように商品表に次の2つの行を追加する。 EXISTS述語の記述形式は以下のとおりである。 << 記述形式 >> 《例題1》 売上のあった商品名を抽出する。売上のあった商品とは、売上明細に存在する商品のことである。つまり、商品表の商品のうち売上明細に存在する商品を抽出すれば

    popio
    popio 2011/07/05
    EXISTSの使い方
  • 「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して

    SQLの「相関サブクエリ」がわかれば・・・ 巨大なSQLが,迷わずに読めるようになる。 「関数」のような,便利なサブクエリを書けるようになる。 以下では, 「相関サブクエリ」とは何か? 普通のサブクエリ(非相関サブクエリ)やJOIN操作とは何が違うのか? 多重にネストされた,巨大なSQLの読み方は? という点を論じる。 サンプルデータ,および全体の方針 (1)サブクエリ無しでJOIN (2)INで非相関サブクエリ (2)の補足:サブクエリを「関数」と考えてみよう (3)EXISTSで相関サブクエリ 他のサンプル 巨大SQLの読み方 サンプルデータ,および全体の方針 まず,相関サブクエリの説明のために,以下のようなテーブルを例として取り上げる。 table1が,普通のデータ table2が,マスタデータ(ホワイトリスト) 「マスタに一致しないレコードをはじく」という操作をしたい。 方法は3パ

    「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して
    popio
    popio 2010/12/03
  • 高木浩光@自宅の日記 - 三菱図書館システムMELIL旧型の欠陥、アニメ化 - 岡崎図書館事件(7)

    ■ 三菱図書館システムMELIL旧型の欠陥、アニメ化 - 岡崎図書館事件(7) 21日の日記で示したMELIL/CS(旧型)の構造上の欠陥について、その仕組みをアニメーションで表現してみる。 まず、Webアクセスの仕組み。ブラウザとWebサーバはHTTPで通信するが、アクセスごとにHTTP接続は切断される*1。以下のアニメ1はその様子を表している。 このように、アクセスが終わると接続が切断されて、次のアクセスで再び接続するのであるが、ブラウザごとに毎回同じ「セッションオブジェクト」に繋がるよう、「セッションID」と呼ばれる受付番号を用いて制御されている。 なお、赤い線は、その接続が使用中であることを表している。 次に、「3層アーキテクチャ」と呼ばれる、データベースと連携したWebアプリケーションの実現方式について。3層アーキテクチャでは、Webアプリケーションが、Webサーバからデータベー

    popio
    popio 2010/11/29
  • ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering

    こんにちはこんにちは。最近お腹痛いばっかり言ってることで有名なiwanagaです。 DeNAは外部的にはプラットフォーム的な部分の方がフィーチャーされることが多いですが、実はソーシャルゲームの提供も行っています。怪盗ロワイヤルとか、どこかで聞いたことがあるのではないでしょうか。 僕はDeNAでソーシャルゲームが誕生した辺りからずっとサーバサイドを見てきましたが、そんな運用の中で自分が貯めてきた知見とかTIPSをご紹介したいと思います。 かれこれ10タイトル近くはレビューしたり運用したりしてるため結構言いたいことはいっぱいあるので、小出しにしつつ評判よければ次も書きます。 ソーシャルゲームのためのMySQL入門一覧 ソーシャルゲームのためのMySQL入門 - Technology of DeNA ソーシャルゲームのためのMySQL入門2 - Technology of DeNA 「MySQL

    ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering
    popio
    popio 2010/11/16
  • 楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編

    はじめに システム構築においてデータベース設計は不可欠です。そこで多くの方がデータベースの設計技法について書籍で学んだりするのですが、なかなか身についたと感じられないことも多いのではないかと感じます。 その理由は、実務で任せられる機会というのが少ないからというのが大きなものとして挙げられます。データベース設計というのは、やはり重要な箇所ですから自然と経験のある人に任せられることが多いのが実態です。しかもデータベース設計を担当するのはプロジェクト全体の中でもごく少数だけになりますから、なかなかチャンスが巡ってきません。 しかし、それを嘆いているばかりではスキルが身につかないのも道理です。そこで身近にあるものを何でも手当たり次第にデータベース設計のネタにしてしまうことで、コツコツと地力をつけていこうというのがこのシリーズの主旨です。 合言葉は、「表組みを見たらERDを描け!」 。では、張り切っ

    楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編
    popio
    popio 2010/11/06
  • TECHSCORE - Java,SQLプログラミング技術解説

    SQL データベース操作言語SQLについて、またRDBMSの持つ機能について詳しく解説します。 DB概要、SQL、テーブル操作、データ操作 ... 特集:replication PostgreSQLのレプリケーションシステムを紹介し、それらの機能を比較していきます。 特集:pgbench PostgreSQLのベンチマークテストに用いられるプログラムである pgbench について解説します。 SQL演習問題 各章に用意された演習問題を集めました。

  • 素早く正規形を見抜く実践テクニック(1/4) - @IT

    今回のテーマはデータベースエンジニアの必須知識の1つである「正規化」です。正規化は、リレーショナル・データベースのテーブル設計を行ううえで非常に重要なテクニックであり、データベースを設計、実装したことのある方なら一度は正規化に触れているのではないでしょうか。 それほど基的な知識であるにもかかわらず、正規化を説明できる人はなかなかいません。多く聞かれるのが「何となくテーブルを作ると自然に第3正規形になる」とか「実務上は第3正規化まで行えば問題ない」というものです。 ではなぜ「第3正規化まで行えば問題ない」のでしょうか。稿ではひととおり正規化について確認しながら、あまり触れられることのない第3正規化より先の正規化を紹介して、この疑問に答えていきたいと思います。 正規化の位置付け 正規化は、データベース設計全般にかかわる基礎知識ですが、特に論理データモデリングの作業の中で必要になります。稿

    素早く正規形を見抜く実践テクニック(1/4) - @IT
    popio
    popio 2010/10/29
    正規形のお勉強
  • データベース言語SQL 初心者用データベース入門

    マンガでわかるデータベース 特定ベンダーの製品によらないデータベースの概念を、マンガでやさしく解説。果物の輸出に追われる王国の姫が、データベースによる解決策を1つ1つ学んでいくというストーリーをとおして、データベースの基的な概念を身につけることができる。情報処理技術者試験対策にも役立つ練習問題付き。 SQLの絵―データベースがみるみるわかる9つの扉 データベースを思いどおりに動かそう!見る・ためす・わかる!入門書 SQLはデータベースを操作するために覚えるべき技術ですが、難しくてなかなかものにできないという人も多いのではないでしょうか。書は、かわいいイラストで解説しているので、直感的にイメージをとらえることができ、理解も進みます。さあ、扉を開いて、SQLの達人への道を進みましょう!

    popio
    popio 2010/10/29
    SQL入門
  • 初めてSQLコマンドを叩く緊張と感動の一瞬

    主な内容 --Page 1-- ▼SQLとT-SQLについて ▼SQLの機能分類 --Page 2-- ▼SQL Server 2005を利用してみよう ▼Management Studioを利用する --Page 3-- ▼初めてSQLコマンドを発行してみる 連載は、SQL Server 2005を利用しSQLの基礎からストアドプロシージャの作成までを、順序立てて解説していきます。読者対象はSQLに初めて触れるような方を対象としています。ちょうど連載が春からの開始となりますので、新人プログラマの方々はこの機会にぜひSQLをマスターしてください。また、連載ではSQLを網羅的にとらえるよりも、分かりやすく実践的な内容を記述していきます。ツールの簡単な使い方から各種構文まで扱いますので、各回で取り上げた内容をきっかけとして、SQL学習を進めていきましょう。 SQLとT-SQLについて SQ

    初めてSQLコマンドを叩く緊張と感動の一瞬
    popio
    popio 2010/10/28
  • 超初心者向けSQL入門

    最近SQLを勉強しています。 HPのネタもあまりないので、超初心者向けに、ちょーしこいて入門編を 作ってみました。オラクル取れるくらいまでの勉強を目指している方には簡単すぎると思いますが、あくまでも入門編ですのでご了承下さい。 ★また、更新については、仕事の合い間に行うため、完成まで時間がかかることと思います★ 間違いなどがありましたら、掲示板にてご指摘いただければと存じますm(__)m

    popio
    popio 2010/10/28
  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
    popio
    popio 2010/09/16
    プログラミング
  • 1