1 概述
SQL是一種用於數據庫訪問的非過程化語言,用戶通過 SQL 描述其目標,之后 SQL 語言編譯器自動地生成執行過程,控制數據庫執行用戶所期望的操作。本文大致介紹oracle中涉及到的一些語句。
2 分類
2.1 數據操作語言語句
數據操作語言[Data manipulation language,DML]語句的作用是查詢或操作已有方案對象內的數據。具體可以參考下表。
關鍵詞 | 作用 |
---|---|
SELECT | 從一個或多個表或視圖中查詢數據; |
fetch | 獲取操作,是可滾動的[scrollable](見“可滾動游標”) |
INSERT | 向表或視圖中加入新數據行 |
UPDATE | 修改表或視圖中已有數據行的列值 |
MERGE | 根據判斷條件為表及視圖插入或更新數據行 |
DELETE | 從表或視圖中刪除數據行 |
EXPLAIN PLAN | 查詢 SQL 語句的執行計划[execution plan] |
LOCK TABLE | 對表或視圖加鎖[lock],臨時地限制其他用戶訪問此對象 |
DML 語句是使用頻率最高的 SQL 語句。
2.2 數據定義語言語句
數據定義語言[Data definition language,DDL]語句的作用是定義或修改方案對象[schema object]的結構,以及移除方案對象。具體可以參考下表。
關鍵詞 | 作用 |
---|---|
CREATE,ALTER,DROP | 創建,修改,移除方案對象及其他數據庫結構,包括數據庫自身及數據庫用戶 |
RENAME | 修改方案對象名稱 |
TRUNCATE | 刪除方案對象的所有數據,但不移除對象結構 |
GRANT,REVOKE | 授予或收回權限及角色 |
AUDIT,NOAUDIT | 打開或關閉審計選項 |
COMMENT | 向數據字典中添加注釋 |
DDL 語句將隱式地提交之前的操作並開始一個新事務。
2.3 事務控制語句
事務控制語句[transaction control statement]的作用是管理 DML 語句對數據的修改,以及將邏輯上相關的 DML 語句組織為事務。具體如下表。
關鍵詞 | 作用 |
---|---|
COMMIT | 將事務對數據的修改永久地保存到數據庫 |
ROLLBACK | 還原事務對數據的修改,可還原到事務開始處或任意保存點[savepoint] |
SAVEPOINT | 設置保存點以標識回滾位置 |
SET TRANSACTION | 設置事務的屬性 |
2.4 會話控制語句
會話控制語句[session control statement]用於管理用戶會話的屬性。具體如下表。
關鍵詞 | 作用 |
---|---|
ALTER SESSION | 執行特定操作,修改當前會話,例如啟用或禁用 SQL 跟蹤功能[SQL trace facility] |
SET ROLE | 為當前會話啟用或禁用角色[role](即一組權限的集合) |
2.5 系統控制語句
系統控制語句[system control statement]用於修改 Oracle 數據庫實例的屬性。
ALTER SYSTEM |用戶可以使用此語句修改實例設置(例如共享服務進程的最小數量),終止進程[kill session],或執行其他操作。
2.6 嵌入 SQL 語句
用戶可以使用嵌入 SQL 語句[embedded SQL statement]將 DDL,DML,及事務控制語句加入到以過程化語言編寫的程序中。Oracle 預編譯器[precompiler]能夠處理這樣的代碼。具體可以參考下表。
關鍵詞 | 作用 |
---|---|
DECLARE CURSOR,OPEN,CLOSE | 定義,分配,及釋放游標[cursor] |
DECLARE DATABASE,CONNECT | 選擇一個 Oracle 數據庫並進行連接 |
DECLARE STATEMENT | 分配變量名 |
DESCRIBE | 初始化描述符[descriptor] |
WHENEVER | 設定如何處理錯誤及警告 |
PREPARE,EXECUTE,EXECUTE IMMEDIATE | 解析並執行 SQL 語句 |
FETCH | 從數據庫中取回數據 |
3 總結
以上的內容參考了官方文檔,熟悉這些語句關鍵詞對於理解sql非常重要。