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

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

SQL语言概况(4.1)的更多相关文章

  1. 2016 - 3 - 12 SQLite的学习之SQL语言入门

    1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...

  2. SQL 语言 - 数据库系统原理

    SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...

  3. SQL语言

    SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...

  4. SQL语言分类

    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...

  5. SQL语言概述

    功能概述 DDL,数据库定义语言,创建,修改,删除数据库,表,视图,索引,约束条件等 DML,数据库操纵语言,对数据库中的数据进行增,删,改,查 DCL,数据库定义语言,对数据库总数据的访问设置权限 ...

  6. MySQL中的SQL语言

    从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 :CRE ...

  7. atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  8. SQLLite 可以通过SQL语言来访问的文件型SQL数据库

    Web Storage分为两类: - sessionStorage:数据保存在session 对象中(临时) - localStorage:数据保存在本地硬件设备中(永久) sessionStorag ...

  9. 数据库与SQL语言

    数据库(DB) :长期储存在计算机中.有组织.可共享的数据的集合. 特点:(1)数据按一定的数据模型组织.描述和储存:(2)较小的冗余度:(3)数据独立性较高:(4)易扩展:(5)可共享(不同用户可按 ...

随机推荐

  1. Eight HDU - 1043 (双向BFS)

    记得上人工智能课的时候老师讲过一个A*算法,计算估价函数(f[n]=h[n]+g[n])什么的,感觉不是很好理解,百度上好多都是用逆向BFS写的,我理解的逆向BFS应该是从终点状态出发,然后把每一种状 ...

  2. 落谷 P1734 最大约数和

    题目描述 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 输入格式 输入一个正整数S. 输出格式 输出最大的约数之和. 输入输出样例 输入 #1复制 11 输出 #1复制 ...

  3. 小L的直线

    小学时期的小L发现自己很有艺术细胞,于是买了一块画板,但是他的绘画水平使得他只能连接两点画出一条线段.有一天他决定在一张有n个点的图上作画,即他可以把这n个点任意连接.大家认为平行线是非常不美观的,于 ...

  4. CTFHub web技能树之RCE初步 命令注入+过滤cat

    在一个大佬的突然丢了个题过来,于是去玩了玩rce的两道题 大佬的博客跳转链接在此->>>大佬召唤机 叫 命令注入 一上来就是源码出现,上面有个ping的地方 <?php $re ...

  5. 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化

    Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...

  6. (转)SQLite数据库的加密

    1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...

  7. Libra白皮书解读

    文章目录 Libra简介 Libra区块链 Libra货币和存储 Libra协会 Libra简介 Libra是facebook发起的一个区块链项目,其使命是建立一套简单的.无国界的货币和为数十亿人服务 ...

  8. IDEA 之 ERROR:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

    问题描述:在使用IDEA对JSTL进行测试时出现error:无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core] ...

  9. SSH公钥登录和RSA非对称加密

    SSH登录方式 接触过Linux服务器的同学肯定用过SSH协议登录系统,通常SSH协议都有两种登录方式:密码口令登录和公钥登陆. 一.密码口令(类似于账号密码登录) 1.客户端连接服务器,服务器把公钥 ...

  10. Ansible 配置文件详解

    # config file for ansible -- http://ansible.com/ # ============================================== #  ...