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 | +----------+