云服务器内容精选

  • 字符类型 名称 描述 VARCHAR(n) 变长字符串,n指字节长度。 CHAR(n) 定长字符串,不足补空格。n是指字节长度,如不带精度n,默认为1。 VARBINARY 变长二进制数据。需要带上前缀X,如:X'65683F',暂不支持指定长度的二进制字符串。 JSON 取值可以是a JSON object、a JSON array、a JSON number、a JSON string、true、false or null。 STRING 兼容impala的String,底层是varchar。 BINARY 兼容hive的Binary,底层实现为varbinary。 SQL表达式中,支持简单的字符表达式,也支持Unicode方式,一个Unicode字符串是以U&为固定前缀,以4位数值表示的Unicode前需要加转义符。 -- 字符表达式 select 'hello,winter!'; _col0 ------------------ hello,winter! (1 row) -- Unicode 表达式 select U&'Hello winter \2603 !'; _col0 ------------------ Hello winter ☃ ! (1 row) -- 自定义转义符 select U&'Hello winter #2603 !' UESCAPE '#'; _col0 ------------------ Hello winter ☃ ! (1 row) VARBINARY与BINARY。 -- 创建VARBINARY类型或BINARY类型的表 create table binary_tb(col1 BINARY); -- 插入数据 INSERT INTO binary_tb values (X'63683F'); --查询数据 select * from binary_tb ; -- 63 68 3f 在做CHAR 数值比较的时候,在对两个仅尾部空格数不同的CHAR进行比较时,会认为它们是相等的。 SELECT CAST('FO' AS CHAR(4)) = CAST('FO ' AS CHAR(5)); _col0 ------- true (1 row)
  • 时间和日期类型 时间和日期类型目前精确到毫秒。 表3 时间和日期类型 名称 描述 存储空间 DATE 日期和时间。仅支持ISO 8601格式:'2020-01-01' 32位 TIME 不带时区的时间(时、分、秒、毫秒) 例如:TIME '01:02:03.456' 64位 TIME WITH TIMEZONE 带时区的时间(时、分、秒、毫秒),时区用UTC值表示 例如:TIME '01:02:03.456 -08:00' 96位 TIMESTAMP 时间戳 64位 TIMESTAMP WITH TIMEZONE 带时区的时间戳 64位 INTERVAL YEAR TO MONTH 时间间隔字面量,年,月,格式: SY-M S:可选符号(+/-) Y:年数 M:月数 128位 INTERVAL DAY TO SECOND 时间间隔字面量,日,小时,分钟, 秒,精确到毫秒,格式:SD H:M:S.nnn S:可选符号(+/-) D:天数 M:分钟数 S:秒数 nnn:毫秒数 128位 示例: -- 查询日期 SELECT DATE '2020-07-08'; _col0 ------------ 2020-07-08 (1 row) -- 查询时间 SELECT TIME '23:10:15'; _col0 -------------- 23:10:15 (1 row) SELECT TIME '01:02:03.456 -08:00'; _col0 -------------- 01:02:03.456-08:00 (1 row) -- 时间间隔用法 SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3 12:15:4.111' DAY TO SECOND; _col0 ------------------------- 2015-10-22 11:15:19.111 (1 row) SELECT TIMESTAMP '2015-10-18 23:00:15' + INTERVAL '3-1' YEAR TO MONTH; _col0 ------------------------- 2018-11-18 23:00:15 (1 row) select INTERVAL '3' YEAR + INTERVAL '2' MONTH ; _col0 ------- 3-2 (1 row) select INTERVAL '1' DAY+INTERVAL '2' HOUR +INTERVAL '3' MINUTE +INTERVAL '4' SECOND ; _col0 ---------------- 1 02:03:04.000 (1 row)
  • UUID 标准UUID (Universally Unique IDentifier),也被称为GUID (Globally Unique IDentifier)。 遵从RFC 4122标准所定义的格式。 示例: select UUID '12151fd2-7586-11e9-8f9e-2a86e4085a59'; _col0 -------------------------------------- 12151fd2-7586-11e9-8f9e-2a86e4085a59 (1 row)
  • HYPER LOG LOG 基数统计。 用HyperLogLog来近似计算唯一数的计数值,其代价要远远小于用count来计算。 参见HyperLogLog函数函数。 HyperLogLog A HyperLogLog sketch可以用来高效的计算distinct()的近似值。 它以一个稀疏的表征开始,然后变成一个密集的表征,此时效率将变得更高。 P4HyperLogLog 类似于A HyperLogLog sketch,但是它以一个密集的表征开始。
  • 浮点型 名称 描述 存储空间 取值范围 字面量 REAL 实数 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 REAL DOUBLE 双精度浮点数,15到17个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 64位 4.94065645841246544e-324 ~1.79769313486231570e+308,正或负 DOUBLE FLOAT 单精度浮点数,6到9个有效位,具体取决于使用场景,有效位位数并不取决于小数点位置 32位 1.40129846432481707e-45 ~3.40282346638528860e+38,正或负 FLOAT 用法说明: 分布式查询使用高性能硬件指令进行单精度或者双精度运算时,由于每次执行的顺序不一样,在调用聚合函数,比如SUM(),AVG(),特别是当数据规模非常大时,达到数千万甚至数十亿,其运算结果可能会略有不同。这种情况下,建议使用DECIMAL数据类型来运算。 可以使用别名来指定数据类型。 示例: --创建具有float类型数据的表 CREATE TABLE float_t1 (float_col1 FLOAT) ; --插入具有float类型数据 insert into float_t1 values (float '3.50282346638528862e+38'); --查看数据 SELECT * FROM float_t1; float_col1 ------------ Infinity (1 row) --删除表 DROP TABLE float_t1; 当小数部分为0时,可以通过cast()转为对应范围的整数处理,小数部分会四舍五入。 示例: select CAST(1000.0001 as INT); _col0 ------- 1000 (1 row) select CAST(122.5001 as TINYINT); _col0 ------- 123 (1 row) 使用指数表达式时,可以将字符串转为对应类型。 示例: select CAST(152e-3 as double); _col0 ------- 0.152 (1 row)
  • ROW ROW的字段可是任意所支持的数据类型,也支持各字段数据类型不同的混合方式。 --创建ROW表 create table row_tb (id int,col1 row(a int,b varchar)); --插入ROW类型数据 insert into row_tb values (1,ROW(1,'HetuEngine')); --查询数据 select * from row_tb; id | col1 ----|-------------- 1 | {a=1, b=HetuEngine} --字段是支持命名的,默认情况下,Row的字段是未命名的 select row(1,2e0),CAST(ROW(1, 2e0) AS ROW(x BIGINT, y DOUBLE)); _col0 | _col1 ------------------------|-------------- {1, 2.0} | {x=1, y=2.0} (1 row) --命名后的字段,可以通过域操作符"."访问 select col1.b from row_tb; -- HetuEngine --命名和未命名的字段,都可以通过位置索引来访问,位置索引从1开始,且必须是一个常量 select col1[1] from row_tb; -- 1
  • IPADDRESS IP地址,可以表征IPv4或者IPv6地址。但在系统内,该类型是一个统一的IPv6地址。 对于IPv4的支持,是通过将IPv4映射到IPv6的取值范围(RFC 4291#section-2.5.5.2)来实现的。当创建一个IPv4时,会被映射到IPv6。当格式化时,如果数据是IPv4又会被重新映射为IPv4。 其他的地址则会按照RFC 5952所定义的规范格式来进行格式化。 示例: select IPADDRESS '10.0.0.1', IPADDRESS '2001:db8::1'; _col0 | _col1 ----------|------------- 10.0.0.1 | 2001:db8::1 (1 row)
  • 整数类型 表1 整数类型 名称 描述 存储空间 取值范围 字面量 TINYINT 微整数 8位 -128~127 TINYINT SMALLINT 小整数 16位 -32,768 ~ +32,767 SMALLINT INTEGER 整数 32位 -2,147,483,648 ~ +2,147,483,647 INT BIGINT 大整数 64位 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 BIGINT 示例: --创建具有TINYINT类型数据的表。 CREATE TABLE int_type_t1 (IT_COL1 TINYINT) ; --插入TINYINT类型数据 insert into int_type_t1 values (TINYINT'10'); --查看数据。 SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 DROP TABLE int_type_t1;
  • 固定精度型 名称 描述 存储空间 取值范围 字面量 DECIMAL 固定精度的十进制数。精度最高支持到38位,但精度小于18位能保障性能最好。 Decimal有两个输入参数: precision:总位数,默认38 scale:小数部分的位数,默认0 说明: 如果小数位为零,即十进制(38,0),则支持最高19位精度。 64位 DECIMAL NUMERIC 同DECIMAL 128位 NUMERIC 表2 字面量示例 字面量示例 数据类型 DECIMAL '0' DECIMAL(1) DECIMAL '12345' DECIMAL(5) DECIMAL '0000012345.1234500000' DECIMAL(20, 10) --创建具有DECIMAL类型数据的表 CREATE TABLE decimal_t1 (dec_col1 DECIMAL(10,3)) ; --插入具有DECIMAL类型数据 insert into decimal_t1 values (DECIMAL '5.325'); --查看数据 SELECT * FROM decimal_t1; dec_col1 --------- 5.325 (1 row) --反例:小数位数超出定义长度,sql执行失败 insert into decimal_t1 values (DECIMAL '5.3253'); Query 20201126_034601_00053_tq98i@default@HetuEngine failed: Insert query has mismatched column types: Table: [decimal(10,3)], Query: [decimal(5,4)] --删除表 DROP TABLE decimal_t1; --创建NUMERIC 类型表 CREATE TABLE tb_numberic_hetu(col1 NUMERIC(9,7)); CREATE TABLE --插入数据 INSERT INTO tb_numberic_hetu values(9.12); INSERT: 1 row --查看数据 SELECT * FROM tb_numberic_hetu; col1 ------------ 9.1200000 (1 row)
  • 布尔类型 “真”值的有效文本值是:TRUE、't'、'true'、'1'。 “假”值的有效文本值是:FALSE、'f'、'false'、'0'。 使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。 示例: select BOOLEAN '0'; _col0 ------- false (1 row) select BOOLEAN 'TRUE'; _col0 ------- true (1 row) select BOOLEAN 't'; _col0 ------- true (1 row)
  • HetuEngine预留关键字 表1罗列了系统预留的关键字,以及它们在其他SQL标准中是否为预留关键字。如果需要使用这些关键字作为标识符,请加注双引号。 表1 关键字 Keyword SQL:2016 SQL-92 ALTER reserved reserved AND reserved reserved AS reserved reserved BETWEEN reserved reserved BY reserved reserved CASE reserved reserved CAST reserved reserved CONSTRAINT reserved reserved CREATE reserved reserved CROSS reserved reserved CUBE reserved reserved CURRENT_DATE reserved reserved CURRENT_PATH reserved reserved CURRENT_ROLE reserved reserved CURRENT_TIME reserved reserved CURRENT_TIMESTAMP reserved reserved CURRENT_USER reserved reserved DEALLOCATE reserved reserved DELETE reserved reserved DESCRIBE reserved reserved DISTINCT reserved reserved DROP reserved reserved ELSE reserved reserved END reserved reserved ESCAPE reserved reserved EXCEPT reserved reserved EXECUTE reserved reserved EXISTS reserved reserved EXTRACT reserved reserved FALSE reserved reserved FOR reserved reserved FROM reserved reserved FULL reserved reserved GROUP reserved reserved GROUPING reserved reserved HAVING reserved reserved IN reserved reserved INNER reserved reserved INSERT reserved reserved INTERSECT reserved reserved INTO reserved reserved IS reserved reserved JOIN reserved reserved LEFT reserved reserved LIKE reserved reserved LOCALTIME reserved reserved LOCALTIMESTAMP reserved reserved NATURAL reserved reserved NORMALIZE reserved reserved NOT reserved reserved NULL reserved reserved ON reserved reserved OR reserved reserved ORDER reserved reserved OUTER reserved reserved PREPARE reserved reserved RECURSIVE reserved reserved RIGHT reserved reserved ROLLUP reserved reserved SELECT reserved reserved TABLE reserved reserved THEN reserved reserved TRUE reserved reserved UESCAPE reserved reserved UNION reserved reserved UNNEST reserved reserved USING reserved reserved VALUES reserved reserved WHEN reserved reserved WHERE reserved reserved WITH reserved reserved 父主题: HetuEngine常见SQL语法说明
  • HetuEngine常用数据源语法兼容性说明 语法 Hive MPPDB Elasticsearch HBase HetuEngine(跨域) ClickHouse Hudi MySQL 数据库的show schemas Y Y Y Y Y Y Y Y 数据库的create schema Y Y N Y N N Y N 数据库的use schema Y Y Y Y Y Y Y Y 数据库的alter schema Y N N N N N N N 数据库的drop schema Y Y Y Y N N Y N 表的show tables/show create table/show functions/show session Y Y Y Y Y Y Y Y 表的create Y Y N Y N N N N 表的create table TABLENAME as Y Y Y Y N N N N 表的insert into TABLENAME values Y Y Y Y Y N N N 表的insert into TABLENAME select Y Y Y Y Y N N N 表的insert overwrite TABLENAME values Y N N N N N N N 表的insert overwrite TABLENAME select Y N N N N N N N 表的alter Y Y N N N N N N 表的select Y Y Y Y Y Y Y Y 表的update Y Y Y N N N N N 表的delete Y Y Y Y N N N N 表的drop Y N Y Y Y N N N 表的desc/describe TABLENAME Y Y Y Y Y Y Y Y 表的analyze Y Y Y N N N Y N 表的comment Y N N N N N N N 表的explain Y Y Y Y Y N Y N 表的show stats Y Y Y N N N Y N 表的show columns Y Y Y Y Y Y Y Y 表的select column Y Y Y Y Y Y Y Y 视图的create view Y Y N N N N N N 视图的create or replace view Y N N N N N N N 视图的alter Y N N N N N N N 视图的drop Y N N N N N N N 视图的select Y Y N N Y Y Y Y 视图的desc/describe VIEWNAME Y Y N N Y Y Y Y 视图的show views/show create view Y Y N N N Y Y Y 视图的show columns Y Y Y Y Y Y Y Y 视图的select column Y Y Y Y Y Y Y Y 父主题: HetuEngine常见SQL语法说明