TeraData从已有数据创建表 基本语法,
创建一个新表dept1,该表与department表有同样的表定义:
CREATE TABLE dept1 AS department WITH NO DATA; (WITH DATA)
复制表,增加fallback属性,增加次索引:
CREATE TABLE dept1, FALLBACK AS department WITH NO DATA
UNIQUE INDEX (department_name);
使用子查询创建表,也就是只选择所需的列:
CREATE TABLE emp1 AS
(SELECT employee_number,department_number,salary_amount FROM employee)
WITH NO DATA;
子查询中可以使用连接,从多个表中复制数据。目标表的列还可以是计算或表达式。
使用子查询,并修改列名:
CREATE TABLE emp1 AS
(SELECT employee_number AS emp,department_number AS dept FROM employee)
WITH NO DATA;
同样的功能,还可以通过以下方式实现:
CREATE TABLE emp1(emp, dept) AS
(SELECT employee_number,department_number FROM employee)
WITH NO DATA;
这个例子改变了列的名字、属性和数据类型:
CREATE TABLE dept1 (dept DEFAULT 0 UNIQUE NOT NULL,budget CHECK (budget > 0) ) AS
(SELECT department_number(INTEGER),budget_amount(INTEGER) FROM department)
WITH NO DATA;
数据类型的修改必须在SELECT语句中,不能在参数列表中。
创建时,可以覆盖数据类型:
CREATE TABLE emp3(emp,last,hire,birth,hire_age) AS
(SELECT employee_number,last_name,hire_date,birthdate,(hire_date - birthdate)/365.25 (INTEGER)
WITH DATA;
创建一个全局临时表,并复制department表的数据:
CREATE GLOBAL TEMPORARY TABLE dept1 AS
(SELECT * FROM department)
WITH NO DATA;
修改临时表,可以保留记录:
ALTER TABLE dept1, ON COMMIT PRESERVE ROWS;
再从源表装载数据到临时表:
INSERT INTO dept1 SELECT * FROM department;
注:可变临时表和全局临时表不能使用WITH DATA选项来装载数据,必须使用INSERT 或INSERT SELECT来装载数据。