元数据和自省
元数据 包含有关数据库对象、结构、数据库对象源代码等的信息。 IntelliJ IDEA 使用这些信息在 数据库 工具窗口中显示对象,显示其 DDL,在代码补全时提供建议,以及用于其他编码辅助、导航和搜索功能。
在 IntelliJ IDEA 中,有两种获取数据库元数据的方法:迷你目录和 自省。
- 迷你目录
通过系统模式的迷你目录,系统模式的元数据已预先自省并随 IDE 一起提供。 它们允许在无需自省系统模式且无需连接数据库的情况下编写使用系统元数据的脚本。
内省
自省 是加载数据库元数据的过程。 当您执行 Introspection 时,数据源中的结构信息会被检查,以检测表、列、例程及其他具有其属性的数据库对象。
默认情况下,仅对选择在 数据库 工具窗口中显示的架构和数据库进行 Introspection。
您可以通过在 数据库 工具窗口中选择它们,或在 数据源和驱动程序 对话框(Ctrl+Alt+Shift+S )中编辑数据源属性,来选择将进行 Introspection 并显示的架构和数据库。
选择架构和数据库以进行 Introspection
在 数据库 工具窗口中:
要打开 数据库 工具窗口,请从主菜单中选择 。 或者按 ⌘ 1。
在 数据库 工具窗口中,点击数据源、数据库或架构名称旁边的 第 N 个,共 M 个 按钮。

在架构选择弹出窗口中,选择数据库或架构并按下 Enter。
在 数据源和驱动程序 对话框中:
要打开对话框,请在 数据库 工具窗口中右键点击数据源,然后选择
属性。 或者,点击工具栏上的
数据源属性 图标。
在 数据源和驱动程序 对话框的 架构 选项卡中,选择数据库或架构。

应用更改并关闭对话框。
一旦必要的数据库和架构完成 Introspection,IDE 就可以在您的脚本中将数据库对象解析到正确的上下文。 以下示例演示了已 Introspection 和未 Introspection 架构的数据库对象解析。

尚未 Introspection 的
MySQL数据源。PostgreSQL数据源中唯一已 Introspection 的guest数据库。 该数据库包含四个架构,仅public架构已完成 Introspection。查询控制台中的数据库对象解析:对于已 Introspection 的
guest架构解析成功,而对于尚未 Introspection 的tests架构解析失败。
对于每个数据源,您还可以选择加载数据库对象源代码的模式类别。
加载不同模式的数据库对象源
要选择加载数据库对象源的模式,请打开 数据源和驱动程序 对话框(Ctrl+Alt+Shift+S ),然后选择一个数据源。
在 选项 选项卡中,导航到 加载来源于 设置并选择模式类别。
应用更改并关闭对话框。

如果处理所有对象,数据库用户可能会遇到较长的 Introspection 时间,而这通常不是日常工作和代码辅助所必需的。 为了减少 Introspection 对象的数量,IntelliJ IDEA 为某些数据库提供了三个 Introspection 级别。 有关这些级别的更多信息,请参阅 内省级别 主题。
自省类型
在 IntelliJ IDEA 中,根据您的数据库供应商,您可以使用以下自省类型:完全自省、片段自省和增量自省。
- 完全自省
每次在查询控制台中执行 DDL 语句时,整个数据库模式都会同步并刷新。
- 增量自省
通过增量自省,自省器检测到数据库中在上次自省后更改的对象,并仅加载这些对象。
- 片段自省
只有受执行语句影响的数据库对象会被刷新。
每次在查询控制台中执行 DDL 语句时,IntelliJ IDEA 都会对其进行分析。 IDE 确定哪些对象可能会被语句执行修改,并仅刷新这些对象。
例如,如果在表中删除了一个约束(
drop constraint My_Table_pk),则包含该约束的表会被刷新。 但如果my_view视图依赖于my_table表,而该表被用户修改,则my_view视图不会更新。- 按级别
对于某些数据库,支持几个级别的自省。 这些级别允许从数据库加载不同数量的元数据。
有关自省级别的更多信息,请参阅 内省级别 主题。
数据库 | 增量 | 片段 | 按级别 |
|---|---|---|---|
是 | 是 | - | |
是 | - | - | |
是 | 是 | 是 | |
是 | 是 | - | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | - | - |