MySQL的连接类型
首先我们来创建两个数据表:
结构:
我们用内连接来查看一下:
select * from test1 join test2 on test1.aid=test2.aid;
由于内连接是等值连接,所以结果是显示左右表中匹配的数据
再用左连接查看:
可以看到,左连接先取出test1的所有数据,再加上与test2和test1匹配的数据,如果左连接的话,一旦aid不相同,那么就会整行数据都显示NULL
至于右连接,实际上和左连接类似,只是参照表不同
另外,left outer和left 的结果是一样的,假如输入
select * from test1 left outer join test2 on test1.aid=test2.aid;
结果也是和left的一样。除了返回符合连接条件的结果之外,还需要显示左表中不符合连接条件的数据列,相对应使用NULL对应
交叉连接
select * from test1 cross join test2;
和下面等效:
select a.*,b.* from test1 a,test2 b a.aid=b.aid;
结果就是两个表相乘
这样一看,好像交叉连接的意义不大,但是交叉连接可以用在行显示转换成列显示
全连接
full join或full outer join
全连接就是在匹配值的基础上将左右表的未匹配数据都加上
select * from test1 full join test2 on test1.aid=test2.aid;
但是你会发现这样输入之后会报错,原因在于MySQL中并不支持full join,那么怎么办呢?
等效的写法是:
select * from test1 left join test2 on test1.aid=test2.aid
union
select * from test1 right join test2 on test1.aid=test2.aid;
自然连接
nacture join
要求两个表中进行比较的必须是相同的属性列,不需要添加连接条件,并且在结果中消除重复的属性列
最新文章
- Log Parser 2.2 分析 IIS 日志
- 【海洋女神原创】How to: Installshield做安装包时如何添加文件
- java多线程详解(4)-多线程同步技术与lock
- Tableau:数据可视化之急速BI
- [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法
- 不可或缺 Windows Native (13) - C++: 标准输入, 标准输出, 字符串内存流
- 工具介绍 - NimbleText
- nginx配置多域名映射方法(本地hosts)
- 讨论贴:在sp_executesql 中生成的临时表的可见性
- MySQL表分区
- Json(2)-DataContractJsonSerializer
- MySQL之事务处理、存储过程
- 【转】处理新版Chrome书签、菜单字体不清晰
- 小白到大神,Python 密集知识点汇总
- vue中添加title中的小图标
- SpringBoot-06:SpringBoot增删改查一套完整的考试案例
- Kafka文件存储机制及offset存取
- 不存在具有键“test”的“IEnumerable<;SelectListItem>;”类型的 ViewData 项。
- 【转载】Qt中图像的显示与基本操作
- 监督学习——决策树理论与实践(下):回归决策树(CART)
热门文章
- myeclipse和ecplise中安装git插件的问题
- jQuery之过滤元素
- webgl学习笔记三-平移旋转缩放
- MySQL---索引算法B+/B-树原理(二)
- Building microservices with ASP.NET Core (without MVC)(转)
- C# WebBrowser控件模拟登录
- DIH增量、定时导入并检索数据--转载
- [三]SpringBoot 之 热部署
- Closest Number in Sorted Array
- The meterprter basic commonds