SQL 基礎文法
- データベースの列:カラム
- データベースの行:レコード
- データベースに送る命令:クエリ
データの取得
-
SELECT
- どのカラムのデータを取得するかを選ぶ
SELECT カラム名
-
FROM
- データベースにはテーブルが複数存在する場合があるので、FROMを用いて、SELECTで選んだカラムがどのテーブルのカラムかを指定する
SELECT name
FROM purchases;
最後に、クエリの終わりをデータベースに伝えるために;セミコロンを加える。
また、SQLは大文字と小文字とを区別しないので、小文字で記述しても問題ない
複数のカラムからデータを取得する場合は、カラム名をカンマで区切る
SELECT name, price
全カラムのデータを取得する場合は、*の記号を用いる
SELECT *
WHERE
特定のデータを取得する場合は、WHEREを使用する
-
WHERE
- どこのレコードを取得するかを選ぶ
- 「=」を用いて「〇〇カラムが〇〇であるレコード」といった意味になるように条件を指定する
SELECT *
FROM purchases
WHERE category = '食費'
「=」のほかにも比較演算子を用いて条件を指定することもできる
WHERE price >= 1000;
日付データも使える
例:2026-04-22以前のデータを指定
WHERE purchased_at <= "2026-04-22";
データベースではカラムごとにデータ型を指定する
とりあえず覚えておくべきデータ型
| データ型 | 例 | 特徴 |
|---|---|---|
| テキスト | ”こんにちは” | ダブルコーテーションまたはシングルコーテーションで囲まれた文字 |
| 数値 | 10 | 整数値 |
| 日付 | "2026-04-22" | コーテーションで囲まれた日付(yyyy-mm-dd) |
LIKE
WHERE name LIKE "%プリン%"
- LIKE演算子では「%」をワイルドカードとして扱う
- ワイルドカードとは
- どんな文字列にも一致することを指す記号
- 前方一致
- `WHERE name LIKE "プリン%"`
- プリンで始まる文字列を検索する
- 後方一致
- `WHERE name LIKE "%プリン"`
- プリンで終わる文字列を検索
- どんな文字列にも一致することを指す記号
### NOT
- 「〇〇を含まないデータ」や「〇〇に一致しないデータ」のような条件でデータを取得したい場合は「否定」を意味する「**NOT演算子**」を使用する
```SQL
WHERE NOT price > 1000;
WHERE NOT name LIKE "プリン%";
- 「NULLではないデータ」を取得する場合は「〜がNULLでない」という意味になる「IS NOT NULL」を使用する
WHERE price IS NOT NULL;
- 「NULLのデータ」や「NULLでないデータ」を取得したい場合、「=」は使うことができない
- 以下はNG
WHERE price = NULL; NG
AND
- AND演算子を使うと、WHEREに複数の条件を指定することができる
- 「WHERE 条件1 AND 条件2」のようにすることで、条件1と条件2を共に満たすデータを検索することができる
SELECT * FROM purchases
WHERE character_name = 'ひつじ'
AND category = '食費';
OR
- OR演算子は、AND演算子と同様に、複数の条件を扱う
- 「WHERE 条件1 OR 条件2」のようにすることで、条件1または条件2のどちらかを満たすデータを検索することができる
SELECT * FROM purchases
WHERE character_name = 'ひつじ'
OR character_name = 'にんじゃわんこ'
ORDER BY
- データを並び替えるためには、「〜順に並べる」という意味の「ORDER BY」を使用する
- またデータを並び替えるためには、「(基準となる)並べ替えたいカラム名」と「並べ方」を指定
- 並べ方は、「昇順」か「降順」を指定
- SQLでは「昇順」は「ASC」、「降順」は「DESC」と指定
- 「ORDER BY」はクエリの末尾に記述することで、取得結果を並び替える
- 「ORDER BY」は「WHERE」と併用することが可能
SELECT *
FROM purchase
WHERE price IS NOT NULL
ORDER BY price DESC;
LIMIT
- 「最大で何件取得するか」を指定するためには、「制限する」という意味の「LIMIT」を使用する
- 「LIMIT」は左の図のように「データの件数」を指定
- クエリの末尾に記述することで、取得するデータの数を制限
- 「WHERE」と併用することが可能
SELECT *
FROM purchases
WHERE name = 'hoge'
LIMIT 5;
- 「ORDER BY」と「LIMIT」を併用することも可能
- その場合、「LIMIT」を末尾にする必要がある
SELECT *
FROM purchase
WHERE price IS NOT NULL
ORDER BY price DESC
LIMIT 5;
- 「ある文字を含むデータ」を取得したい場合は、「〜のような」という意味を持つ、「LIKE演算子」を使用する
- 「指定したカラムが〇〇を含む(〇〇のような)レコード」という条件になる
SELECT *
FROM purchases