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

5 cách liệt kê các bảng tạm thời bằng T-SQL

Trong SQL Server, bạn có thể sử dụng bất kỳ cách nào trong số năm cách sau để trả về danh sách các bảng tạm thời bằng Transact-SQL.

Các bảng này trả về cả bảng tạm thời cục bộ và toàn cầu.

Tùy chọn 1 - sys.tables

sys.tables chế độ xem danh mục hệ thống được thiết kế đặc biệt để trả về thông tin bảng.

SELECT name
FROM tempdb.sys.tables
WHERE name LIKE '#%';

Như với tất cả các chế độ xem trên trang này, khi chúng tôi muốn có thông tin về tạm thời bảng, chúng tôi cần truy vấn chế độ xem này trong tempdb cơ sở dữ liệu. Chúng tôi có thể thực hiện việc này bằng cách chuyển sang cơ sở dữ liệu đó trước (để đó là cơ sở dữ liệu hiện tại của chúng tôi) hoặc xác định điều kiện truy vấn của chúng tôi với tên cơ sở dữ liệu.

Trong ví dụ này, tôi đủ điều kiện cho truy vấn với tên cơ sở dữ liệu.

Tùy chọn 2 - sys.objects

Bạn cũng có thể sử dụng sys.objects xem danh mục hệ thống. Nếu bạn chọn tùy chọn này, bạn sẽ cần lọc nó theo loại để chỉ các bảng người dùng được trả về.

SELECT name 
FROM tempdb.sys.objects
WHERE type = 'U';

U là viết tắt của “User Table”. Một cách khác để làm điều này là sử dụng WHERE type_desc = 'USER_TABLE' .

Tùy chọn 3 - INFORMATION_SCHEMA.TABLES

Nếu bạn muốn có tùy chọn tiêu chuẩn ANSI, hãy sử dụng INFORMATION_SCHEMA.TABLES lượt xem. Nếu bạn chọn tùy chọn này, bạn cũng sẽ cần lọc nó theo loại để chỉ "bảng cơ sở" được trả về.

SELECT TABLE_NAME
FROM TempDB.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'Base Table';

Tùy chọn 4 - sp_tables

Nếu bạn đang tìm kiếm một tùy chọn quy trình được lưu trữ, hãy sp_tables thủ tục được lưu trữ sẽ thực hiện thủ thuật.

USE tempdb;
EXEC sp_tables '#%';

Bạn cũng có thể bao gồm tên đối số một cách rõ ràng.

USE tempdb;
EXEC sp_tables 
  @table_name = '#%',
  @table_owner = 'dbo',
  @table_qualifier = 'tempdb',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Bạn sẽ nhận thấy rằng tôi đã chuyển sang tempdb trước khi thực hiện thủ tục này, mặc dù tôi đã cung cấp cơ sở dữ liệu dưới dạng một trong các đối số. Điều này thực sự được yêu cầu. @table_qualifier đối số phải khớp với cơ sở dữ liệu hiện tại.

Cũng lưu ý rằng @fUsePattern mẫu phải là 1 trong trường hợp này, vì tôi đang sử dụng toán tử ký tự đại diện trong tên bảng. Đặt nó thành 1 cho phép đối sánh mẫu. Đặt nó thành 0 sẽ vô hiệu hóa đối sánh mẫu.

Tùy chọn 5 - dbo.sysobjects

Đây có lẽ không phải là một lựa chọn, nhưng tôi sẽ liệt kê nó. dbo.sysobjects chế độ xem chỉ được bao gồm trong SQL Server để tương thích ngược. Nó đã được đánh dấu là không dùng nữa và Microsoft khuyên bạn không nên sử dụng nó. Nếu bạn gặp nó trong mã của mình, có thể xem xét thay đổi nó thành một trong các tùy chọn trước đó.

Trong mọi trường hợp, đây là giao diện của nó:

SELECT name
FROM tempdb..sysobjects
WHERE name LIKE '#%';

Nếu bạn đang tự hỏi dấu chấm kép dùng để làm gì (.. ), đó là một cách nhanh chóng để chỉ định lược đồ mặc định. Trong trường hợp này, lược đồ mặc định là dbo , vì vậy chúng tôi cũng có thể viết như sau:

SELECT name
FROM tempdb.dbo.sysobjects
WHERE name LIKE '#%';

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL so với SQL

  2. Toán tử SQL không bằng (! =) Cho người mới bắt đầu

  3. Cách tạo dạng xem trong SQL

  4. Khung của một Apache Spark Job Run!

  5. Kích hoạt trong SQL