如果需要从数据表中删除数据记录,则需要使用DELETE语句,DELETE语句同样允许通过WHERE子句指定删除条件。DELETE语句基本语法格式如下。
同样,DELETE语句指定了WHERE子句,那么MySQL就会删除满足WHERE子句指定条件的记录行。
下面演示删除“tb_student”表部分数据记录行,SQL语句示例如下。
(1)在删除操作之前,可以使用SELETE语句查看当前数据。
(2)删除“tb_student”表中“sname”为“李九”的数据记录。
提示信息表示1条记录被影响。
(3)使用SELETE语句查看执行结果。
由结果可以看到“tb_student”表中“sname”为“李九”的数据记录被删除了。由此可以看到,满足WHERE子句指定条件的记录行会被删除。
同样,DELETE语句如果省略WHERE子句,MySQL将删除数据表的所有数据。SQL语句示例如下。
(1)删除“tb_student”表中所有的数据记录。
提示信息表示6条记录被影响。
(2)使用SELETE语句查看执行结果。
查询结果为空,说明删除表中的所有数据记录成功,现在“tb_student”表中已经没有任何数据记录。
如果想要删除表中的所有记录,除了使用DELETE语句,还可以使用“TRUNCATE TABLE”语句,语法格式如下。
下面演示使用“TRUNCATE TABLE”语句删除“tb_student”表中的所有记录,SQL语句示例如下。
(1)在执行删除操作前,先插入(INSERT)一些模拟数据。
提示信息表示4条记录插入成功。
(2)使用SELECT语句查看删除之前的数据。
(3)使用TRUNCATE TABLE语句删除“tb_student”表的所有记录。
提示信息表示0行记录受到影响。为什么是0行,难道数据记录没有被删除?
(4)使用SELECT语句查看执行结果。
查询结果为空,说明删除表中的所有数据记录成功,现在“tb_student”表中已经没有任何数据记录。
原来,使用“TRUNCATE TABLE”语句删除数据表中的所有记录是直接删除原来的表,并重新创建一个表,所以刚刚提示0条记录受影响。由于“TRUNCATE TABLE”语句是直接删除表而不是删除记录,因此执行速度比DELETE块。但是使用“TRUNCATE TABLE”语句删除数据是不支持事务回滚的(关于事务请看第4.6节)。