SQL | JOIN(内, 左, 右和完全连接)
在本文中, 我们将讨论剩余的两个JOINS:
考虑下面的两个表:
StudentCourse
笛卡尔连接:CARTESIAN JOIN也称为CROSS JOIN。在"笛卡尔连接"中, 一个表的每一行与另一表的每一行都有一个连接。当未指定匹配列或WHERE条件时, 通常会发生这种情况。
- 在没有WHERE条件的情况下, 笛卡尔连接的行为类似于笛卡尔乘积。即结果集中的行数是两个表的行数的乘积。
- 在存在WHERE条件的情况下, 此JOIN将像INNER JOIN一样起作用。
- 一般而言, 交叉连接类似于内部连接, 其中连接条件始终为True。
语法如下:
SELECT table1.column1 , table1.column2, table2.column1...
FROM table1
CROSS JOIN table2;
table1: First table.
table2: Second table
查询示例(CARTESIAN JOIN):在下面的查询中, 我们将从"学生"表中选择"姓名"和"年龄", 并从"学生课程"表中选择" COURSE_ID"。在输出中, 你可以看到表格Student的每一行都与表格StudentCourse的每一行连接在一起。结果集中的总行数= 4 * 4 = 16。
SELECT Student.NAME, Student.AGE, StudentCourse.COURSE_ID
FROM Student
CROSS JOIN StudentCourse;
输出如下:
自连接:顾名思义, 在SELF JOIN中将一个表连接到自身。也就是说, 表的每一行都与自身以及所有其他行(取决于某些条件)结合在一起。换句话说, 我们可以说这是同一张表的两个副本之间的连接。
语法如下:
SELECT a.coulmn1 , b.column2
FROM table_name a, table_name b
WHERE some_condition;
table_name: Name of the table.
some_condition: Condition for selecting the rows.
查询示例(SELF JOIN):
SELECT a.ROLL_NO , b.NAME
FROM Student a, Student b
WHERE a.ROLL_NO <b.ROLL_NO;
输出如下:
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。