数据库查询语法:
SELECT [ ALL | DISTINCT ] [ TOP n [ PERCENT ] [ WITH TIES ] ]
<dest_column> [AS column_name AS column_alias ]
[,<dest_column> [AS column_name AS column_alias ] ...
FROM table_name | view_name [table_alias]
[WHERE <condition_expression>]
[GROUP BY <column_name> [HAVING <condition_exp>]]
[ORDER BY <column_name> [ASC | DESC]];
说明:
ALL|DISTINCT: 指明查询结果集中表中重复的元组是否输出,ALL全部输出,DISTINCT去除重复的元组,保留其中一个元组。此默认为ALL。
GROUP BY 子句: 则指明按照列的值进行分组,该属性列值相等的元组为一个组。通常在每个组左右集函数。如果GROUP子句带HAVING短语,则只有满足指定条件的组才予输出。
ORDER BY 子句: 则结果表还要按指定列的值升序或降序。
常用的查询条件:
|
查询条件
|
谓词
|
|
比较
|
=, >, <, >=, <=, !=, <>, !>, !<, NOT + 上述比较运算符
|
|
确定范围
|
BETWEEN...AND..., NOT BETWEEN...AND...
|
|
确定集合
|
IN, NOT IN
|
|
字符匹配
|
LIKE, NOT LIKE
|
|
空值
|
IS NULL, IS NOT NULL
|
|
多重条件
|
AND, OR
|
注:
谓词LIKE可以用来进行字符串的匹配,其一般格式:[NOT] LIKE '<匹配串>' [ESCAPE
'<换码字符>'].其含义是查找指定的属性列值与<匹配串>相匹配的元组。通配符:%(任意长度字符,长度>=0)或_
(任意单个字符);ESCAPE:说明紧跟在换码字符后面的字符不在有通配符的属性,转义为普通的字符。
带有ANY或ALL谓词的子查询:
|
谓词
|
描述
|
|
> ANY
|
大于子查询结果中的某个值
|
|
> ALL
|
大于子查询结果中的所有值
|
|
< ANY
|
小于子查询结果中的某个值
|
|
< ALL
|
小于子查询结果中的所有值
|
|
>= ANY
|
大于等于子查询结果中的某个值
|
|
>= ALL
|
大于等于子查询结果中的所有值
|
|
<= ANY
|
小于等于子查询结果中的某个值
|
|
<= ALL
|
小于等于子查询结果中的所有值
|
|
= ANY
|
等于子查询结果中的某个值
|
|
= ALL
|
等于子查询结果中的任何一个值
|
|
!= (或<>) ANY
|
不等于子查询结果中的某个值
|
|
!= (或<>) ALL
|
不等于子查询结果中的任何一个值
|
ANY,ALL谓词与集函数及IN谓词的等价转换关系:
|
|
=
|
<>或!=
|
<
|
<=
|
>
|
>=
|
|
ANY
|
IN
|
--
|
<MAX
|
<=MAX
|
>MIN
|
>=MIN
|
|
ALL
|
--
|
NOT IN
|
<MIN
|
<=MIN
|
>MAX
|
>=MAX
|
带有EXISTS谓词的子查询:
带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值"TRUE"或逻辑假值"FALSE".
集合查询:
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可以进行集合操纵。集合操纵主要包括并操纵UNION、交操纵INTERSECT和差操纵MINUS。使用UNION将多个查询结果合并起来时,系统会自动去掉重复元组。注意,参加UNION操纵的各结果表的列数必须相同;对应项的数据类型也必须相同。
集合函数:
|
函数名称
|
描述
|
|
COUNT( [DISTINCT | ALL] *)
|
统计元组个数
|
|
COUNT( [DISTINCT | ALL] <column_name>)
|
统计一列中值的个数
|
|
SUM( [DISTINCT | ALL] <column_name>))
|
计算一列值的总和(此列必须是数值型)
|
|
AVG( [DISTINCT | ALL] <column_name>))
|
计算一列值的平均值
|
|
MAX( [DISTINCT | ALL] <column_name>))
|
求一列值中的最大值
|
|
MIN( [DISTINCT | ALL] <column_name>))
|
求一列值中的最小值
|
浙公网安备 33010602011771号