はじめに
株式会社インプルの奈良です。
今回はSQL文を学習する機会があったため、備忘録として記事を残します。
SQLはデータベース管理のための強力な言語であり、その核となるのがSELECT文です。SELECT文を用いるとデータベースから必要な情報を照会し、その結果を利用することが可能です。今回の記事では、SELECT文の基本的な用途である選択、射影、結合、合併について解説します。
SQLについて0から学んでいくため、プログラミング初学者の方の参考になれば幸いです。
解説で使用するテーブル構成(Peopleテーブル・Ordersテーブル)
Peopleテーブル:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
5 | Dave | 18 |
Ordersテーブル:
id | customer_id | product |
---|---|---|
1 | 2 | Apples |
2 | 2 | Bananas |
3 | 3 | Grapes |
4 | 5 | Oranges |
5 | 1 | Apples |
選択(Selection)とは
選択(Selection)は特定の条件に合致する行をデータから取り出す操作です。この操作はSELECT文のWHERE節を用いて行います。
例えば、ageが20以上のすべての人を選択するには、以下のように書きます。
SELECT *
FROM People
WHERE age >= 20;
実行結果:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
射影(Projection)とは
射影(Projection)は特定の列をデータから取り出す操作です。この操作はSELECT文の列名指定部で行います。
例えば、nameとageの列だけを取り出すには、以下のように書きます。
SELECT name, age
FROM People;
実行結果:
name | age |
---|---|
John | 20 |
Alice | 25 |
Bob | 30 |
Carol | 22 |
Dave | 18 |
結合(Join)とは
結合(Join)は2つのテーブルを共通の属性(列)に基づいて連結する操作です。この操作はJOIN句を用いて行います。
例えば、PeopleテーブルとOrdersテーブルをcustomer_idで結合するには、以下のように書きます。
SELECT People.name, Orders.product
FROM People
JOIN Orders
ON People.id = Orders.customer_id;
実行結果:
name | product |
---|---|
John | Apples |
Alice | Apples |
Alice | Bananas |
Bob | Grapes |
Dave | Oranges |
合併(Union)とは
合併(Union)は2つ以上のSELECT文の結果セットを一つにまとめる操作です。この操作はUNIONまたはUNION ALLを用いて行います。
例えば、20歳以上の人と名前が”John”の人をまとめて選択するには、以下のように書きます。
SELECT *
FROM People
WHERE age >= 20
UNION
SELECT *
FROM People
WHERE name = 'John';
実行結果:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
さいごに
今回は、SQLの基本である、SELECT文の選択、射影、結合、合併について解説しました。
実際にSQL文を書く際は、可読性を考慮しインデントの調整を忘れずに行う必要があります。
次回は、さらに詳細な条件でデータをフィルタリングする方法についての記事をまとめたいと思います。