Spec-Zone.ru › MySQL 8.4

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 8.4.3 и более поздних версиях эту команду можно отключить, запустив клиент с --system-command=OFF или --skip-system-command.

  • 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 также регистрирует все, что отображается на экране, в то время как используемая с командой pager Unix-команда tee не регистрирует так много. Кроме того, регистрация файлов 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 в файле параметров, рекомендуется удваивать обратные косые черты при использовании специальных параметров запроса. Существует некоторое перекрытие набора допустимых параметров запроса и набора специальных управляющих последовательностей, распознаваемых в файлах параметров. (Правила для управляющих последовательностей в файлах параметров перечислены в разделе 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-8.4-en/mysql-commands.html

Spec-Zone.ru

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