SQL JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的加入类型:SQL内连接(简单的加入),SQL加入,SQL加入,SQL全部加入,其中前一种是内连接,后三种是外链接。
假设我们有两张表,表一是左边的表,表B是右边的表。
id 的名字 1 谷歌 2 淘宝 3. 微博 4 脸谱网 id 地址 1 美国 5 中国 3. 中国 6 美国
内连接是最常见的一种连接,只连接匹配的行。
<强>内连接语法强>
选择column_name(年代) 从表1 表2内连接 在 表1。column_name=表2. column_name
<强>注释强>:内连接与连接是相同
内连接产生的结果集中,是1和2的交集。
从表内连接表B选择* 在表一。id=表B.id
执行以上的SQL输出结果如下:
id 的名字 地址 1 谷歌 美国 3. 微博 中国
左加入返回左表的全部行和右表满足上条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用零代替。
<强>左加入语法强>
选择column_name(年代) 从表1 左连接表2 在表1。column_name=表2. column_name
注释:在某些数据库中,左加入称为
左外部连接
左加入产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代。
从表选择*左连接表B 在表一。id=表B.id
执行以上的SQL输出结果如下:
id 的名字 地址 1 谷歌 美国 2 淘宝 零 3. 微博 中国 4 脸谱网 零
对加入返回右表的全部行和左表满足上条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用零代替。
<强>正确的连接语法强>
选择column_name(年代) 从表1 正确的连接表2 在表1。column_name=表2. column_name
注释:在某些数据库中,对加入称为右外连接
对加入产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。
从表一个直角连接表B选择* 在表一。id=表B.id
执行以上的SQL输出结果如下:
id 的名字 地址 1 谷歌 美国 5 零 中国 3. 微博 中国 6 零 美国
全部加入会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用零代替
<强>全外连接语法强>
选择column_name(年代) 从表1 完全外连接表2所示 在表1。column_name=表2. column_name
全外连接产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以零做为值。
从表的完全外连接表选择* B 在表一。id=表B.id