删除操作
本篇文章重点在于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实现
总结
本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验三。不可用于商业用途转发。
如果能帮助到大家,大家可以点点赞、收收藏呀~