はじめに
SELECTはテーブルからデータを取得するときに使います。
その基本的な使い方についてご説明します。
例として使用するテーブル
今回の例として以下のmembersテーブルをご用意しました。
membersテーブル
id | name | age | team_number |
---|---|---|---|
1 | hitomi | 39 | 2 |
2 | nibe | 25 | 1 |
3 | mikuni | 21 | 3 |
4 | yosoya | 31 | 2 |
5 | ikarugi | 42 | 1 |
6 | mutsuki | 29 | 3 |
SELECTの基本構文
最も基本となる構文は以下の通りです。
SELECT (カラム名) FROM (テーブル名);
今回の例では(カラム名) は「id」「name」「age」「team_number」、 (テーブル名)は「members」です。
試しにnameを抽出してみましょう。
SELECT name FROM members;
出力結果は以下のようになります。
name |
---|
hitomi |
nibe |
mikuni |
yosoya |
ikarugi |
mutsuki |
「,」で複数指定
カラム名の間に「,」を入れることで複数項目を指定できます。
SELECT name,age FROM members;
出力結果は以下のようになります。
name | age |
---|---|
hitomi | 39 |
nibe | 25 |
mikuni | 21 |
yosoya | 31 |
ikarugi | 42 |
mutsuki | 29 |
「*」で全指定
カラム名の代わりに「*」を入れることですべてのカラムを取得します。
SELECT * FROM members;
出力結果は以下のようになります。
id | name | age | team_number |
---|---|---|---|
1 | hitomi | 39 | 2 |
2 | nibe | 25 | 1 |
3 | mikuni | 21 | 3 |
4 | yosoya | 31 | 2 |
5 | ikarugi | 42 | 1 |
6 | mutsuki | 29 | 3 |
「WHERE」で条件を設定
先ほどの基本構文の後ろに「WHERE (条件文)」を挿入することで、条件に一致するデータのみを取得できます。
SELECT (カラム名) FROM (テーブル名) WHERE (条件文);
試しに30歳以上のメンバーを取得してみます。
SELECT * FROM members WHERE age >= 30;
出力結果は以下のようになります。
id | name | age | team_number |
---|---|---|---|
1 | hitomi | 39 | 2 |
4 | yosoya | 31 | 2 |
5 | ikarugi | 42 | 1 |
比較によく使う記号は以下の通りです。
記号 | 条件 |
---|---|
= | 等しい |
< | 小さい |
> | 大きい |
<= | 以下 |
>= | 以上 |
!= | 等しくない |
「ORDER BY」で並べ替え
基本構文の後ろに「ORDER BY (カラム名) [ASCまたはDESC]」を挿入することで、(カラム名)の値に基づき、昇順または降順でデータを並べ替えできます。
「ASC」で昇順(小さい方から)、「DESC」で降順(大きい方から)になります。「ASC」は省略できます。
SELECT (カラム名) FROM (テーブル名) ORDER BY (カラム名) ASCまたはDESC;
メンバーをチーム番号順で昇順に並べ替えてみます。(ASC省略)
SELECT * FROM members ORDER BY team_number;
出力結果は以下のようになります。
id | name | age | team_number |
---|---|---|---|
2 | nibe | 25 | 1 |
5 | ikarugi | 42 | 1 |
1 | hitomi | 39 | 2 |
4 | yosoya | 31 | 2 |
3 | mikuni | 21 | 3 |
6 | mutsuki | 29 | 3 |
チーム番号の小さい方から順になっているのがわかります。
「WHERE」と「ORDER_BY」の組み合わせ
「WHERE」と「ORDER BY」を組み合わる場合、以下のように書くことができます。
SQL文が長い場合、読みやすいように改行やインデントを入れるのが通例となっています。
SELECT (カラム名)
FROM (テーブル名)
WHERE (条件文)
ORDER BY (カラム名) ASCまたはDESC;
以下は「members」テーブルから「team_number」が2でないものすべて(*)を「age」で降順(DESC)で並べ替えて取り出すSQL文です。
SELECT *
FROM members
WHERE team_number != 2
ORDER BY age DESC;
出力結果は以下のようになります。
id | name | age | team_number |
---|---|---|---|
5 | ikarugi | 42 | 1 |
6 | mutsuki | 29 | 3 |
2 | nibe | 25 | 1 |
3 | mikuni | 21 | 3 |