データテーブルに対するDML操作
INSERT文によるデータ追加
INSERT文はテーブルに新しいレコードを追加します。基本的な構文は以下の通りです:
INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES (値1, 値2, ...);
複数行を一度に挿入する場合:
INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES
(値1, 値2, ...),
(値3, 値4, ...),
(値5, 値6, ...);
REPLACE文によるデータ置換
REPLACE文は主キーまたは一意制約が重複する場合、既存レコードを削除して新規レコードを挿入します:
REPLACE INTO テーブル名 (カラムリスト) VALUES (値リスト);
DELETEとTRUNCATEによるデータ削除
DELETE文は条件に基づいてレコードを削除します:
DELETE FROM テーブル名 WHERE 条件;
TRUNCATEはテーブル内の全データを高速に削除します:
TRUNCATE TABLE テーブル名;
UPDATE文によるデータ更新
既存のレコードを変更します:
UPDATE テーブル名 SET カラム1 = 値1, カラム2 = 値2 WHERE 条件;
SELECT文(DQL)によるデータ検索
基本構文
SELECT カラムリスト FROM テーブル名 WHERE 条件;
算術式と演算子
SELECT文内で算術演算が可能です:
SELECT 価格 * 数量 AS 合計金額 FROM 注文明細;
NULL値の扱い
NULL値は未定義を表し、算術演算では注意が必要です:
SELECT カラム名 FROM テーブル名 WHERE カラム名 IS NULL;
重複除去(DISTINCT)
SELECT DISTINCT カラム名 FROM テーブル名;
条件指定(WHERE)
文字列と日付はシングルクォートで囲みます:
SELECT * FROM ユーザー WHERE 名前 = '山田太郎';
比較演算子と論理演算子
SELECT * FROM 商品 WHERE 単価 BETWEEN 1000 AND 5000;
LIKEによる部分一致検索
SELECT * FROM 顧客 WHERE 会社名 LIKE '%株式会社%';
GROUP BYによるグループ化
SELECT 部門コード, AVG(給与) AS 平均給与
FROM 社員
GROUP BY 部門コード
HAVING AVG(給与) > 300000;
ORDER BYによる並び替え
SELECT * FROM 商品 ORDER BY 単価 DESC;
LIMITによる件数制限
SELECT * FROM 注文 ORDER BY 注文日時 DESC LIMIT 10;
GROUP_CONCATによるグループデータ結合
SELECT 部門名, GROUP_CONCAT(社員名) AS 社員一覧
FROM 社員
GROUP BY 部門名;
テーブル結合クエリ
内部結合(INNER JOIN)
SELECT 社員.氏名, 部門.部門名
FROM 社員
INNER JOIN 部門 ON 社員.部門コード = 部門.部門コード;
等価結合
SELECT 社員.氏名, 部門.部門名
FROM 社員, 部門
WHERE 社員.部門コード = 部門.部門コード;
クロス結合
SELECT * FROM テーブル1, テーブル2;