1. 注释
ch支持SQL风格和c语言风格的注释:
- sql 风格的注释以--开头,直到行末;
- c语言风格的注释以/*开头 ,*/ 结束;
2. 关键字
以下情况关键字是大小写不敏感的:
- 标准SQL,例如SELECT ,select 都是允许的;
- 在某些流行的RDBMS中被实现的关键字,例如,DateTime 和 datetime是一样的;
以下sql可查询哪些类型关键字不区分大小写;
SELECT * FROM system.data_type_families
其他的关键字是区分大小写的,比如函数名等;另外关键字不是被保留的,仅在相应的上下文才会被处理,如果要使用和关键字相同的变量名,需要用双引号或转义符引起来,例如:
select "from" from aaa; -- 合法
3. 变量
变量名可以用反引号包括起来;例如a
;
4. 输入输出数据格式
ch支持多种数据格式:例如: json(只支持输出)、csv、avro、xml(只支持输出);
例如json输出格式:
SELECT * FROM system.data_type_families FORMAT JSON
{
"meta":
[
{
"name": "name",
"type": "String"
},
{
"name": "case_insensitive",
"type": "UInt8"
},
{
"name": "alias_to",
"type": "String"
}
],
"data":
[
{
"name": "Polygon",
"case_insensitive": 0,
"alias_to": ""
},
{
"name": "Ring",
"case_insensitive": 0,
"alias_to": ""
},
{
"name": "MultiPolygon",
"case_insensitive": 0,
"alias_to": ""
},
{
"name": "IPv6",
"case_insensitive": 0,
"alias_to": ""
},
{
....
}
}
详细可参考:输入输出数据格式
5. 函数
函数调用时圆括号必须写,及时没有参数;例如 now();
6. 运算符
在查询解析阶段,运算符会被解析成对应的函数;例如:1+1 ;解析为 plus(1,1);
7. 表达式别名
支持表达式别名;例如 expr as alias