sql >> Database teknologi >  >> RDS >> Sqlserver

Forskellen mellem sys.columns, sys.system_columns og sys.all_columns i SQL Server

Tre af systemkatalogvisningerne i SQL Server inkluderer sys.columns , sys.system_columns , og sys.all_columns .

Disse tre katalogvisninger giver hver især metadata om kolonner i databasen, men der er forskel på dem.

Her er, hvad hver enkelt gør:

sys.columns
Returnerer kolonner fra brugerdefinerede objekter. Dette inkluderer kolonner fra systemets basistabeller.
sys.system_columns
Returnerer kolonner fra systemobjekter.
sys.all_columns
Returnerer kolonner fra alle brugerdefinerede og systemobjekter.

Med andre ord, den sidste visning kombinerer resultaterne af de to foregående visninger.

Følgende objekttyper kan have kolonner:

  • Tabelvurderede samlingsfunktioner (FT)
  • Inline tabelværdisatte SQL-funktioner (IF)
  • Interne tabeller (IT)
  • Systemtabeller (S)
  • Tabelværdierede SQL-funktioner (TF)
  • Brugertabeller (U)
  • Visninger (V)

Eksempel

Her er et eksempel, der viser forskellen i resultater, der returneres af disse visninger.

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;

Resultat:

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

Hvis vi lægger resultaterne af de to første forespørgsler sammen, får vi det samme resultat som sys.all_columns :

USE Music;

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

Resultat:

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

  1. Sådan tælles elementer i kommasepareret liste MySQL

  2. Udbedring af huller/huller i tal genereret af Postgres-sekvensen

  3. Gem PL/pgSQL-output fra PostgreSQL til en CSV-fil

  4. Sådan fungerer INSERT()-funktionen i MariaDB