基于ODPS的SQL语句

(一)基本概念

1.ODPS:Open Data Processing Service, 简称ODPS;是由阿里云自主研发,提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域;阿里巴巴的离线数据业务都运行在ODPS上;

2.御膳房:基于ODPS的一个应用模型;基于公共云计算的数据管理、计算和交换平台,为政府机构、企业、科研机构、第三方软件服务商等客户,提供大数据管理、开发和生产计算的能力,同时让客户间能交换数据,解决数据管理、应用、流通的场景需求,帮助客户实现商业价值;

3.ODPS SQL:与Hive SQL语法基本一致;适用于海量数据(TB级别),实时性要求不高的场合,它的每个作业的准备,提交等阶段要花费较长时间, 因此要求每秒处理几千至数万笔事务的业务是不能用ODPS SQL完成的;ODPS SQL采用的是类似于SQL的语法,可以看作是标准SQL的子集,但不能因此简单的把ODPS SQL等价成一个数据库,它在很多方面并不具备数据库的特征;

PS:常见数据库有层次型(树状),网状型(网络),关系型(二维表格)

4.SQL语句不分大小写,使用“--”进行注释,使用分号作为语句结束符号;

5.支持的数据类型:bigint,double,string,datetime,boolean,decimal;

6.支持的关系运算符:=, <>, <, <=, >, >=, is null, is not null, like, rlike和in ;

7.支持的算术运算符:+, -, * , /, %;

8.支持的逻辑运算符:and, or,not

9.支持的位运算符:&,|;

10.支持三目运算符:A?B:C;

11.SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL);在ODPS中使用的主要是DDL跟DML;

12.ODPS平台上的数据都是以表的形式来处理的,所以SQL语句很重要,在处理SQL时候,字段也是一个关键的概念;

(二)DDL语句

1.表的创建

(1)新建一个自定义的表:create table if not exists A (字段名  字段类型);

(2)新建一个表,字段与现有表一致,但数据并没有复制:create table if not exists A like B;

2.表的删除

drop table A;

3.表的重命名

alter table A rename to B;

4.表的生命周期

alter table A set lifecycles 30;

5.增加字段

alter table A add columns(字段名  字段类型);

6.查看表的信息

desc A

(三)DML语句

1.表中数据的更新(insert语句)

(1)insert overwrite table A select * from B :表示将表A的数据复制到表B中,前提是字段一致;

PS:ODPS平台的SQL仅支持以上的更新数据库语句;其中关键字overwrite表示覆盖写入,可换成into表示追尾写入;

2表中数据的读取(select语句)

(1)select * from A:读取全部字段数据

(2)select uid from A:读取某一字段全部数据

(3)select distinct uid from A :读取某一字段不重复数据

(4)select * from A where uid='a':读取某一字段值等于指定值的数据

(5)select * from (select * from A)a:嵌套语句

(6)select sum(uid) from A group by uid:分组查询

(7)select * from A order by uid limit 4:全局排序,必须与limit 配合使用

(8)select  row_number() over (partition by item order by score)as row_num from A:对字段item按字段score值进行局部排序并给出序号

3.表的合并(union all 语句)

select * from(
select * from t1 where uid='a'
  union all 
select * from t2 where uid='a')t;

4.表的连接(join 语句与left outer join 语句)

(1)join

select * from A a join B b on a.item = b.item :返回A,B表中字段item值相同的数据

(2)left outer join 

select * from A a left outer join B b on a.item = b.item :返回A表全部数据

(四)内建函数

查看附件文档

附件:ODPS SQL

你可能感兴趣的:(经验帖)