teradata 查看 表定义_Teradata SQL基础:从已有表创建新表

本文介绍了在Teradata中如何通过不同方式从已有表创建新表,包括使用`WITH NO DATA`创建空表,利用子查询选择特定列创建新表,并详细阐述了使用`WITH DATA`复制源表数据的方法。同时,提到了子查询中的连接操作和计算字段的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库中很多时候,需要从已有表来建新的表,或者从已经存在表的部分列创建新的表。

各个数据库语言稍微有点区别,为避免混淆,整理如下。

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)表达式(包括外连接)

OLAP 函数

嵌套子查询

使用子查询创建新表时,也可以更改列名。

例如:

CREATE TABLE emp1 AS

(SELECT employee_number AS emp

,department_number AS dept

,salary_amount AS sal

FROM employee) WITH NO DATA;

也可以对列的属性进行修改,这里不做深入讨论。

3.使用已有的表创建有数据的表

创建有源表数据的新表,只需要将参数WITH NO DATA 改成WITH DATA,

就可以复制源表的数据流。

CREATE TABLE dept1 AS department WITH DATA;

当然也可以用子查询选中部分列。甚至,子查询中也可以使用表关联。

4.子查询中使用连接

子查询中使用多个表关联,就可以得到多个表的数据了。

例如:

CREATE TABLE dept3 AS

(

SELECT d.department_number

, d.department_name

, e.last_name AS mgr_name

FROM department d

INNER JOIN employee e

ON e.employee_number = d.manager_employee_number

) WITH DATA;

也可以对子查询中的列使用计算函数,或者表达式运算(比如两个字段相减),甚至约束,得到更丰富的结果。

更多数据科学方面内容,请关注个人微信公众号:DataCode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值