SQL 语句的简单理解和暴力拆分

本贴最后更新于 1161 天前,其中的信息可能已经东海扬尘

作为非程序员,思源的动态查询让我觉得非常神奇,于是就关注起了 sql 语言。

在我看来,SQL 就是在你的文件数据库中满足你提的所有要求,来搜索过滤出你想要的信息,并呈现出来。

所以,SQL 语句的本质就是各种条件的组合

而思源的语句,我把它暴力拆分为开头语中间条件结尾语。结尾语可有可无,但开头语和中间条件必须有。

1、开头语

在 SQL 语句的开头位置,且必不可少。

开头语就是:

SELECT * FROM blocks WHERE 翻译:我要搜索各种类型的块

2、中间提各种 条件

在 SQL 语句中至少要提 1 个条件,数目不限。

它们可以自由组合,且不分先后顺序

它们之间用 ANDOR 来连接。

AND 翻译:和。几个条件同时满足。

OR 翻译:或者。满足其中一个。

中间条件有且不仅有以下这些:

content LIKE '%张三%' 翻译:该块有【张三】这几个字

content LIKE '%#张三%#' 翻译:该块标签是【张三】

name LIKE '%张三%' 翻译:该块的命名有【张三】这几个字

alias LIKE '%张三%' 翻译:该块的别名有【张三】这几个字

memo LIKE '%张三%' 翻译:该块的备注名有【张三】这几个字

name='张三' 翻译:该块的命名是【张三】(也就是它的命名有且仅有张三这几个字)

alias='张三' 翻译:该块的别名是【张三】(也就是它的别名有且仅有张三这几个字)

memo='张三' 翻译:该块的备注名是【张三】(也就是它的备注名有且仅有张三这几个字)

type='i' 翻译:该块是列表块

type='c' 翻译:该块是代码块

type='m' 翻译:该块是数学公式块

type='t' 翻译:该块是表格块

type='b' 翻译:该块是引用块

type='s' 翻译:该块是超级块

type='p' 翻译:该块是段落块

type='o' 翻译:该块是有序列表块

type='u' 翻译:该块是无序列表块

created >'20210623' 翻译:该块是【2021 年 06 月 23 日】后创建的

3、结尾语

在 SQL 语句中可以没有,有的话最多只能有 1 个

结尾条件有且不仅有以下这些:

order by created 翻译:按创建时间升序排序

order by created DESC 翻译:按创建时间降序排序

order by created limit 5 翻译:按创建时间升序排序的前【5】个

order by created DESC limit 5 翻译:按创建时间降序排序的前【5】个

order by updated 翻译:按更新时间升序排序

order by updated DESC 翻译:按更新时间降序排序

order by updated limit 5 翻译:按更新时间升序排序的前【5】个

order by updated DESC limit 5 翻译:按更新时间降序排序的前【5】个

order by random() limit 5 翻译:随机挑【5】个


举例

1、查询【标题块】中包含「使用方法」 而且能显示在这个标题下的内容(包含该标题下的子标题和所有文字内容):

{{SELECT * FROM blocks WHERE content LIKE ('%使用方法%') AND type='h'}}

2、查询【段落块】中包含 「内容块」:** **

{{ SELECT * FROM blocks WHERE content LIKE'%内容块%' AND type = 'p'}}

3、查询【段落块】中同时包含 「内容块」和 「引用」:

{{ SELECT * FROM blocks WHERE content LIKE '%内容块%' AND content LIKE '%引用%' AND type = 'p') }}

4、查询【标题块】中同时包含 「内容块」 和 「嵌入」,并按【更新时间】【降序】结果取前 「2 条」

{{ SELECT * FROM blocks WHEREcontent LIKE '%内容块%' AND content LIKE '%嵌入%' AND type = 'h' ORDER BY updated DESC LIMIT 2}}

5、查询【备注】为「王大」的各种类型的块:

{{ SELECT * FROM blocks WHERE memo='王大'}}

6、查询【备注】为「王大」的【标题块】:

{{ SELECT * FROM blocks WHERE memo='王大' AND type='h'}}

7、查询【引用块】中包含「使用方法」:

{{SELECT * FROM blocks WHERE content LIKE ('%使用方法%') AND type='b'}}

8、查询 20210623 后创建的块,并按创建时间倒序排列

{{SELECT * FROM blocks WHERE type='p' and created >'20210623' order by created DESC}}


如有错误,请指正。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22017 引用 • 87794 回帖 • 2 关注
2 操作
toney88 在 2021-09-01 07:15:14 更新了该帖
toney88 在 2021-09-01 07:11:06 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...