usedb_sqlserver2
select姓名,工资,面积,金额,(工资+金额/1000)as实发工资from职工,仓库,订购单
where职工.职工号=订购单.职工号and职工.仓库号=仓库.仓库号
2:
select姓名,工资,金额from职工,订购单where姓名like'%平%'and职工.职工号=订购单.职工号orderby工资desc
3:
select姓名,工资,金额from职工,订购单where姓名like'%平%'and职工.职工号=订购单.职工号orderby工资desc,金额desc
4:
select姓名,工资,城市,(selectAVG(工资)from职工)as平均工资,(工资-(selectAVG(工资)from职工))as与平均工资之差
from职工,仓库where仓库.仓库号=职工.仓库号
5:带保存功能的多表连接查询
在SQL语句中,利用into语句可以把查询到的结果保存成一张新表,然后再对新表进行数据信息查询。
select仓库.仓库号,城市,面积,姓名,工资,金额into多表连接产生的新表from仓库,职工,订购单
where仓库.仓库号=职工.仓库号and职工.职工号=订购单.职工号
select*from多表连接产生的新表
//查看不同仓库中的所有职工的仓库号、平均销售金额、最大销售金额、最小销售金额、最大销售金额与最小销售金额之差的信息
select仓库号,AVG(金额)as平均销售金额,MAX(金额)as最大销售金额,MIN(金额)as最小销售金额,
(MAX(金额)-MIN(金额))as最大金额与最小金额之差from多表连接产生的新表groupby仓库号;
可以把分组查询结果再生成一张新表
select仓库号,AVG(金额)as平均销售金额,MAX(金额)as最大销售金额,MIN(金额)as最小销售金额,
(MAX(金额)-MIN(金额))as最大金额与最小金额之差into分组查询产生的新表
from多表连接产生的新表groupby仓库号;
select*from分组查询产生的新表
6: 内连接查询(inner join)
使用比较运算符对表之间的某些数据进行比较,并列出这些表中与连接条件相匹配的数据行。
select姓名,城市from仓库innerjoin职工on职工.仓库号=仓库.仓库号
多表的内连接查询
select城市,面积,姓名,工资,金额from仓库
innerjoin职工on职工.仓库号=仓库.仓库号
innerjoin订购单on职工.职工号=订购单.职工号
and工资>1800and面积<1000and金额!=16600
7:左连接查询(left join)
除满足连接条件的记录显示外,第一张表中不满足条件的记录也显示在结果集中。
select姓名,城市from仓库
leftjoin职工on职工.仓库号=仓库.仓库号and城市isnotnulland姓名like'%王%'
select城市,面积,姓名,工资,金额from仓库
leftjoin职工on职工.仓库号=仓库.仓库号
leftjoin订购单on职工.职工号=订购单.职工号
and工资>1800and面积<1000and金额!=16600
在第一个left join左连接中,第一张表是仓库表,第二张表是职工表,在第二个left join左连接中,第一张表是职工表,第二张表是订购单表
8:右连接查询
除满足连接条件的记录显示外,第二张表中不满足条件的记录也显示在查询结果集中
select姓名,城市from仓库
rightjoin职工on职工.仓库号=仓库.仓库号where城市isnotnulland姓名like'%王%'
select城市,面积,姓名,工资,金额from仓库
rightjoin职工on职工.仓库号=仓库.仓库号
rightjoin订购单on职工.职工号=订购单.职工号
and工资>1500and面积<1000and金额!=16600
select城市,面积,姓名,工资,金额from仓库
rightjoin职工on职工.仓库号=仓库.仓库号
rightjoin订购单on职工.职工号=订购单.职工号
where工资>1500and面积<1000and金额!=16600
把and关键字换为where关键字后的效果图,会发现那些无用的数据没有了
9:全连接查询
除满足连接条件的记录显示外,两张表中的不能满足条件的记录也显示在查询结果集中
select姓名,城市from仓库fulljoin职工on职工.仓库号=仓库.仓库号and城市isnotnulland
姓名like'%王%';
集合的交、并、差运算查询
为了进行并、交、差运算,要求运算的两个查询结果具有相同的字段个数,并且对应的字段的值要出自同一个值域,即具有相同的数据类型和取值范围
10:并运算(union)
主要将两个或者更多个查询的结果组合为单个结果集,该结果集包含联合查询中的全部查询的全部行
select仓库号from仓库where城市='北京'
union
select仓库号from职工where工资>2000
select仓库号from仓库where城市='北京'
union
select仓库号from职工where工资>2000
selectdistinct仓库.仓库号from仓库,职工where仓库.仓库号=职工.仓库号and(城市='北京'or工资>2000)
使用union all 保留重复行
select仓库号from仓库where城市='北京'
unionall
select仓库号from职工where工资>2000
11:交运算(intersect)
可以将两个select语句的查询结果通过交运算合并成一个查询结果
select仓库号from仓库where城市='北京'
intersect
select仓库号from职工where工资>2000
selectdistinct仓库.仓库号from仓库,职工where城市='北京'and仓库.仓库号=职工.仓库号and工资>2000
12:差运算(except)
可以计算两个select查询结果之间的数据差,即返回在一个查询结果中存在,但在另一个查询结果中不存在的所有行。
select仓库号from仓库where城市='北京'
except
select仓库号from职工where工资>2900
select仓库号from仓库where城市='北京'and仓库号notin(select仓库号from职工where工资>2900)