第十五章 使用管理門戶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
子句謂詞和其他查詢組件來創建SQLSELECT
查詢。
然后,可以通過單擊Execute query來運行查詢。
編寫SQL語句
Execute Query文本框不僅允許編寫SELECT
和CALL
查詢,還允許編寫大多數SQL語句,包括DDL語句(如CREATE TABLE
)和DML語句(如INSERT
、UPDATE
和DELETE
)。
可以在“執行查詢”文本框中指定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按鈕在頁面的文本框中顯示語句文本和查詢計劃,包括查詢的當前查詢計劃的相對成本(開銷)??梢詮腅xecute查詢或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字段在結果表單元格中右對齊。
ROWID
,NUMERIC
和所有其他字段都是左對齊的。
當使用動態SQL代碼,SQL Shell或嵌入式SQL代碼執行相同的查詢時,不會發生這些結果顯示功能。
如果指定的查詢返回多個結果集,則執行查詢將這些結果集顯示為命名選項卡:Result #1
, Result #2
等。
查詢執行指標
如果成功,則執行查詢顯示性能信息和緩存查詢例程的名稱。如果顯示數據以顯示,則顯示在性能信息下方。執行信息包括行計數,性能,緩存查詢,顯示緩存的查詢名稱,最后更新指定查詢的最后一次執行的時間戳。
- Row count:對于
CREATE TABLE
這樣的DDL語句,如果操作成功,則顯示Row count: 0
。
對于INSERT
、UPDATE
或DELETE
等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。