Bảng tạm trong SQL Server: Hướng dẫn từ A – Z

Bảng tạm trong SQL là một phần kiến thức quan trọng mà mọi người cần hiểu sâu để có thể thao tác nhanh chóng, hiệu quả và chính xác nhất với cơ sở dữ liệu. Vậy thì bảng tạm trong SQL là gì? Cùng Comdy tìm hiểu trong bài viết này nhé.

Bảng tạm trong SQL server là gì?

Bảng tạm trong SQL server là gì
Bảng tạm là một dạng bảng đặc biệt giúp lưu trữ tạm thời ở trên SQL server

Bảng tạm (Temporary Table) là một dạng bảng đặc biệt giúp lưu trữ tạm thời ở trên SQL server, rất hữu ích trong việc lưu kết quả của câu truy vấn select để sử dụng nhiều lần.

Bảng tạm cũng là một table nên bản chất sẽ có đầy đủ các tính chất của table bình thường, nghĩa là có thể thực hiện được các thao tác như là select, insert,…

Bảng tạm có 2 loại là local temporary table và global tamporary table.

Bảng tạm local temporary table

  • Bảng tạm local được tạo ra và tồn tại trong phạm vi của một phiên làm việc hoặc một batch truy vấn.
  • Khi phiên làm việc kết thúc hoặc batch truy vấn hoàn thành, bảng tạm local sẽ tự động bị hủy.
  • Đặc điểm của bảng tạm local là tên bảng bắt đầu bằng ký tự #.

Bảng tạm global temporary table

  • Bảng tạm global cũng tồn tại trong phạm vi của một phiên làm việc hoặc một batch truy vấn, nhưng nó có thể được truy cập từ bất kỳ phiên làm việc nào trên cùng một máy chủ cơ sở dữ liệu.
  • Bảng tạm global được tạo với tên bắt đầu bằng ##.
  • Nó tồn tại cho đến khi tất cả các phiên làm việc có tham chiếu đến nó kết thúc hoặc khi nó được xóa bằng cách sử dụng câu lệnh DROP TABLE.

Cách tạo bảng tạm trong SQL Server

Cách tạo bảng tạm trong SQL Server
SQL Server cung cấp hai cách để tạo bảng tạm hay chính là bảng ảo 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 sql 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 System Databases > tempdb > Temporary Tables.

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

Tạo bảng tạm bằng câu lệnh Create table
Tạo bảng tạm bằng câu lệnh Create table như thế nào?

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

Bảng tạm toàn cục trong SQL Server
Nếu muốn tạo một bảng tạm có thể truy cập được qua các kết nối thì tạo bảng tạm toàn cục

Đô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 trong SQL Server
Hướng dẫn cách xóa bảng tạm trong SQL Server

Xóa bảng tạm trong SQL 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 trong SQL 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;

Cú pháp tạo table trong SQL server

Để tạo bảng, ta sử dụng lệnh create table trong SQL server. Cú pháp như sau:

CREATE TABLE TenBang
(
Cot1 INT PRIMARY KEY,
Cot2 NVARCHAR(50),
Cot3 DATETIME,
Cot4 FLOAT
);

Trong đó:

  • TenBang là tên của bảng bạn muốn tạo.
  • Cot1, Cot2, Cot3, Cot4 là tên của các cột trong bảng.
  • INT, NVARCHAR(50), DATETIME, FLOAT là kiểu dữ liệu của các cột tương ứng.
  • PRIMARY KEY chỉ định rằng cột Cot1 sẽ là khóa chính của bảng.

Cú pháp tạo bảng ảo trong SQL

Cú pháp tạo bảng ảo trong SQL
Cú pháp để tạo bảng ảo trong SQL là gì?

Trong SQL, bạn có thể tạo bảng ảo (table-valued) bằng cách sử dụng kiểu dữ liệu bảng (table data type) hoặc bằng cách sử dụng bảng chọn (table expression).

Sử dụng kiểu dữ liệu bảng

— Định nghĩa kiểu dữ liệu bảng
CREATE TYPE dbo.EmployeeType AS TABLE
(
    EmployeeID INT,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    Salary INT
);
— Sử dụng kiểu dữ liệu bảng để tạo bảng ảo
DECLARE @EmployeeTable dbo.EmployeeType;
— Thêm dữ liệu vào bảng ảo
INSERT INTO @EmployeeTable (EmployeeID, FirstName, LastName, Salary)
VALUES (1, ‘John’, ‘Doe’, 50000),
       (2, ‘Jane’, ‘Smith’, 60000);
— Truy vấn dữ liệu từ bảng ảo
SELECT * FROM @EmployeeTable;

Sử dụng bảng chọn

— Tạo bảng ảo sử dụng bảng chọn
DECLARE @EmployeeTable TABLE
(
    EmployeeID INT,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    Salary INT
);
— Thêm dữ liệu vào bảng ảo
INSERT INTO @EmployeeTable (EmployeeID, FirstName, LastName, Salary)
VALUES (1, ‘John’, ‘Doe’, 50000),
       (2, ‘Jane’, ‘Smith’, 60000);
— Truy vấn dữ liệu từ bảng ảo
SELECT * FROM @EmployeeTable;

Lỗi invalid object name trong SQL server là gì?

Thông báo lỗi invailid object name trong SQL xảy ra trong các điều kiện sau:

  • Một thủ tục lưu sẵn của SQL Server tồn tại trong một cơ sở dữ liệu chọn các bản ghi từ một bảng trong cơ sở dữ liệu khác.
  • Tập bản ghi kết quả sẽ được trả về một ứng dụng hoặc dịch vụ.
  • Sau đó, tập bản ghi đó được chuyển ra khỏi quy trình dưới dạng tập bản ghi ADO (Đối tượng dữ liệu ActiveX) bị ngắt kết nối tới một ứng dụng khách khác.
  • Một nỗ lực được thực hiện để cập nhật tập bản ghi bị ngắt kết nối.

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về bảng tạm SQL server. Hi vọng những kiến thức này là hữu ích và ý nghĩa với mọi người. Xin cám ơn vì đã theo dõi và ủng hộ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *