Dưới đây là năm phương pháp bạn có thể sử dụng để nhanh chóng xác định có bao nhiêu bảng do người dùng xác định trong cơ sở dữ liệu hiện tại trong SQL Server.
Tất cả năm tùy chọn đều sử dụng COUNT()
hàm để lấy số đếm. Rõ ràng, bạn có thể thay thế dấu hoa thị (*
) hoặc tên của các cột để trả về danh sách tất cả các bảng do người dùng xác định.
Tùy chọn 1 - sys.tables
Cách rõ ràng nhất để làm điều này là truy vấn sys.tables
xem danh mục hệ thống. Toàn bộ mục đích của chế độ xem này là trả về một hàng cho mỗi bảng người dùng, vì vậy đó chính xác là những gì chúng tôi cần.
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
Trong trường hợp này, tôi trả về số lượng bảng người dùng từ WideWorldImportersDW
cơ sở dữ liệu.
Nếu tôi chuyển sang cơ sở dữ liệu khác, tôi nhận được kết quả khác:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Như đã đề cập, bạn có thể liệt kê các bảng chỉ bằng cách thay thế COUNT(*)
dòng có dấu hoa thị (*
) hoặc tên của các cột:
USE Music; SELECT name FROM sys.tables;
Kết quả:
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
Tùy chọn 2 - Lọc sys.objects theo loại
Một tùy chọn khác là truy vấn sys.objects
xem danh mục.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Trong trường hợp này, bạn cần lọc theo type = 'U'
(U
dành cho “Bảng người dùng”).
Tùy chọn 3 - Lọc sys.objects theo "Loại mô tả"
Một cách khác để truy vấn sys.objects
xem là lọc kết quả theo type_desc
cột.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Tùy chọn 4 - Lọc sys.objects bằng cách sử dụng hàm OBJECTPROPERTY ()
Bạn cũng có thể sử dụng OBJECTPROPERTY()
chức năng trong WHERE
của bạn mệnh đề.
Hàm này chấp nhận hai đối số:một ID đối tượng và một thuộc tính. ID đối tượng có thể là ID bảng và thuộc tính có thể là IsUserTable
, xác định đối tượng có phải là bảng hệ thống hay không.
Do đó, bạn có thể làm như sau:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Tùy chọn 5 - INFORMATION_SCHEMA.TABLES
Tùy chọn này truy vấn INFORMATION_SCHEMA.TABLES
chế độ xem lược đồ thông tin. Dạng xem này trả về cả dạng xem và bảng, vì vậy bạn cần lọc theo TABLE_TYPE = 'BASE TABLE'
để chỉ trả về các bảng.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Kết quả:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Nếu bạn cần tìm số lượng bảng hệ thống, hãy xem 3 cách đếm số bảng hệ thống trong SQL Server.