本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Keyspaces 中的 Cassandra 查询语言 (CQL) 元素
了解 Amazon Keyspaces 支持的 Cassandra 查询语言 (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 。 |
与时间相关的类型
数据类型 | 描述 |
---|---|
|
64 位有符号整数,表示自纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来的日期和时间,以毫秒为单位。 |
|
表示版本 1 UUID |
集合类型
数据类型 | 描述 |
---|---|
|
表示文本元素的有序集合。 |
|
表示键/值对的无序集合。 |
|
表示一个或多个文本元素的无序集合。 |
|
表示文本元素的有界组。 |
其他类型
数据类型 | 描述 |
---|---|
|
一个表示 IPv4 或 IPv6 格式的 IP 地址的字符串。 |
Amazon Keyspaces 数据类型的 JSON 编码
Amazon Keyspaces 提供与 Apache Cassandra 相同的 JSON 数据类型映射。下表描述了 Amazon Keyspaces (for) 中接受的数据类型。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 name。 |
|
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 |
Nome table name |
|
integer, string |
string |
时间戳。字符串常量允许您将时间戳存储为日期。带格式的日期戳 |
|
string |
string |
您可以手动应用它。见constants用于 UUID 格式。 |
|
integer, string |
integer |
字符串必须是有效的 8 位整数。 |
|
list, string |
list |
使用原生 JSON 列表表示形式。 |
|
string |
string |
见constants用于 UUID 格式。 |
|
string |
string |
使用 JSON 字符转义 |
|
integer, string |
integer |
长度可变;可能会在客户端解码器中溢出 32 位或 64 位整数。 |