程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数据库系统原理:数据删除(数据库删除内容)

balukai 2025-03-30 14:22:52 文章精选 6 ℃

SQL命令包括数据定义、查询、操纵和控制四大类。其中,数据操纵即数据更新包括数据插入、数据删除和数据修改三类。

首先学习数据删除命令的用法。

一、数据删除命令的基本用法

语法:

Delete From 基本表名 [Where 条件表达式]

即从FROM后面的基本表中删除满足Where 条件表达式中的条件的元组。

需要注意:

★Delete语句只能从一个基本表中删除满足Where子句中的条件的元组,即在FROM后面只能有一个基本表名。

★ Delete只删表中的数据,表的定义仍然在数据字典中存在;删除数据后,仍然可以引用该表。

如果语句中没有Where 条件表达式的话,程序会将基本表中的全部数据清空,但是表的定义依然存在。

DELETE命令与数据定义中的删除命令DROP命令的区别:DROP命令不仅删除表中的数据,连带表的定义一起删除。

二、删除一条记录

例1:在基本表S中删除学号是s1的学生。

Delete

From S

Where sno= 's1';

学生的信息是在S表中的,所以FROM后面给出的表名是S,条件是“学号等于s1” ,即删除掉S表中满足“学号是s1”的这行记录。

三、删除多条记录

例2:在基本表SC中删除无成绩的选课记录。

Delete

From SC

Where grade IS NULL

学生的成绩记录是在SC表中的,所以FROM后面给出的表名是SC,条件是“没有成绩”即“成绩为空” 的这些记录,那么SC表中只要是成绩为空的记录都被删除。

四、带子查询的删除

例3:删除所有女学生的选课记录。

学生的选课信息在SC表中,而学生的性别在S表中。

错解:

Delete

From S, SC

WhereS.sno=SC.snoand sex='女';

不能因为删除涉及两张表,就在FROM后面用S和SC表并列、然后给出连接条件、指出选择条件。

因为DELECT命令的用法最需要注意的就是FROM语句中FROM后面只能给出一个表名,也就是说每次删除的时候只能删除一个表中的数据。

若涉及到多表的情况,另一个表的数据可以通过子查询的形式来给出。

正解:

Delete

From SC

Where sno in (Select sno

From S

Where sex='女');

首先通过子查询在S表中查询所有性别为女生的学生的学号信息,子查询的结果就是所有性别为女生的学生的学号信息;然后通过谓词IN,只要学号在女生的学号信息里面,就把该数据在SC表中删除。

五、总结

数据删除命令是用DELECT来实现的,可以使用DELECT命令删除一行记录、多行记录以及在涉及多表数据时使用子查询来做删除操作。需要注意的是,DELECT命令只是删除表中的数据。

DBMS会控制增、删、改等更新操作、做一系列的检查,使之符合完整性约束条件。

例如删除主表S中的数据时,当用户执行:

Delete From S Where sno= 's1'

系统并不立即执行删除命令,而是去检查子表SC,因为在表SC定义的时候创建了外键,其中学号为外键、引用的是S表中的学号这个属性列;当系统检查SC表中存在有学号为s1的学生选课记录时,则系统默认的处理策略是拒绝用户在主表S中的删除命令。

最近发表
标签列表