总体的语法如下:
SELECT table1.column, table2.column
FROM table1
[CROSS JOIN table2] |
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON(table1.column_name = table2.column_name)] |
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)];
交叉连接(笛卡尔积):cross join
select * from emp cross join dept;
自然连接:
对于两个表之间相同名字和数据类型的列进行的等值连接
如果两个表之间形同的名称的列的数据类型不同,则会产生错误
使用natural join子句来完成
select * from emp natural join dept;
USING子句:
自然连接时使用所有名称的数据类型相匹配的列作为连接条件,而USING子句
可以指定用某个或者某几个相同名字和数据类型的列作为连接条件
select * from emp join dept using(deptno);
使用USING子句创建连接时,应注意以下几点:
–如果有若干个列名称相同但数据类型不同,自然连接子
句可以用USING子句来替换,以指定产生等值连接的列。
–如果有多于一个列都匹配的情况,使用USING子句只能指
定其中的一列。
–USING子句中的用到的列不能使用表名和别名作为前缀。
–NATURAL JOIN子句和USING子句是相互排斥的,不能同时
使用。
ON子句:(连接条件可以写在里面,限定条件写在where里)
自然连接条件基本上是具有相同列名的表之间的等值连接;
如果要指定任意连接条件,或指定要连接的列,则可以使用ON子句;
用ON将连接条件和其它检索条件分隔开,其它检索条件写在WHERE子句;
ON子句可以提高代码的可读性。
select * from emp e join dept d on e.deptno=d.deptno where ...
左外连接:left outer join
左外连接以FROM子句中的左边表为基表,该表所有行数据按照连接条件无论是否与右边表能
匹配上,都会被显示出来。
右外连接:right outer join
右外连接以FROM子句中的右边表为基表,该表所有行数据按照连接条件无论是否与左边表能
匹配上,都会被显示出来。
全连接:full outer join
全外连接返回两个表等值连接结果,以及两个表中所有等值连接失败的记录
SELECT table1.column, table2.column
FROM table1
[CROSS JOIN table2] |
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON(table1.column_name = table2.column_name)] |
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)];
交叉连接(笛卡尔积):cross join
select * from emp cross join dept;
自然连接:
对于两个表之间相同名字和数据类型的列进行的等值连接
如果两个表之间形同的名称的列的数据类型不同,则会产生错误
使用natural join子句来完成
select * from emp natural join dept;
USING子句:
自然连接时使用所有名称的数据类型相匹配的列作为连接条件,而USING子句
可以指定用某个或者某几个相同名字和数据类型的列作为连接条件
select * from emp join dept using(deptno);
使用USING子句创建连接时,应注意以下几点:
–如果有若干个列名称相同但数据类型不同,自然连接子
句可以用USING子句来替换,以指定产生等值连接的列。
–如果有多于一个列都匹配的情况,使用USING子句只能指
定其中的一列。
–USING子句中的用到的列不能使用表名和别名作为前缀。
–NATURAL JOIN子句和USING子句是相互排斥的,不能同时
使用。
ON子句:(连接条件可以写在里面,限定条件写在where里)
自然连接条件基本上是具有相同列名的表之间的等值连接;
如果要指定任意连接条件,或指定要连接的列,则可以使用ON子句;
用ON将连接条件和其它检索条件分隔开,其它检索条件写在WHERE子句;
ON子句可以提高代码的可读性。
select * from emp e join dept d on e.deptno=d.deptno where ...
左外连接:left outer join
左外连接以FROM子句中的左边表为基表,该表所有行数据按照连接条件无论是否与右边表能
匹配上,都会被显示出来。
右外连接:right outer join
右外连接以FROM子句中的右边表为基表,该表所有行数据按照连接条件无论是否与左边表能
匹配上,都会被显示出来。
全连接:full outer join
全外连接返回两个表等值连接结果,以及两个表中所有等值连接失败的记录