English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MySQL 임시 테이블은 우리가 일시적인 데이터를 저장해야 할 때 매우 유용합니다. 임시 테이블은 현재 연결에서만 보이며, 연결을 닫을 때 MySQL이 자동으로 테이블을 지우고 모든 공간을 해제합니다。
임시 테이블은 MySQL 3.23版本에 추가되었으므로,如果你的MySQL版本低于 3.23版本就无法使用MySQL의 임시 테이블。하지만 지금은 거의 사용되지 않는 이렇게 낮은 버전의 MySQL 데이터베이스 서버가 많지 않습니다。
MySQL 임시 테이블은 현재 연결에서만 보이며, PHP 스크립트로 MySQL 임시 테이블을 생성하면 PHP 스크립트 실행이 완료되면 임시 테이블도 자동으로 파괴됩니다。
如果你使用了其他MySQL 클라이언트 프로그램을 사용하여 MySQL 데이터베이스 서버에 연결하여 임시 테이블을 생성하면, 임시 테이블이 클라이언트 프로그램을 닫을 때까지 파괴되지 않습니다. 물론 수동으로 파괴도 가능합니다.
以下展示了使用MySQL 임시 테이블의 간단한 예제,以下的 SQL 코드는 PHP 스크립트의 mysql_query() 함수에 적용될 수 있습니다。
mysql> CREATE TEMPORARY TABLE SalesSummary ( -product_name VARCHAR(50) NOT NULL -, total_sales DECIMAL(12,2NOT NULL DEFAULT 0.00 -, avg_unit_price DECIMAL(7,2NOT NULL DEFAULT 0.00 -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0 ); 쿼리 성공, 영향을 받은 행 0 (0.00 초) 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 행이 포함되었습니다(0.00 초)
当你使用 SHOW TABLES命令显示数据表列表时,你将无法看到 SalesSummary 테이블。
如果你退出当前MySQL 세션,再使用 SELECT命令来读取原先创建的临时表数据,那你会发现数据库中没有该表的存在,因为在你退出时该临时表已经被销毁了。
默认情况下,当你断开与数据库的 연결 후에, 임시 테이블이 자동으로 파괴됩니다. 물론 현재 MySQL 세션에서 사용하여도 됩니다. DROP TABLE 命令来手动删除临时表。
以下是手动删除临时表的示例:
mysql> CREATE TEMPORARY TABLE SalesSummary ( -product_name VARCHAR(50) NOT NULL -, total_sales DECIMAL(12,2NOT NULL DEFAULT 0.00 -, avg_unit_price DECIMAL(7,2NOT NULL DEFAULT 0.00 -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0 ); 쿼리 성공, 영향을 받은 행 0 (0.00 초) 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 행이 포함되었습니다(0.00 초) mysql> DROP TABLE SalesSummary; mysql> SELECT * FROM SalesSummary; 에러 1146: 테이블 'w3codebox.SalesSummary'이(가) 존재하지 않습니다