MySQL - временные таблицы
Временные таблицы могут быть очень полезны в некоторых случаях для хранения временных данных. Самое важное, что следует знать о временных таблицах, - это то, что они будут удалены при завершении текущего сеанса клиента.
Что такое временные таблицы?
Временные таблицы были добавлены в MySQL версии 3.23. Если вы используете более старую версию MySQL, чем 3.23, вы не можете использовать временные таблицы, но можете использоватьHeap Tables.
Как указывалось ранее, временные таблицы будут существовать только до тех пор, пока активен сеанс. Если вы запустите код в сценарии PHP, временная таблица будет уничтожена автоматически, когда сценарий завершит выполнение. Если вы подключены к серверу базы данных MySQL через клиентскую программу MySQL, временная таблица будет существовать до тех пор, пока вы не закроете клиент или не уничтожите таблицу вручную.
пример
Следующая программа является примером, показывающим использование временной таблицы. Тот же код можно использовать в сценариях PHP с помощьюmysql_query() функция.
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)
Когда вы выпускаете SHOW TABLES, тогда ваша временная таблица не будет отображаться в списке. Теперь, если вы выйдете из сеанса MySQL, а затем выдадитеSELECTкоманда, то вы не найдете никаких данных в базе данных. Даже вашей временной таблицы не будет.
Удаление временных таблиц
По умолчанию все временные таблицы удаляются MySQL при разрыве соединения с базой данных. Тем не менее, если вы хотите удалить их между ними, вы делаете это, выпускаяDROP TABLE команда.
Следующая программа является примером удаления временной таблицы -
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