翼度科技»论坛 编程开发 mysql 查看内容

MySQL ClickHouse不同于SQL的语法介绍

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
下面只展示和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
复制代码
左联测试结果

在右表中,
  1. b
复制代码
允许空,
  1. a
复制代码
  1. c
复制代码
冇允许空 左联后,联不上的
  1. a
复制代码
是空字符串,联不上的
  1. b
复制代码
  1. NULL
复制代码
,联不上的
  1. c
复制代码
是0

INSERT SELECT
  1. INSERT INTO t2
  2. WITH a AS (SELECT * FROM t1)
  3. SELECT * FROM a;
复制代码
和HIVE、MySQL等不一样,ClickHouse的
  1. INSERT
复制代码
写在
  1. 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/266466.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具