最直接可靠的方式是右键视图→“Generate SQL”→“CREATE VIEW”,生成完整CREATE OR REPLACE VIEW...AS SELECT...语句;部分数据库支持双击视图后在“声明”页签查看源定义;跨库通用方案为查询INFORMATION_SCHEMA或系统表。

右键视图 → “Generate SQL” → “CREATE VIEW”
这是最直接、最可靠的获取视图 DDL 的方式。DBeaver 不像查看表那样在属性页里默认提供 DDL 标签,视图的创建语句必须通过生成 SQL 功能显式调出。
操作路径:在导航树中展开对应模式 → Views 节点 → 找到目标视图 → 鼠标右键 → 选择 Generate SQL → 再选 CREATE VIEW。
生成的语句会自动打开新 SQL 编辑器标签页,内容就是完整的 CREATE OR REPLACE VIEW ... AS SELECT ... 语句。注意:
- 如果视图定义中含嵌套子查询、
UNION或动态 SQL(如 PostgreSQL 的EXECUTE),DBeaver 可能无法解析全部依赖,但 DDL 本身仍会正确生成 - 某些数据库(如旧版 Hive)不支持标准
CREATE VIEW元数据暴露,此时该菜单项可能灰显或报错Feature not supported - 生成结果不含格式化(比如换行缩进),如需可粘贴到编辑器后用
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)格式化
双击视图 → 切换到“声明”页签
部分数据库驱动(如 PostgreSQL、SQL Server、Oracle)支持在视图结构页内直接显示源定义。双击视图打开属性面板后,切换到 声明 页签,就能看到原始 CREATE VIEW 语句。
这个方法快,但有明显限制:
-
MySQL和SQLite驱动通常不提供该页签,即使存在也常为空 - 如果视图由
CREATE OR ALTER VIEW(SQL Server)或CREATE OR REPLACE VIEW(PostgreSQL)创建,页签显示的是最后一次执行的完整语句,不是历史版本 - 字段别名、表达式计算逻辑都原样保留,但不会做语法高亮或错误检查——它只是字符串快照
用 SQL 查询 INFORMATION_SCHEMA 获取 DDL(跨库通用)
当图形界面失效或需要批量提取时,写 SQL 是最可控的方式。核心是查 INFORMATION_SCHEMA.VIEWS 或数据库专属系统表。
例如 PostgreSQL:
SELECT pg_get_viewdef(oid) AS definition FROM pg_class WHERE relname = 'your_view_name' AND relkind = 'v';
MySQL:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'your_view_name';
关键提醒:
- MySQL 的
VIEW_DEFINITION字段可能被截断(默认 64KB),超长视图需改用SHOW CREATE VIEW your_view_name - PostgreSQL 中
pg_get_viewdef()返回的是未包装的SELECT主体,不是完整CREATE VIEW语句,需手动补全 - 权限不足时查询会返回空结果,不是 DBeaver 故障,而是当前用户缺少
SELECT权限或未被授予USAGEon schema
为什么不能像表一样点“DDL”页签看视图?
因为视图本质上是存储的查询,不是物理对象;它的“结构”由执行计划和依赖关系决定,而非列定义元数据。DBeaver 的 DDL 页签只对 Tables、Sequences、Types 等实体对象生效。
你看到的“视图字段列表”其实是 DBeaver 根据 SELECT 子句推导出来的列名和类型,一旦视图里有 CASE、函数或无别名表达式,推导就可能出错——这也是为什么不能依赖它反推 DDL。
真正容易被忽略的一点:如果你修改了视图定义但没刷新导航树(右键模式 → Refresh),DBeaver 仍会显示旧的 声明 或缓存的 ER 图连线,导致你以为结构没变,其实已失效。











