Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

5 начина за преброяване на броя на дефинирани от потребителя таблици в база данни на SQL Server

По-долу са пет метода, които можете да използвате, за да определите бързо колко потребителски дефинирани таблици има в текущата база данни в 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Създайте съхранена процедура

  2. Как да свържете база данни на Access към SQL Server в Access 2016

  3. Как да разделя низ, за ​​да мога да получа достъп до елемент x?

  4. Как да избегнем провал на SSIS FTP задачата, когато няма файлове за изтегляне?

  5. Най-добрият подход за премахване на времева част от дата и час в SQL Server