一.笛卡尔乘积
同时查询两张表中的数据时,显示的查询结果会是两张表中所有数据进行排列组合之后形成的记录,最后显示出的查询结果的计算方式为:第一张表中的总数据数*第二张表中的总数据数
(若第一张表中有10条数据,第二张表中也有10条数据,那么最后会出现100条数据)
例如我们要同时查询Student表和Class表中的所有数据
select * from Student,Class
二.多表查询
1.两表查询并且只显示一列符合条件的数据
例如查询学生信息并且显示他们的班级
select * from Student,Class
where Student.ClassId = Class.ClassId
2.三表查询并且显示两列符合条件的数据
例如查询学生信息并且显示他们的班级和成绩
select * from Student,Class
where Student.ClassId = Class.ClassId
and Student.Score = Rank.Score
三.内连接查询
1.只链接一张表
使用inner join链接要查询的另一张表,使用on关键字对我们要进行查询的数据设置条件
例如同样是查询学生信息并且显示他们的班级
select * from Student
inner join Class on Student.ClassId = Class.ClassId
2.连接多张表
例如同样是查询学生信息并且显示他们的班级和成绩
select * from Student
inner join Class on Student.ClassId = Class.ClassId
inner join Rank on Student.Score = Rank.Score
注意点:无论是多表查询还是内连接,如果数据不符合主外键的关系,那么它是不会被显示出来的
四.外连接查询
1.左外连接
以左表为主表显示数据,如果不满足主外键关系则显示null
左表:在我们同时查询Student表和Class表时写做select * from Student,Class,此时Student表就为左表
与内连接的区别:将inner join改为了left join
例如同样是查询学生信息并且显示他们的班级
select * from Student
left join Class on Student.ClassId = Class.ClassId
2.右外连接
以右表为主表显示数据,如果不满足主外键关系则显示null
右表:在我们同时查询Student表和Class表时写做select * from Student,Class,此时Class表就为右表
与内连接的区别:将inner join改为了right join
例如同样是查询学生信息并且显示他们的班级
select * from Student
right join Class on Student.ClassId = Class.ClassId
3.全外连接
无论两张表中的数据是否符合关系都要显示
使用的关键字为full join
例如同样是查询学生信息并且显示他们的班级
select * from Student
full join Class on Student.ClassId = Class.ClassId