Mysql学习之路05-连接查询
来源:互联网 发布:centos 挂载u盘 编辑:程序博客网 时间:2024/05/29 17:34
转载于http://blog.csdn.net/pacosonswjtu/article/details/51396622
以下部分文字描述转自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html
Attention)left和right是外连接,Inner是内连接。(left join=left outer join,right join=right outer join)
【0】README
0.1)本文旨在reviewMySQL的自然联结+外部联结(左外连接,右外连接)+内部联结 的相关知识;
【1】自然联结
1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列只返回一次;(干货——自然联结的作用就是排除多次出现,使每个列只返回一次)
看个荔枝)
自然连接怎么连接?
R表 S表A B C D B E1 a 3 2 c 72 b 6 3 d 53 c 7 1 a 3 <span style="font-family: SimSun; background-color: rgb(255, 255, 255);"> </span>
step1)自然连接是第一步R×S结果是(就是用R表中的每一项乘以S表中的每一项):A B C D B E1 a 3 2 c 71 a 3 3 d 51 a 3 1 a 32 b 6 2 c 72 b 6 3 d 52 b 6 1 a 33 c 7 2 c 73 c 7 3 d 5 3 c 7 1 a 3
step2)选择R.B=S.B的记录:
R.A R.B R.C S.D S.B S.E1 a 3 1 a 3 3 c 7 2 c 7
step3)然后去掉相同且值也相同的B属性,最后R∞S的值为:
A B C D E 1 a 3 1 3 3 c 7 2 7
以下部分文字描述转自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html
【supplement】测试前的准备
1)假设有A,B两个表:
// 表A记录如下aID aNum 1 a2010 2 a2011 3 a2012 4 a2012 5 a2013 // 表B记录如下: bID bName 1 b2010 2 b2011 3 b2012 4 b2013 8 b2014
【2】left join (左外联结)sql语句如下:
select*from A left join B on A.aID = B.bID
对以上结果的分析(Analysis)
A1)left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
A2)换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL;
【3】right join (右外联结)
【4】内联结sql语句如下: select*from A innerjoin B on A.aID = B.bID
对以上结果的分析(Analysis):
A1)很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
A2)LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFTJOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
A3)语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
A3.1)说明:table1, table2参数用于指定要将记录组合的表的名称。
A3.2)field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
A3.3)compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
A3.4)如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。
Attention)left和right是外连接,Inner是内连接。(left join=left outer join,right join=right outer join)
阅读全文
0 0
- Mysql学习之路05-连接查询
- Mysql学习之连接查询
- mysql学习之连接查询
- 后台学习之路(四)-mysql(子查询与连接)
- mysql学习笔记之连接查询与子查询
- MYSQL之连接查询
- MySQL之连接查询
- MySQL之连接查询
- MySql学习之查询
- MySql学习 - 查询/子查询/连接查询/联合查询
- Hive学习之连接查询
- Mysql学习之路07-子查询
- mysql之union联合查询、子查询、连接查询
- MySQL学习笔记9:连接查询
- MySQL学习笔记9:连接查询
- MySQL学习笔记-子查询和连接
- Mysql学习历程(12)-连接查询
- MySQL之SQL的连接查询
- Leetcode-Length of Last Word
- 圆
- 二叉树的递归和非递归遍历方法
- 浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
- 多重背包二进制优化模板
- Mysql学习之路05-连接查询
- 仿真互动粒子(未完成)
- A除以B (20)
- SWIFT网络报文传递流程
- STL源码分析之deque,双端队列(一)
- nignx 负载均衡的几种算法介绍
- 全概率公式、贝叶斯公式推导过程
- SSH更新表中某个字段值
- Unity_HTC Vive(Steam VR)_视角和输入替换