SQL中,表之间的左联和右联是什么意思

简介: SQL中,表之间的左联和右联是什么意思

首先来看张图片:


定义:


左联:首先取出A表中所有数据,然后再加上A、B表通过关联字段key查询到的数据


右联:首先取出B表中所有数据,然后再加上A、B表通过关联字段key查询到的数据


内联:查询A、B表通过关联字段key查询到的数据


非关联字段key的数据:当A表为主表时,在B表中该关联字段key为空值的数据为非关联字段



表关联是在SQL中非常常用的东西


join全连接:查找左表(主表)和右表(子表)都存在的数据


left join左联接:查找左表(主表)为查找全集,右表(子表)存在的关联出来,不存在的为NULL。


right join右连接:刚好和left join相反


full join全集关联:相当于把left join 和right join 综合起来,即左表(主表)和右表(子表)关联,如果能关联到的显示,如果左有右表没有,则右表显示NULL,如果右表有左表没有 则左表显示NULL


举个例子,你现在有两张表,学生表和成绩表


学生表中有两列数据:学生ID和学生姓名,成绩表中有三列数据,成绩ID、学生ID和总分数


假设学生表中有三行数据,ID为1,2,3,姓名分别为张三,李四,赵五


假设成绩表中也有三行数据:成绩ID为1,2,3,学生ID为 2,3,5,成绩为60,85,90


如果你写 select * from 学生表 a join 成绩表 b on a.学生ID=b.学生ID


会出现学生ID为2,3的两条数据


如果你写 select * from 学生表 a left join 成绩表 b on a.学生ID=b.学生ID


会出现学生ID为1,2,3的三条数据,但学生ID为1的那条数据关联到的成绩表信息全为NULL


如果你写 select * from 学生表 a  right join 成绩表 b on a.学生ID=b.学生ID


会出现学生ID为2,3,5的三条数据,但学生ID为5的那条数据关联到的学生表信息全为NULL


如果你写 select * from 学生表 a  full join 成绩表 b on a.学生ID=b.学生ID


会出现学生ID为1,2,3,5的全部数据,但学生ID为5的那条数据关联到的学生表信息全为NULL,学生ID为1的那条数据关联到的成绩表信息全为NULL


左联就是左表作为主表,左连接where只影向右表,右联与之相反。


select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID

左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据。

简言之 Left Join影响到的是右边的表



1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。


一般要使得数据库查询语句性能好点遵循一下原则:

在做表与表的连接查询时,大表在前,小表在

不使用表别名,通过字段前缀区分不同表中的字段

查询条件中的限制条件要写在表连接条件前

尽量使用索引的字段做为查询条件


目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
|
6月前
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
179 11
|
5月前
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
41 1
|
4月前
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
6月前
|
SQL
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
69 0
|
5月前
|
SQL 存储 测试技术
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
5月前
|
SQL 存储 数据库
SQL 撤销索引、撤销表以及撤销数据库
SQL 撤销索引、撤销表以及撤销数据库
65 4
|
5月前
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
51 1
下一篇
无影云桌面