所谓表连接,基于表格之间的相同字段,使表之间发生关联,让两个或多个表连接在一起。
基本的连接表达式为:
我们可以运用Join或者Where 将多个表连接起来,最常见的是inner join。
PS 在表连接时,可以通过别名的方式来简化我们的语句。
注意⚠️如果在多表中出现相同的列名,这需要使用表名作为来自该表的列名的前缀。
另外,若连接条件是无效或者省略,那就会发生笛卡尔积,所谓笛卡尔积就是让我们所有连接的表每一行都发生多条连接,例如:表一有a条记录,表二有b 条记录,则笛卡尔积就有a*b条记录,为了防止这样的情况发生,我们需要提供有效的条件。
内连接
它是通过使用运算符来进行表与表之间的列数据比较操作。
基础语法为:select * from table1 inner join table2 on table1.字段名=table2.字段名
其中inner join可以简写为join
上面的阴影部分就是通过内连接后得出来的表。即两表同时存在部分。
例子:表1和表2 通过内连接得出表3
select a.*,b.level from #table1 a join #table2 b on a.store=b.store
外连接
a.左外连接left join:
左外连接以子句中的左表为基础,连接右表,将呈现出左表所有字段,右表仅呈现出与左表共同行。
上面的阴影部分就是通过左外连接后得出来的表。
例子,表1和表2 通过左外连接得出表3:
select a.*,b.level from #table1 a left join #table2 b on a.store=b.store
b.右外连接right join:
右外连接以子句中的右表为基础,连接左表,将呈现出右表所有字段,左表仅呈现出与左表共同行。
上面的阴影部分就是通过右外连接后得出来的表。
例子,表1和表2 通过右外连接得出表3:
select a.*,b.level from #table1 a right join #table2 b on a.store=b.store
c.全外连接full join:
返回所有结果,包括未匹配成功的结果
上面的阴影部分就是通过全外连接后得出来的表。
例子,表1和表2 通过全外连接得出表3:
select a.*,b.level from #table1 a full join #table2 b on a.store=b.store
—————————————
版权声明:本文为CSDN博主「weixin_39819974」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39819974/article/details/111375072