文章目錄
前言
有關數據庫原理與統計的筆記,內容爲書本的原文概括。
結構化查詢語言(Structured Query Language ,SQL)是關係數據庫的標準語言,也是一個通用的、功能性極強的關係數據庫語言。其功能不僅僅是查詢,而是包括數據庫模式創建、數據庫數據的插入與修改、數據庫安全性完整性定義與控制等一系列功能。
一、SQL的產生與發展
SQL是在1974年由Boyce和Chamberlin提出的,最初叫Sequel,並在IBM公司研製的關係數據庫管理系統原型System R上實現。1986年10月,美國國家標準局(ANSI)的數據庫委員會X3H2批准了SQL作爲關係數據庫語言的美國標準,同年公佈了SQL標準文本(簡稱SQL-86)。1987年,國際標準化組織(ISO)也通過了這一標準。
SQL標準的進展過程
標準 | 大致頁數 | 發佈日期 |
---|---|---|
SQL/86 | NULL | 1986年10月 |
SQL/89(FIPS 127-1) | 120頁 | 1989年 |
SQL/92 | 622頁 | 1992年 |
SQL 99(SQL 3) | 1700頁 | 1999年 |
SQL 2003 | 3600頁 | 2003年 |
SQL 2008 | 3777頁 | 2006年 |
SQL 2011 | NULL | 2010年 |
目前,沒有一個數據庫系統能夠支持SQL標準的所有概念和特性。
大部分數據庫系統能支持SQL/92標準功能以及SQL99、SQL2003中的部分新概念。同時,許多軟件廠商對SQL基本命令集還進行了不同程度的擴充和修改,又可以支持標準以外的一些功能特性。
二、SQL的特點
SQL是一個綜合的、功能極強又簡潔易學的語言。
SQL集數據查詢、數據操縱、數據定義和數據控制於一體。
[1]. 綜合統一
數據庫系統的主要功能是通過數據庫支持的數據語言來實現的。
(1)非關係模型的數據語言類別
- 模式數據定義語言,模式DDL,Schema Data Definition Language
- 外模式數據定義語言,外模式DDL或子模式DDL,Subschema Data Definition Language
- 數據存儲有關的描述語言,DSDL,Data Storage Description Language
- 數據操縱語言,DML,Data Manipulation Laguage
(2)SQL需要的操作要求
- 定義和修改、刪除關係模式,定義和刪除視圖,插入數據,建立數據庫
- 對數據庫中的數據進行查詢和更新
- 數據庫重構和維護
- 數據庫安全性、完整性控制以及事務控制
- 嵌入式SQL和動態SQL定義
用戶在數據庫系統投入運行後還可根據需要隨時地、逐步地修改模式,並不影響數據庫的運行,從而使系統具有良好的可擴展性。
在關係模型中實體和實體之間的聯繫均用關係表示,這種數據結構的單一性帶來了數據操作符的統一性,查找、插入、刪除、更新等每一種操作都只需一種操作符,從而克服了非關係系統由於信息表示方式的多樣性帶來的操作複雜性。
[2]. 高度非過程化
用SQL進行數據操作時,只要提出做什麼,而無須指明怎麼做,因此無須瞭解存取路徑。存取路徑的選擇以及SQL的操作過程由系統自動完成。
減輕了用戶負擔,有利於提高數據獨立性。
[3]. 面向集合的操作方式
非關係數據模型採用的是面向記錄的操作方式,操作對象是一條記錄。而SQL採用集合操作方式,不僅操作對象、查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。
[4]. 以同一種語法結構提供多種使用方式
SQL能夠獨立地用於聯機交互的使用方式,用戶可以在終端上直接鍵入SQL命令對數據庫進行操作;作爲嵌入式語言,SQL語句能夠嵌入到高級語言程序中,供程序員設計程序時使用。而在來那個中不同的使用方式下,SQL的語法結果基本上是一致的。這種以統一的語法結構提供多種不同使用方式的做法,提供了極大的靈活性與方便性。
[5]. 語言簡潔,易學易用
SQL功能性極強,由於設計巧妙,語言十分簡潔,完成核心功能只用了9個動詞。
SQL功能 | 動詞 |
---|---|
數據查詢 | SELECT |
數據定義 | CREATE,DROP,ALTER |
數據操縱 | INSERT,UPDATE,DELETE |
數據控制 | GRANT,REVOKE |
三、SQL的基本概念
支持SQL的關係數據庫管理系統支持關係數據庫三級模式結構
模式包括若干基本表
內模式包括若干存儲文件
外模式包括若干視圖和部分基本表
用戶可以用SQL對基本表和視圖進行查詢或其他操作,基本表和視圖一樣都是關係。
基本表是本省獨立存在的表,在關係數據庫管理系統中一個關係就對應一個基本表。一個或多個基本表對應一個存儲文件,一個表可以帶若干索引,索引也存放在存儲文件中。
存儲文件的邏輯結構組成了關係數據庫的內模式。存儲文件的物理結構對最終用戶是隱蔽的。
視圖是從一個或幾個基本表等同,用戶可以在視圖上再定義視圖。