データベース 副問い合わせ

uchiumiです。
今日のデータベースは副問い合わせについて学びました。

副問い合わせ

今日から新しく、テーブルを2つ使った処理というものをやりました。
副問い合わせとは、他のテーブルを参照し、その結果を反映させるというものです。
副問い合わせにはいくつかやり方があり、今日はそのうちの2つについて学びました。

WHERE句に書く場合

WHERE句で副問い合わせをすると、違うテーブルの中をでの条件式をつくることができま
す。
今日は副問い合わせのやり方としてIN(NOT IN)を教えてもらいました。
書き方は、

SELECT Number
FROM  テーブル1
WHERE Number IN( SELECT Number   FROM テーブル2);

と書くと、テーブル2の中にテーブル1のNumberと一致するものがあれば、それの結果を返してくれるというものです。
WHERE句の中にSELECTがあるなど、どこで何をしているのか混乱しそうですが、これから慣れて行きたいと思いました。

SELECT句に書く場合

SELECT句で副問い合わせをすると、違うテーブルのデータを表示することができます。

SELECT  Number,( SELECT Name  FROM  テーブル2
                    WHERE テーブル1.Number = テーブル2.Number ) AS 顧客名
FROM テーブル1;

と書くと、テーブル2の中にテーブル1のNumberと一致するNameが表示されます。
ここではWHERE句と違い、テーブル2とテーブル1のNumberが同じということを確かめるためには、副問い合わせのWHERE句の中で
テーブル名.カラム名 = テーブル名2.カラム名
という様に書いてあげます。
同じ副問い合わせですが、書き方が違ったりして難しいと感じました。

また2つのテーブルがでてくるということで、これからはお互いのテーブルの関係性を考えてSQL文を書く必要性があるとのことでした。
2つのテーブルを使うことによっていきなり難しさが増した気がします。
練習問題をやっていても、どことどこを結びつければどんな結果が返ってくるかなど、まだちゃんと理解できていないところがありました。
しかしこれからは複数のテーブルを扱うのが普通になっていくようなので、早く慣れていきたいと思います。


また、今日は先日行ったテストのフィードバックとして、
GROUP BYで指定したカラムはSELECTに絶対に書いておくべき、ということを教えていただきました。
問題文からだと読み取れないことなので、これから気をつけていきたいと思います。
また他にもGROUP BYでのミスが多かったみたいなので、新しいところだけでなく昔やったGROUP BYやLIKEなどの使い方についても復習していこうと思います。

(2008/07/14 18:06 uchiumi追記)
動画をアップしました!
part.1

part.2

1 件のコメント so far »

  1. by スタートアップ研修記 » データベース テーブルの結合, on 07.10.08 @ 6:31 PM

     

    [...] 今回は、前回の副問い合わせよりもわかりやすいと感じました。 [...]

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree