首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle DML 與 DCL 深度解析:INSERT/UPDATE/DELETE/TRUNCATE、鎖定與權限控制

     編輯:Oracle 資料庫相關知識

SQL 分四大類:DQL (查詢)、DML (操縱)、DDL (定義)、DCL (控制)。本文聚焦 DML 與 DCL 在 Oracle 實作細節。

DML 語句

語句用途
INSERT新增資料列
UPDATE修改現有資料
DELETE刪除資料列
SELECT FOR UPDATE鎖定查詢列,防他人修改
LOCK TABLE鎖定整張表,阻擋 DML

INSERT 細節

  • 欄位清單可省略 (預設全欄位),順序對應 ALL_TAB_COLUMNS 等字典視圖。
  • 值型態需匹配,否則隱性轉換;NULL 關鍵字或空字串寫入 NULL。
INSERT INTO customers(cust_id, state, post_code) VALUES('Ariel', NULL, '94501');
-- 等同
INSERT INTO customers(cust_id, state, post_code) VALUES('Ariel', , '94501');

UPDATE 範例

UPDATE order_rollup
SET (qty, price) = (SELECT SUM(qty), SUM(price) FROM order_lines WHERE customer_id='KOHL')
WHERE cust_id='KOHL' AND order_period=TO_DATE('01-Oct-2000');

DELETE 與 TRUNCATE 差異 (關鍵)

特性DELETETRUNCATE
速度逐列刪除,慢DDL,極快
ROLLBACK可回滾隱性提交,不可回滾
High Water Mark不重置重置 HWM 及索引
Trigger觸發 DELETE Trigger不觸發
權限可授予不可授予他人 TRUNCATE
外鍵限制受限父表不可 TRUNCATE
TRUNCATE TABLE [schema.]table [DROP|REUSE STORAGE];
-- DROP STORAGE (預設):釋放空間、重置 NEXT
-- REUSE STORAGE:保留空間分配

SELECT FOR UPDATE

鎖定符合條件的列,他人可查詢但不可修改/鎖定。

LOCK TABLE

LOCK TABLE [schema.]table IN lock_mode;
-- lock_mode: SHARE (共享) / EXCLUSIVE (排他)

DCL (資料控制語言)

控制用戶權限:GRANT、REVOKE、CREATE USER、ALTER USER、DROP USER、角色管理、審計等。配合 SYSDBA/SYSOPER 特權管理 (見密碼檔文章)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved