# @dbml/core 中文文档

规范地址：https://npmcn.com/package/%40dbml/core/

版本：12\.0\.0
npm 元数据更新时间：2026-11-09T05:51:17.861Z
中文译文更新时间：2026-11-11T16:59:42.702Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dbml/core
原文对照：https://npmcn.com/package/%40dbml/core/?lang=original
项目主页：https://dbml.dbdiagram.io/
源码仓库：https://github.com/holistics/dbml#master

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：36.9 MB，578 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=16
- 运行依赖：7 个
- 首次发布：2019-08-19T07:57:26.639Z
- 最新版本发布：2026-11-09T05:51:17.644Z
- 近 30 天下载量：763308（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：273（近 12 个月 164 个）

## 中文简介

> TODO: 描述

## 安装

```sh
npm install @dbml/core
```

也可以使用：`pnpm add @dbml/core`、`yarn add @dbml/core`、`bun add @dbml/core`

## README

# @ dbml/ 核心

参见 [@ dbml/ 核心](https://dbml.dbdiagram.io/js-module/core) 用于完整的API参考.

## 安装

```bash
npm install @dbml/core

# or if you're using yarn
yarn add @dbml/core
```

## SQL 解析器特性支持

本节在将 SQL 导入到 DBML 时记录每个支持的数据库的 SQL 解析能力 .

关于每个 SQL 解析器的更详细文档,请参见单个解析器 READMEs :

-   [PostgreSQL 解析器](https://npmcn.com/package/%40dbml/core/src/parse/ANTLR/ASTGeneration/postgres/README.md)
-   [MySQL 解析器](https://npmcn.com/package/%40dbml/core/src/parse/ANTLR/ASTGeneration/mysql/README.md)
-   [MSSQL 解析器](https://npmcn.com/package/%40dbml/core/src/parse/ANTLR/ASTGeneration/mssql/README.md)
-   [甲骨文解析器](https://npmcn.com/package/%40dbml/core/src/parse/ANTLR/ASTGeneration/oraclesql/README.md)
-   [雪花解析器](https://npmcn.com/package/%40dbml/core/src/parse/ANTLR/ASTGeneration/snowflake/README.md)

### 支持图例

| 符号 | 含义 |
| --- | --- |
| ✓ | 完全支持并正确解析 |
| ◐ | 已解析的有效 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`(中文(简体) ) | ◐ | ✗ | ◐ | ◐ | —— 说 |
| 全文 | —— 说 | ◐ | ✗ | —— 说 | —— 说 |
| 萨摩亚 | —— 说 | ◐ | ✗ | —— 说 | —— 说 |

**注释:**

-   **MSSQL 软件**: 基于函数的索引使用计算列

* * *

### `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 是什么？

TODO: 描述

### 如何安装 @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 和提交记录判断。

