Hãy cùng khám phá cách hoạt động của các bảng tạm thời trong MariaDB. Đầu tiên chúng ta phải kết nối với máy chủ. Ví dụ (sử dụng chi tiết kết nối của riêng bạn):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
Bây giờ, để chỉ ra điều gì đó, hãy tạo một bảng tiêu chuẩn (vĩnh viễn). Đây là cách thực hiện:
CREATE TABLE t ( c INT );
Bảng này, t
, sẽ tồn tại trong cơ sở dữ liệu ngay cả sau khi chúng tôi thoát khỏi máy khách:
exit
Khi chúng ta kết nối lại và kiểm tra các bảng hiện có bằng SHOW TABLES;
, bảng t
vẫn sẽ được liệt kê:
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
Tất cả điều này khá rõ ràng, nhưng bây giờ, hãy tạo lại bảng này và thử một cái gì đó khác:
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
Lưu ý từ khóa TEMPORARY
. Sau khi tạo bảng này, nếu chúng ta chạy SHOW TABLES;
, nó xuất hiện trong danh sách. Chúng ta có thể chèn dữ liệu vào đó, truy vấn nó và nối nó với các bảng khác. Nó hoạt động giống như một bảng bình thường trong phiên hiện tại. Tuy nhiên, nếu chúng tôi thoát khỏi máy khách, sau đó kết nối lại và thực hiện SHOW TABLES;
một lần nữa, bảng tạm thời t
sẽ không được liệt kê.
Bảng tạm thời chỉ tồn tại trong suốt phiên mà nó được tạo và các phiên khác sẽ không thể nhìn thấy bảng đó.
Các bảng tạm thời khá hữu ích cho các hoạt động dữ liệu nhất thời. Ví dụ: hãy xem xét một bảng có tên là products
trong cơ sở dữ liệu của chúng tôi:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
Chúng ta có thể tạo một bảng tạm thời mô phỏng cấu trúc của products
:
CREATE TEMPORARY TABLE t LIKE products;
Chúng tôi có thể xác nhận điều này bằng cách chạy:
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
Ban đầu, t
sẽ trống. Tuy nhiên, giả sử chúng tôi muốn chuyển một số dữ liệu từ products
sang t
. Giả sử chúng ta chỉ muốn bao gồm các sản phẩm có chứa số 0 trong mã của chúng:
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
Sau khi chạy lệnh này, nếu chúng ta truy vấn bảng tạm thời t
:
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
Chúng tôi thấy dữ liệu được lọc.
Các bảng tạm thời cung cấp một cách mạnh mẽ để xử lý dữ liệu tạm thời mà không ảnh hưởng đến việc lưu trữ dữ liệu liên tục. Chúng đặc biệt hữu ích trong các tình huống mà dữ liệu cần được thao tác hoặc chuyển đổi tạm thời. Bạn có thể sử dụng bảng cố định cho loại thao tác dữ liệu này nhưng bảng tạm thời rất hữu ích khi bạn cần dọn dẹp tự động, giảm nguy cơ xung đột đặt tên, cách ly và bảo mật cũng như quản lý tài nguyên cho hiệu suất truy vấn.