基本的なコマンドは押さえておきたい
「せんせい!SQLってRDBを操作する言語よね?」(由美)
2010年02月04日 09時00分更新
データベースのリレーショナル演算を行なうデータ操作言語
先生:2回目のお話でリレーショナル演算についてお話しましたが、内容は覚えてますか?
お父さん:えっとデータの和と差と直積で、集合のベン図で表わせるのでしたよね。
由美:それと選択と射影と結合ね。選択は、リレーション中の条件に合ったタプルを抽出することで、射影は必要な属性だけを切り出すこと。結合は、2つのリレーションから、1つのリレーションを合成して作ることでしたよね。
先生:そうです。先ほどデータ操作言語には4つの文があるといいましたが、SELECT文はデータベースに対するリレーション演算結果を表示します。INSERT文はリレーション演算結果をデータベースに挿入するものです。DELETE文はリレーション演算結果をデータベースから削除します。UPDATE文はリレーション演算結果でデータベース中のデータを更新します。
お父さん:具体的に見せてもらえませんか。
先生:ではまずSELECT文から始めましょう。先に定義した商品データというテーブルに表1のデータがあるとします。ここで、商品データのすべての内容を表示させるには以下の操作をします。
SELECT * FROM 商品データ;
先生:今度は選択を行なってみましょう。先の商品データから、単価が100円未満の行を抽出するには以下のようにします。
SELECT * FROM 商品データ WHERE 単価 < 100;
SELECTの次には表示する列を列挙するのですが、「*」とすると指定したテーブルのすべてという意味になります。それから、FROMに続いてテーブル名を指定します。ここでは商品データです。
由美:列が「*」ということは、商品番号、商品名、単価の全部ということになるのですね。列指定は1つだけでも順番を変えてもいいのよね。あ、それが射影ということになるのね。
先生:そうです。もし、50円以上100円未満とするなら、
SELECT * FROM 商品データ WHERE (単価 < 100) and (単価 >= 50);
とします。結果は想像できますね?
お父さん:なるほどWHEREで条件を指定するのですね。
先生:では、結合を行なってみましょう。結合には内部結合と外部結合がありましたが、ここでは内部結合を扱います。表2のような販売データを考えます。この販売データと商品データを内部結合させるには以下のように書きます。その結果が表3です。
SELECT 商品名,販売数,販売日 FROM 商品データ, 販売データ WHERE 商品データ.商品番号 = 販売データ.商品番号;
由美:この結果を新しいテーブルとして作成することはできないのですか?
先生:はい、以下のようにしてテーブルを結合したデータを作成できます。
CREATE TABLE 結合データ AS SELECT 商品名,販売数,販売日 FROM 商品データ, 販売データ WHERE 商品データ.商品番号 = 販売データ.商品番号;
ここで気をつけないといけないのは、結合データにはこの時点でのテーブルの内容が反映されるということで、元の商品データに変更が加わっても、いま作成したテーブルには反映されません。
先生:次はINSERT文を使って商品データに新商品を追加します。結果はお分かりでしょう?
INSERT INTO 商品データ VALUES ('F', 'ボールペン', 50);
由美:FROMでテーブル名を指定していたのが、今度はINTOになるのですね。
先生:次はDELETE文を実行してみましょう。いま、挿入したボールペンという行を削除するには以下のようにします。WHEREで選択しないと、テーブル中の全データを削除してしまうので注意してください。
DELETE FROM 商品データ WHERE 商品名 = 'ボールペン';
お父さん:最後はUPDATE文ですね。
先生:はい。先程の商品データについて、100円以上の商品は一律10円値引きしたいとします。その場合はUPDATEを使って次のように書きます。
UPDATE 商品データ SET 単価 = 単価 - 10 WHERE 単価 >= 100;
お父さん:なるほどSQLを使うと、さまざまな操作を一括して行なえることが分かりました。
(次ページ、「データ操作言語は結果に対してさらにグループ化やソートができる」に続く)
この連載の記事
-
第3回
ソフトウェア・仮想化
「インデックスとトランザクションって」(由美) -
第2回
ソフトウェア・仮想化
「由美ちゃん、これがRDBの要素だよ」(先生) -
第1回
ソフトウェア・仮想化
「データベースってなんですか?」(由美) - この連載の一覧へ