Временные таблицы могут быть очень полезными в некоторых случаях для хранения временных данных. Самое важное, что должно быть известно для временных таблиц, это то, что они будут удалены при завершении текущего сеанса клиента.

Что такое временные таблицы?

Временные таблицы были добавлены в MySQL версии 3.23. Если вы используете более старую версию MySQL, чем 3.23, вы не можете использовать временные таблицы.

Как было сказано ранее, временные таблицы будут сохраняться только до тех пор, пока сессия будет жива. Если вы запустите код в скрипте 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