Oracle資料操作和控制語言詳解 (一)

來源:互聯網
上載者:User

SQL語言共分為四大類:資料查詢語言DQL,資料操縱語言DML, 資料定義語言 (Data Definition Language)DDL,資料控制語言DCL。其中用於定義資料的結構,比如 建立、修改或者刪除資料庫;DCL用於定義資料庫使用者的許可權;在這篇文章中我將詳細講述這兩種語言在Oracle中的使用方法。

DML語言

  DML是SQL的一個子集,主要用於修改資料,下表列出了ORACLE支援的DML語句。

語句 用途
INSERT 向表中添加行
UPDATE 更新儲存在表中的資料
DELETE 刪除行
SELECT FOR UPDATE 禁蠱淥沒Х夢蔇ML語句正在處理的行。
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命令用於修改表中的資料。


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語句用來從表中刪除一行或多行資料,該命令包含兩個語句:

   1、關鍵字DELETE FROM後跟準備從中刪除資料的表名。

   2、WHERE後跟刪除條件


DELETE FROM po_lines
WHERE ship_to_state IN ('TX','NY','IL')
AND order_date

  清空表

  如果你想刪除表中所有資料,清空表,可以考慮使用DDL語言的TRUNCATE語句。TRUNCATE就像沒有WHERE子句的DELETE命令一樣。TRUNCATE將刪除表中所有行。TRUNCATE不是DML語句是DDL語句,他和DELETE右不同的特點。


TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE

  STORAGE子串是可選的,預設是DROP STORAGE。當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小範圍,並重新設定NEXT參數。REUSE STORAGE不會縮短表或者調整NEXT參數。

  TRUNCATE和DELETE有以下幾點區別

  1、TRUNCATE在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。

  2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。

  3、TRUNCATE將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過TRUNCATE操作後的表比DELETE操作後的表要快得多。

  4、TRUNCATE不能觸發任何DELETE觸發器。

  5、不能授予任何人清空他人的表的許可權。

  6、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。

  7、不能清空父表。

  SELECT FOR UPDATE

  select for update語句用於鎖定行,阻止其他使用者在該行上修改資料。當該行被鎖定後其他使用者可以用SELECT語句查詢該行的資料,但不能修改或鎖定該行。

  鎖定表

  LOCK語句常常用於鎖定整個表。當表被鎖定後,大多數DML語言不能在該表上使用。LOCK文法如下:


LOCK schema table IN lock_mode

  其中lock_mode有兩個選項:

   share 共用方式

   exclusive 唯一方式

  例:


LOCK TABLE intentory IN EXCLUSIVE MODE

  死結

  當兩個事務都被鎖定,並且互相都在等待另一個被解鎖,這種情況稱為死結。

  當出現死結時,ORACLE將檢測死結條件,並返回一個異常。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.