数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL( 3.4 数据查询 )(二)

简介: 数据库系统概论 ---- 第三章 -- 关系数据库标准语言SQL( 3.4 数据查询 )(二)
② 确定范围

谓词 BETWEEN…AND…NOT BETWEEN…AND…可以用来查找属性值在(或不在)指定范围内的元组,其中 BETWEEN后是范围的下限(即低值),AND后是范围的上限(即高值)。

查询的结果包含下限和上限

[ 例 3.25 ] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别、年龄

SELECT Sname, Sdept, Sage
FROM mydb.Student
WHERE Sage BETWEEN 20 AND 23;

[ 例 3.26 ] 查询年龄不在20~23岁(包括20岁和23岁)之间的学生的姓名、系别、年龄

SELECT Sname, Sdept, Sage
FROM mydb.Student
WHERE Sage NOT BETWEEN 20 AND 23;

③确定集合

谓词IN可以用来查找属性值数据指定集合的元组,NOT IN可以用于查找属性值不在指定集合的元组。

[ 例 3.27 ] 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别

SELECT Sname, Ssex
FROM mydb.Student
WHERE Sdept IN ( 'IS', 'MA', 'CS' );

[ 例 3.28 ] 查询不是信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别

SELECT Sname, Ssex
FROM mydb.Student
WHERE Sdept NOT IN ( 'IS', 'MA', 'CS' );

④ 字符匹配

LIKE可以用于字符串匹配,可以进行完全匹配,也可以进行模糊匹配。

  • % 代表任意长度的字符串
  • _ 代表任意单个字符

例:查询学号为201215121的学生的详细情况

SELECT * FROM mydb.Student
WHERE Sno LIKE '201215121';
SELECT * FROM mydb.Student
WHERE Sno = '201215121';

如果LIKE后面的匹配串中不含通配符,可以使用=代替LIKE,使用!=<>代替NOT LIKE

例:查询所有姓刘学生的姓名、学号和性别

SELECT Sname, Sno, Ssex
FROM mydb.Student
WHERE Sname LIKE '刘%';

例:查询姓"欧阳"且全名为三个汉字的学生的姓名

SELECT Sname
FROM mydb.Student
WHERE Sname LIKE '欧阳_';

注意:数据库字符为ASCII,一个汉字需要两个_;如果为GBK只要一个

例:查询名字中第2个字为"阳"字的学生的姓名和学号

SELECT Sname, Sno
FROM mydb.Student
WHERE Sname LIKE '_阳%';

例:查询所有不姓刘的学生姓名

SELECT Sname
FROM mydb.Student
WHERE Sname NOT LIKE '刘%';

如果查询的字符串本身就有通配符%_,需要使用ESCAPE指定转义符号,默认为\

SELECT Sname
FROM mydb.Student
WHERE Sname LIKE '\_%';
SELECT Sname
FROM mydb.Student
WHERE Sname LIKE '$_%' ESCAPE '$';
⑤ 涉及空值的查询

例:某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号

SELECT Sno, Cno
FROM mydb.SC
WHERE Grade IS NULL;

注意 IS 不能用 = 进行代替

例:查所有有成绩的学生学号和课程号

SELECT Sno, Cno
FROM mydb.SC
WHERE Grade IS NOT NULL;

⑥ 多重条件查询

逻辑运算符 ANDOR 可以用来连接多个查询条件,AND的优先级高于OR

例:查询计算机系年龄在20岁以下的学生姓名

SELECT Sname
FROM mydb.Student
WHERE Sdept = 'CS' AND Sage<20;

IN谓词实际上是多个OR运算符的缩写

例:查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别

SELECT Sname, Ssex
FROM mydb.Student
WHERE Sdept = 'IS' OR Sdept = 'MA' OR Sdept = 'CS';
# 等价于
SELECT Sname, Ssex
FROM mydb.Student
WHERE Sdept IN ( 'IS', 'MA', 'CS' );

3. ORDER BY 子句

可以使用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排序,默认为升序

例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列

SELECT Sno, Grade
FROM mydb.SC
WHERE Cno = '3'
ORDER BY Grade DESC ;

例:查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

SELECT *
FROM mydb.Student
ORDER BY Sdept ASC , Sage DESC ;

对于空值,排序时显示的次序由具体系统实现来决定。 例如按升序排,含空值的元组最后显示;按降序排,空值的元组则最先显示。各个系统的实现可以不同,只要保持一致就行。

mysql中升序,空值最先显示;降序,空值最后显示。

在SC表中插入一条成绩为空的新数据

SELECT Sno, Grade
FROM SC
WHERE Cno = '3'
ORDER BY Grade ASC ;

SELECT Sno, Grade
FROM SC
WHERE Cno = '3'
ORDER BY Grade DESC ;


相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
9天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
32 11
|
1月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
23天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
22天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
151 12
|
29天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
29天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
1月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
38 1
|
1月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。