SQLにおけるSELECT文
目次
わかりみSQLで勉強したSELECT文についてまとめました!
SELECT文
使用するテーブル
1 2 3 4 5 6 7 8 9 10 |
id | name | height | gender -----+----------+--------+-------- 101 | エレン | 170 | M 102 | ミカサ | 170 | F 103 | アルミン | 163 | M 104 | ジャン | 175 | M 105 | サシャ | 168 | F 106 | コニー | 158 | M |
select句 : 値の出力
何らかの値を出力するには、select句を使う。
1 2 3 |
select 'Hello'; |
1 2 3 4 5 6 |
?column? ---------- Hello (1 row) |
計算式の指定もできる。
1 2 3 |
select 1 + 2 + 3 + 4; |
1 2 3 4 5 6 |
?column? ---------- 10 (1 row) |
from句 : テーブルを指定する
テーブルを指定してその中身(つまりテーブルに含まれている行)を出力するには、from句を使う。
・全ての行を検索する
1 2 3 4 |
select * from members; |
1 2 3 4 5 6 7 8 9 10 |
id | name | height | gender -----+----------+--------+-------- 101 | エレン | 170 | M 102 | ミカサ | 170 | F 103 | アルミン | 163 | M 104 | ジャン | 175 | M 105 | サシャ | 168 | F 106 | コニー | 158 | M |
・select句に列名を指定する
1 2 3 4 |
select gender, name from members; |
1 2 3 4 5 6 7 8 9 10 11 |
gender | name --------+---------- M | エレン F | ミカサ M | アルミン M | ジャン F | サシャ M | コニー (6 rows) |
where句 : 行を選択する
ある特定の行だけを選ぶ(あるいは除外する)には、where句で条件を指定する
1 2 3 4 5 |
select * from members where name = 'ミカサ'; |
1 2 3 4 5 6 |
id | name | height | gender -----+----------+--------+-------- 102 | ミカサ | 170 | F (1 rows) |
andやorで条件をつなげることもできる。
1 2 3 4 5 |
select * from members where gender = 'M' or height >= 170; |
1 2 3 4 5 6 7 8 9 10 |
id | name | height | gender -----+----------+--------+-------- 101 | エレン | 170 | M 102 | ミカサ | 170 | F 103 | アルミン | 163 | M 104 | ジャン | 175 | M 106 | コニー | 158 | M (5 rows) |
andでつなげた条件をさらにorでつなぐこともできる
1 2 3 4 5 |
select * from members where (gender = 'M' and height >= 170) or (gender = 'F' and height < 170); |
1 2 3 4 5 6 7 8 |
id | name | height | gender -----+----------+--------+-------- 101 | エレン | 170 | M 104 | ジャン | 175 | M 105 | サシャ | 168 | F (3 rows) |
order by句 : 整列する
小さい順や大きい順に並び替えることを整列(Sort)という。
select文では、order by句を使って整列する。
1 2 3 4 5 |
select * from members order by name; |
1 2 3 4 5 6 7 8 9 10 11 |
id | name | height | gender -----+----------+--------+-------- 103 | アルミン | 163 | M 101 | エレン | 170 | M 106 | コニー | 158 | M 105 | サシャ | 168 | F 104 | ジャン | 175 | M 102 | ミカサ | 170 | F (6 rows) |
順番を逆にしたい場合はdescをつける
1 2 3 4 5 |
select * from members order by height desc; |
1 2 3 4 5 6 7 8 9 10 11 |
id | name | height | gender -----+----------+--------+-------- 104 | ジャン | 175 | M 101 | エレン | 170 | M 102 | ミカサ | 170 | F 105 | サシャ | 168 | F 103 | アルミン | 163 | M 106 | コニー | 158 | M (6 rows) |
order by句をつけないと順番は不定になる。
なるべくorder by句をつけるようにする。
同じ値のときは順番が定まらないので、ID順にするとよい。
limit句とoffset句 : 範囲を指定
先頭のn行だけ出力するにはlimit句を使う。
逆に、先頭からのn行は出力しない(スキップする)にはoffset句を使う。
先頭の 3 行をスキップしてから、続く 1 行だけを出力する。
1 2 3 4 |
select * from members order by id limit 1 offset 3; |
1 2 3 4 5 6 |
id | name | height | gender -----+----------+--------+-------- 104 | ジャン | 175 | M (1 rows) |
DBエンジン内部の実行順序
- select句はいちばん最後に実行
- それ以外は上から順に実行
※厳密には、select句はいちばん最後ではなく、order by句の前に実行される。
基本は上記のように覚えておけば問題ない。
最後に
offset句は普段使わなかったので、これを機に知ることができて良かったです!また続編書きます!