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 ...
随机推荐
- TestNG基础001
一.什么是TestNG TestNG是一个强大的测试框架,NG是指Next Generation ,被视为是Junit的升级版本 二.TestNG适用范围 Java单元测试 接口测试 web自动化测试 ...
- 团队开发day07
开始整合项目,测试登录,注册,搜索功能, 在安卓中数据处理存在个别错误,功能逻辑有个别不正确 进行修改和完善,添加二次确认退出
- java03类与对象相关问题
1.使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向他查询"你已经创建了几个对象" 1 package 第四五周; 2 3 public ...
- [006] - JavaSE面试题(六):泛型
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [006] - JavaSE面试题(六):泛型 第1问:什么是泛型? Java泛型( generi ...
- vue 快速入门 系列 —— vue loader 扩展
其他章节请看: vue 快速入门 系列 vue loader 扩展 在vue loader一文中,我们学会了从零搭建一个简单的,用于单文件组件开发的脚手架.本篇将在此基础上继续引入一些常用的库:vue ...
- 机器学习Sklearn系列:(五)聚类算法
K-means 原理 首先随机选择k个初始点作为质心 1. 对每一个样本点,计算得到距离其最近的质心,将其类别标记为该质心对应的类别 2. 使用归类好的样本点,重新计算K个类别的质心 3. 重复上述过 ...
- 【学习笔记】pytorch中squeeze()和unsqueeze()函数介绍
squeeze用来减少维度, unsqueeze用来增加维度 具体可见下方博客. pytorch中squeeze和unsqueeze
- HTML5-CSS(二)
一. CSS 文本样式 1.font-size p { font-size: 50px;}解释:设置文本的大小. xx-small.x-small.small.medium.large.x-larg ...
- mybatis-4-Mapper映射文件
Mapper映射文件 映射文件的Mapper标签包含标签 1.CDUS增删改查 2.参数处理 (1)直接传入参数 单个参数 //传入当个参数 public Employee getEmployeeBy ...
- P2015
二叉苹果树 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include< ...