Oracle SQL DML

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、非正常退出 iSQL
Plus , 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標識上級

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章