現場ででデータベースの中身を確認する作業を行なっていて初めて使用する句・関数・演算子が多くあったので、忘備録として残しておく。
自分はまだ経験も浅く、ググっても求めている内容になかなかたどり着けなかったので、自分なりに残しておくことですぐに見返せるようにしておきたいという考えから本記事を残す。
索引的な感じで残すので詳細の部分までは記載しない。
IS NULL
主にWHERE句の条件の中で使用する。
関数名の通り、値がNULLのものをチェックして抽出してくれる。
・使用例
テーブルサンプル(usersテーブル)
id | name | age |
---|---|---|
1 | katou | |
2 | saitou | 34 |
3 | tanaka | 22 |
SELECT * FROM users WHERE age IS NULL;
出力結果
id | name | age |
---|---|---|
1 | katou |
IS NOT NULL
IS NULLと逆で値がNULLではないものを抽出してくれる演算子。
id | name | age |
---|---|---|
1 | katou | |
2 | saitou | 34 |
3 | tanaka | 22 |
SELECT * FROM users WHERE age IS NOT NULL;
出力結果
id | name | age |
---|---|---|
2 | saitou | 34 |
3 | tanaka | 22 |
UNION
2つのSELECTの抽出結果を統合することができる。
users1
id | name | age |
---|---|---|
1 | katou | 33 |
2 | saitou | 34 |
3 | tanaka | 22 |
users2
id | name | age |
---|---|---|
4 | miyauchi | 25 |
5 | miyasako | 18 |
SELECT * FROM users1
UNION
SELECT * FROM users2;
出力結果
id | name | age |
---|---|---|
1 | katou | 33 |
2 | saitou | 34 |
3 | tanaka | 22 |
4 | miyauchi | 25 |
5 | miyasako | 18 |
これと同じような句でUNION ALLというものがある。
違いは重複を含めるか含めないかである。
UNION:重複を含まない
UNION ALL:重複を含む
IN
IN句で指定した値に一致するデータを抽出することができる。
id | name | age |
---|---|---|
1 | katou | 33 |
2 | saitou | 34 |
3 | tanaka | 22 |
SELECT * FROM users WHERE name IN('katou', 'tanaka');
出力結果
id | name | age |
---|---|---|
1 | katou | 33 |
3 | tanaka | 22 |
NOT IN
IN句の逆で指定した値に一致しないデータを抽出することができる。
MAX
指定した列名の中で最大値が含まれるレコードを取得する関数。
id | name | age |
---|---|---|
1 | katou | 33 |
2 | saitou | 34 |
3 | tanaka | 22 |
SELECT MAX(age) AS maxAge FROM users;
出力結果
id | name | age |
---|---|---|
2 | saitou | 34 |
MAX関数とは逆で最小値を抽出するMIN関数がある。
GROUP BY
指定したカラムの値をキーにしてグループに分けることができる。
id | name | age |
---|---|---|
1 | katou | 33 |
2 | saitou | 34 |
3 | tanaka | 22 |
4 | oono | 34 |
5 | saitou | 53 |
6 | saitou | 31 |
7 | tanaka | 27 |
SELECT name FROM users GROUP BY name;
出力結果
name |
---|
katou |
saitou |
tanaka |
oono |
GROUP BYと集約関数を合わせて使用することができる。
現場ではCOUNT関数を使用することでPK重複が発生しているレコードの調査を行ったりした。
SELECT name, COUNT(name) AS 重複数 FROM users GROUP BY name;
name | 重複数 |
---|---|
katou | 1 |
saitou | 3 |
tanaka | 2 |
oono | 1 |
今後も新しいものを使用したら更新していく予定。