数据库系统原理:数据删除

yumo6663个月前 (04-05)技术文章19

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中的删除命令。

相关文章

数据库的存储原理

1. 数据存取在数据库管理系统中,数据的存取过程为:应用程序通过 DML 向 DBMS 发出存取请求,如 SELECT 语句;对命令进行语法检查,正确后检查语义和用户权限(通过数据字典 DD),并决定...

一文搞懂数据库索引原理

前言写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢?以下这个面试场景,不知道大家熟悉不熟悉:面试官:数据库有...

数据库系统原理:外键约束

关系数据库中最重要的约束是实体完整性和参照完整性。在SQL中,参照完整性称为外键约束。学习SQL中参照完整性的实现方法。一、参照完整性定义外键约束指参照完整性检查。根据参照完整性规则,依赖关系中外键或...

数据库系统原理:聚集函数

SQL命令包括数据定义、查询、操纵和控制四大类,其中数据查询是数据库的核心操作。学习在SQL数据查询中使用聚集函数的方法。一、五种聚集函数介绍聚集函数(集合函数)→垂直方向(一个值):主要用法是在垂直...

数据库加密技术原理与实践

1、数据库加密概述数据库加密是指对存储在数据库中的敏感数据进行编码处理的过程,目的是防止未经授权的访问和数据泄露。加密后的数据即使被未授权的第三方获取,也无法理解其原始含义,从而保护数据的机密性数据库...

浅析InnoDB引擎的索引和索引原理

什么是InnoDB的索引InnoDB的索引就是一颗B+树。页是InnoDB引擎在内存和磁盘之间交换数据的基本单位,页的大小一般是16KB,页的大小可以在启动MySQL服务的时候通过更改innodb_p...