删除数据
从一个表中删除(去掉)数据,使用DELETE语句。
Students表:
| id | class_id | name | gender | score |
| --- | -------- | ---- | ------ | ----- |
| 1 | 1 | 小明 | M | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
DELETE FROM Students WHERE id = 1;
SELECT * FROM Students;
+----+----------+------+--------+-------+
| id | class_id | name | gender | score |
+----+----------+------+--------+-------+
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
+----+----------+------+--------+-------+
DELETE FROM要求指定从中删除数据的表名,WHERE子句过滤要删除的行。
在使用DELETE时一定不要省略WHERE子句,否则会删除表中所有行。通常应该先用SELECT进行测试,保证它过滤的是正确的记录。
删除列的值
DELETE只能删除整行,如果要删除指定的列,需要使用UPDATE语句,设置它为NULL(假如表定义允许NULL值)。
UPDATE Students SET gender = NULL WHERE id = 1;
| id | class_id | name | gender | score |
| --- | -------- | ---- | ------ | ----- |
| 1 | 1 | 小明 | NULL | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |