- Giới thiệu SQL
- SQL là gì
- Các khái niệm RDBMS
- Database là gì
- Cú pháp SQL cơ bản
- Kiểu dữ liệu
- Toán tử
- Biểu thức (Expression)
- Lệnh Create Database
- Lệnh Drop Database
- Lệnh Select Database
- Lệnh Rename Database
- Lệnh Create Table
- Lệnh Drop Table
- Lệnh Delete Table
- Lệnh Rename Table
- Lệnh Truncate Table
- Lệnh ALter Table
- Sao chép bảng
- Bảng tạm (Temp Table)
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Sắp xếp kết quả
- Mệnh đề Where
- Mệnh đề AND & OR
- Mệnh đề WITH
- Mệnh đề Like
- Mệnh đề Top
- Mệnh đề Union
- Giá trị NULL
- Cú pháp Alias
- Chỉ mục (Index)
- Sử dụng View
- Mệnh đề Having
- SQL Transaction
- Toán tử Wildcard
- Truy vấn con
- Sử dụng Sequence
- Xử lý bản sao
- SQL Injection
- Ràng buộc (Constraint)
- Ràng buộc NOT NULL
- Ràng buộc DEFAULT
- Ràng buộc UNIQUE
- Ràng buộc PRIMARY KEY
- Ràng buộc FOREIGN KEY
- Ràng buộc CHECK
- Ràng buộc INDEX
- Sử dụng Join
- Inner Join
- Left Join
- Right Join
- Full Join
- Self Join
- Cartesian Join
- Hàm hữu ích
- Hàm xử lý Date
- Hàm xử lý chuỗi
- Hàm xử lý số
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Tuning DB
- Tài liệu SQL tham khảo
Bảng tạm (Temporary Table) trong SQL
Có nhiều RDBMS hỗ trợ Bảng tạm (Temporary Table). Bảng tạm (Temporary Table) là một tính năng tuyệt vời giúp bạn lưu giữ và xử lý các kết quả trung gian bằng việc sử dụng các khả năng như chọn, cập nhật, kết hợp giống như bạn có thể sử dụng với các bảng điển hình trong SQL Server.
Bảng tạm (Temporary Table) có thể rất hữu ích trong một số trường hợp khi bạn muốn lưu giữ dữ liệu tạm thời. Điều quan trọng nhất bạn cần nên biết về Bảng tạm (Temporary Table) là chúng có thể bị xóa khi Client Session hiện tại kết thúc.
Bảng tạm (Temporary Table) là có sẵn từ MySQL phiên bản 3.23 trở đi. Nếu bạn sử dụng một phiên bản cũ hơn, bạn không thể sử dụng tính năng này, nhưng bạn có thể sử dụng các Heap Table.
Như đã đề cập, bảng tạm sẽ chỉ tồn tại khi session là còn tồn tại. Nếu bạn chạy code trong PHP script, bảng tạm sẽ bị hủy tự động khi script kết thúc việc thực thi. Nếu bạn được kết nối với MySQL Database 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 hủy bảng.
Ví dụ
Ví dụ sau minh họa cách sử dụng của bảng tạm.
mysql> CREATE TEMPORARY TABLE DOANHTHU ( -> ten_san_pham VARCHAR(50) NOT NULL -> , tong_doanh_thu DECIMAL(12,2) NOT NULL DEFAULT 0.00 -> , gia_trung_binh DECIMAL(7,2) NOT NULL DEFAULT 0.00 -> , tong_so_luong INT UNSIGNED NOT NULL DEFAULT 0 ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO DOANHTHU -> (ten_san_pham, tong_doanh_thu, gia_trung_binh, tong_so_luong) -> VALUES -> ('iphone7', 30, 15, 2); mysql> SELECT * FROM DOANHTHU; +--------------+-------------+----------------+------------------+ | ten_san_pham | tong_doanh_thu | gia_trung_binh | tong_so_luong | +--------------+-------------+----------------+------------------+ | iphone7 | 30 | 15 | 2 | +--------------+-------------+----------------+------------------+ 1 row in set (0.00 sec)
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 danh sách. Bây giờ, nếu bạn đăng xuất khỏi MySQL session và sau đó bạn 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 Database. Ngay khi đó, bảng tạm của bạn cũng sẽ không tồn tại.
Xóa bảng tạm trong SQL
Theo mặc định, tất cả bảng tạm bị xóa bởi MySQL khi kết nối tới Database của bạn kết thúc. Nếu bạn vấn muốn xóa chúng, bạn thông báo một lệnh DROP TABLE.
Ví dụ sau minh họa cách xóa một bảng tạm trong SQL.
mysql> CREATE TEMPORARY TABLE DOANHTHU ( -> ten_san_pham VARCHAR(50) NOT NULL -> , tong_doanh_thu DECIMAL(12,2) NOT NULL DEFAULT 0.00 -> , gia_trung_binh DECIMAL(7,2) NOT NULL DEFAULT 0.00 -> , tong_so_luong INT UNSIGNED NOT NULL DEFAULT 0 ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO DOANHTHU -> (ten_san_pham, tong_doanh_thu, gia_trung_binh, tong_so_luong) -> VALUES -> ('iphone7', 30, 90, 2); mysql> SELECT * FROM DOANHTHU; +--------------+-------------+----------------+------------------+ | ten_san_pham | tong_doanh_thu | gia_trung_binh | tong_so_luong | +--------------+-------------+----------------+------------------+ | iphone7 | 30 | 15 | 2 | +--------------+-------------+----------------+------------------+ 1 row in set (0.00 sec) mysql> DROP TABLE DOANHTHU; mysql> SELECT * FROM DOANHTHU; ERROR 1146: Table 'VIETJACK.DOANHTHU' doesn't exist