Mysql 表的七种联接方式【附带练习sql】

这篇具有很好参考价值的文章主要介绍了Mysql 表的七种联接方式【附带练习sql】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

连接

七种JOIN介绍

图形 连接方式 说明 SQL
Mysql 表的七种联接方式【附带练习sql】 内连接 共有部分 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key;
Mysql 表的七种联接方式【附带练习sql】 左连接 A表独有+共有部分 SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key;
Mysql 表的七种联接方式【附带练习sql】 右连接 B表独有+共有部分 SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key;
Mysql 表的七种联接方式【附带练习sql】 A的独有 SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS NULL;
Mysql 表的七种联接方式【附带练习sql】 B的独有 SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key WHERE A.Key IS NULL;
Mysql 表的七种联接方式【附带练习sql】 全连接 A的独有+共有部分+B的独有 SELECT <select_list> FROM TableA A FULL OUTER JOIN TableB B ON A.Key = B.Key; MySQL不支持FULL OUTER JOIN这种语法
Mysql 表的七种联接方式【附带练习sql】 A独有+B独有 SELECT <select_list> FROM TableA A FULL OUTER JOIN TableB B ON A.Key = B.Key WHERE A.Key IS NULL OR B.Key IS NULL; MySQL不支持FULL OUTER JOIN这种语法

练习

建表+存储数据

CREATE TABLE `tbl_emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`) ,
KEY `fk_dept_id`(`deptId`)
)ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8;

CREATE TABLE `tbl_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`deptName` varchar(30) DEFAULT NULL,
`locAdd` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8;

insert into tbl_dept(deptName,locAdd) values('RD',11);
insert into tbl_dept(deptName,locAdd) values('HR',12);
insert into tbl_dept(deptName,locAdd) values('MK',13);
insert into tbl_dept(deptName,locAdd) values('MIS',14);
insert into tbl_dept(deptName,locAdd) values('FD',15);

insert into tbl_emp(NAME,deptId) values('z3',1);
insert into tbl_emp(NAME,deptId) values('z4',1);
insert into tbl_emp(NAME,deptId) values('z5',1);
insert into tbl_emp(NAME,deptId) values('w5',2);
insert into tbl_emp(NAME,deptId) values('w6',2);
insert into tbl_emp(NAME,deptId) values('s7',3);
insert into tbl_emp(NAME,deptId) values('s8',4);
insert into tbl_emp(NAME,deptId) values('s9',51);

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

笛卡尔积

select * from tbl_emp,tbl_dept;

5条数据8条数据两两组合,一共40条,结果如下

"id"       "name"     "deptId"    "id"      "deptName"   "locAdd"
"1"        "z3"        "1"        "5"        "FD"        "15"
"1"        "z3"        "1"        "4"        "MIS"        "14"
"1"        "z3"        "1"        "3"        "MK"        "13"
"1"        "z3"        "1"        "2"        "HR"        "12"
"1"        "z3"        "1"        "1"        "RD"        "11"
"2"        "z4"        "1"        "5"        "FD"        "15"
"2"        "z4"        "1"        "4"        "MIS"        "14"
"2"        "z4"        "1"        "3"        "MK"        "13"
"2"        "z4"        "1"        "2"        "HR"        "12"
"2"        "z4"        "1"        "1"        "RD"        "11"
"3"        "z5"        "1"        "5"        "FD"        "15"
"3"        "z5"        "1"        "4"        "MIS"        "14"
"3"        "z5"        "1"        "3"        "MK"        "13"
"3"        "z5"        "1"        "2"        "HR"        "12"
"3"        "z5"        "1"        "1"        "RD"        "11"
"4"        "w5"        "2"        "5"        "FD"        "15"
"4"        "w5"        "2"        "4"        "MIS"        "14"
"4"        "w5"        "2"        "3"        "MK"        "13"
"4"        "w5"        "2"        "2"        "HR"        "12"
"4"        "w5"        "2"        "1"        "RD"        "11"
"5"        "w6"        "2"        "5"        "FD"        "15"
"5"        "w6"        "2"        "4"        "MIS"        "14"
"5"        "w6"        "2"        "3"        "MK"        "13"
"5"        "w6"        "2"        "2"        "HR"        "12"
"5"        "w6"        "2"        "1"        "RD"        "11"
"6"        "s7"        "3"        "5"        "FD"        "15"
"6"        "s7"        "3"        "4"        "MIS"        "14"
"6"        "s7"        "3"        "3"        "MK"        "13"
"6"        "s7"        "3"        "2"        "HR"        "12"
"6"        "s7"        "3"        "1"        "RD"        "11"
"7"        "s8"        "4"        "5"        "FD"        "15"
"7"        "s8"        "4"        "4"        "MIS"        "14"
"7"        "s8"        "4"        "3"        "MK"        "13"
"7"        "s8"        "4"        "2"        "HR"        "12"
"7"        "s8"        "4"        "1"        "RD"        "11"
"8"        "s9"        "51"        "5"        "FD"        "15"
"8"        "s9"        "51"        "4"        "MIS"        "14"
"8"        "s9"        "51"        "3"        "MK"        "13"
"8"        "s9"        "51"        "2"        "HR"        "12"
"8"        "s9"        "51"        "1"        "RD"        "11"

内连接

SELECT * FROM tbl_emp a INNER JOIN tbl_dept b ON a.deptId = b.id;

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

左连接

SELECT * FROM tbl_emp a LEFT JOIN tbl_dept b ON a.deptId = b.id;

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

右连接

SELECT * FROM tbl_emp a RIGHT JOIN tbl_dept b ON a.deptId = b.id;

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

A表独有

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

SELECT * FROM tbl_emp a LEFT JOIN tbl_dept b ON a.deptId = b.id WHERE b.id is null;

Mysql 表的七种联接方式【附带练习sql】

B表独有

SELECT * FROM tbl_emp a RIGHT JOIN tbl_dept b ON a.deptId = b.id WHERE a.deptId is null;

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

全连接

Mysql 表的七种联接方式【附带练习sql】

Mysql 表的七种联接方式【附带练习sql】

尝试换一种方式实现:A的独有+共有+B的独有

实现方式一:左连接+右连接+公共部分去重
SELECT * FROM tbl_emp a LEFT JOIN tbl_dept b ON a.deptId = b.id 
UNION 
SELECT * FROM tbl_emp a RIGHT JOIN tbl_dept b ON a.deptId = b.id;

Mysql 表的七种联接方式【附带练习sql】

实现方式二:左连接+B独有
SELECT * FROM tbl_emp a LEFT JOIN tbl_dept b ON a.deptId = b.id 
UNION 
SELECT * FROM tbl_emp a RIGHT JOIN tbl_dept b ON a.deptId = b.id WHERE a.deptId is null;

A独有+B独有

Mysql 表的七种联接方式【附带练习sql】

SELECT * FROM tbl_emp a LEFT JOIN tbl_dept b ON a.deptId = b.id WHERE b.id is null 
UNION 
SELECT * FROM tbl_emp a RIGHT JOIN tbl_dept b ON a.deptId = b.id WHERE a.deptId is null;

Mysql 表的七种联接方式【附带练习sql】

文章说明

本文章为本人学习尚硅谷的学习笔记,文章中大部分内容来源于尚硅谷视频(点击学习尚硅谷相关课程),也有部分内容来自于自己的思考,发布文章是想帮助其他学习的人更方便地整理自己的笔记或者直接通过文章学习相关知识,如有侵权请联系删除,最后对尚硅谷的优质课程表示感谢。文章来源地址https://www.toymoban.com/news/detail-486033.html

到了这里,关于Mysql 表的七种联接方式【附带练习sql】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java中HashMap的七种遍历方式

    感兴趣的话大家可以关注一下公众号 : 猿人刘先生 , 欢迎大家一起学习 , 一起进步 , 一起来交流吧! HashMap的多种遍历方式从大体中归类 , 可以分为以下4类 : 迭代器(Iterator) For Each Lambda (JDK 1.8 +) Streams API (JDK 1.8 +) 但是每种方式又有不同的实现类型 : 使用迭代器(Iterator)En

    2023年04月09日
    浏览(38)
  • pod的七种状态

    Pending(等待中) :当Pod被创建后,它处于等待中的状态。在等待中,Kubernetes正在尝试在节点上分配资源并启动Pod。这可能涉及下载镜像、分配IP地址、执行初始化容器等操作。如果Pod一直处于等待中,可能是由于资源不足、调度问题或其他原因导致。 Running(运行中) :一

    2024年02月05日
    浏览(27)
  • JavaScript的七种数据类型

    在我们的javascript中,每个数据都有不一样的类型,它们被简称为数据类型。 javaScript一共有七种数据类型,它们又被分为两类(基本数据类型和引用数据类型),其结构如下。 基本数据类型: ⭐数值型(number) ⭐字符串型(string) ⭐布尔型(boolean) ⭐未定义(undefined)

    2024年02月15日
    浏览(38)
  • 索引失效的七种情况

    以上这些情况都可能导致数据库查询时无法有效地使用索引,从而影响查询性能。为了避免索引失效,需要优化查询语句,合理设计索引,尽量避免上述情况的出现。

    2024年02月10日
    浏览(35)
  • SQL语句练习附带答案

    1.查询一共有多少部电影 2.查询电影价格最低不小于100的类型 3.查询所有电影的名字,以及电影对应的类型名 4.查询所有每个员工的销售总额 5.查询所有员工的名字,以及员工的工资级别 6.查询每种类型各有多少部电影 7.查询每个用户多少岁. 8.查询历年来每个月份各多少订单

    2024年02月06日
    浏览(44)
  • PHP中header()的七种用法

    我们在实际开发中经常使用header()实现一些功能,这篇文章介绍关于header()的7中用法,需要的伙伴的开参考一下。 PHP header()的7中用法: 1、跳转页面 可以使用header()实现跳转页面功能。 2、声明 content-type 调用API接口时,一般都会声明 content-type 的类型,否则无法读写数据。

    2024年02月10日
    浏览(51)
  • Postman的七种断言方法+超时设置!

    超时的设置 Settings-General- Request Timeout in ms(0 for infinity):设置请求超时的时间,默认为0 1.postman断言介绍 postman在发送请求后,需要对返回的结果做判断,验证是否符合预期,如状态码、响应头、响应正文等信息进行断言操作,在设置时会给定一个预期结果,在发送请求后会得到

    2024年02月03日
    浏览(40)
  • 关于Ping命令的七种用法

    今天我们来详细看下ping命令详细使用: 一、ping基本使用详解 在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为: 1、用来检测网络的连通情况和分析网络速度 2、根据域名得到服务器IP 3、根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。 我

    2024年02月12日
    浏览(52)
  • 关于Ping命令的七种常规用法(详解)

    一、 ping 基本使用详解 在网络中 ping 是一个十分强大的 TCP/IP 工具。它的作用主要为: 1 、用来检测网络的连通情况和分析网络速度 2 、根据域名得到服务器 IP 3 、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。 我们通常会用它来直接 ping ip 地

    2024年04月11日
    浏览(68)
  • VUE实现当前页面刷新的七种方法

            使用 location.reload() 方法可以简单地实现当前页面的刷新,这个方法会重新加载当前页面,类似于用户点击浏览器的刷新按钮。         在 Vue 中,可以将该方法绑定到 Vue 实例上,比如在 Vue 的 methods 中添加如下的方法:         然后在模板中调用该方法即

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包