数据库多表查询概述——三种实现方式
多表查询
将多个表中的数据结合起来,进行查询,根据不同的条件,以及多种相关联的字段判定,来得到相应的数据信息
笛卡尔积
select *from People,Department
-- 我们得到的是People和Department两个表的列数据乘积 如3*4=12条数据
笛卡尔积很少使用,作为一个多表查询的开端
简单多表查询
多表查询前文已经涉及到了一部分,下面我们直接进行演示,还是使用People,[Rank],Department三个表,来进行数据查询,其中会演示多种查询的方式
-- 1.比如说,我们想要查询到People表中的员工信息,并显示部门名称
-- 我们知道的是People中的DepartmentId是Department的外键,所以我们只需要两个id相等即可
-- 用前文所学的内容,也可以实现多表查询
select *from People,Department where People.DepartmentId=Department.DepartmentId
-- 用.来表示字段属于哪一个表
-- 2.查询员工信息,显示职级
select *from People,[Rank] where People.RankId=[Rank].RankId
-- 3.查询员工信息,显示职级和部门
select *from People,Department,[Rank] where People.DepartmentId=Department.DepartmentId and People.RankId=[Rank].RankId
内连接
-- 对于上述的内容,实际上是直接对于多个表的数据展开,然后搜索符合where条件的信息,进行筛选,最后得到符合要求的表格数据
-- 接下来我们先认识 内链接,关键字为:inner join
-- 内连接是面向一个表
select *from People inner join Department on People.DepartmentId=Department.DepartmentId
-- 多个表
select *from People inner join Department on People.DepartmentId=Department.DepartmentId inner join [Rank] on People.RankId=[Rank].RankId
`简单多表查询和内连接共同特点:不符合主外键关系的数据不会显示出来