首页/对照列表/SQL 关键字

SQL 关键字

常见 SQL 关键字和语法的备忘单。

SELECT
数据查询

从数据库表中检索指定的数据行和列

SELECT column1, column2 FROM table_name;
WHERE
数据查询

对 SELECT 检索的数据设置过滤条件

SELECT * FROM users WHERE age > 18;
JOIN
数据查询

根据两个或多个表之间的关联字段进行连接组合

SELECT * FROM A L-JOIN B ON A.id = B.a_id;
GROUP BY
数据查询

结合聚合函数,根据一个或多个列对结果集切分分组

SELECT count(id), country FROM users GROUP BY country;
ORDER BY
数据查询

对读取的数据结果集进行正序(ASC)或倒序(DESC)排序

SELECT * FROM log ORDER BY created_at DESC;
HAVING
数据查询

筛选由 GROUP BY 子句返回的组记录(WHERE 无法筛选组)

SELECT count(id) FROM users GROUP BY city HAVING count(id) > 10;
INSERT
数据操纵

向数据表中插入新的一行或多行记录数据

INSERT INTO users (name, age) VALUES ('Alice', 20);
UPDATE
数据操纵

修改更新表中已存的单条或多条记录的内容数据

UPDATE users SET age = 21 WHERE name = 'Alice';
DELETE
数据操纵

从数据表中永久移除指定条件的某行记录(支持事务回滚)

DELETE FROM users WHERE id = 1;
CREATE
数据定义

用于创建新的数据库、数据表、视图或索引缓存等结构

CREATE TABLE users (id INT, name VARCHAR(50));
ALTER
数据定义

修改现有数据库对象的结构(如增加列、改类型、重命名等)

ALTER TABLE users ADD email VARCHAR(100);
DROP
数据定义

直接且永久性地删除表格、视图或整个物理层级数据库

DROP TABLE old_users_table;
TRUNCATE
数据定义

清空整个数据表的内容,并将自增计数器重置归零(速度快,不可回滚)

TRUNCATE TABLE logs;
COMMIT
事务控制

直接保存并结束当前事务,向数据库中写入所有挂起更改

BEGIN; INSERT ...; COMMIT;
ROLLBACK
事务控制

撤销当前未提交事务中的所有操作,恢复至事務开启前的状态

BEGIN; UPDATE ...; ROLLBACK;

功能简介

SQL 关键字

SQL 关键字与保留字百科。覆盖了 MySQL, PostgreSQL, Oracle 等主流数据库的全部关键字列表。提供关键字定义对照,助您在编写存储过程或 SQL 脚本时避免语法冲突与命令污染。

如何使用

1. 锁定您的目标数据库类型;2. 通过输入框模糊搜索可能冲突的单词;3. 查看该词在不同数据库驱动下的保留状态与定义说明。

安全保障

离线库参考。知识库完全打包在本地。我们不查询或记录您的实际数据库模式信息,确保您的开发思路处于隔离状态。

100% Client Side
📘 使用指南与技术说明

痛点引入

作为程序员,谁还没在SQL里踩过坑?明明写了个看似完美的查询,一执行就报错“语法错误”,仔细一看才发现不小心用了数据库的保留字当字段名。更尴尬的是,不同数据库(MySQL、PostgreSQL、SQL Server)的保留字还不完全一样,记混了直接导致联调时互相甩锅。这种时候,手头没个靠谱的对照表,真的只能边摸鱼边全网搜索,效率低到哭。

核心功能深度解析

这个工具可不是简单罗列关键词,它背后是数据库查询解析器的“黑话词典”。当SQL语句被解析时,解析器会先进行词法分析,把输入字符串拆成一个个token(词元)。保留字(Reserved Keywords)就是那些被预定义、有特殊语法意义的token,比如SELECTWHERE,它们不能直接用作标识符(如表名、列名),否则会引发歧义。工具还区分了保留字和关键字:有些词只是关键字(可作标识符,但不推荐),而保留字是“禁区”。它基于ANSI SQL标准及各数据库官方文档(如MySQL 8.0、PostgreSQL 15的RFC风格规范),通过正则匹配和递归查找,确保列表实时更新。比如,WINDOW在旧版MySQL里是关键字,但8.0后成了保留字——工具会标注这种版本差异,帮你避开深坑。

行业应用场景

  • 开发联调:团队用不同数据库(如A用MySQL,B用SQLite)时,工具能快速对照保留字。比如,在SQLite里ABORT是保留字,但MySQL里不是,提前查好能避免提交代码后冲突。
  • 测试环境:写自动化测试脚本,常用动态SQL生成表名。用工具检查生成的表名是否撞了保留字(如ORDER),防止脚本运行时意外报错。
  • 生产环境:迁移数据库(如从Oracle到PostgreSQL)时,工具可批量扫描旧SQL,标识出需转义的保留字(如PostgreSQL的USER需改为"USER"),减少停机时间。

FAQ 常见问题

  1. Q:所有数据库的SQL关键字都一样吗?
    A:不完全一样!ANSI SQL定义了标准关键字,但各数据库厂商会添加或移除。例如,LIMIT是MySQL和PostgreSQL的关键字,但SQL Server用TOP。工具会按数据库分类标注,选对版本是关键。

  2. Q:关键字和保留字有什么区别?
    A:保留字是“绝对禁区”,不能用作标识符(如SELECT);关键字则“不推荐但可用”,比如MySQL的DESC可作列名,但易混淆。工具用颜色或图标区分,一目了然。

  3. Q:如何避免在查询中误用保留字?
    A:最佳实践是:一、用工具提前查询;二、标识符统一加引号(如"GROUP");三、用别名(如SELECT id AS "order")。工具支持搜索过滤,输入字段名秒查风险。

  4. Q:工具数据来源可靠吗?
    A:数据直接抓取自官方文档(如MySQL Manual、PostgreSQL Docs),并定期用脚本同步更新。每个关键字都标注了适用版本和数据库类型,确保零误差。

  5. Q:动态SQL中怎么处理保留字?
    A:建议用参数化查询或转义函数。例如,在Python的SQLAlchemy中,可用text("\"ORDER\"")包裹。工具提供代码片段示例,复制即用。

技术科普/延伸阅读

SQL标准其实是个“未解之谜”:ANSI SQL-92是广泛采用的基准,但后续版本(如SQL:2016)添加了JSON和时序查询等新关键字,各数据库支持参差不齐。有趣的是,有些“隐藏关键字”只在特定场景生效,比如MySQL的STORAGE引擎关键字。想深入挖坑?可啃读ISO/IEC 9075标准文档,或关注数据库社区的RFC讨论——那里常有新保留字的首次爆料。

📖 精选技术文章推荐

那些藏在 URL 里的双重编码漏洞:一次 SQL 注入的完整路径

明明部署了昂贵的 WAF 防火墙,为什么数据库还是被拖库了?黑客并没有使用什么零日漏洞,而是巧妙地利用了 URL 的“双重编码”特性。本文将带你重构一次真实的攻击路径,揭示架构分层中的安全盲区,以及开发者最容易犯的致命错误。

那个把对象直接 toString 传进 URL 的同事,把我们的接口搞崩了

一个前端新人的失误:'?filter=[object Object]',让后端的 JSON.parse 直接崩溃,引发了一场 P3 级事故。本文深入探讨 JSON 与 GET 参数互转的种种陷阱:嵌套对象怎么传?数组怎么解析?URL 长度限制在哪里?以及如何避开这些暗坑。

计算机差点变成巴别塔:Unicode 发明前,我们如何处理多语言文字

在 UTF-8 统治世界之前,计算机世界曾是一片混乱的割据地。为了显示中文、日文或希腊文,开发者们发明了无数互不兼容的“代码页”。本文带你回顾那段满是乱码、冲突与妥协的编码演进史,理解 Unicode 存在的终极意义。

消失的字符:处理民族文字展示时的编码与渲染深坑

在开发文本分析工具时,我们发现 UTF-8 并不是万能药。当遇到藏文的叠加字、维吾尔文的 RTL 镜像渲染以及复杂的 Unicode 代理对时,传统的字符串处理逻辑会瞬间失效。本文记录 daima.life 在适配多元文字时的技术复盘。

💡 想要更多功能?

发现 Bug 或是希望加入新工具?支持免费提建议或商业私有化定制开发