レコードの追加
INSERT INTO
INSERT INTOは、指定のテーブルにレコードを挿入します。
INSERT INTO テーブル名 (カラム名1, カラム名2, ...) VALUES('値1', '値2', ...);
「items」テーブルにレコードを追加します。
code | name | price | stock |
---|---|---|---|
D00001 | コーヒー | 300 | 100 |
SQL
INSERT INTO items (code, name, price, stock) VALUES('D00001', 'コーヒー', 300, 100);
- 「id」「created_at」「updated_at」は、DDLの設定により自動で入力されます。
レコードの確認
データを追加したら「items」テーブルのレコードを表示してみましょう。
SELECT * FROM items;

-「id」は連番
- 「created_at」「updated_at」は挿入した日時が自動入力
UNIQUE制約で重複データエラー
「code」カラムはテーブル定義でUNIQUE制約のため、データ重複できません。
重複データの追加
code = D00001でレコード追加すると、既に存在するのでエラーになります。
SQL
INSERT INTO items (code, name, price, stock) VALUES('D00001', '紅茶', 350, 100);
結果
'D00001' は索引 'items.items_code_unique' で重複しています。
他のデータ追加
「code」カラムが重複しないようにレコード追加できるか、確認してみましょう。
SQL
INSERT INTO items (code, name, price, stock) VALUES('D00002', '紅茶', 350, 100);
INSERT INTO items (code, name, price, stock) VALUES('D00003', 'ほうじ茶', 400, 100);
レコード更新
UPDATE
UPDATEでレコード更新します。
UPDATE テーブル名 SET カラム名1 = '値1', カラム名2 = '値2';
レコード更新の注意
「items」テーブルをそのまま「UPDATE」するとすべてのレコードが更新されるので注意が必要です。「UPDATE」は、WHERE句で条件指定してレコードを更新しましょう。
UPDATE テーブル名 SET カラム名1 = '値1', カラム名2 = '値2' WHERE 条件;
now()
now() は現在の日時を取得する、MySQL関数です。
SQL
SELECT now();
レコードを1件更新
「items」テーブルで、id = 1のレコードを更新します。
UPDATE items SET stock = 200, updated_at = now() WHERE id = 1;
- 「id」カラムはプライマリーキー
- stock = 200
- 「updated_at」は現在の時刻(DATETIME型)
レコード削除
DELETE
DELETEはテーブルからレコードを削除します。
DELETE FROM テーブル名;
レコード削除の注意点
DELETEは条件指定しないと、レコードがすべて削除されるので注意が必要です。WHERE句で条件を指定してレコード削除しましょう。
すべてのレコードを削除
DELETE FROM テーブル名;
条件を指定してレコード削除
DELETE FROM テーブル名 WHERE 条件;
レコードを1件削除
items.id = 1 のレコードを削除します。
SQL
DELETE FROM items WHERE id = 1;
テーブル初期化
TRUNCATE
TRUNCATEはテーブルのデータを初期化します。DELETEよりも高速にレコードを削除し、同時にIndexやシーケンスなどのテーブル情報もリセットされます。
TRUNCATE TABLE テーブル名;
- TRUNCATEはテーブルを初期化するため、初回データリセット以外で利用しないようにしましょう。
items テーブルの初期化
「items」テーブルを初期化します。
TRUNCATE TABLE items;
演習
問題1
レコード挿入のSQLで、【1】【2】にあてはまるのはどれですか?
【1】 items (code, name, price, stock) 【2】 ('D00001', 'コーヒー', 120, 100);
- 【1】UPDATE 【2】VALUES
- 【1】UPDATE 【2】SET
- 【1】INSERT INTO 【2】VALUES
- 【1】INSERT 【2】VALUES
問題2
レコード更新のSQLで、【1】【2】【3】にあてはまるのはどれですか?
【1】 items 【2】 name = "アイスコーヒー" 【3】 id = 1;
- 【1】UPDATE 【2】WHERE【3】SET
- 【1】UPDATE 【2】SET【3】WHERE
- 【1】INSERT INTO 【2】WHERE【3】SET
- 【1】INSERT INTO 【2】SET【3】WHERE
問題3
レコード削除のSQLで、【1】【2】にあてはまるのはどれですか?
【1】 items 【2】 id = 1;
- 【1】DELETE 【2】WHERE
- 【1】DELETE FROM 【2】WHERE
- 【1】DELETE 【2】FROM
- 【1】TRUNCATE【2】FROM