1986年10月,美國國家標准協會對SQL進行規范后,以此作為關系式數據庫管理系統的標准語言,1987年在國際標准組織的支持下成為國際標准。不過各種通行的數據庫系統其實在實踐過程中都對SQL規范的作了某些編改和擴充。所以,實際上不同數據庫系統之間的SQL不能完全相互通用。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS數據庫系統中也實現了SQL。我們知道關系型數據庫都遵循了ACID原則,且都統一的實現了SQL語句,以SQL語句為核心來實現數據的操作,在Oracle中的SQL語句與常見的數據庫的SQL語句是有點不同的。
SQL簡介:
SQL(Structured Query Language)又叫“結構化查詢語言”,簡稱:SQL。SQL是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,是用於存取數據、查詢數據、更新數據和刪除數據的管理關系數據庫系統語言。同時也是關系型數據庫腳本文件的擴展名(.sql)。
Oracle中SQL的分類:
在Oracle中SQL的整體結構如下:
數據定義語言(DDL:Date Definition Language)
用來創建、修改或刪除表對象(庫對象),管理表對象(庫對象)。
包含:CREATE(創建)、ALTER(修改)、DROP(刪除)、TRUNCATE(清空)等。
數據操作語言(DML:Date Manipulation Language)
用來添加、更新和刪除表對象內的數據。
包含:INSERT(插入)、UPDATE(修改)、DELETE(刪除)、MERGE(合並新舊數據)等。
數據查詢語言(DQL:Date Query Language)
用來檢索(查看)數據庫中的數據。
包含:SELECT(查詢)、FROM(子句;后跟表名)、WHERE(子句;后跟查詢條件)、以及很多用於方便檢索用到的函數與檢索算法。
數據控制語言(DCL:Date Control Language)
用於DBA執行權限授予和權限收回操作。
包含:GRANT(授予)、REVOKE(撤銷)等。
事務控制語言(TCL:Transaction Control Language)
用於維護數據的一致性。
包含:
COMMIT:確認和提交已經進行的數據庫改變
ROLLBACK:撤銷已經控模型的數據庫的改變
SAVEPOINT:設置保存點,取消部分數據庫改變
ROLLBACK TO SAVEPOINT:ROLLBACK會結束一個事物,而這個命令不會
SET TRANSACTION:設置一個事物的屬性(事物的隔離級別)
READ COMMITTED:提交讀,Oracle 默認的級別
SET CONSTRAINT:在每個DML語句之后或事物提交之后,執行可延遲完整性的約束檢查
(注意:在Oracle中DDL是不需要TCL來提交事務的,因為DDL操作完成就直接默認會提交事務。)
在Oracle中,一般用DDL來創建並定義表對象,用DML來操作表中的數據、用TCL來提交保存、最后用DQL來獲取(查詢)我們存入的數據。至於DCL的好處是用來分層管理,給各個用戶之間權限的,一般我們授權或者撤銷權限都要用到SYS用戶的SYSDBA權限。
除了TCL,Oracle中還獨有會話控制語句(SCS:Session Control Statement)與嵌入式SQL語句(ESS:Embedded SQL Statement)。
會話控制語句(SCS;Session Control Statement):
ALTER SESSION:改變當前會話設置
SET ROLE:啟用和禁用角色
ALTER SYSTEM:更改系統設置(不會隱式提交當前事物)
嵌入式SQL語句(ESS:Embedded SQL Statement):
OPEN、CLOSE、CONNECT、DESCRIBE、WHENEVER、PREPARE、EXECUTE、FETCH
定義、分配、和釋放游標:DECLARE CURSOR、OPEN、CLOSE
指定一個數據庫,並連接到該數據庫:DECLARE DATABASE、CONNECT
初始化描述符:DESCRIBE
指定如何處理錯誤和警告:WHENEVE
分析並運行SQL 語句:PREPARE、EXECUTE、EXECUTE IMMEDIATE
從數據庫中檢索數據:FETCH
此外,Oracle還對標准數據庫語言SQL進行了擴展,把數據庫技術和過程化程序設計語言聯系起來。
過程化SQL語言(PL/SQL):PL/SQL是專用於Oracle服務器,在SQL基礎之上,添加了一些過程化控制語句,叫PLSQL,過程化包括有:類型定義,判斷,循環,游標,異常或例外處理等等,PLSQL主要強調過程。