Orancle的SQL語句之多表查詢和組函式
一、SQL的多表查詢:
1、左連線和右連線(不重要一方加( + ))
SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ;
(+)在等號左邊是右連線,反之左連線。
2、交叉連線( CROSS JOIN產生笛卡爾積)
SELECT * FROM emp CROSS JOIN dept ;
3、自然連線 ( NATURAL JOIN)自動關聯欄位匹配
SELECT * FROM emp NATURAL JOIN dept ;
4、USING子句、直接關聯操作列(不常用)
SELECT * FROM emp e JOIN dept d USING(deptno) WHERE deptno=30 ;
5、ON子句、使用者自己規定連線條件
SELECT * FROM emp e JOIN dept d ON(e.deptno=d.deptno) WHERE deptno=30 ;
二、組函式:
1、常用:COUNT() MAX() MIN() AVG() SUM(),
使用條件, 1、程式中存在 GROUP BY ,並且指定分組條件。 2 、單獨使用分組函式除了相等條件分組函式使用 HAVING 條件。
公式:SELECT {DISTINCT}列 FROM 表 {WHERE (s)} {GROUP BY {HAVING 分組條件 }} {ORDER BY 排序欄位 ASC|DESC , 排序欄位 ACS | DESC , … }
分組:一列上有重複內容,可以巢狀使用
=ANY等於 IN 比最大值要小、 >ALL 比最大值大、 <ALL 比最小值小
事務操作(執行以及回滾)
2、對錶的操作
插入: CREATE TABLE myemp AS SELECT * FROM emp ;(建立備份表)
INSERT INTO表名(欄位) values ( TO_DATE('2009-01-16','yyyy-mm-dd' )
更新: UPDATE表名 SET sal=5000 WHERE empno=7899;
刪除: DELETE FROM表名 WHERE 條件 ;
DROP TABLE book CASCADE CONSTRAINT ;強制刪除