文档介绍:第四章关系数据库语言SQL(2)
本节内容
排序
简单的计算查询
分组与计算查询
利用空值查询-NULL
别名查询
超连接查询
集合的并运算
使用量词和谓词的查询
TOP的用法
排序
对查询结果进行排序格式:
order by 字段1[asc|desc][,字段2[asc|desc]]
工资值升序
全部职工信息
select * from 职工表
order by 工资
asc
例15. 并输出
先按仓库号升序,再按工资升序
全部职工信息
select * from 职工表;
order by 仓库号 asc, 工资 asc
简单的计算查询
count()---计数
sum()---求和
avg()---计算平均值
max()---求最大值
min()---求最小值
SQL不仅具有一般的检索能力,而且还有计算方式的检索,用于计算检索的函数有:
这些函数可以用在select短语中对查询结果进行计算
select count(地址) from 供应商表
4
×
select count(distinct 地址) from 供应商表
select sum(工资) from 职工表
select sum(工资) from 职工表 where 仓库号 in;
(select 仓库号 from 仓库表 where ;
城市="北京" or 城市="上海")
select max(工资) from 职工表 where 仓库号="WH2"
重命名字段名格式:
原字段名(或函数表达式) [as] 新字段名
把例19查询的结果字段名改为最高工资
分组与计算查询
用于分组计算查询的短语是group by
格式:group by 字段1[,字段2][having 条件]
可以按一列或多列分组,还可以用having进一步限定分组的条件。
简单地讲,分组就是把字段值相同的记录在逻辑上放在一起,再对这些记录进行某种计算.
例:计算每个仓库的职工人数
注意分析进行分组的字段
select avg(工资) from 职工表 group by 仓库号
在这个查询中,首先按仓库号字段进行分组,然后再计算每个仓库的平均工资。
至少有两个职工的
每个仓库
平均工资
select 仓库号,avg(工资) from 职工表;
group by 仓库号 having count(职工号)>=2
group by 仓库号
限定分组的条件
having条件的含义是:使分组后的记录满足having条件时才检索,不满足条件则不检索
having子句总是跟在group by子句之后,不可以单独使用。
having 条件
where 条件
限定分组的条件(计算函数)
限定查询的条件
利用空值查询-NULL
尚未确定供应商
select * from 订购单表 where 供应商号 is null
注意:查询空值时要使用is null ,而=null是无效的,因为空值不是一个确定的值,所以不能用"="这样的运算符进行比较。
select * from 订购单表 where ;
供应商号 is not null
别名查询
在连接操作中,经常需要使用关系名作前缀,有时这样显得很麻烦。因此,SQL允许在from短语中为关系名定义别名,格式为:
<关系名> <别名>
select 职工号,城市 from 职工表,仓库表 where ;
工资>1220 and =
select 职工号,城市 from 职工表 a,仓库表 b where ;
工资>1220 and =
超连接查询
select ,职工号,工资,城市,面积;
from 职工表 join 仓库表;
on =
语法格式:
Select …
from 表名 inner join 表名 on 连接条件 where 条件
从以上格式可以看出,它的连接条件在ON短语中给出,而不在WHERE短语中,连接类型在FROM短语中给出