绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
【小资说库】第3期 你拿什么指使DBMS干活——SQL介绍
2020-03-12 10:52:04

【摘要】 在第1期中了解了什么是DBMS ,第2期中聊过数据库的发展历史后,这一期我们来聊一聊,你拿什么指使DBMS干活。 日常生活中,我们相互交流,使用的是彼此都能听得懂的语言。 那我们要让DBMS干活,使用什么语言来让DBMS明白我们需要他干什么呢?是的,是结构化查询语言SQL(Structured Query Language)。 SQL,是一种数据库查询和程序设计...  

第1期中了解了什么是DBMS ,第2期中聊过数据库的发展历史后,这一期我们来聊一聊,你拿什么指使DBMS干活。

日常生活中,我们相互交流,使用的是彼此都能听得懂的语言。

那我们要让DBMS干活,使用什么语言来让DBMS明白我们需要他干什么呢?是的,是结构化查询语言SQL(Structured Query Language)。

SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL是的非过程化编程语言,它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,即只需要发出“做什么”的命令,“怎么做”无需使用者考虑。具有完全不同底层结构的数据库系统,可以支持相同的SQL作为数据输入与管理的接口。SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些改编和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。(编者注:各数据库厂商都会提供SQL参考手册对其所支持的SQL语法进行介绍)。


SQL发展简史:

  • 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)

发展简史背后的故事:

  • 在1970年代初,由IBM公司San Jose,California研究实验室的埃德加·科德发表将数据组成表格的应用原则(Codd's Relational Algebra)。1974年,同一实验室的D.D.Chamberlin和R.F. Boyce对Codd's Relational Algebra在研制关系数据库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。

  • 1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL。

  • 1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。

  • 1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。且标准为下列组织所采纳:国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement”美国联邦政府,发布在The Federal Information Processing Standard Publication(FIPS PUB)127

  • 21世纪初期主要的关系数据库管理系统支持某些形式的SQL,大部分数据库打算遵守ANSI SQL89标准。

细心的读者不难发现,从SQL:1999开始,标准简称中的短横线(-)被换成了冒号(:),而且标准制定的年份也改用四位数字了。前一个修改的原因是ISO标准习惯上采用冒号,ANSI标准则一直采用短横线。后一个修改的原因是标准的命名也遇到了2000年问题

SQL86大概只有几十页,SQL92正文大约有500页,而SQL99则超过了1000页。可以看出,从SQL99开始,SQL标准的个头就非常庞大了,内容包罗万象,已经没有人能够掌握标准的所有内容了。以SQL:2003为例,它包括以下9个部分(中间编号空缺是曾经被占用,之后被废弃的标准造成的):

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 * Using the Java Programming Language(SQL/JRT)

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

负责具体制定工作的是ISO和IEC联合成立的一个技术委员会JTC1/SC32。正因为关系数据库市场非常成熟,竞争不够激烈,标准本身变得过于庞大等原因,SQL3制定的周期很长,制定期间也存在很多争议。例如文章《Is SQL a Real Standard Anymore?》对SQL标准化进程提出了置疑。

如果要了解标准的内容,比较推荐的方法是泛读SQL92(因为它涉及了SQL基础和核心的一些内容),然后增量式的阅读其他标准。标准在每次更新的时候,委员会的成员们都为大家提供比较好的介绍文档。例如针对新的SQL:2011,SIGMODRecord上就有很不错的介绍:http://www.sigmod.org/publications/sigmod-record/1203/pdfs/10.industry.zemke.pdf

后再简要介绍一下SQL标准的符合程度。绝大多数人提起SQL标准,涉及的内容其实是SQL92里头基本或者说核心的一部分。SQL92本身是分级的,包括入门级、过度级、中间级和完全级。为了验证具体的产品对标准的遵从程度,NIST还曾经专门发起了一个项目,来做标准符合程度的测试集合:http://itl.nist.gov/div897/ctg/sql_form.htm。不过,SQL标准包含的内容实在太多了,而且有很多特性对新的SQL产品而言也越来越不重要了。从SQL99之后,标准中符合程度的定义就不再分级,而是改成了核心兼容性和特性兼容性;也没有机构来推出权威的SQL标准符合程度的测试认证了。

本帖相关参考:

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://bbs.huaweicloud.com/blogs/108769  作者:灵犀晨  

分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~