Bảng tạm TEMPORARY TABLE trong SQL

TEMPORARY TABLE hay còn gọi là bảng tạm là một dạng table đặc biệt được lưu trữ tạm thời và xử lý kết quả trung gian trên SQL bằng việc sử dụng các khả năng như chọn, cập nhật, kết hợp giống như bạn có thể sử dụng với các bảng điển hình trong SQL Server.

Tuy nhiên, bạn nên lưu ý là Temporary Table có thể bị xóa khi Client Session hiện tại kết thúc.

Bảng tạm có sẵn từ phiên bản MySQL 3.23 trở đi. Nếu bạn sử dụng một phiên bản cũ hơn, bạn không thể sử dụng tính năng này, thay vào đó bạn có thể sử dụng các Heap Table.

Như đã đề cập, bảng tạm sẽ chỉ tồn tại khi session là còn tồn tại. Nếu bạn chạy code trong PHP script, bảng tạm sẽ bị hủy tự động khi script kết thúc việc thực thi. Nếu bạn được kết nối với MySQL Database thông qua chương trình MySQL Client thì bảng tạm sẽ tồn tại tới khi bạn đóng Client hoặc hủy bảng.

Ví dụ minh họa cách sử dụng bảng tạm

mysql> CREATE TEMPORARY TABLE DOANHTHU (
-> ten_sanpham VARCHAR(50) NOT NULL
-> , tong_doanhthu DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , gia_trungbinh DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , tong_soluong INT UNSIGNED NOT NULL DEFAULT 0 );
Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO DOANHTHU -> (ten_sanpham, tong_doanhthu, gia_trungbinh, tong_soluong) -> VALUES -> ('galaxys10', 100.25, 90, 2); mysql> SELECT * FROM DOANHTHU; +--------------+---------------+----------------+------------------+ | ten_sanpham | tong_doanhthu | gia_trungbinh | tong_soluong | +--------------+---------------+----------------+------------------+ | galaxys10 | 100.25| 90.00 | 2 | +--------------+---------------+----------------+------------------+ 1 row in set (0.00 sec)

Khi bạn thực thi lệnh SHOW TABLES, bảng tạm của bạn sẽ không được liệt kê trong danh sách. Bây giờ, nếu bạn đăng xuất khỏi phiên MySQL và sau đó thực thi một lệnh SELECT, bạn sẽ không tìm thấy dữ liệu trong cơ sở dữ liệu và khi đó bảng tạm của bạn cũng không còn tồn tại.

Xóa bảng tạm trong SQL

Theo mặc định, tất cả các bảng tạm trong MySQL sẽ bị xóa khi kết nối database của bạn chấm dứt. Tuy nhiên, nếu bạn vẫn muốn xóa chúng khi chưa ngắt kết nối thì có thể sử dụng lệnh DROP TABLE.

Sau đây là một ví dụ về xóa một bảng tạm.

mysql> CREATE TEMPORARY TABLE DOANHTHU (
-> ten_sanpham VARCHAR(50) NOT NULL
-> , tong_doanhthu DECIMAL(12,2) NOT NULL DEFAULT 0.00
-> , gia_trungbinh DECIMAL(7,2) NOT NULL DEFAULT 0.00
-> , tong_soluong INT UNSIGNED NOT NULL DEFAULT 0 );
Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO DOANHTHU -> (ten_sanpham, tong_doanhthu, gia_trungbinh, tong_soluong) -> VALUES -> ('galaxys10', 100.25, 90, 2); mysql> SELECT * FROM DOANHTHU; +--------------+---------------+----------------+------------------+ | ten_sanpham | tong_doanhthu | gia_trungbinh | tong_soluong | +--------------+---------------+----------------+------------------+ | galaxys10 | 100.25| 90.00 | 2 | +--------------+---------------+----------------+------------------+ 1 row in set (0.00 sec) mysql> DROP TABLE DOANHTHU; mysql> SELECT * FROM DOANHTHU; ERROR 1146: Table 'QTM.DOANHTHU' doesn't exist

Trong phần tiếp theo, chúng ta sẽ tìm hiểu về Clone Table trong SQL, các bạn nhớ theo dõi nhé.

Bài trước: Hàm xử lý DATE/TIME trong SQL - Phần 2

Bài tiếp: CLONE TABLE trong SQL

Thứ Ba, 02/04/2019 14:38
52 👨 230