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 d WHERE 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 d ON(e.deptno=d.deptno); --使用ON消除笛卡尔积
SELECT * FROM emp e LEFT OUTER JOIN dept d USING (deptno); --使用USING消除笛卡尔积
右外连接:
SELECT * FROM emp e RIGHT OUTER JOIN dept d ON(e.deptno=d.deptno); --使用ON消除笛卡尔积
SELECT * FROM emp e RIGHT OUTER JOIN dept d USING (deptno); --使用USING消除笛卡尔积
全外连接:
SELECT * FROM emp e FULL OUTER JOIN dept d ON(e.deptno=d.deptno); --使用ON消除笛卡尔积
SELECT * FROM emp e FULL OUTER JOIN dept d USING (deptno); --使用USING消除笛卡尔积