连接是区别关系与非关系系统的最重要的标志。通过连接运算符可以实现多个表查询。连接查询主要包括内连接、外连接等。
假设有Student和Grade两个表如下:
| sID | sName | sDept || gID | gCourse | gScore |
|1|Paul|CS| |1|Math|87||2|Oliver|MS|
|2|English|95||3|Jack|SE|
|3|Physics|76|
|4|Robin|CS| |7|Philosophy|76|
内连接
内连接(INNER JOIN)使用比较运算符进行表间列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录。
当比较操作符是=时,称为等值连接:
SELECT * FROM Student INNER JOIN Grade ON Student.sID = Grade.gID;
等价于
SELECT * FROM Student,Grade WHERE Student.sID = Grade.gID;
结果如下:
| sID |sName| sDept |gID| gCourse |gScore|
|1| Paul |CS| 1 |Math| 87 |
| 2 |Oliver| MS |2| English |95|
|3| Jack |SE| 3 |Physics| 76 |
可以看出,在内连接查询中,只有满足条件的记录才能出现在结果关系中。
外连接
与内连接不同的是,外连接返回的查询结果集中不仅包含符合连接条件的行,而且还包括左表(左连接)、右表(右连接)或两个表(全外连接)中的所有数据行。
左连接
LEFT JOIN(左连接),即LEFT OUTER JOIN,返回左表的全部记录,即使右表中没有对应匹配记录。
SELECT * FROM Student LEFT JOIN Grade ON Student.sID = Grade.gID;
结果如下:
| sID |sName| sDept |gID| gCourse |gScore|
|1| Paul |CS| 1 |Math| 87 |
| 2 |Oliver| MS |2| English |95|
|3| Jack |SE| 3 |Physics| 76 |
| 4 |Robin| CS |NULL| NULL |NULL|
右连接
RIGHT JOIN(右连接),即RIGHT OUTER JOIN,返回右表的全部记录,即使左表中没有对应匹配记录。
SELECT * FROM Student RIGHT JOIN Grade ON Student.sID = Grade.gID;
结果如下:
| sID |sName| sDept |gID| gCourse |gScore|
|1| Paul |CS| 1 |Math| 87 |
| 2 |Oliver| MS |2| English |95|
|3| Jack |SE| 3 |Physics| 76 |
| NULL |NULL| NULL |7| Philosophy |76|
全连接
FULL JOIN(全连接),即FULL OUTER JOIN,返回左表、右表的全部记录,即使没有对应的匹配记录。
**注意:**MySQL不支持FULL JOIN,不过可以通过UNION关键字来合并 LEFT JOIN 与 RIGHT JOIN来模拟。
SELECT * FROM Student LEFT JOIN Grade ON Student.sID = Grade.gID
UNION SELECT * FROM Student RIGHT JOIN Grade ON Student.sID = Grade.gID;
结果如下:
| sID |sName| sDept |gID| gCourse |gScore|
| 1 | Paul | CS | 1 | Math | 87 |
| 2 | Oliver | MS | 2 | English | 95 |
| 3 | Jack | SE | 3 | Physics | 76 |
| 4 | Robin | CS | NULL | NULL | NULL |
|NULL| NULL |NULL| 7 |Philosophy| 76 |
另外,如果在一个连接查询中涉及到的两个表是同一个表,这种查询称为自连接查询。为了防止产生二义性,自连接查询中通常对表使用别名。
自学C/C++编程难度很大,如果你想更快提升自己的编程能力和编写项目的水平,欢迎一起共同成长!
小编在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~
分享(源码、项目实战视频、项目笔记,基础入门教程)
学:
学:
转载:https://blog.csdn.net/weixin_45713725/article/details/115796809