当前位置: 首页 > news >正文

MySQL —— 内外连接

目录

表的内外连接

一、内连接

二、外连接

1. 左外连接

2. 右外连接


表的内外连接

表的连接分为内连和外连

一、内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面博客中的查询都是内连接,也是在开发过程中使用的最多的连接查询。

语法:

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

案例:显示SMITH的名字和部门名称

我们依然使用之前的表来进行演示

按照我们之前的做法,是将给定题目中所需要的表进行笛卡尔积,然后条件筛选:

select ename, dname from emp, dept where emp.deptno=dept.deptno and ename='SMITH';

我们也可以使用内连接专门的语法,进行查询:

-- inner join的两侧表明你要将哪两个表进行内连接,on后面就是以什么条件进行内连接
select ename, dname from emp inner join dept on emp.deptno=dept.deptno 
and ename='SMITH';

二、外连接

外连接分为左外连接和右外连接

我们先准备两张表,并插入一些数据,连演示左外连接和右外连接: 

-- 建两张表
create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);

查看两张表:

从查询出来的两张表可以看出,stu表中 id为1、2的的学生在exam表中是有相应的成绩的,但是id为4、11的学生要么没有成绩,要么没有名字,这些就属于非法数据,按照我们之前将两张表做笛卡尔积,就是如下的样子:

但有些时候我们想查询数据时,保留这些非法数据,就可以用到左外连接或右外连接

1. 左外连接

        如果联合查询,左侧的表完全显示我们就说是左外连接(即左侧的表完全显示,右侧表用空表示)。 

语法:

select 字段名 from 表名1 left join 表名2 on 连接条件;

案例:查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来。   

select * from stu left join exam on stu.id=exam.id;

需要注意的是,在使用  A left join B on... 时,A是左表B是右表,左表完全显示指的就是A表。

2. 右外连接

        如果联合查询,右侧的表完全显示我们就说是右外连接(即右侧的表完全显示,左侧表用空表示)。

语法: 

select 字段 from 表名1 right join 表名2 on 连接条件;

案例:对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来。

select * from stu right join exam on stu.id=exam.id;

需要注意的是,在使用  A right join B on... 时,A是左表B是右表,右表完全显示指的就是B表。

http://www.lryc.cn/news/14676.html

相关文章:

  • EXCEL中文本和数字的相互转换方法
  • React源码分析6-hooks源码
  • Windows10神州网信政府版麦克风、摄像头的使用
  • 微机原理学习总结0:前言
  • LeetCode 1828. 统计一个圆中点的数目
  • Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建
  • leetcode 11~20 学习经历
  • LeetCode 双周赛 98,脑筋急转弯转不过来!
  • 函数的栈帧的创建和销毁
  • python filtermapreducezip
  • Centos7搭建hadoop3.3.4分布式集群
  • 骨传导耳机工作原理,骨传导耳机优缺点
  • IDEA高效插件和设置
  • Linux之网络流量监控工具ntopng YUM安装
  • 创建虚拟机,安装CentOS
  • ilasm 和 ildasm编译和反编译工具介绍使用教程
  • 代码随想录【Day20】| 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
  • C++空指针和野指针
  • LinkedList正确的遍历方式-附源码分析
  • 【蓦然回首忆Java·基础卷Ⅱ】
  • Mybatis源码分析系列之第二篇:Mybatis的数据存储对象
  • 防护设备检测实验室建设完整方案SICOLAB
  • Linux知识之主机状态
  • 是时候为您的银行机构选择构建一个知识库了!
  • 「TCG 规范解读」第7章 TPM工作组 TPM 总结
  • 一、Plugin Constructing the Boilerplate
  • 15、存储过程与函数
  • uniapp 原生安卓开发插件(module),以及android环境本地调试(二)
  • 【Java期末复习】《面向对象程序设计》练习库
  • 照片文件损坏能修复吗?