use db_sqlserver2

select 姓名, 工资, 面积, 金额, (工资+金额/1000) as 实发工资 from 职工,仓库, 订购单

where 职工.职工号=订购单.职工号 and 职工.仓库号=仓库.仓库号

2:

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

3:

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

4:

select 姓名, 工资, 城市, (select AVG(工资) from 职工) as 平均工资 , (工资-(select AVG(工资) 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 多表连接产生的新表 group by 仓库号;

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

select 仓库号, AVG(金额) as 平均销售金额, MAX(金额) as 最大销售金额, MIN(金额) as 最小销售金额,

(MAX(金额) - MIN(金额)) as 最大金额与最小金额之差 into 分组查询产生的新表

from 多表连接产生的新表 group by 仓库号;

select * from 分组查询产生的新表

6: 内连接查询(inner join)

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

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

多表的内连接查询

select 城市,面积, 姓名, 工资, 金额 from 仓库

inner join 职工 on 职工.仓库号=仓库.仓库号

inner join 订购单 on 职工.职工号=订购单.职工号

and 工资>1800 and 面积<1000 and 金额 != 16600

7:左连接查询(left join)

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

select 姓名, 城市 from 仓库

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

select 城市, 面积, 姓名, 工资, 金额 from 仓库

left join 职工 on 职工.仓库号 = 仓库.仓库号

left join 订购单 on 职工.职工号=订购单.职工号

and 工资>1800 and 面积<1000 and 金额!=16600

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

8:右连接查询

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

select 姓名, 城市 from 仓库

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

select 城市, 面积, 姓名, 工资, 金额 from 仓库

right join 职工 on 职工.仓库号=仓库.仓库号

right join 订购单 on 职工.职工号=订购单.职工号

and 工资>1500 and 面积<1000 and 金额!=16600

select 城市, 面积, 姓名, 工资, 金额 from 仓库

right join 职工 on 职工.仓库号=仓库.仓库号

right join 订购单 on 职工.职工号=订购单.职工号

where 工资>1500 and 面积<1000 and 金额!=16600

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

9:全连接查询

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

select 姓名,城市 from 仓库 full join 职工 on 职工.仓库号=仓库.仓库号 and 城市 is not null and

姓名 like '%王%';

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

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

10:并运算(union)

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

select 仓库号 from 仓库 where 城市='北京'

union

select 仓库号 from 职工 where 工资>2000

select 仓库号 from 仓库 where 城市='北京'

union

select 仓库号 from 职工 where 工资>2000

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

使用union all 保留重复行

select 仓库号 from 仓库 where 城市='北京'

union all

select 仓库号 from 职工 where 工资>2000

11:交运算(intersect)

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

select 仓库号 from 仓库 where 城市='北京'

intersect

select 仓库号 from 职工 where 工资>2000

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

12:差运算(except)

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

select 仓库号 from 仓库 where 城市='北京'

except

select 仓库号 from 职工 where 工资>2900

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

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

  1. MySQL数据库高级SQL语句(三)

    MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...

  2. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  3. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

  4. laravel打印sql语句_SQL语句为什么慢?索引为什么失效?

    为什么你写的sql查询慢?为什么你建的索引常失效?通过本篇内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义.助你了解索引, ...

  5. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  6. MySQL数据库的SQL语句

    MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...

  7. MySQL 简介及SQL 语句

    MySQL 简介及SQL 语句 一.数据库概述 1.数据库的分类 1)区别 2.MySQL 概述 3.MySQL 存储原理 二.部署 MySQL 数据库 1.安装 MySQL 数据库 2.优化调整 M ...

  8. Python中Mysql数据库的sql语句参数传递问题

    在Python中, 通过pymysql库连接Mysql数据库的sql语句参数传递时需要注意: mysql的sql语句的字符串格式化不是标准的python的字符串格式化, 在python中无论字符串,数 ...

  9. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  10. 1.MySQL数据库 2.SQL语句

    01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...

最新文章

  1. 个人中心数据接口的开发
  2. 【转】QT事件传递与事件过滤器
  3. 不给编制,非升即走,青年科学家该何去何从?
  4. 這個日本味超濃的建築竟然是台灣的小學
  5. 机器学习笔记:线性回归
  6. 通过SSH克隆远程仓库(GitLab)到本地
  7. GDCM:DICOM文件转储图像标题信息的测试程序
  8. Go 如何实现热重启
  9. 在oracle中的日期类型与String类型
  10. php项目怎么分配,php项目目录的合理划分和Pipeline 组件的使用场景
  11. 两图说明 java 开发工具中启动类参数都是干嘛的
  12. Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询...
  13. 解决 vs2003 无法启动调试 没有正确安装调试器
  14. 使用jdk提示Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
  15. 计算机二级excel经典操作题,计算机二级office经典题库
  16. c语言电话订餐管理系统
  17. Ubuntu 18安装腾达u12 无线网卡驱动
  18. 中国裁判文书网爬虫分析
  19. cpu飙升 死循环_CPU飙升问题的解决实例
  20. 【Atheros】minstrel速率调整算法源码走读

热门文章

  1. 计算机常用的内存是rom,手机内存和电脑内存是一样的吗?智能硬件常用的ROM和RAM详解...
  2. matlab gradient函数原理
  3. 计算机专业英语谐音大全,英语单词谐音记忆法汇总整理
  4. web前端开发期末大作业 ——个人主页(可自取源码)
  5. 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
  6. 谈谈Mysql 字符串连接 CONCAT CONCAT_WS GROUP_CONCAT区别及使用场景
  7. 基于改进U-GAT-IT的人像手绘风格转换系统(源码&教程)
  8. 决不放弃--实现人生的目标
  9. MySQL - MySQL 8.0(二)基本操作:对象
  10. 最新章节 第138章 量子生物计算机,生生不息的世界