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

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

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

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

INNER JOIN

LEFT JOIN

RIGHT JOIN

FULL JOIN

考虑以下两个表格:

Student

StudentCourse

最简单的连接是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相同。

示例查询(内连接)

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

SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student

INNER JOIN StudentCourse

ON Student.ROLL_NO = StudentCourse.ROLL_NO;

输出 :

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,两者是相同的。

示例查询(LEFT JOIN) :

SELECT Student.NAME,StudentCourse.COURSE_ID

FROM Student

LEFT JOIN StudentCourse

ON StudentCourse.ROLL_NO = Student.ROLL_NO;

输出 :

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,两者是相同的。

查询示例(RIGHT JOIN):

SELECT Student.NAME,StudentCourse.COURSE_ID

FROM Student

RIGHT JOIN StudentCourse

ON StudentCourse.ROLL_NO = Student.ROLL_NO;

输出:

D. FULL JOIN

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

语法:

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

相关手记

菠菜365定位 小米旗下有哪些品牌 小米旗下子品牌一览表
菠菜365定位 【2025 鹿特丹】「每個人都不正常,才有複雜與美」──專訪《失明》導演周美豫
菠菜365定位 精灵宝可梦剑盾:嗡蝠捕捉攻略,教你轻松抓到它!
365APP 结婚怎么整伴娘

结婚怎么整伴娘

09-16 👁️ 8120
365APP cf游戏维护多久 了解CF游戏维护时间及注意事项
菠菜365定位 魔兽世界扔火炬任务怎么做 扔火炬任务攻略