SQL3种建表方式
注:测试环境为DataWorks ODPS SQL。
本文简述3种建表方式,1常用建表(含分区表、生命周期)、2同构表、3带数据同构表
1.1常用建表语句
建表时指定表名、字段名、字段类型;可适当添加注释信息;
create table 表名(
字段1 类型,
字段2 类型
…
)
;
--1建表语句,相关注释为局部注释,查看表信息时,看不到注释。
create table test(
id string,--编号
name string,--姓名
age decimal(3,0)--年龄
)
;
--2相关注释可在查看表信息时,同时看到注释
create table test(
id string COMMENT '编号',
name string comment '姓名',
age decimal(3,0) comment '年龄'
)
comment '测试表'
;
1.2创建分区表,并指定生命周期
数据量过大时,全表查询会影响查询效率,可创建分区表,查询时只查询某个分区的数据;
生命周期,指表数据存在的时间,超过指定时间,会自动清除。如学生成绩,只关注一学期的成绩,可以设置生命周期为180天;
create table stu_check(
stu_id string COMMENT '学号',
name string comment '姓名',
score decimal(2,1) COMMENT '测试分数'
)COMMENT '学生测试表'
PARTITIONED by (dt STRING COMMENT '测试时间') --指定分区字段
LIFECYCLE 3 --指定生命周期为3天,不需要自动清除数据,可不设置
;
--以测试时间为分区,查询时,只查看某次考试的分数,如查看dt=‘20230705’的学生测试分数:
select stu_id ,name ,score from stu_check where dt = '20230705';
2创建同构表
根据已有表,创建相同结构的表,只同构表结构,不复制数据;
create table test2 like test;
--test2为新创建表,test为已存在表;
3创建带数据同构表
根据已有表,创建相同结构的表,同构表结构,复制数据;
create table test3 as select id,name,age from test;
--test3为新创建表,test为已存在表;
测试代码:
--测试表test插入一条数据
insert into test
values('1','张三',22)
;
--创建带数据同构表
create table test3 as select id,name,age from test;
--查询数据(测试结果1)
select id,name,age from test3;
测试结果1: