216
微信
DML语法__用户指南_云数据库 PetaData-阿里云
SELECT语句
Select EXPR, [distinct] T1.COL1, [T2.COL1], {count|sum|min|max}( T1.COL1), count([distinct] T1.COL1)
from T1 [{join T2}1,n on T1.COL2 = T2.COL2]
[where expr]
group by [binary] COL1
order by [BINARY] COL1 [limit m [offset n]]
说明:
1. 不支持for update/into从句;
2. 对于distinct复合语句,目前仅支持distinct分区键或count(distinct分区键);
3. 聚集函数不支持avg;
4. 跨分区聚合函数目前仅支持count/sum/min/max函数,仅支持varchar/integer/datetime/timestamp/date/time类型;
5. 不支持子查询;
6. 当前仅支持两个分区表join在分区键上且join条件为等值,或者分区表join广播表,不支持join在非分区字段上,也不支持join在分区字段非等值条件上;
7. 若列为timestamp类型,则不得设置精度;
8. where条件过滤以及跨分区group by/order by该列类型时,严格符合”YY-MM-DD HH:MM:SS”格式,否则将被视作字符串类型;
9. 对于group by/order by,当前支持整型、浮点型、日期时间型的比较,对于字符串的比较,当前仅能进行二进制大小比较,不支持使用各类字符集的比较;
10. group by/order by的列,必须出现在select从句中,如果是二进制比较,必须同时在select和group by/order by从句显式写明BINARY 列名,同时具备group by与order by从句时,二者的操作列必须完全相同;
11. 跨分区group by、order by目前仅支持varchar/integer/datetime/timestamp/date/time类型;
12. 不支持having从句;
13. 不支持order by random()/order by function()/order by #(列序号整数);
14. 不支持with从句;
INSERT语句
insert [ignore] [into] T1 (COL1, COL2) values (VALUE11, VALUE12) [, (VALUE21, VALUE22)] [on duplicate key update COL3 = VALUE3]
说明:
1. 允许insert多个值,且这些值可以在任意多个分区;
2. 且跨分区的insert会自动进入一个一阶段提交分布式事务,不需要用户自行开启事务,但是在部分分区提交成功部分分区提交失败时,可能导致回滚不一致;
3. 若用户的表包含自增主键,则insert时该列的生成规则需遵守自增主键的使用方法;
4. insert时,列内容前不得附带字符集等前缀描述,如insert into t (f) values (_utf8’a’)是不支持的,且对于分区键,用户必须自行保证分区键的列定义,与用户insert时填入的列值是匹配的,若用户建表时列定义为整型,而insert时为浮点型或字符串型,则会因数据类型截断,导致数据分布紊乱;
5. on duplicate update从句的特性类似于replace,无法保证非分区字段的唯一性,语法上虽未禁止,但不建议用户使用,使用者请自行保证唯一性;
6. 不支持insert select从句;
UPDATE语句
update T1 set COL1 = VALUE1, COL2 = VALUE2 where EXPR
说明:
1. 允许跨分区update,且跨分区的update会自动进入一个分布式事务,不需要用户自行开启事务,但是在部分分区提交成功部分分区提交失败时,可能导致回滚不一致;
2. 不允许更新主键和分区键,若需要变更主键和分区键,需要先delete后重新insert;
3. update时,列内容前不得附带字符集等前缀描述,如update t set f = _utf8’b’是不支持的;
4. 不支持update limit从句;
DELETE语句
delete from T1 where EXPR
说明:
1. 允许跨分区delete,且跨分区的delete会自动进入一个分布式事务,不需要用户自行开启事务,但是在部分分区提交成功部分分区提交失败时,可能导致回滚不一致;
2. 允许delete整张表;
3. 不支持delete limit从句;
REPLACE语句
replace [into] T1 (COL1, COL2) values (VALUE11, VALUE12) [, (VALUE21, VALUE22)]
说明:
1. 允许replace多个值,且这些值可以在任意多个分区,且跨分区的replace会自动进入一个分布式事务,不需要用户自行开启事务,但是在部分分区提交成功部分分区提交失败时,可能导致回滚不一致;
2. replace时,列内容前不得附带字符集等前缀描述,如replaceinto t (f) values (_utf8’a’)是不支持的,且对于分区键,用户必须自行保证分区键的列定义,与用户replace时填入的列值是匹配的,若用户建表时列定义为整型,而replace时为浮点型或字符串型,则会因数据类型截断,导致数据分布紊乱;
3. 不支持replace set从句;
EXPLAIN DML语句
1. 目前支持EXPLAIN语句,可以分析DML语句的执行计划,影响的分区,结果合并的流程等;
2. 若DML语句的执行计划涉及到了多个分区,则应尽量利用where条件将查询和更新限制在单个分区,如where 分区键 = 分区键值;
表达式
对于select、update、delete附带的where从句,任何列值与字符串字面值的二元比较操作,如Col =|>|<|>=|<=|!=|<> Value等,都必须将列名放在左边,比较值放在右边;
函数
1. 不支持类型转换类函数;
2. select rds_partition_insert_id()用于获取一个全局唯一的id,可充当表主键等;
最后更新:2016-11-23 16:03:54
上一篇:
DDL语法__用户指南_云数据库 PetaData-阿里云
下一篇:
事务说明__用户指南_云数据库 PetaData-阿里云
构建容器镜像__构建管理_用户指南_容器服务-阿里云
VPC 用户指南__快速入门_表格存储-阿里云
查询APP密钥__应用管理相关接口_API_API 网关-阿里云
分区表输入示例__示例程序_MapReduce_大数据计算服务-阿里云
【图算法】金融风控实验__案例_机器学习-阿里云
更新截图配置__直播流操作接口_API 手册_CDN-阿里云
查看RDS实例详情__实例管理_API 参考_云数据库 RDS 版-阿里云
如何选择合适的域名?__域名注册_注册续费_域名-阿里云
多应用共享公网带宽__最佳实践_用户指南_专有网络 VPC-阿里云
根据标签筛选实例__标签管理_用户指南_云数据库 RDS 版-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云