SQL92 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING

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 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING_第1张图片

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

SQL92 SQL99 语法 Oracle 、SQL Server 、MySQL 多表连接、Natural 、USING_第2张图片

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)

你可能感兴趣的:(oracle,sql,mysql)