Введение
Временные таблицы больше всего используются для хранения временной, либо другими словами промежуточных данных при сложных выборках из базы данных. К примеру, при большом количестве JOIN и UNION запросов.
Созданные таблицы доступны до закрытия соединения, другими словами до завершения скриптовой части PHP или отключения MySQL клиента.
Создание временной таблицы
Пример создания пустой таблицы
CREATE TEMPORARY TABLE `tmp_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`price` decimal(11,2) unsigned NOT NULL DEFAULT '0.00',
`sef` varchar(255) NOT NULL,
`text` text NOT NULL,
`approve` tinyint(1) NOT NULL DEFAULT '1',
`date_add` int(11) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
Пример создания временной таблицы из структуры другой таблицы
CREATE TEMPORARY TABLE `tmp_table` LIKE `prods`
Пример клонирование таблицы
CREATE TEMPORARY TABLE `tmp_table`
S ELECT *
FROM `prods`
Пример клонирование таблицы
CREATE TEMPORARY TABLE `tmp_table`
S ELECT *
FROM `prods`
Пример создания и наполнения из нескольких таблиц
CREATE TEMPORARY TABLE `tmp_table`
S ELECT `prods`.`name`, `urls`.`sef`
FROM `prods`
LEFT JOIN `urls`
ON `prods`.`id` = `urls`.`prods_id`
WHERE `prods`.`approve` = 1
Работа с временными таблицами
После создания таблицы, операции с ней, проводятся как с обычными таблицами, далее предоставлен пример
-- Добавление
INSERT INTO `tmp_table` SET `name` = 'Запись 1', `approve` = 1, `date_add` = UNIX_TIMESTAMP();
-- Изменение
UPDATE `tmp_table` SET `approve` = 0 WHERE `id` = 1;
-- Удаление
DELETE FROM `tmp_table` WHERE `approve` = 0;
-- Выборка
SELECT * FROM `tmp_table` WHERE `approve` = 1;