SQL語言共分為四大類:數據查詢語言DQL,數據操縱語言DML, 數據定義語言DDL,數據控制語言DCL。其中用于定義數據的結構,比如 創建、修改或者刪除數據庫;DCL用于定義數據庫用戶的權限;在這篇文章中我將詳細講述這兩種語言在Oracle中的使用方法。
DML語言
DML是SQL的一個子集,主要用于修改數據,下表列出了ORACLE支持的DML語句。
語句 | 用途 |
INSERT | 向表中添加行 |
UPDATE | 更新存儲在表中的數據 |
DELETE | 刪除行 |
SELECT FOR UPDATE | 禁止其他用戶訪問DML語句正在處理的行。 |
LOCK TABLE | 禁止其他用戶在表中使用DML語句 |
插入數據
INSERT語句常常用于向表中插入行,行中可以有特殊數據字段,或者可以用子查詢從已存在的數據中建立新行。
列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數據字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。
插入行的數據的數量和數據類型必須和列的數量和數據類型相匹配。不符合列定義的數據類型將對插入值實行隱式數據轉換。NULL字符串將一個NULL值插入適當的列中。關鍵字NULL常常用于表示將某列定義為NULL值。
下面的兩個例子是等價的。
INSERT INTO customers(cust_id,state,post_code) VALUE('Ariel',NULL,'94501'); |
INSERT INTO customers(cust_id,state,post_code) VALUE('Ariel',,'94501'); |
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 FROM po_lines WHERE ship_to_state IN ('TX','NY','IL') AND order_date |
TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE |
LOCK schema table IN lock_mode |
LOCK TABLE intentory IN EXCLUSIVE MODE |
語句 | 用途 |
Commit | 完成事務,數據修改成功并對其他用戶開放 |
Rollback | 撤銷事務,撤銷所有操作 |
rollback to savepoint | 撤銷在設置的回滾點以后的操作 |
set transaction | 響應事務或語句的一致性;特別對于事務使用回滾段 |
BEGIN UPDATE checking SET balance=balance-5000 WHERE aclearcase/" target="_blank" >ccount='Kieesha'; INSERT INTO checking_log(action_date,action,amount) VALUES (SYSDATE,'Transfer to brokerage',-5000); UPDATE brokerage SET cash_balance=cash_balance+5000 WHERE account='Kiesha'; INSERT INTO brokerage_log(action_date,action,amount) VALUES (SYSDATE,'Tracfer from checking',5000) COMMIT EXCEPTION WHEN OTHERS ROLLBACK END |
BEGIN INSERT INTO ATM_LOG(who,when,what,where) VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54') SAVEPOINT ATM_LOGGED; UPDATE checking SET balance=balance-100 RETURN balance INTO new_balance; IF new_balance<0 THEN ROLLBACK TO ATM_LOGGED; COMMIT RAISE insufficient_funda; END IF END |
ROLLBACK TO ATM_LOGGED; ROLLBACK TO SAVEPOINT ATM_LOGGED; |
原文轉自:http://www.anti-gravitydesign.com