SQL:1999语法
多表查询的外连接用“(+)”标记,这玩意只有Oracle才有,其他的数据库比如MySQL、SqlServer,所使用的就是是这个SQL1999语法,当然Oracle也支持。
他这个语法定义的多表查询结构如下:
SQL1999语法
SELECT [DISTINCT] * |列 [别名]
FROM 表名称1
[CROSS JOIN 表名称2]
[NATURAL JOIN 表名称2]
[JOIN 表名称 NO(条件) | USING(字段)]
[LEFT | RIGHT | FULL OUTER JOIN 表名称2];
……emmm还是挺复杂的
实际上以上的语法也是由多个部分组成
- 交叉连接:CROSS JOIN, 主要的功能是产生笛卡尔积,简单的实现多表查询
- 自然连接:NATURAL JOIN,自动使用关联字段消除笛卡尔积(一般关联字段是外键,但是次处它是以名字相同为主),属于内连接的概念,在返回查询结果的时候,默认情况下会将关联字段设置在第一列,重复的列内容不再显示
- USING子句:如果说现在要在一张表里面有多个关联字段存在,可以使用USING子句明确的设置一个关联字段
- ON子句:如果现在没有关联字段,可以使用ON子句设置条件
- 外链接,在SQL:1999语法标准里面明确的定义了数据表的左外连接、右外连接、全外连接的操作
- 左外链接:LEFT OUTER JOIN
- 右外连接:RIGHT OUTER JOIN
- 全外连接:FULL OUTER JOIN
只有在SQL:1999语法里才明确的可以使用全外连接,但这样的操作几乎没啥意义