跳转至

语法概述

Aloudata AIR 的SQL语法基于Presto语法进行扩展。本文按照 AIR 的功能介绍AIR扩展的SQL语法和相关使用场景。为了避免歧义,本文对SQL语法模板中出现的特殊符号进行了解释。

符号 类型 说明
[ xxx ] 可选字段 表示该部分的语法是可选的。
(aaa | bbb | ccc) 可选字段 表示该部分的内容为N选1,选择的内容只能为aaa,bbbccc
< xxx > 标识符 该部分的内容是用户指定的标识符名,如集群名、表名、连接名等。注意:如果命名中包含特殊字符($-#*^等)或保留关键字,需要用"xxx"表示,否则会出现解析出错的问题。
' xxx ' 字符串 该部分为字符串,该部分的内容不需要对特殊字符或保留关键字进行处理。
{ xxx } SQL片段 该部分为可以正确解析的SQL片段。如子查询的查询语句。

特殊字符包含但不限于:$, @, -, 数字,%, #, ~, ` , ^,& , *, + ,>, < , =

保留关键字

[警告]创建表名应尽量避免使用关键字,否则会出现SQL解析出错或其他未知的问题。除了Presto 中保留的关键字,Aloudata AIR新扩展了一些关键字。关键字如下:DEFAULT , SHOW , CREATE, ALTER, DELETE, DROP, INTERSCHEMA, CATALOG, TABLE, REFRESH, PROJECTION,INTERNAL, CLUSTER, METERIALIZATION

数据类型

类型名称 功能说明 备注
BOOLEAN 布尔变量,包含true 或者 false两种类型的值。
INTEGER TINYINT ( -2^7 ~ 2^7 - 1 ) 1Byte 8-bit位的整数变量,范围从-2^7 到 2^7 - 1。
SMALLINT (-2^15 ~ 2^15 - 1) 2Bytes 16-bit位的整数变量,范围从-2^15 到 2^15 - 1。
INTEGER (-2^31 ~ 2^31 -1 ) 4Bytes 32-bit位的整数变量,范围从-2^31 到 2^31 - 1。
BIGINT ( -2^63 ~ 2^63 - 1 ) 8Bytes 64-bit位的整数变量,范围从-2^63 到 2^63 - 1。
Floating-Point REAL 4Bytes 实数是一种32位的不精确、可变精度的实现,符合IEEE 754标准二进制浮点算术。
DOUBLE 8Bytes 双精度浮点数是一种64位的不精确、可变精度的实现,符合IEEE 754标准二进制浮点算术。
Fixed-Precision DECIMAL 一个固定精度的小数。支持最多38位的精度,性能在最多18位时最佳。接受两个字面量参数:精度 - 总位数小数位数 - 小数部分的位数。小数位数是可选的,默认为0。示例,类型定义:DECIMAL(10,3), DECIMAL(20)示例,字面量:DECIMAL '10.3', DECIMAL '1234567890', 1.1
String VARCHAR 可变长度的字符数据,设置可变的最大长度。示例类型定义:varchar, varchar(20)。SQL支持简单和Unicode字符串字面量:字面字符串:'Hello winter !',带默认转义字符的Unicode字符串:U&'Hello winter \2603 !',带自定义转义字符的Unicode字符串:U&'Hello winter #2603 !' UESCAPE '#'。Unicode字符串以U&为前缀,并且在使用4位数字的Unicode字符之前需要一个转义字符。在这些示例中,\2603和#2603表示一个雪人字符。需要6位数字的长Unicode代码之前需要一个加号+。例如,使用+01F600表示一个笑脸表情符号。在字符串字面量中,单引号可以通过使用另一个单引号来转义:'It''s a beautiful day!'
CHAR 固定长度的字符数据。如果没有指定长度,CHAR类型默认长度为1。CHAR(x)值总是有x个字符。例如,将字符串"dog"转换为CHAR(7)会在末尾添加4个隐式空格。在CHAR值的比较中,包括前导和尾随空格。因此,长度不同的两个字符值(CHAR(x)和CHAR(y),其中x不等于y)永远不会相等,但是这样的值的比较会隐式地将类型转换为相同的长度,并用空格填充,以便以下查询返回真:SELECT CAST('example' AS CHAR(20)) = CAST('example ' AS CHAR(25));与VARCHAR一样,在CHAR字面量中,单引号可以通过使用另一个单引号来转义:SELECT CHAR 'All right, Mr. DeMille, I''m ready for my close-up.';
VARBINARY VARBINARY 可变长度的二进制数据
Date and Time DATE 日期类型(年,月,日)。示例:DATE '2001-08-22'
TIMESTAMP 包含日期和一天时间,不包含时区。这种类型的值在会话时区中解析和呈现。示例:TIMESTAMP '2001-08-22 03:04:05.321'
Structural ARRAY 给定类型的数组。ARRAY<> 里面支持类型:BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、VARCHAR、CHAR、TIMESTAMP、DATE