MySQL-几种关联
左表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-几种关联的更多相关文章
- MySQL 三种关联查询的方式: ON vs USING vs 传统风格
看看下面三个关联查询的 SQL 语句有何区别? 1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) 2 ...
- mysql几种关联的区别
1.平时都是用的逗号的模式:select * from a,b where a.id=b.id,逗号的模式等于inner join和join: 2.left join 和 right join相反,效 ...
- MySQL如何执行关联查询
MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛.总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中, ...
- MySQL 多表关联更新及删除
目录: <MySQL中的两种临时表> <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示(hint)> 一. 多表关联更新 问题 ...
- [转]Mysql几种索引类型的区别及适用情况
此为转载文章,仅做记录使用,方便日后查看,原文链接:https://www.cnblogs.com/yuan-shuai/p/3225417.html Mysql几种索引类型的区别及适用情况 如大 ...
- Mysql多表表关联查询 inner Join left join right join
Mysql多表表关联查询 inner Join left join right join
- mysql几种性能测试的工具使用
mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一 ...
- mysql 4种启动方式
mysql 4种启动方式 都是去调用mysqld文件 1. mysqld 启动 进入mysqld文件所在目录(/../libexec/mysqld) ./mysqld --defaults-file= ...
- MySQL 如何执行关联查询
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/51 当前mysql执行的策略很简单:mysql对任何关联都执行嵌 ...
- mysql如何执行关联查询与优化
mysql如何执行关联查询与优化 一.前言 在数据库中执行查询(select)在我们工作中是非常常见的,工作中离不开CRUD,在执行查询(select)时,多表关联也非常常见,我们用的也比较多,那么m ...
随机推荐
- MongoDB笔记【2】——基本概念和基本指令
- 基本概念 数据库(database) 集合(collection) 文档(document) - 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存 ...
- boost unordered
Boost.Unordered provides the classes boost::unordered_set, boost::unordered_multiset, boost::unorder ...
- 常见HTTP错误代码
了解更多HTTP错误代码 一些常见的状态码为: 200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解: 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态 ...
- Vue的使用总结(1)
1.将某个对象赋值给vue实例中的data属性时是浅拷贝 var obj= { a: 1 } var vm = new Vue({ data: obj }) obj.a = 2; console.lo ...
- Agri-Net —poj1258
Agri-Net Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44670 Accepted: 18268 Descri ...
- HTTP的FormData和Payload的传输格式
FormData和Payload是浏览器传输给接口的两种格式,这两种方式浏览器是通过Content-Type来进行区分的(了解Content-Type),如果是 application/x-www-f ...
- pytest_用例运行级别_class级
''' 模块级(setup_module/teardown_module)开始于模块始末, 全局的在类中不起作用 类级(setup_class/teardown_class)只在类中前后运行一次(在 ...
- soj#551 loj#2833 帐篷
传送门 分析 dp[i][j]表示考虑了i行j列的方案数 我们每次考虑三种情况: 一个点自己放 两个点在同一行 两个点在同一列 代码 #include<bits/stdc++.h> usi ...
- soj#532 set p3175
传送门 分析 代码 #include<bits/stdc++.h> using namespace std; ; <<],Ans; int n,m,N; inline int ...
- nginx配置-location
以 =开头表示精确匹配如 A 中只匹配根目录结尾的请求,后面不能带任何字符串. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~* 开头表示不区分大小写的 ...