好文档 - 专业文书写作范文服务资料分享网站

阿里云-云数据库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

云数据库 OceanBase/SQL语法参考

数值可以分为精确数值(整数和定点数值)和浮点数值。数值可以使用.作为十进制间隔符。数值也可 以在前面加一个-来表示负值。

日期值可以有多种形式,例如单引号字符串或数值。例如:'2015-07-21','20150721'和20150721。

十六进制值。在数字上下文中,十六进制数如同整数(64位精度)。在字符串上下文,如果有二进制 字符串,每对二进制数字被转换为一个字符。

布尔值,常量TRUE等于1,常量FALSE等于0。常量名可以写成大写或小写。

NULL值表示\没有数据\。NULL可以写成大写或小写。请注意NULL值不同于数值类型的0或字符串类 型的空字符串。

识别符

OceanBase1.0 SQL语句中的租户、数据库、表、视图、索引、表格组、列名和别名等Schema对象名称之为识别符。

OceanBase识别符的最大长度和允许的字符,如下表所示。 识别符 最大长度(字节) 16 允许的字符 大小写英文字母,数字和下划线 ,而且必须以字母或下划线开头 ,并且不能OceanBase的关键字。 大小写英文字母,数字和下划线 ,而且必须以字母或下划线开头 ,并且不能OceanBase的关键字。 大小写英文字母,数字和下划线 ,'$'组成。 大小写英文字母,数字和下划线 ,而且必须以字母或下划线开头 ,并且不能OceanBase的关键字。 大小写英文字母,数字和下划线 ,'$'组成。 大小写英文字母,数字和下划线 ,'$'组成。 大小写英文字母,数字和下划线 ,'$'组成。 大小写英文字母,数字和下划线 ,'$'组成。 用户名 租户 64 数据库 64 表组 64 表 列 索引 别名 64 64 64 255

3

云数据库 OceanBase/SQL语法参考

变量

64 文字数字字符、'.'、'_'和'$'组成 。 注:除了表内注明的限制,识别符不可以包含ASCII 0或值为255的字节。数据库、表和列名不应以空格结尾。在识别符中尽管可以使用引号识别符,应尽可能避免这样使用。 识别符可以用引用符引起来也可以不引起来。如果识别符是一个保留字或包含特殊字符,无论何时使用,必须 将它引起来。OceanBase识别符的引用符是反引号(` )。如果服务器模式包括ANSI_QUOTES模式选项,还可以用双引号将识别符引起来。 例如:

Oceanbase>create table `add`(id int, `select` int); Query OK, 0 rows affected (0.11 sec)

Oceanbase> create table \

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\

Oceanbase> set sql_mode='ANSI_QUOTES'; Query OK, 0 rows affected (0.00 sec)

Oceanbase> create table \Query OK, 0 rows affected (0.12 sec)

识别符引用

OceanBase允许使用由单个识别符或多个识别符组成的名字。多个识别符之间以句点(.)间隔开。在OceanBase中可以引用下面形式的列:

列参考 col_name tbl_name.col_name db_name.tbl_name.col_name

含义 列col_name,查询中使用的表包含有此名字的列 。 默认数据库中的表tbl_name的列col_name。 数据库db_name中的表tbl_name的列 col_name。 如果多部分名的组件需要引用,应分别将它们引起来而不要将整个名引起来。例如,'my-tables'.'my-column' 有效,而'my-tables.my-column'无效。

不需要在语句中为列指定tbl_name或db_name.tbl_name前缀,除非列不确定。如表t1和t2各包含一个列 c,你使用SELECT语句在t1和t2中搜索c。在这种情况下,c不确定,因为它在语句中使用的表内不唯一。你必 须用表名t1.c或t2.c限定它,表示指哪个表。同样,要想用同一语句搜索数据库db1中的表t和数据库db2中的表t,你必须将那些表中的列指为db1.t.col_name和db2.t.col_name。

限定名中句点后面的字必须为一个识别符,因此不需要将它引起来,即使是一个保留字。

4

阿里云-云数据库OceanBase-SQL参考-D

云数据库OceanBaseSQL语法参考云数据库OceanBase/SQL语法参考SQL语法参考OceanBaseSQL快速概览OceanBase支持SQL92与兼容MySQL,原则上只要是MySQL的语法,OceanBase都能
推荐度:
点击下载文档文档为doc格式
3l0ls06r2c7916095eiv3gyk618jli007y8
领取福利

微信扫码领取福利

微信扫码分享