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

Tạo bảng tạm thời trong SQL Server

Trong SQL Server, các bảng tạm thời được tạo bằng cùng một CREATE TABLE cú pháp như các bảng thông thường. Sự khác biệt là tên của các bảng tạm thời được bắt đầu bằng một hoặc hai dấu số (# ), tùy thuộc vào đó là bảng tạm thời cục bộ hay bảng tạm thời chung:

  • Bảng tạm thời cục bộ được bắt đầu bằng một dấu số duy nhất (# )
  • Bảng tạm thời chung có tiền tố là một dấu số kép (## )

Ví dụ 1 - Tạo Bảng Tạm thời Cục bộ

Dưới đây là một ví dụ về cách tạo bảng tạm thời cục bộ:

CREATE TABLE #Cats (
    CatId int PRIMARY KEY,
    CatName varchar(70)
);

Tên bạn chỉ định cho bảng tạm thời cục bộ có thể có tối đa 116 ký tự. Các loại bảng khác có thể có 128 ký tự, nhưng các bảng tạm thời cục bộ sẽ tự động được thêm vào bằng hậu tố số do hệ thống tạo.

Ví dụ 2 - Tạo Bảng Tạm thời Toàn cục

Dưới đây là ví dụ về cách tạo bảng tạm thời chung:

CREATE TABLE ##Cats (
    CatId int PRIMARY KEY,
    CatName varchar(70)
);

Tên bảng tạm thời chung có thể có tối đa 128 ký tự. SQL Server không nối hậu tố số do hệ thống tạo vào các bảng tạm thời chung như đối với các bảng tạm thời cục bộ, vì vậy bạn có thể sử dụng hết dung lượng.

Ví dụ 3 - Xem các Bảng Tạm thời

Tôi có thể chạy truy vấn sau để xem các bảng tạm thời mới được tạo của mình.

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

Kết quả:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
+----------------------------------------------------------------------------------------------------------------------------------+

Chúng ta có thể thấy rằng bảng tạm thời cục bộ đã được nối thêm hậu tố số do hệ thống tạo ra và đây là lý do tại sao truy vấn của tôi sử dụng LIKE toán tử cho bảng đó.

Ví dụ 4 - Phiên mới

Nếu tôi mở một phiên mới, tạo một bảng tạm thời cục bộ có cùng tên (Cats), sau đó chạy lại truy vấn này, tôi nhận được điều này:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
| #Cats_______________________________________________________________________________________________________________000000000019 |
+----------------------------------------------------------------------------------------------------------------------------------+

Vì vậy, nhiều phiên có thể tạo một bảng cục bộ có cùng tên vì SQL Server sửa đổi tên đó bằng cách tăng hậu tố.

Ví dụ 5 - Cùng một phiên

Tuy nhiên, nếu tôi cố gắng tạo lại bảng tạm thời cục bộ trong cùng một phiên, tôi nhận được cái này:

Msg 2714, Level 16, State 6, Line 1
There is already an object named '#Cats' in the database.

Và nếu tôi mở thêm một phiên nữa, thì tôi đã thành công và khi tôi truy vấn tempdb.sys.tables Tôi nhận được cái này:

+----------------------------------------------------------------------------------------------------------------------------------+
| name                                                                                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|
| ##Cats                                                                                                                           |
| #Cats_______________________________________________________________________________________________________________000000000018 |
| #Cats_______________________________________________________________________________________________________________000000000019 |
| #Cats_______________________________________________________________________________________________________________00000000001B |
+----------------------------------------------------------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IDENT_CURRENT so với @@ IDENTITY so với SCOPE_IDENTITY trong SQL Server:Sự khác biệt là gì?

  2. Các loại con trỏ máy chủ SQL - Sự khác biệt giữa con trỏ địa phương và toàn cầu là gì | Hướng dẫn sử dụng SQL Server / TSQL

  3. Thủ tục được lưu trữ T-SQL chấp nhận nhiều giá trị Id

  4. Làm cách nào để tạo ràng buộc kiểm tra nhiều bảng?

  5. Mệnh đề WHERE so với ON khi sử dụng JOIN