左表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');

 图解:

#笛卡尔积:两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。

SELECT * FROM t1 JOIN t2

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

SELECT * FROM t1 LEFT JOIN t2 ON t1.id =t2.id

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

SELECT * FROM t1 RIGHT JOIN t2 ON t1.id =t2.`id`

#内连接:两表关联,保留两表中交集的记录。

SELECT * FROM t1 INNER JOIN t2 ON t1.id=t2.`id`

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

SELECT * FROM t1 LEFT JOIN t2 ON t1.id =t2.`id` WHERE t2.id IS NULL

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

SELECT * FROM t1 RIGHT JOIN t2 ON t1.id =t2.id WHERE t1.id IS NULL

#全连接:两表关联,查询它们的所有记录

SELECT * FROM t1 RIGHT JOIN t2 ON t1.id =t2.`id`
UNION
SELECT * FROM t1 LEFT JOIN t2 ON t1.id =t2.id

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

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

MySQL-几种关联的更多相关文章

  1. MySQL 三种关联查询的方式: ON vs USING vs 传统风格

    看看下面三个关联查询的 SQL 语句有何区别? 1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) 2 ...

  2. mysql几种关联的区别

    1.平时都是用的逗号的模式:select * from a,b where a.id=b.id,逗号的模式等于inner join和join: 2.left join 和 right join相反,效 ...

  3. MySQL如何执行关联查询

    MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛.总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中, ...

  4. MySQL 多表关联更新及删除

    目录: <MySQL中的两种临时表> <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示(hint)> 一.      多表关联更新 问题 ...

  5. [转]Mysql几种索引类型的区别及适用情况

    此为转载文章,仅做记录使用,方便日后查看,原文链接:https://www.cnblogs.com/yuan-shuai/p/3225417.html Mysql几种索引类型的区别及适用情况   如大 ...

  6. Mysql多表表关联查询 inner Join left join right join

    Mysql多表表关联查询 inner Join left join right join

  7. mysql几种性能测试的工具使用

    mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一 ...

  8. mysql 4种启动方式

    mysql 4种启动方式 都是去调用mysqld文件 1. mysqld 启动 进入mysqld文件所在目录(/../libexec/mysqld) ./mysqld --defaults-file= ...

  9. MySQL 如何执行关联查询

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/51 当前mysql执行的策略很简单:mysql对任何关联都执行嵌 ...

  10. mysql如何执行关联查询与优化

    mysql如何执行关联查询与优化 一.前言 在数据库中执行查询(select)在我们工作中是非常常见的,工作中离不开CRUD,在执行查询(select)时,多表关联也非常常见,我们用的也比较多,那么m ...

随机推荐

  1. controler--application配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  2. Oracle 包的学习

    (1)包是一种数据库对象,相当于一个容器.将逻辑上相关的过程.函数.变量.常量和游标组合成一个更大的单位.用户可以从其他 PL/SQL 块中对其进行引用 (2)包类似于C++和JAVA语言中的类,其中 ...

  3. npm 常见错误记录

    1.Module build failed: ReferenceError: Unknown plugin "import" specified in "base&quo ...

  4. sql判断中文、数字、英文

    IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL DROP FUNCTION DBO.GET_NUMBER2 GO )) ) AS BEGIN BEGIN ,'' ...

  5. k-近邻算法(kNN)测试算法:作为完整程序验证分类器

    #测试算法:作为完整程序验证分类器 def datingClassTest(): hoRatio = 0.10 #设置测试集比重,前10%作为测试集,后90%作为训练集 datingDataMat,d ...

  6. SyntaxError: missing ] after element list

    在前端页面js报错,找了很久没找到原因. 后来发现是后台向前端输出json字符串,而前端接收是html格式,需要将后台json字符串改成正常字符串就可以输出,或者通过ajax的方式接收json字符串.

  7. 用maven搭建多模块项目

    首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目. 好了,废话不多说,具体如下: 首先新建一个maven项目,pom.xml的 ...

  8. mybatis分页插件使用

    一:导入依赖 <!--分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> < ...

  9. <JAVA - 大作业(1)文本编辑器 >

    <JAVA - 大作业(1)文本编辑器 > 背景 JAVA上机大作业:qq / 代码评价系统 第一次上机主题是练习JAVA自带的GUI图形化编程 目的:实现一个跟window10记事本界面 ...

  10. HTML创建文本框的3种方式

    我的第一个随笔,记录主要用来整理学习的知识点 1.input 创建单行文本框 <input type="text" size="10" maxlength ...