- Как получить список и описание всех колонок в таблице Microsoft SQL Server?
- Получаем список колонок таблицы с помощью представления информационной схемы
- Получаем список столбцов таблицы с помощью системного представления sys.columns
- Получаем список колонок таблицы с помощью системной процедуры sp_columns
- COLUMNS (Transact-SQL)
- Remarks
- Получить имена столбцов таблицы в MySQL?
- 17 ответов:
- Запрос MySQL для получения имен столбцов?
- 18 ответов
Как получить список и описание всех колонок в таблице Microsoft SQL Server?
В данной заметке будет рассмотрено несколько способов получения информации о столбцах таблицы в базе данных Microsoft SQL Server, например, мы научимся получать список колонок таблицы, включая их тип данных, с помощью SQL запроса.
Начну с того, что если Вам нужно просто визуально посмотреть, какие колонки или какой тип данных у той или иной колонке в таблице, то Вы для этого можете использовать графический функционал SQL Server Management Studio, а именно «Обозреватель объектов». Например, для того чтобы посмотреть информацию о столбцах таблицы, необходимо плюсиком открыть соответствующий контейнер.
Но если Вам необходимо выгрузить эту информацию или обработать ее в SQL инструкции, то в этом случае необходимо обращаться к системным объектам SQL Server с помощью языка SQL, как и к каким именно объектам обращаться мы сейчас и рассмотрим.
Примечание! Все примеры ниже мы будем рассматривать в Microsoft SQL Server 2016 Express. В базе данных создана тестовая таблица TestTable, она имеет всего три столбца.
Получаем список колонок таблицы с помощью представления информационной схемы
В Microsoft SQL Server существует специальная схема — INFORMATION_SCHEMA, которая содержит метаданные для всех объектов базы данных. В данной схеме есть представление COLUMNS, с помощью которого и можно получить информацию о колонках таблицы. Также в ней есть и другие полезные представления, о которых мы разговаривали в статье — «Представления информационной схемы Microsoft SQL Server».
А теперь допустим, нам нужно получить информацию о столбцах в таблице, например, имя столбца, тип данных и возможность принятия значения NULL, для этого мы напишем следующий запрос, в котором обратимся к представлению COLUMNS информационной схемы.
Получаем список столбцов таблицы с помощью системного представления sys.columns
Также информацию о колонках таблицы можно получить с помощью системного представления sys.columns, но только в этом случае для получения точно такого же результата, как был выше, необходимо будет объединять несколько системных представлений, а именно sys.tables, sys.columns и sys.types, так как в представлении sys.columns есть только идентификаторы нужных нам данных.
Получаем список колонок таблицы с помощью системной процедуры sp_columns
В SQL Server существует специальная системная процедура sp_columns, которая как раз и предназначена для получения информации о колонках таблицы.
Какой из рассмотренных выше способов Вам подойдет и окажется удобней решать Вам, а у меня на этом все, удачи!
Заметка! Новичкам рекомендую посмотреть мой видеокурс по T-SQL для начинающих, с помощью него Вы «с нуля» научитесь работать с SQL и программировать на T-SQL.
Источник
COLUMNS (Transact-SQL)
Применимо к: SQL Server (все поддерживаемые версии) База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных
Возвращает одну строку для каждого столбца, доступного для текущего пользователя в текущей базе данных.
Чтобы получить сведения из этих представлений, укажите полное имя INFORMATION_SCHEMA.view_name.
Имя столбца | Тип данных | Описание |
---|---|---|
TABLE_CATALOG | nvarchar ( 128 ) | Квалификатор таблицы. |
TABLE_SCHEMA | nvarchar ( 128 ) | Имя схемы, содержащей таблицу. ** важно ** Не используйте INFORMATION_SCHEMA представления для определения схемы объекта. INFORMATION_SCHEMA представления представляют только подмножество метаданных объекта. Единственный надежный способ найти схему объекта — направить запрос к представлению каталога sys.objects. |
TABLE_NAME | nvarchar ( 128 ) | Имя таблицы. |
COLUMN_NAME | nvarchar ( 128 ) | Имя столбца. |
ORDINAL_POSITION | int | Идентификационный номер столбца. |
COLUMN_DEFAULT | nvarchar ( 4000 ) | Значение столбца по умолчанию. |
IS_NULLABLE | varchar ( 3 ) | Указывает, может ли столбец допускать значение NULL. Если для столбца допустимо значение NULL, этот столбец возвращает значение YES. Иначе возвращается значение NO. |
DATA_TYPE | nvarchar ( 128 ) | Тип данных, поддерживаемый системой. |
CHARACTER_MAXIMUM_LENGTH | int | Максимальная длина в символах для двоичных данных, символьных данных или текстовых данных и изображений. -1 для данных типа XML и больших значений. Иначе возвращается значение NULL. Дополнительные сведения см. в разделе Типы данных (Transact-SQL). |
CHARACTER_OCTET_LENGTH | int | Максимальная длина в байтах для двоичных данных, символьных данных или текстовых данных и изображений. -1 для данных типа XML и больших значений. Иначе возвращается значение NULL. |
NUMERIC_PRECISION | tinyint | Точность приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. Иначе возвращается значение NULL. |
NUMERIC_PRECISION_RADIX | smallint | Основание системы счисления точности приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. Иначе возвращается значение NULL. |
NUMERIC_SCALE | int | Масштаб приблизительных числовых данных, точных числовых данных, целочисленных данных или денежных данных. Иначе возвращается значение NULL. |
DATETIME_PRECISION | smallint | Код подтипа для типов данных интервала DateTime и ISO. Для других типов данных возвращается значение NULL. |
CHARACTER_SET_CATALOG | nvarchar ( 128 ) | Возвращает образец. Указывает базу данных, в которой находится набор символов, если столбец содержит символьные данные или текстовый тип данных. Иначе возвращается значение NULL. |
CHARACTER_SET_SCHEMA | nvarchar ( 128 ) | Всегда возвращает значение NULL. |
CHARACTER_SET_NAME | nvarchar ( 128 ) | Возвращает уникальное имя для набора символов, если этот столбец имеет символьные данные или тип данных Text . Иначе возвращается значение NULL. |
COLLATION_CATALOG | nvarchar ( 128 ) | Всегда возвращает значение NULL. |
COLLATION_SCHEMA | nvarchar ( 128 ) | Всегда возвращает значение NULL. |
COLLATION_NAME | nvarchar ( 128 ) | Возвращает уникальное имя для параметров сортировки, если столбец имеет символьные данные или текстовый тип данных. Иначе возвращается значение NULL. |
DOMAIN_CATALOG | nvarchar ( 128 ) | Если столбец имеет тип данных псевдонима, то этот столбец содержит имя базы данных, в которой был создан определяемый пользователем тип данных. Иначе возвращается значение NULL. |
DOMAIN_SCHEMA | nvarchar ( 128 ) | Если столбец имеет определяемый пользователем тип данных, то столбец возвращает имя схемы этого типа данных. Иначе возвращается значение NULL. ** важно ** Не используйте INFORMATION_SCHEMA представления для определения схемы типа данных. Единственный надежный способ найти схему типа — использовать функцию TYPEPROPERTY. |
DOMAIN_NAME | nvarchar ( 128 ) | Если столбец имеет определяемый пользователем тип данных, то столбец является именем этого типа данных. Иначе возвращается значение NULL. |
Remarks
Столбец ORDINAL_POSITION INFORMATION_SCHEMA. Представление COLUMNs несовместимо с битовым шаблоном столбцов, возвращаемых функцией COLUMNS_UPDATED. Чтобы получить битовый шаблон, совместимый с COLUMNS_UPDATED, необходимо сослаться на свойство columnid системной функции COLUMNPROPERTY при запросе INFORMATION_SCHEMA. Представление СТОЛБЦОВ . Пример:
Источник
Получить имена столбцов таблицы в MySQL?
есть ли способ захватить имя столбцов таблицы в mysql? использование php
17 ответов:
или в более новых версиях вы можете использовать information_schema для:
следующие операторы SQL почти эквивалентны:
Я сделал функцию PDO, которая возвращает все имена столбцов в простом массиве.
на выходе будет массив:
извините за некро, но мне нравится моя функция 😉
P. S. Я не включенными класс ядро, но вы можете использовать свой собственный класс.. Д. С.
это решение из командной строки mysql
в приведенном ниже запросе просто измените на вашу базу данных и на ваше имя таблицы, где вы просто хотите значения полей оператора DESCRIBE
функция MySQL опишите таблицу должно привести вас туда, куда вы хотите пойти (поместите свое имя таблицы в «таблицу»). Вам придется разобрать вывод, но это довольно легко. Насколько я помню, если вы выполните этот запрос, результат запроса PHP, обращающийся к функциям, которые обычно дают вам пару ключ-значение, будет иметь имена столбцов в качестве ключей. Но прошло некоторое время с тех пор, как я использовал PHP, так что не держите меня за это. 🙂
вы также можете проверить mysql_fetch_array() , например:
интересно также отметить, что вы можете использовать
EXPLAIN table_name что является синонимом DESCRIBE table_name и SHOW COLUMNS FROM table_name хотя объяснить чаще используется для получения информации о плане выполнения запроса.
The mysql_list_fields функция может вас заинтересовать ; но, как говорится в руководстве:
эта функция устарела. Это предпочтительно использовать mysql_query() to выдать SQL заявление.
мне нужны были имена столбцов в виде плоского массива, в то время как другие ответы возвращали ассоциативные массивы, поэтому я использовал:
Источник
Запрос MySQL для получения имен столбцов?
Я хотел бы получить все имена col таблицы mysql в массив в php?
есть ли запрос для этого?
18 ответов
лучший способ-использовать information_schema для метаданные виртуальной базы данных. В частности,базы данных information_schema.Колонки таблица.
Это очень мощный и может дать вам тонны информации без необходимости разбора текста (например, колонного типа, допускает ли столбец значения null, максимальный размер столбца, набор символов и т. д.).
О, и это стандартный SQL (тогда как SHOW . является конкретным расширением MySQL).
дополнительные информация о разнице между SHOW. и с помощью INFORMATION_SCHEMA таблицы, проверьте MySQL документация INFORMATION_SCHEMA В общем.
вы можете использовать следующий запрос для MYSQL:
Ниже приведен пример кода, который показывает, как реализовать выше синтаксис в php, чтобы перечислить имена столбцов:
для получения подробной информации о выходе SHOW COLUMNS FROM TABLE на странице: MySQL Refrence.
кажется, есть 2 пути:
Я делал это в прошлом.
редактировать: сегодня я узнал, лучший способ сделать это. См. ответ ircmaxell.
парсить вывод SHOW COLUMNS FROM table;
старая функция PHP «mysql_list_fields ()» устарела. Итак, сегодня лучший способ получить имена полей-это запрос «показать столбцы из table_name [LIKE ‘name’]». Итак, вот небольшой пример:
использовать mysql_fetch_field() для просмотра всех данных столбца. См.руководство.
«предупреждение Это расширение является устаревшей начиная с версии PHP 5.5.0, и будет удалено в будущем.»
Если вы хотите проверить всю структуру таблицы с некоторыми поданными, то используйте этот код. В этом запросе я выбираю column_name, column_type и table_name для получения дополнительной информации . Я использую order BY column_type, чтобы легко его видеть.
Если вы хотите проверить только двойной тип файла, то вы можете сделать это легко
Если вы хотите проверить, какое поле разрешает тип null и т. д., Вы можете использовать это
вы хотите проверить больше, чем ссылка thik также поможет вам.
ПОКАЗАТЬ СТОЛБЦЫ в MySQL 5.1 (не 5.5) использует временную таблицу диска.
поэтому в некоторых случаях его можно считать медленным. По крайней мере, он может поднять свой created_tmp_disk_tables значение. Представьте себе одну временную таблицу дисков на соединение или на каждый запрос страницы.
ПОКАЗАТЬ СТОЛБЦЫ — это не так уж медленно, возможно, потому, что он использует кэш файловой системы. Phpmyadmin говорит
0,5 мс последовательно. Это ничто по сравнению с 500ms-1000ms обслуживания страницы wordpress. Но все же иногда это имеет значение. Вовлечение дисковой системы, вы никогда не знаете, что происходит, когда сервер занят, кэш заполнен, hdd заглох и т. д.
получение имен столбцов через ВЫБЕРИТЕ * FROM . Предел 1 был около
0,1 мс, и он также может использовать кэш запросов.
Итак, вот мой маленький оптимизированный код для получения имен столбцов из таблицы без использования показать колонки если можно:
- пока первая строка таблицы не содержит диапазон мегабайт данных, она должна работать нормально.
- имена функций db_rows и db_row_ar должен быть заменен на вашу конкретную базу данных установка.
не уверен, что это то, что вы искали, но это сработало для меня:
это возвращает простой массив имен столбцов / имен переменных в вашей таблице или массиве в виде строк, что мне нужно для динамического построения запросов MySQL. Мое разочарование было в том, что я просто не знаю, как индексировать массивы в PHP очень хорошо, поэтому я не был уверен, что делать с результатами DESC или SHOW. Надеюсь, мой ответ поможет новичкам, таким как я!
для проверки результата: print_r($col_names);
Источник