MySQL - Bảng tạm thời
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 là gì?
Bảng tạm thời đã được thêm vào MySQL Phiên bản 3.23. 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ụ
Chương trình sau đây là một ví dụ cho bạn thấy cách sử dụng bảng tạm thời. Mã tương tự có thể được sử dụng trong các tập lệnh PHP bằng cách sử dụngmysql_query() chức năng.
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 một SHOW TABLESthì 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 đó bạn sẽ phát hànhSELECTlệnh, sau đó bạn sẽ không tìm thấy dữ liệu 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 làm như vậy bằng cách phát hànhDROP TABLE chỉ huy.
Chương trình sau đây là một ví dụ về việc loại bỏ 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