SELECT语句基本的语法如下:
SELECT * | <列名 | 列表达式>[,<列名 | 列表达式>]……
FROM <表名或视图名>[,<表名或视图名>]……
[ WHERE <行条件表达式> ]
[ GROUP BY <分组列名1][,<分组列名2>]…… [ HAVING <组条件表达式> ] ]
[ ORDER BY <排序列名1 [ ASC| DESC ]> [,<排序列名2 [ ASC| DESC ]>]……]
2.3.1 基本查询
1.SELECT子句的规定
SELECT子句用于描述输出值的列名或表达式,其形式如下:
SELECT [ ALL | DISTINCT] * | <列名或列名表达式序列>
DISTINCT选项表示输出无重复结果的记录;ALL选项是默认的,表示输出所有记录,包括重复记录。
* 表示选取表中所有的字段。
2.使用WHERE子句指定查询条件
运算符名称 符号及格式 说 明
算术比较判断 <表达式1> θ <表达式2>
θ代表的符号有:<、<=、>、>=、<>或!=、= 比较两个表达式的值
逻辑比较判断 <比较表达式1> θ <比较表达式2>
θ代表的符号按其优先级由高到低的顺序为:
NOT、AND、OR 两个比较表达式进行非、与、或的运算
之间判断 <表达式> [NOT] BETWEEN <值1> AND <值2> 搜索(不)在给定范围内的数据
字符串模糊判断 <字符串> [NOT] LIKE <匹配模式> 查找(不)包含给定模式的值
空值判断 <表达式> IS [NOT] NULL 判断某值是否为空值
之内判断 <表达式> IN (<集合>) 判断表达式的值是否在集合内
3、 分组查询
聚合函数
函 数 说 明
COUNT(*)
COUNT(<列名>) 计算记录的个数
对一列中的值计算个数
SUM(<列名>) 求某一列值的总和
AVG(<列名>) 求某一列值的平均值
MAX(<列名>) 求一列值的最大值
MIN(<列名>) 求一列值的最小值
使用聚合函数时,需要注意以下几点:
聚合函数只能出现在所查询的列、ORDER BY子句、HAVING子句中,而不能出现在WHERE子句、GROUP BY子句中。
除了COUNT(*)之外,其他聚合函数(包括COUNT(<列名>))都忽略对列值为NULL值的统计。
4.使用GROUP BY子句
1)按单列分组
【例2-24】查询emp表中每个部门的平均工资和最高工资,并按部门编号升序排序。
SELECT deptno,AVG(sal) 平均工资,MAX(sal) 最高工资 FROM emp
GROUP BY deptno
ORDER BY deptno;
2)按多列分组
【例2-25】查询emp表中每个部门、每种岗位的平均工资和最高工资。
SELECT deptno,job,AVG(sal) 平均工资,MAX(sal) 最高工资 FROM emp
GROUP BY deptno,job
ORDER BY deptno;
5.使用HAVING子句
【例2-26】查询部门编号在30以下的各个部门的部门编号、平均工资,要求只显示平均工资大于等于2000的信息。
SELECT deptno,AVG(sal) 平均工资 FROM emp
WHERE deptno<30 GROUP BY deptno HAVING AVG(sal)>=2000;
HAVING后的AVG(sal)也可用查询列表中的别名平均工资来代替。
SELECT deptno,AVG(sal) 平均工资 FROM emp WHERE deptno<30
GROUP BY deptno
HAVING 平均工资>=2000;
6. 子查询
子查询的执行步骤如下:
(1)首先取外层查询中表的第一个记录,根据它与内层查询相关的列值进行内层查询的处理(如WHERE子句的处理),若处理结果为真,则取此记录放入结果集。
(2)然后再取外层表的下一个记录进行内层查询的处理。
(3)重复这一过程,直至外层查询中表的全部记录处理完为止。
1)返回单值的子查询
单值子查询向外层查询只返回一个值。
2)返回多值的子查询
(1)使用IN操作符的多值子查询
比较运算符IN的含义为子查询返回列表中的任何一个。IN操作符比较子查询返回列表中的每一个值,并且显示任何相等的数据行。
(2)使用ALL操作符的多值子查询
ALL操作符比较子查询返回列表中的每一个值。<ALL:为小于最小的;>ALL:为大于最大的。
(3)使用ANY操作符的多值子查询
ANY操作符比较子查询返回列表中每一个值。<ANY:为小于最大的;>ANY:为大于最小的。
(4)使用EXISTS操作符的多行查询
EXISTS操作符比较子查询返回列表的每一行。使用EXISTS时应注意:外层查询的WHERE子句格式为:WHERE EXISTS;在内层子查询中必须有WHERE子句,给出外层查询和内层子查询所使用表的连接条件。
7.合并查询结果
当两个SELECT查询结果的结构完全一致时,可以对这两个查询执行并的运算,运算符为UNION。
UNION的语法格式为:
SELECT 语句1
UNION [ALL]
SELECT 语句2
UNION在连接数据表的查询结果时,结果中会删除重复的行,所有返回的行都是唯一的。使用UNION ALL的时候,结果中不会删除重复行。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交