はじめに
- 表自体を「テーブル」と言う
- 縦の列を「カラム」と言う
- 横の列を「レコード」と言う
- SELECTで全カラムから取得する場合は「*」を使う
- SQLは大文字小文字は区別されない
- 最後は必ずセミコロン(;)をつけてクエリの終わりをデータベースに教える
- データ指定時にテキスト型と日付は必ずダブルクォーテーション(")またはシングルクォーテーション(')で囲む、数値データはその必要はない
WHERE
特定のデータを取得する「どこの」を意味を持つ「WHERE」を使う。
どこのレコードを取得するかを指定できる。
SELECT 取得したいデータが入っているカラム名
FROM 上記で指定したカラム名が存在するテーブル名
WHERE 特定のカラム名と様々な条件;
以下の例はUserテーブルのnameカラムのデータが「森田」であるデータを取得している。
SELECT *
FROM user
WHERE name = "森田";
比較演算子
比較演算子の種類 | 意味 |
---|---|
a < b | a が b より小さいデータを検索 |
a > b | a が b より大きいデータを検索 |
a <= b | a が b 以下のデータを検索 |
a >= b | a が b 以上のデータを検索 |
以下の例はEventテーブルのpurchased_atカラムのデータが2019-11-01以降のデータを検索している。
SELECT *
FROM event
WHERE purchased_at >= "2019-11-01";
LIKE
ある特定の文字を含むデータを取得したい場合は「LIKE」を使う。
基本形は以下のようになる。
SELECT *
FROM user
WHERE name LIKE "文字列";
LIKEを使う際は**ワイルドカード(%)**を用いる。
ワイルドカードは必ずクォーテーション内につけること。
以下の例は「おでん」を含むデータを全て取得している。
SELECT *
FROM food
WHERE name LIKE "%おでん%";
「おでん」を例にワイルドカードを以下にまとめた。
検索結果 | 意味 | |
---|---|---|
%おでん% | 味噌おでん, おでんくん | 前後関係なく、「おでん」を含む全ての文字列を検索 |
%おでん | おでん, 関西風おでん | 最後の文字が「おでん」を含む文字列を検索(後方一致) |
おでん% | おでん, おでん定食 | 最初の文字が「おでん」を含む文字列を検索(前方一致) |
NOT
特定のものを含まない条件でデータを取得する際に使われる。
以下の例は価格が1000円以上を含まないフルーツを検索している。
SELECT *
FROM fruit
WHERE NOT price >= 1000;
ワイルドカードと併用可能。
SELECT *
FROM food
WHERE NOT name LIKE "%チョコ%";
IS NULL
なんのデータも保存されていない場合はNULLとなる。
NULLを含むデータを取得したい場合は「IS NULL」を使う。
以下の例はuserテーブルのageカラムのデータがNULLであるものを取得している。
SELECT *
FROM user
WHERE age IS NULL;
IS NOT NULL
IS NULLとは逆に、NULLを含まないデータを取得したい場合は「IS NOT NULL」を使う。
以下の例はuserテーブルのageカラムのデータがNULLでないものを取得している。
SELECT *
FROM user
WHERE age IS NOT NULL;
なお、NULLを含む/含まないデータを取得する際に以下(A,B)のようにイコール「=」を使うことはできない。
-- A
SELECT *
FROM user
WHERE age = NULL;
-- B
SELECT *
FROM user
WHERE NOT age = NULL;
AND
複数の条件を満たすデータを取得したい場合に使われる。
以下の例はuserテーブルの出身地カラム(北海道)と年齢カラム(20歳)の両方を満たすデータを検索している。
SELECT *
FROM user
WHERE local = "北海道"
AND age = 20;
OR
複数の条件のうち、どちらか片方を満たすデータを取得したい場合に使われる。
以下の例はuserテーブルの出身地カラム(北海道)と年齢カラム(20歳)のどちらか片方を満たすデータを検索している。
SELECT *
FROM user
WHERE local = "北海道"
OR age = 20;
ORDER BY
取得したデータを並び替える際は「ORDER BY」を使う。
クエリの末尾に記述する。 WHEREと併用可。
- ASC(昇順)は、小 → 大へ
- DESC(降順)は、大 → 小へ
以下の例は取得した結果を降順に並び替えている。
SELECT *
FROM fruit
WHERE price >= 300
ORDER BY price DESC;
LIMIT
取得したいデータ件数を制限できる。
ORDER BYと同様にWHEREと併用可。
クエリの末尾に記述する。
以下の例はWHEREで指定した条件で5件のデータを取得している。
SELECT *
FROM fruit
WHERE price >= 300
LIMIT 5;