Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Różnica między sys.columns, sys.system_columns i sys.all_columns w programie SQL Server

Trzy widoki katalogu systemowego w SQL Server obejmują sys.columns , sys.system_columns i sys.all_columns .

Każdy z tych trzech widoków katalogu zawiera metadane dotyczące kolumn w bazie danych, ale jest między nimi różnica.

Oto, co każdy z nich robi:

sys.columns
Zwraca kolumny z obiektów zdefiniowanych przez użytkownika. Obejmuje to kolumny z tabel podstawowych systemu.
sys.system_columns
Zwraca kolumny z obiektów systemowych.
sys.all_columns
Zwraca kolumny ze wszystkich obiektów zdefiniowanych przez użytkownika i systemowych.

Innymi słowy, ostatni widok łączy wyniki dwóch poprzednich widoków.

Następujące typy obiektów mogą mieć kolumny:

  • Funkcje asemblera o wartościach tabelarycznych (FT)
  • Wbudowane funkcje SQL z wartościami tabelarycznymi (IF)
  • Tabele wewnętrzne (IT)
  • Tabele systemowe (S)
  • Funkcje SQL o wartościach tabelarycznych (TF)
  • Tabele użytkowników (U)
  • Widoki (V)

Przykład

Oto przykład, który pokazuje różnicę w wynikach zwracanych przez te widoki.

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;

Wynik:

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

Jeśli dodamy wyniki dwóch pierwszych zapytań razem, otrzymamy ten sam wynik, co sys.all_columns :

USE Music;

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

Wynik:

+----------+
| 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. Tally Table, aby wstawić brakujące daty między dwiema datami? SQL

  2. Jak zmienić typ danych kolumny w SQL Server?

  3. TSQL - Dodaj kolumnę do wszystkich tabel w bazie danych [Przykład kursora]

  4. Zresetuj AutoIncrement w SQL Server po usunięciu

  5. Wyszukaj „dopasowanie całego słowa” za pomocą wzorca SQL Server LIKE