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:

Tạo bảng tạm bằng câu lệnh SELECT INTO

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;
Tạo bảng tạm bằng câu lệnh CREATE TABLE

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ả.

SQL Server
Bài Viết Liên Quan:
Synonym trong SQL Server
Trung Nguyen 28/11/2021
Synonym trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về synonym trong SQL Server và cách tạo synonym cho các đối tượng cơ sở dữ liệu.

Đổi tên bảng trong SQL Server
Trung Nguyen 27/11/2021
Đổi tên bảng trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách đổi tên bảng trong SQL Server bằng Transact SQL và SQL Server Management Studio.

SELECT INTO trong SQL Server
Trung Nguyen 27/11/2021
SELECT INTO trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh SELECT INTO trong SQL Server để sao chép bảng.

TRUNCATE TABLE trong SQL Server
Trung Nguyen 27/11/2021
TRUNCATE TABLE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh TRUNCATE TABLE trong SQL Server để xóa tất cả các hàng khỏi bảng nhanh hơn và hiệu quả hơn.