SQL – 连接(内连接,左连接,右连接和全连接)

SQL 连接(内连接,左连接,右连接和全连接)

SQL Join 语句用于根据两个或多个表之间的公共字段组合数据或行。不同类型的连接如下:

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

考虑以下两个表格:

Student

SQL 连接(内连接,左连接,右连接和全连接)

StudentCourse

SQL 连接(内连接,左连接,右连接和全连接)

最简单的连接是INNER Join。

A. INNER JOIN

只要满足条件,INNER JOIN关键字将从两个表中选择所有行。该关键字将通过合并两个表中满足条件的所有行来创建结果集,即公共字段的值将是相同的。

语法 :

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1 
INNER JOIN table2
ON table1.matching_column = table2.matching_column;

table1 : 第一个表.
table2 : 第二个表
matching_column : 两个表共用的列.

注意 :我们也可以用JOIN来代替INNER JOIN。JOIN与INNER JOIN相同。

SQL 连接(内连接,左连接,右连接和全连接)

示例查询(内连接)

这个查询将显示注册不同课程的学生的姓名和年龄。

SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student
INNER JOIN StudentCourse
ON Student.ROLL_NO = StudentCourse.ROLL_NO;

输出 :

SQL 连接(内连接,左连接,右连接和全连接)

B. LEFT JOIN

这个联接返回联接左侧表的所有行,并匹配联接右侧表的行。对于右边没有匹配行的行,结果集将包含 null . 左连接也称为左外连接。

语法:

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1 
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;

table1: 第一个表.
table2: 第二个表
matching_column: 两个表共用的列.

注意 :我们也可以使用LEFT OUTER JOIN来代替LEFT JOIN,两者是相同的。

SQL 连接(内连接,左连接,右连接和全连接)

示例查询(LEFT JOIN) :

SELECT Student.NAME,StudentCourse.COURSE_ID 
FROM Student
LEFT JOIN StudentCourse 
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

输出 :

SQL 连接(内连接,左连接,右连接和全连接)

C. RIGHT JOIN

右连接类似于左连接。这个联接返回联接右侧表的所有行,并返回联接左侧表的匹配行。对于左侧没有匹配行的行,结果集将包含 null . 右连接也称为右外连接。

语法:

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1 
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;

table1: 第一个表.
table2: 第二个表
matching_column: 两个表共用的列.

注意 :我们也可以使用RIGHT OUTER JOIN来代替RIGHT JOIN,两者是相同的。

SQL 连接(内连接,左连接,右连接和全连接)

查询示例(RIGHT JOIN):

SELECT Student.NAME,StudentCourse.COURSE_ID 
FROM Student
RIGHT JOIN StudentCourse 
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

输出:

SQL 连接(内连接,左连接,右连接和全连接)

D. FULL JOIN

FULL JOIN通过组合LEFT JOIN和RIGHT JOIN的结果来创建结果集。结果集将包含来自两个表的所有行。对于没有匹配的行,结果集将包含 NULL values.

SQL 连接(内连接,左连接,右连接和全连接)

语法:

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1 
FULL JOIN table2
ON table1.matching_column = table2.matching_column;

table1: 第一个表.
table2: 第二个表
matching_column: 两个表共用的列.

示例查询(全部加入) :

SELECT Student.NAME,StudentCourse.COURSE_ID 
FROM Student
FULL JOIN StudentCourse 
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

输出:

NAME    COURSE_ID
HARSH   1
PRATIK  2
RIYANKA 2
DEEP    3
SAPTARHI    1
DHANRAJ NULL
ROHIT   NULL
NIRAJ   NULL
NULL    4
NULL    5
NULL    4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程