【實戰(zhàn)來了】第3期:子彈時間、自由視角、沉浸式視頻...華為云媒體服務(wù)解鎖視頻體驗新角度!
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
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)容。