mysql三表联查sql语句_SQL三表连接查询与集合的并、交、差运算查询
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三表连接查询与集合的并、交、差运算查询相关推荐
- MySQL数据库高级SQL语句(三)
MySQL数据库高级SQL语句 SELECT TRIM 连接查询 CREATE VIEW UNION 交集值 无交集值 CASE SELECT TRIM SELECT TRIM (位置 '想移除掉的字 ...
- php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...
- MySQL数据库:SQL语句
MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...
- laravel打印sql语句_SQL语句为什么慢?索引为什么失效?
为什么你写的sql查询慢?为什么你建的索引常失效?通过本篇内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义.助你了解索引, ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- MySQL数据库的SQL语句
MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...
- MySQL 简介及SQL 语句
MySQL 简介及SQL 语句 一.数据库概述 1.数据库的分类 1)区别 2.MySQL 概述 3.MySQL 存储原理 二.部署 MySQL 数据库 1.安装 MySQL 数据库 2.优化调整 M ...
- Python中Mysql数据库的sql语句参数传递问题
在Python中, 通过pymysql库连接Mysql数据库的sql语句参数传递时需要注意: mysql的sql语句的字符串格式化不是标准的python的字符串格式化, 在python中无论字符串,数 ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- 1.MySQL数据库 2.SQL语句
01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...
最新文章
- 个人中心数据接口的开发
- 【转】QT事件传递与事件过滤器
- 不给编制,非升即走,青年科学家该何去何从?
- 這個日本味超濃的建築竟然是台灣的小學
- 机器学习笔记:线性回归
- 通过SSH克隆远程仓库(GitLab)到本地
- GDCM:DICOM文件转储图像标题信息的测试程序
- Go 如何实现热重启
- 在oracle中的日期类型与String类型
- php项目怎么分配,php项目目录的合理划分和Pipeline 组件的使用场景
- 两图说明 java 开发工具中启动类参数都是干嘛的
- Linq连接查询之左连接、右连接、内连接、全连接、交叉连接、Union合并、Concat连接、Intersect相交、Except与非查询...
- 解决 vs2003 无法启动调试 没有正确安装调试器
- 使用jdk提示Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
- 计算机二级excel经典操作题,计算机二级office经典题库
- c语言电话订餐管理系统
- Ubuntu 18安装腾达u12 无线网卡驱动
- 中国裁判文书网爬虫分析
- cpu飙升 死循环_CPU飙升问题的解决实例
- 【Atheros】minstrel速率调整算法源码走读
热门文章
- 计算机常用的内存是rom,手机内存和电脑内存是一样的吗?智能硬件常用的ROM和RAM详解...
- matlab gradient函数原理
- 计算机专业英语谐音大全,英语单词谐音记忆法汇总整理
- web前端开发期末大作业 ——个人主页(可自取源码)
- 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
- 谈谈Mysql 字符串连接 CONCAT CONCAT_WS GROUP_CONCAT区别及使用场景
- 基于改进U-GAT-IT的人像手绘风格转换系统(源码&教程)
- 决不放弃--实现人生的目标
- MySQL - MySQL 8.0(二)基本操作:对象
- 最新章节 第138章 量子生物计算机,生生不息的世界