MySQL-第十篇多表连接查询
1、SQL92规范、SQL99规范
2、广义笛卡尔积,多表之间没有任何连接条件,得到的结果将是N x M条记录。
3、SQL92中的左外连接、右外连接,连接符有(+或*),放在连接条件那一边就叫做左或右外连接。
4、SQL99的连接查询
1》交叉连接(cross join):就是广义笛卡尔积,不需要任何连接条件。
2》自然连接(natural join):看是没有连接条件,实际以两个表中所有同名列作为连接条件,如果没有同名列则变成了交叉连接。
3》using子句连接:using子句可以指定一列或者多列,用于显式指定两个表中的同名列作为连接条件。两个表必须都要有同名列,否则出错。
4》on子句连接:连接条件。
5、左、右、全连接:left[outer] join、right[outer] join、full[outer] join,通过on子句来指定,既可以是等值连接,又可以是非等值连接。
左连接:左表所有记录都会被查出。
右连接:右表所有记录都会被查出。
全连接:SQL99将全外连接两个表中所有不满足连接条件的记录全部列出。(MySQL没有全连接)
6、子查询
子查询就是在查询语句中嵌套另一个查询,子查询支持多层嵌套查询。
将子查询当成数据表的用法,实际是把它作为一个视图使用,也叫行内视图。
如果子查询返回多个值,在where子句中比较,可以使用in、any、all等关键字。
any、all可以与>、>=、<、<、<=、<>、=等运算符结合使用。意思分别是其中任意一个、其中所有。=any相当于in的用法。<any小于最大值。>any大于最小值。<all小于最小值。>all大于最大值。
7、集合运算:交intersect、并union、差minus
能进行集合运算的两个结果集,必须满足:
==>两个结果集包含的数据列数必须相等
==>两个结果集包含的数据列的数据类型必须一致。
1》union并运算
格式:
select 语句 union select 语句
2》minus差运算(MySQL并不支持)
格式:
select 语句 minus select 语句
select c_1,c_2 from xxx
where (c_1,c_2)
not in
(select b_1,b_2 from yyy);
3》intersect交运算(MySQL并不支持)
格式:
select 语句 inserct select 语句
select c_1,c_2 from xxx
join
yyy
on (c_1=b_1 and c_2=b_2);
MySQL-第十篇多表连接查询的更多相关文章
- mysql自关联和多表连接查询
自关联操作 多表连接查询 inner join 内查询 left join 左查询 right join 右查询 ...
- MySQL中基本的多表连接查询教程
一.多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT * FROM table1 CROSS JOIN ...
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- Mysql表连接查询
原文地址: https://www.cnblogs.com/qiuqiuqiu/p/6442791.html 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等 ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门 ...
- MySQL数据库:多表连接查询
多表连接查询 注意:使用连接技术建议将表经行重命名! # explain 检索连接是否达标 # 内连接 # 语法1 from 表1 inner join 表2 on 主键字段=外键字段 [where ...
- mysql--多表连接查询
一.多表连接查询 SELECT 字段列表 FROM 表1 INNER|LEFT|RIGHT JOIN 表2 ON 表1.字段 = 表2.字段; 1.交叉连接:不适用任何匹配条件.生成笛卡尔积 sele ...
随机推荐
- visual studio中配置opencv
第1步附加包含目录:H:\software\programming\opencv\opencv\build\include 第2步附加库目录:H:\software\programming\openc ...
- svn 命令行使用总结
1.上传项目到SVN服务器上 svn import project_dir(本地项目全路径) http://192.168.1.242:8080/svn/IOS/Ben/remote_dir(svn项 ...
- NTC电阻Rt与温度T关系
NTC电阻Rt与温度T公式如下: Rt=10000*exp(3950*(1/(273.15+T)-1/(273.15+25))). 例:0摄氏度时,电阻为33620.6037214357 欧姆 Rt= ...
- bzoj4025 二分图 LCT + 最小生成树
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4025 题解 貌似这道题有一个非常简单的做法是线段树分治+并查集. 可是我是为了练 LCT 来做 ...
- RPC vs REST
RPC vs REST 另外,由于Dubbo是基础框架,其实现的内容对于我们实施微服务架构是否合理,也需要我们根据自身需求去考虑是否要修改,比如Dubbo的服务调用是通过RPC实现的,但是如果仔细拜读 ...
- @RequestBody、@RequestParam、@PathVariable区别与使用场景
由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口.接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错:在post ...
- 基于vue上传base64图片,通过canvas压缩base64
其实和vue关系不大,和我们之前做上传压缩性质是一样的 当然下面的代码是没有处理ios横屏拍照的bug的 有兴趣的可以多搜一下 网上都有相应的解答 .. var that = this if (e. ...
- margin与padding的区别是什么?
margin与padding的区别是什么? 目录 1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 什么是margin 什么 ...
- __new__与__init__的区别
__new__ : 控制对象的实例化过程 , 在__init__方法之前调用 __init__ : 对象实例化对象进行属性设置 class User: def __new__(cls, *args, ...
- C#笔试总结
题一: 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒.(C#语言)要求: <1>.构造出Cat.Mouse.Master三个类,并能使程序运行 ...