|
|
|
|
SQL查询中的子句顺序:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。SELECT、FROM是必需的,HAVING子句只能与GROUP BY搭配使用。
|
|
|
(1)SELECT子句对应的是关系代数中的投影运算,用来列出查询结果中的属性。其输出可以是列名、表达式、集函数(AVG、COUNT、MAX、MIN、SUM),DISTINCT选项可以保证查询的结果集中不存在重复元组。
|
|
|
(2)FROM子句对应的是关系代数中的笛卡儿积,它列出的是表达式求值过程中须扫描的关系,即在FROM子句中出现多个基本表或视图时,系统首先执行笛卡儿积操作。
|
|
|
(3)WHERE子句对应的是关系代数中的选择谓词。WHERE子句的条件表达式中可以使用的运算符如下表所示。
|
|
|
|
|
|
SQL最简单的查询是找出关系中满足特定条件的元组,这些查询与关系代数中的选择操作类似。简单查询只需要使用3个保留字,即SELECT、FROM和WHERE。
|
|
|
|
|
|
|
子查询也称为嵌套查询,是指一个SELECT-FROM-WHERE查询可以嵌入另一个查询块之中。在SQL中允许多重嵌套。
|
|
|
|
聚集函数是以一个值的集合为输入,返回单个值的函数。SQL提供了5个预定义集合函数,即平均值AVG、最小值MIN、最大值MAX、求和SUM及计数COUNT。
|
|
|
使用ANY和ALL谓词必须同时使用比较运算符,其含义及等价的转换关系如下表所示。
|
|
|
|
|
|
|
|
在WHERE子句后面加上GROUP BY子句可以对元组进行分组,保留字GROUP BY后面跟着一个分组属性列表。最简单的情况是,FROM子句后面只有一个关系,根据分组属性对其元组进行分组。SELECT子句中使用的聚集操作符仅用在每个分组上。
|
|
|
|
假如元组在分组前按照某种方式加上限制,使得不需要的分组为空,则在GROUP BY子句后面跟一个HAVING子句即可。
|
|
|
|
.空值在任何聚集操作中都被忽略。它对求和、求平均值和计数都没有影响,也不能是某列的最大值或最小值。
|
|
|
|
|
SQL提供可为关系和属性重新命名的机制,这是通过使用具有以下形式的AS子句来实现的。
|
|
|
|
AS子句既可出现在SELECT子句中,也可以出现在FROM子句中。
|
|
|
|
对于字符串进行的最通常的操作是使用LIKE操作符的模式匹配。使用两个特殊的字符来描述模式,即"%"匹配任意字符串、"-"匹配任意一个字符。
|
|
|
|
查询视图表时,系统先从数据字典中取出该视图的定义,然后将定义中的查询语句和对该视图的查询语句结合起来,形成一个修正的查询语句。
|
|
|