Tùy thuộc vào phiên bản SQL Server bạn đang chạy, phương pháp truy vấn và trả về danh sách tất cả các bảng do người dùng tạo có thể hơi khác nhau. Dưới đây, chúng tôi sẽ xem xét ngắn gọn các câu lệnh TSQL có thể được sử dụng để truy xuất danh sách bảng cho cả SQL Server 2000 cũ hơn và phiên bản 2005 mới hơn hoặc hơn thế nữa.
Bảng danh sách trong SQL Server 2000
Đối với các phiên bản SQL Server cũ hơn (chẳng hạn như SQL Server 2000, mặc dù phương pháp này cũng được hỗ trợ trong SQL Server 2005 để tương thích ngược), bạn sẽ cần truy vấn SYS.SYSOBJECTS
chế độ xem siêu dữ liệu. SYS.SYSOBJECTS
chứa một hàng cho mọi đối tượng đã được tạo trong cơ sở dữ liệu, bao gồm stored procedures
, views
và user tables
(là một điều quan trọng để phân biệt với system tables
.)
SYSOBJECTS
bảng chứa vài chục cột dữ liệu vì nó phải chứa thông tin về hầu như mọi thứ được thêm vào máy chủ theo thời gian. Do đó, để tìm danh sách các bảng do người dùng tạo (do đó bỏ qua system tables
), chúng tôi sẽ cần tìm kết quả trong đó xtype
cột (chỉ định loại đối tượng object type
cho hàng đó) bằng giá trị U
, viết tắt của user tables
. Câu lệnh TSQL kết quả sẽ giống như sau:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Lưu ý:Vì SYSOBJECTS
là một phần của SYS
không gian tên, khi truy vấn SYSOBJECTS
không cần thiết phải chỉ định SYSOBJECTS
đó là một phần của SYS
toàn cầu không gian tên, vì vậy chúng tôi có thể bỏ qua nó như được hiển thị trong ví dụ trên.
Thao tác này sẽ trả về danh sách kết quả của tất cả các bảng do người dùng tạo. Vì lượng thông tin trả về khi truy vấn tất cả các cột là khá lớn, bạn có thể muốn cắt bớt kết quả bằng cách chỉ xem name
và có lẽ là crdate
(ngày tạo):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Bảng danh sách trong SQL Server 2005 hoặc mới hơn
Liệt kê tất cả các bảng trong máy chủ SQL khi sử dụng phiên bản mới hơn (SQL 2005 trở lên) là vấn đề của việc truy vấn INFORMATION_SCHEMA
các khung nhìn được tự động tích hợp vào SQL Server. Những điều này cho phép bạn dễ dàng xem nhiều loại siêu dữ liệu cho phiên bản SQL Server cụ thể này, bao gồm thông tin về COLUMNS
, ROUTINES
và thậm chí cả TABLES
.
Bạn có thể nhận thấy rằng có bốn cột được trả về khi sử dụng INFORMATION_SCHEMA.TABLES
nhưng cột quan trọng nhất là TABLE_TYPE
, xác định xem bảng trong hàng đó có phải là một bảng thực tế hay không (BASE TABLE
) hoặc một chế độ xem (VIEW
).
Để trả về tất cả các bảng và xem trong một truy vấn, thực hiện câu lệnh TSQL sau:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Cũng có thể là khôn ngoan khi chỉ định cơ sở dữ liệu bạn muốn truy vấn:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Nếu bạn chỉ muốn truy xuất các bảng thực tế và lọc ra các dạng xem từ kết quả, hãy thêm WHERE TABLE_TYPE = 'BASE TABLE'
mệnh đề:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO