MySQL删除表数据
在本教程中,您将学习如何使用MySQL DELETE
语句从单个表中删除数据。
1. MySQL DELETE语句介绍
要从表中删除数据,请使用MySQL DELETE
语句。下面说明了DELETE
语句的语法:
DELETE FROM table_name
WHERE condition;
在上面查询语句中 -
- 首先,指定删除数据的表(
table_name
)。 - 其次,使用条件来指定要在
WHERE
子句中删除的行记录。如果行匹配条件,这些行记录将被删除。
请注意,
WHERE
子句是可选的。如果省略WHERE
子句,DELETE
语句将删除表中的所有行。
除了从表中删除数据外,DELETE
语句返回删除的行数。
要使用单个DELETE
语句从多个表中删除数据,请阅读下一个教程中将介绍的DELETE JOIN语句。
要删除表中的所有行,而不需要知道删除了多少行,那么应该使用TRUNCATE TABLE语句来获得更好的执行性能。
对于具有外键约束的表,当从父表中删除行记录时,子表中的行记录将通过使用ON DELETE CASCADE选项自动删除。
2. MySQL DELETE的例子
我们将使用示例数据库(yiibaidb)中的employees
表进行演示。
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| emp_id | int(11) | NO | PRI | NULL | auto_increment |
| emp_name | varchar(255) | NO | | NULL | |
| performance | int(11) | YES | MUL | NULL | |
| salary | float | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set
请注意,一旦删除数据,它就会永远消失。因此,在执行
DELETE
语句之前,应该先备份数据库,以防万一要找回删除过的数据。
假设要删除officeNumber
为4
的员工,则使用DELETE
语句与WHERE
子句作为以下查询:
DELETE FROM employees
WHERE
officeCode = 4;
要删除employees
表中的所有行,请使用不带WHERE子句的DELETE
语句,如下所示:
DELETE FROM employees;
在执行上面查询语句后,employees
表中的所有行都被删除。
MySQL DELETE和LIMIT子句
如果要限制要删除的行数,则使用LIMIT子句,如下所示:
DELETE FROM table
LIMIT row_count;
请注意,表中的行顺序未指定,因此,当您使用LIMIT
子句时,应始终使用ORDER BY
子句,不然删除的记录可能不是你所预期的那样。
DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;
考虑在示例数据库(yiibaidb)中的customers
表,其表结构如下:
mysql> desc customers;
+------------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| customerNumber | int(11) | NO | PRI | NULL | |
| customerName | varchar(50) | NO | | NULL | |
| contactLastName | varchar(50) | NO | | NULL | |
| contactFirstName | varchar(50) | NO | | NULL | |
| phone | varchar(50) | NO | | NULL | |
| addressLine1 | varchar(50) | NO | | NULL | |
| addressLine2 | varchar(50) | YES | | NULL | |
| city | varchar(50) | NO | | NULL | |
| state | varchar(50) | YES | | NULL | |
| postalCode | varchar(15) | YES | | NULL | |
| country | varchar(50) | NO | | NULL | |
| salesRepEmployeeNumber | int(11) | YES | MUL | NULL | |
| creditLimit | decimal(10,2) | YES | | NULL | |
+------------------------+---------------+------+-----+---------+-------+
13 rows in set
例如,以下语句按客户名称按字母排序客户,并删除前10
个客户:
DELETE FROM customers
ORDER BY customerName
LIMIT 10;
类似地,以下DELETE
语句选择法国(France)的客户,按升序按信用额度(creditLimit
)进行排序,并删除前5
个客户:
DELETE FROM customers
WHERE country = 'France'
ORDER BY creditLimit
LIMIT 5;
在本教程中,您已经学会了如何使用MySQL DELETE
语句从表中删除数据。
相关文章
- 禁止数字禁止MySQL字段以数字开头(mysql字段开头)
- MySQL免费调试工具:简化数据库调试(mysql免费调试工具)
- 数据库MySQL如何删除数据库(mysql怎么删除)
- MySQL中快速批量修改数据的方法(mysql批量修改数据)
- MySQL增加外键:管理数据的新方式(mysql增加外键)
- MySQL数据:实现导出与导入(mysql数据导出导入)
- MySQL:备份表数据的必要性(mysql备份表的数据)
- 解决Linux下卸载MySQL数据库的挑战(linux卸载mysql数据库)
- MySQL加速大数据导入(mysql导入大数据)
- MySQL的恐怖每秒写入数据量!(mysql每秒写入量)
- MySQL 查看授权表:快速查找用户权限(mysql查看授权表)
- 自动故障迁移MHA:MySQL自动实现高可用故障自动迁移(mysqlmha)
- MySQL存储及处理二进制数据的技巧(mysql二进制数据)
- MySQL行合并:提升数据库查询效率(mysql行合并)
- 如何使用 MySQL 删除视图数据?(mysql删除视图数据)
- 如何设置MySQL用户可以远程登陆?(mysql用户远程登陆)
- 中数据MySQL中查看库中的数据(mysql 查看库)
- MySQL中的字典实现和应用(mysql字典)
- MySQL索引:提升数据查询速度的利器(MySQL索引. ref)
- 一步到位:彻底清空MySQL数据库(彻底删除mysql数据库)
- 消除MySQL冗余:如何删除重复的记录?(mysql删除重复的记录)
- MySQL中的Credit 帮助你管理信用数据的完美解决方案(mysql中credit)
- MySQL 状态监控了解数据库性能的关键(mysql_status)
- MySQL多元数据统计探索(mysql 不同数据统计)
- 高效MySQL数据分析两小时分组实现快速数据归类(mysql 两小时分组)
- MySQL命令行下载详解(mysql下载命令行)
- MySQL数据库不支持中文检索,如何解决(mysql不支持中文检索)
- MySQL结果不输出如何解决(mysql不打印结果)
- 如何使用MySQL实现一列数据的去重(mysql 一列去重复)