Выводим информацию о полях таблицы в SQL Server

Ранее мы уже обращались к вопросу получения статистической информации о базе данных. Теперь мы рассмотрим пример получения подобных сведений об объектах базы данных. В данном случае о таблицах. А, конкретно о содержащихся в них полях, их типе и размере.

Стоит отметить, что подобные сведения почти не представляют интереса в плане решения задач прикладной разработки. Но, они весьма полезны в случае необходимости анализа базы данных или её документирования (например, составления спецификации).

Для решения данной задачи нам потребуются две системные таблицы:

  • syscolumns – хранит перечень столбцов таблиц базы данных;
  • systypes – хранит перечень типов данных

В качестве примера напишем запрос, который будет выводить для некоторой таблицы список полей в следующем формате:

  • Порядковый номер столбца в таблице;
  • Имя столбца;
  • Тип данных;
  • Размер столбца;
  • Разрешаются ли пустые значения (null);
  • Является ли столбец идентификатором.

Ниже приведён код запроса:

Пояснять код не станем, так как столбцы, входящие в этот запрос описаны выше, а смысл остальной его части очевиден.

При помощи данных системных таблиц можно получить ещё целый ряд дополнительных сведений (точность для decimal и т.д.), но мы привели получение только самых основных данных для столбцов.

Существует и альтернативный способ получения информации о столбцах таблицы при помощи хранимой процедуры sp_help, которая принимает в качестве единственного параметра имя таблицы.

Этот способ проще, но он значительно менее функционален так как процедура sp_help не имеет выходных параметров и, следовательно, выполнить обработку отображаемого ей набора данных невозможно.

Поэтому данный способ подходит в качестве своеобразного отчёта о структуре таблицы для администратора баз данных. Не более.

Мы рассмотрели способы получения информации о столбцах любой таблицы. В будущем вероятно мы ещё продолжим исследовать служебные объекты баз данных Microsoft SQL Server, которые открывают перед администратором баз данных и разработчиком множество дополнительных возможностей.

Добавить комментарий

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