削除(ロールバック可能)

記事の内容

概要

DELETE文は、データベース内の1つ以上のテーブルから行を削除するために使用されます。
※AUTO_INCREMENTの値は初期化されず保持される

AUTO_INCREMENTを使用すると、
新しい行が挿入されるたびにその列の値が1つずつ増加し、ユニークな値が自動的に生成される

DELETE
記述

DELETE FROM テーブル名 WHERE 条件;

【usersテーブル設定内容の表示(idはオートインクリメント)】
mysql> SELECT COLUMNS FROM users;
+-------+-----------------+------+-----+---------+----------------+
| Field | Type            | Null | Key | Default | Extra          |
+-------+-----------------+------+-----+---------+----------------+
| id    | bigint unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)     | YES  |     | no_name |                |
| age   | int             | YES  |     | NULL    |                |
+-------+-----------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
|  3 | user3 |  27 |
+----+-------+-----+

【レコード削除】
mysql> DELETE FROM users WHERE id = 3;
Query OK, 1 row affected (0.01 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
+----+-------+-----+

【レコード追加】
mysql> INSERT INTO users (name, age) VALUES ("user3", 27);
Query OK, 1 row affected (0.01 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
|  4 | user3 |  27 |
+----+-------+-----+

全削除

DELETE
記述

DELETE FROM テーブル名;

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
|  3 | user3 |  27 |
+----+-------+-----+

【レコード削除】
mysql> DELETE FROM users;
Query OK, 3 rows affected (0.01 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
Empty set (0.00 sec)

ロールバック処理

DELETE
記述

BEGIN;
処理(命令文など);
ROLLBACK;
COMMIT;

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
|  3 | user3 |  27 |
+----+-------+-----+

【トランザクション処理の開始】
BEGIN;
Query OK, 0 rows affected (0.00 sec)

【レコード削除】
mysql> DELETE FROM users;
Query OK, 3 rows affected (0.01 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
Empty set (0.00 sec)

【トランザクション前に巻き戻す】
ROLLBACK;
Query OK, 0 rows affected (0.00 sec)

【usersテーブルレコードをすべて表示】
mysql> SELECT * FROM users;
+----+-------+-----+
| id | name  | age |
+----+-------+-----+
|  1 | user1 |  25 |
|  2 | user2 |  35 |
|  3 | user3 |  27 |
+----+-------+-----+

【トランザクション処理の終了】
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)
記事の内容
閉じる