广告
返回顶部
首页 > 资讯 > 数据库 >SQL的重要性有哪些
  • 832
分享到

SQL的重要性有哪些

2024-04-02 19:04:59 832人浏览 泡泡鱼
摘要

这篇文章主要介绍“sql的重要性有哪些”,在日常操作中,相信很多人在SQL的重要性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL的重要性有哪些”的疑惑有所帮助!接

这篇文章主要介绍“sql的重要性有哪些”,在日常操作中,相信很多人在SQL的重要性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL的重要性有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1971年3月,英特尔公司推出了世界上第一个通用微处理器,即英特尔4004,它有2300个晶体管,售价60美元。将时间快进50年左右,最新的苹果手机有将近120亿个晶体管(可惜比60美元更贵一些)。

直至90年代,许多我们目前使用的编程语言才被引入(Java是1996年引入的)。然而,有一种编程语言50年前就被引入,但热度仍然不减当年,那就是SQL。

早期数据库管理史——IDS和CODASYL

SQL的重要性有哪些

1962年,查尔斯·W·巴赫曼(Charles W.Bachman)(与硅谷的埃里希·巴赫曼[ErlichBachman]非亲)是通用电气公司一个小团队的成员。一年后,巴赫曼的团队推出了集成数据储存系统(IDS),该系统后来被公认为首个数据库管理系统。

10年后,巴赫曼获得了众人向往不已的图灵奖,也称为计算机科学领域的诺贝尔奖,以此表彰他对IDS计算的贡献。

什么是IDS?

20世纪60年代初,计算机科学才刚刚开始成为一个学术领域。在这样的大背景下,美国信息交换标准代码(ASCII)直到1963年才被引入。要想理解IDS,我们得先了解促进其发展的两个主要动力:

  • 磁盘存储器的引入

  • 向高水平编程的转变

磁盘存储器

SQL的重要性有哪些

图:工人正在搬动一台RAMac305

1956年,IBM推出了第一个商用硬盘驱动器——RAMAC 305。磁盘驱动器的引入,使程序员能直接跳转到磁盘的某个位置来检索和更新数据。相比它的前身磁带驱动器,这是一个巨大的进步,后者需要在磁带中顺序移动来检索一个特定片段的数据。

但目前开发者必须找出磁盘上存储记录的位置。由于早期操作系统中的文件管理系统具有局限性,这是一项只有经验丰富的程序员才能完成的高级任务。开发者需要一个解决方案,以简化磁盘驱动器的运作。

高水平编程

与此同时,在采用曲线上,计算机科学开始从创新者向早期采用者转变。像Assembly这样的低级编程语言在早期学术领域内很流行,但普通程序员会转而使用更高级的编程语言,如COBOL,因为其更易使用。

什么是IDS?IDS解决了磁盘存储和高级编程问题,允许开发者使用COBOL之类的高级编程语言,以此来构建应用程序,从磁盘存储中输入及检索数据。由于这个功能,IDS成为了第一个数据库管理系统。

CODASYL——数据库管理的新标准

1969年,数据系统语言委员会(CODASYL)发布了一份报告,提出了一个数据库管理的标准。巴赫曼是该委员会的一员,且该报告大量引用了IDS。

CODASYL数据模型引入了许多如今数据库管理系统的核心特性:

  • 模式数据定义语言(DDL)

  • 数据操作语言(DML)

最重要的是,IDS和CODASYL引入了一种新的数据建模方法,这种方法影响了SQL的最终开发,即网络数据模型。

网络数据模型——比如今的关系模型更胜一筹?

SQL的重要性有哪些

图:网络模型范例

数据模型是用于描述(模拟)世界(数据)的标准方法。

从前的分层数据模型使用树状结构来描述数据,但其仅限于一对多的关系。新的网络模型允许子记录有多个父记录,从而创建一个图形结构。通过允许多个父记录,网络模型能对多对一和多对多的关系进行建模。

在网络模型中,表之间的关系存储于集合中。每个集合都有一个所有者(即教师)和一个或多个成员(即班级和学生)。

网络模型的一个关键优势是,集合中的相关记录是通过指针直接连接的。集合是通过next,prior,以及owner指针实现的,能像链表一样方便遍历。

网络数据模型的底层特性提供了性能上的益处,但这是有代价的。网络数据模型增加了存储成本,因为每条记录都必须存储额外指针,这些指针指向先前的记录和父记录。

关系模型的来临

SQL的重要性有哪些

图:关系模型的范例

1970年,在IDS之后的8年, 埃德加· F· 科德(Edgar F. Codd)在他的开创性论文《大型共享数据库的数据关系模型》中引入了关系模型(这篇论文也让他和巴赫曼一样,成为了图灵奖得主)。

科德表明,数据库里所有的数据都能用元组(SQL中的行)表示,这些元组被分组为关系(SQL中的表)。为了描述数据库查询,他发明了一阶谓语逻辑的形式,叫元组关系演算。

元组关系演算引入了一种用于查询数据的声明式语言。声明式编程语言使程序员可以在不描述“如何做”的情况下,直接说出他们“想做什么”。

这种新的声明式语言对开发者来说更容易使用。关系模型公开展示了所有数据。开发者能从表中检索所有数据,或在单个命令中读取单个行(多亏查询优化器)。跟着指针迷宫寻找数据的日子已经一去不复返了。

关系数据模型vs.网络数据模型

通过规范数据,关系数据库能降低网络数据库的高存储成本。规范化是一个分解表以消除冗余的过程,从而减少数据占用的磁盘空间。

然而,关系数据库增加了CPU成本。为了运行规范化数据,关系数据库必须将表加载到内存中,并使用计算能力将表“连接”在一起。让我们通过一个关系模型来完成为某个特定教师找到所有班级和学生这一过程。

数据库系统首先会执行一个操作来检索所有相关的班级。接着,它的第二步操作就是检索学生数据。所有的数据都会被存储到内存中,在返还结果前,它会进行第三步操作来合并数据。

SQL的重要性有哪些

关系模型和网络模型性能对比图

在使用真实数据的性能案例研究中,雷玛数据管理公司(Raima)发现,网络数据库模型的插入性能优于实际数据23倍,且查询数据的速度比实际数据快123倍。

所以,为什么关系数据库会成为领先的数据库解决方案呢?

  • 易用性

关系模型能更加灵活地应对变化,而且它的声明句法简化了程序员的工作。摩尔定律在其背后发挥着神奇的作用。计算成本持续降低,最终,关系模型中增加的计算成本与生产力提高所带来的收益相抵消。时间再快进50年,如今,数据中心最昂贵的资源就是CPU。

  • SQL时代的崛起

SQL的重要性有哪些

在科德的文章发表4年后,唐纳德·张伯伦(Donald Chamberlin)和雷蒙德·博伊斯(Raymond Boyce)发表了《SEQUEL:结构化英语查询语言》。

他们将SEQUEL描述为“一组在一阶谓语演算幂上的…关于表格结构的简单操作”。IBM发现了这种潜力,并在20世纪70年代初迅速开发了第一版SEQUEL,作为其System R项目的一部分。

后来之所以更名为SQL,是因为与英国供应商霍克西德利飞机公司(Hawker Siddeley)存在商标纠纷。SQL的下一次飞跃是在近十年后了。1986年,美国国家标准协会(ANSI)和国际标准化组织(ISO)发布了第一个官方的SQL标准:SQL-86。该标准将SQL分割成以下几个部分:

  • 数据定义语言(DDL):用于定义和修改模式和关系的命令。

  • 数据操作语言(DML):用于从数据库中查询、插入和删除信息的命令。

  • 事务控制:指定事务时间的命令。

  • 完整性:在数据库信息中设置约束的命令。

  • 视图:用于定义视图的命令。

  • 权限:指定用户访问的命令

  • 嵌入式SQL:指定如何在其他语言中嵌入SQL的命令。

1974年至今,无数竞争者试图从占统治地位的查询语言SQL手中夺取市场份额。这些新的句法通常针对特定的新技术:

Lisp -> CLSQL.net -> LINQRuby on Rails -> ActiveRecord

35年之后,SQL仍然在数据库中无所不在。它是如何保持其作为查询语言的统治地位的,我们又能从它的故事中学到什么?

SQL统治50年的秘诀——我们能从中学到什么?

SQL的重要性有哪些

图:2017年堆栈溢出开发者调查

我们从巴赫曼引入第一个数据库管理系统IDS讲起,讨论了从磁盘存储向高级编程转变,催生了对处理数据新方法的需求。接着迎来了CODASYL和标准化数据库管理。IDS和CODASYL引入了新的网络数据模型。最终,科德放弃了关系模型。这一切发展用了超过8年的时间。

SQL是如何成功在后来的50年间保持流行的?我认为有4个主要原因:

  • 建立在基本原则之上

基本原则是一个基本命题,不能从其他任何命题或假设中推导出来。例如,将碳氢化合物和氧气结合,产生化学反应,这仍然是驱动每辆汽车内燃机的原理。

1970年,科德创造了新的数据库基本原则:元组关系演算。这个新逻辑的创建产生了关系模型,之后引出了SQL。元组关系演算就是化学反应,关系模型就是内燃机,而SQL就是汽车。

  • 布什内尔定理

仅仅建立在基本原则的基础上不能保证成功。Assembly是程序员能做出的最接近1和0的程序,但仍然被COBOL(以及后来的C)所取代,其中缺失的成分就是易用性。

无独有偶,在从网络模型到关系模型的转变中,网络模型性能更好,但如今每家公司都在使用关系数据库,因为它更容易(上手)。

Assembly不仅精通难,入门也很难。SQL在二者之间达到了完美的平衡。通过10个左右的SQL命令,任何人都能学会20%,然后进阶到80%,但要想成为一名大师,需要经过长期的索引、视图和优化过程。

  • 倾听和适应

查询语言不是永恒的单一语言,而是一组与时俱进的适应性标准。SQL标准一直在随时间进行调整,并吸收来自用户的反馈。

从最初的概念以来,我们已经看到了10种不同的SQL标准,每种都做出了重要的改变。以下是其中的3大更新:

1.SQL:1999:添加了正则表达式匹配、递归查询(如传递闭包)、触发器、对过程语句和流控制语句的支持、非标量类型(数组)和一些面向对象特性(如结构化类型)。支持在Java中嵌入SQL(SQL/OLB),反之亦然(SQL/JRT)。

2.SQL:2003:引入了与XML相关的特性(SQL/XML)、窗口函数、标准化序列和自动生成值的列(包括标识列)。

3.SQL:2016:增加行模式匹配、多态表函数、JSON

SQL还展示了创造轨道的能力,且其他产品都建立在该轨道之上。SQL没有需要强制执行的语法,而是为每个数据库提供一个标准,让其完成自我实现(T-SQL, Mysql, PSQL, etc)。

SQL成功的最后一个秘诀,是应用程序编程接口(API)的兴起。API通过抽象底层操作简化了编程,只公开开发人员需要的对象或操作。API使SQL得以使用特定句法来持续适应新科技。

2006年,hadoop引入了分布式文件系统(hdfs),起初SQL句法无法访问该系统。然而到了2013年,Apache创建了Apache Impala,使开发者可以使用SQL来查询HDFS数据库。

SQL是如今最普遍使用的编程语言之一,我们不该忘记它悠久的历史。它的旅程始于现代计算的黎明,在两位图灵奖得主的努力下焕发生机。

到此,关于“SQL的重要性有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: SQL的重要性有哪些

本文链接: https://www.lsjlt.com/news/61580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL的重要性有哪些
    这篇文章主要介绍“SQL的重要性有哪些”,在日常操作中,相信很多人在SQL的重要性有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL的重要性有哪些”的疑惑有所帮助!接...
    99+
    2022-10-18
  • IP的重要性有哪些
    这篇文章给大家分享的是有关IP的重要性有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。IP对我们非常重要,虽然我们在使用它时并不太注意,但如果没有ip,我们将无法建立许多网络行为。让我们来看看极光HTTP代理...
    99+
    2023-06-15
  • ADO.NET有哪些重要特性
    这篇文章主要讲解了“ADO.NET有哪些重要特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET有哪些重要特性”吧!对于微软出来的调用ADO.NET的使用说明,及MSDN站点都推...
    99+
    2023-06-17
  • Linux备份的重要性有哪些
    本篇内容主要讲解“Linux备份的重要性有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux备份的重要性有哪些”吧! Li...
    99+
    2023-03-13
    linux
  • 负载均衡的重要性有哪些
    负载均衡的重要性有以下几个方面:1. 提高系统可用性:负载均衡将请求分发到多个服务器上,当某个服务器出现故障或负载过高时,可以自动将...
    99+
    2023-09-01
    负载均衡
  • 网站优化的重要性有哪些
    本篇内容主要讲解“网站优化的重要性有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“网站优化的重要性有哪些”吧!提高用户粘性用户粘性包含了多方面的内容,也可以...
    99+
    2022-10-19
  • Python代码一致性的重要性有哪些
    本篇内容主要讲解“Python代码一致性的重要性有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python代码一致性的重要性有哪些”吧!面对歧义,要拒绝猜测的诱惑In the face o...
    99+
    2023-06-15
  • go语言的最重要特性有哪些
    本文小编为大家详细介绍“go语言的最重要特性有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言的最重要特性有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。go语言最重要特性是:1、并发编程;go语...
    99+
    2023-07-04
  • 重要的Python库有哪些
    这篇文章主要讲解了“重要的Python库有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“重要的Python库有哪些”吧!01 NumPyhttp://numpy.orgNumPy是Num...
    99+
    2023-06-15
  • 分布式数据库的重要性有哪些
    本篇内容介绍了“分布式数据库的重要性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!记得两三年前,当人...
    99+
    2022-10-18
  • sql去重的方式有哪些
    在 SQL 中,可以使用以下几种方式来去重:1. 使用 DISTINCT 关键字:使用 SELECT DISTINCT 列名...
    99+
    2023-08-08
    sql
  • PHP有哪些重要库
    这篇文章主要讲解了“PHP有哪些重要库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP有哪些重要库”吧!  1.PChart  PChart是一个令人印...
    99+
    2022-10-18
  • SQL去重方法有哪些
    这篇文章给大家分享的是有关SQL去重方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。在 MySQL 中...
    99+
    2023-06-22
  • 外链对网站建设的重要性有哪些
    这篇文章主要为大家展示了“外链对网站建设的重要性有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“外链对网站建设的重要性有哪些”这篇文章吧。什么是外链 一、首先我们要理解什么是外链? 外链是指...
    99+
    2023-06-10
  • 重要的Python技能有哪些
    这篇文章主要讲解了“重要的Python技能有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“重要的Python技能有哪些”吧!1、拉姆达函数(Lambda Functions)拉姆达函数非...
    99+
    2023-06-16
  • NoSQL的重要理论有哪些
    这篇文章主要介绍了NoSQL的重要理论有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。    1.CAP理论    CAP理论无疑是导致...
    99+
    2022-10-19
  • 有哪些重要的Python技巧
    本篇内容介绍了“有哪些重要的Python技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、变量的交换a = 1&nb...
    99+
    2023-06-16
  • Python重要的功能有哪些
    这篇文章主要介绍“Python重要的功能有哪些”,在日常操作中,相信很多人在Python重要的功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python重要的功能有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • sql中去重的方式有哪些
    在SQL中,可以使用以下方式进行去重:1. 使用DISTINCT关键字:SELECT DISTINCT column1, c...
    99+
    2023-08-30
    sql
  • python爬虫使用代理ip的重要性有哪些
    这篇文章将为大家详细讲解有关python爬虫使用代理ip的重要性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、防止网站反爬虫在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作