8)-MySQL删除表数据

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的例子


 
我们将使用示例数据库中的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;
 

MySQL DELETE和LIMIT子句


 
如果要限制要删除的行数,则使用limit子句,如下所示:
 
delete from table_name
order by c1, c2, ...
limit row_count;
 
请注意,表中的行顺序未指定,因此,当您使用limit子句时,应始终使用order by子句,不然删除的记录可能不是你所预期的那样。
 
以下DELETE语句选择法国(France)的客户,按升序按信用额度(creditLimit)进行排序,并删除前5个客户:
 
delete from customers
where country = 'france'
order by creditlimit
limit 5;
 
 
posted @ 2018-12-14 10:52  奢华使命  阅读(1187)  评论(0编辑  收藏  举报