Как в SHOW COLUMNS вывести только имена полей
Обратимся к ситуации, когда в MySQL и MariaDB нужно получить информацию не из таблицы, а о самой таблице, например, имена полей.
Мы уже рассматривали, как для любой таблицы получить список полей для этого используется SQL-запрос с оператором SHOW, например:
SHOW COLUMNS FROM mydb.mytable; SHOW FIELDS IN mytable FROM mydb;
Подробности смотрите в статье: Как в MySQL / MariaDB вывести список столбцов. Как в PHP проверить наличие столбца в таблице
Этот способ позволяет получить имена полей таблицы, вместе с их описанием. То есть выводится дополнительная информация, такая как тип поля, значение по умолчанию, должно ли значение обязательно быть ненулевым и прочее.
Но что если нужно получить только имена полей таблицы и ничего более? Для этого имеется решение, но стандартными средствами с помощью SHOW COLUMNS FROM не получится этого достичь.
Как получить имена столбцов таблицы из information_schema.columns
Тем не менее, СУБД хранит имена столбцов всех таблиц в information_schema.columns и мы можем получить их оттуда с помощью следующей конструкции:
SELECT column_name FROM information_schema.columns WHERE table_name = 'your_table' AND table_schema = 'database_name';
В этой конструкции нужно заменить две величины:
- замените your_table на имя таблицы для которой вы хотите получить имена столбцов
- замените database_name на имя базы данных, в которой находится таблица, чьи столбцы мы получаем
К примеру, я хочу получить имена столбцов таблицы user, которая находится в базе данных mysql, для этого нужно выполнить следующий SQL-запрос:
SELECT column_name FROM information_schema.columns WHERE table_name = 'user' AND table_schema = 'mysql';
Если вы хотите перечислить столбцы в том порядке, в котором они отображаются в таблице, добавьте в запрос ORDER BY ordinal_position:
SELECT column_name FROM information_schema.columns WHERE table_name = 'your_table' AND table_schema = 'database_name' ORDER BY ordinal_position;
Пример реального SQL-запроса:
SELECT column_name FROM information_schema.columns WHERE table_name = 'user' AND table_schema = 'mysql' ORDER BY ordinal_position;
Как вывести только имена столбцов таблицы без их характеристики и без дополнительных символов
Если вам нужно получить только имена полей таблицы без лишних данных, то, вполне возможно, вам также будут мешаться символы и пробелы, которые используются для рисования таблицы. Чтобы вывести только имена столбцов таблицы и ничего более, запустите клиент mysql/mariadb с тремя опциями: -r -s -N, например:
mariadb -u root -s -r -N
И затем выполните запрос, который показан в данной статье выше.
В результате будет выведены только имена столбцов таблицы без лишних данных и символов. Вы можете использовать эти имена в скрипте или скопировать их.
Смотрите также: Как в MySQL и MariaDB выводить результаты без таблицы и без посторонних символов
Связанные статьи:
- Как в MySQL / MariaDB вывести список столбцов. Как в PHP проверить наличие столбца в таблице (100%)
- Как в MySQL и MariaDB выводить результаты без таблицы и без посторонних символов (89.3%)
- Ошибка «Failed - Network error» во время экспорта в phpMyAdmin (РЕШЕНО) (60.7%)
- Как переименовать таблицу в phpMyAdmin и MySQL (60.7%)
- Как в MySQL результаты запроса сохранить в новую таблицу (60.7%)
- Как включить доступ root к MySQL и MariaDB с любых хостов (RANDOM - 50%)