明明可以通过调用API来操作数据库,那么SQL还有存在的意义吗?
迪丽瓦拉
2025-05-28 23:08:55
0

举个宏观上的例子:

曾经有一个叫Google的公司觉得RDBMS这套东西太麻烦了,不适合大规模计算,所以在2005年发明了一个东西叫做Mapreduce,大概就是说用户需要提供mapper
和 reducer函数,这两个函数可以对数据干任何事情,框架会帮助用户做好并行。

在这里插入图片描述

但是15年后我们已经知道结果了,Mapreduce这种过度自由的框架其实并没有人玩的那么转,存活下来的都是sparkSQL,flinkSQL,Hive,Snowflake这些用SQL的产品。

从程序语言的角度上来说,API vs SQL 本质上是Imperative(命令式编程) vs Declarative(声明式编程)

简单来讲 Imperative类似于你扮演一个程序员,对于一个功能,写出逻辑链上的每一行代码,然后程序运行得到结果。

而Declarative类似于你扮演一个产品经理,对于一个功能,你只需要描述你需要的结果,然后某程序会把中间的过程生成好。

不论从学术角度还是工程角度来讲Declarative是更加进步的。

再举个微观上的例子:

假设两张表,一张user(id, name)一张salary(id, user_id,salary)当你同时需要所有人的name和salary的时候,你会运行以下SQL

select * from user inner join salary on user.id = salary.user_id

但是如果你只有简单的CRUD API的话,你可能需要拿到所有user.id 然后走一个for loop 去salary里面找到对应的id,从正确性上来说也说得过去,但是性能会非常捉急,再后来你会发现所有的优化 = 你在用户侧重新实现了一个join算法。而如果用SQL的话会调用数据库内部的高效join算法。

所以,Declarative比Imperative更适合处理数据。很多时候你认为的约束和不便,其实是性能提升的来源。

而且,API是很难有一个语言的自由度的,很多SQL里面写起来很自然的东西要是用API实现的话都很丑陋。

2022 IEEE 编程语言榜单公布,最受欢迎以及发展趋势最好的是Python,但工作中最吃香的语言却是SQL。
在这里插入图片描述

作为一种广泛使用的数据专业语言,很多领先的科技公司都依赖于关系型数据库和SQL。像Mysql或者Oralce这类成熟的数据库,它已经和SQL深度绑定了。

SQL可以提供更高的性能和效率,以及更强的数据一致性和完整性,它能处理复杂的数据分析和查询。

综上所述,SQL想要轻易被取代是不可能的

想要掌握SQL,你可能需要这款SQL工具 : SQL Studio

(1)免费。

(2)免费的基础上支持几乎所有主流数据库,不仅有MySQL、Oracel、PostgresSQL等国外数据库,还支持武汉达梦、人大金仓等国产数据库。
在这里插入图片描述

(3)突出亮点:Web版工具——一次部署,团队成员都能使用,占用的硬件资源都在服务器上;只要有可登录的软件链接和账号、密码,任意设备随时可用这款工具:省去了繁琐的工具安装配置、升级过程。(对于团队协作和教学场景简直不要太友好)
在这里插入图片描述

(4)亮点延伸:用户管理——SQL Studio只有管理员可以新建账号、也只有管理员‬可以‬增加‬和‬删除‬数据源‬,这样避免了许多安全问题。
在这里插入图片描述

(5)性能稳定且可圈可点:

a.可视化管理——支持图形化界面对数据库、表进行管理;支持直接修改表结构、表数据等,还能显示操作对应的SQL语句。
在这里插入图片描述

b.写sql支持智能提示:可以根据用户输入的字符及其语意提示表名等信息。
在这里插入图片描述

c.每次执行的SQL语句都会保存在主界面的“历史查询”中,而且找到对应语句可以直接复用。

d.经常需要用到的SQL语句也可以直接保存在主界面“保存的查询”中,不用再从电脑本地导入,而且能直接修改、复制、删除。
在这里插入图片描述

e.除了“历史查询”、“保存的查询”还有“历史导出”功能,每一次下载数据都会被记录,保证了工具完整的审计功能。

f.超强的数据导入、导出能力:近700万行数据导出只需20多秒,比Navicat还快两倍。

g.稳定性好:展开数据库中一万张表,丝毫不卡顿。SQL编辑框支持注释,有注释也能很好地执行语句,不出bug稳定性强。

h.一键批量执行:单击执行编辑框内所有SQL语句,方便大家进行刷库等操作。
在这里插入图片描述

i.一键解释执行:单击即可帮助大家分析sql语句的性能,辅助优化。
一键解释执行

j.结果栏支持调整每页展示多少条数据、且支持改变排序和全屏,看数据更方便。

k.数据库列表、结果栏、历史查询、保存查询都支持搜索定位。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...