この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
更新日時:2026-05-18 01:50:53
タイトル: 基本構文
本稿は MariaDB (および MySQL) で使用する SQL の基本構文について説明する記事です。データの取得・登録・更新・削除といった日常的な操作の入口になります。
子ページから項目を選択してください。
本ページの子ページ
基本的な SQL の4種
| 命令 | 用途 | 例 |
| SELECT | 取得 | SELECT id, name FROM users; |
| INSERT | 登録 | INSERT INTO users (name) VALUES ('Taro'); |
| UPDATE | 更新 | UPDATE users SET name = 'Jiro' WHERE id = 1; |
| DELETE | 削除 | DELETE FROM users WHERE id = 1; |
SELECT の構成要素
| 句 | 役割 |
SELECT | 取得列 |
FROM | 取得元テーブル |
JOIN ... ON | テーブル結合 |
WHERE | 抽出条件 |
GROUP BY | 集約キー |
HAVING | 集約後フィルタ |
ORDER BY | 並び替え |
LIMIT / OFFSET | 件数制限・ページング |
代表的なクエリ例
|
-- 1. 単純な取得
SELECT id, name FROM users WHERE deleted_at IS NULL ORDER BY id DESC LIMIT 10;
-- 2. 結合
SELECT u.id, u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.total > 1000;
-- 3. 集計
SELECT user_id, COUNT(*) AS cnt, SUM(total) AS sum_total
FROM orders
GROUP BY user_id
HAVING cnt >= 3;
-- 4. 部分一致
SELECT * FROM users WHERE name LIKE '田%';
|
INSERT / UPDATE / DELETE の基本
|
INSERT INTO users (name, email) VALUES ('Taro', 't@example.com');
INSERT INTO users (name) VALUES ('A'), ('B'), ('C'); -- 複数行
UPDATE users SET name = 'Jiro' WHERE id = 1;
DELETE FROM users WHERE id = 1;
|
よく使う MariaDB / MySQL 特有の機能
- AUTO_INCREMENT — 主キーの自動採番
- LIMIT N OFFSET M — ページング
- INSERT ... ON DUPLICATE KEY UPDATE — UPSERT
- REPLACE INTO — 重複時の置換 (内部は DELETE + INSERT)
- SHOW —
SHOW DATABASES; SHOW TABLES; SHOW CREATE TABLE t;
- EXPLAIN — 実行計画の確認
- バックティック — 予約語と被るカラム名は
`order` のようにバックティックで囲む
WHERE で使う主な演算子
| 演算子 | 用途 |
=、<>、<、>、<=、>= | 比較 |
IS NULL / IS NOT NULL | NULL 判定 |
IN (...) | 複数値一致 |
BETWEEN a AND b | 範囲 |
LIKE | パターン一致 (% 任意文字列、_ 任意1文字) |
AND / OR / NOT | 論理結合 |
注意点
- UPDATE / DELETE は必ず WHERE 付きで。本番では
SELECT で件数確認してから差し替えるのが安全
- SQLインジェクション対策: 文字列連結ではなくプレースホルダを使う
- COUNT(*) や LIMIT OFFSET 大量は重い。キーセットページング (
WHERE id > ?) を検討
- 暗黙の型変換に注意。文字列
'001' と数値 1 が一致してしまうケースがある
関連