Временная таблица MySQL – это уникальный тип таблицы, который позволяет вам временно хранить данные в рамках одного пользовательского сеанса. Временная таблица MySQL не сильно отличается от обычной таблицы MySQL, за исключением того, что она изменчива.
После инициализации таблицы в конкретном пользовательском сеансе только этот пользователь может просматривать, редактировать или удалять таблицу. Другие вошедшие в систему пользователи не имеют к нему доступа. После завершения сеанса MySQL автоматически удаляет таблицу и хранящиеся в ней данные.
В этой статье мы быстро обсудим, как создать и использовать временную таблицу MySQL.
Как создать временную таблицу?
Процесс и синтаксис для создания временной таблицы очень похожи на то, что вы будете использовать для создания обычной таблицы.
Однако вам необходимо указать ключевое слово TEMPORARY в инструкции. Мы можем выразить запрос как:
CREATE TEMPORARY TABLE table_name ( Columns, table_constraints );
Вы можете указать любое имя таблицы, если оно не конфликтует с основной таблицей.
Хотя вы можете создать временную таблицу с тем же именем, что и основная таблица, это не очень хорошая практика, так как это может привести к путанице и, возможно, к потере данных.
Пример 1
Следующий запрос показывает, как создать временную таблицу MySQL и сохранить в ней данные.
Начните с входа в сеанс MySQL:
mysql -u root -p
После входа в систему создайте образец базы данных:
CREATE DATABASE IF NOT EXISTS temp_db;
На следующем шаге измените базу данных и создайте временную таблицу с помощью запроса:
USE temp_db; CREATE TEMPORARY TABLE temp_tb (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100) NOT NULL, email VARCHAR(255));
Создав временную таблицу, вы можете вставлять и обновлять хранящиеся в ней данные, используя тот же процесс, который используется для заполнения и обновления обычной таблицы MySQL.
Например, используйте запросы ниже, чтобы вставить образцы данных в созданный выше temp_tb:
INSERT INTO temp_tb (username, email) VALUES ('andr', 'info@sample.db'), ('db_user', 'dev@mysql.db'), ('max1', 'maxi@info.com');
Когда у вас есть данные, вы можете выбирать из них значения с помощью обычного оператора SQL SELECT:
SELECT * FROM temp_tb; +----+----------+----------------+ | id | username | email | +----+----------+----------------+ | 1 | andr | info@sample.db | | 2 | db_user | dev@mysql.db | | 3 | max1 | maxi@info.com | +----+----------+----------------+ 3 rows in set (0.00 sec)
Пример 2
Чаще всего временные таблицы MySQL используют для хранения значений из другой таблицы, что может быть полезно, особенно когда у вас есть длинный сценарий для доступа к базе данных; предотвращение появления других запросов.
Рассмотрим образец базы данных andreyex. Мы можем создать временную таблицу на основе таблицы клиентов, используя запрос:
USE andreyex;
Открыв базу данных, используем запрос ниже:
CREATE TEMPORARY TABLE customer_temp SELECT * FROM customer LIMIT 0;
После успешного выполнения запроса вы можете убедиться, что таблицы содержат аналогичную информацию, используя оператор DESC.
Как переименовать временную таблицу?
В отличие от обычной таблицы MySQL, вы не можете использовать каталог операторов RENAME для переименования временной таблицы.
Для этого вы можете использовать запрос ALTER TABLE.
Например, чтобы переименовать временную таблицу из customer_temp в cust_temp; мы можем использовать запрос:
ALTER TABLE customer_temp RENAME cust_temp;
Как удалить временную таблицу?
Чтобы удалить временную таблицу, используйте оператор DROP TEMPORARY TABLE. Использование ключевых слов TEMPORARY гарантирует, что вы случайно не уроните обычную таблицу.
DROP TEMPORARY TABLE cust_temp;
Заключение
Временная таблица MySQL позволяет вам временно хранить информацию для одного пользовательского сеанса. Ниже приведены свойства временных таблиц MySQL:
- Мы создаем их, задав ключевые слова TEMPORARY.
- Они не существуют вне одного пользовательского сеанса.
- Они нестабильны и удаляются после завершения сеанса пользователя.
- Они работают аналогично обычной таблице MySQL.
- Они могут иметь имена, похожие на имена основной таблицы (не рекомендуется).
- Две таблицы в рамках одного пользовательского сеанса не могут содержать одинаковое имя.