Oracle SQL DML語句
insert
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
也可以只寫table名,但是後面的values要按照順序,並且要寫入全部數據,如果數據爲空,也必須顯式null。
也可以複製
INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
update
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
值得注意的是,如果表中存在某些約束,是會出錯的。
delete
DELETE [FROM] table
[WHERE condition];
事務處理
Commit, rollback 是顯式的提交和回滾語句,還有一些隱式的提交和回滾是大家需要知道並引起注意的:
當如下事件發生是,會隱式的執行Commit動作:
1、數據定義語句被執行的時候,比如新建一張表:Create Table …
2、數據控制語句被執行的時候,比如賦權 GRANT …( 或者 DENY)
3、正常退出 iSQLPlus 或者PLSQL DEVELOPER, 而沒有顯式的執行 COMMIT 或者 ROLLBACK 語句 。
當如下事件發生時,會隱式執行Rollback 動作:
1、非正常退出 iSQLPlus , PLSQL DEVELOPER, 或者發生系統錯誤。
在Commit 或者 Rollback前後數據的狀態:
1、在數據已經被更改,但沒有Commit前 ,被更改記錄處於被鎖定狀態,其他用戶無法進行更改;
2、在數據已經被更改,但沒有Commit前 ,只有當前Session的用戶可以看到這種變更 ,其他Session的用戶
看不到數據的變化。
3、在數據已經被更改,並且被Commit後,被更改記錄自動解鎖,其他用戶可以進行更改;
4、在數據已經被更改,並且被Commit後,其他Session的用戶再次訪問這些數據時,看到的是變化後的數據。
集合操作
union
並集,去除重複
union all
所有記錄都保存
intersect
取交集
minus
取差集
rollup
分層統計,總和和分開
cube
組合加分層
有意思的遞歸
SELECT last_name||' reports to '||
PRIOR last_name "Walk Top DownFROM employees
START WITH last_name = 'King'
connect by prior employee_id = manager_id ;
生成遞歸查詢的結果,
常用於家譜,公司職位樹的建立
prior標識上級