レコードの追加

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. 【1】UPDATE 【2】VALUES
  2. 【1】UPDATE 【2】SET
  3. 【1】INSERT INTO 【2】VALUES
  4. 【1】INSERT 【2】VALUES

問題2

レコード更新のSQLで、【1】【2】【3】にあてはまるのはどれですか?

1】 items 【2】 name = "アイスコーヒー"3】 id = 1;
  1. 【1】UPDATE 【2】WHERE【3】SET
  2. 【1】UPDATE 【2】SET【3】WHERE
  3. 【1】INSERT INTO 【2】WHERE【3】SET
  4. 【1】INSERT INTO 【2】SET【3】WHERE

問題3

レコード削除のSQLで、【1】【2】にあてはまるのはどれですか?

1】 items 【2】 id = 1;
  1. 【1】DELETE 【2】WHERE
  2. 【1】DELETE FROM 【2】WHERE
  3. 【1】DELETE 【2】FROM
  4. 【1】TRUNCATE【2】FROM