MySQL由浅入深掌握连接查询
2023-06-13 09:19:42 时间
内连接INNERJOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。
在我看来内连接和等值连接差不多,自然连接是内连接中的一个特殊连接
自然连接和等值连接的区别
SELECT*from aaa natural join bbb;
union
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL由浅入深掌握连接查询
什么是自然连接?
自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。什么是等值连接?
等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称 连接)在连接运算符为 = 号时,即 =0时的一个特例举例分析:
表aaa
表bbb:
查询表aaa和表bbb中属性C B D相等的数据
等值连接查询:
SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E结果:
自然连接查询:
自然连接用关键字 natural joinSELECT*from aaa natural join bbb;
结果:
由上面两个结果可以看出,等值连接就是从两个表数据的交集中取指定值相等的数据。而自然连接就是取两个表中相同属性,并且值相等的数据,而且消除了相同属性列。
内连接的实现方式第一种:where
SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E第二种:inner join
select*from aaa inner join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;第三种:join
select*from aaa join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;第四种:STRAIGHT_JOIN
select*from aaa STRAIGHT_JOIN bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;后面三种效果一样,第三种可以理解为第二种的缩写。第四种和第二种主要区别是插入方式不同,第四种性能略低
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。什么是左连接?
左连接LEFT JOIN的含义就是求两个表A表和B表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表A表中剩余的记录
代码实现:
select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;结果:
什么是左连接?
同理右连接RIGHT JOIN就是求两个表A和B表的交集外加右表B剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录代码实现:
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;结果:
全外连接就是求两个表A和B集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做 UNION 操作来实现。
代码实现:
select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.Eunion
select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
结果:
到此这篇关于MySQL由浅入深掌握连接查询的文章就介绍到这了,更多相关MySQL 连接查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL由浅入深掌握连接查询
相关文章
- MySQL查询:实现子类查询(mysql查询子类)
- MySQL中创建新表的步骤(mysql创建新表)
- 利用MySQL创建视图的指南(mysql创建视图)
- 深入MySQL:查询分析器的实践应用(mysql的查询分析器)
- 轻松在官网安装MySQL(在官网下载mysql)
- MySQL 查询日期范围:简易指南(mysql查询日期范围)
- 如何在MySQL中实现表名大小写不敏感?(mysql表忽略大小写)
- 卸载MySQL:轻松解决方案(mysql怎么卸载)
- MYSQL查询表中记录的总数(mysql 查询表记录数)
- MySQL中的TRUNC函数数据截断处理必备技能(mysql中trunc)
- 从C语言实现MySQL行锁(c mysql行锁)
- MySQL中desc的作用详解(mysql中desc作用)
- MySQL个数查询轻松统计数据表中的数据量(mysql个数查询)
- CDH集群中快速登录MySQL的方法(cdh集群登录mysql)
- 教你如何用ASP连接MySQL(asp连接mysql教程)
- 解决64位系统上MySQL的ODBC连接(64odbc mysql)
- MySQL如何进行一对多筛选25字小Tips助您轻松实现(mysql 一对多筛选)
- MySQLSock了解 MySQL 数据库中的套接字文件(mysql_sock)
- MySQL状态查询的使用技巧(mysql不同状态查询)
- 下载MySQL过往版本,轻松实现数据库回滚(mysql下载往期版本)
- MySQL快速下载壁纸美女(MYSQL下载壁纸美女)
- 如何解决MySQL无法连接本地库的问题(mysql不能连接本地库)
- 解决MySQL上传速度慢问题的有效方法(mysql上传速度慢)
- MySQL数据显示不用科学计数法,避免数据误差(mysql不用科学计数法)
- MySQL查询结果没有显示行数的解决方法(mysql不显示行数)