MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
自然连接怎么连接?
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的自然联结+外部联结(左外连接,右外连接)+内部联结相关推荐
- 内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)
内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积) 先略两个表 首先左连接:SELECT * FROM test1 a LEFT JOIN test2 b ON a.id = b.id ...
- 周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,表中没有的课程列值为空的解决方法
周末杂谈:在MYSQL中,添加数据行后,使用右外连接查询所有课程的选修情况,要求列出课程编号.课程名称.选修人数,表中没有的课程列值为空的解决方法 实验前期准备 course表(课程表) 在其中: c ...
- 数据库学习之MySQL (十六)—— SQL99 外连接 左外连接 右外连接 全外连接 交叉连接
文章目录 外连接 之 左外连接 与 右外连接 为啥要用外连接 全外连接 总结 内连接 外连接 交叉连接 外连接 之 左外连接 与 右外连接 我们先来看个之前的 女神男朋友的案例 传送:数据库学习之My ...
- MySQL之左外连接右外连接
外连接: 假设A和B表进行连接,使用外连接的话, AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表, 当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹 ...
- 数据库-左外连接-右外连接
左外连接 外链接:左外连接.右外连接.全连接.自连接. 左外连接:用左边表去右边表中查询对应记录,不管是否找到,都将显示左边表中全部记录. 即:虽然右表没有香蕉对应的价格,也要把他查询出来. 语法:s ...
- SQL 左外连接右外连接(详解)
两个表: A(id,name) 数据:(1,张三)(2,李四)(3,王五) B(id,name) 数据:(1,学生)(2,老师)(4,校长) 左连接结果: select A.*,B.* from A ...
- hive 内连接 左外连接 右外连接 满外连接 左半开连接 交叉连接 多表连接 隐式连接
目录 hive outline hive 内连接 inner join hive 左外连接 left join hive 右外连接 right join hive 满外连接 full join hiv ...
- 等值连接、内连接、左连接(左外连接)、右连接(右外连接)、全连接、笛卡尔积
UserInfo表: WorkInfo表: 1.等值连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留. 2.内连接 以上可 ...
- HIVE 中 内连接 外连接 左外连接 右外连接 全外连接 联合操作
hive的join操作,只支持等值连接 创建customers和orders表,一对多关系 创建customers表 create table customers(id int,name string ...
- Mysql之--------------------多表查询(内连接 左外连接 右外连接)常见的数据库函数
一.多表查询 什么是多表查询呢? 比如说,一个老师肯定会有不止一个学生,一个学生也会有不止一个老师,这样就存在了一种多对多的关系. 多对多关系表的创建 CREATE DATABASE moreandm ...
最新文章
- 【392天】跃迁之路——程序员高效学习方法论探索系列(实验阶段149-2018.03.04)...
- sql server管理学习提纲
- linux which命令的使用示例
- linux忆连软件,linux安装软件方法汇总
- java中集合的排序_Java中集合排序的两种方法
- Android之基于BaseAdapter和SimpleAdapter的GridView
- Python 数据科学手册 5.1 什么是机器学习
- python生成.exe文件
- 浅谈三层架构 通过这个,+Java开发模式经验。终于相通了,动软到底是为什么这么做...
- web.config中的ExtensionlessUrlHandler-Integrated-4.0
- linux服务器上使用apache部署静态html网页
- java写原生js_[Java教程]原生JS拖拽
- 重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
- 美国电脑程序员需要考证吗
- win10卓越性能模式开启方法
- linux 使用shell/python编写钉钉自动监控报警脚本
- 电脑录音,教你电脑怎么录音
- 汇编实验三:三个有符号数比较大小
- 使用微搭搭建天气预报小程序
- JAVA设计模式-创建模式-工厂模式-简单工厂模式/静态工厂模式
热门文章
- CF1253E Antenna Coverage
- [SDOI2014]旅行
- 数据结构之线段树Ⅴ——(李超线段树)Robot,Product Sum,Building Bridges,Jump mission
- LOJ洛谷P3225:矿场搭建(割点、点双)
- YbtOJ#532-往事之树【广义SAM,线段树合并】
- jzoj5698-[gdoi2018day1]密码锁【贪心,差分】
- jzoj4017-逃跑【0/1分数规划,线段树,dp】
- 线性代数(矩阵、高斯、线性基……)
- 2014 ACM/ICPC Asia Regional Xi'an Online
- MySQL week()函数