SQL的7种连接查询

news/2024/12/5 8:43:52/

SQL的7种连接查询

在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求;在项目开发过程中,有很多需求都是要涉及到多表的连接查询。
连接查询:也可以叫跨表查询,需要关联多个表进行查询。
以下通过两表实例来详细介绍连接的使用方式。
department表:
在这里插入图片描述
建表语句:
DROP TABLE IF EXISTS department;CREATE TABLE department ( id int(11) NOT AUTO_INCREMENT, deptName varchar(30) DEFAULT , address varchar(40) DEFAULT , PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
表数据:
INSERT INTO departmentVALUES (‘1’, ‘研发部(RD)’, ‘2层’);
INSERT INTO departmentVALUES (‘2’, ‘人事部(HR)’, ‘3层’);
INSERT INTO departmentVALUES (‘3’, ‘市场部(MK)’, ‘4层’);
INSERT INTO departmentVALUES (‘4’, ‘后勤部(MIS)’, ‘5层’);
INSERT INTO departmentVALUES (‘5’, ‘财务部(FD)’, ‘6层’);
employee表:
在这里插入图片描述

建表语句:
DROP TABLE IF EXISTS employee;CREATE TABLE employee ( id int(11) NOT AUTO_INCREMENT, name varchar(20) DEFAULT , dep_id int(11) DEFAULT , age int(11) DEFAULT , salary decimal(10,2) DEFAULT , cus_id int(11) DEFAULT , PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8;
表数据
INSERT INTO employeeVALUES (‘1’, ‘鲁班’, ‘1’, ‘10’, ‘1000.00’, ‘1’);INSERT INTO employeeVALUES (‘2’, ‘后裔’, ‘1’, ‘20’, ‘2000.00’, ‘1’);INSERT INTO employeeVALUES (‘3’, ‘孙尚香’, ‘1’, ‘20’, ‘2500.00’, ‘1’);INSERT INTO employeeVALUES (‘4’, ‘凯’, ‘4’, ‘20’, ‘3000.00’, ‘1’);INSERT INTO employeeVALUES (‘5’, ‘典韦’, ‘4’, ‘40’, ‘3500.00’, ‘2’);INSERT INTO employeeVALUES (‘6’, ‘貂蝉’, ‘6’, ‘20’, ‘5000.00’, ‘1’);INSERT INTO employeeVALUES (‘7’, ‘孙膑’, ‘6’, ‘50’, ‘5000.00’, ‘1’);INSERT INTO employeeVALUES (‘8’, ‘蔡文姬’, ‘30’, ‘35’, ‘4000.00’, ‘1’);
下面进入正题!

01 内连接

图示:
在这里插入图片描述
作用:查询两张表的共有部分
语句:

Select <select_list> from tableA AInner join tableB Bon A.Key = B.Key
原表数据在这里插入图片描述
示例:
SELECT * from employee eINNER JOIN department don e.depart_id = d.id;
查询结果数据在这里插入图片描述

02 左连接

图示:

在这里插入图片描述
作用:把左边表的内容全部查出,右边表只查出满足条件的记录
语句:

Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key
原表数据:
在这里插入图片描述
示例
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id;
查询结果数据:在这里插入图片描述

03 右连接

图示:
在这里插入图片描述

作用:把右边表的内容全部查出,左边表只查出满足条件的记录
语句:

Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key
原表数据:
在这里插入图片描述

示例:
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.id;
查询结果数据:
在这里插入图片描述

04 查询左表独有数据

图示:
在这里插入图片描述

作用:查询A的独有数据
语句:
Select <select_list> from tableA ALeft Join tableB Bon A.Key = B.Key where B.key IS
原表数据:
在这里插入图片描述

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id WHERE d.id IS ;
查询结果数据:
在这里插入图片描述

05 查询右表独有数据

图示:
在这里插入图片描述

作用:查询B的独有数据
语句:
Select <select_list> from tableA ARight Join tableB Bon A.Key = B.Key where A.key IS
原表数据:
在这里插入图片描述

示例:
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.id WHERE e.id IS ;
查询结果数据:

在这里插入图片描述

06 全连接

图示:
在这里插入图片描述

作用:查询两个表的全部信息
语句:
Select <select_list> from tableA A Full Outter Join tableB B on A.Key = B.Key
注:Mysql默认不支持此种写法;Oracle支持,在Mysql中可以使用UNION来实现相应操作。
原表数据:
在这里插入图片描述

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id
UNION
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.id
查询结果数据:
在这里插入图片描述

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

图示:
在这里插入图片描述

作用:查询A和B各自的独有的数据
语句:
Select <select_list> from tableA A Full Outter Join tableB B on A.Key = B.Key where A.key = or B.key=
原表数据:
在这里插入图片描述

示例:
SELECT * from employee eLEFT JOIN department don e.depart_id = d.id WHERE d.id is
UNION
SELECT * from employee eRIGHT JOIN department don e.depart_id = d.idWHERE e.depart_id is
查询结果数据:
在这里插入图片描述


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

相关文章

王者荣耀貂蝉唤灵魅影技能特效展示 唤灵魅影何时上架

王者荣耀貂蝉又出新皮肤啦&#xff0c;而这次的皮肤名叫唤灵魅影&#xff0c;是貂蝉五五开黑节的专属皮肤哦&#xff0c;下面来看看王者荣耀貂蝉唤灵魅影技能特效展示吧。 王者荣耀貂蝉唤灵魅影技能特效展示 被动 被动会在敌人头上留下一个令牌一样的标记&#xff0c;当触发…

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

目录 1.示例数据 2.内连接 3.外连接 左连接 右连接 4.全连接 5.查询左表独有的数据 6.查询右表独有的数据 7.查询左右表各自的独有的数据 1.示例数据 创建数据库&#xff0c;然后用下面的sql语句创建对应的两个表 DROP TABLE IF EXISTS department; CREATE TABLE…

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

序号类型地址1MySQLMySQL操作之概念、SQL约束&#xff08;一&#xff09;2MySQLMySQL操作之数据定义语言&#xff08;DDL)&#xff08;二&#xff09;3MySQLMySQL操作之数据操作语言&#xff08;DML)&#xff08;三&#xff09;4MySQLMySQL操作之数据查询语言&#xff1a;(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用户打开命令行输入&#xff1a;pip install python-docx Mac用户打开终端/Terminal输入&#xff1a;pip3 install python-docx 导入模块&#xff1a;import docx 如果无法安装&#xff0c;可以转换为国内清华镜像源&#xff0c;Windows系统操作如下&…

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

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

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

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

SAP连接外部ORACLE数据库

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