跳到主要内容

SQL 窗口(RDBMS)

本文介绍如何使用 SQL 窗口。

视频介绍

前提条件

  • 已将目标需要管理的数据库添加到 NineData。如何添加,请参见管理数据源

  • 数据源类型必须为下列其中之一:MySQL(包含 MySQL 系列实例)、SQL Server、PostgreSQL、Oracle、OceanBase Oracle、DB2、ClickHouse、Doris、SelectDB、达梦、人大金仓、Klustron、StarRocks、SingleStore、DWS、openGauss、GuassDB、TiDB。

  • 在组织模式()下,您必须拥有目标数据源的只读、DML 或 DDL 权限。

    提示

    只读权限仅支持查看数据库以及 SELECT 操作。

  • 在商业化版本下(),请确保您的包年包月订阅未过期,否则将无法正常使用数据库 DevOps 服务。您可以在 NineData 控制台页面右上方快速查看剩余配额以及到期时间。check_quota

功能介绍

NineData 的 SQL 窗口提供多个便捷功能,帮助您轻松管理您的数据源。

功能
说明
AI 智能NineData 提供的 AI 服务,支持如下功能:
  • SQL 语句生成:通过简短的自然语言表达,即可快速转换成 SQL 查询语句。
  • SQL 查询优化:帮助您优化 SQL 语句,仅需提供原 SQL 语句,并告诉 AI 需要优化即可。
  • 问题解答:解答您各种各样的问题。
AI 功能
  • :AI 对光标所在行或选中的 SQL 语句进行智能分析,并给出优化建议。
  • :AI 分析已选中 SQL 语句的结构并执行格式化,增强可读性。
  • :通过 AI 将当前表的建表语句转换成各种数据库类型的建表语句。
  • :通过 AI 将当前表结构转换成各种编程语言代码。
  • 转换代码(AI):通过 AI 将当前存储过程或函数转换成各种编程语言代码。
执行 SQL 语句
  • 访问数据源中的数据。
  • 对数据源中的库、表、数据(记录)进行增删改操作。
  • 在数据源中创建视图、存储过程、函数、触发器、事件。
  • 对用户授权或回收权限。
说明组织模式组织模式支持对组织下的每个用户分配不同的角色和资源管理权限,适用于同一组织下多用户协同开发,在保证数据安全的同时,提升整体生产效率。下,您需要对数据源拥有相应的权限才可以执行上述操作。
生成创建脚本支持针对数据源中已有的库、表、触发器、存储过程、事件、函数等对象生成创建脚本,用于在其他数据源中复制一个相同结构的对象等场景。
可视化表结构设计以可视化的方式创建表或编辑表。更多信息,请参见设计 MySQL 表结构设计 ClickHouse 表结构
SQL 智能提示在 SQL 窗口中输入 SQL 语句时,根据您输入的语义,系统会自动提示关键字、函数、库表字段名等常规对象信息;除此之外,还提供 SQL 模板(语义结构体)、语法帮助等便捷功能。
保存 SQL|查看 SQL对于常用 SQL,您可以将 SQL 保存至 NineData,保存后的 SQL 也支持查看。且由于 SQL 保存在云端,不受浏览器或主机的限制,您可以随时随地查看并使用保存的 SQL。
工作现场恢复对于浏览器意外退出或突发宕机等场景,您只需要重新登录 NineData 控制台并打开 SQL 窗口,之前打开的数据源以及执行过的 SQL 命令会被自动加载。由于页面状态保存在云端,不受浏览器或主机的限制,您可以随时随地恢复工作现场。
SQL 执行历史会记录当前账号在 NineData 控制台执行过的所有 SQL 语句,还支持根据数据源、执行时间、SQL 关键字等方式快速检索。您也可以快速复制执行历史中的 SQL 语句重新在 SQL 窗口中执行。
SQL 规范检查组织模式组织模式支持对组织下的每个用户分配不同的角色和资源管理权限,适用于同一组织下多用户协同开发,在保证数据安全的同时,提升整体生产效率。下,系统会基于配置的 SQL 开发规范检查每一条在 SQL 窗口中执行的 SQL,如果该条 SQL 不符合规范,则会被系统拦截,保证数据库安全。拦截后,根据配置的审批流程,用户可以按照规范修改 SQL 重新提交,或直接提交 SQL 任务
提示

根据数据源类型不同,上述功能的支持情况不尽相同,具体请以 SQL 窗口界面介绍中各数据源的功能描述为准。

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 >

    提示

    如果之前登录过数据源且没有关闭,则会自动进入该数据源页面。

  3. 单击 下方文本框,会弹出可用的数据源,单击目标数据源,并单击,跳转到 SQL 窗口。

    提示
    • 如果您之前没有创建过数据源,则会显示空白页。此时,请单击页面中的
    • 如果有多个数据源,您可以在框中输入全部或部分关键词进行精确查找或模糊查找。支持搜索的字段如下:

      • 数据源名称

      • IP 地址

      search

  4. 打开 SQL 窗口后,即可对数据源执行数据开发操作。如下图所示:execute_sqlSQL 窗口的详细使用方法,请参见 SQL 窗口界面介绍

    提示

    组织模式下,如果目标数据源中添加了敏感列,您将无法完整查看敏感列的内容。如需查看,请先申请敏感列权限sensitive_data

SQL 窗口界面介绍

image-20220921114448614

序号
功能
介绍
1SQL 窗口页签表示当前已打开的数据源 SQL 窗口,多个 SQL 窗口可以通过单击页签切换,单击页签右侧的X可以关闭该 SQL 窗口。右键菜单支持如下操作:
  • :打开当前数据源详情窗口。
  • :打开一个当前数据源的 SQL 窗口。
  • :打开一个新的数据源 SQL 窗口。
  • :关闭当前 SQL 窗口。
  • :关闭除了当前 SQL 窗口以外的所有其他 SQL 窗口。
  • :关闭位于当前 SQL 窗口左侧的所有 SQL 窗口。
  • :关闭位于当前 SQL 窗口右侧的所有 SQL 窗口。
  • :关闭所有 SQL 窗口。
2打开数据源选择并打开新的数据源 SQL 窗口。
3数据源信息展示当前 SQL 窗口的数据源信息,包含环境、IP 地址以及端口号。
右键菜单:
  • :显示当前数据源的详情信息,包含用户名、连接地址、运行时间、连接数等。
  • :刷新数据源信息。
4收藏|刷新
  • 收藏:单击收藏图标可以将当前数据源添加到中,添加后可以在新建 SQL 窗口中快速选择。
  • 刷新:可刷新当前数据源中的数据。
5数据库名称选中目标数据库以执行 SQL 操作。
6功能按钮
  • execute 执行选中的 SQL 语句。
  • optimizedSQL AI 对光标所在行的 SQL 语句进行智能分析,并给出优化建议。
  • format:调整选中 SQL 语句的结构,增强可读性。
  • plan:查看选中 SQL 语句的执行计划。
  • collect:将当前 SQL 窗口中的所有 SQL 语句保存至 SQL 列表,方便下次使用。
  • sqlfile:查看已保存的 SQL,您可以将目标 SQL 至当前的 SQL 窗口中。同时可以目标 SQL。
  • time:查看目标数据源的 SQL 的执行历史。您可以选择日期过滤出某个时间段的执行历史,也可以通过关键词(SQL 语句、数据库名称、错误提示)搜索执行历史。
  • setting02
    • (仅 MySQL):开启该功能,可以保证当前 SQL 窗口与数据源之间一直保持连接状态,不会建立新的连接。适用于需要保持会话的场景,例如需要在一系列查询中传递参数或存储中间结果的情况。
    • :可选
      • (默认):新的结果集将覆盖上一次的执行结果。
      • :生成新的页签展示新的结果集。
    • :更改 SQL 窗口的主题,可选
    • :拖动滑块调整 SQL 窗口中 SQL 语句的字体大小,默认值如下:
      • Windows:16
      • MacOS:13
  • thread(MySQL、ClickHouse、SQL Server、PostgreSQL、Oracle、OceanBase Oracle):显示当前数据库服务器上所有活动连接的信息,以及这些连接正在执行的查询。还支持自动刷新功能,可选择 5、10、20、30 秒自动刷新。
  • admin|可操作,开启该模式后,SQL 窗口中执行的所有 SQL 不受规范或审批流的限制,均可直接执行。
  • download 在当前数据源中生成测试用数据集(仅支持测试数据源)。
  • codefill 切换编辑器模式(Oracle 暂不支持)。
  • ai 切换智能 SQL 模式(Oracle 暂不支持)。更多信息,请参见使用 AI 管理数据源
  • expend 将 SQL 窗口以全屏方式显示(浏览器大小)。全屏后,单击右上角的compress 可以恢复到原始 SQL 窗口大小。
7搜索表名可输入表名快速查找目标数据表。
8数据库列表显示当前数据源中所有的数据库和数据表。根据数据源类型的不同,支持的功能不同:
MySQL|OceanBase MySQL|PolarDB MySQL|AnalyticDB MySQL|TDSQL-C MySQL|GaussDB for MySQL|Aurora MySQL|GaiaDB
  • :右键单击任意数据库,单击,在弹出的对话框中,输入以及对应,单击,可视化创建数据库。
  • :右键单击目标表,单击,即可通过 AI 将当前表的建表语句转换成各种数据库类型的建表语句。
  • :右键单击目标表,单击,即可通过 AI 将当前表结构转换成各种编程语言代码。
  • :右键单击目标存储过程或函数,单击 > 编程语言,即可通过 AI 将当前存储过程或函数转换成目标编程语言的代码。支持 Java、Python、C#、C++、Golang、Rust、NodeJS。
  • :右键单击目标库或库中任意表,单击,可视化创建数据表。更多信息,请参见设计 MySQL 表结构
  • :右键单击目标表,单击,可对目标表结构进行编辑。更多信息,请参见设计 MySQL 表结构
  • 创建非表对象:右键单击目标库,选择 > 非表对象名称,即可可视化创建非表对象。支持的非表对象包括视图、存储过程、触发器、事件、函数。更多信息,请参见可视化创建 MySQL 非表对象
  • 管理非表对象:右键单击目标库下的非表对象名称,可执行创建、编辑、重命名、复制、删除非表对象的操作,支持的非表对象包括视图、存储过程、触发器、事件、函数
  • :右键单击目标库或表,单击,支持以多种格式导出数据表。
  • :右键单击目标库或表,单击,支持以多种方式将数据导入到目标库表。
  • :右键单击数据库列表最下方的,单击,可查看当前数据源中所有的用户信息。
Oracle|OceanBase Oracle|达梦
  • :右键单击目标表,单击,即可通过 AI 将当前表的建表语句转换成各种数据库类型的建表语句。
  • :右键单击目标表,单击,即可通过 AI 将当前表结构转换成各种编程语言代码。
  • :右键单击目标函数,单击 > 编程语言,即可通过 AI 将当前存储过程或函数转换成目标编程语言的代码。支持 Java、Python、C#、C++、Golang、Rust、NodeJS。
SQL Server
  • :右键单击目标表,单击,即可通过 AI 将当前表的建表语句转换成各种数据库类型的建表语句。
  • :右键单击目标表,单击,即可通过 AI 将当前表结构转换成各种编程语言代码。
  • :右键单击目标存储过程或函数,单击 > 编程语言,即可通过 AI 将当前存储过程或函数转换成目标编程语言的代码。支持 Java、Python、C#、C++、Golang、Rust、NodeJS。
ClickHouse
PostgreSQL|Klustron|DWS|openGauss|GaussDB
  • :右键单击任意数据库,单击,在弹出的对话框中,根据提示配置各项库参数,单击,可视化创建数据库。
  • :右键单击目标库或任意 Schema,单击,可视化创建 Schema。
  • :右键单击任意 Schema,单击,可视化编辑 Schema。
  • :右键单击 Login/Group Roles 或目标角色,单击,根据提示配置各项角色参数,单击,可视化创建角色。
  • :右键单击目标角色,单击,可视化编辑角色。
TiDB
  • :右键单击任意数据库,单击,在弹出的对话框中,输入以及对应,单击,可视化创建数据库。
  • :右键单击目标库或库中任意表,单击,可视化创建数据表。
  • :右键单击目标表,单击,可对目标表结构进行编辑。
通用功能
  • |:右键单击目标库或 Schema,单击,即可打开|页面。您可以在这里查看目标库的详情(PostgreSQL、人大金仓、Klustron暂不支持)。
  • :右键单击目标表,单击,可自动查询该表中的数据,默认返回 100 行。
  • :右键单击目标表,单击,即可打开页面。您可以在这里查看目标表中所有的以及
  • :右键单击目标视图,单击,可自动查询该视图,默认返回 100 行。
  • :右键单击目标对象,单击,即可生成创建的 SQL 语句(根据数据源类型不同,部分对象不支持)。
  • :右键单击目标库或表,单击,可以打开新的 SQL 窗口页签。
  • :打开一个当前数据源的 SQL 窗口。
  • :右键单击任意对象,单击,刷新数据库列表。
  • 查看对象详情:将鼠标悬浮在目标表名字段名索引名上,将显示对应的详细信息。
9SQL 编辑器支持如下功能:
  • SQL 执行:支持单个语句或批量执行。
  • 中断执行:SQL 执行过程中可以单击中断 SQL 的执行。
  • 语法高亮:以不同颜色显示不同语法元素,提高代码的可读性。
  • SQL 智能提示:输入命令过程中根据您输入的语义自动弹出提示。
  • 查看 SQL 语法帮助:输入 SQL 关键字后,选中该关键字并单击鼠标右键 > ,即可查看该关键字对应的帮助信息。
  • SQL 模板:提供 CREATE、SELECT、INSERT、UPDATE、DELETE 等语句的常用模板,您只需要输入前置命令即可选择对应模板。例如:输入 CREATE 即可选择 CREATE TABLE、CREATE VIEW 等模板。
  • 右键菜单:
    • :执行光标所在位置的 SQL 语句。
    • :调整选中 SQL 语句的结构,增强可读性。
    • : AI 对光标所在行的 SQL 语句进行智能分析,并给出优化建议。
    • :查看选中 SQL 语句的执行计划。
    • :将当前 SQL 窗口中的所有 SQL 语句保存至 SQL 列表,方便下次使用。
    • :查看已保存的 SQL,您可以将目标 SQL 至当前的 SQL 窗口中。同时可以目标 SQL。
    • :查看目标数据源的 SQL 的执行历史。您可以选择日期过滤出某个时间段的执行历史,也可以通过关键词(SQL 语句、数据库名称、错误提示)搜索执行历史。
    • (MySQL、ClickHouse、SQL Server、PostgreSQL、Oracle、OceanBase Oracle):显示当前数据库服务器上所有活动连接的信息,以及这些连接正在执行的查询。还支持自动刷新功能,可选择 5、10、20、30 秒自动刷新。
    • 常规操作:包括
    • :选中光标所在位置的 SQL 语句。
    • :AI 对当前选中的内容进行分析,提供目标 SQL 语法的语义、目标表的表结构定义、SQL 语句逻辑的整体解释等信息。
10执行信息、结果集显示 SQL 的执行信息以及结果集。
  • 执行信息:包含执行时间、执行的 SQL 语句、执行状态、执行耗时等信息。
  • 结果集:显示 SQL 的返回结果。您可以进行如下操作:
    编辑结果集(需满足条件:单表查询、包含主键列或唯一键列)
    • 单击,或直接修改数据:可以可视化地对数据库进行增删改操作。
    • :右键单击目标单元格,选择,可以编辑单元格所在行的所有字段。
    • :右键单击目标单元格,选择,可以上传文件填充当前单元格。
    • :右键单击目标单元格,选择,可以将复制的行信息覆盖到当前行。
    • :右键单击目标单元格,选择,可以将当前剪贴板(ClipBoard)中的信息覆盖到当前单元格。
    • :右键单击目标单元格,选择,可以将当前单元格设置为 NULL(仅在字段未设置为 NOT NULL 时可用)。
    • :右键单击目标单元格,选择,可以将单元格设置为空值。
    • :右键单击目标单元格,选择,可以删除当前单元格所在行。
    通用操作
    • 单击result_column:将结果集以列模式展示。
    • 单击result_row:将结果集以行模式展示。
    • 单击upload:支持以多种格式导出数据表,可导出范围为当前页或者全部数据(最多 10000 条)。
    • 单击togglebottom2:将结果集缩放到页面最底部。单击togglebottom1可以恢复。
    • 单击setting02:支持对结果集中的列进行锁定、隐藏、显示等操作。
    • 结果集搜索:支持
    • 单击列名右侧的小箭头,可对结果集进行排序。
    • :右键单击目标单元格,选择,可以复制单元格所在行的整行数据。
    • :右键单击目标单元格,选择,可以复制单元格所在列的整列数据。
    • :右键单击目标单元格,选择,可以复制当前单元格。
    • :右键单击目标单元格,选择,可以选择将单元格所在行的数据复制为多种格式。
    • :右键单击任意单元格,选择,可以将当前结果集以多种格式导出,可导出范围为当前页或者全部数据(最多 10000 条)。
    • 查看结果集对应的 SQL 语句:将鼠标悬浮在目标结果集的页签上,将显示该结果集对应的 SQL 语句。

常见问题

  • 通过 SQL 窗口打开 MySQL 数据源时报错The user specified as a definer (‘mysql.infoschema‘@‘localhost‘) does not exist怎么办?

    答:在本地 MySQL 客户端中通过root账户创建mysql.infoschema用户并对其授权,命令如下:

    1. 创建:mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY '<密码>';

      提示

      示例:mysql> CREATE USER 'mysql.infoschema'@'localhost' IDENTIFIED BY '12345';

    2. 授权:mysql> GRANT ALL PRIVILEGES ON *.* TO 'mysql.infoschema'@'localhost';