1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > mysql三表联查sql语句_SQL三表连接查询与集合的并 交 差运算查询

mysql三表联查sql语句_SQL三表连接查询与集合的并 交 差运算查询

时间:2018-12-22 11:02:45

相关推荐

mysql三表联查sql语句_SQL三表连接查询与集合的并 交 差运算查询

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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。