明明很多编程语言从对象数组中取数据比用SQL从表中取数据方便,为什么数据库还是使用SQL?


Author: Kimmy

明明很多编程语言从对象数组中取数据比用SQL从表中取数据方便,为什么数据库还是使用SQL?

知乎链接


谢邀。


首先SQL只是关系数据库的一个查询前端,并不是关系数据库必要的一部分,只是按照国际惯例,大家都实现了这个接口而已。你也可以搞datalog,Tutorial D或者其他小众的DSL。其他另如RethinkDB、CouchDB或者MongoDB,当然也是用JS在做Query Language,毕竟在这种schemaless的场景下,SQL就不太适合了。

另外,大部分关系数据库实现都会对SQL进行一次编译转成特定的语法树之后进行查询计划(Query plan),这个过程会利用索引等信息进行优化。而相对于每一个去连接/调用数据库的应用来看,这些所有的操作就被SQL完美的隐藏了起来,无论针对哪一种编程语言/平台,都会有一套统一的实现。这样也就省去了每个主流的编程语言都需要再去设计一套接口的成本。

第三点就是,SQL面向的不只是程序员,还有各种系统分析师、数据分析师甚至是某些高管们,所以只是一个“查询语言(Query Language)”,而不是一个通用编程语言(General Purpose Programming Language)。所以其更多的是拿来描述数据和关系,特别是当需要组合/连接多个关系的时候,通用编程语言的表示方式可能会不如SQL看上去直接。不然为啥微软还费尽心机地在C#里面造一套Linq干嘛。

创建时间:2017-12-09 最近更新时间:2023-11-03