mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
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>
53 lines
3.7 KiB
Plaintext
53 lines
3.7 KiB
Plaintext
---
|
||
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 做任何配置。
|