zoukankan      html  css  js  c++  java
  • SQL语言概况(4.1)

    SQL语言概况(4.1)

    参考资料:

    数据库原理及设计(第3版)

    配套数据库为:microsoft sql server

    参照ANSI SQL-92标准

    4.1 SQL语言概况

    4.1.1 历史及标准简介

    一切都源于关系型数据库之父——Edgar Frank Codd 于1970年6月首次提出了关系数据模型。

    之后嘛,肯定是经历了以下这个过程:

    • 各学校、公司开始理论研究,看看这个玩意儿能不能给带来利益?!

    • 诶?!好像可以带来利益诶……那我们开发成产品商化吧,再配套一个使用工具(语言)!

    • 权威机构:麻了?!怎么发展的这么蓬勃(五花八门)?!不得行,是时候我出场统一一下标准了!

    • 基于标准开发,再来点扩展,投放市场使用……

      其它公司:诶?!好玩意儿……可是我们的开发应用要界面啊,能不能把这个嵌入到其他语言中使用?!

    • ……

    至此,我们来梳理一下真正的历史过程

    • 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完成数据操纵

    之后,我将会分块对这两个子语言进行学习……

  • 相关阅读:
    MT【274】一道漂亮的不等式题
    MT【273】2014新课标压轴题之$ln2$的估计
    MT【272】更大的视野,更好的思路.
    MT【271】一道三角最值问题
    MT【270】含参绝对值函数最大之二
    MT【269】含参函数绝对值最大
    MT【268】投篮第一次很重要
    国内下载Git的连接地址
    django 取model字段的verbose_name值
    Django报错(NoReverseMatch at /admin/)
  • 原文地址:https://www.cnblogs.com/liujiaxin-alpha/p/12769148.html
Copyright © 2011-2022 走看看