Nội dung chính
Bảng tạm trong SQL là gì?
Có RDBMS hỗ trợ các bảng tạm. Các bảng tạm là một tính năng tuyệt vời cho phép bạn lưu trữ và xử lý kết quả trung gian bằng cách sử dụng cùng một lựa chọn, cập nhật và tham gia các tính năng 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 có thể rất hữu ích trong một số trường hợp để giữ dữ liệu tạm. Điều quan trọng nhất mà bạn nên biết đối với các bảng tạm là chúng sẽ bị xóa khi phiên giao dịch hiện tại kết thúc.
Các bảng tạm có sẵn trong MySQL phiên bản 3.23 trở đi. Nếu bạn sử dụng một phiên bản cũ của MySQL hơn 3,23, bạn không thể sử dụng các bảng tạm, nhưng bạn có thể sử dụng bảng heap .
Như đã đề cập trước đó, các bảng tạm sẽ chỉ kéo dài khi phiên này vẫn còn. Nếu bạn chạy mã trong một tập lệnh PHP, bảng tạm sẽ tự động bị hủy khi tập lệnh kết thúc. Nếu bạn đang kết nối với máy chủ cơ sở dữ liệu MySQL thông qua chương trình MySQL client, thì bảng tạm sẽ tồn tại cho đến khi bạn đóng khách hàng hoặc tự hủy bảng.
Ví dụ
Dưới đây là một ví dụ về sử dụng một bảng tạm.
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 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. Ngay cả bảng tạm của bạn sẽ không 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 sẽ bị xóa bởi MySQL khi kết nối cơ sở dữ liệu của bạn bị chấm dứt. Vẫn còn nếu bạn muốn xóa chúng ở giữa, sau đó bạn có thể làm như vậy bằng cách phát hành lệnh DROP TABLE .
Sau đây là một ví dụ về xóa một bảng tạm.
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