Dondariadmin (トーク | 投稿記録) (ページの作成: *SELECTに欠かせないJOINですが、私の場合、普段よく使うのは、INNER JOINとLEFT JOINぐらいです。が、他にもあるので、勉強してみました...) |
Dondariadmin (トーク | 投稿記録) |
||
1行目: | 1行目: | ||
+ | ==JOIN句== | ||
*SELECTに欠かせないJOINですが、私の場合、普段よく使うのは、INNER JOINとLEFT JOINぐらいです。が、他にもあるので、勉強してみました。 | *SELECTに欠かせないJOINですが、私の場合、普段よく使うのは、INNER JOINとLEFT JOINぐらいです。が、他にもあるので、勉強してみました。 | ||
*DBMSは手元にあったOracle 10g expressです。 | *DBMSは手元にあったOracle 10g expressです。 | ||
6行目: | 7行目: | ||
##table_aとtable_bの同名列を結合条件としたINNER JOINと等価。 | ##table_aとtable_bの同名列を結合条件としたINNER JOINと等価。 | ||
##table_a INNER JOIN table_b USING (列名) | ##table_a INNER JOIN table_b USING (列名) | ||
− | |||
− | |||
#table_a CROSS JOIN table_b | #table_a CROSS JOIN table_b | ||
##FROM table_a, table_b と記述した場合と等価。いわゆる直積、デカルト積。得られる結果レコード数は2テーブルのレコード数の積。 | ##FROM table_a, table_b と記述した場合と等価。いわゆる直積、デカルト積。得られる結果レコード数は2テーブルのレコード数の積。 | ||
− | |||
− | |||
#table_a FULL JOIN table_b < ON 結合条件式 | USING (列名) > | #table_a FULL JOIN table_b < ON 結合条件式 | USING (列名) > | ||
##table_aとtable_bの両テーブルのレコードすべてが含まれる。一致する場合は結合され、一致しない部分はNULLとなる。 | ##table_aとtable_bの両テーブルのレコードすべてが含まれる。一致する場合は結合され、一致しない部分はNULLとなる。 | ||
32行目: | 29行目: | ||
INSERT INTO shouhin_bunrui VALUES (30,'用紙'); | INSERT INTO shouhin_bunrui VALUES (30,'用紙'); | ||
==== 確認 ==== | ==== 確認 ==== | ||
− | + | [[ファイル:iroirojoin1.png]] | |
=== NATURAL JOIN === | === NATURAL JOIN === | ||
63行目: | 60行目: | ||
UNION | UNION | ||
SELECT * FROM shouhin RIGHT JOIN shouhin_bunrui USING (shouhin_bunrui_code) | SELECT * FROM shouhin RIGHT JOIN shouhin_bunrui USING (shouhin_bunrui_code) | ||
− |
CREATE TABLE shouhin ( shouhin_code INT , shouhin_name VARCHAR(100) , shouhin_bunrui_code INT ); CREATE TABLE shouhin_bunrui ( shouhin_bunrui_code INT , shouhin_bunrui_name VARCHAR(100) ); INSERT INTO shouhin VALUES (1,'ボールペン黒',10); INSERT INTO shouhin VALUES (2,'ボールペン赤',10); INSERT INTO shouhin VALUES (3,'ノート無地',20); INSERT INTO shouhin_bunrui VALUES (10,'ペン'); INSERT INTO shouhin_bunrui VALUES (30,'用紙');
SELECT * FROM shouhin INNER JOIN shouhin_bunrui USING (shouhin_bunrui_code);
SELECT * FROM shouhin, shouhin_bunrui;
SELECT * FROM shouhin LEFT JOIN shouhin_bunrui USING (shouhin_bunrui_code) UNION SELECT * FROM shouhin RIGHT JOIN shouhin_bunrui USING (shouhin_bunrui_code)Tweet