sql >> Databáze >  >> RDS >> Sqlserver

Rozdíl mezi sys.columns, sys.system_columns a sys.all_columns na serveru SQL Server

Tři zobrazení systémového katalogu na serveru SQL Server zahrnují sys.columns , sys.system_columns a sys.all_columns .

Každý z těchto tří zobrazení katalogu poskytuje metadata o sloupcích v databázi, ale je mezi nimi rozdíl.

Zde je to, co každý z nich dělá:

sys.columns
Vrátí sloupce z objektů definovaných uživatelem. To zahrnuje sloupce ze základních tabulek systému.
sys.system_columns
Vrátí sloupce ze systémových objektů.
sys.all_columns
Vrátí sloupce ze všech uživatelsky definovaných a systémových objektů.

Jinými slovy, poslední pohled kombinuje výsledky předchozích dvou pohledů.

Následující typy objektů mohou mít sloupce:

  • Funkce sestavení s tabulkovou hodnotou (FT)
  • Inline funkce SQL s hodnotou tabulky (IF)
  • Interní tabulky (IT)
  • Systémové tabulky (S)
  • Tabulkové funkce SQL (TF)
  • Uživatelské tabulky (U)
  • Zobrazení (V)

Příklad

Zde je příklad, který ukazuje rozdíl ve výsledcích vrácených těmito zobrazeními.

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;

Výsledek:

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

Pokud sečteme výsledky prvních dvou dotazů dohromady, dostaneme stejný výsledek jako sys.all_columns :

USE Music;

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

Výsledek:

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

  1. Galera Cluster Recovery 101 – Hluboký ponor do dělení sítě

  2. Jak detekovat znaky UTF-8 ve sloupci zakódovaném Latin1 - MySQL

  3. MySQL Jak vložíte INSERT DO tabulky s poddotazem SELECT vracejícím více řádků?

  4. Funkce vs uložené procedury