Посмотреть структуру таблицы mysql для версий 5.7 и 8

В данном руководстве будет продемонстрировано 3 способа посмотреть структуру таблицы с помощью таких операторов как:

  • DESCRIBE в сокращённой форме DESC;
  • SHOW;
  • EXPLAIN.

Используемое программное обеспечение:

  • MySQL 5.7.33;
  • MySQL 8.0;
  • Windows 10 21h3 (сборка ОС 19044.1889).

Во всех экспериментах будет использована системная одноимённая база данных mysql, т.к. данная база присутствует во всех версиях СУБД MySQL.

Сразу хотелось бы уточнить, что в mysql сокращённую форму DESC можно расшифровать двумя способами:

  1. DESC — это DESCRIBE;
  2. DESC — означающий descending, используется при сортировке в ORDER BY клаузуле, например ORDER BY id DESC, что означает сортировка в обратном порядке.

1-й случай относится к текущей теме, 2-й — нет.

Для начала конечно же необходимо подключиться к СУБД MySQL через консоль.

Подключаемся к mysql 5.7

 mysql -P 3307 -uroot -p mysql 

где

  • mysql в начале — это консольная утилита mysql.exe
  • -P — параметр в верхнем регистре означающий port/порт;
  • -u — параметр означающий user/пользователь;
  • -p — параметр в нижнем регистре означающий пароль/password
  • mysql в конце — это системная база данных, также можно использовать абсолютно другую базу данных, к которой есть доступ.

 

Подключаемся к MySQL 8.0


mysql -P 3306 -uroot mysql

Версия 8.0 настроена без пароля для пользователя root.

При подключении имя базы данных, в нашем случае mysql, можно не использовать, тогда придётся использовать оператор use:

use <database_name>;

Далее используется таблица user в базе mysql:

DESCRIBE user;

версия 5.7

Версия 8. 0

Проверим работу сокращённого оператора DESC:

DESC user;

Для MySQL 5.7:

Для MySQL 8.0:

С помощью встроенного справочника можно посмотреть информацию о данном операторе DESCRIBE:

help describe;

для версии mysql 5.7

для версии mysql 8.0:

Использование в MySQL show columns from table

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


SHOW COLUMNS FROM user;

Оператор SHOW с таким синтаксисом можно использовать если наше подключение находится в контексте нужной нам базы данных, о чём свидетельствует параметр «Current database: mysql«

mysql 5.7

mysql 8.0


SHOW COLUMNS FROM user FROM mysql;

Если подключение не находится в контексте нужной нам базы или вообще не в контексте какой-либо базы, то можно и нужно указать оператору базу с помощью клаузулы FROM:

mysql 5.

7

mysql 8.0

SHOW COLUMNS FROM mysql.user;

Также не будучи в контексте какой-либо базы допускается использование так называемого полного квалификатора, т.е. перед именем таблицы использовать имя базы данных через точку: <database_name>.<table_name>

mysql 5.7

mysql 8.0

Также настоятельно рекоменду воспользоваться встроенным руководством по данному оператору:


help show columns;

которое присуствует как в MySQL  5.7

так и в mysql 8

Использование оператора EXPLAIN <table> в MySQL

Оператор EXPLAIN редко используется для просмотра структуры таблицы, но знать о его использовании в таком контексте тоже необходимо:


EXPLAIN user;

В первом случае также неоходимо быть в контексте нужной базы данных:

MySQL 5.7

MySQL 8. 0


 EXPLAIN mysql.user;

Во втором случае контекст базы данных не обязателен т.к. используется полный квалификатор:

MySQL 5.7

MySQL 8.0

Также по традиции рекомендую ознакомиться с официальной документацией, встроенной в MySQL:


help EXPLAIN;

MySQL 5.7

MySQL 8.0

 

MySQL – восстановление повреждённых таблиц

Как известно, любые повреждения происходят в результате каких-либо внешних факторов. Состояние внутренней структуры таблиц баз данных (БД), в данном случае таблиц MySQL, всецело определяет, насколько надёжным будет использование самой БД. На высоконагруженных серверах БД повреждение таблиц отнюдь не редкость. Администраторам, да и самим пользователям порой приходится прибегать к починке структуры таблиц своих БД. О том, по каким причинам повреждаются таблицы и какие существуют методы решения данной проблемы на примере MySQL и будет изложено в данной статье.

Содержание

  1. Причины повреждения таблиц
  2. Проверка таблиц на предмет повреждений
  3. Восстановление MyISAM-таблиц
  4. Восстановление InnoDB-таблиц
  5. Заключение

Причины повреждения таблиц

Если структура таблиц или хранимые в ней данные были повреждены, то MySQL не сможет прочесть их содержимое. Сами же таблицы обслуживаются специальными движками, которые производят, помимо всего прочего, ещё и чтение и запись сданных. Во время этих процессов могут возникать всевозможные непредвиденные ситуации, в результате которых возникают сбои. Хотя MySQL и способна обрабатывать подобные ситуации, но всё же она не всесильна и всего предусмотреть невозможно. Самыми распространёнными причинами повреждения таблиц обычно являются следующие:

  • аппаратный сбой, когда произошло внезапное отключение системы, например из-за сбоев в электропитании;
  • внезапная остановка работы сервера MySQL, когда в этот момент осуществлялись доступ к БД и/или чтение и запись таблиц;
  • несанкционированный доступ к файлам БД со стороны сторонних программ.

В любом случае, первое, что нужно сделать — это остановить работу MySQL-сервера, сделать резервные копии файлов таблиц, которые по умолчанию находятся в каталоге /var/lib/mysql:

$ cp -r /var/lib/mysql ~/backups/mysql_back

Для выполнения этой команды могут потребоваться привилегии суперпользователя или пользователя, имеющего доступ к каталогу /var/lib/mysql. Только после этого можно приступить к разбору ситуации и проверить, действительно ли таблицы повреждены. Для этого можно воспользоваться командной консолью MySQL. Но предварительно необходимо снова запустить MySQL-сервер. И авторизоваться на нём (от имени пользователя-администратора) с помощью команды:

$ mysql -u username -p

Здесь username – имя пользователя-администратора в системе MySQL.

Проверка таблиц на предмет повреждений

Проверить таблицы на предмет повреждения можно встроенными средствами MySQL, если для них используется движок MyISAM. Для этого используется специальный запрос «CHECK TABLE».

Итак, для начала, после авторизации в системе MySQL (как описано в предыдущей главе) необходимо выбрать интересующую БД:

mysql> use db_name;

Здесь db_name – имя требуемой базы данных, таблицы которой нужно проверить. Для получения списка всех имеющихся на сервере БД можно выполнить следующий запрос:

mysql> show databases;

Теперь можно выполнить, собственно, саму проверку:

mysql> check table db_table;
+--------------------+-------+----------+----------+
| Table              | Op    | Msg_type | Msg_text |
+--------------------+-------+----------+----------+
| db_name.db_table   | check | status   | OK       |
+--------------------+-------+----------+----------+
1 row in set (0.00 sec)

Как нетрудно догадаться, «db_table» здесь — это имя требуемой таблицы. В данном случае вывод в столбце «Msg-text» говорит о том, что с таблицей всё в порядке.

Восстановление MyISAM-таблиц

В случае, когда повреждения таблиц всё же есть. То с большой степенью вероятности таблицу можно починить, используя запрос «REPAIR TABLE»:

mysql> repair table db_table;

Теперь, если починка завершилась нормально, будет получен следующий вывод:

+-------------------+--------+----------+----------+
| Table             | Op     | Msg_type | Msg_text |
+-------------------+--------+----------+----------+
| db_name.db_table  | repair | status   | OK       |
+-------------------+--------+----------+----------+

Как можно видеть, всё довольно просто. Однако, если повреждённых таблиц много, то процесс восстановления может быть довольно трудоёмким. Ну а если же данный способ успеха не принёс, то следует обращаться к более сложным методам починки таблиц, рекомендованных самими разработчиками MySQL.

Восстановление InnoDB-таблиц

В случае, если повреждённые таблицы обслуживались движком InnoDB, то придётся использовать более сложный метод восстановления. Дело в том, что движок InnoDB сам способен следить за исправностью таблиц и устранять повреждения.

Однако, если он по каким-либо причинам не справляется с этой задачей, то сервер MySQL останавливается.

Метод восстановления для InnoDB-таблиц рекомендуется разработчиками MySQL и суть его в следующем:

  • необходимо сначала восстановить доступ к повреждённой таблице, поскольку сервер в этом случае останавливается;
  • выполнить резервную копию в виде дампа повреждённых таблиц, используя утилиту mysqldump, которая сохраняет структуру таблицы и данные;
  • удалить повреждённую таблицу;
  • выполнить загрузку дампа таблицы, но уже во вновь созданную таблицу БД, что будет сделано утилитой mysqldump автоматически.

Для восстановления доступа к таблицам можно сначала попытаться перезагрузить сервер MySQL. Если это не помогло, то можно запустить его с опцией innodb_force_recovery. Для этого необходимо отредактировать конфигурационный файл /etc/mysql/mysql.conf.d/mysqld.cnf, например, используя текстовый редактор nano:

$ sudo nano /etc/mysql/mysql. conf.d/mysqld.cnf

Необходимо сделать изменения в разделе [mysqld], добавив в него строку:

. . .
[mysqld]
. . .
innodb_force_recovery=1

Сохранив сделанные изменения и закрыв редактор nano, можно теперь снова попытаться запустить MySQL-сервер. В большинстве случаев это помогает и если доступ к таблицам удалось получить, то теперь можно создать дамп нужных таблиц, выполнив следующую команду:

$ mysqldump -u username -p db_name db_table > ~/backups/back.dump

Дамп back.dump будет сохранён в подкаталоге backups домашнего каталога текущего пользователя.

Теперь необходимо удалить из БД повреждённую таблицу. Для этого после авторизации в командной консоли MySQL (как описано в главе «Причины повреждения таблиц»), нужно выполнить следующий запрос:

mysql> DROP TABLE db_name.db_table;

Если БД была предварительно выбрана командой use, то в запросе следует указать только таблицу:

mysql> DROP TABLE db_table;

Теперь можно выйти из командной консоли MySQL командой exit. И выполнить загрузку дампа таблицы в БД:

$ mysql -u user -p < /home/username/backups/back.dump

В данном случае вместо «/home/username/backups/back.dump» следует использовать  местоположение, куда ранее был сохранён дамп.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

3.5 Использование mysql в пакетном режиме

В предыдущих разделах вы использовали mysql . в интерактивном режиме для ввода заявлений и просмотра результатов. Вы можете также запустите mysql в пакетном режиме. Для этого положите операторы, которые вы хотите запустить в файле, затем скажите mysql для чтения ввода из файла:

 $> mysql <  пакетный файл  

Если вы используете mysql под Windows и имеете некоторые специальные символы в файле, вызывающие проблемы, вы можете сделай это:

 C:\> mysql -e "исходный пакетный файл  " 

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

 $> mysql -h  хост  -u  пользователь  -p <  пакетный файл 
Введите пароль: ******** 

Когда вы таким образом используете mysql , вы создаете файл сценария, а затем выполнение сценария.

Если вы хотите, чтобы сценарий продолжался, даже если некоторые операторы в нем выдают ошибки, следует использовать --force параметр командной строки.

Зачем использовать скрипт? Вот несколько причин:

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

  • Вы можете генерировать новые запросы из существующих, которые аналогично, копируя и редактируя файлы сценариев.

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

  • Если у вас есть запрос, который выдает много вывода, вы можете запустить вывод через пейджер, а не просмотр его прокрутки верхняя часть экрана:

     $> mysql <  командный файл  | больше 
  • Вы можете записать вывод в файл для дальнейшей обработки:

     $> mysql <  командный файл  > mysql.out 
  • Вы можете распространять свой сценарий среди других людей, чтобы они также может запускать операторы.

  • Некоторые ситуации не допускают интерактивного использования, например, когда вы запускаете запрос из задания cron . В В этом случае вы должны использовать пакетный режим.

Выходной формат по умолчанию отличается (более лаконичен) при запуске mysql в пакетном режиме, чем при его использовании интерактивно. Например, вывод ВЫБЕРИТЕ ОТЛИЧНЫЙ вид ОТ питомца выглядит так, когда mysql запускается в интерактивном режиме:

 +---------+
| виды |
+---------+
| птица |
| кошка |
| собака |
| хомяк |
| змея |
+---------+ 

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

 видов
птица
кошка
собака
хомяк
змея 

Если вы хотите получить интерактивный формат вывода в пакетном режиме, используйте mysql -t . Чтобы вывести на вывод операторы, которые выполняются, используйте mysql -v .

Вы также можете использовать скрипты из приглашения mysql с помощью команды source или \. команда:

 mysql> источник  имя файла  ;
mysql>\.  имя файла  

Дополнительные сведения см. в разделе 4.5.1.5, «Выполнение операторов SQL из текстового файла».


Таблица описания MySQL — javatpoint

следующий → ← предыдущая

DESCRIBE означает подробное отображение информации. Поскольку у нас есть таблицы в MySQL, мы будем использовать команду DESCRIBE, чтобы показать структуру нашей таблицы , такую ​​как имена столбцов, ограничения на имена столбцов и т. д. Команда DESC — это краткая форма команды DESCRIBE. Обе команды DESCRIBE и DESC эквивалентны и чувствительны к регистру.

Синтаксис

Ниже приведен синтаксис для отображения структуры таблицы:

{ОПИСАТЬ | DESC} имя_таблицы;

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

Шаг 1: Войдите на сервер базы данных MySQL.

Шаг 2: Переключение на определенную базу данных.

Шаг 3: Выполнение оператора DESCRIBE.

Давайте разберемся с этим на примере, объясняющем, как отображать столбцы таблицы в выбранной базе данных.

Вход в базу данных MySQL

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

>mysql -u корень -p Введите пароль: ********** mysql>


Переключиться на определенную базу данных

Следующим шагом является открытие определенной базы данных, из которой вы хотите отобразить информацию таблицы, используя следующий запрос. После выполнения запроса мы должны увидеть следующий вывод:

mysql> ИСПОЛЬЗОВАТЬ mysqltestdb;


Выполнение оператора DESCRIBE

Это последний шаг для отображения информации таблицы. Перед выполнением оператора DESCRIBE мы можем дополнительно отобразить все таблицы, хранящиеся в нашей выбранной базе данных, с помощью оператора SHOW TABLES :

.

mysql> ПОКАЗАТЬ ТАБЛИЦЫ;


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

mysql> ОПИСАНИЕ клиента;


Мы также можем использовать оператор DESC для практики, который является сокращением команды DESCRIBE. См. приведенный ниже вывод:

.

Как отображать табличную информацию в MySQL Workbench?

Чтобы отобразить информацию столбца таблицы в MySQL Workbench, нам сначала нужно запустить инструмент Workbench и войти с именем пользователя и паролем на сервер базы данных MySQL. Мы получим следующий экран:

Теперь выполните следующие действия, чтобы отобразить информацию таблицы:

1. Перейдите на вкладку Навигация и щелкните меню Схема . Здесь мы можем увидеть все ранее созданные базы данных. Выберите любую базу данных в меню «Схема», например, mysqltestdb . Появится несколько вариантов, которые можно показать на следующем изображении.

2. Затем нажмите « Tables », который показывает все таблицы, хранящиеся в базе данных mysqltestdb. Выберите таблицу, информацию о столбцах которой вы хотите отобразить. Затем, час мыши на этом столе, он покажет три иконки . См. изображение ниже:

Теперь щелкните значок (i) , показанный в красном прямоугольном поле. Он отобразит следующее изображение:

Наконец, щелкните меню « Столбцы », чтобы отобразить структуру таблицы.

Команда MySQL SHOW COLUMNS

MySQL также позволяет команде SHOW COLUMNS отображать структуру таблицы. Это более гибкий способ получить информацию о столбцах таблицы.

Синтаксис:

Ниже приведен синтаксис команды SHOW COLUMNS:

mysql> ПОКАЗАТЬ КОЛОННЫ ИЗ table_name;

Например, , если мы выполним приведенный ниже запрос, мы получим информацию обо всех столбцах таблицы в определенной базе данных:

mysql> ПОКАЗАТЬ КОЛОННЫ ОТ клиента;


Если мы хотим отобразить информацию о столбцах таблицы из другой базы данных или недоступной в текущей базе данных, мы можем использовать следующий запрос:

mysql> ПОКАЗАТЬ КОЛОННЫ ИЗ имя_базы_данных. имя_таблицы; ИЛИ ЖЕ mysql> ПОКАЗАТЬ КОЛОННЫ ИЗ имя_таблицы В имя_базы_данных;

На изображении ниже видно, что мы использовали базу данных mysqltestdb. Но мы отобразили информацию столбца таблицы из другой базы данных, не переключаясь на текущую базу данных.

Если мы хотим отобразить больше информации о столбцах, нам нужно добавить ключевое слово FULL с оператором SHOW TABLES следующим образом:

mysql> ПОКАЗАТЬ ПОЛНЫЕ СТОЛБЦЫ ИЗ table_name;

Например, , приведенный ниже SQL-запрос перечисляет все столбцы таблицы student_info в базе данных mystudentdb :

mysql> ПОКАЗАТЬ ПОЛНЫЕ СТОЛБЦЫ ОТ student_info;

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

MySQL ОБЪЯСНЕНИЕ

Ключевое слово EXPLAIN является синонимом инструкции DESCRIBE, которая используется для получения информации о том, как MySQL выполняет запросы .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *