数据库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 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
305 7
|
3月前
|
SQL 数据管理 关系型数据库
SQL 语言入门:开启数据管理的大门
在数字化时代,数据已成为核心资产,而 SQL 作为操作关系型数据库的标准语言,是数据从业者、程序员及办公人员必备技能。本文从基础概念讲起,详解 SQL 的核心用法,包括数据查询、插入、修改、删除及表结构操作,并通过实例演示帮助读者快速上手。掌握 SQL,不仅能提升数据处理效率,更为深入理解数据管理打下坚实基础。
|
3月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
368 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
2月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
189 6
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL Oracle 关系型数据库
SQL语言小结
针对数据库、表单和数据行的增删改,没有涉及到sql真正的用途也就是查询,sql提供的查询语句的关键字占 sql 语言的一半之多,查询语句还是得单拿出来讲,不然太多了。 因为没有涉及到查询,所以sql的新增和修改都是很笼统的做法,drop、alter drop、delete这些很容易,逻辑性也不强,再次说明sql的真正精髓在于查询,不然为啥叫做结构化查询语言
276 0
|
2月前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
222 0
|
3月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
285 0
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。

热门文章

最新文章