Временная таблица SQL, также известная как temp table, — это таблица, которая создается и используется в контексте определенного сеанса или транзакции в системе управления базами данных (СУБД). Она предназначена для хранения временных данных, которые нужны на короткое время и не требуют постоянного хранения.
Временные таблицы создаются «на лету». Обычно они используются для выполнения сложных вычислений, хранения промежуточных результатов или манипулирования подмножествами данных во время выполнения запроса или серии запросов.
Каждая временная таблица имеет конкретную область видимости и срок службы. Она доступна только в рамках создавшего ее сеанса или транзакции и автоматически удаляется при их завершении или при явном удалении пользователем.
Временная природа таблиц делает их подходящими для управления преходящими данными, которые не нуждаются в сохранении после выполнения непосредственной задачи.
Временные таблицы в SQL обеспечивают удобный способ разбиения сложных задач на более мелкие и управляемые. Они позволяют разделить этапы обработки данных, что может повысить производительность, улучшить читаемость кода и упростить логику запросов.
Временные таблицы могут использоваться в различных СУБД, таких как MySQL, PostgreSQL, Oracle, SQL Server и других, хотя синтаксис и возможности могут несколько отличаться в разных реализациях.
Как создается временная таблица SQL
От редакции Techrocks: о том, как вообще создаются таблицы, читайте в статье «Как создать таблицу в SQL (примеры с PostgreSQL и MySQL)».
Чтобы создать временную таблицу, можно использовать инструкцию CREATE TABLE с ключевым словом TEMPORARY или TEMP перед именем таблицы. Вот пример на языке SQL:
CREATE TEMPORARY TABLE temp_table ( id INT, name VARCHAR(50), age INT );
Объяснение кода:
- Инструкция CREATE TEMPORARY TABLE используется для создания временной таблицы.
temp_table
— это имя, которое присваивается временной таблице. Имя можно выбрать любое.- Внутри круглых скобок мы определяем столбцы временной таблицы.
- В данном примере временная таблица
temp_table
имеет три столбца:id
типа INT,name
типа VARCHAR(50) иage
типа INT. - При необходимости мы можем добавить дополнительные столбцы, указав их имена и типы данных.
- Временная таблица автоматически удаляется в конце сеанса или при завершении сеанса.
Примеры использования временных таблиц
Анализ подмножеств данных
Одним из распространенных случаев использования временных таблиц является анализ конкретных подмножеств данных.
Допустим, у нас есть большой набор данных, и мы хотим выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можно создать временную таблицу, содержащую только необходимые строки и столбцы. Это позволит нам сосредоточиться на подмножестве данных, не изменяя исходный набор данных. После завершения анализа мы можем удалить временную таблицу.
Например:
-- Создать временную таблицу с подмножеством данных CREATE TEMPORARY TABLE subset_data AS SELECT column1, column2, column3 FROM original_table WHERE condition; -- Анализ подмножества данных SELECT column1, AVG(column2) AS average_value FROM subset_data GROUP BY column1; -- Удалить временную таблицу DROP TABLE subset_data;
Повышение производительности запросов
Временные таблицы могут использоваться для оптимизации сложных или ресурсоемких запросов. Разбив сложный запрос на несколько этапов с помощью временных таблиц, мы можем повысить производительность запроса.
Такое повышение происходит за счет уменьшения объема данных, обрабатываемых на каждом этапе, или за счет предварительного вычисления промежуточных результатов.
Временные таблицы позволяют хранить и повторно использовать промежуточные результаты запроса, избегая лишних вычислений. Например:
-- Создать временную таблицу для хранения промежуточных результатов CREATE TEMPORARY TABLE temp_results AS SELECT column1, COUNT(*) AS count_value FROM large_table WHERE condition1 GROUP BY column1; -- Использовать временную таблицу для оптимизации итогового запроса SELECT column1, column2 FROM temp_results WHERE count_value > 10 ORDER BY column1; -- Удалить временную таблицу DROP TABLE temp_results;
От редакции Techrocks: о том, как вообще делать запросы, читайте в статье «Запросы SQL: руководство для начинающих».
Подготовка и преобразование данных
Временные таблицы также полезны для подготовки и преобразования данных перед их загрузкой в постоянные таблицы.
Мы можем создать временную таблицу, импортировать данные из различных источников, очистить их, применить преобразования и проверить данные перед их вставкой в конечный пункт назначения.
Временные таблицы обеспечивают гибкий и эффективный способ обработки и манипулирования данными без изменения исходного набора. Например:
-- Создать временную таблицу для подготовки данных CREATE TEMPORARY TABLE staging_table ( id INT, name VARCHAR(50), quantity INT ); -- Импортировать и преобразовать данные в подготовительную таблицу INSERT INTO staging_table (id, name, quantity) SELECT id, UPPER(name), quantity * 2 FROM external_source; -- Валидация и манипуляции с данными в подготовительной таблице UPDATE staging_table SET quantity = 0 WHERE quantity < 0; -- Вставить преобразованные данные в итоговую таблицу INSERT INTO final_table (id, name, quantity) SELECT id, name, quantity FROM staging_table; -- Удалить временную таблицу DROP TABLE staging_table;
Чем отличаются временная и постоянная таблицы в SQL
Критерий | Временная таблица | Постоянная таблица |
---|---|---|
Продолжительность жизни | Временная таблица существует только в текущей сессии или при текущем соединении | Сохраняется после завершения сессии или соединения |
Сохранение данных | После завершения сеанса данные не сохраняются | Данные хранятся постоянно |
Место хранения | Временное хранилище обычно располагается в памяти или пространстве для временного хранения | Постоянное хранилище размещается на диске или в базе данных |
Доступность | Временная таблица доступна только для сессии или соединения, в которых создана | Постоянная таблица доступна для всех пользователей и соединений с соответствующими правами |
Соглашение об именах | Имена временных таблиц часто имеют префиксы в виде специальных символов или ключевых слов | Имена постоянных таблиц не имеют префиксов в виде специальных символов или ключевых слов |
Удержание данных | Данные автоматически удаляются в конце сессии или при закрытии соединения | Данные хранятся до тех пор, пока не будут намеренно удалены или изменены |
Индексы и связи | Временные таблицы могут иметь индексы и связи, но они обычно временные (удаляются вместе с таблицей) | Постоянные таблицы могут иметь индексы, связи и триггеры |
Свойства транзакций | По умолчанию временные таблицы не транзакционные, но это зависит от СУБД | Постоянные таблицы участвуют в транзакциях и поддерживают свойства ACID |
Заключение
Временные таблицы SQL являются ценным инструментом в деле управления базами данных и оптимизации запросов. Используя их на практике и экспериментируя, вы сможете найти инновационные способы использования временных таблиц и улучшить свои навыки работы с SQL.
Перевод статьи «SQL Temp Table – How to Create a Temporary SQL Table».
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]