По-долу са пет метода, които можете да използвате, за да определите бързо колко потребителски дефинирани таблици има в текущата база данни в SQL Server.
И петте опции използват COUNT()
функция за получаване на броя. Очевидно можете да замените това със звездичка (*
), или имената на колоните, за да върнете списък с всички потребителски дефинирани таблици.
Опция 1 – sys.tables
Най-очевидният начин да направите това е да направите заявка в sys.tables
изглед на системния каталог. Цялата цел на този изглед е да върне ред за всяка потребителска таблица, така че това е точно това, от което се нуждаем.
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
В този случай връщам броя на потребителските таблици от WideWorldImportersDW
база данни.
Ако премина към друга база данни, получавам различен резултат:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Както споменахме, можете да изброите таблиците, просто като замените COUNT(*)
ред със звездичка (*
) или имената на колоните:
USE Music; SELECT name FROM sys.tables;
Резултат:
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
Опция 2 – Филтриране на sys.objects по тип
Друга възможност е да направите заявка за sys.objects
изглед на каталог.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
В този случай трябва да филтрирате по type = 'U'
(U
е за „Таблица на потребителите“).
Опция 3 – Филтриране на sys.objects по „описание на типа“
Друг начин за запитване на sys.objects
view е да филтрира резултатите по type_desc
колона.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Опция 4 – Филтриране на sys.objects чрез използване на функцията OBJECTPROPERTY()
Можете също да използвате OBJECTPROPERTY()
функция във вашия WHERE
клауза.
Тази функция приема два аргумента:идентификатор на обект и свойство. Идентификаторът на обекта може да бъде идентификаторът на таблицата, а свойството може да бъде IsUserTable
, което определя дали обектът е системна таблица или не.
Следователно, можете да направите нещо подобно:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Опция 5 – INFORMATION_SCHEMA.TABLES
Тази опция прави заявка за INFORMATION_SCHEMA.TABLES
изглед на информационна схема. Този изглед връща както изгледи, така и таблици, така че трябва да филтрирате по TABLE_TYPE = 'BASE TABLE'
да върне само таблици.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Резултат:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Ако трябва да разберете броя на системните таблици, вижте 3 начина за преброяване на броя на системните таблици в SQL Server.