阿里云-云数据库OceanBase-SQL参考-D 下载本文

云数据库 OceanBase

SQL语法参考

云数据库 OceanBase/SQL语法参考

SQL语法参考

OceanBase SQL 快速概览

OceanBase支持SQL 92与兼容MySQL, 原则上只要是MySQL的语法,OceanBase都能运行,本节列出一些尚不支持的功能以及需要注意的地方。

尚不支持的功能

- 不支持可更新视图、存储过程、触发器、游标; - 不支持用户自定义数据类型、自定义函数;

- 不支持某些数据类型,比如不支持blob、text、enum、set。 - 不支持临时表。

- 分区表不支持range分区,不支持子分区,不支持分区管理。 - 不支持load data。

- 不支持select ... into。

- 不支类似IF,WHILE等流程控制类语句;不支持类似BEGIN…END,LOOP...END LOOP,REPEAT...UNTIL...END REPEAT, WHILE...DO...END WHILE等复合语句。

- 不支持INSERT/REPLACE语句中的带SELECT子句的修改,不支持DELETE语句多表删除,不支持UPDATE多表更新。

- SELECT…FOR UPDATE只支持单表查询。 - 某些函数不支持,具体支持函数请参考函数章节。 - 不支持alter add column before|after。

- 不支持某些列类型的变更,比如从varchar变更为int。

需要注意的点

- 如果你的表使用了分区,则有可能被分布到多台单独的物理机上(目前公测规格不会)。 - insert/update/delete单条语句不能跨分区,如果有跨分区的需求,需要写成事务。 - 一般来说,select需要带上分区键。

- 不支持prepare, OceanBase不需要你使用prepare。 - 字符集目前只支持utf8和utf8mb4。

1

云数据库 OceanBase/SQL语法参考

OceanBase SQL简介

语言结构

OceanBase SQL语句中涉及以下元素:

- 字符串和数字等文字值; - 识别符,例如表名和列名; - 用户和系统变量; - 注释和保留字等。

文字值

文字值包括字符串、数值、日期、时间、十六进制、布尔值和NULL。

字符串使用单引号(')或双引号(\)引起来的字符序列。如果OceanBase SQL模式启用了ANSI_QUOTES,表示只用单引号引用字符串,用双引号引用的字符串被解释为一个识别符。

在字符串中,某些序列具有特殊含义。这些序列均用反斜线('\\')开始,即所谓的转义字符。转义字 符对大小写敏感。

OceanBase识别的转义字符如下表所示。

转义字符 \\b \\f \\n \\r \\t \\\\ \\' \\\ \\_ \\% \\0 \\Z 含义 退格符 换页符 换行符 回车符 tab字符 反斜线字符 单引号 双引号 _字符 %字符 空字符(NULL) ASCII 26(控制(Ctrl)-Z)

2