DMLの基本
DML(データ操作言語) でよく利用される SQLを操作してみましょう。SQL では以下のような予約語を組み合わせて記述します。
基本機能
SQLで最も重要な4つの基本機能があります。 Create(作成)、Read(読み込み)、Update(更新)、Delete(削除)で、これを CRUDといいます。
- SELECT
- INSERT
- UPDATE
- DELETE
条件
データを検索するときに条件を指定しますが、以下のような構文があります。
- WHERE
- AND, OR, IN
- LIKE
その他
その他、並び替えや件数制限、グループ化などの構文があります。
- ORDER BY
- LIMIT, OFFSET
- GROUP BY
まずは SELECT や WHERE などを使ってみましょう。
SELECT
SELECTはテーブルのレコードを選択します。
SELECT カラム名 FROM テーブル名;
すべてのカラム選択
すべてのカラムを選択するときは、*(アスタリスク) を指定します。ただ、テーブルのレコードが膨大になりメモリを大量に消費するときは利用を控えましょう。
SELECT * FROM テーブル名;
users のレコードをすべて選択
SELECT文で「users」テーブルのすべてのレコードを取得します。MySQLWorkbench や phpMyAdmin などのクライアントツールで確認してみましょう。
SQL
SELECT * FROM users;

カラムの指定
カラム名を個別指定するには、カラム名を , で区切ります。
SQL
SELECT カラム1, カラム2 FROM テーブル名;
氏名とEmailを選択
「users」から氏名とEmailを選択する例です。
SQL
SELECT name, email FROM users;

WHERE
WHERE でカラムの条件を指定します。
SELECT * FROM テーブル名 WHERE 条件;
比較演算子
条件でデータを比較するときに比較演算子を使います。
比較演算子 | 比較 | 意味 |
---|---|---|
= | A = B | A と B が等しい |
!= | A != B | A と B が等しくない |
> | A > B | A が B より大きい |
< | A < B | A が B より小さい |
>= | A >= B | A が B より大きいか等しい(以上) |
<= | A <= B | A が B より小さいか等しい(以下) |
id カラムを指定
users.id = 1
SQL
users.id = 1のレコードを選択します。
SELECT * FROM users WHERE id = 1;

users.id >= 5
SQL
users.id >= 5がのレコードを選択します。
SELECT * FROM users WHERE id >= 5;
AND, OR, NOT, IN
WHERE の条件を AND、OR、IN で複数指定したり、NOT で全体を否定できます。
演算子 | 比較 | 意味 |
---|---|---|
AND | A AND B | A と B 両方 true |
OR | A OR B | A と B どちらかが true |
IN | IN(a, b, ...) | a, b, ... のいずれかの値を含む |
NOT | NOT(A) | A でない |
AND検索
ANDはWHEREの条件をすべて一致したときに選択されます。
SQL
WHERE 条件1 AND 条件2 ...
users.id >= 5かつusers.id < 10の条件でレコード検索します。
SQL
SELECT * FROM users WHERE id >= 5 AND id < 10;
OR検索
ORはWHEREの条件をいずれか一致したときに選択されます。
SQL
WHERE 条件1 OR 条件2 ...
users.id = 5 または users.id = 10でレコード検索します。
SELECT * FROM users WHERE id = 5 OR id = 10;
IN検索
IN は OR を簡略して記述できます。
SQL
SELECT * FROM users WHERE id IN (5, 10);
LIKE
LIKEは、文字列のあいまいな検索をするときに利用します。あいまい検索では「前方一致」「後方一致」「部分一致」があり、% や _ で文字列を検索します。
%
% は 0文字以上の文字列を検索します。
前方一致
SELECT * FROM テーブル名 WHERE カラム名 LIKE '文字%';
後方一致
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%文字';
部分一致
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%文字%';
users.email が「gmail.com」を含むデータを検索してみます。
SQL
SELECT * FROM users WHERE email LIKE '%gmail.com%';
_(アンダースコア)
_ は、1文字を部分検索します。氏名の2文字目が「田」のユーザを検索してみます。
SELECT * FROM users WHERE name LIKE '_田%';
ORDER BY
ORDER BY はレコードの並び順を指定します。昇順はASC、降順は DESCです。
昇順
SELECT * FROM テーブル名 ORDER BY カラム名 ASC;
# または省略
SELECT * FROM テーブル名 ORDER BY カラム名;
降順
SELECT * FROM テーブル名 ORDER BY カラム名 DESC;
降順(大きい順)に並び替え
users.id を降順(大きい順)の DESC で並び替えます。
SELECT * FROM users ORDER BY id DESC;

LIMIT, OFFSET 句
LIMIT はレコードの件数、OFFSET はレコードの開始位置を指定します。
SELECT * FROM テーブル名 LIMIT 件数 OFFSET 開始位置;
LIMIT
LIMIT で選択するレコード件数を指定します。
LIMIT レコード数
最初の10件取得
最初の10件のレコードを取得するには、LIMIT を「10」とします。
SELECT * FROM users LIMIT 10;
OFFSET
OFFSET は指定したレコード件数をスキップします。
OFFSET レコード数
10件目から20件目選択
10件目から20件目まで選択するには、LIMIT を「10」OFFSET を「10」とします。
SQL
SELECT * FROM users LIMIT 10 OFFSET 10;
