Teradata поддерживает следующие типы таблиц для хранения временных данных.
- Производная таблица
- Летучий стол
- Глобальная временная таблица
Производная таблица
Производные таблицы создаются, используются и удаляются в запросе. Они используются для хранения промежуточных результатов в запросе.
пример
В следующем примере строится производная таблица EmpSal с записями сотрудников с зарплатой более 75000.
SELECT Emp.EmployeeNo, Emp.FirstName, Empsal.NetPay FROM Employee Emp, (select EmployeeNo , NetPay from Salary where NetPay >= 75000) Empsal where Emp.EmployeeNo = Empsal.EmployeeNo;
Когда вышеуказанный запрос выполняется, он возвращает сотрудников с зарплатой, превышающей 75000.
*** Query completed. One row found. 3 columns returned. *** Total elapsed time was 1 second. EmployeeNo FirstName NetPay ----------- ------------------------------ ----------- 103 Peter 83000
Летучий стол
Изменчивые таблицы создаются, используются и удаляются в пользовательском сеансе. Их определение не сохраняется в словаре данных. Они содержат промежуточные данные запроса, который часто используется. Ниже приводится синтаксис.
Синтаксис
CREATE [SET|MULTISET] VOALTILE TABLE tablename <table definitions> <column definitions> <index definitions> ON COMMIT [DELETE|PRESERVE] ROWS
пример
CREATE VOLATILE TABLE dept_stat ( dept_no INTEGER, avg_salary INTEGER, max_salary INTEGER, min_salary INTEGER ) PRIMARY INDEX(dept_no) ON COMMIT PRESERVE ROWS;
Когда вышеуказанный запрос выполняется, он производит следующий вывод.
*** Table has been created. *** Total elapsed time was 1 second.
Глобальная временная таблица
Определение глобальной временной таблицы хранится в словаре данных и может использоваться многими пользователями / сеансами. Но данные, загруженные в глобальную временную таблицу, сохраняются только во время сеанса. Вы можете реализовать до 2000 глобальных временных таблиц за сеанс. Ниже приводится синтаксис.
Синтаксис
CREATE [SET|MULTISET] GLOBAL TEMPORARY TABLE tablename <table definitions> <column definitions> <index definitions>
пример
CREATE SET GLOBAL TEMPORARY TABLE dept_stat ( dept_no INTEGER, avg_salary INTEGER, max_salary INTEGER, min_salary INTEGER ) PRIMARY INDEX(dept_no);
Когда вышеуказанный запрос выполняется, он производит следующий вывод.