操縱數據庫 DML
DML(Data Manipulate Language)數據操縱語言,包含 insert update delete merge
對於多條DML語句,Oracle將其看作是一個整體事務進行處理,因此必須手動處理 提交 commit 與 回滾 rollback 操作。
(1) Merge : 插入所有的行到另一個具有現存記錄的表,如果要插入的行的 鍵(連接條件)匹配已存在的行,則執行更新update操作;若不匹配,則執行插入insert操作。
語法: MERGE INTO dest_table_name table_name_alias --目標表
USING (source_table_name | view_name | sub_query) source_table_name_alias --源表
ON ( join condition) -- 匹配條件
WHEN MATCHED THEN
update set
col1 = col_val1,
col2 = col_val2
WHEN NOT MATCHED THEN
insert (column_list)
values(column_values);
(2)TRUNCATE : truncate語句會刪除表中所有的行,並且釋放該表所使用的存儲空間。
truncate 語句實際上不是DML數據操縱語言的一部分,而是DDL數據定義語言的一種,與create table 等語句一樣,不具有撤銷功能,一經調用,表中的數據便被徹底刪除。
與 delete 語句相比,使用 truncate 語句速度要快一些,原因如下:
1 truncate 語句 不會激活表的刪除觸發器
2 truncate 語句屬於數據定義語言DDL語句,不會產生撤銷信息。
3 如果表是主外鍵關系的主表, 則無法刪除表的內容,必須在執行 truncate 語句之前禁用該約束。
(3)在執行 DML語句開始一個事務後, ORACLE會將舊的數據保存到 回退表空間(undo table space)中,
當用戶調用 rollback 後, ORACLE會將 回退表空間中的數據寫回到數據段中,以便取消DML語句的操作。
操縱數據庫 DML