Исследуем структуру базы данных MySQL с помощью функций SHOW
Для эффективной работы, и разработчику и тестировщику работающих с базой данных важно иметь возможность исследовать все необходимые компоненты. Рассмотрим как это сделать в MySQL при помощи выражений SHOW
2К открытий13К показов
Любая база данных это сложный набор всевозможных компонентов: таблиц, индексов, представлений, функций, процедур и других элементов. Для эффективной работы, и разработчику и тестировщику работающих с чужой базой данных важно иметь возможность исследовать все необходимые компоненты. В базе данных MySQL для этой цели существует целое семейство функций SHOW. Давайте ознакомимся с некоторыми из них и поймем, как они могут помочь QA специалистам и программистам.
1. SHOW DATABASES - "Покажи мне все свои хранилища"
Первым делом, когда вы открываете MySQL, вы можете воспользоваться SHOW DATABASES
, чтобы увидеть все доступные базы данных. Это как список папок на компьютере.
Пример ниже (и все следующие) с сайта sqlize.online
Как вы видите эта команда выводит список всех доступных вам баз данных. Если у вашего пользователя нет доступа к какой-то из баз то вы не увидите её в списке. Это нужно учесть при вашем исследовании.
2. SHOW TABLES - "Покажи, что у тебя есть"
Когда вы хотите узнать, какие таблицы существуют в определенной базе данных, просто используйте SHOW TABLES
. Это похоже на просмотр содержимого папки на компьютере. Для того что бы получить список таблиц в нужной нам базе перед выполнением команды SHOW
нужно выполнить USE dbname;
Таким образом мы получили список таблиц.
3. SHOW COLUMNS - "Что у тебя внутри?"
Если вам интересно, какие столбцы есть в таблице, просто воспользуйтесь SHOW COLUMNS
. Так вы узнаете, какие данные вы можете там найти. Данная команда используется вместе с названием исследуемой таблицы следующим образом:
Данная команда возвращает более подробный результат. Вы видите не только наименования колонок но и их тип, возможность сохранения пустых значений (NULL) является ли поле ключевым, его значение по умолчанию и дополнительную информацию о колонке.
Данное исследование может дать нам ответ на вопрос: Почему я не могу добавить запись не указав название, или почему в поле last_update
появилось значение которое я не указывал.
4. SHOW INDEX - "Покажи мне твои секретные индексы"
С SHOW INDEX
вы можете посмотреть, какие индексы установлены в таблице. Это поможет вам понять, какие столбцы можно использовать для быстрого доступа к данным.
Здесь мы видим что таблица имеет первичный ключ по полю city_id
а также не уникальный индекс по полю country_id
. Этой информации нам будет достаточно чтобы понять что выборка из таблицы городов по идентификатору страны должна быть очень быстрой.
5. SHOW CREATE TABLE - "Покажи, как создать это"
Хотите узнать, как создать определенную таблицу? Просто используйте SHOW CREATE TABLE
, и MySQL покажет вам SQL-запрос для создания таблицы.
Очень удобная штука! Таким образом вы видите всю структуру в компактном виде. Это удобно для сравнения структуры таблиц например на тестовом сервере и на боевом. Так же эта команда не заменив если кто-то просит вас показать DDL таблиц. Одна команда и всё готово. Кстати если вам нужно поделиться с коллегой вы можете воспользоваться сайтом sqlize.online - наберите или скопируйте свой SQL код, нажмите кнопку RUN чтобы код был выполнен системой, а затем кнопку SHARE, чтобы получить в буфер обмена короткую ссылку на ваш код. После этого любой, кто получит ссылку, сможет продолжить работать с вашим кодом!
В дополнение к SHOW CREATE TABLE
вы можете использовать
то есть получить код создания любого объекта в базе данных
6. SHOW TABLE STATUS - "Сколько у тебя строк?"
Наконец, SHOW TABLE STATUS
позволяет вам получить различную информацию о таблице, такую как количество строк или размер таблицы. Это полезно для оценки производительности и размера таблиц.
Из полученной таблицы мы можем извлечь массу полезной информации: когда была создана таблица, когда была изменена, сколько в ней строк и каково значение автоинкремента о котором я писал здесь. В общем ещё один ценный инструмент в руках исследователя!
7. SHOW GRANTS - "Кто имеет доступ?"
С помощью SHOW GRANTS
можно узнать привилегии, предоставленные пользователям в MySQL. Это полезно для проверки безопасности и доступа к данным.
Если у вас достаточно привилегий в базе, то при помощи этой команды можно узнать, кто ещё может подключаться к базе и какие действия выполнять. Это очень полезная команда для сисадминов и пен-тестеров.
8. SHOW MASTER / REPLICA STATUS - "Эй! Кто отстаёт?"
Эта команда необходима в случае репликации для того чтобы понять всё ли с ней в порядке и если нет - насколько всё плохо.
8. SHOW [GLOBAL] VARIABLES - "Покажи настройки"
Данная команда позволяет увидеть параметры конфигурации базы данных. Если вам нужно выбрать только нужные из большого списка - отфильтруйте их при помощи LIKE
как в примере ниже:
Эти значения могут помочь вам в оптимизации работы сервера. Далее без лишних подробностей перечислю ещё несколько полезных команд которыми мне приходилось пользоваться:
- SHOW ERRORS - показывает список ошибок.
- SHOW ENGINE STATUS - статус движка базы данных - позволяет увидеть DEAD LOCKS
Таким образом я привел список наиболее употребимых команд из целого класса SHOW SATEMENTS, которые могут сильно облегчить понимание устройства базы данных разработчиками и тестировщиками. Не стесняйтесь заглядывать в этот раздел команд если вам нужно вытащить какую либо информацию об имеющейся у вас базе.
2К открытий13К показов