实现在一个查询语句中显示多张表的数据,这就是多表数据记录连接查询,简称为连接查询。
连接操作是关系数据操作中专门用于数据库操作的关系运算。
1、并(UNION)
“并”是指把具有相同字段数目和字段类型的表合并到一起。
合并查询数据记录语法形式:
select field1,field2,...,fieldn from table_name1
union|union all
select field1,field2,...,fieldn from table_name2
union|union all
select field1,field2,...,fieldn from table_name3
...
关键字union会把查询结果集直接合并在一起,同时将会去掉重复数据记录。关键字union all会直接把查询结果集放一起。
2、笛卡尔积(CARTESIAN PRODUCT)
笛卡尔积是没有连接条件表关系返回的结果。
3、内连接(INNER JOIN)
在表关系的笛卡尔积数据记录中,保留表关系中所有匹配的数据记录,舍弃不匹配的数据记录。按匹配的条件可以分成自然连接、等值连接和不等连接。
实现内连接查询的两种方式:
- 在from子句中利用逗号区分多个表,在where子句中通过逻辑表达式来实现匹配条件,从而实现表的连接。
- ANSI连接语法形式,在from子句中使用join...on关键字,而连接条件写在关键字on子句中
INNER JOIN ON语法形式:
select field1,field2,...,fieldn from join_tablename1 inner join join_tablename2 [inner join join_tablename] on join_condition;
自然连接(NATURE JOIN)
根据表关系中相同名称的字段自动进行记录匹配,然后去掉重复的字段
等值连接
等值连接是在表关系的笛卡尔积中,选择匹配字段值相等的数据记录。
不等连接
不等连接是在表关系的笛卡尔积中,选择所匹配字段值不相等的数据记录。
4、外连接(OUTER JOIN)
外连接是指在表关系的笛卡尔积中,不仅保留所匹配的数据记录,而且还会保留部分不匹配的数据记录。
语法形式:
select field1,field2,...,fieldn from join_tablename1 left|right [outer] join join_tablename2 on join_condition;
左外连接(LEFT OUTER JOIN)
在外连接是指在表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联左边表中不匹配的数据记录。
右外连接(RIGHT OUTER JOIN)
右外连接是指在表关系的笛卡尔积中,除了选择相匹配的数据记录,还包含关联右边表中不匹配的数据记录。