このシリーズの目次「データベース」で示した,このシリーズで用いるデータをExcelファイルにした「教材データ一覧」を参照してください。
データベースの管理をするソフトウェアのことをDBMS(Database Management System)といいます。現在最も普及しているDBMSはRDB(リレーショナル・データベース)です。先にデータの正規化を学習しましたが,正規化したファイル群をRDBのテーブル(表)形式でコンピュータに実装します。その実装方法は省略します。
ここでは,必要とする情報が必要とする項目を持つテーブルを作り出すには,どのテーブルをどのように組み合わせればよいかについて考えます。それを通して,RDBの基本操作(射影,選択,結合)とSQLのSELECT文の概要を理解します。
DBMS,RDB,射影,選択,結合,SQL
過去問題:「SQL」( sql.html)
RDBは,データを2次元のテーブルとして取り扱います。その基本操作には,射影,選択,結合の3つがあります。
具体的なテーブルで例示すると次のようになります。
射影,選択,結合の基本操作を組み合わせることにより,複雑な処理をすることができます。下図では,
選択:売上表から月日が1004から1008までのレコードを選択して,
結合:得意先コードで得意先表と結合することにより得意先名を得て,
商品コードで商品表とと結合することにより商品名と単価を得て,
射影:月日,得意先名,商品名,数量,単価の項目を取り出して,
新しい表を作成しています。
売上表から月日が1004から1008までに商品区分がパソコンであるレコードを選択して,月日,得意先名,商品名,数量を項目とするテーブルを作成するのに,どのような操作が必要になるかを示して,結果のテーブルを示しなさい☆。
SQLは,RDBを作成したり操作する言語です。国際規格になっており,ほとんどのRDBのDBMS(データベース管理システム)はSQLに準拠しています。
SQLの機能は広いのですが,ここでは上記の基本操作に関係するSELECT文に限定し,しかも,その基本的な部分だけを学習します。なお,SELECT文に関する演習問題は,パソコンのデータベースシステムであるAccessを用いて,「SELECT文の演習」で行います。
基本形式
SELECT 射影するフィールド名 何を
FROM 使用するテーブル名 どこから
WHERE 結合条件 AND 選択条件; どのように
射影の例
SELECT 得意先コード,数量
FROM 売上表;
選択の例
SELECT * (*は「すべてのフィールド」の意味)
FROM 売上表
WHERE 得意先コード=500;
結合の例
SELECT 月日,売上表.得意先コード,商品コード,数量,得意先名
FROM 売上表,得意先表
WHERE 売上表.得意先コード=得意先表.得意先コード;
組合せの例
SELECT 月日,得意先名,商品名,単価,数量
FROM 売上表,得意先表,商品表
WHERE 売上表.得意先コード=得意先表.得意先コード
AND 売上表.商品コード=商品表.商品コード
AND 月日 BETWEEN 1004 AND 1008;
先の「練習問題」をSQLで記述しなさい(解答)。
SELECTを入れ子にすることができます。
SELECT 列, 列, …
FROM 表, 表, …
WHERE 列 = (SELECT ・・・)
とすると、( )の中で得られた結果を用いた操作になります。
副照会により、2つの表をまとめることができます。次のオプション(キーワード、赤字の部分)があります。
上の3つを表にしました。
表1 表2 和集合 差集合 共通集合
A A A B A
B D B C
C C
D
「教材データ一覧」の「授業(第3正規形)」を参考にして,次の設問に対する表を作りなさい。