Руководство по SQL. Временные таблицы.

Некоторые RDBMS поддерживают механизм временных таблиц. Они позволяют нам хранить и обрабатывать промежуточные результаты используя все возможности SQL сервера.

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

Пример:

Ниже приведён пример использования временной таблицы:


mysql> CREATE TEMPORARY TABLE SALES_TICKET_SUMMARY (
          PRODUCT_NAME VARCHAR (100) NOT NULL, 
          PRODUCT_PRICE INT NOT NULL, 
          PRODUCT_AMOUNT INT NOT NULL DEFAULT 1
        );

Теперь добавим данные в нашу таблицу, используя следующий запрос:


mysql> INSERT INTO SALES_TICKET_SUMMARY VALUES ('Milk', 10, 2);

На данный момент, наша таблица SALES_TICKET_SUMMARY содержит следующие записи:


+--------------+---------------+----------------+
| PRODUCT_NAME | PRODUCT_PRICE | PRODUCT_AMOUNT |
+--------------+---------------+----------------+
| Milk         |            10 |              2 |
+--------------+---------------+----------------+

По умолчанию, после того как наша сессия будет закончена, данная таблица будет удалена.
Но, если мы хотим удалить временную таблицу до этого момента, то нам необходимо использовать команду DROP TABLE:


mysql> DROP  TABLE SALES_TICKET_SUMMARY;

Попытка обратиться к данной таблице после этого приведёт к ошибке 1146:


mysql> SELECT * FROM SALES_TICKET_SUMMARY;
ERROR 1146 (42S02): Table 'sql_tutorial.SALES_TICKET_SUMMARY' doesn't exist

На этом мы заканчиваем изучение временных таблиц.
В следующей статье мы рассмотрим способ создания копии определённой таблицы.