【数据库系统概论】-关系数据库标准语言SQL(2)
来源:互联网 发布:java string拼接字符串 编辑:程序博客网 时间:2024/06/10 21:54
三、ORDER BY子句
对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省为ASC。
四、聚集函数
COUNT([DISTINCT | ALL] *) 统计元组个数
COUNT([DISTINCT | ALL] <列名>) 统计一列中值的个数
SUM([DISTINCT | ALL] <列名>) 计算一列值的总和(此列必须是数值型)
AVG([DISTINCT | ALL] <列名>) 计算一列值的平均值(此列必须是数值型)
MAX([DISTINCT | ALL] <列名>) 求一列值中的最大值
MIN([DISTINCT | ALL] <列名>) 求一列值中的最小值
五、GROUP BY子句
GROUP BY子句将查询结果按照某一列或多列的值分组,值相等的为一组。
对查询结果分组的目的是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。
连接查询
若一个查询同时涉及两个及两个以上的表,则称之为连接查询。
一、等值与非等值连接查询
连接查询的WHERE子句中用来连接两个表的条件为连接条件或连接谓词,其格式为:
[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>
当连接运算符为=时,成为等值连接,否则为非等值连接。连接谓词中的列名称为连接字段。
不带任何连接谓词的结果为笛卡尔积。
二、自身连接
连接操作不仅可以在两个表之间进行,也可以在一个表内进行,称为表的自身连接。
三、外连接
有时想以某一表R为主体列出每一个元组的基本情况以及在S表中联系的情况,若某一记录没有S上的联系,但仍然在记录中显示。
例如:
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno)/*也可以使用USING来去掉结果中重复的值:FROM Student LEFT OUT JOIN SC USING(Sno);*/左外连接列出左边关系中所有的元组,右外连接列出右边关系中所有的元组。四、复合条件连接
WHERE子句中可以有多个连接条件,称为复合条件连接。
连接操作除了可以是两表连接,一个表与其自身连接,还可以是两个以上的彪进行连接,后者通常称为多表连接。
嵌套查询
一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询快的WHERE子句或者HAVING短语的条件中的查询称为嵌套查询
上层的查询块称为外层查询或者父查询,下层查询块称为内层查询或者子查询。
注意:ORDER BY 子句只能对最终查询结果排序。
一、带有IN谓词的子查询
在嵌套查询中,子查询的结果往往是一个集合,IN谓词是判断该值是否属于该集合中。
子查询的查询条件不依赖于父查询,称为不相关子查询。反之,称为相关子查询,整个查询语句称为相关嵌套查询。
二、带有比较运算符的子查询
当用户能确切知道内层查询返回的是单值时,可以用>,<,=,>=,<=,!=或<>等比较运算符。此时,可以用=代替IN
三、带有ANY(SOME)或ALL谓词的子查询
语义解释如下:
> ANY 大于子查询结果的某一个值
<ANY 小于子查询结果的某一个值
>=ANY 大于等于子查询结果的某一个值
<=ANY 小于等于子查询结果的某一个值
=ANY 等于子查询结果的某一个值
!=ANY 不等于子查询结果的某一个值
>ALL 大于子查询结果的所有值
<ALL 小于子查询结果的所有值
>=ALL 大于等于子查询结果的所有值
<=ALL 小于等于子查询结果的所有值
=ALL 等于子查询结果的所有值
!=ALL 不等于子查询结果的所有值
事实上,用积极函数实现子查询通常比直接用ANY或者ALL查询效率更高。
四、带有EXISTS谓词的子查询
EXISTS代表存在量词,带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值或者逻辑假值。SQL中没有全称量词,但是我们总可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。
可以用谓词演算将一个逻辑蕴含的谓词等价转换为p→q≡^p∨q
五、集合查询
集合操作主要包括并操作UNION、交操作INTERSECT、差操作EXCEPT。集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。
在集合查询中,列名是无效的。
因此 ORDER BY <列名> [ASC | DESC] 是无效的 但 ORDER BY <列号> [DESC | ASC] 是有效的。
- 【数据库系统概论】-关系数据库标准语言SQL(2)
- 【数据库系统概论】-关系数据库标准语言SQL(3)
- 【数据库系统概论】-关系数据库标准语言SQL(4)
- 【数据库系统概论】-关系数据库标准语言SQL(1)
- 数据库系统概论-003:关系数据库标准语言
- 数据库系统概论-[01]关系型数据库标准SQL
- 第3章 关系数据库标准语言SQL(数据库系统概论)
- 数据库系统概论复习总结3 --- 第二章关系数据库标准语言SQL
- 数据库系统 -- 3 关系数据库标准语言SQL
- 关系数据库标准语言SQL基础2
- 关系数据库标准语言SQL(一)
- 关系数据库标准语言SQL(二)
- 关系数据库标准SQL语言
- 关系数据库标准语言SQL
- 关系数据库标准语言SQL
- 关系数据库标准语言SQL
- 关系数据库标准语言SQL
- 【数据库系统概论】----关系数据库(一)
- Java笔记———数组初探
- Java访问MySQL数据库的SqlHelper类以及测试程序
- MySQL查询缓存设置 提高MySQL查询性能
- css3过度效果
- javascript 显示对象的三种方法
- 【数据库系统概论】-关系数据库标准语言SQL(2)
- (每日一练)c++程序设计--谭浩强
- Halcon PDF文档(hdevelop_users_guide)学习总结之二——创建新算子
- 基于内存缓冲区的流媒体数据缓存排序(二)
- CentOS开启FTP及配置用户
- Spark 启动历史任务记录进程,报错 Logging directory must be specified解决
- Android 反射简化findViewById
- android见后台切换监听
- 模板实例化