数据库SQL语言实战(三)

简介: 本篇文章重点在于SQL中的各种删除操作

删除操作

本篇文章重点在于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实现

总结

本文的所有题目均来自《数据库系统概念》(黑宝书)、山东大学数据库实验三。不可用于商业用途转发。

如果能帮助到大家,大家可以点点赞、收收藏呀~

相关文章
|
2天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
13天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
49 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
3天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
15 4
|
2天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
4天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
17 4
|
5天前
|
SQL 关系型数据库 MySQL
go语言中安装数据库驱动
【11月更文挑战第1天】
20 5
|
3天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
6天前
|
SQL 关系型数据库 MySQL
go语言中数据库操作
【10月更文挑战第22天】
20 4
|
5天前
|
关系型数据库 MySQL 数据库连接
go语言中打开数据库连接
【11月更文挑战第1天】
18 2
|
13天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
15 2