記事の内容
概要
DELETE文は、データベース内の1つ以上のテーブルから行を削除するために使用されます。
※AUTO_INCREMENTの値は初期化されず保持される
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)