第12章 SQL联接
关系数据库的3个支柱:选择、投影和联接。
两种基本的连接同等联接和非同等联接。
源表和目标表有相同的名称的列,就可以在他们之间执行自然联接,而无需指定连接列。
自然join using语句
select table1.column,table2.coulmn from table1 join table2
using(join_column1)
在公共的join_column1列值上联接table1和table2
自然join on子句
select table1.column,table2.column from table1 join table2
on(table1.column_name=table2.column_name)
有三自然联接格式:natural join,join on ,join using
左外联接
select table1.column,table2.column from table1
left outer join table2
on(table1.column_name=table2.column_name)
右外连接
select table1.column,table2.column from table1,table2
table1.column_name(+)=table2.column_name
等同于:
select table1.column,table2.column from table1
right outer join table2
on(table1.column_name=table2.column_name)
全外联接
select table1.column,table2.column from table1
full outer join table2
on(table1.column_name=table2.column_name)
全外联接返回左外联接和右外联接的组合结结果。
交叉联接
select tbale1.column,table2.column from table1
cross join table2
用来确定孤立行或生成大的数据集用于测试
当使用交叉联接时就会生成笛卡尔乘积,当语句中没有足够的条件时,就会无意中创建笛卡尔乘积,没有共享相同名称的列的自然联接也会产生笛卡尔乘积。