Bảng tạm trong MySQL



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

Các bảng tạm được bổ sung trong phiên bản MySQL 3.23. Nếu bạn sử dụng phiên bản MySQL cũ hơn, thì bạn không thể sử dụng các bảng này, tuy nhiên, bạn có thể sử dụng các Heap Table.

Các bảng tạm sẽ chỉ tồn tại khi session còn sống. Nếu bạn chạy code trong một PHP Script, thì bảng tạm sẽ tự động bị hủy khi Script kết thúc việc thực thi. Nếu bạn kết nối với MySQL Database Server 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 thao tác hủy bảng.

Ví dụ

Ví dụ sau tạo một bảng tạm có tên bangdiemk60 trong cơ sở dữ liệu sinhvien. Code này cũng có thể được sử dụng trong PHP Script bởi sử dụng hàm mysql_query().

//Chon co so du lieu
USE sinhvien;//Tao bang tam bangdiemk60
CREATE TEMPORARY TABLE bangdiemk60 (
ho VARCHAR(50) NOT NULL,
ten VARCHAR(20) NOT NULL,
diemgk FLOAT(4,2) NOT NULL DEFAULT 0.00,
diemck FLOAT(4,2) NOT NULL DEFAULT 0.00
);//Chen du lieu vao bang
INSERT INTO bangdiemk60 (ho, ten, diemgk, diemck)
VALUES ('Tran Minh', 'Chinh', 8, 9);//hien thi du lieu cua bang
SELECT * FROM bangdiemk60;
+--------------+-------+---------+--------+
| ho           | ten   | diemgk  | diemck |
+--------------+-------+---------+--------+
| Tran Minh    | Chinh |  8.00   |  9.00  |
+--------------+-------+---------+--------+

Khi bạn thông báo một lệnh SHOW TABLES, thì bảng tạm của bạn sẽ không được liệt kê trong kết quả. Bây giờ, nếu bạn đăng xuất MySQL session và sau đó bạn sẽ thông báo một lệnh SELECT, thì bạn sẽ không thấy dữ liệu nào có sẵn trong cơ sở dữ liệu.

Xóa bảng tạm trong MySQL

Theo mặc định, tất cả bảng tạm bị xóa bởi MySQL khi kết nối tới cơ sở dữ liệu bị ngắt. Tuy nhiên, nếu bạn vẫn muốn xóa chúng, thì bạn có thể làm điều này bởi thông báo lệnh DROP TABLE.

Ví dụ sau sẽ xóa một bảng tạm trong MySQL:

DROP TABLE bangdiemk60;//Bay gio, neu ban su dung lenh SELECT
SELECT * FROM bangdiemk60;
//thi no se cho mot loi nhu sau
Error Code: 1146. Table 'sinhvien.bangdiemk60' doesn't exist

Các bài học MySQL phổ biến khác tại VietJack: