SQL92 VS SQL 99 语法
92语法
内连接
from table1, table2 where table1.col = table2.col
外连接 + 放在 从表
左连接: from table1, table2 where table1.col = table2.col(+)
右连接: from table1, table2 where table1.col(+) = table2.col
全连接 :无
99语法
内连接
[inner]JOIN … ON … ,
左连接
LEFT [OUTER] JOIN … ON … ,
右连接
RIGHT [OUTER] JOIN … ON … 和
全连接
FULL [OUTER] JOIN … ON …
SQL92连接条件 写在 where
SQL99连接条件 写在 on
Oracle 多表连接
支持 多表连接且 92、99 语法都支持
SQL Server 多表连接
支持99语法
MySQL 多表连接
支持99 内连接 、 左连接 、右连接
不支持99 全连接 需要借助 左外连接,右外连接,结合Union 、Union ALL 来实现全外连接的功能
自然连接 Nutural join
会自动把 两张 表的 所有相同字段,进行内连接
其实自然连接就是自动生成连接条件的内连接而已
select A.ID ,B.Name
from A inner B
on A.ID = B.ID
select A.ID ,B.Name
from A Natural B
USING
USING 指定了具有相同的字段名称
但 JOIN 。。。。USING 必须要有JOIN
select A.ID ,B.Name
join A ,B
on A.ID=B.ID
可以简写
select A.ID ,B.Name
join A ,B
USING(ID)