删除数据DELETE语句()
删除不需要的信息与一开始时录入这些信息同等重要在LIBRARY数据库的例子中可能丢失或出售了一本图书那么这本图书的信息也就无须再保存在数据库中SQL提供了DELETE语句用于处理删除记录的情形要删除一个表中的所有记录可以使用下面的语句
DELETE FROM myLibrary;
在一些RDBMS中无须使用FROM关键字只需要给出表名即可但某些RDBMS则坚持要求使用FROM关键字执行上面的DELETE语句之后表中的记录将被全部删除在数据库中只剩下一个空表读者可以从wwwwroxcom或者wwwagilitatorcom下载相同的INSERT脚本重新填充表中的记录
删除的记录还可以恢复吗?这要视情况而定为了取消对RDBMS中数据执行的操作必须在一个事务上下文中执行所有操作最后要么提交所有的更改(使之永久化)要么回滚这些操作(将数据恢复为初始状态)第章将讨论关于事务支持的问题
如果将DELETE语句与之前介绍过的WHERE子句结合就可以使删除操作具有更多的选择性要删除特定的记录集合只需要在WHERE子句中定义删除记录的标准下面的查询将不加区分地删除满足WHERE子句中删除条件的所有记录
DELETE FROM myLibrary
WHERE publisher = Wiley;
执行上面的DELETE语句之后将删除表中所有由Wiley出版社出版的图书但这也许并不是我们需要的操作如何才能从表中成百上千的记录中删除一条特定的记录呢?这就需要指定一组匹配条件使得满足所有条件的记录在表中是唯一的例如下面的例子
DELETE FROM myLibrary
WHERE publisher = Wiley AND pages = ;
这样的筛选条件一定是唯一的吗?实际上尽管可能性不大但对于一个较大的数据库来说存在一条以上的记录同时满足以上两个条件也并非不可能更好的办法是使用ISBN号因为它是唯一的
DELETE FROM myLibrary
WHERE isbn=;
如果记录中不存在一个可作为唯一标识的标志又该如何处理呢?有其他几种办法可以确保一条记录在表中的唯一性(请参见第章和第章)但这里先介绍一个特殊列的概念与其他列相比特殊列的作用是唯一地标识表中的一条记录也称为主键假如在将记录输入到表中时已经对这些记录进行了编号那么这些编号就是引用特定记录的一个简便的办法假如特殊列不允许出现重复的编号那么在删除单条记录时就不存在歧义遗憾的是定义这样的列需要修改表的结构
试一试删除表中的记录
下面将删除Microsoft SQL Server 创建的表中的某些记录请先重复本章第一个试一试练习中步骤()到步骤()的操作以便为输入并执行SQL命令做好准备工作
() 下面的查询将删除MYLIBRARY表中的所有记录
USE library;
DELETE myLibrary
( row(s) affected)
() 单击位于上方工具栏中的Execute按钮如之前的图所示
() 重新插入下面的记录
USE library;
INSERT INTO myLibrary (title author book_language publisher pages author
publish_date isbn)VALUES (SQL BibleAlex KriegelEnglishWiley
Boris M TrukhnovApril )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
isbn) VALUES (Microsoft SQL Server Weekend Crash CourseAlex Kriegel
EnglishWiley October )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
isbn) VALUES (MindswapRobert Sheckley EnglishOrb BooksMay
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
isbn) VALUES (Jonathan Livingston SeagullRichard Bach EnglishMacMillan
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
isbn) VALUES (A Short History of Nearly EverythingBill Bryson
EnglishBroadway October )
返回目录SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
数据仓库与数据挖掘培训视频教程