mysql各种联结的区别_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

f6e4d534945eb3bb1a3de89ea36d0725.png

2、左连接

两表关联,左表全部保留,右表关联不上用null表示。

a812705732fd2dc91293cdd4380c6b49.png

mysql> select * from t1 left join t2 on t1.id = t2.id;

1

069f0d85c167746c215e08e63130b915.png

3、右连接

右表全部保留,左表关联不上的用null表示。

f66bebd6a1fcccab59ec4757167537f1.png

mysql> select * from t1 right join t2 on t1.id =t2.id;

1

b2658d14e8ed37b58678f80cd92488fb.png

4、内连接

两表关联,保留两表中交集的记录。

48b3e8bb483dbb48b06be947b05b84c6.png

mysql> select * from t1 inner join t2 on t1.id = t2.id;

1

d408c34ec94565ccc97d692e1dd7f9b9.png

5、左表独有

两表关联,查询左表独有的数据。

825221745ab75e6410d7b44a18ccc5ec.png

mysql> select * from t1 left join t2 on t1.id = t2.id where t2.id is null;

1

8d0ad64a4f83477aeac688a26ae74af8.png

6、右表独有

两表关联,查询右表独有的数据。

a4bfc94d813b27b7f164d5b7b49f6179.png

mysql> select * from t1 right join t2 on t1.id = t2.id where t1.id is null;

1

9fb9adea6ca0a1636a3e987208ad9374.png

7、全连接

两表关联,查询它们的所有记录。

9170e8ed581bab9c0c466f417286afe9.png

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

8dd607b8bf49330d79ac34bb10e0b4c8.png

8、并集去交集

两表关联,取并集然后去交集。

dc4026ade02881197dc56c345c7280c3.png

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

86b0e467bcf9803157dcdba023fc299f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python和office_Python在office开发中的应用

Python with Excel 有几个很好的Python模块能够方便地操作Excel的数据,包括读与写,不要求本地安装Excel。例如pandas, openpyxl, xlrd, xlutils 和 pyexcel. 详情可以参考下面的介绍: https://www.datacamp.com/community/tutorials/python-e…

mysql5.7 新增参数_MySQL 5.7 新增参数

参数默认值binlog_group_commit_sync_delay0binlog_group_commit_sync_no_delay_count0binlog_transaction_dependency_history_size25000binlog_transaction_dependency_trackingCOMMIT_ORDERcheck_proxy_usersOFFdefault_authentication_pluginmysql_native_passworddefault_…

android通过用户名密码访问服务器获取信息_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制。MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据具有访问权)访…

mysql 数据库 额外_Manager额外参数怎么学?mysql数据库学习

说明:主库宕机谁来接管?1. 所有从节点日志都是一致的,默认会以配置文件的顺序去选择一个新主。2. 从节点日志不一致,自动选择最接近于主库的从库3. 如果对于某节点设定了权重(candidate_master1),权重节点会优先选择。但是此节点…

mysql安全补丁如何处理_3分钟学会mysql数据库的逻辑架构原理

这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。一、笼统的逻辑架构先给出一张逻辑架构图,这张图是让你从宏观的角度来分析认识一下。从这张图你可以获取到如下的信息:(1&am…

mysql reflush pri_Mysql Flush privileges命令的功能与使用

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在…

onclick 源码_仿照React源码流程打造90行代码的Hooks

作者:苏畅转发链接:https://mp.weixin.qq.com/s/YLSD4IojDWTPlov_RQtVAA前言你可能已经看过其它简易的Hooks实现。那么本文和其它实现有什么区别呢?本文的实现完全参照React源码的运行流程。学懂本文,去看React源码,你…

java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

展开全部用jdbc 连接mysql数据库就行了,网上搜下一大把。--记得在classpath下加入mysql 的jdbc驱动包。/*** author :来e68a84e8a2ad3231313335323631343130323136353331333337386636自互联网*/import java.sql.DriverManager;import java.sql.ResultSet…

java break 在if 中使用_java中使用国密SM4算法详解

前言上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。ps:我们既可以基…

移动web前端开发框架_移动前端开发是Web前端开发吗?

移动端开发并不是Web前端开发,但移动前端开发和web前端开发其实都属于前端开发的范围,目前前端发展的趋势就是大前端,可以说是包罗万象。但不论趋势如何发展,目前来看HTML、CSS和JavaScript依然是整个前端开发的三大基石。所以不论…

mtk一键usb驱动_三菱MRJEB驱动器报错,导致报错原因37.1参数设置范围异常?

三菱MR-JE-B驱动器报错,导致报错原因37.1参数设置范围异常?最近海蓝机电工程师们在做一个项目,做的是三菱MR-JE-B驱动器。工程师们在实操这个项目过程中遇到各种问题,其中就像驱动器报错的问题,导致报错的原因显示37,1…

mysql 上一条_mysql选择上一条、下一条数据记录

1.表数据结构选择mysql记录上一条,下一条sql语句SELECT * FROM user ORDER BY rank ASC-------------------| ID | rank | name |-------------------| 1 | 1 | admin1 || 2 | 2 | admin2 || 3 | 3 | admin3 || 4 | 4 | admin4 || 5 | 5 | admin5 || 6 | 6 | admin6…

将虚拟主机加入到netskills.net域环境_网站建设阿里云虚拟主机、ECS服务器、企业邮箱选择购买指南...

对于刚接触阿里云的人来说可能看到阿里云的产品介绍页面会比较头晕,各种产品分类,而且同一个产品在不同的分类目录下都能看到,下面简单介绍一下制作网站过程中常用的阿里云的产品。阿里云在网站建设方面常用的服务主要有云虚拟主机、ECS云服务…

lr监控mysql_LR通过SiteScope监控mysql

SiteScope下载,安装要想使用LoadRunner监测MySQL数据库的性能,LoadRunner没有提供直接监测 MySQL的功能,所以,我们需要借助sitescope监控,然后在LoadRunner显示sitescope监测结果,这样间接地监控MySQL性能。…

mysql unique 锁_mysql 行锁排查

mysql 锁表: 隔离级别使用RR: mysql> SELECT GLOBAL.tx_isolation, tx_isolation; ---------------------------------------- | GLOBAL.tx_isolation | tx_isolation | ---------------------------------------- | REPEATABLE-READ | REPEATABLE-READ SESSION A: mysql>…

python中基例_Python python从入门到实践(5) --代码复用

函数、类与代码复用代码复用的思想把代码当成资源进行抽象。代码资源化:程序代码是一种用来表达计算的"资源"代码抽象化:使用函数等方法对代码赋予更高级别的定义代码复用:同一份代码在需要时可以被重复使用函数和对象是代码复用的…

linux查看硬盘smart_Linux检测磁盘坏道工具用什么命令

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. badblock命令简介badblock命令用于查找磁盘中损坏的区块。 电脑硬盘出现坏道后,如果不及时更换或进行技术处理&#xff0…

mysql约束添加删除数据_mysql中约束的添加,修改,与删除

MySQL中的约束,添加约束,删除约束,以及其他的一些修饰:一.NOT NULL(非空约束)添加非空约束1)建表时直接添加CREATE TABLE t_user(user_id INT(10) NOT NULL);2)通过ALTER 语句ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;ALTER TABLE t_user CHANGE user_i…

c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解

一、前言不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP。因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证。在这里选择杭电的OJ作为准备…

python弹出框_selenium+python学习——弹出框

1、alert警告框 以百度搜索设置为例,在进行搜索设置后点击“保存设置”按钮,弹出alert对话框,如下图所示:实现代码: from selenium import webdriver import time as t from selenium.webdriver.support.select import…