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 ...
随机推荐
- Redis 启动警告解决
Redis 启动警告解决[转] [root@centos224]# service redisd start 21985:M 24 Nov 04:07:20.376 * Increased maxim ...
- [REPRINT]Properties vs. Getters and Setters
http://www.python-course.eu/python3_properties.php Our new class means breaking the interface. The a ...
- Python自动化运维技术与最佳实现
第一章 系统基础信息模块详解 系统基础信息采集模块最为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的质量以及用户的 ...
- for-in语句和with语句、break和continue语句
for-in语句 for-in语句是一种精准迭代语句,可以用来枚举对象的属性,用以遍历一个对象的全部属性. for…in声明用于对数组或者对象的属性进行循环操作: for…in循环中的代码每执行一次, ...
- HTML5基础内容(二)
HTML(HyperText Markup Language)超文本标记语言 一.HTML注释 元素就是标签,标签就是元素. 注释中的内容不会在页面中显示,但是可以在源码中看到. 可以通过编写注释来对 ...
- mybatis insert update delete返回都是整型 0,1,增,删,改要提交事物
mybatis insert update delete返回都是整型 0,1, 没有扔 增,删,改要提交事物
- SPOJ 2798 QTREE3 - Query on a tree again!
原oj题面 Time limit 2000 ms Memory limit 1572864 kB Code length Limit 50000 B OS Linux Language limit A ...
- 大数据与mysql
mysql优化:……
- 记一下今天上下班学的Thread
1 Thread 默认为前台线程,即主程序退出后,线程还可以继续(曾经就掉入这个坑中,使用两线程分别进行UDP收发,结果发线程结束了退出方法,收线程还在继续) 2 Thread 没有可以暂停,可以重新 ...
- 3D Computer Grapihcs Using OpenGL - 04 First Triangle
本节将绘制一个三角形 先看最终代码: MyGlWindow.cpp: #include <gl\glew.h> #include "MyGlWindow.h" void ...