表连接 一、表连接 二、内连接 三、外连接 四、注意事项

  • 实际查询应用中,用户需要的数据并不在一个表中,可能存在多个表中,需要多表查询。
  • 数据库应用中,经常会需要从多个相关的表中查询数据,这就需要进行表连接。

二、内连接

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。

四、注意事项

  • 如果查询的这个列,两个表中都有,那么在写的过程中,列的前面一定要加表名;
  • 如果查询的这个列,只属于一个表中的,那就可以直接写列名;
  • 进行表连接的列:列名可以不一致,但是,数据类型和值要保持一致。