Як отримати список всіх таблиць в базі даних Microsoft SQL Server?

Якщо у Вас постало завдання визначити кількість таблиць в базі даних Microsoft SQL Server, то дана стаття Вам допоможе, так як в ній ми розглянемо кілька способів реалізації того, як можна отримати список всіх призначених для користувача таблиць, включаючи деякі їх характеристики за допомогою SQL запиту.

Всю інформацію про таблиці та інших об’єктах SQL сервера можна подивитися в графічному середовищі SQL Server Management Studio, але іноді потрібно вивантажити цю інформацію або просто отримати до неї доступ, для того щоб використовувати її, наприклад, в своїх SQL інструкціях, це можна зробити декількома способами , і зараз ми їх розглянемо.

Примітка! Приклади розглядати ми будемо в СУБД Microsoft SQL Server 2016 Express.

Отримуємо список всіх таблиць за допомогою уявлення інформаційної схеми

У Microsoft SQL Server є спеціальна схема, призначена для отримання інформації про метаданих – це INFORMATION_SCHEMA. Детально про неї ми говорили в матеріалі – «Уявлення інформаційної схеми Microsoft SQL Server».

Для того щоб отримати інформацію про таблиці в БД, існує уявлення інформаційної схеми TABLES. Припустимо, нам потрібно отримати просто перелік таблиць, для цього пишемо наступний SQL запит (в моїй тестовій базі всього одна таблиця).

SELECT TABLE_NAME AS [Назва таблиці]
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = ‘BASE TABLE’

В даному випадку ми вказали умова table_type = ‘BASE TABLE’, так як дане подання містить ще й інформацію про уявленнях (VIEW).

Недоліком даного способу є те, що ніякої більше корисної інформації в поданні INFORMATION_SCHEMA.TABLES немає.

Отримуємо список всіх таблиць за допомогою системного уявлення sys.tables

Альтернативним способом і більш вдалим, якщо Вам потрібна додаткова інформація про таблиці, є спосіб з використанням системного уявлення sys.tables. Давайте зараз за допомогою цього подання виведемо список таблиць, а також отримаємо додаткові відомості про дату створення таблиці і датою останнього редагування цієї таблиці.

SELECT name AS [Назва таблиці],
create_date AS [Дата створення],
modify_date AS [Дата редагування]
FROM sys.tables

Отримуємо список всіх таблиць за допомогою системної процедури

Ще одним способом отримання списку таблиць в базі даних Microsoft SQL Server є використання системної процедури sp_Tables, але, на мій погляд, даний спосіб менш зручний, до того ж він повертає також трохи відомостей, по суті, тільки назва таблиць.

Для того щоб отримати відомості про таблиці в БД нам потрібно вказати параметр @table_type зі значенням ‘TABLE’, так як дана процедура повертає ще дані про уявленнях і системних таблицях. Слід звернути увагу на те, що значення параметра потрібно укладати в подвійні лапки, а кожне значення типу в поодинокі лапки, так як через кому може свідчити кілька типів (наприклад, для того щоб отримати таблиці та подання, в значення параметра потрібно вказати – ” ‘TABLE’, ‘VIEW'”). Також ми вкажемо параметр @table_owner, для того щоб обмежитися одним власником.

EXEC sp_Tables @table_owner = ‘dbo’,
@table_type = ” ‘TABLE'”;

Ось ми з Вами і розглянули три можливості отримання списку таблиць в Microsoft SQL Server, в своїй книзі «Шлях програміста T-SQL.

Ссылка на основную публикацию