文章
姚 鑫 · 四月 2, 2021 阅读大约需 13 分钟

第十五章 使用管理门户SQL接口(一)

第十五章 使用管理门户SQL接口(一)

本章介绍如何在InterSystems IRIS®数据平台管理门户上执行SQL操作。
管理门户界面使用动态SQL,这意味着在运行时准备和执行查询。
Management Portal界面旨在帮助针对小型数据集开发和测试SQL代码。
它不打算用作在生产环境中执行SQL的接口。

管理门户还提供了各种配置SQL的选项。

有关使用管理门户的一般信息,请选择左上角的Help按钮。
通过使用左上角的Contact按钮,可以从管理门户向InterSystems Worldwide Response Center (WRC)报告有关InterSystems软件的问题。

管理门户SQL工具

InterSystems IRIS允许使用SQL工具从InterSystems IRIS管理门户检查和操作数据。
此操作的起点是Management Portal System Explorer选项。
从这里选择SQL选项。
这将显示SQL接口,它允许:

  • 执行SQL查询—编写和执行SQL命令。
    可以对现有的表和数据执行SQL查询,创建表,或插入、更新或删除表数据。
    可以编写SQL代码直接转化为一个文本框(包括选择、插入、更新、删除、创建表和其他SQL语句),检索语句的SQL历史文本框,拖拽一个表到文本框来生成一个查询(SELECT语句),或构成一个查询(SELECT语句)使用query Builder接口。
  • 过滤模式内容——在屏幕左侧显示当前名称空间的SQL模式或这些模式的过滤子集,以及每个模式的表、视图、过程和缓存查询。
    可以选择单独的表、视图、过程或缓存查询来显示其目录详细信息。
  • 向导—执行向导,以执行数据导入、导出或数据迁移。
    执行向导以链接到表或视图,或链接到存储过程。
  • Actions -定义一个视图;
    打印一个表定义的详细信息;
    通过运行调优表和/或重建索引提高查询的性能;
    或者通过清除不需要的缓存查询和/或删除不需要的表、视图或过程定义来执行清理。
  • 打开表格——以显示模式在表格中显示当前数据。
    这通常不是表中的完整数据:记录的数量和列中的数据长度都受到限制,以提供可管理的显示。
  • 工具——执行以下工具之一:SQL运行时统计、索引分析器、备用显示计划、生成报告、导入报告。
  • 文档—允许查看SQL错误代码列表和SQL保留字列表。
    如果选择了一个表,则允许显示类文档(该表的类引用页)。

选择命名空间

所有SQL操作都会在特定名称空间中进行。因此,必须首先指定要通过单击SQL接口页面顶部的 “开关switch” 选项要使用的命名空间。这将显示可用名称空间列表,可以从中进行选择。

可以设置管理门户默认命名空间。从管理门户选择系统管理,安全性,用户。单击所需用户的名称。这允许编辑用户定义。从“常规”选项卡中,从下拉列表中选择“启动命名”空间。单击“保存”。如果未选择启动命名空间,则会默认为%SYS.。

用户自定义

许多Management Portal SQL操作都是为每个用户自动定制的。
如果在Execute Query选项卡或SQL Statements选项卡中设置了筛选器、最大值、模式或其他选项,则此用户指定的值将保留以供将来使用。
当同一个用户激活管理门户时,将显示该用户先前的设置。
重新启动InterSystems IRIS返回所有选项为默认值。

没有自定义名称空间选择。
它恢复到用户定义启动名称空间。

执行SQL查询

从管理门户选择System Explorer,然后选择SQL。
在页面顶部选择带有Switch选项的名称空间;
这将显示可用名称空间的列表。
要执行SQL查询,有三个选项:
- Execute Query:写并执行SQL命令。
SQL命令可以是一个SELECT查询,也可以是一个InterSystems SQL DDL或DML语句;
语句执行时在InterSystems IRIS服务器上验证。
- Show History:收回以前运行的SQL语句,然后重新运行它,或者修改它,然后运行它。
列出所有已执行的语句,包括未成功执行的语句。
- 查询生成器:调用SQL查询生成器(它专门用于创建SELECT语句)。
在SQL Query Builder中,通过选择表、列、WHERE子句谓词和其他查询组件来创建SQL SELECT查询。
然后,可以通过单击Execute query来运行查询。

编写SQL语句

Execute Query文本框不仅允许编写SELECTCALL查询,还允许编写大多数SQL语句,包括DDL语句(如CREATE TABLE)和DML语句(如INSERTUPDATEDELETE)。

可以在“执行查询”文本框中指定SQL代码:
- 将SQL代码键入(或粘贴)到文本框中。
SQL代码区域不给SQL文本着色,也不提供任何语法或存在验证。
但是,它确实提供了自动拼写验证。
可以使用X图标删除文本框的内容。
- 使用Show History列表选择前面的SQL语句。
选中的语句将复制到文本框中。
执行时,该语句移到Show History列表的顶部。
注意,Show History列出了之前执行的所有语句,包括那些执行失败的语句。
- 使用表拖放在文本框中构造SQL代码。
- 可以使用Query Builder(而不是Execute Query文本框)来指定和执行SELECT查询。
使用查询生成器执行的选择查询不会显示在“执行查询”中,也不会列出在“显示历史”中。

Execute Query文本框中的SQL代码可以包括:

  • ?输入参数。如果指定输入参数,例如 TOP ? or WHERE Age BETWEEN ? AND ?Execute按钮显示查询窗口的Enter参数值,其中每个输入参数的条目字段按查询中指定的顺序。
  • 空白字符。可以指定多个空格,单个和多行返回。标签键已禁用;将代码复制到SQL代码区域时,现有选项卡将转换为单个空格。线返回和未保留多个空格。
  • 注释。 SQL代码区域支持单行和多行注释。在Show历史显示中保留并显示注释。在Show Plan语句文本显示或缓存查询中未显示注释。
  • 返回多个结果集的查询。

在文本框中编写SQL代码后,可以单击“显示计划”按钮查看SQL代码而不执行SQL代码。如果代码有效,则显示计划显示查询计划。如果代码无效,则显示计划显示SQLCode错误值和消息。还可以使用“显示计划”按钮显示最近执行的SQL代码的此信息。

要执行SQL代码,请单击“执行”按钮。

表拖放

可以通过从屏幕左侧的表列表(或视图列表)拖动表(或视图)来生成查询,并将其丢弃到执行查询文本框中。这在表中生成了选择的选项列表,以及指定表的表中的所有非隐藏字段。然后,可以进一步修改此查询并使用Execute按钮执行它。

还可以从屏幕左侧的过程列表中拖放过程名称。

执行查询选项

SQL执行界面具有以下选项:

  • 具有SELECT的“选择模式下拉列表”指定查询应用于提供数据值(例如,在WHERE子句中)的格式,并在查询结果集中显示数据值。选项是显示模式(默认值),ODBC模式和逻辑模式。

具有插入或更新的选择模式下拉列表允许指定输入数据是否将从显示格式转换为逻辑存储格式。对于此数据转换,必须使用选择运行时的选择模式编译SQL代码。在执行时间时,必须将“选择模式”下拉列表设置为逻辑模式。

选择模式对于数据类型是有意义的,其逻辑存储格式与所需的显示格式(显示或ODBC)不同,例如Intersystems Iris日期和时间和Objectscript%List结构化数据。

  • 最大字段允许限制从查询返回的数量数量。它可以设置为任何正整数,包括0.一旦设置MAX,除非显式更改,否则将该值用于会话持续时间的所有查询。默认值为1000.最大值为100,000,如果输入没有值(将MAX设置为NULL),则输入大于100,000或非数值的值,这是默认值。还可以使用顶部子句限制要返回的数据行数。 MAX对其他SQL语句没有影响,例如删除。

如果单击“更多”选项,则SQL执行界面将显示以下其他选项:

  • 方言:SQL代码的方言。包括“IRIS”、“Sybase”和“MSSQL”。默认为IRIS。
    在InterSystems Transact-SQL (TSQL)迁移指南中描述了Sybase和MSSQL。
    请注意,下次访问管理门户时,选择的方言将成为用户自定义的默认语言。
  • 行号:一个复选框,指定是否在结果集中显示的每一行中包含行计数号。
    行号是分配给结果集中每一行的连续整数。它只是对返回的行进行编号,它既不对应rowwid也不对应%VID。行号列标题名是#。默认是显示行号。

所有这些选项都是用户自定义的。

显示计划按钮

Show Plan按钮在页面的文本框中显示语句文本和查询计划,包括查询的当前查询计划的相对成本(开销)。可以从Execute查询或Show History接口调用Show Plan。查询计划是在准备(编译)查询时生成的;
当编写查询并选择Show Plan按钮时,就会发生这种情况。不必执行查询来显示其查询计划。Show Plan在为无效查询调用时显示SQLCODE和错误消息。

SQL语句的结果

在“执行查询”文本框中编写SQL代码之后,可以通过单击“执行”按钮来执行代码。这要么成功执行SQL语句并在代码窗口下面显示结果,要么SQL代码失败。如果SQL代码失败,它会在code窗口下面显示一条错误消息(红色);
按下Show Plan按钮将显示SQLCODE错误和错误消息。

执行查询SQL代码执行作为后台进程执行。在执行代码时,Execute按钮被Cancel按钮替换。这允许取消长时间运行的查询的执行。

查询数据显示

如果选中了行号框,结果集将作为表返回,行计数器将显示为第一列(#)。
其余的列将按照指定的顺序显示。RowID (ID字段)可以显示或隐藏。每个列都由列名(如果指定了,也可以是列别名)标识。聚合、表达式、子查询、主机变量或文字选择项可以由列别名(如果指定)标识,或者由单词Aggregate_Expression_Subquery_HostVar_Literal_后跟选择项序列号(默认情况下)标识。

如果行列不包含数据(NULL),结果集将显示一个空白的表格单元格。
指定一个空字符串文本将显示一个HostVar_字段,其中包含一个空白的表格单元格。
指定NULL显示一个带有空白单元格的Literal_字段。

如果选择的字段是日期、时间、时间戳或%List编码的字段,则显示的值取决于显示模式。

以下显示特性是管理门户SQL接口独有的,执行查询结果显示和打开表数据显示:

  • 数据类型%Stream.Globalcharacter的流字段将实际数据(最多100个字符)作为字符串显示。如果流字段中的数据长于100个字符,则显示数据的前100个字符,后跟省略的省略号(...)。
  • 数据类型%Stream.GlobalBinary作为<二进制>的流字段。
  • 字符串数据字段根据需要,以完整的方式显示实际数据。
  • Integer字段在结果表单元格中右对齐。 ROWIDNUMERIC和所有其他字段都是左对齐的。

当使用动态SQL代码,SQL Shell或嵌入式SQL代码执行相同的查询时,不会发生这些结果显示功能。

如果指定的查询返回多个结果集,则执行查询将这些结果集显示为命名选项卡:Result #1, Result #2等。

查询执行指标

如果成功,则执行查询显示性能信息和缓存查询例程的名称。如果显示数据以显示,则显示在性能信息下方。执行信息包括行计数,性能,缓存查询,显示缓存的查询名称,最后更新指定查询的最后一次执行的时间戳。
- Row count:对于CREATE TABLE这样的DDL语句,如果操作成功,则显示Row count: 0
对于INSERTUPDATEDELETE等DML语句,显示受影响的行数。
对于TRUNCATE TABLE语句,快速TRUNCATE操作不能确定实际删除的行数,而是设置行数:-1。

对于SELECT,显示作为结果集返回的行数。注意,返回的行数由Max设置控制,它可能低于可以选择的行数。
对于多个结果集,列出每个结果集的行数,用/字符分隔。
指定一个或多个聚合函数(且没有选择字段)的查询总是显示Row count: 1,并返回表达式、子查询和聚合函数的结果,即使FROM子句表不包含行。
一个不指定聚合函数和不选择行的查询总是显示Row count: 0并且不返回结果,即使该查询只指定不引用FROM子句表的表达式和子查询。
no FROM子句的查询总是显示行数:1,并返回表达式、子查询和聚合函数的结果。

  • 性能:以运行时间(以秒为单位)、全局引用总数、执行的命令总数和磁盘读取延迟(以毫秒为单位)来衡量。
    如果该查询存在缓存的查询,那么这些性能指标将用于执行缓存的查询。
    因此,查询的第一次执行将比后续执行具有更高的性能指标。
    如果指定的查询返回多个结果集,那么这些性能指标就是所有查询的总和。

要更深入地分析这些性能指标,可以运行MONLBL(逐行监视实用程序)并使用星号通配符%sqlcq*指定例程名称。
请参考使用^%SYS.MONLBL检查例程性能。

  • 缓存查询:自动生成的缓存查询类名。
    例如,%sqlcq.USER.cls2表示用户名称空间中的第二个缓存查询。
    每个新的查询被分配一个新的缓存的查询名称,该名称具有下一个连续的整数。
    通过单击此缓存查询名称,以显示关于缓存查询的信息,以及显示其显示计划或执行缓存查询的进一步链接。

关闭管理门户或停止InterSystems IRIS不会删除缓存的查询或重置缓存的查询编号。
要从当前命名空间中清除缓存的查询,请调用%SYSTEM.SQL.Purge()方法。

并不是所有的SQL语句都会导致缓存的查询。与现有缓存查询相同的查询,除了文字替换值(例如TOP子句值和谓词文字)之外,不会创建新的缓存查询。有些SQL语句是不缓存的,包括DDL语句和权限分配语句。
非查询SQL语句,如CREATE TABLE,也会显示缓存的查询名。
然而,这个缓存的查询名称被创建然后立即删除;
下一个SQL语句(查询或非查询)重用相同的缓存查询名称。

  • 最后一次更新:最后一次执行查询(或其他SQL操作)的日期和时间。
    这个时间戳在每次执行查询时都被重置,即使在重复执行相同的查询时也是如此。

  • 成功执行还提供了一个打印链接显示打印查询窗口,它给你选择打印或导出到一个文件中查询文本和/或查询的结果集。点击查询和结果切换使可以显示或隐藏文本或查询结果集的查询,查询结果集显示包含名称空间的名字,结果集的数据行数,一个时间戳,缓存的查询名称。
    (注意,时间戳是调用Print查询窗口的时间,而不是执行查询的时间。)
    “打印查询”按钮用于打印查询窗口的屏幕截图。
    “导出到文件”复选框显示指定导出文件格式(xml、hdml、pdf、txt、csv)和导出文件路径名的选项。
    Export选项忽略查询和结果切换,并始终只导出结果集数据(默认为:exportQuery.pdf)和行数(默认为:exportQueryMessages.pdf);
    不包括查询文本、名称空间、时间戳和缓存的查询名称。

如果不成功,则Execute Query显示错误消息。
可以单击Show Plan按钮来显示相应的SQLCODE错误值和消息。

显示历史

单击“显示历史记录”可列出当前会话期间执行的SQL语句。
Show History列出从该接口调用的所有SQL语句,包括那些成功执行和那些执行失败的语句。
默认情况下,SQL语句按执行时间列出,最近执行的语句出现在列表的顶部。可以单击任何列标题,根据列值按升序或降序排列SQL语句。从Show History列表中执行SQL语句将更新其执行时间(本地日期和时间戳),并增加其计数(执行次数)。

可以过滤Show History列表,如下所示:在过滤框中指定一个字符串,然后按Tab键。只有包含该字符串的历史项才会包含在刷新后的列表中。
筛选器字符串可以是在SQL语句列中找到的字符串(比如表名),也可以是在执行时间列中找到的字符串(比如日期)。
过滤字符串不区分大小写。
在显式地更改过滤器字符串之前,它将一直有效。

通过选择语句,可以在“Show History”中修改和执行SQL语句,该语句将显示在“execute Query”文本框中。
在“执行查询”中,可以修改SQL代码,然后单击“执行”。
对从Show History中检索到的SQL语句进行任何更改,都会将其作为新语句存储在Show History中;
这包括不影响执行的更改,如更改字母大小写、空格或注释。
空格不会显示在Show History中,但是当从Show History中检索SQL语句时,会保留空格。

通过单击Show History列表中SQL语句右侧的execute按钮,可以直接从Show History列表中执行(重新运行)未修改的SQL语句。

注意,Show History列表与缓存查询列表不同。
Show History列出当前会话中调用的所有SQL语句,包括那些在执行过程中失败的语句。

其他SQL接口

InterSystems IRIS支持许多其他编写和执行SQL代码的方法,在本手册的其他章节中有描述。
这些包括:

  • 嵌入式SQL:嵌入ObjectScript代码中的SQL代码。
  • 动态SQL:使用%SQL。
    语句类方法(或其他结果集类方法)用于从ObjectScript代码中执行SQL语句。
  • SQL Shell:在终端使用SQL Shell接口执行动态SQL。
00
1 0 0 7
Log in or sign up to continue