zaLinux.ru

Как в MySQL и MariaDB для таблицы вывести только имена столбцов и ничего более


Как в 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 выводить результаты без таблицы и без посторонних символов


Рекомендуемые статьи:

Оставить комментарий

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