データベース千夜一夜第10回

テーブルの関連付けとサブクエリによる条件の抽出 長谷川裕行
有限会社 手國堂

リレーショナルデータベースの本領は、複数のテーブルを関連付けて現実の事象を表現するところにあります。

これまではSQLの基本を理解していただくために、シンプルな構成のデータベースを用いてきました。今回からは、現実の業務処理で用いるものに近いデータベースを使って、複数のテーブルを関連付けた状態でのSQLを紹介していきます。

まずは、関連付けの設定をしなくても関連するテーブルから値を引き出せる、サブクエリという便利な機能を紹介しましょう。


サンプル・データベースの扱いについて
今回から、新しいサンプル・データベースを使います。サンプル・データベースの登録方法については、前回(第9回)の記事から「新しいサンプルデータベースの準備」の項をお読みください。

なお、今回も、紹介しているSQLを実行するとサンプル・データベースの内容が書き換えられます。これまでの例にならって先にデータベースのバックアップを取っておくか、あるいは書き換えられるテーブル(今回は「商品_mr」)のコピーを作り、コピーに対してSQLによる書き換えを実行するようにしてください。

- 目次 -
新しいデータベースとリレーションの設定
新しいデータベースの構造
3つのテーブルの関連付け
「1対多」と「1対1」
共通のリレーションだけを設定する
マスターテーブルから在庫数を切り分ける理由
更新頻度の違いに注目
マスターは滅多に書き換えない
マスターをエラーから保護する
サブクエリによる条件の抽出
他のテーブルを参照する構造
2段階の処理で対処する
参照先テーブルから値を引き出せる
実行にはダミーのテーブルを
あとがき
長谷川 裕行 (はせがわ ひろゆき)
有限会社 手國堂 代表取締役   http://www.hirop.com/

大阪芸術大学 写真学科講師。フリーライター。日経ソフトウェアなどに連載。
『ソフトウェアの20世紀』、『独習SQL』など著書多数。

Copyright © GrapeCity inc. All rights reserved.