Bảng tạm TEMPORARY TABLES trong SQL Server

By 3 năm ago

Một trong các kiến thức quan trọng của môn quản trị cơ sở dữ liệu SQL Server mà các bạn cần phải học đó là thao tác với bảng tạm TEMPORARY nữa. Nếu các bạn chưa hiểu rõ về bảng tạm trong SQL là gì, cách sử dụng như thế nào thì hãy theo dõi ngay sau đây!

1. Temporary Tables trong SQL là gì?

Đây là một cấu trúc dạng bảng đặc biệt. Chúng được lưu trữ tạm trên SQL Server. Người ta dùng bảng tạm chủ yếu để lưu lại kết quả của các câu truy vấn SELECT khi cần phải sử dụng nó nhiều lần. Có 2 loại bảng tạm là Local Temporary Table và Global Temporary Table.

Trên thực tế, đây cũng là một loại bảng và sở hữu đầy đủ những tính chất mà một bảng cần có. Các bạn có thể thực hiện mọi thác tác như SELECT hay INSERT trên bảng tạm này như bình thường.

Dưới đây là cách tạo bảng tam trong SQL và thêm dữ liệu (với bảng tạm Local Temporary Table):

1.1. Sử dụng INSERT INTO

Đây là hàm được sử dụng để tạo bảng tạm trong SQL. Cách dùng như sau:

SELECT

select_list

INTO

temporary_table

FROM

table_name

….

Khi đặt tên cho bảng tạm phải bắt đầu bằng dấu thăng (#), ví dụ:

SELECT

product_name,

list_price

INTO #trek_products --- temporary table

FROM

production.products

WHERE

brand_id = 9;<\pre>

Theo ví dụ này chúng ta sẽ tạo được 1 bảng tạm có tên #trek_products. Trong bảng gồm 2 cột là product_name và list_name. Kết quả trả về từ câu truy vấn chính là dữ liệu của bảng.

Để xem bảng các bạn mở công cụ SSMS và chọn: System Databases > tempdb > Temporary Tables:

 Ở tên bảng tạm có hậu tố ở phía sau nhằm mục đích tránh hiện tượng bảng bị trùng tên khi cùng lưu trữ trong một database tempdb.

1.2. Sử dụng CREATE TABLE

Khi tạo bảng tạm trong SQL server bằng câu lệnh CREATE TABLE thì bảng được tạo sẽ là bảng rỗng. Muốn thêm dữ liệu phải sử dụng câu lệnh INSERT. Cụ thể:

CREATE TABLE #haro_products (

product_name VARCHAR(MAX),

list_price DEC(10,2)

);

Như vậy chúng ta sẽ có bảng tạm tên #haro_products. Trong bảng có 2 cột là product_name và list_price. Muốn thêm dữ liệu cần dùng hàm:

INSERT INTO #haro_products

SELECT

product_name,

list_price

FROM

production.products

WHERE

brand_id = 2;

Dù sau này bảng gốc thay đổi dữ liệu cũng không làm ảnh hưởng tới dữ liệu trong bảng tạm.

2. Global Temporary Tables

Local Temporary Table chỉ tồn tại trong một phiên làm việc. Để kiểm tra điều này có đúng không các bạn có thể mở connection khác và dùng câu lệnh:

SELECT
*
FROM

#haro_products;

Kết quả trả về lỗi: Invalid object name ‘#haro_products’.

Trường hợp muốn dùng bảng tạm cho nhiều phiên làm việc khác nhau thì cần chuyển thành Global Temporary Table bằng cách thêm 2 dấu (#) tại tên table. Cụ thể:

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;

3. Xóa Temporary Tables

Các bảng tạm thời (temporary tables) trong SQL sẽ tự động bị xóa khi phiên làm việc kết thúc. Trong ứng dụng web, nếu sử dụng một kết nối, bạn có thể truy cập bảng tạm trong toàn bộ phiên. Tuy nhiên, nếu có hai kết nối và bảng tạm được tạo trong kết nối đầu tiên, kết nối thứ hai sẽ không thể truy cập bảng đó trừ khi cả hai kết nối vẫn đang mở. Để xóa bảng tạm một cách thủ công trước khi phiên kết thúc, bạn có thể sử dụng lệnh DROP TABLE, giúp giải phóng tài nguyên và loại bỏ bảng khỏi hệ thống kịp thời.

Cụ thể:

DROP TABLE ##table_name;

Trên đây là các thông tin về bảng tạm trong SQL Server. Hy vọng những thông tin này sẽ giúp các biết cách thao tác với bảng tạm và sử dụng bảng tạm hiệu quả hơn.

Share
Thảo Larskanis

Tốt nghiệp Graduated Windesheim 2020, top Đại học lớn nhất thế giới, tôi mở blog chia sẻ kiến thức, kinh nghiệm về SQL