MySQL的7种JOIN
原文链接:https://blog.liuzijian.com/post/61e35b3c-fae7-4e0b-aaa2-1d1f2896d9b1.html

-- 创建数据库
CREATE DATABASE emp;
-- 创建部门表
CREATE TABLE emp.dept (
id INT(11) NOT NULL AUTO_INCREMENT,
deptName VARCHAR(30) DEFAULT NULL,
iocAdd VARCHAR(40) DEFAULT NULL,
PRIMARY KEY (id)
) DEFAULT CHARSET = utf8;
-- 创建员工表
CREATE TABLE emp.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)
) DEFAULT CHARSET = utf8;
-- 插入部门数据
INSERT INTO emp.dept (deptName, iocAdd) VALUES ('RD', 11);
INSERT INTO emp.dept (deptName, iocAdd) VALUES ('HR', 12);
INSERT INTO emp.dept (deptName, iocAdd) VALUES ('MK', 13);
INSERT INTO emp.dept (deptName, iocAdd) VALUES ('MIS', 14);
INSERT INTO emp.dept (deptName, iocAdd) VALUES ('FD', 15);
-- 插入员工数据
INSERT INTO emp.emp(name, deptId) VALUES ('z3', 1);
INSERT INTO emp.emp(name, deptId) VALUES ('z4', 1);
INSERT INTO emp.emp(name, deptId) VALUES ('z5', 1);
INSERT INTO emp.emp(name, deptId) VALUES ('w5', 2);
INSERT INTO emp.emp(name, deptId) VALUES ('w6', 2);
INSERT INTO emp.emp(name, deptId) VALUES ('s7', 3);
INSERT INTO emp.emp(name, deptId) VALUES ('s8', 4);
INSERT INTO emp.emp(name, deptId) VALUES ('s9', 51);
-- 查询所有员工
SELECT * FROM emp.emp;
-- 查询所有部门
SELECT * FROM emp.dept;
-- 笛卡尔积
SELECT * FROM emp.dept, emp.emp;
-- 内连接
SELECT * FROM emp INNER JOIN dept ON emp.deptId = dept.id;
-- 左连接
SELECT * FROM emp LEFT JOIN dept ON emp.deptId = dept.id;
-- 右连接
SELECT * FROM emp RIGHT JOIN dept ON emp.deptId = dept.id;
-- 左连接查找空值
SELECT * FROM emp LEFT JOIN dept ON emp.deptId = dept.id WHERE dept.id IS NULL;
-- 右连接查找空值
SELECT * FROM emp RIGHT JOIN dept ON emp.deptId = dept.id WHERE emp.id IS NULL;
-- 模拟全外连接
SELECT * FROM emp LEFT JOIN dept ON emp.deptId = dept.id
UNION
SELECT * FROM emp RIGHT JOIN dept ON emp.deptId = dept.id;
-- 替代的全外连接模拟
SELECT * FROM emp LEFT JOIN dept ON emp.deptId = dept.id WHERE dept.id IS NULL
UNION
SELECT * FROM emp.RIGHT JOIN dept ON emp.deptId = dept.id WHERE emp.id IS NULL;
MySQL的7种JOIN的更多相关文章
- MySQL的七种join
转载 原文地址 建表 在这里我们先建立两张有外键关联的两张表: CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept` ...
- MySQL 的七种 join
建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...
- MYSQL 的七种join
建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...
- 【知识库】-数据库_MySQL 的七种 join
掘金作者:haifeisi 文章出处: MySQL 的七种 join Learn [已经过测试校验] 一.内连接 二.左外连接 三.右外连接 四.左连接 五.右连接 六.全连接 七.两张表中都没有出现 ...
- MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解
逻辑架构 存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序 考点:m ...
- mysql中的几种join 及 full join问题
[注意]:Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现 初始化SQL语句: /*join 建表语句*/ ...
- MySQL的联结(Join)语法
MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别: 在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如 ...
- MySQL连接查询(inner join,left join和right join的区别)
关系数据库由多个相关表组成,这些表使用已知为外键列的常用列链接在一起. 因此,从业务角度来看,每个表中的数据是不完整的. 例如,在示例数据库(yiibaidb)中,使用orderNumber列链接的o ...
- PostgreSQL EXPLAIN执行计划学习--多表连接几种Join方式比较
转了一部分.稍后再修改. 三种多表Join的算法: 一. NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表 ...
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
mysql 批量更新记录 MySql中4种批量更新的方法最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共 ...
随机推荐
- 利用 Screen 保持 VSCode 连接远程任务持续运行
在 Linux 上使用 screen 是一种保持进程持续运行的便捷方式,即使用户断开 SSH 连接,进程也不会中断. 我在使用VSCode连接AutoDL时,不知道如何能够使进程保持运行,后查阅资料可 ...
- Git Flow开发分支管理
Git Flow Git Flow 是一种基于 Git 版本控制系统的分支管理模型,定义了一套严格的分支命名和操作规范 主要包括以下几种分支类型: 主干分支(master):始终保持稳定,只包含经过充 ...
- (系列十二)Vue3+.Net8实现用户登录(超详细登录文档)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- mysql5.7之密码重置
一.windows下更改mysql数据库密码在windows下找到my.ini文件,例如:C:\ProgramData\MySQL\MySQL Server 5.7,打开该文件夹下的my.ini文件, ...
- Win10多用户同时登陆
1. 说明: (1)Win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. (2)Win10正常情况下是不允许用户同时远程的,即一个 ...
- Nuxt.js 应用中的 beforeResponse 事件钩子
title: Nuxt.js 应用中的 beforeResponse 事件钩子 date: 2024/12/5 updated: 2024/12/5 author: cmdragon excerpt: ...
- datagridview点击列头对当前列进行排序的功能无效
DataGridView 的默认行为是支持通过单击列头对列进行排序,但在以下情况下可能会取消该功能或无法使用: 1. 绑定的数据源不支持排序 如果 DataGridView 的数据源是绑定到一个不支持 ...
- vscode本地调试gitbook
1. windows下载安装git 2.安装nodejs 下载安装nvm https://github.com/coreybutler/nvm-windows/releases/download/1. ...
- FineReport其他js记录
1.js修改日期组件 背景色 边框 setTimeout(function () { var color = "#092347"; var fontColor = "wh ...
- 2024年1月Java项目开发指南4:IDEA里配置MYSQL
提前声明:文章首发博客园(cnblogs.com/mllt) 自动"搬家"(同步)到CSDN,如果博客园中文章发生修改是不会同步过去的,所以建议大家到我的博客园中查看 前提条件: ...