Files
openidea/docs/zh/languages/sql.mdx
T
pHandvvnadolskyy 59eb6446d4 feat(database): add Snowflake data sources (#2972)
Snowflake is a built-in data source kind: connection dialog, key-pair, browser single sign-on, password or token sign-in, the database tree, SQL consoles, and Snowflake-aware SQL assistance and syntax colours. The driver speaks Snowflake's session protocol over the existing reqwest + rustls stack, with no JDBC/ODBC or native library and no new package. Metadata is read with SHOW / DESCRIBE, which need no running warehouse; introspected names are kept on disk for completion.

Co-authored-by: vvnadolskyy <12991410+vvnadolskyy@users.noreply.github.com>
2026-11-12 23:06:10 +08:00

53 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "SQL"
description: "SQL 文件、sqls 语言服务器,以及在数据源上执行 SQL 并获得基于数据库结构的补全。"
---
SQL 文件(`.sql`、`.ddl`、`.dml`、`.psql`、`.pgsql`、`.mysql`)开箱即有语法高亮。大部分 SQL 功能,包括执行语句、补全表名和列名,都来自[数据库工具窗口](/zh/guide/database):任何可编辑的 SQL 文件都可以绑定到一个数据源,用起来和查询控制台一样。其他语言见[语言支持总览](/zh/languages/index)。
## 语言服务器
SQL 的语言定义使用 [sqls](https://github.com/sqls-server/sqls)。缺少它时,打开 SQL 文件会弹出“sqls 未安装”的通知,点 **安装** 会执行 `go install github.com/sqls-server/sqls@latest`,安装到 IDE 自己的工具目录,需要 `PATH` 上有 Go。`PATH` 上已有的 `sqls` 会直接使用。
IDE 不会把数据源传给 sqls。sqls 没有自己的配置文件时并不知道数据库结构,所以如果只用下文的数据库功能,可以忽略这条通知。要关闭它,在 **设置 › 语言和框架 › 语言服务器** 中选中 sqls,取消勾选 **对 SQL 文件使用 sqls**。
## SQL 文件与数据源
先在 **数据库** 工具窗口中添加数据源(见[数据库](/zh/guide/database))。支持 SQLite、PostgreSQL、MySQL 与 MariaDB、Microsoft SQL Server、ClickHouse、Oracle 和 Snowflake,以及 Amazon Aurora、Redshift、CockroachDB、TiDB、Supabase 等兼容产品。
每个可编辑的 SQL 文件上方都有一条工具栏,其中的 **数据源** 下拉框把文件绑定到某个数据源。只配置了一个数据源时,文件会自动使用它。**查询控制台**(`⌘⇧L` / `Ctrl+Shift+Q`)打开数据库工具窗口中所选数据源(或唯一的数据源)的查询控制台。
工具栏包括:
- **执行**:执行光标所在的语句,有选区时执行选区内的所有语句。也可以用 **执行 SQL 语句**(`⌘↩` / `Ctrl+Enter`)。
- **解释计划**:显示光标所在语句的查询计划。
- **取消正在运行的语句** 和 **浏览查询历史记录**。
- 事务模式切换(**事务:自动** / **事务:手动**),手动模式下可以 **提交** 和 **回滚**(ClickHouse 不支持)。
- 模式(SQL Server 为数据库)下拉框,决定不带限定名的对象在哪里解析。
结果显示在结果标签页中。语句按 `;` 拆分,会正确处理字符串、带引号的标识符、注释、PostgreSQL 的美元符号引用以及 Oracle PL/SQL 块。
### 参数
语句中可以使用参数:`:name`、`?`、`?1`、`@name` 和 `$1`。执行前 IDE 会询问参数值,并把值作为 SQL 文本原样插入,所以字符串值需要自己带上引号。同名参数共用一个值,每个单独的 `?` 分别询问。
## 编辑支持
以下功能由 IDE 自己提供,使用绑定数据源的方言和已读取的数据库结构:
- 补全关键字、模式、表、视图、列、函数、别名和连接条件。没有数据源时只补全关键字和内置函数。
- 在 `INSERT … VALUES (…)` 中显示目标列的参数信息。
- 对无法解析的表、列和别名给出检查提示。
- **转到声明或用法**:文本中的别名和 CTE 直接跳转,表和列在数据库工具窗口中定位。
- 表和列的 **快速文档**。
- 使用内置 SQL 格式化器 **重新格式化代码**。
- 适用于 SQL 上下文(语句、查询、代码位置)的实时模板。
这些都不依赖 sqls。
## 已知限制
- 没有绑定数据源时没有数据库结构信息,补全只有关键字和函数,也无法执行语句。
- 方言跟随绑定的数据源。未绑定的文件按 SQLite 分析,没有按文件设置方言的选项。
- IDE 不会为 sqls 做任何配置。