@ dbml/ 核心
参见 @ dbml/ 核心 用于完整的API参考.
安装
npm install @dbml/core
# or if you're using yarn
yarn add @dbml/core
SQL 解析器特性支持
本节在将 SQL 导入到 DBML 时记录每个支持的数据库的 SQL 解析能力 .
关于每个 SQL 解析器的更详细文档,请参见单个解析器 READMEs :
支持图例
| 符号 | 含义 |
| ✓ | 完全支持并正确解析 |
| ◐ | 已解析的有效 SQL, 但是一些选项/ 解析被忽略 |
| ✗ | 有效的 SQL 语法, 但解析器无法生成输出 |
| —— 说 | 此数据库的语法无效 |
CREATE TABLE
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 基本语法 | ✓ | ✓ | ✓ | ✓ | ✓ |
参数化类型(例如:, VARCHAR(255)(中文(简体) ) | ✓ | ✓ | ✓ | ✓ | ✓ |
阵列类型(例如, INTEGER[](中文(简体) ) | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
假定类型(ENUM(中文(简体) ) | ✓ | ✓ | —— 说 | —— 说 | —— 说 |
| 临时表格 | ◐ | ✗ | ✓ | ◐ | ◐ |
CREATE TABLE 身为自我 | ✗ | ✗ | ✗ | ✗ | ✗ |
表格选项( E)ENGINE, (中文(简体) ), TABLESPACE页:1 | ◐ | ◐ | ◐ | ◐ | ◐ |
其他列属性( E)COLLATE页:1 | ◐ | ✗ | ◐ | ◐ | ◐ |
| 生成/计算栏 | ◐ | ◐ | ◐ | ◐ | ◐ |
注释:
- MSSQL 软件数字 :
- 临时表格的使用
# 前缀( 本地) 和 ## 前缀( 全局)
- 平方括号标识符( C)
[identifier]) 获得支持
PRIMARY KEY
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 列级 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 表一级 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 多栏 | ✓ | ✓ | ✓ | ✓ | ✓ |
明确名称(CONSTRAINT name(中文(简体) ) | ✓ | ✓ | ✓ | ✓ | ✓ |
| 结集/无结集 | —— 说 | —— 说 | ◐ | —— 说 | —— 说 |
FOREIGN KEY
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
列级( E)REFERENCES(中文(简体) ) | ✓ | ✓ | ✗ | ✓ | ✗ |
| 表一级 | ✓ | ✓ | ✓ | ✓ | ✗ |
| 多栏 | ✓ | ✓ | ✓ | ✓ | ✗ |
明确名称(CONSTRAINT name(中文(简体) ) | ✓ | ✓ | ✓ | ✓ | ✗ |
ON UPDATE 动作 | ✓ | ✓ | ✓ | —— 说 | ✗ |
ON DELETE 动作 | ✓ | ✓ | ✓ | ✓ | ✗ |
注释:
- MSSQL 软件: 列级
FOREIGN KEY 有已知的错误 - 使用表格级别语法代替
- 雪花页:1
FOREIGN KEY 定义有已知错误, 产生未定义错误
UNIQUE
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 列级 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 表一级 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 多栏 | ✓ | ✓ | ✓ | ✓ | ✓ |
明确名称(CONSTRAINT name(中文(简体) ) | ✓ | ✓ | ◐ | ✓ | ◐ |
UNIQUE KEY编号 :UNIQUE INDEX 语法 | —— 说 | ✓ | —— 说 | —— 说 | —— 说 |
CHECK
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 列级 | ✓ | ✓ | ✓ | ✓ | ✗ |
| 表一级 | ✓ | ✓ | ✓ | ✓ | ✗ |
明确名称(CONSTRAINT name(中文(简体) ) | ✓ | ✓ | ✓ | ✓ | ✗ |
DEFAULT
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 列级 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 默认函数 | ✓ | ✓ | ✓ | ✓ | ✓ |
明确名称(CONSTRAINT name(中文(简体) ) | —— 说 | —— 说 | ◐ | —— 说 | ◐ |
NOT NULL
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
列级 NOT NULL | ✓ | ✓ | ✓ | ✓ | ✓ |
明确栏级 NULL | ✓ | ✓ | ✓ | ✓ | ✓ |
自动递增列
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
SERIAL (比索类型) | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
BIGSERIAL (比索类型) | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
AUTO_INCREMENT (列属性) | —— 说 | ✓ | —— 说 | —— 说 | —— 说 |
IDENTITY(seed, increment) (栏下财产) | —— 说 | —— 说 | ✓ | —— 说 | ✓ |
GENERATED AS IDENTITY (栏下财产) | ✓ | —— 说 | ✗ | ✓ | ✗ |
GENERATED ALWAYS AS IDENTITY | ✓ | —— 说 | —— 说 | ✓ | —— 说 |
GENERATED BY DEFAULT AS IDENTITY | ✓ | —— 说 | —— 说 | ✓ | —— 说 |
内含索引
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 列级索引 | —— 说 | ✗ | —— 说 | —— 说 | —— 说 |
表一级 INDEX编号 :KEY | —— 说 | ✓ | —— 说 | ✓ | —— 说 |
| 命名索引 | —— 说 | ✓ | —— 说 | ✓ | —— 说 |
| 多列索引 | —— 说 | ✓ | —— 说 | ✓ | —— 说 |
| 正在使用BTREE/HASH | —— 说 | ✓ | —— 说 | —— 说 | —— 说 |
| 完全XT/半自动 | —— 说 | ◐ | —— 说 | —— 说 | —— 说 |
CREATE INDEX
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
基础 CREATE INDEX | ✓ | ✓ | ✓ | ✓ | —— 说 |
| 多栏索引 | ✓ | ✓ | ✓ | ✓ | —— 说 |
UNIQUE 指数 | ✓ | ✓ | ✓ | ✓ | —— 说 |
| 基于函数的索引 | ✓ | ✓ | —— 说 | ✓ | —— 说 |
| 布莱 | ✓ | ✓ | ✗ | —— 说 | —— 说 |
| 已经 | ✓ | ✓ | —— 说 | —— 说 | —— 说 |
| (原始内容存档于2017-09-21) (英语). GIST | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
| 巴林 | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
| GIN( 黄金) | ✓ | —— 说 | —— 说 | —— 说 | —— 说 |
部分/筛选指数WHERE(中文(简体) ) | ◐ | ✗ | ◐ | ◐ | —— 说 |
| 全文 | —— 说 | ◐ | ✗ | —— 说 | —— 说 |
| 萨摩亚 | —— 说 | ◐ | ✗ | —— 说 | —— 说 |
注释:
INSERT 发言
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
基础 INSERT ...评价 | ✓ | ✓ | ✓ | ✓ | ✗ |
多行键 INSERT | ✓ | ✓ | ✓ | ✓ | ✓ |
INSERT . 感觉 | ✗ | ✗ | ✗ | ✗ | ✗ |
INSERT ...带有返回行(RETURNING, (中文(简体) ), OUTPUT(中文(简体) ) | ◐ | —— 说 | ◐ | ◐ | —— 说 |
INSERT .关于冲突/ | ◐ | ◐ | —— 说 | —— 说 | —— 说 |
注释:
- 甲骨文: 多行插入使用
INSERT ALL ... SELECT * FROM dual 语法,完全支持.
ALTER TABLE
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 阿德·克卢姆 | ✗ | ✗ | ✗ | ✗ | ✗ |
| 热带气旋 | ✗ | ✗ | ✗ | ✗ | ✗ |
| 替代/混合 | ✗ | ✗ | ✗ | ✗ | ✗ |
| 科特迪瓦 | ✗ | ✗ | ✗ | ✗ | ✗ |
| AD 制约因素 | | | | | |
- 说吧 DEFAULT | ✗ | ✗ | ✓ | ✓ | ✗ |
- 说吧 NOT NULL | ✗ | ✗ | ✗ | ✓ | ✗ |
- 说吧 CHECK | ✓ | ✓ | ✓ | ✓ | —— 说 |
- 说吧 UNIQUE | ✓ | ✗ | ✓ | ✓ | ✓ |
- 说吧 PRIMARY KEY | ✓ | ✓ | ✓ | ✓ | ✗ |
- 说吧 FOREIGN KEY | ✓ | ✓ | ✓ | ✓ | ✓ |
| 德罗普制约因素 | ✗ | ✗ | ✗ | ✗ | ✗ |
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
| 表格注释 | ✓ | ✓ | ◐ | ✓ | ✓ |
| 栏评论 | ✓ | ✓ | ◐ | ✓ | ✗ |
| 注释语法 | COMMENT ON | 内入 COMMENT | sp_addextendedproperty | COMMENT ON | 内入 COMMENT |
注释:
- MSSQL 软件: 通过
sp_addextendedproperty 有不可靠的解析
DDL 其他发言
| 特性 | 邮递SQL | MySQL 数据 | MSSQL 软件 | 甲骨文 | 雪花 |
DROP TABLE | ✗ | ✗ | ✗ | ✗ | ✗ |
DROP INDEX | ✗ | ✗ | ✗ | ✗ | —— 说 |
ALTER INDEX | ✗ | —— 说 | ✗ | ✗ | —— 说 |
CREATE VIEW | ✗ | ✗ | ✗ | ✗ | ✗ |
关于 @dbml/core 的常见问题
如何安装 @dbml/core?
在项目目录运行 npm install @dbml/core,或使用 pnpm add / yarn add / bun add。
@dbml/core 支持 TypeScript 吗?
支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。
@dbml/core 支持 ESM 还是 CommonJS?
同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。
@dbml/core 需要什么版本的 Node.js?
package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。
@dbml/core 可以商用吗?
@dbml/core 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。
@dbml/core 的下载量有多少?
根据 npm 官方下载统计,@dbml/core 在 2026/10/12 – 2026/11/10 这 30 天内被下载 763,308 次,日均约 25,444 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。
@dbml/core 还在维护吗?
最新版本 12.0.0 发布于 2026/11/09(2 天前);至今共发布 273 个版本,其中过去 12 个月发布了 164 个;首次发布于 2019/08/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。