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

Giới thiệu về bảng tạm thời trong SQL Server

Trong SQL Server, bảng tạm thời là một loại bảng nhất định tồn tại cho đến khi vượt ra ngoài phạm vi (trừ khi nó bị loại bỏ một cách rõ ràng).

Điều này khác với bảng thông thường (liên tục), trong đó bảng thông thường tồn tại vĩnh viễn trong cơ sở dữ liệu của bạn cho đến khi bạn loại bỏ nó một cách rõ ràng.

Ưu điểm của Bảng tạm thời

Các bảng tạm thời có thể hữu ích vào những lúc bạn cần chạy nhiều truy vấn đối với một tập hợp con của tập kết quả lớn hơn. Bạn có thể sử dụng SELECT... INTO với WHERE mệnh đề để đưa tập hợp con dữ liệu vào một bảng tạm thời. Sau đó, bạn có thể chạy các truy vấn đối với bảng tạm thời đó. Điều này giúp bạn không phải liên tục lọc dữ liệu từ tập kết quả lớn hơn khi thực hiện nhiều truy vấn.

Bảng tạm thời cũng có thể hữu ích từ góc độ quyền. Nếu bạn cần làm việc với dữ liệu từ một bảng cố định nhưng bạn không có đủ quyền để thực hiện tất cả các thao tác mình cần, bạn có thể sao chép dữ liệu đó vào một bảng tạm thời (giả sử bạn có quyền đọc) và làm bất cứ điều gì bạn cần làm .

Bảng tạm thời cũng có thể được sử dụng nếu bạn không có quyền tạo bảng (liên tục) trong cơ sở dữ liệu hiện tại.

Một khía cạnh hữu ích khác của bảng tạm thời là bạn có thể sử dụng chúng để chạy các truy vấn đặc biệt nhanh khi chạy thử nghiệm, thể hiện một khái niệm, v.v. mà không phải lo lắng về việc để lại dấu vết của các bảng liên tục mà bạn đã quên bỏ qua.

TempDB

Bảng tạm thời được tạo trong TempDB cơ sở dữ liệu. Đây là một cơ sở dữ liệu hệ thống lưu trữ các đối tượng người dùng tạm thời như bảng và chỉ mục tạm thời, các thủ tục được lưu trữ tạm thời, các biến bảng, bảng được trả về trong các hàm có giá trị bảng và con trỏ. Nó cũng lưu trữ các đối tượng bên trong được tạo bởi công cụ cơ sở dữ liệu và lưu trữ phiên bản.

Bất kỳ người dùng nào cũng có thể tạo bảng tạm thời trong TempDB . Bạn không cần định cấu hình bất kỳ quyền đặc biệt nào cho TempDB truy cập.

Cú pháp

Bảng tạm thời được tạo bằng cú pháp giống như bảng thông thường. Sự khác biệt là các bảng tạm thời được bắt đầu bằng một hoặc hai dấu số (# ):

  • Các bảng tạm thời cục bộ được bắt đầu bằng một ký hiệu số (ví dụ:#table_name )
  • Các bảng tạm thời chung có tiền tố là dấu số kép (ví dụ:##table_name )

Ví dụ về cách tạo địa phương bảng tạm thời:

CREATE TABLE #LocalTableName (
    col1 int PRIMARY KEY,
    col2 varchar(255)
);

Ví dụ về cách tạo toàn cầu bảng tạm thời:

CREATE TABLE ##GlobalTableName (
    col1 int PRIMARY KEY,
    col2 varchar(255)
);

Các bảng tạm thời cục bộ chỉ hiển thị trong phiên hiện tại và các bảng tạm thời toàn cục được hiển thị cho tất cả các phiên.

Bảng tạm thời tồn tại trong bao lâu?

Các bảng tạm thời sẽ tự động bị loại bỏ khi chúng vượt ra khỏi phạm vi.

Bạn cũng có thể bỏ một bảng tạm thời một cách rõ ràng bằng cách sử dụng DROP TABLE .

Chính xác thời điểm bảng tạm thời tự động bị loại bỏ phụ thuộc vào việc bảng tạm thời là cục bộ hay toàn cục và nó có được tạo trong một quy trình được lưu trữ hay không.

  • Địa phương :Một bảng tạm thời cục bộ được tạo trong một thủ tục được lưu trữ sẽ tự động bị loại bỏ khi thủ tục được lưu trữ kết thúc. Bảng có thể được tham chiếu bởi bất kỳ thủ tục lưu trữ lồng nhau nào được thực thi bởi thủ tục được lưu trữ đã tạo ra bảng. Bảng không thể được tham chiếu bởi quá trình được gọi là thủ tục được lưu trữ đã tạo bảng.

    Tất cả các bảng tạm thời cục bộ khác sẽ tự động bị xóa vào cuối phiên hiện tại.

  • Toàn cầu :Các bảng tạm thời toàn cục sẽ tự động bị loại bỏ khi phiên tạo bảng kết thúc và tất cả các tác vụ khác đã ngừng tham chiếu đến chúng. Mối liên kết giữa một nhiệm vụ và một bảng chỉ được duy trì trong vòng đời của một câu lệnh T-SQL. Điều này có nghĩa là một bảng tạm thời toàn cục sẽ bị xóa khi hoàn thành câu lệnh T-SQL cuối cùng đang tích cực tham chiếu đến bảng khi phiên tạo kết thúc.

Lược đồ

Tất cả các bảng tạm thời được tạo trong dbo lược đồ. Nếu bạn chỉ định rõ ràng một giản đồ khác, nó sẽ bị bỏ qua.

Phím ngoại

Các ràng buộc NGOẠI KHÓA không được thực thi trên các bảng tạm thời. Nếu bạn chỉ định khóa ngoại, bảng vẫn được tạo, chỉ cần không có khóa ngoại. Một tin nhắn sẽ được trả lại thông báo cho bạn về điều này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HOẶC không được hỗ trợ với Câu lệnh CASE trong SQL Server

  2. Cách sys.dm_exec_describe_first_result_set hoạt động trong SQL Server

  3. Cách kết nối với SQL Server với xác thực cửa sổ từ Node.JS bằng mô-đun mssql

  4. Làm cách nào để lấy danh sách tên phần tử từ một giá trị XML trong SQL Server

  5. Kết nối SQL Server với PostgreSQL