小資說庫第3期 你拿什么指使DBMS干活——SQL介紹

      網(wǎng)友投稿 702 2022-05-30

      在第1期中了解了什么是DBMS ,第2期中聊過數(shù)據(jù)庫的發(fā)展歷史后,這一期我們來聊一聊,你拿什么指使DBMS干活。

      日常生活中,我們相互交流,使用的是彼此都能聽得懂的語言。

      那我們要讓DBMS干活,使用什么語言來讓DBMS明白我們需要他干什么呢?是的,是結(jié)構(gòu)化查詢語言SQL(Structured Query Language)。

      SQL,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。

      SQL是高級的非過程化編程語言,它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式,即只需要發(fā)出“做什么”的命令,“怎么做”無需使用者考慮。具有完全不同底層結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng),可以支持相同的SQL作為數(shù)據(jù)輸入與管理的接口。SQL語句可以嵌套,這使它具有極大的靈活性和強大的功能。

      1986年10月,美國國家標(biāo)準(zhǔn)協(xié)會對SQL進行規(guī)范后,以此作為關(guān)系式數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言(ANSI X3. 135-1986),1987年得到國際標(biāo)準(zhǔn)組織的支持下成為國際標(biāo)準(zhǔn)。不過各種通行的數(shù)據(jù)庫系統(tǒng)在其實踐過程中都對SQL規(guī)范作了某些改編和擴充。所以,實際上不同數(shù)據(jù)庫系統(tǒng)之間的SQL不能完全相互通用。(編者注:各數(shù)據(jù)庫廠商都會提供SQL參考手冊對其所支持的SQL語法進行介紹)。

      SQL發(fā)展簡史:

      1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86

      【小資說庫】第3期 你拿什么指使DBMS干活——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)

      2003年,ISO/IEC 9075:2003,SQL:2003(SQL4)

      2011年,ISO/IEC 9075:200N,SQL:2011(SQL5)

      發(fā)展簡史背后的故事:

      在1970年代初,由IBM公司San Jose,California研究實驗室的埃德加·科德發(fā)表將數(shù)據(jù)組成表格的應(yīng)用原則(Codd's Relational Algebra)。1974年,同一實驗室的D.D.Chamberlin和R.F. Boyce對Codd's Relational Algebra在研制關(guān)系數(shù)據(jù)庫管理系統(tǒng)System R中,研制出一套規(guī)范語言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名為SQL。

      1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS數(shù)據(jù)庫系統(tǒng)中也實現(xiàn)了SQL。

      1986年10月,美國ANSI采用SQL作為關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言(ANSI X3. 135-1986),后為國際標(biāo)準(zhǔn)化組織(ISO)采納為國際標(biāo)準(zhǔn)。

      1989年,美國ANSI采納在ANSI X3.135-1989報告中定義的關(guān)系數(shù)據(jù)庫管理系統(tǒng)的SQL標(biāo)準(zhǔn)語言,稱為ANSI SQL 89,該標(biāo)準(zhǔn)替代ANSI X3.135-1986版本。且標(biāo)準(zhǔn)為下列組織所采納:國際標(biāo)準(zhǔn)化組織(ISO),為ISO 9075-1989報告“Database Language SQL With Integrity Enhancement”美國聯(lián)邦政府,發(fā)布在The Federal Information Processing Standard Publication(FIPS PUB)127

      21世紀初期主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持某些形式的SQL,大部分數(shù)據(jù)庫打算遵守ANSI SQL89標(biāo)準(zhǔn)。

      細心的讀者不難發(fā)現(xiàn),從SQL:1999開始,標(biāo)準(zhǔn)簡稱中的短橫線(-)被換成了冒號(:),而且標(biāo)準(zhǔn)制定的年份也改用四位數(shù)字了。前一個修改的原因是ISO標(biāo)準(zhǔn)習(xí)慣上采用冒號,ANSI標(biāo)準(zhǔn)則一直采用短橫線。后一個修改的原因是標(biāo)準(zhǔn)的命名也遇到了2000年問題。

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

      ISO/IEC9075-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: Java Routines and Types Using the Java Programming Language(SQL/JRT)

      ISO/IEC 9075-14: XML-Related Specifications (SQL/XML)

      負責(zé)具體制定工作的是ISO和IEC聯(lián)合成立的一個技術(shù)委員會JTC1/SC32。正因為關(guān)系數(shù)據(jù)庫市場非常成熟,競爭不夠激烈,標(biāo)準(zhǔn)本身變得過于龐大等原因,SQL3制定的周期很長,制定期間也存在很多爭議。例如文章《Is SQL a Real Standard Anymore?》對SQL標(biāo)準(zhǔn)化進程提出了置疑。

      如果要了解標(biāo)準(zhǔn)的內(nèi)容,比較推薦的方法是泛讀SQL92(因為它涉及了SQL最基礎(chǔ)和最核心的一些內(nèi)容),然后增量式的閱讀其他標(biāo)準(zhǔn)。標(biāo)準(zhǔn)在每次更新的時候,委員會的成員們都為大家提供比較好的介紹文檔。例如針對最新的SQL:2011,SIGMODRecord上就有很不錯的介紹:http://www.sigmod.org/publications/sigmod-record/1203/pdfs/10.industry.zemke.pdf

      最后再簡要介紹一下SQL標(biāo)準(zhǔn)的符合程度。絕大多數(shù)人提起SQL標(biāo)準(zhǔn),涉及的內(nèi)容其實是SQL92里頭最基本或者說最核心的一部分。SQL92本身是分級的,包括入門級、過度級、中間級和完全級。為了驗證具體的產(chǎn)品對標(biāo)準(zhǔn)的遵從程度,NIST還曾經(jīng)專門發(fā)起了一個項目,來做標(biāo)準(zhǔn)符合程度的測試集合:http://itl.nist.gov/div897/ctg/sql_form.htm。不過,SQL標(biāo)準(zhǔn)包含的內(nèi)容實在太多了,而且有很多特性對新的SQL產(chǎn)品而言也越來越不重要了。從SQL99之后,標(biāo)準(zhǔn)中符合程度的定義就不再分級,而是改成了核心兼容性和特性兼容性;也沒有機構(gòu)來推出權(quán)威的SQL標(biāo)準(zhǔn)符合程度的測試認證了。

      本帖相關(guān)參考:

      https://baike.baidu.com/item/%E7%BB%93%E6%9E%84%E5%8C%96%E6%9F%A5%E8%AF%A2%E8%AF%AD%E8%A8%80/10450182?fr=aladdin

      https://baike.baidu.com/item/%E7%BB%93%E6%9E%84%E5%8C%96%E6%9F%A5%E8%AF%A2%E8%AF%AD%E8%A8%80/10450182?fr=aladdin

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

      前期鏈接:

      【小資說庫】第1期 什么是數(shù)據(jù)庫

      【小資說庫】第2期 數(shù)據(jù)庫發(fā)展歷史

      SQL 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:淺談Vue基礎(chǔ)入門
      下一篇:新手小白如何快速獲取數(shù)據(jù)集
      相關(guān)文章
      亚洲国产精品无码久久久不卡| 亚洲人成色777777在线观看| 亚洲欧洲在线观看| 亚洲av永久无码精品网站| 亚洲精品乱码久久久久66| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲中文字幕第一页在线| 亚洲国产午夜中文字幕精品黄网站 | 五月天婷亚洲天综合网精品偷| 在线视频亚洲一区| 亚洲av麻豆aⅴ无码电影| 亚洲国产激情一区二区三区| 亚洲成A∨人片天堂网无码| 亚洲高清成人一区二区三区| 亚洲国产精品激情在线观看| 亚洲精品国产电影| 国产AV无码专区亚洲AV手机麻豆 | 精品久久亚洲中文无码| 亚洲精品人成网在线播放影院| 伊人久久五月丁香综合中文亚洲| 亚洲砖码砖专无区2023| 亚洲精品无码人妻无码| 丰满亚洲大尺度无码无码专线 | 亚洲国产精品13p| 亚洲午夜国产精品无码| 亚洲Av无码专区国产乱码DVD| 亚洲av无码乱码国产精品fc2| 亚洲综合成人网在线观看| 亚洲人妖女同在线播放| 亚洲另类无码专区丝袜| jzzijzzij在线观看亚洲熟妇| 亚洲成人国产精品| 亚洲线精品一区二区三区 | 久久亚洲AV成人无码国产| 亚洲国产日韩在线人成下载| 亚洲欧洲精品成人久久曰| 色天使亚洲综合一区二区| 亚洲午夜精品第一区二区8050| 亚洲精品午夜无码专区| 日木av无码专区亚洲av毛片| 亚洲AV无码国产精品色|