SQL内连接(INNER JOIN)
返回两张表中符合连接条件的数据行

内连接是从结果表中删除与被连接表中未匹配行的所有行,所以内连接可能会丢失信息
写法一:
语法:SELECT * FROM 表1 INNER JOIN 表2 ON 条件
eg:查询Student 表中学生的成绩,SQL语句如下:
SELECT * FROM student INNER JOIN Score ON Student.id = Score.studentID
写法二(INNER可以省略 ):
语法:SELECT * FROM 表1 JOIN 表2 ON 条件
eg:查询Student表中学生的成绩,SQL语句如下:
SELECT * FROM Student JOIN Score ON Student.id = Score.studentID
写法三(隐式):
语法:SELECT * FROM 表1,表2 WHERE 条件
eg:查询Student表中学生的成绩,SQL语句如下:
SELECT * FROM Student,Score WHERE Student.id = Score.studentID
写法四(交叉连接):
语法:SELECT * FROM 表1 CROSS JOIN 表2 WHERE 条件
eg:查询Student表中学生的成绩,SQL语句如下:
SELECT * FROM Student CROSS JOIN Score WHERE Student.id = Score.studentID
SQL外连接(OUTER JOIN)
外连接(OUTER JOIN)分
为左连接、右连接和全连接
外连接
|
语法
|
可省略OUTER
|
左连接
|
LEFT OUTER JOIN
|
LEFT JOIN
|
右连接
|
RIGHT OUTER JOIN
|
RIGHT JOIN
|
全连接
|
FULL OUTER JOIN
|
FULL JOIN
|
左连接:返回左表中的所以行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值NULL

语法:SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 条件
eg:我们左连接Student表、Score表查询学生的成绩,SQL 语句如下:
SELECT * FROM Student LEFT OUTER JOIN Score ON Student.id = Score.studentID
右
连
接:返回右表中的所以行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值NULL

语法:SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 条件
eg:我们右连接Student表、Score表查询学生的成绩,SQL 语句如下:
SELECT * FROM Student RIGHT OUTER JOIN Score ON Student.id = Score.studentID
全连接:返回左表和右表中的所有行,当某行在另一表中没有匹配行,则另一表中的补NULL
