1. 程式人生 > >SQL:1999基本語法

SQL:1999基本語法

sele pre 卡爾 tro lec 字段 des 自然連接 desc

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消除笛卡爾積

SQL:1999基本語法