SQL語言概況(4.1)

SQL語言概況(4.1)

參考資料:程序員

數據庫原理及設計(第3版)算法

配套數據庫爲:microsoft sql serversql

參照ANSI SQL-92標準數據庫

4.1 SQL語言概況

4.1.1 歷史及標準簡介

一切都源於關係型數據庫之父——Edgar Frank Codd 於1970年6月首次提出了關係數據模型。安全

以後嘛,確定是經歷瞭如下這個過程:數據結構

  • 各學校、公司開始理論研究,看看這個玩意兒能不能給帶來利益?!工具

  • 誒?!好像能夠帶來利益誒……那咱們開發成產品商化吧,再配套一個使用工具(語言)!學習

  • 權威機構:麻了?!怎麼發展的這麼蓬勃(五花八門)?!不得行,是時候我出場統一一下標準了!.net

  • 基於標準開發,再來點擴展,投放市場使用……設計

    其它公司:誒?!好玩意兒……但是咱們的開發應用要界面啊,能不能把這個嵌入到其餘語言中使用?!

  • ……

至此,咱們來梳理一下真正的歷史過程

  • 1974年BoyceChamberlin提出SQL

  • 20世紀70年代中期,IBM公司在研製System R 的過程當中,開發了世界上最先的SQL語言

  • 1979年,Oracle公司最早提出了商用的SQL語言

  • SQL標準變遷史

    • 1986年10月,ANSI制訂,SQL-86
    • 1989年,ANSI改進,SQL-89
    • 1992年,ANSI與ISO合做改動完善,SQL-92
    • 1999年,增長面向對象特徵擴展,提出SQL:1999
    • 2003年,SQL:2003
    • ……

    能夠說,命名就頗有意思了,就是年份結尾嘛,可是1999年開始變成四位數字,具體緣由我也是百度了一篇博客,放出來《SQL標準簡介

    https://blog.csdn.net/lengye7/article/details/80606489

    還有一點,非正式的一些稱呼

    • 第一代SQL語言,SQL1,SQL-86 & SQL-89
    • 第二代SQL語言,SQL2,SQL-92
    • 第三代SQL語言,SQL3,SQL:1999

其中,針對於SQL-92來講,絕大多數RDBMS產品不是徹底支持的,那差別通常都會體如今SQL命令的語法上面。

針對這個不徹底支持,咱們能夠從兩個方向上來看

  • SQL-92中的某些功能,在實際RDBMS中可能沒有獲得支持
  • 實際RDBMS也有可能出現該標準中沒有的功能和特性

那麼根據支持SQL-92的程度,咱們能夠分爲三種:

  • 入門(entry)級:其功能特性接近SQL-89
  • 中間(intermediate)級:包含SQL-92近一半的新特色
  • 徹底(full)版:徹底支持

所以,所給的建議是:

  • 使用具體的RDBMS時,查閱產品的技術資料
  • 加強SQL代碼的移植性,最好採用在SQL標準中也推薦的功能

4.1.2 SQL語言定義及特色

什麼是SQL語言

  • 是最流行的一種數據庫語言
  • 結構化查詢語言(structured query language
  • 是RDBMS支持的數據庫語言

不少人會跟我有同樣的疑問,爲啥叫查詢語言???

  • 首先不要被這個名字誤導了,並非它只支持查詢,它的功能還有不少,,好比數據模式定義、數據的「增、刪、改」以及安全和事務控制功能。

    因此說……一個好的名字仍是很重要的……

  • 具體緣由:從操縱數據的角度來看,查詢是最重要也是用的最多的操做(想一想大家本身管理開發的時候,是否是動不動就要查詢這個查詢那個?!)

接下來,咱們看看這個SQL語言有哪些功能特色呢

  1. 功能一體化。

    說的有點玄乎,實際上就是,它做爲數據庫語言的一種,也是遵循數據庫語言的劃分,由3個子語言構成:

    • DDL(data definition language)
    • DML(data manipulation language)
    • DCL(data control language)

    各個自語言又有不少本身的功能……

  2. 語言非過程化。

    以前咱們說過,它的名字中有結構化,那什麼是結構化,什麼是過程化呢?

    • 結構化是相對於過程化來講的
    • 過程化的語言:須要用戶在程序設計中指明程序「作什麼」,還須要程序員按照必定的算法編寫出「怎麼作」的程序來。
    • 結構化的預言(以RDBMS爲例):用戶只須要定義「作什麼」,RDBMS系統內部會解決「怎麼作」。
  3. 交互式與嵌入式使用。

    • 交互式(interactive):用戶直接在RDBMS控制檯上使用SQL語言中的SQL命令直接交互。
    • 嵌入式(embedded):在過程化語言(宿主host語言)中使用。
  4. 標準化與易移植性。

    以前,咱們也說過,各個具體的RDBMS產品中支持的SQL語言狀況是有所差別的,可是大多都能支持標準的大部分,所以,移植起來會相對容易。

4.1.3 使用說明

利用SQL語言,能夠完成關係模型的具體化,那咱們以前知道,任何模型都包括3方面的內容:

  • 數據結構
  • 完整性約束
  • 數據操縱

那麼如何將這三部分具體化呢?

這由SQL語言中的兩個子語言承擔:

  • DDL完成數據結構和完整性約束
  • DML完成數據操縱

以後,我將會分塊對這兩個子語言進行學習……

相關文章
相關標籤/搜索