簡介
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的程式語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本檔案的擴展名。
1986年10月,美國國家標準協會對SQL進行規範後,以此作為關係式資料庫管理系統的標準語言(ANSI X3. 135-1986),1987年得到國際標準組織的支持下成為國際標準。
發展歷史
SQL語言的發展是從1974年開始的,其發展過程如下:
1974年由Boyce和Chamberlin提出,當時稱SEQUEL。
1976年IBM公司的Sanjase研究所在研製RDBMS SYSTEM R時改為SQL。
1979年Oracle公司發表第一個基於SQL的商業化RDBMS產品。
1982年IBM公司出版第一個RDBMS語言SQL/DS。
1985年IBM公司出版第一個RDBMS語言DB2。
1986年美國國家標準化組織ANSI宣布SQL作為資料庫工業標準。
SQL 是一種可以在資料庫中數據進行查詢、從資料庫中取回數據、在資料庫中插入新的數據記錄、更新資料庫中的數據、刪除資料庫中已有記錄的一種計算機語言。還可以創建新的資料庫,在資料庫中建表、創建存儲過程、創建視圖以及設定其許可權。所以在資料庫語言中,SQL 語言的運用是相當廣泛的。
SQL是一個標準的資料庫語言,是面向集合的描述性非過程化語言。它功能強,效率高,簡單易學易維護。然而SQL語言由於以上優點,同時也出現了這樣一個問題:它是非過程性語言,即大多數語句都是獨立執行的,與上下文無關,而絕大部分套用都是一個完整的過程,顯然用SQL完全實現這些功能是很困難的。所以大多數資料庫公司為了解決此問題,作了如下兩方面的工作:
1、擴充SQL,在SQL中引入過程性結構;
2、把SQL嵌入到高級語言中,以便一起完成一個完整的套用。
分類
統一資料庫語言包括四類種主要程式設計語言類別的語句:數據查詢語言(DQL),數據操作語言(DML)和數據定義語言(DDL)及數據控制語言(DCL)還有。
數據查詢語言DQL
數據查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE子句組成的查詢塊:
SELECT <欄位名表>
FROM <表或視圖名>
WHERE <查詢條件>
示例:查詢年齡大於28歲的所有學生的信息 SELECT * FROM student WHERE sage>28。
數據操作語言DML
數據操縱語言DML主要有三種形式:
1) 插入:INSERT
語法格式1: insert into 表名 values(值1,值2......,值n);
語法格式2: insert into 表明(欄位名1,欄位名2,......,欄位名n) values(值1,值2,......,值n)。
2) 更新:UPDATE
語法格式:update 表名 set 賦值表達式 [where 條件]
3) 刪除:DELETE
語法格式:delete from 表 [where 條件]。
數據定義語言DDL
數據定義語言DDL用來創建資料庫中的各種對象:表、視圖、索引、同義詞、聚簇等。例如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隱性提交的,不能rollback。
數據控制語言DCL
數據控制語言DCL用來授予或回收訪問資料庫的某種特權,並控制資料庫操縱事務發生的時間及效果,對資料庫實行監視等。如:
1) GRANT:授權。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一點。ROLLBACK:回滾。
回滾命令使資料庫狀態回到上次最後提交的狀態。其格式為:SQL>ROLLBACK。
3) COMMIT [WORK]:提交。
在資料庫的插入、刪除和修改操作時,只有當事務在提交到資料庫時才算完成。在事務提交前,只有運算元據庫的這個人才能有權看到所做的事情,別人只有在最後提交完成後才可以看到。提交數據有三種類型:顯式提交、隱式提交及自動提交。下面分別說明這三種類型。
(1)顯式提交
用COMMIT命令直接完成的提交為顯式提交。其格式為:SQL>COMMIT;
(2) 隱式提交
用SQL命令間接完成的提交為隱式提交。這些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自動提交
若把AUTOCOMMIT設定為ON,則在插入、修改、刪除語句執行後,系統將自動進行提交,這就是自動提交。其格式為:SQL>SET AUTOCOMMIT ON。
特點
1、語言風格統一。SQL語言將數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能於一體,語言風格統一,可以獨立完成資料庫生命周期的全部活動,包括定義數據模式、插入數據、建立資料庫、查詢、更新、維護、資料庫重構、資料庫安全性控制等一系列操作要求,這就是為資料庫套用系統開發提供了良好的環境。用戶在資料庫系統運行投入後,還可以還可以根據需要隨時、逐步地修改模式,且並不影響資料庫的運行,從而使系統具有良好的可擴展性。
2、操作過程統一。在關係模型中實體和實體間的聯繫均用關係表示,這種單一的數據結構使數據的查找、插入、刪除、修改等每一種操作都只需要一種操作符,從而克服了非關係系統的信息表示方式的多樣性帶來的操作複雜性。例如,在DBTG中,需要兩種插入操作符:STORE用來把記錄存入資料庫,COONNECT用來把記錄插入系值以建立數據之間的聯繫。非關係模型(層次模型、網狀模型)的語言一般都分為模式數據定義語言(schema data definition language,模式DDL)、外模式數據定義語言(subschema data definition languange,外模式DDL)、與數據存儲有關的描述語言(data storage description language,DSDL)及數據操縱語言(data manipulation language,DML),分別用於定義模式、外模式、內模式和進行數據的存取與處理。當用戶資料庫投入運行後,如果需要修改模式,必須停止現有資料庫的運行、存儲數據、修改模式並編譯後再從裝資料庫,十分不便。
3、高度非過程化。SQL語言進行數據操作,只需提出“做什麼”,而無需指明“怎么做”,因此無需了解具體的存取路徑,因為存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不僅大大減輕了用戶負擔,而且有利於提高數據獨立性。非關係數據模型的數據操縱語言是面向過程的語言。用戶為完成某項請求,必須自行指定詳細的存取路徑。
4、面向集合的操作方式。SQL語言採用集合操作方式,請求只需一條SELECT命令即可獲得滿足所有條件的元組集合。SQL不僅操作對象、查找結果可以是元祖的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。非關係數據模型採用的是面向記錄的操作方式,操作對象是一條記錄。例如,查詢所有平均成績再60分及以上的學生姓名,用戶必須編寫一大段處理程式,指明存取路徑和循環控制方法等,才能一條一條地把所有滿足條件地學生記錄查找出來。
5、一種語法,兩種使用方式。SQL語言既是自含式語言,又是嵌入式語言。
6、語言簡介,易學易用。