1. 连接 : 将两个表 ( 或多个表 ) 中的行按照给定的条件进行拼接而形成的新表 . 连接和子查询都要操作两个类或多个表 , 他们的区别是 : 连接可以合并两个表或多个表的数据 , 而带子查询的 SELECT 语句的结果只能来自一个表 , 子查询的结果仅仅是用作筛选结果的参照 . 因为在三种子查询中 , 均是针对某个表中的某一列值来判断的 . 在查询中使用子查询可以使查询逻辑更为清晰 , 明了 . 而使用连接则具有更快的执行速度 .
通常连接可以分为以下几类 :
1). 等值连接 : 不去除重复字段
运算类型 : 双目运算
运算条件 : 两个表的某些字段值相同 ( 字段名可以不同 )
2) 自然连接 : 其结果是在共同属性上进行等值连接后再去除重复字段名后所得到的新表 .
运算类型 : 双目运算
运算条件 : 两个表具有共同属性 ( 列名相同 )
JOIN 连接 :( 建立于等值连接基础之上 )
<table_source><join_type><table_source>ON<search_condition>
|<table_source>CORSS JOIN<table_source>
|<joined_table>
Table_source 为连接的表 ,join_type 为连接的类型 ,ON 用于指定连接条件 ,join_type 的格式为 :
[INNER]{LEFT|RIGHT|FULL}[OUTER][join_hint]JOIN
3) 内连接 : 内连接按照 ON 所指定的连接条件合并两个表 ( 使用内连接后仍可以使用 WHERE), 不去除重复字段 . 内连接可操作多个表 .
运算类型 : 双目运算
4) 外连接 : 其运行结果不但包含满足连接条件的行 , 还包括相应表中的所有行 . 外连接只能操作两个表 .
运算类型 : 双目运算
外连接分类 :
* 左外连接 : 结果表中除了包含满足连接条件的行外 , 还包括左边的所有行 .
* 右边连接 : 结果表中除了包含满足连接条件的行外 , 还包括右边的所有行 .
* 完全外连接 : 结果表中除了包含满足连接条件的行外 , 还包含两个表中的所有行 .
5) 交叉连接 : 交叉连接是两个表的笛卡尔积 . 交叉表不能有条件 , 且不能带 WHERE 字句 .
通常连接可以分为以下几类 :
1). 等值连接 : 不去除重复字段
运算类型 : 双目运算
运算条件 : 两个表的某些字段值相同 ( 字段名可以不同 )
2) 自然连接 : 其结果是在共同属性上进行等值连接后再去除重复字段名后所得到的新表 .
运算类型 : 双目运算
运算条件 : 两个表具有共同属性 ( 列名相同 )
JOIN 连接 :( 建立于等值连接基础之上 )
<table_source><join_type><table_source>ON<search_condition>
|<table_source>CORSS JOIN<table_source>
|<joined_table>
Table_source 为连接的表 ,join_type 为连接的类型 ,ON 用于指定连接条件 ,join_type 的格式为 :
[INNER]{LEFT|RIGHT|FULL}[OUTER][join_hint]JOIN
3) 内连接 : 内连接按照 ON 所指定的连接条件合并两个表 ( 使用内连接后仍可以使用 WHERE), 不去除重复字段 . 内连接可操作多个表 .
运算类型 : 双目运算
4) 外连接 : 其运行结果不但包含满足连接条件的行 , 还包括相应表中的所有行 . 外连接只能操作两个表 .
运算类型 : 双目运算
外连接分类 :
* 左外连接 : 结果表中除了包含满足连接条件的行外 , 还包括左边的所有行 .
* 右边连接 : 结果表中除了包含满足连接条件的行外 , 还包括右边的所有行 .
* 完全外连接 : 结果表中除了包含满足连接条件的行外 , 还包含两个表中的所有行 .
5) 交叉连接 : 交叉连接是两个表的笛卡尔积 . 交叉表不能有条件 , 且不能带 WHERE 字句 .