打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
12.2 删除表中的数据 - 《精通SQL——结构化查询语言详解》 - 免费试读 - bo...
12.2.1  DELETE语句基本语法
使用DELETE语句从数据库删除数据,基本语法如下。
DELETE FROM                                            table_name
WHERE                                                                       search_condition
说明:该语句将从表中删除符合条件的数据行,如果没有WHERE语句,则删除所有数据行。通过使用DELETE语句的WHERE子句,SQL可以删除单行数据、多行数据以及所有行数据。使用DELETE语句时,应注意以下几点。
     DELETE语句不能删除单个字段的值,只能删除整行数据。要删除单个字段的值,可以采用上节介绍的使用UPDATE语句,将其更新为NULL。
     使用DELETE语句仅能删除记录即表中的数据,不能删除表本身。要删除表,需要使用前面介绍的DROP TABLE语句。
     同INSERT和UPDATA语句一样,从一个表中删除记录将引起其他表的参照完整性问题。这是一个潜在问题,需要时刻注意。
注意
在DELETE语句中没有指定列名,这是因为不能从表中删除单个列的值,只能整行删除。如果需要删除特定的列值,应使用UPDATE语句将该值设置为NULL,当然,前提是该列没有NOT NULL约束,具体操作可参加12.1.2节的例程。
12.2.2  DELETE语句删除单行数据
DELETE语句可以删除数据库表中的单行数据、多行数据以及所有行数据。同时在WHERE子句中,也可以通过子查询删除数据。本节主要通过一个实例说明如何从表中删除单行数据。
实例9  DELETE语句删除单行数据
从New_Teacher2表中,删除教工号为8的教师记录。实例代码:
DELETE FROM                        New_Teacher2
WHERE                                                   TNO=8
查看表New_Teacher2的数据。
SELECT  *  FROM  New_Teacher2
运行结果如图12.10所示。
图12.10  删除New_Teacher2表中教工号为8的教师记录
可见,教工号为8的教师记录已经被整行删除。
12.2.3  DELETE语句删除多行数据
与前面介绍的数据更新操作一样,可以在WHERE子句中设置各种搜索条件,也可以通过子查询或者多表连接的方式选择要删除的行。
实例10  DELETE语句删除多行数据
从New_Teacher2表中,删除工资低于所有教师平均工资的男教师的记录。
实例代码:
DELETE FROM                        New_Teacher2
WHERE                                                  TSEX=’男’
AND                                                                        SAL < (SELECT  avg(SAL)
FROM                New_Teacher2)
查看表New_Teacher2的数据。
SELECT  *  FROM  New_Teacher2
运行结果如图12.11所示。
可见,教工号为1和3的两位男教师记录已经被删除。
图12.11  删除New_Teacher2表中工资低于所有教师平均工资的男教师的记录
12.2.4  DELETE语句删除所有行
如果DELETE语句中,不包含WHERE子句,则该表的所有行都将被删除。
实例11  DELETE语句删除所有行
删除New_Teacher2表中的所有记录,代码如下:
DELETE FROM                        New_Teacher2
查看表New_Teacher2的数据。
SELECT  *  FROM  New_Teacher2
运行结果如图12.12所示。
图12.12  删除New_Teacher2表中的所有记录
可以发现,New_Teacher2表中的所有记录都被删除了,但是New_Teacher2表本身(各个字段)还存在,并没有被删除。
12.2.5  TRUNCATE TABLE语句
从12.2.4节可以看到,使用没有WHERE子句的DELETE语句可以从表中删除所有的行。在SQL Server中,还提供了TRUNCATE TABLE语句,供用户删除表中的所有数据,同时又不删除表结构。TRUNCATE TABLE语句语法如下。
TRUNCATE TABLE  table_name
虽然使用DELETE语句和TRUNCATE TABLE语句都能够删除表中的所有数据,但是使用TRUNCATE TABLE语句比用DELETE语句快得多,表现为以下两点。
     使用DELETE语句,系统将一次一行地处理要删除的表中的记录,在从表中删除行之前,在事务处理日志中记录相关的删除操作和删除行中的列值,以防止删除失败时,可以使用事务处理日志来恢复数据。
     TRUNCATE TABLE则一次性完成删除与表有关的所有数据页的操作。另外,TRUNCATE TABLE语句并不更新事务处理日志。由此,在SQL Server中,使用TRUNCATE TABLE语句从表中删除行后,将不能用ROLLBACK命令取消行的删除操作。
注意
TRUNCATE TABLE语句不能用于有外关键字依赖的表。
实例12  TRUNCATE TABLE语句删除表中的数据
删除New_Teacher表中的所有数据,代码如下。
TRUNCATE TABLE                     New_Teacher
查看删除数据后表New_Teacher中的数据。
SELECT  *  FROM  New_Teacher
运行结果如图12.13所示。
图12.13  删除New_Teacher表中的所有数据
可见,表New_Teacher中的数据均被删除,但表结构并没有被删除,这与DROP TABLE语句是不同的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
truncate与delete的区别
实例对比Oracle中truncate和delete的区别
mysql数据库面试总结
SQL语句中
Sql表数据操作
sql server 基本命令介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服