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 (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

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

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

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
Sử dụng bảng chọn
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ộ.