表连接
一、表连接
- 实际查询应用中,用户需要的数据并不在一个表中,可能存在多个表中,需要多表查询。
- 数据库应用中,经常会需要从多个相关的表中查询数据,这就需要进行表连接。
二、内连接
1、语法格式
内部连接是比较常用的一种数据连接查询的方式,内部连接的语法格式如下:
格式一:
Select select_list
from 表名1,表名2
Where 表1.列=表2.列
格式二:
Select select_list
from 表名1[inner] join 表名2
on 表1.列=表2.列
2、说明
多表查询首先要在各个表之间进行连接。用户在进行基本连接操作时,可以遵循以下基本原则:
- Select子句列表中,每个目标列前都要加上基表名称
- From子句应包括所有使用的基表
- Where子句应定义一个连接
3、分类
inner join on又划分为两个分类:
(1)等值连接
在连接条件中使用比较运算符等于(=)来比较连接列的值,其查询结果中列出被连接表中的所有列。条件中只包含等号"=",没有其它符号在里面。例如:
SELECT S.学号, S.姓名, S.性别, S.籍贯, C.班级名称 C.年级 FROM 学生信息S INNER JOIN 班级信息 C ON S.班级编号=C.班级编号;
(2)非等值连接
在连接条件中使用了除等号外的其他比较运算符,还有其他的符号> 、< 、 >=来比较连接列的列值。例如:查询成绩大于30的学生个人情况(学号,姓名,性别,班级编号,成绩),并按照成绩降序排列。
三、外连接
- 外部连接会返回from子句中提到的至少一个表或视图的所有行;
- 外部连接分为左外部连接、右外部连接;
- 左外部连接对连接条件中的左边的表不加限制;
- 右外部连接对连接条件中右边的表不加限制;
- 在from之后,先写的表是左表,后写的表是右表。
1、左外连接
对左边的表不加限制,返回左表的所有行。使用关键字left outer join关键字对两个表进行连接,则结果集中的右表的相对应的位置为null。
2、右外连接
对右边的表不加限制,返回右表的所有行。使用right outer join关键字对两个表进行连接,右外连接是左外连接的反向连接,只不过在查询结果集中包括的是指定右表的所有行。如果右边的某行在左边没有找到匹配行,那结果集中的左边的相对应位置为null。
四、注意事项
- 如果查询的这个列,两个表中都有,那么在写的过程中,列的前面一定要加表名;
- 如果查询的这个列,只属于一个表中的,那就可以直接写列名;
- 进行表连接的列:列名可以不一致,但是,数据类型和值要保持一致。
欢迎批评指正,提出问题,谢谢!