SQL 五十周年:何去何从?

2024-09-02 19:52

本文主要是介绍SQL 五十周年:何去何从?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址 https://www.infoworld.com/article/2337457/sql-at-50-whats-next-for-the-structured-query-language.html

SQL 即使被生成式 AI 隐藏在幕后,也将继续在数据交互和使用方面发挥关键作用。

在这里插入图片描述

CREDIT: PAVEL L PHOTO AND VIDEO / SHUTTERSTOCK

1974 年 5 月,Donald Chamberlin 和 Raymond Boyce 发表了一篇关于 SEQUEL 的论文,这是一种可用于管理和分类数据的结构化查询语言。由于另一家公司拥有 SEQUEL 一词的版权,「结构化查询语言」更名为 SQL。20 世纪 70 年代晚些时候,SQL 被甲骨文等数据库公司与他们的新式关系型数据库产品一起使用。剩下的,就像人们常说的那样,就是历史了。

SQL 至今已有 50 年历史,是围绕数据库设计和采用的。作为一种管理和交互数据的方式,它一直在不断发展。根据 Stack Overflow 的数据,SQL 是专业程序员经常使用的第三大语言。2023 年,国际电气和电子工程师协会(IEEE)指出,SQL 是开发者找工作时最需要掌握的语言,因为它可以与其他编程语言相结合。

纵观当今其他老式语言,COBOL(1959 年推出)、FORTRAN(1958 年首次编译)等也仍在使用。虽关系着高薪职位,它们仍部署在传统项目而非令人兴奋的新项目中。另一方面,SQL 仍被用作人工智能、分析和软件开发工作的一部分,是我们日常与数据交互的标准。

(一)为什么 SQL 仍如此重要?

你可能会问,为什么 SQL 能存活这么久,甚至活得挺好。

它语法非常奇特,与时代格格不入,新手不容易学习。此外,每个数据库供应商都必须支持 SQL,但都有具体差别,因此一个数据库中的操作可能无法轻松转换到另一个数据库,增加了工作和支持需求。

更糟的是,在 SQL 中很容易犯错误,而这些错误可能会带来真正的灾难性后果。例如,如果在指令中缺少 WHERE 子句,可能导致删除整个表而不是执行所需的操作,从而需要大量恢复丢失的数据。这就要求写代码时检查语法逻辑、预先推演代码的实际运行结果,保证准确无误。

那么,为什么在 SQL 首次设计和发布 50 年后的今天,它仍然是处理数据的主要方法呢?

SQL 以强大的数学理论为基础,因此还能有效执行和支持其设计初衷。事实上,当你将 SQL 与关系型数据库相结合时,你就可以将创建的数据以及管理数据的方式映射到许多业务实践中,且这种方式是可靠、有效、可扩展的。简言之,SQL 行之有效、无以替代。

例如,SQL 是第一种可在单次请求中返回多行的编程语言。这样能更容易地获取一组数据(进而项目及其应用)中正在发生的变更,并将其转化供项目使用。SQL 也能将信息分割到不同的表中,用于特定的任务。比如将客户数据放到一个表中,将生产数据放到另一个表中。执行变更的能力是当今大多数流程的支柱,而 SQL 使大规模变更成为可能。

SQL 取得成功的另一个重要原因是,它始终与时俱进。多年来,SQL 从关系型语言的根基出发,增加了对地理信息系统 (GIS) 数据、JSON 文档以及 XML 和 YAML 的支持。这使 SQL 与开发人员理想的数据交互方式保持同步。现在,SQL 可以与矢量数据相结合,使开发者能够使用 SQL 与数据交互,同时为生成式 AI 应用进行矢量搜索。

(二)SQL 的未来如何?

过去曾有人试图取代 SQL。NoSQL(不仅是 SQL)数据库的开发是为了取代关系型数据库,摆脱大规模处理和管理数据的传统模式。然而,这些数据库并没有取代 SQL,而是添加了自己的类 SQL 语言,复制了 SQL 在开发者工作方式中根深蒂固的一些方法和途径。

过去,自然语言处理的倡导者曾呼吁采用新方法来摒弃 SQL 笨拙的标准化方法。然而,这些尝试最终产生的方法与它们试图取代的方法一样笨拙,最终还是被边缘化、被忽视。生成式 AI 可能会为开发者承担更多编写 SQL 的任务,因为作为训练的一部分,大型语言模型已经接触了大量的 SQL 代码。不过,虽然这种方法可能会逐渐发展并变得更流行,但它仍然依赖于 SQL 来与这些数据集进行实际交互,并将结果反馈给用户。如果说有什么变化的话,这可能会使 SQL 在未来变得更加重要,而不是更加不重要,尽管开发者对它的可见度会降低。

即使 SQL 最终会退居幕后,它也将继续在我们与数据交互和使用数据的过程中发挥关键作用。在我们所有的 IT 系统中,有很大一部分都依赖于数据来运行,因此 SQL 不会在短期内消失。因此,让我们庆祝 SQL 50 周年,并考虑未来如何继续开发和使用它。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

这篇关于SQL 五十周年:何去何从?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1130915

相关文章

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤

《MybatisPlusJSqlParser解析sql语句及JSqlParser安装步骤》JSqlParser是一个用于解析SQL语句的Java库,它可以将SQL语句解析为一个Java对象树,允许... 目录【一】jsqlParser 是什么【二】JSqlParser 的安装步骤【三】使用场景【1】sql语

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务