删除操作
本篇文章重点在于SQL中的各种删除操作
题目一
删除表中的学号不全是数字的那些错误数据,学号应该是数字组成,不能够包含字母空格等非数字字符。方法之一:用substr函数,例如Substr(sid,1,1)返回学号的第一位,判断是否是数字。
delete from test3_01
where sid not in(select sidfrom test3_01where regexp_like(sid, '^[0-9]+$'))
关键点:
1、利用正则表达式来实现
2、^:表示字符串开始;$:表示字符串结束;[0,9]:表示10个数字;+:表示有一种或多种前面[]中的数
3、允许空白字符可以用'^[0-9\s]+$'
题目二
删除表中的出生日期和年龄(截止到2012年的年龄,即年龄=2012-出生年份)不一致的那些错误数据。
delete from test3_02
where age <> 2012 - extract(year from birthday)
关键点:
1、Extract函数是在Oracle数据库中用于从日期或时间间隔类型数据中提取特定部分,如年、月、日、小时、分钟等的一个函数
题目三
删除表中的性别有错误的那些错误数据(性别只能够是“男”、“女”或者空值)。
delete from test3_03
where sex <> '男' and sex <> '女' and sex is not null
关键点:
1、null的处理只能是 is null 或者 is not null
2、null在算术运算或逻辑运算中返回值都是null
题目四
删除表中的院系名称有空格的、院系名称为空值
delete
from test3_07
where sid not in(select sidfrom pub.student
)
的或者院系名称小于3个字的那些错误数据。
delete from test3_04
where dname like '% %' or
dname is null or
length(dname) < 3
关键点:
1、like '% %’ 来表示名称有空格
2、length()来计算属性值的长度
题目五
删除表中的班级不规范的那些错误数据,不规范是指和大多数不一致。
delete from test3_05
where class not in
(select classfrom test3_05where regexp_like(class, '^[0-9]+$')
)
题目六
删除其中的错误数据,错误指如下情况:课程号和教师编号在教师授课表pub.teacher_course中不同时存在的,即没有该教师教该课程;
方法一:
delete
from test3_08 T
where not exists(select cid, tidfrom pub.teacher_course Awhere T.cid=A.cid and T.tid=A.tid
)
方法二、
delete
from test3_08
where (cid, tid) not in(select cid, tidfrom pub.teacher_course
)
关键点:
1、 (cid, tid)让cid和tid作为一个整体在关系中匹配,要求同时匹配而不是分开匹配
2、not exists在问题出现不存在时可以使用
题目七
删除其中的错误数据,错误指如下情况:成绩数据有错误(需要先找到成绩里面的错误)。
delete
from test3_09
where score not between 0 and 100
关键点:
1、between x and y语句的使用
题目八
删除其中的错误数据,错误指如下情况:学号在学生信息pub.student中不存在的;课程号在课程信息pub.course中不存在的;教师编号在教师信息pub.teacher中不存在的;课程号和教师编号在教师授课表pub.teacher_course中不存在的;成绩数据有错误(需要先找到成绩里面的错误)。
delete
from test3_10 S
where sid not in(select sidfrom pub.student)
or cid not in(select cidfrom pub.course)
or tid not in(select tidfrom pub.teacher)
or not exists(select cid, tidfrom pub.teacher_course Twhere S.cid = T.cidand S.tid = T.tid)
or score not between 0 and 100
关键点:
1、多个条件并列选其一即可用or实现
总结
本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验三。不可用于商业用途转发。
如果能帮助到大家,大家可以点点赞、收收藏呀~