MySQL核心技术与最佳实践_MySQL核心技术与最佳实践最新章节_孔祥盛著_掌阅小说网...

a1595c6f4129d6ab97bc5160f024c05e.png

4.3 表记录的删除

表记录的删除通常使用delete语句实现。如果要清空某一个表可以使用truncate语句。

4.3.1 使用delete删除表记录

如果表中的某条(或某些)记录不再使用,可以使用delete语句删除,delete语句的语法格式如下。

delete from表名[where条件表达式]

说明

如果没有指定 where子句,那么该表的所有记录都将被删除,但表结构依然存在。

例如,删除班级名为“2012计算机应用1班”的班级信息,可以使用下面的SQL语句,执行结果如图4-15所示。

use choose;

delete from classes where class_name='2012计算机应用1班';

select * from classes;

9e95a4f95b46aeb1cf08d2db75bcf3ee.png

图4-15 表记录的删除

删除表记录时,需要注意表之间的外键约束关系以及级联选项的设置,例如,下面的 delete 语句完成的功能是直接删除班级表中的所有记录,然而该delete语句将不会被执行,执行结果如图4-16 所示。请读者考虑满足何种条件时,该delete语句才能成功执行。

use choose;

delete from classes;

select * from classes;

47891e02f7dc4cf46a2b278e54211e47.png

图4-16 表记录的删除与外键约束

4.3.2 使用truncate清空表记录

truncate table用于完全清空一个表,语法格式如下。

truncate [table]表名

从逻辑上说,该语句与“delete from表名”语句的作用相同,但是在某些情况下,两者在使用上有所区别。例如,如果清空记录的表是父表,那么truncate命令将永远执行失败。如果使用truncate table成功清空表记录,那么会重新设置自增型字段的计数器。truncate table 语句不支持事务的回滚,并且不会触发触发器程序的运行。

场景描述7:truncate与delete的区别。

步骤1:下面的SQL 语句中,create table 语句负责快速地创建一个new_class 表,且表结构与班级classes表的表结构相同。insert语句将班级classes表中的所有记录插入到new_class表中。select语句负责查询new_class表的所有记录。执行结果如图4-17所示。

use choose;

create table new_class like classes;

insert into new_class select * from classes;

select * from new_class;

步骤2:使用下面的MySQL命令查看new_class表的表结构,如图4-18所示。

show create table new_class;

04cfe3d12654ecf163b95fc1acd45b41.png

图4-17 创建表结构、添加测试数据

9f46236700b3f4542b9bb33e192fec80.png

图4-18 查看new_class表的表结构

步骤3:使用下面的SQL语句删除new_class表的所有记录后,new_class表的表结构如图4-19所示。

delete from new_class;

show create table new_class;

步骤4:使用下面的MySQL命令清除new_class表的所有记录后,new_class表的表结构如图4-20所示。

truncate table new_class;

show create table new_class;

4967db2b699230e549a932b3b24e06f8.png

图4-19 执行delete语句后

4f41f9e92aa9894129c9407acf1ebe6d.png

5190eb7000db3600e149b290c1d5eebd.png

图4-20 执行truncate语句后

4f41f9e92aa9894129c9407acf1ebe6d.png

比较步骤3以及步骤4的执行结果,从中可以看出,delete语句并不会修改new_class表的自增型字段的起点;而使用truncate清除new_class表的所有记录后,new_class表的自增型字段的起点将被重置为1。

oZReUsyDkVxH81hLvO9Bj5WDS70V0vAgjrY28QBR0n0/0WCEhqHmiaShRKMGiPAL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值