当前位置: 代码迷 >> SQL >> SQL:1999根本语法(学习笔记)
  详细解决方案

SQL:1999根本语法(学习笔记)

热度:9   发布时间:2016-05-05 10:54:50.0
SQL:1999基本语法(学习笔记)

SQL:1999基本语法

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]|[NATURAL JOIN表名称2 别名2][ JOIN表名称2 别名2 USING (关联列名称)][ JOIN表名称2 别名2 on (关联条件)][LEFT | RIGHT | FULL OUTER JOIN 表2 ON (关联条件)][WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 
  • 交叉连接(CROSS IN)

语法:

 

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]|[WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 

 

使用交叉连接门生笛卡尔积

SELECT * FROM emp e CROSS JOIN dept d; 

使用where消除

SELECT * FROM emp e CROSS JOIN dept dWHERE e.deptno=d.deptno; 
  • 自然连接(NATURAL JOIN)

语法:

 

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1][NATURAL JOIN表名称2 别名2][WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 

 

使用自然连接

SELECT * FROM emp  NATURAL JOIN dept;--自然连接可以直接消除笛卡尔积
  • USING子句

 

语法:

 

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1] [ JOIN表名称2 别名2 USING (关联列名称)][WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 

 

使用USING子句

SELECT * FROM emp JOIN dept USING (deptno);--USING后字段要用()
  • ON子句

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1] [ JOIN表名称2 别名2 on (关联条件)][WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 

 使用ON子句:

 

SELECT * FROM emp e JOIN dept d ON (e.deptno=d.deptno) ;--ON后是条件--()可以省略
  • 外连接

语法:

SELECT [DISTINCT] * | 列名称 [AS]别名,........FROM 表名称1 [别名1][LEFT | RIGHT | FULL OUTER JOIN 表2 ON (关联条件)][WHERE 条件(s)][ORDER BY 排序的字段 1,ASC| DESC,排序的字段2 ASC| DESC,....] 

左外连接:

SELECT * FROM emp e LEFT OUTER JOIN dept dON(e.deptno=d.deptno);--使用ON消除笛卡尔积
SELECT * FROM emp e LEFT OUTER JOIN dept dUSING (deptno);--使用USING消除笛卡尔积

右外连接:

SELECT * FROM emp e RIGHT OUTER JOIN dept dON(e.deptno=d.deptno);--使用ON消除笛卡尔积
SELECT * FROM emp e RIGHT OUTER JOIN dept dUSING (deptno);--使用USING消除笛卡尔积

全外连接:

SELECT *FROM emp e FULL OUTER JOIN dept dON(e.deptno=d.deptno);--使用ON消除笛卡尔积
SELECT *FROM emp e FULL OUTER JOIN dept dUSING (deptno);--使用USING消除笛卡尔积