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

Разлика между sys.columns, sys.system_columns и sys.all_columns в SQL Server

Три от изгледите на системния каталог в SQL Server включват sys.columns , sys.system_columns и sys.all_columns .

Всеки от тези три каталожни изгледа предоставя метаданни за колоните в базата данни, но има разлика между тях.

Ето какво прави всеки от тях:

sys.columns
Връща колони от дефинирани от потребителя обекти. Това включва колони от системните базови таблици.
sys.system_columns
Връща колони от системни обекти.
sys.all_columns
Връща колони от всички дефинирани от потребителя и системни обекти.

С други думи, последният изглед комбинира резултатите от предишните два изгледа.

Следните типове обекти могат да имат колони:

  • Сборни функции със стойност на таблица (FT)
  • Вградени SQL функции със стойности на таблица (IF)
  • Вътрешни таблици (IT)
  • Системни таблици (S)
  • SQL функции със стойност на таблица (TF)
  • Потребителски таблици (U)
  • Изгледи (V)

Пример

Ето пример, който демонстрира разликата в резултатите, върнати от тези изгледи.

USE Music;

SELECT COUNT(*) AS columns
FROM sys.columns;

SELECT COUNT(*) AS system_columns
FROM sys.system_columns;

SELECT COUNT(*) AS all_columns
FROM sys.all_columns;

Резултат:

+-----------+
| columns   |
|-----------|
| 1025      |
+-----------+
(1 row affected)
+------------------+
| system_columns   |
|------------------|
| 8982             |
+------------------+
(1 row affected)
+---------------+
| all_columns   |
|---------------|
| 10007         |
+---------------+
(1 row affected)

Ако добавим резултатите от първите две заявки заедно, получаваме същия резултат като sys.all_columns :

USE Music;

SELECT 
(SELECT COUNT(*) FROM sys.columns) +
(SELECT COUNT(*) FROM sys.system_columns)
AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 10007    |
+----------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво наистина прави методът Statement.setFetchSize(nSize) в JDBC драйвер на SQL Server?

  2. Практичен избор на процесор за SQL Server 2014/2016 OLTP работни натоварвания

  3. Въведение в синонимите в SQL Server

  4. Използване на SQL Server като DB опашка с множество клиенти

  5. Моето поле VARCHAR(MAX) се ограничава до 4000; Какво дава?