数据库系统概论 ---- 第三章 -- 关系数据库标准语言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,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
在MySQL中,什么是结构化查询语言 (SQL)
【8月更文挑战第20天】在MySQL中,什么是结构化查询语言 (SQL)
67 1
|
2月前
|
SQL Oracle 关系型数据库
SQL语言的主要标准及其应用技巧
SQL(Structured Query Language)是数据库领域的标准语言,广泛应用于各种数据库管理系统(DBMS)中,如MySQL、Oracle、SQL Server等
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
79 11
|
2月前
|
SQL 数据管理 数据库
SQL语句实例教程:掌握数据查询、更新与管理的关键技巧
SQL(Structured Query Language,结构化查询语言)是数据库管理和操作的核心工具
|
20天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
27 0
|
4月前
|
SQL 关系型数据库 MySQL
|
4月前
|
SQL 存储 大数据
SQL 语言发展史简直太震撼啦!从诞生到现代数据处理,见证一场奇妙的演变之旅,快来感受!
【8月更文挑战第31天】SQL(结构化查询语言)自20世纪70年代由IBM研究员E.F. Codd提出以来,已成为现代数据处理不可或缺的一部分。它最初简化了层次和网状模型中复杂的存储与检索问题,通过基本的SELECT、FROM和WHERE关键字实现了数据查询。80年代,SQL在商业数据库中广泛应用,引入了GROUP BY、HAVING和ORDER BY等功能,增强了数据分析能力。90年代,互联网和企业信息化推动了SQL的进一步优化与扩展,支持分布式数据库和数据仓库等技术。
58 0
|
4月前
|
SQL 存储 NoSQL
从SQL到NoSQL:理解不同数据库类型的选择与应用——深入比较数据模型、扩展性、查询语言、一致性和适用场景,为数据存储提供全面决策指南
【8月更文挑战第31天】在信息技术飞速发展的今天,数据库的选择至关重要。传统的SQL数据库因其稳定的事务性和强大的查询能力被广泛应用,而NoSQL数据库则凭借其灵活性和水平扩展性受到关注。本文对比了两种数据库类型的特点,帮助开发者根据应用场景做出合理选择。SQL数据库遵循关系模型,适合处理结构化数据和复杂查询;NoSQL数据库支持多种数据模型,适用于非结构化或半结构化数据。SQL数据库在一致性方面表现优异,但扩展性较差;NoSQL数据库则设计之初便考虑了水平扩展性。SQL使用成熟的SQL语言,NoSQL的查询语言更为灵活。
84 0
|
4月前
|
SQL 数据可视化 数据挖掘
SQL 在数据分析中简直太牛啦!从数据提取到可视化,带你领略强大数据库语言的神奇魅力!
【8月更文挑战第31天】在数据驱动时代,SQL(Structured Query Language)作为强大的数据库查询语言,在数据分析中扮演着关键角色。它不仅能够高效准确地提取所需数据,还能通过丰富的函数和操作符对数据进行清洗与转换,确保其适用于进一步分析。借助 SQL 的聚合、分组及排序功能,用户可以从多角度深入分析数据,为企业决策提供有力支持。尽管 SQL 本身不支持数据可视化,但其查询结果可轻松导出至 Excel、Python、R 等工具中进行可视化处理,帮助用户更直观地理解数据。掌握 SQL 可显著提升数据分析效率,助力挖掘数据价值。
76 0
|
4月前
|
SQL 关系型数据库 数据挖掘
SQL 基础入门简直太重要啦!从零开始,带你轻松掌握数据查询与操作,开启数据世界大门!
【8月更文挑战第31天】在数字化时代,数据无处不在,而 SQL(Structured Query Language)则是开启数据宝藏的关键钥匙。无论你是编程新手还是数据处理爱好者,掌握 SQL 都能帮助你轻松提取和分析信息。SQL 简洁而强大,像一位魔法师,能从庞大数据库中迅速找到所需数据。从查询、条件筛选到排序、分组,SQL 功能多样,还能插入、更新和删除数据,助你在数据海洋中畅游无阻。
45 0