1. 首页
  2. 技术知识

MySQL ClickHouse不同于SQL的语法介绍

目录

    ClickHouse的JOIN逻辑INSERT SELECT临时表窗口函数单引号和双引号

下面只展示和MySQL或HIVE区别较大的语法

例如ClickHouse建库语法和MySQL几乎1卵样的不予展示

ClickHouse的JOIN逻辑

  1. # 创建左表
  2. CREATE TABLE default.temp_left(
  3.     `a` String COMMENT ‘匹配键’
  4. )ENGINE = MergeTree
  5. ORDER BY (a);
  6. INSERT INTO default.temp_left
  7. SELECT ‘A1’ AS a UNION ALL
  8. SELECT ‘A1’ AS a UNION ALL
  9. SELECT ‘A2’ AS a UNION ALL
  10. SELECT ‘A3’ AS a;
  11. # 创建右表
  12. CREATE TABLE default.temp_right(
  13.     `a` String COMMENT ‘匹配键’,
  14.     `b` Nullable(UInt32),
  15.     `c` UInt32
  16. )ENGINE = MergeTree
  17. ORDER BY (a);
  18. INSERT INTO default.temp_right
  19. SELECT ‘A2’ AS a,9 AS b,8 AS c UNION ALL
  20. SELECT ‘A3’ AS a,9 AS b,8 AS c UNION ALL
  21. SELECT ‘A4’ AS a,9 AS b,8 AS c;
  22. # 左联
  23. SELECT *
  24. FROM default.temp_left le
  25. LEFT JOIN default.temp_right ri ON le.a=ri.a

复制代码 左联测试结果

在右表中,b允许空,a和c冇允许空 左联后,联不上的a是空字符串,联不上的b是NULL,联不上的c是0

INSERT SELECT

  1. INSERT INTO t2
  2. WITH a AS (SELECT * FROM t1)
  3. SELECT * FROM a;

复制代码 和HIVE、MySQL等不一样,ClickHouse的INSERT写在WITH之前

临时表

    当回话结束时,临时表将随会话一起消失临时表仅能用Memory表引擎无法为临时表指定数据库,它是在数据库之外创建的当查询没有指定库,且临时表与另一个表名相同 时,会优先使用临时表

  1. CREATE TEMPORARY TABLE temp_t(`a` String,`b` Int32);
  2. INSERT INTO temp_t VALUES (‘AB’,3),(‘CC’,4);
  3. SELECT * FROM temp_t;
  4. # 结束会话后,临时表不存在

复制代码
窗口函数

  1. CREATE TEMPORARY TABLE sales(
  2. name  String  COMMENT ‘产品’,
  3. city  String  COMMENT ‘城市’,
  4. sale  Int32   COMMENT ‘销量’);
  5. INSERT INTO sales VALUES
  6. (‘椰子’,’佛山’,99),(‘雪梨’,’佛山’,77),(‘苹果’,’佛山’,88),
  7. (‘椰子’,’广州’,80),(‘雪梨’,’广州’,80),(‘苹果’,’广州’,70);

复制代码

  1. SELECT city
  2.       ,groupArray(name) OVER (PARTITION BY city)
  3. FROM sales;

复制代码

  1. SELECT
  2.     city,
  3.     name,
  4.     sale,
  5.     rank() OVER(PARTITION BY city ORDER BY sale DESC)
  6. FROM sales;

复制代码


单引号和双引号

多数情况使用单引号

  1. SELECT “abc”;
  2. # 报错
  3. SELECT ‘abc’;
  4. # 正常查询,返回字符串

复制代码

  1. CREATE TABLE default.temp_t(
  2.   `a` String COMMENT “匹配键”
  3. )ENGINE=Log;
  4. # 字段注释使用双引号报错
  5. CREATE TABLE default.temp_t(
  6.   `a` String COMMENT ‘匹配键’
  7. )ENGINE=Log;
  8. # 正常建表

复制代码 到此这篇关于MySQL ClickHouse不同于SQL的语法介绍的文章就介绍到这了,更多相关MySQL ClickHouse内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/118642.html

联系我们