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,....]
語法:
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;
語法:
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; --自然連接可以直接消除笛卡爾積
語法:
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後字段要用()
語法:
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消除笛卡爾積