MySql性能优化之JOIN连接(有图,最全,最详细)

news/2024/12/5 8:32:56/

目录

1.示例数据

2.内连接

3.外连接

     左连接     

     右连接

4.全连接

5.查询左表独有的数据

6.查询右表独有的数据

7.查询左右表各自的独有的数据

1.示例数据

创建数据库,然后用下面的sql语句创建对应的两个表

DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (`id` int(11) NOT NULL AUTO_INCREMENT,`deptName` varchar(30) DEFAULT NULL,`address` varchar(40) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `department` VALUES ('1', '研发部(RD)', '2层');
INSERT INTO `department` VALUES ('2', '人事部(HR)', '3层');
INSERT INTO `department` VALUES ('3', '市场部(MK)', '4层');
INSERT INTO `department` VALUES ('4', '后勤部(MIS)', '5层');
INSERT INTO `department` VALUES ('5', '财务部(FD)', '6层');


DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`dep_id` int(11) DEFAULT NULL,`age` int(11) DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`cus_id` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8;INSERT INTO `employee` VALUES ('1', '鲁班', '1', '10', '1000.00', '1');
INSERT INTO `employee` VALUES ('2', '后裔', '1', '20', '2000.00', '1');
INSERT INTO `employee` VALUES ('3', '孙尚香', '1', '20', '2500.00', '1');
INSERT INTO `employee` VALUES ('4', '凯', '4', '20', '3000.00', '1');
INSERT INTO `employee` VALUES ('5', '典韦', '4', '40', '3500.00', '2');
INSERT INTO `employee` VALUES ('6', '貂蝉', '6', '20', '5000.00', '1');
INSERT INTO `employee` VALUES ('7', '孙膑', '6', '50', '5000.00', '1');
INSERT INTO `employee` VALUES ('8', '蔡文姬', '30', '35', '4000.00', '1');

2.内连接

   图解:

   关键词:INNER  JOIN      ON

   语句:select * from employee e INNER  JOIN department d ON e.dep_id = d.id;

   执行结果:

3.外连接

     左连接     

       图解:

       关键词:LEFT  JOIN      ON

       语句:select * from employee e  LEFT JOIN department d ON e.dep_id = d.id;

       执行结果:

     右连接

       图解:

       关键词:RIGHT  JOIN      ON

       语句:select * from employee e RIGHT JOIN department d ON e.dep_id = d.id;

       执行结果:

4.全连接

   图解:

   关键词:FULL  OUTTER    JOIN      ON

   语句:select * from employee e FULL OUTTER  JOIN department d ON e.dep_id = d.id  (这条语句在MySQL下无法执行) 

             用左右连接实现全连接:

               select * from employee e LEFT JOIN department d ON e.dep_id = d.id
              UNION
              select * from employee e RIGHT JOIN department d ON e.dep_id = d.id;

   执行结果:

5.查询左表独有的数据

  图解:

  关键词:LEFT  JOIN      ON      WHERE    

   语句:select * from employee e LEFT JOIN department d ON e.dep_id = d.id  WHERE  d.id   is  null;

6.查询右表独有的数据

   图解:

   关键词:RIGHT  JOIN      ON      WHERE 

   语句:select * from employee e LEFT JOIN department d ON e.dep_id = d.id  WHERE  e.dep_id   is  null;

7.查询左右表各自的独有的数据

   图解:

  关键词:LEFT  JOIN      ON      WHERE   

                  UNION

                  RIGHT  JOIN      ON      WHERE   

   语句:SELECT * from employee e  LEFT JOIN department d on e.depart_id = d.id WHERE d.id is NULL
              UNION
             SELECT * from employee e  RIGHT JOIN department d on e.depart_id = d.id WHERE e.depart_id is NULL;

 

如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步 

 

 

 


http://www.ppmy.cn/news/740235.html

相关文章

Mybatis-Plus使用案例(包括初始化以及常用插件)

序号类型地址1MySQLMySQL操作之概念、SQL约束(一)2MySQLMySQL操作之数据定义语言(DDL)(二)3MySQLMySQL操作之数据操作语言(DML)(三)4MySQLMySQL操作之数据查询语言:(DQL)…

JAVA基础对象的序列化与反序列化

对象类 package com.job.io; import java.io.Serializable; public class Student implements Serializable{/*** */private static final long serialVersionUID 2517802070568447027L;private String name;private int score;private transient String vanlaentne;public St…

Python自动化办公 - 对Word的操作(Python-docx的基本使用)

1 安装模块 Windows用户打开命令行输入:pip install python-docx Mac用户打开终端/Terminal输入:pip3 install python-docx 导入模块:import docx 如果无法安装,可以转换为国内清华镜像源,Windows系统操作如下&…

java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么

抖音上火了貂蝉的大招画爱心,同时它的BGM也吸引了很多网友们,一曲古风歌曲,搭配上貂蝉的舞蹈,真的是让人听了还想听呢,抖音貂蝉大招画爱心的背景音乐是什么?还不知道的网友们下面就跟着小编一起来看看吧&am…

1-1.2(MySQL)数据库表联合(俗称连表查询)查询类型

mysql中常用到的几种连接查询 你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。 JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。LEFT JOIN&am…

SAP连接外部ORACLE数据库

SAP连接外部ORACLE数据库 1.先在SAP底层ORACLE数据库编辑TNS文件,一般由BASIS配置完成.配置完成后我们可以用事务码:AL11查看配置是否正确,路径:DIR_ORAHOME->network->admin->tnsnames.ora查看对应的TNS是否配置正确,如: ORADB04.world (DESCRIPTION (ADDRESS_…

蘑菇云matlab程序,貂蝉搞怪去衣福利图片欣赏(图文)

王者荣耀貂蝉去衣福利图片欣赏 装备推荐: 噬神之书、抵抗之靴、极寒风暴、痛苦面具、不死鸟之眼、爆裂之甲 装备分析: 爆裂之甲:增加生命值和物理防御,其被动在貂蝉受到伤害时能提升貂蝉的移速和伤害,在保证生存的时候还能提供伤害。 极寒风暴…

前端复习 first day 排版标签和格式化标签

1、标题标签 为了使网页更加具有语言化,经常会在head中用到标题标签 h1、h2、h3、h4、h5、h6 用来设计标题的大小,由h1到h6逐渐变小 标题标签h1 开始学习第一天打卡 开始学习第一天打卡 开始学习第一天打卡 开始学习第一天打卡 开始学习第一天打卡 …