SQL DELETE 语句用于删除数据表中现有的记录。DELETE 命令通常和 WHERE 子句一起使用,用以删除满足条件的记录;如果不使用 WHERE 子句,那么表中所有的记录都将被删除,这往往不是我们所期望的。
语法
带有 WHERE 子句的 DELETE 命令的基本语法如下:
DELETE FROM table_name
WHERE [condition];
你可以使用 AND 或者 OR 运算符连接多个条件。
示例
现有一个包含如下记录的 website 表:
+----+----------------+----------------------------+-----+-------+---------+---------+
| id | name
| url
| age | alexa | uv
| country |
+----+----------------+----------------------------+-----+-------+---------+---------+
| 1 | 百度
| https://www.baidu.com/
| 21 |
4 | 5010.5 | CN
|
| 2 | 淘宝
| https://www.taobao.com/ | 17 |
8 | 3996.75 | CN
|
| 3 | C语言中文网 | | 12 | 7923 | 11.62 | CN
|
| 4 | Google
| https://www.google.com/ | 23 |
1 | 36474 | US
|
| 5 | GitHub
| https://github.com/
| 13 | 95 | 216.3 | US
|
| 6 | Stack Overflow | https://stackoverflow.com/ | 16 | 48 | 592.2 | US
|
| 7 | Yandex
|
| 11 | 53 | 591.82 | RU
|
| 8 | VK
| https://vk.com/
| 23 | 23 | 1206 | RU
|
+----+----------------+----------------------------+-----+-------+---------+---------+
下面的语句将删除 id 为 6 的网站信息:
DELETE FROM website
WHERE id = 6;
执行完该语句,website 表的记录如下:
+----+-------------+-------------------------+-----+-------+---------+---------+
| id | name
| url
| age | alexa | uv
| country |
+----+-------------+-------------------------+-----+-------+---------+---------+
| 1 | 百度
| https://www.baidu.com/ | 21 |
4 | 5010.5 | CN
|
| 2 | 淘宝
| https://www.taobao.com/ | 17 |
8 | 3996.75 | CN
|
| 3 | C语言中文网 | | 12 | 7923 | 11.62 | CN
|
| 4 | Google
| https://www.google.com/ | 23 |
1 | 36474 | US
|
| 5 | GitHub
| https://github.com/
| 13 | 95 | 216.3 | US
|
| 7 | Yandex
| | 11 | 53 | 591.82 | RU
|
| 8 | VK
| https://vk.com/
| 23 | 23 | 1206 | RU
|
+----+-------------+-------------------------+-----+-------+---------+---------+
如果您想删除 website 表中的所有记录,则无需使用 WHERE 子句,此时的 DELETE 命令如下所示:
DELETE FROM website;
执行完该语句,website 表将没有任何记录,也即变成一个空表。