感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

内部結合(INNER JOIN)のサンプルとUNIONのサンプル

スポンサーリンク

列の別名の指定

SELECT句で指定できるのが「列別名」、FROM句では「表別名」を指定できる。
表別名はFROM句に指定した表名の後ろに1つ以上のスペースを入れるか、ASで指定する。
列の別名のASを使うかスペース明けで指定できる。

表別名はテンポラリ的なもので、表別名は表別名を指定したSQL文内でのみ有効である。
表別名を指定すると、少なくともOracleでは、SQL文全体での元の表名は無効になる。

SELECT profession AS mc_prof
FROM my_contacts AS mc
GROUP BY mc_prof
ORDER BY mc_prof

ASを外しても、列名の直後に別名が配置されていたら動作する。

SELECT profession mc_prof
FROM my_contacts mc
GROUP BY mc_prof
ORDER BY mc_prof

2つの抽出結果を合わせて表示

以下の2つのテーブルのレコードを集めて表示してみる。
tb1

num name age
1 吉田勝利 30
2 山田裕仁 29

tb2

num name age
3 桑野哲司 28
4 佐立義和 29

単純に複数のテーブルからデータを取り出して寄せ集めて表示するには「UNION」を使う。

SELECT *
FROM tb1
UNION
SELECT *
FROM tb2;

構文はこんな感じ。

SELECT カラム名1
FROM
テーブル名1

UNION

SELECT カラム名2
FROM
テーブル名2;

このSELECT分にはWHEREで条件を指定することもできる。

「重複を省く」という処理を省く場合は「UNION ALL」とすればよい。

内部結合

結合とは、複数の票を関連付けてデータを取り出す機能のこと。
そのうち、内部結合とは、INNER JOINのキーワードを使って、条件の中の比較演算子を用いて、2つのテーブルからのレコードを結合する。
結合される行がその条件に合致する場合にのみ、列が返される。
構文は以下のとおり。

SELECT column_hoge
FROM table_hoge
INNER JOIN
table2
ON somecondition;

INNER JOINは条件の中の比較演算子を用いて、2つのテーブルのレコードを結合する。
例えば、以下の2つのテーブルを内部結合してみると・・・
membersテーブル

num name hobby_id
1 高橋和也 1
2 佐立義和 2
3 安達義和 3
4 井伊健介 3

hobbysテーブル

hobby_id hobby_name
1 soccer
2 eating
3 basket ball

上の2つのテーブルを結合してみる。
サンプルSQLは以下の通り。

SELECt members.name, hobbys.hobby_name
FROM members
INNER JOIN
hobbys
ON members.hobby_id = hobbys.hobby_id

SQLを実行すると、以下のような表が返される。

name hobby_name
高橋和也 soccer
佐立義和 eating
安達義和 basket ball
井伊健介 basket ball

勉強した本

Head First SQL ―頭とからだで覚えるSQLの基本

Head First SQL ―頭とからだで覚えるSQLの基本


例が豊富でとってもわかりやすい。

感謝のプログラミング

今回で感謝のプログラミングは【552時間目】
10000時間まで、あと【9448時間】