您的位置:首页 > 数据库

【数据库系统概论】-关系数据库标准语言SQL(2)

2015-01-07 21:05 603 查看

三、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, Grade
FROM 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] 是有效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: