Thứ Ba, 25 tháng 7, 2023

Bảng tạm Temporary Tables trong SQL Server

Trong bài này mình sẽ hướng dẫn cách tạo và sử dụng bảng tạm Temporary table trong SQL Server, cách sử dụng bảng tạm hiệu quả nhất.

Mục lục

  • 1. Temporary Table là gì?
    • Dùng INSERT INTO
    • Dùng CREATE TABLE
  • 2. Global Temporary Table
  • 3. Xóa Temporary Table

1. Temporary Table là gì?

Temporary Table hay còn gọi là bảng tạm, đây là một dạng table đặc biệt được lưu trữ tạm thời trên SQL Server, nó rất hữu ích để lưu kết quả của một câu truy vấn SELECT nào đó để sử dụng nhiều lần.

Bảng tạm cũng là một table nên nó có đầy đủ các tính chất của table, nghĩa là bạn có thể thực hiện các thao tác như SELECT, INSERT trên đó một cách bình thường.

Bảng tạm có hai loại, thứ nhất là Local Temporary Table và thứ hai là Global Temporary Table. Trong phần 1 này chúng ta sẽ tìm hiểu Local Temporary Table trước nhé.

SQL Server cho phép bạn tạo bảng tạm bằng hai cách, thứ nhất là dùng cú pháp CREATE TABLE  và thứ hai là INSERT INTO.

Dùng INSERT INTO

Cách đầu tiên chúng ta sẽ dùng INSERT INTO để tạo bảng tạm, bạn sử dụng cú pháp như sau:

1
2
3
4
5
6
7
SELECT
    select_list
INTO
    temporary_table
FROM
    table_name
....

Tên của bảng tạm phải bắt đầu bằng dấu thăng #, xem ví dụ sau:

1
2
3
4
5
6
7
8
SELECT
    product_name,
    list_price
INTO #trek_products --- temporary table
FROM
    production.products
WHERE
    brand_id = 9;

Trong ví dụ này SQL Server sẽ tạo một bảng tạm tên là #trek_products, bảng này có 2 column đó là product_name và list_price, dữ liệu của nó là kết quả trả về từ câu truy vấn trên.

Bạn hãy mở công cụ SSMS lên và thực hiện các thao tác theo thứ tự System Databases > tempdb > Temporary Tables thì sẽ thấy table bảng tạm sau:

SQL Server Temporary Tables Example png

Như bạn thấy trong hình chụp này thì tên của bảng tạm sẽ được bổ sung một hậu tố phía sau, điều này sẽ giúp tránh được trường hợp bị trùng tên bởi bảng tạm được lưu trữ chung trong một database tempdb.

Dùng CREATE TABLE

Lệnh Create Table sẽ tạo ra một bảng tạm rỗng nên sau khi tạo xong bạn phải sử dụng lệnh INSERT để thêm dữ liệu vào. Về cú pháp thì chỉ có sự khác biệt là tên của nó phải có dấu #.

1
2
3
4
CREATE TABLE #haro_products (
    product_name VARCHAR(MAX),
    list_price DEC(10,2)
);

Lệnh này sẽ tạo ra bảng tạm #haro_products gồm hai column đó là product_name và list_price. Tuy nhiên nó không có dữ liệu nên mình sử dụng lệnh INSERT để thêm vào.

1
2
3
4
5
6
7
8
INSERT INTO #haro_products
SELECT
    product_name,
    list_price
FROM
    production.products
WHERE
    brand_id = 2;

Và đương nhiên sau này khi bạn thay đổi dữ liệu ở bảng gốc thì sẽ không ảnh hưởng gì đến dữ liệu của bảng tạm.

2. Global Temporary Table

Ở các ví dụ trên là Local Temporary Table, tức là nó chỉ tồn tại cho một phiên làm việc mà thôi. Không tin bạn hãy mở một connection khác và thực hiện câu SQL sau:

1
2
3
4
SELECT
    *
FROM
    #haro_products;

Bạn sẽ bị lỗi: Invalid object name '#haro_products'

Nếu bạn muốn bảng có thể được sử dụng cho nhiều phiên làm việc thì hãy chuyển nó thành Global bằng cách thêm hai dấu thăng ở tên table. Cú pháp như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
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 vấn nó ở bất kì phiên làm việc nào.

3. Xóa Temporary Table

Mặc định của temporary sẽ bị xóa khỏi hệ thống khi một phiên làm việc chấm dứt. Ví dụ bạn đang làm ứng dụng website thì bạn nên thực hiện một kết nối thì có thể sử dụng toàn trang, còn bạn thực hiện 2 kết nối thì nếu kết nối thứ nhất tạo bảng tạm thì kết nối thứ hai không dùng được, đương nhiên cả hai kết nối phải chưa ngắt.

Nhưng đôi khi bạn muốn tự tay xóa thì hãy sử dụng lệnh DROP TABLE.

1
DROP TABLE ##table_name;

Không có gì khác so với một table bình thường.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master