sql >> Databasteknik >  >> RDS >> Sqlserver

Skillnaden mellan sys.columns, sys.system_columns och sys.all_columns i SQL Server

Tre av systemkatalogvyerna i SQL Server inkluderar sys.columns , sys.system_columns och sys.all_columns .

Dessa tre katalogvyer ger var och en metadata om kolumner i databasen, men det finns en skillnad mellan dem.

Så här gör var och en:

sys.columns
Returnerar kolumner från användardefinierade objekt. Detta inkluderar kolumner från systemets bastabeller.
sys.system_columns
Returnerar kolumner från systemobjekt.
sys.all_columns
Returnerar kolumner från alla användardefinierade objekt och systemobjekt.

Med andra ord, den sista vyn kombinerar resultaten från de två föregående vyerna.

Följande objekttyper kan ha kolumner:

  • Table-valued assembly functions (FT)
  • Inline tabellvärdade SQL-funktioner (IF)
  • Interna tabeller (IT)
  • Systemtabeller (S)
  • Tabell-värderade SQL-funktioner (TF)
  • Användartabeller (U)
  • Visningar (V)

Exempel

Här är ett exempel som visar skillnaden i resultat som returneras av dessa vyer.

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)

Om vi ​​lägger ihop resultaten av de två första frågorna får vi samma 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. Oracle Dynamic Pivoting

  2. Hur man skapar en tabell endast om den inte finns i SQLite

  3. Hur man får aktuellt Connection-objekt i Spring JDBC

  4. PostgreSQL-privilegier och säkerhet - Låsa det offentliga schemat