日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

数据库系统概念读书笔记-SQL标准简介

發布時間:2023/12/14 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库系统概念读书笔记-SQL标准简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL 的起源

通常認為,SQL 是 Structured Query Language 的縮寫,規范的發音是 “??s?kju???l”。但是它的前身是著名的關系數據庫原型系統 System R 所采用的 SEQUEL 語言,這也是為什么有很多人將其讀作 “?si?kw?l” 的來源。也有人類比 GNU 這個詞的定義(GNU’s Not UNIX),認為 SQL 是 SQL Query Language 的縮寫。 作為一種訪問關系型數據庫的標準語言,SQL 自問世以來得到了廣泛的應用,不僅著名的大型商用數據庫產品如 Oracle、DB2、Sybase、SQL Server 等支持它,很多開源的數據庫產品如 PostgreSQL、MySQL 等也支持它,甚至一些小型的產品如 Access 也支持 SQL。近些年蓬勃發展的 NoSQL 系統最初是宣稱不再需要 SQL 的,后來也不得不修正為 Not Only SQL,來擁抱 SQL。

藍色巨人 IBM 對關系數據庫以及 SQL 語言的形成和規范化產生了重大的影響,第一個版本的 SQL 標準 SQL86 就是基于 System R 的手冊而來的。可惜的是, IBM 起先并沒有什么產品化的想法,倒是 Oracle 富有遠見,在 1979 年率先推出了支持 SQL 的商用產品。隨著數據庫技術和應用的發展,為各種不同的關系數據庫系統提供一致的語言成了一種現實需要。

SQL 的標準化

對 SQL 標準影響最大的機構自然是那些著名的數據庫產商,而具體的制訂者則是一些非營利機構,例如國際標準化組織 ISO、美國國家標準委員會 ANSI 等。世界各國通常會按照 ISO 標準和 ANSI 標準(這兩個機構的很多標準是差不多等同的)制定自己的國家標準。中國也是 ISO 標準委員會的成員國,積極參與標準的制定工作,也會經常翻譯一些國際標準對應的中文版。標準為了避免采用具體產品的術語,往往會抽象出很多名詞,從而增加了閱讀和理解的難度,翻譯成中文之后更容易增加理解難度。對于數據庫系統實現者而言,很多時候還不如直接讀英文版本為好。雖然正式的 ISO 標準不總是像 RFC 那樣可以從網絡上免費獲得,標準草案還是比較容易找到的。待批準的標準草案和最終的標準也沒有什么實質上的區別,能夠滿足日常工作的需要。ISO 網站現在也提供了一些標準和技術報告的免費下載1。

SQL 標準的歷史

下面是 SQL 標準簡要的發展與演化歷史:

  • 1986 年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86。這是 ANSI 首次將 SQL 語言標準化的版本。
  • 1989 年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89。增加了完整性約束。
  • 1992 年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)。最重要的一個版本。 引入了標準的分級概念。
  • 1999 年,ISO/IEC 9075:1999,SQL:1999(SQL3)。變動最大的一個版本。改變了標準符合程度的定義;增加了面向對象特性、正則表達式、存儲過程、Java 等支持。
  • 2003 年,ISO/IEC 9075:2003,SQL:2003。引入了 XML、Window 函數等。
  • 2008 年,ISO/IEC 9075:2008,SQL:2008。引入了 TRUNCATE 等。
  • 2011 年,ISO/IEC 9075:2011,SQL:2011。引入了時序數據等。
  • 2016 年,ISO/IEC 9075:2016,SQL:2016。引入了 JSON 等。
    細心的讀者能發現,從 SQL:1999 開始,標準簡稱中的短橫線(-)被換成了冒號(:),而且標準制定的年份也改用四位數字了。前一個修改的原因是 ISO 標準習慣上采用冒號,ANSI 標準則一直采用短橫線。后一個修改的原因是標準的命名也遇到了 2000 年問題。

SQL86 大概只有幾十頁,SQL92 正文大約有 500 頁,而 SQL99 則超過了 1000 頁。可以看出,從 SQL99 開始,SQL 標準的個頭就非常龐大了,內容包羅萬象,可以說已經沒有人能夠掌握標準的所有內容了。以 SQL:2003 為例,它包括以下 9 個部分(中間編號空缺是曾經被占用,之后被廢棄的標準造成的):

  • ISO/IEC 9075-1: Framework (SQL/Framework)
  • ISO/IEC 9075-2: Foundation (SQL/Foundation)
  • ISO/IEC 9075-3: Call Level Interface (SQL/CLI)
  • ISO/IEC 9075-4: Persistent Stored Modules (SQL/PSM)
  • ISO/IEC 9075-9: Management of External Data (SQL/MED)
  • ISO/IEC 9075-10: Object Language Bindings (SQL/OLB)
  • ISO/IEC 9075-11: Information and Definition Schemas (SQL/Schemata)
  • ISO/IEC 9075-13: SQL Routines and Types Using the Java Programming Language (SQL/JRT)
  • ISO/IEC 9075-14: XML-Related Specifications (SQL/XML)

學習 SQL 標準

負責具體制定工作的是 ISO 和 IEC 聯合成立的一個技術委員會 JTC1/SC32。正因為關系數據庫市場非常成熟,競爭不夠激烈,標準本身變得過于龐大等原因,SQL3 制定的周期很長,制定期間也存在很多爭議。例如文章 Is SQL a Real Standard Anymore? 就對 SQL 標準化進程提出了置疑。WISCorp 2 網站曾經收集了很多相關的文檔,JCC3 網站則提供了比較新的更新。

如果要了解標準的內容,比較推薦的方法是泛讀 SQL92(因為它涉及了 SQL 最基礎和最核心的一些內容),然后增量式的閱讀其他標準。標準在每次更新的時候,委員會的成員們都為大家提供比較好的介紹文檔。例如,針對 SQL:2011,SIGMOD Record 上就有很不錯的介紹4。針對 SQL:2016,這是一個很好的更新5,這6也是一個很好的補充。

大約從 2011 年開始,標準委員會還提供了 SQL Technical Reports,雖然它們不是正式標準的一部分,但卻非常有助于理解標準。ISO 的這個網頁1提供了技術報告的免費下載,注意它們的編號是 19075,而且標題中帶 TR 這個縮寫詞。

SQL 標準的符合性

提及標準,大家容易想到的一個問題就是產品對標準的遵循程度,也就是標準的符合性到底如何,因為它會影響代碼在不同系統之間遷移的難度。很遺憾的是,SQL 標準因為定義過于寬泛等技術和非技術原因,不同產品對標準的符合程度存在很大的差異。大到功能特性,小到語法語義的細節,在不同產品之間都存在很多差異,造成實際的應用遷移遠比 C/C++ 程序的遷移要復雜很多。因此,盡管很多產品都號稱自己符合 SQL 標準,并不意味著應用可以容易的在它們之間切換。除了 Oracle、DB2 等經典的商業產品,以及 PostgreSQL、MySQL 等開源產品總體上對 SQL 標準的符合程度較高以外,很多產品提到的 SQL 標準,涉及的內容其實是 SQL92 里頭最基本或最核心的一部分(屬于入門級的范疇。SQL92 本身是分級的,包括入門級、過渡級、中間級和完全級)。

為了驗證具體的產品對標準的遵從程度,NIST 還曾經專門發起了一個項目,來做標準符合程度的測試集合7。不過,SQL 標準包含的內容實在太多了,而且有很多特性對新的 SQL 產品而言也越來越不重要了。從 SQL99 之后,標準中符合程度的定義就不再分級,而是改成了核心兼容性和特性兼容性;也沒有機構來推出權威的 SQL 標準符合程度的測試認證了。開源的 MySQL 曾經在 6.0 的開發過程中試圖大幅度改善對 SQL 標準的符合程度,不過后來似乎不了了之了。國產數據庫作為數據庫領域的后來者,曾經對標準的符合程度非常重視,還組織了專門的機構來做產品的標準符合性測試。在數據庫百科全書8中也有很多有關標準的章節。

參考:
1 http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html
2 https://www.wiscorp.com/free_downloads.html
3 http://www.jcc.com/resources/sql-standards
4 http://www.sigmod.org/publications/sigmod-record/1203/pdfs/10.industry.zemke.pdf
5 https://s3.amazonaws.com/artifacts.opencypher.org/website/materials/SQLStandards_2017-10-20.pdf
6 https://modern-sql.com/blog/2017-06/whats-new-in-sql-2016
7 http://itl.nist.gov/div897/ctg/sql_form.htm
8 http://mall.cnki.net/reference/detail_R201109078.html

總結

以上是生活随笔為你收集整理的数据库系统概念读书笔记-SQL标准简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。