网站首页 > 文章精选 正文
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中的删除命令。
猜你喜欢
- 2025-03-30 工具|Innodb 恢复工具介绍(innodb 是怎么保证崩溃恢复能力的?)
- 2025-03-30 如何使用 SQL 视图和子查询进行复杂查询
- 2025-03-30 Sqlite - 常规函数 - TOTAL_CHANGES
- 2025-03-30 先删除数据库中的记录,然后再导入
- 2025-03-30 数据库:JDBC详解(jdbc数据库连接步骤)
- 2025-03-30 四个案例看懂 MySQL 事务隔离级别
- 2025-03-30 MySQL 中 DELETE 和 TRUNCATE 的用法和区别:详细解析
- 2025-03-30 从需求分析到需求设计的怪谈(需求分析阶段的设计目标是什么?调查内容是什么?)
- 2025-03-30 MySQL归档的常见方式(查看mysql归档文件的命令)
- 2025-03-30 讲两则笑话,当update和delete少了where条件
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)