Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sự khác biệt giữa sys.columns, sys.system_columns và sys.all_columns trong SQL Server

Ba trong số các dạng xem danh mục hệ thống trong SQL Server bao gồm sys.columns , sys.system_columnssys.all_columns .

Ba chế độ xem danh mục này đều cung cấp siêu dữ liệu về các cột trong cơ sở dữ liệu, nhưng có sự khác biệt giữa chúng.

Đây là những gì mỗi người làm:

sys.columns
Trả về các cột từ các đối tượng do người dùng xác định. Điều này bao gồm các cột từ các bảng cơ sở của hệ thống.
sys.system_columns
Trả về các cột từ các đối tượng hệ thống.
sys.all_columns
Trả về các cột từ tất cả các đối tượng hệ thống và do người dùng xác định.

Nói cách khác, chế độ xem cuối cùng kết hợp các kết quả của hai chế độ xem trước đó.

Các loại đối tượng sau có thể có các cột:

  • Các hàm lắp ráp có giá trị bảng (FT)
  • Các hàm SQL có giá trị trong bảng nội tuyến (IF)
  • Bảng nội bộ (CNTT)
  • Bảng hệ thống (S)
  • Các hàm SQL có giá trị bảng (TF)
  • Bảng người dùng (U)
  • Lượt xem (V)

Ví dụ

Dưới đây là một ví dụ chứng minh sự khác biệt về kết quả do các chế độ xem này trả về.

 SỬ DỤNG Nhạc; CHỌN COUNT (*) NHƯ cộtFROM sys.columns; CHỌN COUNT (*) NHƯ system_columns 

Kết quả:

 + ----------- + | cột || ----------- || 1025 | + ----------- + (1 hàng bị ảnh hưởng) + ------------------ + | system_columns || ------------------ || 8982 | + ------------------ + (1 hàng bị ảnh hưởng) + --------------- + | tất cả các cột || --------------- || 10007 | + --------------- + (1 hàng bị ảnh hưởng) 

Nếu chúng tôi cộng kết quả của hai truy vấn đầu tiên với nhau, chúng tôi sẽ nhận được cùng một kết quả là sys.all_columns :

 SỬ DỤNG Nhạc; CHỌN (CHỌN ĐẾM (*) TỪ sys.columns) + (CHỌN ĐẾM (*) TỪ sys.system_columns) AS Kết quả; 

Kết quả:

 + ---------- + | Kết quả || ---------- || 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. Chuỗi phân tách T-SQL

  2. Cách tránh giám sát hoạt động làm ảnh hưởng đến hiệu suất máy chủ SQL của bạn

  3. Tập lệnh để loại bỏ tất cả các kết nối đến cơ sở dữ liệu (Hơn RESTRICTED_USER ROLLBACK)

  4. Cách tìm ngôn ngữ mặc định của người dùng trong SQL Server (T-SQL)

  5. Thoát một chuỗi trong SQL Server để an toàn khi sử dụng trong biểu thức LIKE