mysql几种连接方式区别
mysql的几种join
2017年03月19日 14:49:07 carl-zhao 阅读数:7845 标签: mysqlsqljoin 更多
个人分类: MySQL
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012410733/article/details/63684663
之前学习mysql的时候对于老师说的左连接,右连接…之类的概念一直不清楚,模模糊糊的。工作之后理解这些名词一概念,现在把它记录一下。也希望能够帮助对于mysql中join不太清晰的朋友。这样可以根据自己的业务场景选择合适的join语句。
初始化SQL语句:
- /*join 建表语句*/
- drop database if exists test;
- create database test;
- use test;
- /* 左表t1*/
- drop table if exists t1;
- create table t1 (id int not null,name varchar(20));
- insert into t1 values (1,'t1a');
- insert into t1 values (2,'t1b');
- insert into t1 values (3,'t1c');
- insert into t1 values (4,'t1d');
- insert into t1 values (5,'t1f');
- /* 右表 t2*/
- drop table if exists t1;
- create table t2 (id int not null,name varchar(20));
- insert into t2 values (2,'t2b');
- insert into t2 values (3,'t2c');
- insert into t2 values (4,'t2d');
- insert into t2 values (5,'t2f');
- insert into t2 values (6,'t2a');
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
1、笛卡尔积
两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。
mysql> select * from t1 join t2;
- 1
2、左连接
两表关联,左表全部保留,右表关联不上用null表示。
mysql> select * from t1 left join t2 on t1.id = t2.id;
- 1
3、右连接
右表全部保留,左表关联不上的用null表示。
mysql> select * from t1 right join t2 on t1.id =t2.id;
- 1
4、内连接
两表关联,保留两表中交集的记录。
mysql> select * from t1 inner join t2 on t1.id = t2.id;
- 1
5、左表独有
两表关联,查询左表独有的数据。
mysql> select * from t1 left join t2 on t1.id = t2.id where t2.id is null;
- 1
6、右表独有
两表关联,查询右表独有的数据。
mysql> select * from t1 right join t2 on t1.id = t2.id where t1.id is null;
- 1
7、全连接
两表关联,查询它们的所有记录。
oracle里面有full join,但是在mysql中没有full join。我们可以使用union来达到目的。
- mysql> select * from t1 left join t2 on t1.id = t2.id
- -> union
- -> select * from t1 right join t2 on t1.id = t2.id;
- 1
- 2
- 3
8、并集去交集
两表关联,取并集然后去交集。
- mysql> select * from t1 left join t2 on t1.id = t2.id where t2.id is null
- -> union
- -> select * from t1 right join t2 on t1.id = t2.id where t1.id is null;
- 1
- 2
- 3
mysql几种连接方式区别的更多相关文章
- mysql三种连接方式
sql四种连接方式demo: 表a 表b a.id与b.parent_id有关系 1.内连接:SELECT a.*,b.* from a INNER JOIN b ON a.id=b.parent_i ...
- MySQL数据库的两种连接方式:TCP/IP和Socket
Linux平台环境下主要有两种连接方式,一种是TCP/IP连接方式,另一种就是socket连接. 在Windows平台下,有name pipe和share memory(不考虑)两种. TCP/IP连 ...
- VMware的三种网络连接方式区别
关于VMware的三种网络连接方式,NAT,Bridged,Host-Only ,在刚接触的时候通常会遇到主机Ping不通虚拟机而虚拟机能Ping得通主机:主机与虚拟机互不相通等等网络问题.本文就这三 ...
- mysql的三种连接方式
SQL的三种连接方式分为:左外连接.右外连接.内连接,专业术语分别为:LEFT JOIN.RIGHT JOING.INNER JOIN 内连接INNER JOIN:使用比较运算符来根据指定的连接的每个 ...
- Java连接Oracle数据库的三种连接方式
背景: 这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询. SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQ ...
- Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
[]如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...
- 项目案例模板之jdbc两种连接方式
项目案例模板之jdbc两种连接方式 第一种连接方式 JDBCUtils.java package jdbc; import org.junit.jupiter.api.Test; import ...
- mysql 4种启动方式
mysql 4种启动方式 都是去调用mysqld文件 1. mysqld 启动 进入mysqld文件所在目录(/../libexec/mysqld) ./mysqld --defaults-file= ...
- linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用
---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10 一.虚拟网络三种连接方式 当在V ...
随机推荐
- MySQL数据库性能优化该如何入手
今天小杨给大家分享一篇关于数据库查询优化,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情. ...
- scrapy设置自己的headers referer字段
1.在middlewares中添加自己的新类: class Mylei(object): def process_request(self,request,spider): referer=reque ...
- C语言:宏定义 本质及体现
- 足不出户,一探古今,打造线上3D数字博物馆!
随着3D技术的不断革新,为了让更多的用户领略历史之美,越来越多的博物馆开始举办线上展览.通过模拟不同的环境.灯光投影.360°无死角放大缩小展品,观众可以享受到身临其境的沉浸体验.不仅如此,给展品加上 ...
- java.io.NotSerializableException:异常解决
创建的pojo类未实现Serializable接口,启动服务器会报此异常. 解决此问题 添加一个Serializable接口即可 1 import java.io.Serializable; 2 3 ...
- 第4天 JavaDoc生成文档&Java流程控制(第一节:用户交互Scanner)
JavaDoc生成文档 javadoc命令是用来生成自己的API文档 参数信息: @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @ ...
- 第十一篇 -- QMainWindow与QAction(斜体-粗体-下划线)
效果图: ui_mainWindow.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file ' ...
- getRawX、getRawY与getX、getY、getScrollX、getScrollY,getTop,getLeft区别
这篇文章写的不错,Mark一下 http://blog.csdn.net/sinat_29912455/article/details/51073537
- linux中的dhcp
目录 一.DHCP服务 二.DHCP的租约过程 三.使用DHCP动态配置主机地址 四.安装DHCP服务器 一.DHCP服务 ① DHCP (Dynamic HostConfiguration Prot ...
- docker版LAMP(PHP+MYSQL+APACHE)配置
最近在搭测试环境,一开始就在vagant和docker之间来回折腾.两者其实都非常适合用来搭开发环境:但最终让我决定用Docker的原因是因为Vagant在hyper-v下出现了一些奇怪的问题,所以D ...