pgadmin4/docs/en_US/query_tool.rst

230 lines
8.8 KiB
ReStructuredText

.. _query_tool:
*******************
`Query Tool`:index:
*******************
The Query Tool is a powerful, feature-rich environment that allows you to
execute arbitrary SQL commands and review the result set. You can access the
Query Tool via the *Query Tool* menu option on the *Tools* menu, or through the
context menu of select nodes of the Browser tree control. The Query Tool
allows you to:
* Issue ad-hoc SQL queries.
* Execute arbitrary SQL commands.
* Edit the result set of a SELECT query if it is
:ref:`updatable <updatable-result-set>`.
* Displays current connection and transaction status as configured by the user.
* Save the data displayed in the output panel to a CSV file.
* Review the execution plan of a SQL statement in either a text or a graphical
format.
* View analytical information about a SQL statement.
.. image:: images/query_tool.png
:alt: Query tool window
:align: center
You can open multiple copies of the Query tool in individual tabs
simultaneously. To close a copy of the Query tool, click the *X* in the
upper-right hand corner of the tab bar.
The Query Tool features two panels:
* The upper panel displays the *SQL Editor*. You can use the panel to enter,
edit, or execute a query. It also shows the *History* tab which can be used
to view the queries that have been executed in the session, and a *Scratch Pad*
which can be used to hold text snippets during editing. If the Scratch Pad is
closed, it can be re-opened (or additional ones opened) by right-clicking in
the SQL Editor and other panels and adding a new panel.
* The lower panel displays the *Data Output* panel. The tabbed panel displays
the result set returned by a query, information about a query's execution plan,
server messages related to the query's execution and any asynchronous
notifications received from the server.
Toolbar
*******
The toolbar is described in the following subsections.
.. toctree::
:maxdepth: 2
query_tool_toolbar
The SQL Editor Panel
********************
The *SQL editor* panel is a workspace where you can manually provide a query,
copy a query from another source, or read a query from a file. The SQL editor
features syntax coloring and autocompletion.
.. image:: images/query_sql_editor.png
:alt: Query tool editor
:align: center
To use autocomplete, begin typing your query; when you would like the Query
editor to suggest object names or commands that might be next in your query,
press the Control+Space key combination. For example, type "\*SELECT \* FROM\* "
(without quotes, but with a trailing space), and then press the Control+Space
key combination to select from a popup menu of autocomplete options.
.. image:: images/query_autocomplete.png
:alt: Query tool autocomplete feature
:align: center
After entering a query, select the *Execute/Refresh* icon from the toolbar. The
complete contents of the SQL editor panel will be sent to the database server
for execution. To execute only a section of the code that is displayed in the
SQL editor, highlight the text that you want the server to execute, and click
the *Execute/Refresh* icon.
.. image:: images/query_execute_section.png
:alt: Query tool execute query section
:align: center
The message returned by the server when a command executes is displayed on the
*Messages* tab. If the command is successful, the *Messages* tab displays
execution details.
.. image:: images/query_tool_message.png
:alt: Query tool message panel
:align: center
Options on the *Edit* menu offer functionality that helps with code formatting
and commenting:
* The auto-indent feature will automatically indent text to the same depth as
the previous line when you press the Return key.
* Block indent text by selecting two or more lines and pressing the Tab key.
* Implement or remove SQL style or toggle C style comment notation within your
code.
You can also **drag and drop** certain objects from the treeview which
can save time in typing long object names. Text containing the object name will be
fully qualified with schema. Double quotes will be added if required.
For functions and procedures, the function name along with parameter names will
be pasted in the Query Tool.
The Data Output Panel
*********************
The *Data Output* panel displays data and statistics generated by the most
recently executed query.
.. image:: images/query_output_data.png
:alt: Query tool output panel
:align: center
The *Data Output* tab displays the result set of the query in a table format.
You can:
* Select and copy from the displayed result set.
* Use the *Execute/Refresh* options to retrieve query execution information and
set query execution options.
* Use the *Download as CSV* icon to download the content of the *Data Output*
tab as a comma-delimited file.
* Edit the data in the result set of a SELECT query if it is updatable.
.. _updatable-result-set:
A result set is updatable if:
* All the columns belong to the same table.
* All the primary keys or OIDs of the table are explicitly selected.
* No columns are duplicated.
The psycopg2 driver version should be equal to or above 2.8 for updatable
query result sets to work.
An updatable result set can be modified just like in
:ref:`View/Edit Data <modifying-data-grid>` mode.
If Auto-commit is off, the data changes are made as part of the ongoing
transaction, if no transaction is ongoing a new one is initiated. The data
changes are not committed to the database unless the transaction is committed.
If any errors occur during saving (for example, trying to save NULL into a
column with NOT NULL constraint) the data changes are rolled back to an
automatically created SAVEPOINT to ensure any previously executed queries in
the ongoing transaction are not rolled back.
All rowsets from previous queries or commands that are displayed in the *Data
Output* panel will be discarded when you invoke another query; open another
Query Tool tab to keep your previous results available.
Use the *Explain* tab to view a graphical representation of a query:
.. image:: images/query_output_explain.png
:alt: Query tool explain panel
:align: center
To generate a graphical explain diagram, open the *Explain* tab, and select
*Explain*, *Explain Analyze*, or one or more options from the *Explain options*
drop-down. Please note that *EXPLAIN VERBOSE*
cannot be displayed graphically. Hover over an icon on the *Explain* tab to
review information about that item; a popup window will display information
about the selected object. For information on JIT statistics, triggers and a
summary, hover over the icon on top-right corner; a similar popup window will
be displayed when appropriate.
Use the download button on top left corner of the *Explain* canvas to download
the plan as an SVG file.
**Note:** Download as SVG is not supported on Internet Explorer.
.. image:: images/query_output_explain_details.png
:alt: Query tool graphical explain plan
:align: center
Note that the query plan that accompanies the *Explain analyze* is available on
the *Data Output* tab.
Use the *Messages* tab to view information about the most recently executed
query:
.. image:: images/query_output_error.png
:alt: Query tool output messages
:align: center
If the server returns an error, the error message will be displayed on the
*Messages* tab, and the syntax that caused the error will be underlined in the
SQL editor. If a query succeeds, the *Messages* tab displays how long the
query took to complete and how many rows were retrieved:
.. image:: images/query_output_messages.png
:alt: Query tool output information
:align: center
Use the *Query History* tab to review activity for the current session:
.. image:: images/query_output_history.png
:alt: Query tool history panel
:align: center
The Query History tab displays information about recent commands:
* The date and time that a query was invoked.
* The text of the query.
* The number of rows returned by the query.
* The amount of time it took the server to process the query and return a
result set.
* Messages returned by the server (not noted on the *Messages* tab).
To erase the content of the *Query History* tab, select *Clear history* from
the *Clear* drop-down menu.
Query History is maintained across sessions for each database on a per-user
basis when running in Query Tool mode. In View/Edit Data mode, history is not
retained. By default, the last 20 queries are stored for each database. This
can be adjusted in `config_local.py` by overriding the `MAX_QUERY_HIST_STORED`
value. See the :ref:`Deployment <deployment>` section for more information.
Use the *Connection status* feature to view the current connection and
transaction status by clicking on the status icon in the Query Tool:
.. image:: images/query_tool_connection_status.png
:alt: Query tool connection and transaction statuses
:align: center