2013年08月08日
【OSS-DB試験対策】Silver 検索の基本を押さえる JOIN/別名表記/SQLの実行順序(処理の順番)
検索時に、テーブルの結合をする際に使うコマンド「JOIN」の
使い方を押さえながら、テーブル名に別名をつけるやり方、
コマンドの実行順序について学習。
結合する表一つ目
brand_id | farm_id | brand_name
----------+---------+-------------------
1 | 1 | おいしか牛乳
2 | 1 | モグミルク
3 | 2 | 濃い牛乳
4 | 3 | NEWジャージー牛乳
5 | 3 | 俺の牛乳
結合する表二つ目
farm_id | farm_name
---------+--------------
1 | 牛田牧場
2 | 乳牛ファーム
3 | とれたて農場
「FROM 表1 JOIN 表2 ON 表1.列 = 表2.列」
brand_name | farm_name
-------------------+--------------
おいしか牛乳 | 牛田牧場
モグミルク | 牛田牧場
濃い牛乳 | 乳牛ファーム
NEWジャージー牛乳 | とれたて農場
俺の牛乳 | とれたて農場
● 別名をつけることで短くできる。
別名を付けるときは、FROM,JOINで指定するテーブル名の次に指定する
brand_name | farm_name
-------------------+--------------
おいしか牛乳 | 牛田牧場
モグミルク | 牛田牧場
濃い牛乳 | 乳牛ファーム
NEWジャージー牛乳 | とれたて農場
俺の牛乳 | とれたて農場
● SQLの実行順序
最初は不思議に思ったものだが、DBは処理の順番が左から右ではない。
FROM→WHERE→GROUP BY→HAVING→SELECT→UNION→ORDER BY→DISTINCT
のように、FROMが一番最初に処理される。学習の初めの頃は気にならないが、
複雑な処理をするときには必要になる知識である。
使い方を押さえながら、テーブル名に別名をつけるやり方、
コマンドの実行順序について学習。
◆JOIN
結合する表一つ目
SELECT * FROM milkbrand;
brand_id | farm_id | brand_name
----------+---------+-------------------
1 | 1 | おいしか牛乳
2 | 1 | モグミルク
3 | 2 | 濃い牛乳
4 | 3 | NEWジャージー牛乳
5 | 3 | 俺の牛乳
結合する表二つ目
SELECT * FROM farm;
farm_id | farm_name
---------+--------------
1 | 牛田牧場
2 | 乳牛ファーム
3 | とれたて農場
「FROM 表1 JOIN 表2 ON 表1.列 = 表2.列」
SELECT milkbrand.brand_name,farm.farm_name FROM milkbrand JOIN farm ON
milkbrand.farm_id=farm.farm_id;
milkbrand.farm_id=farm.farm_id;
brand_name | farm_name
-------------------+--------------
おいしか牛乳 | 牛田牧場
モグミルク | 牛田牧場
濃い牛乳 | 乳牛ファーム
NEWジャージー牛乳 | とれたて農場
俺の牛乳 | とれたて農場
● 別名をつけることで短くできる。
別名を付けるときは、FROM,JOINで指定するテーブル名の次に指定する
SELECT m.brand_name,f.farm_name FROM milkbrand m JOIN farm f ON m.farm_id=f.farm_id;
brand_name | farm_name
-------------------+--------------
おいしか牛乳 | 牛田牧場
モグミルク | 牛田牧場
濃い牛乳 | 乳牛ファーム
NEWジャージー牛乳 | とれたて農場
俺の牛乳 | とれたて農場
● SQLの実行順序
最初は不思議に思ったものだが、DBは処理の順番が左から右ではない。
FROM→WHERE→GROUP BY→HAVING→SELECT→UNION→ORDER BY→DISTINCT
のように、FROMが一番最初に処理される。学習の初めの頃は気にならないが、
複雑な処理をするときには必要になる知識である。