Spec-Zone.ru › MySQL 9.2

6.5.1.2 Команды клиента mysql

mysql отправляет каждое SQL-утверждение, которое вы вводите, на сервер для выполнения. Также существует набор команд, которые сам mysql интерпретирует. Для просмотра списка этих команд введите help или \h в приглашении mysql>:

mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given
               outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...)
for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout
or file.

For server side help, type 'help contents'

Если mysql вызывается с параметром --binary-mode, все команды mysql отключаются, за исключением charset и delimiter в неинтерактивном режиме (для ввода, перенаправленного в mysql, или загруженного с помощью команды source).

Каждая команда имеет длинную и короткую формы. Длинная форма нечувствительна к регистру; короткая — чувствительна. Длинную форму можно дополнить необязательным символом-разделителем «точка с запятой», но короткую — нельзя.

Использование команд короткой формы внутри многострочных /* ... */ комментариев не поддерживается. Команды короткой формы работают внутри однострочных /*! ... */ комментариев версии, а также /*+ ... */ комментариев с подсказками оптимизатора, которые хранятся в определениях объектов. Если есть опасения, что комментарии с подсказками оптимизатора могут храниться в определениях объектов таким образом, что файлы дампов при повторной загрузке с помощью mysql приведут к выполнению таких команд, вызовите mysql с параметром --binary-mode или используйте другой клиент для перезагрузки, нежели mysql.

  • help [arg], \h [arg], \? [arg], ? [arg]

    Отобразить сообщение справки, перечисляющее доступные команды mysql.

    Если вы предоставите аргумент команде help, mysql использует его как строку поиска для доступа к справочной информации на стороне сервера из содержимого Справочного руководства MySQL. Дополнительную информацию см. в разделе 6.5.1.4, «Справка mysql на стороне сервера».

  • charset charset_name, \C charset_name

    Изменить набор символов по умолчанию и выполнить оператор SET NAMES. Это позволяет набору символов оставаться синхронизированным на клиенте и сервере, если mysql запущен с включенным автоматическим подключением (чего не рекомендуется), так как указанный набор символов используется для повторных подключений.

  • clear, \c

    Очистить текущий ввод. Используйте эту команду, если вы передумали выполнить вводимый оператор.

  • connect [db_name [host_name]], \r [db_name [host_name]]

    Подключиться к серверу снова. Дополнительные аргументы имени базы данных и имени хоста можно использовать для указания базы данных по умолчанию или хоста, на котором работает сервер. Если аргументы опущены, используются текущие значения.

    Если команда connect указывает аргумент имени хоста, этот хост имеет приоритет перед любым параметром --dns-srv-name, заданным при запуске mysql для указания записи DNS SRV.

  • delimiter str, \d str

    Изменить строку, которую mysql интерпретирует как разделитель между операторами SQL. По умолчанию это символ точки с запятой (;).

    Строка-разделитель может быть указана как необработанный или обработанный аргумент в команде delimiter в командной строке. Обработка может быть выполнена с помощью одинарной кавычки ('), двойной кавычки (") или обратной кавычки (`). Для вставки кавычки в строку с кавычками необходимо либо заключить строку в кавычки другого типа, либо экранировать кавычку обратной косой чертой (\). Обратную косую черту следует избегать вне строковых литералов, поскольку она является управляющим символом в MySQL. Для необработанного аргумента разделитель считывается до первой пробельной или конечной строки. Для обработанного аргумента разделитель считывается до соответствующей кавычки в строке.

    mysql интерпретирует строки разделителей как разделители операторов, где бы они ни появлялись, за исключением строк с кавычками. Будьте осторожны, задавая разделитель, который может встречаться в других словах. Например, если вы определите разделитель как X, то использовать слово INDEX в операторах невозможно. mysql интерпретирует это как INDE, за которым следует разделитель X.

    Когда разделитель, распознанный mysql, отличается от значения по умолчанию ;, экземпляры этого символа отправляются на сервер без интерпретации. Однако сам сервер по-прежнему интерпретирует ; как разделитель операторов и обрабатывает операторы соответственно. Это поведение на стороне сервера используется для выполнения нескольких операторов (см. ), а также для разбора тела хранимых процедур, функций, триггеров и событий (см. раздел 27.1, «Определение хранимых программ»).

  • edit, \e

    Редактировать текущий вводимый оператор. mysql проверяет значения переменных среды EDITOR и VISUAL, чтобы определить, какой редактор использовать. По умолчанию используется редактор vi, если ни одна из переменных не задана.

    Команда edit работает только в Unix.

  • ego, \G

    Отправить текущий оператор на сервер для выполнения и отобразить результат в вертикальном формате.

  • exit, \q

    Выход из mysql.

  • go, \g

    Отправить текущий оператор на сервер для выполнения.

  • nopager, \n

    Отключить постраничную вывод. Смотрите описание для pager.

    Команда nopager работает только в Unix.

  • notee, \t

    Отключить копирование вывода в файл tee. Смотрите описание для tee.

  • nowarning, \w

    Отключить отображение предупреждений после каждого оператора.

  • pager [command], \P [command]

    Включить постраничный вывод. Используя параметр --pager при вызове mysql, можно просматривать или искать результаты запросов в интерактивном режиме с помощью программ Unix, таких как less, more или аналогичных программ. Если вы не укажете значение для параметра, mysql проверит значение переменной среды PAGER и установит просмотрщик в соответствии с этим значением. Функциональность просмотрщика работает только в интерактивном режиме.

    Постраничный вывод можно включить интерактивно с помощью команды pager и отключить с помощью nopager. Команда принимает необязательный аргумент; если он указан, программа просмотрщика устанавливается в соответствии с ним. Без аргумента просмотрщик устанавливается в просмотрщик, заданный в командной строке, или stdout, если просмотрщик не был указан.

    Постраничный вывод работает только в Unix, так как использует функцию popen(), которая не существует в Windows. Для Windows можно использовать параметр tee для сохранения вывода запроса, хотя это не так удобно, как pager для просмотра вывода в некоторых ситуациях.

  • print, \p

    Распечатать текущий вводимый оператор без его выполнения.

  • prompt [str], \R [str]

    Перенастроить приглашение mysql на заданную строку. Специальные последовательности символов, которые можно использовать в приглашении, описаны позже в этом разделе.

    Если вы укажете команду prompt без аргумента, mysql сбросит приглашение до значения по умолчанию mysql>.

  • query_attributes name value [name value ...]

    Определить атрибуты запроса, которые применяются к следующему запросу, отправленному на сервер. Обсуждение цели и использования атрибутов запроса см. в разделе 11.6, «Атрибуты запроса».

    Команда query_attributes следует этим правилам:

    • Формат и правила обработки строк для имен и значений атрибутов совпадают с правилами для команды delimiter.

    • Команда допускает до 32 пар имя/значение атрибута. Имена и значения могут иметь длину до 1024 символов. Если имя указано без значения, возникает ошибка.

    • Если перед выполнением запроса выдаются несколько команд query_attributes, применяется только последняя команда. После отправки запроса mysql очищает набор атрибутов.

    • Если несколько атрибутов определены с одинаковым именем, попытки извлечения значения атрибута по имени имеют неопределенный результат.

    • Атрибут, определенный с пустым именем, не может быть получен по имени.

    • Если во время выполнения запроса mysql происходит повторное подключение, mysql восстанавливает атрибуты после повторного подключения, чтобы запрос можно было выполнить снова с теми же атрибутами.

  • quit, \q

    Выход из mysql.

  • rehash, \#

    Перестроить хеш завершения, который позволяет выполнять завершение имен баз данных, таблиц и столбцов во время ввода операторов. (См. описание параметра --auto-rehash.)

  • resetconnection, \x

    Сбросьте соединение, чтобы очистить состояние сеанса. Это включает очистку любых текущих атрибутов запроса, определённых с помощью команды query_attributes.

    Сброс соединения имеет последствия, аналогичные или автоматическому подключению, за исключением того, что соединение не закрывается и не переоткрывается, и повторная аутентификация не выполняется. См. , и .

    В этом примере показано, как resetconnection очищает значение, хранящееся в состоянии сеанса:

    mysql> SELECT LAST_INSERT_ID(3);
    +-------------------+
    | LAST_INSERT_ID(3) |
    +-------------------+
    |                 3 |
    +-------------------+
    
    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                3 |
    +------------------+
    
    mysql> resetconnection;
    
    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                0 |
    +------------------+
    
  • source file_name, \. file_name

    Прочитайте именованный файл и выполните содержащиеся в нём операторы. В Windows укажите разделители пути как / или \\.

    Знаки кавычек рассматриваются как часть имени файла. Для наилучших результатов имя не должно содержать пробелов.

  • ssl_session_data_print [file_name]

    Извлекает, сериализует и, по желанию, сохраняет данные сеанса успешного подключения. Дополнительное имя файла и аргументы могут быть заданы для указания файла для сохранения сериализованных данных сеанса. Если они опущены, данные сеанса выводятся на stdout.

    Если сеанс MySQL настроен на повторное использование, данные сеанса из файла десериализуются и подаются команде connect для повторного подключения. При успешном повторном использовании сеанса команда status содержит строку, показывающую SSL session reused: true, в то время как клиент остаётся подключенным к серверу.

  • status, \s

    Предоставляет информацию о статусе подключения и используемом сервере. Если вы работаете с --safe-updates включённым, status также выводит значения переменных mysql, которые влияют на ваши запросы.

  • system command, \! command

    Выполните заданную команду, используя ваш интерпретатор команд по умолчанию.

    В MySQL 9.2 эта команда отключена по умолчанию. Вы можете включить её, запустив клиент с --system-command=ON.

  • tee [file_name], \T [file_name]

    Используя опцию --tee при вызове mysql, можно регистрировать операторы и их вывод. Все данные, отображаемые на экране, добавляются в указанный файл. Это может быть очень полезно для отладки. mysql сбрасывает результаты в файл после каждого оператора, незадолго до вывода следующего приглашения. Функциональность tee работает только в интерактивном режиме.

    Вы можете включить эту функцию интерактивно с помощью команды tee. Без параметра используется предыдущий файл. Файл tee можно отключить с помощью команды notee. Выполнение tee снова включает ведение журнала.

  • use db_name, \u db_name

    Использовать db_name в качестве базы данных по умолчанию.

  • warnings, \W

    Включить отображение предупреждений после каждого оператора (если они есть).

Вот несколько советов по команде pager:

  • Вы можете использовать её для записи в файл, а результаты попадают только в файл:

    mysql> pager cat > /tmp/log.txt
    

    Вы также можете передавать любые опции для программы, которую вы хотите использовать в качестве просмотрщика:

    mysql> pager less -n -i -S
    
  • В предыдущем примере обратите внимание на опцию -S. Она может оказаться очень полезной для просмотра широких результатов запросов. Иногда очень большой набор результатов сложно читать на экране. Опция -S для less может сделать набор результатов намного более читаемым, потому что вы можете прокручивать его по горизонтали с помощью клавиш со стрелками влево и вправо. Вы также можете интерактивно использовать -S внутри less для включения и отключения режима горизонтального просмотра. Для получения дополнительной информации прочитайте руководство по less:

    man less
    
  • Опции -F и -X могут быть использованы с less для вывода, если вывод поместится на одном экране, что удобно, когда прокрутка не требуется:

    mysql> pager less -n -i -S -F -X
    
  • Вы можете задавать очень сложные команды просмотрщика для обработки вывода запросов:

    mysql> pager cat | tee /dr1/tmp/res.txt \
              | tee /dr2/tmp/res2.txt | less -n -i -S
    

    В этом примере команда отправит результаты запроса в два файла в двух разных каталогах на двух разных файловых системах, смонтированных на /dr1 и /dr2, но всё равно отобразит результаты на экране с помощью less.

Вы также можете комбинировать функции tee и pager. Имейте включённый файл tee и установленный pager в less, и вы сможете просматривать результаты с помощью программы less и в то же время всё будет добавляться в файл. Разница между Unix-командой tee, используемой с командой pager, и встроенной командой mysql tee заключается в том, что встроенная команда tee работает даже если у вас нет Unix-команды tee. Встроенная команда tee также регистрирует всё, что отображается на экране, в то время как Unix-команда tee с pager не регистрирует столько же. Кроме того, ведение журнала файлов tee можно включать и отключать интерактивно в mysql. Это полезно, когда вы хотите регистрировать некоторые запросы в файле, а не другие.

Команда prompt переконфигурирует приглашение по умолчанию mysql>. Строка для определения приглашения может содержать следующие специальные последовательности.

Опция Описание
\C Текущий идентификатор соединения
\c Счётчик, увеличивающийся для каждого выпущенного вами оператора
\D Полная текущая дата
\d База данных по умолчанию
\h Хост сервера
\l Текущий разделитель
\m Минуты текущего времени
\n Символ новой строки
\O Текущий месяц в формате из трёх букв (Янв, Фев, …)
\o Текущий месяц в числовом формате
\P am/pm
\p Текущий TCP/IP порт или файл сокета
\R Текущее время в 24-часовом военном времени (0–23)
\r Текущее время в стандартном 12-часовом формате (1–12)
\S Точка с запятой
\s Секунды текущего времени
\T Печать звёздочки (*), если текущий сеанс находится внутри блока транзакции
\t Символ табуляции
\U

Полное имя вашей учётной записи user_name@host_name

\u Ваше имя пользователя
\v Версия сервера
\w Текущий день недели в формате из трёх букв (Пн, Вт, …)
\Y Текущий год, четыре цифры
\y Текущий год, две цифры
\_ Пробел
\  Пробел (пробел следует за обратной косой чертой)
\' Одинарная кавычка
\" Двойная кавычка
\\ Литеральная \ обратная косая черта
\x

x, для любых “x” не указанных выше

Вы можете установить приглашение несколькими способами:

  • Используйте переменную среды. Вы можете установить переменную среды MYSQL_PS1 в строку запроса. Например:

    export MYSQL_PS1="(\u@\h) [\d]> "
    
  • Используйте командную опцию. Вы можете установить опцию --prompt в командной строке для mysql. Например:

    $> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    
  • Используйте файл параметров. Вы можете установить опцию prompt в группе [mysql] любого файла параметров MySQL, например, /etc/my.cnf или файла .my.cnf в вашем домашнем каталоге. Например:

    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_
    

    В этом примере обратите внимание, что обратные слэши дублируются. Если вы устанавливаете запрос с помощью опции prompt в файле параметров, рекомендуется дублировать обратные слэши при использовании специальных опций запроса. Существует некоторое совпадение в наборе допустимых опций запроса и наборе специальных последовательностей escape, которые распознаются в файлах параметров. (Правила для последовательностей escape в файлах параметров перечислены в разделе 6.2.2.2, «Использование файлов параметров».) Перекрытие может вызвать проблемы, если вы используете одинарные обратные слэши. Например, \s интерпретируется как пробел, а не как текущее значение секунд. Следующий пример показывает, как определить запрос в файле параметров, чтобы включить текущее время в формате hh:mm:ss>:

    [mysql]
    prompt="\\r:\\m:\\s> "
    
  • Установите запрос интерактивно. Вы можете изменить запрос интерактивно, используя команду prompt (или \R). Например:

    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>
    

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-commands.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API