文章詳情頁
Oracle數(shù)據(jù)操作和控制語言詳解 (一)
瀏覽:4日期:2023-11-17 16:22:54
SQL語言共分為四大類:數(shù)據(jù)查詢語言DQL,數(shù)據(jù)操縱語言DML, 數(shù)據(jù)定義語言DDL,數(shù)據(jù)控制語言DCL。其中用于定義數(shù)據(jù)的結構,比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫;DCL用于定義數(shù)據(jù)庫用戶的權限;在這篇文章中我將具體講述這兩種語言在Oracle中的使用方法。 DML語言DML是SQL的一個子集,主要用于修改數(shù)據(jù),下表列出了ORACLE支持的DML語句。 語句 用途 INSERT 向表中添加行 UPDATE 更新存儲在表中的數(shù)據(jù) DELETE 刪除行 SELECT FOR UPDATE 禁蠱淥沒Х夢蔇ML語句正在處理的行。 LOCK TABLE 禁止其他用戶在表中使用DML語句 插入數(shù)據(jù)INSERT語句經(jīng)常用于向表中插入行,行中可以有非凡數(shù)據(jù)字段,或者可以用子查詢從已存在的數(shù)據(jù)中建立新行。列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數(shù)據(jù)字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。插入行的數(shù)據(jù)的數(shù)量和數(shù)據(jù)類型必須和列的數(shù)量和數(shù)據(jù)類型相匹配。不符合列定義的數(shù)據(jù)類型將對插入值實行隱式數(shù)據(jù)轉換。NULL字符串將一個NULL值插入適當?shù)牧兄小Rψ諲ULL經(jīng)常用于表示將某列定義為NULL值。下面的兩個例子是等價的。 INSERT INTO customers(cust_id,state,post_code)VALUE('Ariel',NULL,'94501'); 或 INSERT INTO customers(cust_id,state,post_code)VALUE('Ariel',,'94501');更新數(shù)據(jù)UPDATE命令用于修改表中的數(shù)據(jù)。 UPDATE order_rollupSET(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')刪除數(shù)據(jù)DELETE語句用來從表中刪除一行或多行數(shù)據(jù),該命令包含兩個語句: 1、要害字DELETE FROM后跟預備從中刪除數(shù)據(jù)的表名。 2、WHERE后跟刪除條件 DELETE FROM po_linesWHERE ship_to_state IN ('TX','NY','IL')AND order_date 清空表假如你想刪除表中所有數(shù)據(jù),清空表,可以考慮使用DDL語言的TRUNCATE語句。TRUNCATE就像沒有WHERE子句的DELETE命令一樣。TRUNCATE將刪除表中所有行。TRUNCATE不是DML語句是DDL語句,他和DELETE右不同的特點。 TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE STORAGE子串是可選的,缺省是DROP STORAGE。當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小范圍,并重新設置NEXT參數(shù)。REUSE STORAGE不會縮短表或者調(diào)整NEXT參數(shù)。TRUNCATE和DELETE有以下幾點區(qū)別1、TRUNCATE在各種表上無論是大的還是小的都非常快。假如有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。3、TRUNCATE將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經(jīng)過TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能觸發(fā)任何DELETE觸發(fā)器。5、不能授予任何人清空他人的表的權限。6、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。7、不能清空父表。SELECT FOR UPDATEselect for update語句用于鎖定行,阻止其他用戶在該行上修改數(shù)據(jù)。當該行被鎖定后其他用戶可以用SELECT語句查詢該行的數(shù)據(jù),但不能修改或鎖定該行。鎖定表LOCK語句經(jīng)常用于鎖定整個表。當表被鎖定后,大多數(shù)DML語言不能在該表上使用。LOCK語法如下: LOCK schema table IN lock_mode其中l(wèi)ock_mode有兩個選項: share 共享方式 exclusive 唯一方式例: LOCK TABLE intentory IN EXCLUSIVE MODE死鎖當兩個事務都被鎖定,并且互相都在等待另一個被解鎖,這種情況稱為死鎖。當出現(xiàn)死鎖時,ORACLE將檢測死鎖條件,并返回一個異常。
標簽:
Oracle
數(shù)據(jù)庫
排行榜
