SQLite,一个轻量级的嵌入式数据库,经常被人低估,有人认为它只是一个玩具数据库,不适合生产环境。然而,实际情况是,SQLite是一个非常可靠的数据库引擎,能够处理TB级别的数据,尽管它缺乏网络层支持。本文将探讨SQLite在过去一年中新增的SQL功能,从版本3.22.0到3.26.0。
SQLite的适用性
SQLite被称为部署和使用最广泛的数据库引擎之一。尽管它只是一个库,而不是传统意义上的服务器,但在许多场景下,它是最合适的选择。SQLite没有版权限制,因此无论何时,只要开发者想要在文件中存储结构化数据,SQLite都是首选方案。
SQL方言的强大功能
SQLite的SQL方言非常强大,比如早在MySQL之前四年就开始支持with语句。最近,它还实现了对窗口函数的支持,这使得SQLite在SQL语言方面更加现代化。
2018年新增的SQL功能
1. 布尔字面量和判断
SQLite从版本3.23.0开始支持布尔字面量true和false,同时引入了is [not] true | false的判断语句。这使得SQLite的布尔支持更接近其他开源数据库,唯一的差距是SQLite不支持is[not] unknown,但可以用is [not] null来代替。
2. 窗口函数
SQLite 3.25.0引入了窗口函数,这是SQL中最重要的现代特性之一。虽然在range语句中存在一些限制,但窗口函数的支持使得SQLite在业界领先。
3. 过滤语句
尽管filter语句只是语法糖,但它使得SQL语句更易读。不幸的是,目前SQLite在使用group by子句的聚合函数中还不支持filter子句,希望未来能够加入这一功能。
4. Insert … on conflict (“Upsert”)
从版本3.24.0开始,SQLite引入了“upsert”概念,可以处理主键和唯一约束的冲突。虽然这不是标准SQL的一部分,但SQLite遵循了与PostgreSQL相同的语法。
5. 重命名列
SQLite引入了重命名基准数据库表中列的功能,遵循了其他产品的常用语法。
结语
除了在SQL语法上的变化,SQLite还在API方面有一些变化。总的来说,SQLite在过去一年中新增的SQL功能使得它更加强大和灵活,成为处理结构化数据的首选工具之一。
在2018年,SQLite在SQL功能方面取得了长足的进步,我们期待在未来看到它在更多方面的发展和改进。
脚注:
- SQLite通常遵循PostgreSQL语法,这被称为PostgreSQL会怎么做(WWPD)。
- 基准数据库表是指用Create table语句创建的数据库表。派生的数据库表(如Select语句返回的查询结果集)中的列名可以通过SELECT语句、FROM语句或WITH语句来进行改变。
https://www.sqlite.org/news.html
暂无评论内容