clickhouse系列之二-SQL语法

SQL与Ch数据库:注释、关键字与语法特性
本文介绍了Ch数据库支持的SQL风格和C语言风格的注释,以及关键字的大小写规则。强调了在特定上下文中,如何使用和关键字相同的名字。同时,讲解了变量的表示方式、数据输出格式如JSON,并提及了函数调用、运算符解析以及表达式别名的使用方法。

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

### 使用方法 `clickhouse-client --user 用户名 --password 密码 --multiquery < ads.sql` 命令用于让 ClickHouse 客户端以指定用户身份连接到 ClickHouse 服务器,并执行 `ads.sql` 文件中的多条 SQL 语句。 - `--user 用户名`:指定连接到 ClickHouse 服务器时使用的用户名。 - `--password 密码`:指定该用户对应的密码。 - `--multiquery`:允许在一个请求中执行多条 SQL 语句,这些语句通常以分号分隔。 - `< ads.sql`:将 `ads.sql` 文件的内容作为输入传递给 `clickhouse-client`。 示例:假设用户名为 `admin`,密码为 `password123`,要执行的 SQL 脚本为 `ads.sql`,则命令如下: ```bash clickhouse-client --user admin --password password123 --multiquery < ads.sql ``` ### 注意事项 - **权限问题**:确保指定的用户具有执行 `ads.sql` 中 SQL 语句的权限。例如,如果脚本中包含创建表、删除数据库等操作,用户需要有相应的权限。 - **密码安全**:在命令行中直接输入密码可能存在安全风险,尤其是在多人使用的环境中。可以考虑使用环境变量来存储密码,避免密码明文显示。 ```bash export CLICKHOUSE_PASSWORD=password123 clickhouse-client --user admin --password $CLICKHOUSE_PASSWORD --multiquery < ads.sql ``` - **SQL 语法**:`ads.sql` 中的 SQL 语句必须符合 ClickHouseSQL 语法规则。不同版本的 ClickHouse 可能对 SQL 语法有细微的差异,需要确保脚本与当前使用的 ClickHouse 版本兼容。 - **错误处理**:如果 `ads.sql` 中的某条 SQL 语句执行失败,整个脚本的执行可能会中断。可以在脚本中添加适当的错误处理逻辑,或者在执行脚本后查看错误日志来定位问题。 - **文件编码**:确保 `ads.sql` 文件的编码格式与 ClickHouse 客户端所使用的编码格式一致,避免出现乱码问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值