程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據語言的4大類

Oracle數據語言的4大類

編輯:Oracle數據庫基礎

SQL語言一共可以分為4大類,即,Oracle數據查詢語言DQL,Oracle數據操縱語言DML, 還有數據定義語言DDL,數據控制語言DCL。其中用於定義數據的結構,比如 創建、修改或者刪除數據庫;

DCL用於定義數據庫用戶的權限;在這篇文章中我將詳細講述這兩種語言在Oracle中的使用方法。

DML語言

DML是SQL的一個子集,主要用於修改Oracle數據,下表列出了Oracle支持的DML語句。

語句 用途
INSERT 向表中添加行
UPDATE 更新存儲在表中的數據
DELETE 刪除行
SELECT FOR UPDATE 禁止其他用戶訪問DML語句正在處理的行。
LOCK TABLE 禁止其他用戶在表中使用DML語句

插入數據

INSERT語句常常用於向表中插入行,行中可以有特殊Oracle數據字段,或者可以用子查詢從已存在的數據中建立新行。

列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數據字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。

插入行的數據的數量和Oracle數據類型必須和列的數量和數據類型相匹配。不符合列定義的數據類型將對插入值實行隱式數據轉換。NULL字符串將一個NULL值插入適當的列中。關鍵字NULL常常用於表示將某列定義為NULL值。

下面的兩個例子是等價的。

  1. INSERT INTO customers(cust_id,state,post_code)  
  2. VALUE('ArIEl',NULL,'94501');  

  1. INSERT INTO customers(cust_id,state,post_code)  
  2. VALUE('ArIEl',,'94501');  

更新數據

UPDATE命令用於修改表中的Oracle數據。

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

刪除數據

DELETE語句用來從表中刪除一行或多行數據,該命令包含兩個語句:

1、關鍵字DELETE FROM後跟准備從中刪除數據的表名。

2、WHERE後跟刪除條件

  1. DELETE FROM po_lines  
  2. WHERE ship_to_state IN ('TX','NY','IL')  
  3. AND order_date< td>  

清空表

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

  1. 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、不能清空父表。

  1. SELECT FOR UPDATE 

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

鎖定表

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

  1. LOCK schema table IN lock_mode  

其中lock_mode有兩個選項:

share 共享方式

exclusive 唯一方式

例:

  1. LOCK TABLE intentory IN EXCLUSIVE MODE  

上述的相關內容就是對Oracle數據操作和控制語言詳解的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved