sql中的join连接之内连接、左外连接、右外连接

sql中的join连接之内连接、左外连接、右外连接

实际应用中所需要的数据,经常会需要查询两个或两个以上的表。这种查询两个或两个以上数据表或视图的查询叫做连接查询。连接查询通常建立在存在相互关系的父子表之间。

场景创建

创建如下场景

CREATE TABLE T_Stu(--学生表
  stuId int,--学号
  depId int,--系号
  stuName char(20),--姓名
  stuSex char(20)--性别
  );

CREATE TABLE T_Dep(--系表
  depId int,--系号
  depName char(20)--系名字
  );

INSERT INTO T_Stu VALUES (1,101,"aaa","男"),(3,103,"ccc","女");
INSERT INTO T_Dep VALUES (101,"数学"),(102,"计算机"),(103,"电子商务");

T_Stu表—学生表
在这里插入图片描述
T_Dep表—系表
在这里插入图片描述

join连接的分类

在这里插入图片描述

交叉连接

相当与笛卡尔积,左表和右表组合。
sql语句

SELECT * FROM t_stu join t_dep ;

查询结果
在这里插入图片描述

内连接

关键字:inner join,inner可以省略
查询学生表中所有学生的个人信息
sql语句

SELECT * FROM t_stu join t_dep on t_stu.depId =t_dep.depId ;

执行结果
在这里插入图片描述
此处的on也可以用where代替

外连接

内连接所指定的两个数据源处于平等的地位。而外连接不同,外连接以一个数据源为基础,将另外一个数据源与之进行条件匹配。
内连接返回两个表中所有满足连接条件的数据记录。外连接不仅返回满足连接条件的记录,还将返回不满足连接条件的记录

左外连接

左外连接又称左连接,是指以左边的表为基础表进行查询。
根据指定连接条件关联右表,获取基础表以及和条件匹配的右表数据,未匹配条件的右表对应的字段位置填上NULL
查询所在系号是103的学生的姓名和系名称
sql语句

SELECT t_stu.StuName ,t_dep.depName FROM t_stu LEFT JOIN t_dep on t_stu.depId =103 and t_stu.depId = t_dep.depId 

执行结果
在这里插入图片描述
写在left join左边的为左表,写在left join右边的为右表。
当将上面的t_stu LEFT JOIN t_dep 换成 t_dep LEFT JOIN t_stu时执行结果为
在这里插入图片描述

右外连接

右外连接又称右连接,是指以右边的表为基础表,在内连接的基础上也查询右边表中有记录,而左边的表中没有记录的数据(左边用NULL值填充)
查询所在系号是103的学生的姓名和系名称
sql语句

SELECT t_stu.StuName ,t_dep.depName FROM t_stu RIGHT JOIN t_dep on t_stu.depId =103 and t_stu.depId = t_dep.depId 

执行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

齊 天 大 聖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值