本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊Keyspaces 中的 Cassandra 查询语言 (CQL) 元素
了解亚马逊Keyspaces 支持的卡桑德拉查询语言 (CQL) 元素,包括标识符、常量、术语和数据类型。
标识符
标识符(或名称)用于标识表、列和其他对象。标识符可以带引号,也可以不带引号。以下情况将适用。
identifier ::= unquoted_identifier | quoted_identifier unquoted_identifier ::= re('[a-zA-Z][a-zA-Z0-9_]*') quoted_identifier ::= '"' (any character where " can appear if doubled)+ '"'
常量
定义以下常量。
constant ::= string | integer | float | boolean | uuid | blob | NULL string ::= '\'' (any character where ' can appear if doubled)+ '\'' '$$' (any character other than '$$') '$$' integer ::= re('-?[0-9]+') float ::= re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY boolean ::= TRUE | FALSE uuid ::= hex{8}-hex{4}-hex{4}-hex{4}-hex{12} hex ::= re("[0-9a-fA-F]") blob ::= '0' ('x' | 'X') hex+
条款
术语表示受支持的值的类型。术语由以下内容定义。
term ::= constant | literal | function_call | arithmetic_operation | type_hint | bind_marker literal ::= collection_literal | tuple_literal function_call ::= identifier '(' [ term (',' term)* ] ')' arithmetic_operation ::= '-' term | term ('+' | '-' | '*' | '/' | '%') term
数据类型
Amazon Keyspaces 支持以下数据类型。
字符串类型
| 数据类型 | 描述 |
|---|---|
|
|
表示 ASCII 字符串。 |
|
|
表示 UTF-8 编码的字符串。 |
|
|
表示 UTF-8 编码的字符串( |
数字类型
| 数据类型 | 描述 |
|---|---|
|
|
表示 64 位有符号长整型。 |
|
|
表示 64 位有符号整数计数器。有关更多信息,请参阅 计数器。 |
|
|
表示可变精度小数。 |
|
|
表示 64 位 IEEE 754 浮点。 |
|
|
表示 32 位 IEEE 754 浮点。 |
|
|
表示 32 位有符号整数。 |
|
|
表示任意精度的整数。 |
计数器
counter 列包含 64 位有符号整数。计数器值通过 更新 语句进行递增或递减,并且无法直接设置。这使得 counter 列对于跟踪计数很有用。例如,您可以使用计数器来跟踪日志文件中的条目数或某个社交网络上的文章被查看的次数。以下限制适用于 counter 列:
-
类型
counter的列不能是表的primary key的一部分。 -
在包含一个或多个类型
counter的列的表中,所有列的类型都必须为counter。
如果计数器更新失败(例如,由于超时或与 Amazon Keyspaces 的连接中断),客户端不知道计数器值是否已更新。如果重试更新,则可能会再次应用对计数器值的更新。
Blob 类型
| 数据类型 | 描述 |
|---|---|
|
|
表示任意字节。 |
布尔值类型
| 数据类型 | 描述 |
|---|---|
|
|
表示 true 或 false。 |
与时间相关的类型
| 数据类型 | 描述 |
|---|---|
|
|
表示时间戳。 |
|
|
表示版本 1 UUID |
集合类型
| 数据类型 | 描述 |
|---|---|
|
|
表示文本元素的有序集合。 |
|
|
表示键/值对的无序集合。 |
|
|
表示一个或多个文本元素的无序集合。 |
|
|
表示文本元素的有界组。 |
其他类型
| 数据类型 | 描述 |
|---|---|
|
|
一个表示 IPv4 或 IPv6 格式的 IP 地址的字符串。 |
亚马逊Keyspaces 数据类型的 JSON 编码
亚马逊 Keyspaces 提供与 Apache Cassandra 相同的 JSON 数据类型映射。下表介绍Amazon Keyspaces 接受的数据类型INSERT JSON语句以及 Amazon Keyspaces 在返回数据时使用的数据类型SELECT JSON语句。
对于单字段数据类型,例如float,int,UUID,以及date,你也可以将数据作为string. 用于复合数据类型和集合,例如tuple,map,以及list,你也可以以 JSON 或编码形式插入数据JSON string.
| JSON 数据类型 | 在以下版本中受理的数据类型:INSERT JSON声明 |
返回的数据类型SELECT JSON声明 |
注意 |
|---|---|---|---|
|
|
string |
string |
使用 JSON 字符转义 |
|
|
integer, string |
integer |
字符串必须是有效的 64 位整数。 |
|
|
string |
string |
字符串应以开头 |
|
|
boolean, string |
boolean |
字符串必须是其中之一 |
|
|
string |
string |
格式化日期 |
|
|
integer, float, string |
float |
在客户端解码器中可以超过 32 位或 64 位 IEEE-754 浮点精度。 |
|
|
integer, float, string |
float |
字符串必须是有效的整数或浮点数。 |
|
|
integer, float, string |
float |
字符串必须是有效的整数或浮点数。 |
|
|
string |
string |
IPv4 或 IPv6 地址。 |
|
|
integer, string |
integer |
字符串必须是有效的 32 位整数。 |
|
|
list, string |
list |
使用原生 JSON 列表表示形式。 |
|
|
map, string |
map |
使用原生 JSON 地图表示法。 |
|
|
integer, string |
integer |
字符串必须是有效的 16 位整数。 |
|
|
list, string |
list |
使用原生 JSON 列表表示形式。 |
|
|
string |
string |
使用 JSON 字符转义 |
|
|
string |
string |
Time of day day |
|
|
integer, string |
string |
时间戳。字符串常量允许您将时间戳存储为日期。带格式的日期戳 |
|
|
string |
string |
键入 1 UUID。请参阅constants用于 UUID 格式。 |
|
|
integer, string |
integer |
字符串必须是有效的 8 位整数。 |
|
|
list, string |
list |
使用原生 JSON 列表表示形式。 |
|
|
string |
string |
请参阅constants用于 UUID 格式。 |
|
|
string |
string |
使用 JSON 字符转义 |
|
|
integer, string |
integer |
可变长度;可能会溢出客户端解码器中的 32 位或 64 位整数。 |