删除操作
本篇文章重点在于SQL中的各种删除操作
题目一
删除表中的学号不全是数字的那些错误数据,学号应该是数字组成,不能够包含字母空格等非数字字符。方法之一:用substr函数,例如Substr(sid,1,1)返回学号的第一位,判断是否是数字。
delete from test3_01
where sid not in
(select sid
from test3_01
where 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 sid
from 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 class
from test3_05
where regexp_like(class, '^[0-9]+$')
)
题目六
删除其中的错误数据,错误指如下情况:课程号和教师编号在教师授课表pub.teacher_course中不同时存在的,即没有该教师教该课程;
方法一:
delete
from test3_08 T
where not exists(
select cid, tid
from pub.teacher_course A
where T.cid=A.cid and T.tid=A.tid
)
方法二、
delete
from test3_08
where (cid, tid) not in(
select cid, tid
from 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 sid
from pub.student)
or cid not in
(select cid
from pub.course)
or tid not in
(select tid
from pub.teacher)
or not exists
(select cid, tid
from pub.teacher_course T
where S.cid = T.cid
and S.tid = T.tid)
or score not between 0 and 100
关键点:
1、多个条件并列选其一即可用or实现
总结
本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验三。不可用于商业用途转发。
如果能帮助到大家,大家可以点点赞、收收藏呀~