一、表连接
前提:有时需要的数据不止在一张表中,需要多个表做结合的查询就可以用表连接实现
1、内连接
- 只显示两个表中匹配到的数值信息
- 内连接是比较常用的一种数据连接查询方式
- 表与表之间建立其关联的列,列名可以不一样,但是这两个列的数据类型和内容得保持一致;
- 内连接查询,只关联表与表中能匹配到的数据信息,才能有对应的查询结果
(1)两表连接
1)第一种
where连接
select 表名1.列名1,表名2.列名1,表名1.列名2,表名2.列名2 from 表名1,表名2 where 表名1.列名1=表名2.列名1;
2)第二种
inner join连接
select 列名 from 表名1 [inner] join 表名2 on 表名1.列名=表名2.列名;
一般用inner join 或 join 关键字来指定内连接。又可分为等值连接,非等值连接。
- 等值连接:指的是条件中只包含‘=’,没有其他符号在里面
- 非等值连接:指的是条件中,除了等号之前,还有其他的符号‘>’,’<’,’=’
(2)多表连接-表的数量>2
格式一:
select 表名.列名 from 表名1,表名2,表名3 where 表名1.列名=表名2.列 and 表名2.列=表名3.列 and 表名3.列=表名4.列;
格式二:
select 列 from 表名1 inner join 表名2 on 表名1.列=表名2.列 inner join 表名3 on 表名2.列=表名3.列;
2、外部连接
- 外部连接会返回from子句中提到的至少一个表或视图中的所有行
- 外部链接分为做外部连接、右外部连接
- 左外部连接对连接条件中左边的表不加限制
- 右外部连接对连接条件中右边的表不加限制
- 在from之后,先写的是左表后写的是右表
(1)左外部连接
显示左表的所有行,如果在右表中没有匹配到,在对应的位置上就显示为null
格式:
select 列 from 表名1 lest join 表名2 on 表名1.列=表名2.列;
(2)右外部连接
显示右表所有行,如果在左表中没有匹配到,在对应的位置上就显示为null
select 列 from 表名1 right join 表名2 on 表名1.列=表名2,列;