SQL - Bảng tạm thời

Bảng tạm thời là gì?

Có RDBMS, hỗ trợ các bảng tạm thời. Bảng tạm thời là một tính năng tuyệt vời cho phép bạnstore and process intermediate results bằng cách sử dụng cùng các khả năng lựa chọn, cập nhật và nối mà bạn có thể sử dụng với các bảng SQL Server điển hình.

Các bảng tạm thời có thể rất hữu ích trong một số trường hợp để giữ dữ liệu tạm thời. Điều quan trọng nhất cần biết đối với các bảng tạm thời là chúng sẽ bị xóa khi phiên khách hiện tại kết thúc.

Bảng tạm thời có sẵn trong MySQL phiên bản 3.23 trở đi. Nếu bạn sử dụng phiên bản MySQL cũ hơn 3.23, bạn không thể sử dụng các bảng tạm thời, nhưng bạn có thể sử dụngheap tables.

Như đã nêu trước đó, các bảng tạm thời sẽ chỉ tồn tại miễn là phiên còn tồn tại. Nếu bạn chạy mã trong tập lệnh PHP, bảng tạm thời sẽ tự động bị hủy khi tập lệnh kết thúc thực thi. Nếu bạn được kết nối với máy chủ cơ sở dữ liệu MySQL thông qua chương trình máy khách MySQL, thì bảng tạm thời sẽ tồn tại cho đến khi bạn đóng máy khách hoặc hủy bảng theo cách thủ công.

Thí dụ

Đây là một ví dụ cho bạn thấy cách sử dụng bảng tạm thời.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Khi bạn phát hành lệnh SHOW TABLES, bảng tạm thời 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 đó đưa ra lệnh SELECT, bạn sẽ không tìm thấy dữ liệu nào có sẵn trong cơ sở dữ liệu. Ngay cả bảng tạm thời của bạn sẽ không tồn tại.

Bỏ bảng tạm thời

Theo mặc định, tất cả các bảng tạm thời sẽ bị MySQL xóa khi kết nối cơ sở dữ liệu của bạn bị chấm dứt. Tuy nhiên, nếu bạn muốn xóa chúng ở giữa, thì bạn có thể làm như vậy bằng cách phát hànhDROP TABLE chỉ huy.

Sau đây là một ví dụ về việc giảm một bảng tạm thời.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SALESSUMMARY;
mysql>  SELECT * FROM SALESSUMMARY;
ERROR 1146: Table 'TUTORIALS.SALESSUMMARY' doesn't exist