1.连接查询
通过连接运算符可以实现多个表查询。分为内连接、外连接、交叉连接
注:连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算
2.示例表如下
student表
score表
3.内连接
把两个表中数据对应的数据查询出来,内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分为三种:
(1)等值连接
在连接条件中使用等于号“=”运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列
SELECT *
FROM student INNER JOIN score
ON student.id = score.id
(2)自然连接
在连接条件中使用等于“=”运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列
注:自然连接仅适用于那些具有相同名称和数据类型的列。如果两个表中的列名称或数据类型不匹配,自然连接将无法执行
-- NATURAL JOIN无ON语句
SELECT *
FROM student NATURAL JOIN score
(3)不等值连接
在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>
4.外连接
以某个表为基础把对应数据查询出来,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个表(全外连接)中的所有行
(1)左外连接
SELECT *
FROM student LEFT OUTER JOIN score
ON student.id = score.id
(2)右外连接
SELECT *
FROM student RIGHT OUTER JOIN score
ON student.id = score.id
(3)全外连接
SELECT *
FROM student FULL OUTER JOIN score
ON student.id = score.id
5.交叉连接
交叉连接不带ON语句,返回被连接的两个表所有行的笛卡尔积
-- CROSS JOIN无ON语句
SELECT *
FROM student CROSS JOIN score