千家信息网

Sql连表查询

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,1.Union:使用union是组合两张表,消去表中重复行,两张表查询的结果有相同数量的列、列类型相似;UNION ALL,不消除重复行教师表:IDName101Mrs Lee102Lucy学生表:I
千家信息网最后更新 2024年11月11日Sql连表查询

1.Union:使用union是组合两张表,消去表中重复行,两张表查询的结果有相同数量的列、列类型相似;UNION ALL,不消除重复行
教师表:

IDName
101Mrs Lee
102Lucy

学生表:

IDNameAgeCityMajorID
101Tom20BeiJing10
102Lucy18ShangHai11

SELECT Name FROM Students
UNION ALL
SELECT Name FROM Teachers
结果是:

IDName
101Tom
102Lucy
101Mrs Lee
102Lucy

2.INNER JOIN(内连接):内连接,只查匹配行
Majors表:

IDName
10English
12Computer

实例:查询学生信息,包括ID,姓名、专业名称
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students INNER JOIN Majors
ON Students.MajorID = Majors.ID
查询结果

IDNameMajorName
101TomEnglish

3.外连接 :左外连接、右外连接和全外连接,对应LEFT/RIGHT/FULL OUTER JOIN
重点:至少有一方保留全集,没有匹配行用NULL代替
1)LEFT OUTER JOIN:结果集保留左表的所有行,但只包含第二个表与第一表匹配的行。第二个表相应的空行被放入NULL值
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students LEFT JOIN Majors
ON Students.MajorID = Majors.ID
结果:

IDNameMajorName
101TomEnglish
102LucyNULL

2)RIGHT OUTER JOIN:右外连接保留了第二个表的所有行,但只包含第一个表与第二个表匹配的行。第一个表相应空行被入NULL值
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students RIGHT JOIN Majors
ON Students.MajorID = Majors.ID
结果:

IDNameMajorName
101TomEnglish
NullNULLComputer

3)FULL OUTER JOIN:把两个表所有的行都显示在结果表中
SELECT Students.ID,Students.Name,Majors.Name AS MajorName
FROM Students FULL JOIN Majors
ON Students.MajorID = Majors.ID
结果:

IDNameMajorName
101TomEnglish
102LucyNULL
NULLNULLComputer
0