数据库中很多时候,需要从已有表来建新的表,或者从已经存在表的部分列创建新的表。
各个数据库语言稍微有点区别,为避免混淆,整理如下。
DB2和Mysql中,从已有表创建新表格式如下:
CREATE TABLE TABLENAME LIKE ...
从已经有表的部分列创建新表格式如下:
CREATE TALBLE TABLENAME... AS SELECT ...
Teradata的使用方法如下:
1.使用已有表创建空表
Teradata从基于已存在表创建新表格式为 CREATE TALBE AS。如果不需要源表数据,使用 WITHE NO DATA 选项。
例如:
CREATE TABLE dept1 AS department WITH NO DATA;
这样dept1和表department有相同的结构定义。
2.使用子查询创建空表
使用子查询,可以限制创建目标表的行和列。
CREATE TABLE emp1 AS
(SELECT employee_number
,department_number
,salary_amount
FROM employee) WITH NO DATA;
这样新表emp1有3个列:employee_number,department_number,salary_amount。
使用子查询创建表,有一些限制:不允许使用 ORDER BY 子句。
所有列或表达式都必须有名字,缺省的或赋予的
允许使用下列内容:连接(Join)表达式(包括外连接)