【0】README
0.1)本文旨在review MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结 的相关知识;
【1】自然联结
1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列只返回一次;(干货——自然联结的作用就是排除多次出现,使每个列只返回一次)
看个荔枝)

自然连接怎么连接?
R表                S表
A  B  C                     D  B  E
1  a  3                      2  c  7
2  b  6                      3  d  5
3  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       E
1   a     3      2     c       7
1   a     3      3     d       5
1   a     3      1     a       3
2   b     6      2     c       7
2   b     6      3     d       5
2   b     6      1     a       3
3   c     7      2     c       7
3   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.E
1       a       3         1       a       3
3       c       7         2       c       7
step3)然后去掉相同且值也相同的B属性,最后R∞S的值为:
   A     B      C      D       E1     a      3      1        33     c      7      2        7

以下部分文字描述转自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html
【supplement】测试前的准备
1)假设有A,B两个表:

【2】left join  (左外联结)sql语句如下: 
// 表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 
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)

MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结相关推荐

  1. 内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)

    内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积) 先略两个表 首先左连接:SELECT * FROM test1 a LEFT JOIN test2 b ON a.id = b.id ...

  2. 周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,表中没有的课程列值为空的解决方法

    周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号.课程名称.选修人数,表中没有的课程列值为空的解决方法 实验前期准备 course表(课程表) 在其中: c ...

  3. 数据库学习之MySQL (十六)—— SQL99 外连接 左外连接 右外连接 全外连接 交叉连接

    文章目录 外连接 之 左外连接 与 右外连接 为啥要用外连接 全外连接 总结 内连接 外连接 交叉连接 外连接 之 左外连接 与 右外连接 我们先来看个之前的 女神男朋友的案例 传送:数据库学习之My ...

  4. MySQL之左外连接右外连接

    外连接: 假设A和B表进行连接,使用外连接的话, AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表, 当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹 ...

  5. 数据库-左外连接-右外连接

    左外连接 外链接:左外连接.右外连接.全连接.自连接. 左外连接:用左边表去右边表中查询对应记录,不管是否找到,都将显示左边表中全部记录. 即:虽然右表没有香蕉对应的价格,也要把他查询出来. 语法:s ...

  6. SQL 左外连接右外连接(详解)

    两个表: A(id,name) 数据:(1,张三)(2,李四)(3,王五) B(id,name) 数据:(1,学生)(2,老师)(4,校长) 左连接结果: select A.*,B.* from A ...

  7. hive 内连接 左外连接 右外连接 满外连接 左半开连接 交叉连接 多表连接 隐式连接

    目录 hive outline hive 内连接 inner join hive 左外连接 left join hive 右外连接 right join hive 满外连接 full join hiv ...

  8. 等值连接、内连接、左连接(左外连接)、右连接(右外连接)、全连接、笛卡尔积

    UserInfo表: WorkInfo表: 1.等值连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留. 2.内连接 以上可 ...

  9. HIVE 中 内连接 外连接 左外连接 右外连接 全外连接 联合操作

    hive的join操作,只支持等值连接 创建customers和orders表,一对多关系 创建customers表 create table customers(id int,name string ...

  10. Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数

    一.多表查询 什么是多表查询呢? 比如说,一个老师肯定会有不止一个学生,一个学生也会有不止一个老师,这样就存在了一种多对多的关系. 多对多关系表的创建 CREATE DATABASE moreandm ...

最新文章

  1. 【392天】跃迁之路——程序员高效学习方法论探索系列(实验阶段149-2018.03.04)...
  2. sql server管理学习提纲
  3. linux which命令的使用示例
  4. linux忆连软件,linux安装软件方法汇总
  5. java中集合的排序_Java中集合排序的两种方法
  6. Android之基于BaseAdapter和SimpleAdapter的GridView
  7. Python 数据科学手册 5.1 什么是机器学习
  8. python生成.exe文件
  9. 浅谈三层架构 通过这个,+Java开发模式经验。终于相通了,动软到底是为什么这么做...
  10. web.config中的ExtensionlessUrlHandler-Integrated-4.0
  11. linux服务器上使用apache部署静态html网页
  12. java写原生js_[Java教程]原生JS拖拽
  13. 重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
  14. 美国电脑程序员需要考证吗
  15. win10卓越性能模式开启方法
  16. linux 使用shell/python编写钉钉自动监控报警脚本
  17. 电脑录音,教你电脑怎么录音
  18. 汇编实验三:三个有符号数比较大小
  19. 使用微搭搭建天气预报小程序
  20. JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式

热门文章

  1. CF1253E Antenna Coverage
  2. [SDOI2014]旅行
  3. 数据结构之线段树Ⅴ——(李超线段树)Robot,Product Sum,Building Bridges,Jump mission
  4. LOJ洛谷P3225:矿场搭建(割点、点双)
  5. YbtOJ#532-往事之树【广义SAM,线段树合并】
  6. jzoj5698-[gdoi2018day1]密码锁【贪心,差分】
  7. jzoj4017-逃跑【0/1分数规划,线段树,dp】
  8. 线性代数(矩阵、高斯、线性基……)
  9. 2014 ACM/ICPC Asia Regional Xi'an Online
  10. MySQL week()函数