1. 程式人生 > >操縱數據庫 DML

操縱數據庫 DML

style 整體 set delete view 釋放 激活 匹配條件 保存

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