SQL是一種介於關系代數與關系演算之間的結構化查詢語言,其功能並不僅僅是查詢。SQL是一個通用的、功能極強的關系數據庫語言。SQL(Structured Query Language)結構化查詢語言,1974年Boyce和Chamberlin提出,首先在IBM 公司的關系數據庫系統System R上實現。1986年,ANSI數據庫委員會X3H2批准了SQL作為數據庫語言的美國標准,ISO隨后也提出了同樣的決定。特點:功能豐富、使用方便、靈活、語言簡潔易學,而且 應用系統范圍廣,統一標准。
1.1 SQL發展過程
1986年10月,美國國家標准協會對SQL進行規范后,以此作為關系式數據庫管理系統的標准語言(ANSI X3. 135-1986),1987年得到國際標准組織的支持下成為國際標准。
不過各種通行的數據庫系統在其實踐過程中都對SQL規范作了某些編改和擴充。所以,實際上不同數據庫系統之間的SQL不能完全相互通用。
- 1976年由Chamberlin D D等人描述的 SQL的最早版本SEQUEL2
- 1986年ANSI就制訂了美國國家標准SQL-86
- 1989年ANSI制訂官方標准SQL-89
- 1992年制訂SQL標准SQL-92
- 1999年制訂SQL標准SQL-99
- 2003年制訂SQL最新版本SQL2003
雖然有多個版本 ,但是大部分數據庫遵守ANSI SQL89標准。
1.2 SQL的特點
SQL語言之所以能夠為用戶和業界所接受,並成為國際標准,是因為它是一個綜合的、功能極強同時又簡捷易學的語言。SQL語言集數據查詢、數據操縱、數據定義和數據控制功能於一體,主要特點包括:
a.綜合統一,SQL語言集數據定義語言、數據操縱語言、數據控制語言的功能於一體,語言風格統一,可以獨立完成數據庫生命周期中的全部活動,為數據庫應用系統提供了良好的環境。用戶在數據庫系統投入運行后,還可以根據需要隨時地逐步地修改模式,且並不影響數據庫的運行,從而使系統具有良好的可擴展性。另外,在關系模式中實體和實體的聯系均用關系表示,這種數據結構的單一性帶來了數據操作符的統一,從而克服了非關系系統由於信息表示方式的多樣性帶來的操作復雜性。
b.高度非過程化,SQL語言高度非過程化,只要提出“做什么”,而無須指明“怎么做”,因此無需了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。大大減輕了用戶的負擔,也有利於提高數據獨立性。
c.面向集合的操作方式, 每一個SQL的操作對象是一個或多個關系,操作的結果也是一個關系。
d.以同一種語法結構提供兩種使用方式, SQL語言既是自含式語言,又是嵌入式語言。
e.語言簡捷、易學易用 ,SQL語言功能極強,但語言十分簡捷,完成核心功能只用了9個動詞。

1.3 SQL的基本概念
SQL語言支持關系數據庫三級模式結構。其中外模式對應於視圖和部分基本表,模式對應於基本表,內模式對應於存儲文件。
SQL支持關系數據庫三級模式結構,如下:

- 基本表:獨立存儲於數據庫中的數據表(關系),可有若干個索引。
- 索引:對表中的屬性組進行邏輯上排序,可以加快檢索速度。
- 視圖:由基表導出的虛表,數據庫中只保存視圖的定義。
- 存儲文件:以OS文件的形式保存數據庫的表、視圖、索引等數據庫對象。
舉一個最為簡單的例子,學生-選課數據庫
學生-課程模式 S-T :
學生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學生選課表:SC(Sno,Cno,Grade)
Student表

Course表

SC表

