Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbedaan Antara sys.columns, sys.system_columns, &sys.all_columns di SQL Server

Tiga dari tampilan katalog sistem di SQL Server termasuk sys.columns , sys.system_columns , dan sys.all_columns .

Ketiga tampilan katalog ini masing-masing menyediakan metadata tentang kolom dalam database, tetapi ada perbedaan di antara keduanya.

Inilah yang dilakukan masing-masing:

sys.columns
Mengembalikan kolom dari objek yang ditentukan pengguna. Ini termasuk kolom dari tabel dasar sistem.
sys.system_columns
Mengembalikan kolom dari objek sistem.
sys.all_columns
Mengembalikan kolom dari semua objek yang ditentukan pengguna dan sistem.

Dengan kata lain, tampilan terakhir menggabungkan hasil dari dua tampilan sebelumnya.

Jenis objek berikut dapat memiliki kolom:

  • Fungsi perakitan bernilai tabel (FT)
  • Fungsi SQL bernilai tabel sebaris (IF)
  • Tabel internal (TI)
  • Tabel sistem (S)
  • Fungsi SQL bernilai tabel (TF)
  • Tabel pengguna (U)
  • Tampilan (V)

Contoh

Berikut adalah contoh yang menunjukkan perbedaan hasil yang ditampilkan oleh tampilan ini.

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;

Hasil:

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

Jika kita menambahkan hasil dari dua kueri pertama bersama-sama, kita mendapatkan hasil yang sama sebagai sys.all_columns :

USE Music;

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

Hasil:

+----------+
| 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. Menghubungkan SQL Server ke PostgreSQL

  2. Bagian waktu dari Bidang DateTime di SQL

  3. Berbagai Cara untuk Membandingkan Skema dan Data Tabel SQL Server

  4. Kebiasaan Buruk:Menghindari NULL di SQL Server

  5. Apakah memiliki 'ATAU' dalam kondisi INNER JOIN adalah ide yang buruk?