Получение имен колонок из таблицы в SQL Server
Быстрый ответ
Следующая команда позволяет получить имена столбцов из таблицы в SQL Server:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Введите_Имя_Таблицы';
Вместо 'ВведитеИмяТаблицы' подставьте название вашей таблицы.
Если вы работаете с использованием различных схем, то добавьте также TABLE_SCHEMA
:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Введите_Имя_Таблицы' AND TABLE_SCHEMA='Введите_Имя_Схемы';
Более продвинутые возможности работы с метаданными
Метаданные в представлениях
Представление INFORMATION_SCHEMA.COLUMNS
предоставляет имена столбцов и продвинутые метаданные, включая типы данных, возможность принимать значения null и значения по умолчанию. Объединяя с другими представлениями INFORMATION_SCHEMA, можно получить более детальное представление:
SELECT
t.TABLE_NAME,
c.COLUMN_NAME,
c.DATA_TYPE,
c.CHARACTER_MAXIMUM_LENGTH,
c.IS_NULLABLE,
k.CONSTRAINT_NAME,
k.COLUMN_NAME as CONSTRAINT_COLUMN,
p.PERMISSION_TYPE
FROM INFORMATION_SCHEMA.COLUMNS c
JOIN INFORMATION_SCHEMA.TABLES t
ON c.TABLE_NAME = t.TABLE_NAME
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
ON c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.COLUMN_PRIVILEGES p
ON c.TABLE_NAME = p.TABLE_NAME AND c.COLUMN_NAME = p.COLUMN_NAME
WHERE c.TABLE_NAME = 'Введите_Имя_Таблицы';
Использование системных объектов для углубленной работы с каталогом
Вы можете получить более глубокий просмотр ваших данных, используя системные объекты каталога, такие как sys.columns
и OBJECT_ID
:
SELECT
col.name AS ColumnName,
typ.name AS DataType,
col.max_length AS MaxLength,
col.precision,
col.scale,
col.is_nullable AS IsNullable,
obj.name AS TableName
FROM
sys.columns col
JOIN sys.types typ ON col.user_type_id = typ.user_type_id
JOIN sys.objects obj ON col.object_id = obj.object_id
WHERE
obj.type = 'U'
AND obj.name = 'Введите_Имя_Таблицы'
ORDER BY
obj.name,
col.column_id;
Использование хранимых процедур
Подробная информация о столбцах
sp_columns
и sp_help
можно рассматривать как классическую энциклопедию для SQL Server, предоставляющую обширную информацию:
EXEC sp_help 'Введите_Имя_Таблицы';
EXEC sp_columns 'Введите_Имя_Таблицы';
Визуализация
Принцип извлечения имен столбцов можно сравнить со списком глав в книге:
Книга 📖: [Глава 1, Глава 2, Глава 3]
Таблица SQL 🗄️: [Столбец 1, Столбец 2, Столбец 3]
Используйте вашу SQL-команду как указатель в этом списке:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Ваша_Таблица';
Это работает следующим образом:
Книга 📖 ➡️ Содержание 📝: [Глава 1, Глава 2, Глава 3]
Таблица SQL 🗄️ ➡️ Запрос 🔍: [Столбец 1, Столбец 2, Столбец 3]
Это так же просто, как 123 или АБВ!
Современные методы
Для быстрого доступа в "SQL Server Management Studio" (SSMS) есть секретное оружие: выберите таблицу и нажмите ALT + F1, sp_help
выводит желаемые метаданные.
Определение пользовательских типов и представлений
SELECT
DOMAIN_NAME AS TypeName,
DOMAIN_DEFAULT AS DefaultValue,
DATA_TYPE AS DataType
FROM
INFORMATION_SCHEMA.DOMAINS
WHERE
DOMAIN_NAME = 'Введите_Имя_Типа';
SELECT
vcu.VIEW_NAME,
vcu.COLUMN_NAME,
vt.VIEW_DEFINITION
FROM
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE vcu
JOIN
INFORMATION_SCHEMA.VIEWS vt
ON vcu.VIEW_NAME = vt.TABLE_NAME
WHERE
vcu.VIEW_NAME = 'Введите_Имя_Представления';
Полезные материалы
- Обсуждение на Stack Overflow о получении имен столбцов — обзор методов получения имен столбцов в SQL Server от сообщества разработчиков.
- Блог SQL Authority о SQL Server Sys.Columns — мнение эксперта SQL Server о том, как представить список имен столбцов.
- Учебное пособие на Tutorial Gateway о функции COLUMNPROPERTY в SQL Server — детальное рассмотрение функции COLUMNPROPERTY для выгрузки информации о столбцах.
- Скрипт поиска баз данных SQL Server без резервного копирования журнала транзакций — это не прямо о именах столбцов, но полезный пример использования метаданных SQL Server.
- Учебник на C# Corner о метаданных SQL Server — другой подход к использованию функций метаданных в SQL Server.