Посмотреть структуру таблицы mysql для версий 5.7 и 8
В данном руководстве будет продемонстрировано 3 способа посмотреть структуру таблицы с помощью таких операторов как:
- DESCRIBE в сокращённой форме DESC;
- SHOW;
- EXPLAIN.
Используемое программное обеспечение:
- MySQL 5.7.33;
- MySQL 8.0;
- Windows 10 21H2 (сборка ОС 19044.1889).
Во всех экспериментах будет использована системная одноимённая база данных mysql, т.к. данная база присутствует во всех версиях СУБД MySQL.
Использование DESCRIBE в MySQL
Сразу хотелось бы уточнить, что в mysql сокращённую форму DESC можно расшифровать двумя способами:
- DESC — это DESCRIBE;
- 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:
Далее используется таблица user в базе mysql:
DESCRIBE user;


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


С помощью встроенного справочника можно посмотреть информацию о данном операторе 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;
Также не будучи в контексте какой-либо базы допускается использование так называемого полного квалификатора, т.е. перед именем таблицы использовать имя базы данных через точку: .
mysql 5.7

mysql 8.0

Также настоятельно рекоменду воспользоваться встроенным руководством по данному оператору:
help show columns;
которое присуствует как в MySQL 5.7

так и в mysql 8

Использование оператора EXPLAIN в 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 список таблиц и их структура
Для настройки кодировки utf8 по умолчанию
Необходимо внести следующие изменения в файл my.cnf (my.ini):
[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’ character-set-server = utf8 collation-server = utf8_unicode_ci
[client]
default-character-set = utf8
CREATE TABLE `table_new` FROM `table_orig`;
Информация об установленной версии pkg_info | grep mysql (FreeBSD) добавить столбец в таблице в базе mysql
ALTER TABLE `table_name` ADD `vcolumn_name` INT( 11 ) NOT NULL;
переименование столбцов в таблице
ALTER TABLE `table` CHANGE COLUMN `test` `materials` INT(10) NOT NULL DEFAULT 0;
внести изменения в столбцы таблицы
ALTER TABLE `table` MODIFY COLUMN `test` SMALLINT NOT NULL DEFAULT 0, `materials` SMALLINT NOT NULL DEFAULT 0;
ALTER TABLE tablename ENGINE=MyISAM
В будущем, если включите innodb_file_per_table, сможете уменьшать объем tablespace путем
пересоздания таблиц сразу в InnoDB (т.к. в режиме файл-на-таблицу файл при удалении таблицы
стирается) командой
ALTER TABLE tablename ENGINE=InnoDB
Определение размера таблицы
SELECT table_name AS table_name, engine, ROUND(data_length/1024/1024,2) AS total_size_mb, table_rows FROM information_schema.tables WHERE table_schema=DATABASE();
Показывает обьем и количество строк в таблицах MySQL.
Перемещение таблицы MySQL в другую базу
mysql> RENAME TABLE database1.table TO database2.table;
Копирование таблицы MySQL в другую базу
mysql> CREATE TABLE database2.table LIKE database1.table; mysql> INSERT INTO database2.table SELECT * FROM database1.table;
Копирование таблицы MySQL в другую базу с условием
mysql> CREATE TABLE database2.table LIKE database1.table; mysql> INSERT INTO database2.table SELECT * FROM database1.table WHERE `row`='1';
Копирование необходимых столбцов таблицы MySQL в другую базу
mysql> INSERT INTO database2.table(`row_1`, `row_2`, `row_3`) SELECT `row_1`, `row_2`, `row_3` FROM database1.table;
database1— база из которой копируем database2 — база в которую копируем
table — название таблицы
Текущее состояние кэша
Посмотреть состояние кэша можно с помощью запроса:
mysql> SHOW GLOBAL STATUS LIKE 'Qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 973 | | Qcache_free_memory | 14282000 | | Qcache_hits | 3293750 | | Qcache_inserts | 252819 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 66645 | | Qcache_queries_in_cache | 1342 | | Qcache_total_blocks | 3709 | +-------------------------+----------+ 8 rows in set (0.00 sec)
- Qcache_free_memory — объем свободной памяти, отведенной под кэш.
- Qcache_hits — количество запросов, отработанных из кэша.
- Qcache_inserts — количество вставок запросов в кэш.
- Qcache_lowmem_prunes — количество высвобождений памяти из-за наполненности кэша.
- Qcache_not_cached — количество запросов, не подлежащих кэшированию.
- Qcache_queries_in_cache — количество запросов, находящихся в кэше в настоящее время.
Мерой эффективности кэша может служить отношение Qcache_hits / (Qcache_inserts + Qcache_not_cached).
Читайте другие интересные статьи
Понравилась статья, расскажи о ней друзьям, нажми кнопку!
Как посмотреть структуру таблицы mysql
Как быть, если вы забыли имя базы или таблицы, или структуру какой-либо из таблиц (например имена столбцов)? В MySQL эта проблема решается при помощи нескольких команд, выводящих информацию о базе данных и содержащихся в ней таблицах.
Вы уже познакомились с командой SHOW DATABASES , выводящей список управляемых сервером баз данных. Определить, какая из них выбрана в данный момент, можно с помощью функции DATABASE() :
mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | menagerie | +------------+
Если ни одна из баз не выбрана, результат будет пуст.
Выяснить, какие таблицы содержит текущая база данных (что необходимо, если, например, никак не получается вспомнить имя нужной таблицы), можно при помощи следующей команды:
mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | event | | pet | +---------------------+
Узнать структуру таблицы можно при помощи команды DESCRIBE , которая выводит информацию о каждом из столбцов таблицы:
mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
Field — имя столбца, Type — тип данных, к которому относится этот столбец, NULL указывает, может ли данный столбец содержать значения NULL , Key — является ли этот столбец индексным, и, наконец, Default указывает значение данного столбца по умолчанию.
Если для таблицы созданы индексы, информацию о них можно получить с помощью команды SHOW INDEX FROM tbl_name .
Как узнать структуру таблицы mysql
Бывает такая ситуация, когда phpmyadmin не настроен и нет под рукой ни какой сторонней программы, а нужно делать выборку из талицы по нескольким полям название, которых вы конечно же не помните. Для того чтобы просмотреть структуру таблицы mysql, список всех колонок в таблице проще всего выполнить команду:
SHOW CREATE TABLE имя таблицы
Таким образом вы можете узнать не только список столбцов, но и способ хранения данных, кодировку и сортировку.
Если у вас проблемы с работай mysql обращайтесь к нам [email protected], мы поможем решить ваши вопросы.
Похожие статьи:
- Восстановление или ремонт таблиц или индексов mysql
- Выборка из таблицы mysql в файл
- Перенос таблицы БД mysql по файлам
- Бэкап одной таблицы в базе MySQL
