Bảng tạm trong SQL Server
Trong hướng dẫn này, bạn sẽ học cách tạo bảng tạm trong SQL Server và làm việc với chúng một cách hiệu quả.
Bảng tạm là bảng tồn tại tạm thời trên SQL Server.
Bảng tạm rất hữu ích để lưu trữ các tập kết quả tức thì được truy cập nhiều lần.
Tạo bảng tạm trong SQL Server
SQL Server cung cấp hai cách để tạo bảng tạm thông qua câu lệnh SELECT INTO
và câu lệnh CREATE TABLE
.
Tạo bảng tạm bằng câu lệnh SELECT INTO
Cách đầu tiên để tạo một bảng tạm là sử dụng câu lệnh SELECT INTO
như ví dụ dưới đây:
SELECT
select_list
INTO
temporary_table
FROM
table_name
....
Tên của bảng tạm bắt đầu bằng dấu thăng (#
). Ví dụ: câu lệnh sau tạo một bảng tạm bằng cách sử dụng câu lệnh SELECT INTO
:
SELECT
product_name,
list_price
INTO #trek_products --- temporary table
FROM
production.products
WHERE
brand_id = 9;
Trong ví dụ này, chúng ta đã tạo một bảng tạm có tên #trek_products
với hai cột bắt nguồn từ danh sách chọn của câu lệnh SELECT
. Câu lệnh đã tạo bảng tạm và lấy dữ liệu từ bảng production.products
vào bảng tạm.
Sau khi thực hiện câu lệnh, bạn có thể tìm thấy tên bảng tạm được tạo trong cơ sở dữ liệu hệ thống có tên tempdb
, có thể được truy cập thông qua SQL Server Management Studio bằng cách sử dụng đường dẫn sau System Databases > tempdb > Temporary Tables như trong hình sau:

Như bạn có thể thấy rõ từ hình ảnh, bảng tạm cũng bao gồm một dãy số dưới dạng một hậu tố. Đây là mã định danh duy nhất cho bảng tạm. Vì nhiều kết nối cơ sở dữ liệu có thể tạo các bảng tạm có cùng tên, SQL Server tự động thêm số duy nhất này vào cuối tên bảng tạm để phân biệt giữa các bảng tạm.
Tạo bảng tạm bằng câu lệnh CREATE TABLE
Cách thứ hai để tạo một bảng tạm là sử dụng câu lệnh CREATE TABLE
:
CREATE TABLE #haro_products (
product_name VARCHAR(MAX),
list_price DEC(10,2)
);
Câu lệnh này có cú pháp giống như tạo một bảng thông thường. Tuy nhiên, tên của bảng tạm bắt đầu bằng ký hiệu thăng (#
)
Sau khi tạo bảng tạm, bạn có thể thêm dữ liệu vào bảng này như một bảng thông thường:
INSERT INTO #haro_products
SELECT
product_name,
list_price
FROM
production.products
WHERE
brand_id = 2;
Tất nhiên, bạn có thể truy vấn dữ liệu dựa trên nó trong phiên hiện tại:
SELECT
*
FROM
#haro_products;

Tuy nhiên, nếu bạn mở một kết nối khác và thử truy vấn ở trên, bạn sẽ gặp lỗi sau:
Invalid object name '#haro_products'.
Điều này là do các bảng tạm chỉ có thể truy cập được trong phiên đã tạo ra chúng.
Bảng tạm toàn cục trong SQL Server
Đôi khi, bạn có thể muốn tạo một bảng tạm có thể truy cập được qua các kết nối. Trong trường hợp này, bạn có thể sử dụng các bảng tạm toàn cục.
Không giống như bảng tạm, tên của bảng tạm toàn cục bắt đầu bằng hai dấu thăng (##
).
Các câu lệnh sau trước tiên tạo một bảng tạm toàn cục có tên ##heller_products
và sau đó điền dữ liệu từ bảng production.products
vào bảng tạm này:
CREATE TABLE ##heller_products (
product_name VARCHAR(MAX),
list_price DEC(10,2)
);
INSERT INTO ##heller_products
SELECT
product_name,
list_price
FROM
production.products
WHERE
brand_id = 3;
Bây giờ, bạn có thể truy cập bảng ##heller_products
từ bất kỳ phiên nào.
Xóa bảng tạm trong SQL Server
Xóa bảng tạm tự động
SQL Server tự động xóa bảng tạm khi bạn đóng kết nối đã tạo ra nó.
SQL Server xóa bảng tạm toàn cục sau khi kết nối tạo ra nó bị đóng và các truy vấn đối với bảng này từ các kết nối khác hoàn tất.
Xóa bảng tạm thủ công
Từ kết nối mà bảng tạm được tạo, bạn có thể xóa bảng tạm theo cách thủ công bằng cách sử dụng câu lệnh DROP TABLE
:
DROP TABLE ##table_name;
Trong hướng dẫn này, bạn đã tìm hiểu về bảng tạm trong SQL Server và cách tạo và xóa chúng một cách hiệu quả.