SQLの基本文法のおさらいをしたのでまとめました。
データの検索
テーブルの指定
FROM テーブル名
カラムの指定
SELECT カラム名
使い方
ex)
SELECT * FROM users;
ワイルドカード
* のこと
上記では「すべてのカラム」を取得している
取得するレコードの制限
WHERE 条件
ex)
SELECT * FROM users WHERE name = "白石";
条件に使用できる論理演算子
- AND
- OR
- NOT
1つのカラム内での範囲検索
WHERE カラム名 BETWEEN 下限 AND 上限
ex)
SELECT * FROM users WHERE age BETWEEN 21 AND 24;
-- ageが20以上かつ25以下
1つのカラム内でのリスト検索
WHERE カラム名 IN (値1, 値2, ……)
ex)
SELECT * FROM users WHERE prefecture IN ("岐阜", "愛知");
データの検索と形成
データの結合
# CONCAT関数
CONCAT(文字列1, 文字列2, ……)
ex)
SELECT CONCAT(family_name, first_name) FROM users;
検索結果のカラム名の変更
# AS
SELECT 取得するデータ AS 別名
ex)
SELECT CONCAT(family_name, first_name) AS "名前" FROM users;
AS
は省略ができる。
重複するデータを除外
SELECT DISTINCT カラム名
ex)
SELECT DISTINCT user_id FROM units WHERE date = "2020-07-06";
レコードのグループ化
GROUP BY カラム名
ex)
SELECT user_id FROM units WHERE date = "2020-07-06" GROUP BY user_id;
DISTINCT と GROUP BYの例文の取得データは同じ(見た結果)
GROUP BYは集計した結果を取得する
ことができる。
レコードの数を取得
SELECT COUNT(カラム名)
ex)
SELECT user_id, COUNT(*) "コマ数" FROM units WHERE date = "2015-07-01" GROUP BY user_id;
集計関数
- AVG 平均
- MAX 最大値
- MIN 最小値
データの結合
FROM テーブル名1 JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2
ex)
SELECT user_id, COUNT(*) "コマ数", FROM units s JOIN users u ON s.user_id = u.id WHERE date = "2020-07-06" GROUP BY user_id;
サブクエリ
SQLの中に入れ子になってSQLがはいっていること。
ex)
SELECT *
FROM users WHERE id NOT IN ( SELECT DISTINCT user_id FROM shifts WHERE date = "2015-07-01");
どんどん文が複雑になっていきますね。。 でも読み解くことはできるので慣れかな〜と思っています♫
お読みいただき、ありがとうございました🌸