SQL CASE 表达式

2022-03-21
阅读 3 分钟
1.9k
明显可以看出,简单表达式只是搜索表达式 a = b 的特例,因为无法书写任何符号,只要条件换成 a > b 就无法胜任了,而搜索表达式不但可以轻松胜任,甚至可以写聚合函数。

SQL 复杂查询

2022-03-14
阅读 4 分钟
2.2k
为什么子查询叫做复杂查询呢?因为子查询相当于查询嵌套查询,因为嵌套导致复杂度几乎可以被无限放大(无限嵌套),因此叫复杂查询。下面是一个最简单的子查询例子:

SQL 入门

2022-02-28
阅读 4 分钟
1.8k
SQL 属于声明式编程语言,而现代通用编程语言一般都是命令式的。但是不要盲目崇拜声明式语言,比如说它未来会代替低级的命令式语言,因为声明式本身也有它的缺点,它与命令式语言也有相通的地方。

精读《手写 SQL 编译器 - 智能提示》

2018-12-24
阅读 7 分钟
6.1k
经过连续几期的介绍,《手写 SQL 编译器》系列进入了 “智能提示” 模块,前几期从 词法到文法、语法,再到构造语法树,错误提示等等,都是为 “智能提示” 做准备。

精读《手写 SQL 编译器 - 性能优化之缓存》

2018-11-05
阅读 2 分钟
4k
1 引言 重回 “手写 SQL 编辑器” 系列。这次介绍如何利用缓存优化编译器执行性能。 可以利用 Frist 集 与 Match 节点缓存 这两种方式优化。 本文会用到一些图做解释,下面介绍图形规则: First 集优化,是指在初始化时,将整体文法的 First 集找到,因此在节点匹配时,如果 Token 不存在于 First 集中,可以快速跳过这个...

精读《手写 SQL 编译器 - 错误提示》

2018-09-03
阅读 4 分钟
5.3k
比如当用户输入 select (name,这是个未完成的 SQL 语句,我们的目标是提示出这个语句未完成,并给出后续的建议: ) - + % / * . ( 。

精读《手写 SQL 编译器 - 语法树》

2018-08-27
阅读 3 分钟
10.5k
1 引言 重回 “手写 SQL 编辑器” 系列。之前几期介绍了 词法、文法、语法的解析,以及回溯功能的实现,这次介绍如何生成语法树。 基于 《回溯》 一文介绍的思路,我们利用 JS 实现一个微型 SQL 解析器,并介绍如何生成语法树,如何在 JS SQL 引擎实现语法树生成功能! 解析目标是: {代码...} 文法: {代码...} 这是本文...

精读《SQL vs Flux》

2018-08-13
阅读 3 分钟
5.4k
对时序数据的处理有两种方式,如图所示,右边是 SQL,左边是自定义查询语言,也称为 NoSQL,处于中间地带的称为 SQL-LIKE 语言。

精读《手写 SQL 编译器 - 文法介绍》

2018-07-16
阅读 3 分钟
5.5k
我们将一块语法规则称为 产生式,使用 “Left → Right” 表示任意产生式,用 “Left => Right” 表示产生式的推导过程,比如对于产生式: