1. use db_sqlserver2
  2. select 姓名, 工资, 面积, 金额, (工资+金额/1000) as 实发工资 from 职工,仓库, 订购单
  3. where 职工.职工号=订购单.职工号 and 职工.仓库号=仓库.仓库号

2:

  1. select 姓名,工资,金额 from 职工,订购单 where 姓名 like '%平%' and 职工.职工号 = 订购单.职工号 order by 工资 desc

3:

  1. select 姓名,工资,金额 from 职工,订购单 where 姓名 like '%平%' and 职工.职工号 = 订购单.职工号 order by 工资 desc, 金额 desc

4:

  1. select 姓名, 工资, 城市, (select AVG(工资) from 职工) as 平均工资 , (工资-(select AVG(工资) from 职工)) as 与平均工资之差
  2. from 职工, 仓库 where 仓库.仓库号=职工.仓库号

5:带保存功能的多表连接查询

在SQL语句中,利用into语句可以把查询到的结果保存成一张新表,然后再对新表进行数据信息查询。

  1. select 仓库.仓库号, 城市, 面积, 姓名, 工资, 金额 into 多表连接产生的新表 from 仓库, 职工, 订购单
  2. where 仓库.仓库号=职工.仓库号 and 职工.职工号=订购单.职工号
  1. select * from 多表连接产生的新表

//查看不同仓库中的所有职工的仓库号、平均销售金额、最大销售金额、最小销售金额、最大销售金额与最小销售金额之差的信息

  1. select 仓库号, AVG(金额) as 平均销售金额, MAX(金额) as 最大销售金额, MIN(金额) as 最小销售金额,
  2. (MAX(金额) - MIN(金额)) as 最大金额与最小金额之差 from 多表连接产生的新表 group by 仓库号;

可以把分组查询结果再生成一张新表

  1. select 仓库号, AVG(金额) as 平均销售金额, MAX(金额) as 最大销售金额, MIN(金额) as 最小销售金额,
  2. (MAX(金额) - MIN(金额)) as 最大金额与最小金额之差 into 分组查询产生的新表
  3. from 多表连接产生的新表 group by 仓库号;
  4. select * from 分组查询产生的新表

6: 内连接查询(inner join)

使用比较运算符对表之间的某些数据进行比较,并列出这些表中与连接条件相匹配的数据行。

  1. select 姓名, 城市 from 仓库 inner join 职工 on 职工.仓库号=仓库.仓库号

多表的内连接查询

  1. select 城市,面积, 姓名, 工资, 金额 from 仓库
  2. inner join 职工 on 职工.仓库号=仓库.仓库号
  3. inner join 订购单 on 职工.职工号=订购单.职工号
  4. and 工资>1800 and 面积<1000 and 金额 != 16600

7:左连接查询(left join)

除满足连接条件的记录显示外,第一张表中不满足条件的记录也显示在结果集中。

  1. select 姓名, 城市 from 仓库
  2. left join 职工 on 职工.仓库号=仓库.仓库号 and 城市 is not null and 姓名 like '%王%'

  1. select 城市, 面积, 姓名, 工资, 金额 from 仓库
  2. left join 职工 on 职工.仓库号 = 仓库.仓库号
  3. left join 订购单 on 职工.职工号=订购单.职工号
  4. and 工资>1800 and 面积<1000 and 金额!=16600

在第一个left join左连接中,第一张表是仓库表,第二张表是职工表,在第二个left join左连接中,第一张表是职工表,第二张表是订购单表

8:右连接查询

除满足连接条件的记录显示外,第二张表中不满足条件的记录也显示在查询结果集中

  1. select 姓名, 城市 from 仓库
  2. right join 职工 on 职工.仓库号=仓库.仓库号 where 城市 is not null and 姓名 like '%王%'

  1. select 城市, 面积, 姓名, 工资, 金额 from 仓库
  2. right join 职工 on 职工.仓库号=仓库.仓库号
  3. right join 订购单 on 职工.职工号=订购单.职工号
  4. and 工资>1500 and 面积<1000 and 金额!=16600

  1. select 城市, 面积, 姓名, 工资, 金额 from 仓库
  2. right join 职工 on 职工.仓库号=仓库.仓库号
  3. right join 订购单 on 职工.职工号=订购单.职工号
  4. <span style="color:#ff0000;">where</span> 工资>1500 and 面积<1000 and 金额!=16600

把and关键字换为where关键字后的效果图,会发现那些无用的数据没有了

9:全连接查询

除满足连接条件的记录显示外,两张表中的不能满足条件的记录也显示在查询结果集中

  1. select 姓名,城市 from 仓库 full join 职工 on 职工.仓库号=仓库.仓库号 and 城市 is not null and
  2. 姓名 like '%王%';

集合的交、并、差运算查询

为了进行并、交、差运算,要求运算的两个查询结果具有相同的字段个数,并且对应的字段的值要出自同一个值域,即具有相同的数据类型和取值范围

10:并运算(union)

主要将两个或者更多个查询的结果组合为单个结果集,该结果集包含联合查询中的全部查询的全部行

  1. select 仓库号 from 仓库 where 城市='北京'
  2. union
  3. select 仓库号 from 职工 where 工资>2000
  1. select 仓库号 from 仓库 where 城市='北京'
  2. union
  3. select 仓库号 from 职工 where 工资>2000
  4. select distinct 仓库.仓库号 from 仓库, 职工 where 仓库.仓库号=职工.仓库号 and (城市='北京' or 工资>2000)

使用union all 保留重复行

  1. select 仓库号 from 仓库 where 城市='北京'
  2. union all
  3. select 仓库号 from 职工 where 工资>2000

11:交运算(intersect)

可以将两个select语句的查询结果通过交运算合并成一个查询结果

  1. select 仓库号 from 仓库 where 城市='北京'
  2. intersect
  3. select 仓库号 from 职工 where 工资>2000
  1. select distinct 仓库.仓库号 from 仓库, 职工 where 城市='北京' and 仓库.仓库号=职工.仓库号 and 工资>2000

12:差运算(except)

可以计算两个select查询结果之间的数据差,即返回在一个查询结果中存在,但在另一个查询结果中不存在的所有行。

  1. select 仓库号 from 仓库 where 城市='北京'
  2. except
  3. select 仓库号 from 职工 where 工资>2900
  1. select 仓库号 from 仓库 where 城市='北京' and 仓库号 not in(select 仓库号 from 职工 where 工资>2900)

SQL三表连接查询与集合的并、交、差运算查询的更多相关文章

  1. SQL表连接查询(inner join、full join、left join、right join)

    SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...

  2. 【SQL查询】集合查询之INTERSECT

    [SQL查询]集合查询之INTERSECT 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

  3. SQL表连接查询

    SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...

  4. 数据库——SQL数据连接查询

    连接查询 查询结果或条件涉及多个表的查询称为连接查询SQL中连接查询的主要类型     广义笛卡尔积     等值连接(含自然连接)     自身连接查询     外连接查询 一.广义笛卡尔积 不带连 ...

  5. SQL基础--查询之四--集合查询

    SQL基础--查询之四--集合查询

  6. 浅谈sql之连接查询

    SQL之连接查询 一.连接查询的分类 sql中将连接查询分成四类: 内链接 外连接 左外连接 右外连接 自然连接 交叉连接 二.连接查询的分类 数据库表如下: 1.学生表 2.老师表 3.班级表 表用 ...

  7. 【SQL】各取所需 | SQL JOIN连接查询各种用法总结

    前面 在实际应用中,大多的查询都是需要多表连接查询的,但很多初学SQL的小伙伴总对各种JOIN有些迷糊.回想一下,初期很长一段时间,我常用的似乎也就是等值连接 WHERE 后面加等号,对各种JOIN也 ...

  8. Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询

    内连接查询 内连接与SqL中inner join一样,即找出两个序列的交集 Model1Container model = new Model1Container(); //内连接 var query ...

  9. Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

    count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age ...

随机推荐

  1. 一次作业过程及其问题的记录:mysql建立数据库、建表、查询和插入等

    前言 这次的作业需要我建立一个小的数据库. 这次作业我使用了mysql,进行了建库.建表.查询.插入等操作. 以下是对本次作业相关的mysql操作过程及过程中出现的问题的记录. 正文 作业中对数据库的 ...

  2. 【JavaScript】要点知识的个人总结(1)

    米娜桑,哦哈哟~ 该篇章主要基于链接中的参考内容和代码测试得出的结论,面向具有一定基础的前端开发者.如有错误,请指出与包涵. 原型链的解释 https://juejin.im/post/5aa78fe ...

  3. CTR学习笔记&代码实现2-深度ctr模型 MLP->Wide&Deep

    背景 这一篇我们从基础的深度ctr模型谈起.我很喜欢Wide&Deep的框架感觉之后很多改进都可以纳入这个框架中.Wide负责样本中出现的频繁项挖掘,Deep负责样本中未出现的特征泛化.而后续 ...

  4. Aplayer搭配Metingjs音乐插件的使用

    Aplayer搭配MetingJS音乐插件的使用 1. Aplayer和MetingJ的介绍 Aplayer官网文档:https://aplayer.js.org/#/ Metingjs官网文档:ht ...

  5. New!一只菜鸟的学习之路....

    今天拥有了自己的博客,希望在这里记录下自己成长的点点滴滴! 本博客主要记录: 1.在学习过程中遇到的问题及后续的解决办法: 2.技术上的困难,希望路过的大佬指点一二: 3.分享一些实用的技术材料: 4 ...

  6. python爬取疫情数据详解

    首先逐步分析每行代码的意思: 这是要引入的东西: from os import path import requests from bs4 import BeautifulSoup import js ...

  7. 彻底理解Java对象与引用

    本文是最近在复习Java的时候读到的来自iteye博客的一篇文章,个人觉得写的很好,但貌似楼主许久没有维护该博客,害怕将来想回顾的时候找不到此文章,故在此重写文章,并修改了一些排版,有助于以后的学习查 ...

  8. leetcode 30 day challenge Counting Elements

    Counting Elements Given an integer array arr, count element x such that x + 1 is also in arr. If the ...

  9. jmeter 信息头Bearer

    1.数据规则 2.登录时获取token信息 3.正则表达式获取token值 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (2)正则表达式: ( ...

  10. 子域名爆破工具:OneForALL

    0x00 简介 OneForAll是一款功能强大的子域收集工具 0x01 下载地址 码云: https://gitee.com/shmilylty/OneForAll.git Github: http ...