热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3.ClickHouse系列之SQL操作

首先我们建表,表引擎我们后续文章在详细介绍,我们首先了解下基本SQL语法CREATEDATABASEstudy;CREATETABLEstudy.customer(idUInt8,

首先我们建表,表引擎我们后续文章在详细介绍,我们首先了解下基本SQL语法

CREATE DATABASE study;
CREATE TABLE study.customer (
id UInt8,
city String,
name String,
score Float32,
sex Enum8('男' = 1, '女' = 0),
create_date DateTime
) ENGINE=MergeTree() ORDER BY city

1. Insert操作

对于clickhouse在插入时一般大批量数据插入,演示仅仅插入几条数据

INSERT INTO study.customer VALUES (1, '临沂', '张三', 99.8, '男', '2022-09-29'),
(2, '上海', '李四', 97.8, '男', '2022-09-29'),
(3, '武汉', '小花', 95.8, '女', '2022-09-29')
SELECT * FROM study.customer

2. Update与Delete操作

不建议对clickhouse中数据进行更新与删除操作,即使做也尽量大批量操作,如操作某一城市数据

ALTER TABLE study.customer DELETE WHERE city='武汉';
ALTER TABLE study.customer UPDATE score=99 WHERE id=1;

由于操作比较,所以Mutation语句分两步进行,同步进行的部分是进行新增数据新增分区和并把旧分区打上逻辑上的失效标识。直到触发分区合并的时候,才会删除旧数据释放磁盘空间。


3. rollup cube totals

ALTER TABLE study.customer DELETE WHERE id=id;
INSERT INTO study.customer VALUES (1, '临沂', '张三', 99.8, '男', '2022-09-29'),
(2, '上海', '李四', 97.8, '男', '2022-09-29'),
(3, '武汉', '小花', 95.8, '女', '2022-09-29'),
(4, '临沂', '张三', 96.8, '男', '2022-09-29'),
(5, '上海', '李四', 95.8, '男', '2022-09-29'),
(6, '武汉', '小花', 91.8, '女', '2022-09-29')

SELECT city, name, AVG(score) FROM study.customer GROUP BY city, name WITH ROLLUP;
SELECT city, name, AVG(score) FROM study.customer GROUP BY city, name WITH CUBE;
SELECT city, name, AVG(score) FROM study.customer GROUP BY city, name WITH TOTALS;

结果依次为:

https://img2.php1.cn/3cdc5/3af5/9f3/b3d569bff4743180.png

http://shenjianblog.oss-cn-shanghai.aliyuncs.com/pic/20221002/ee30061ce5de4c278731b7f84e44cb7c-CK2.png

https://img2.php1.cn/3cdc5/3af5/9f3/52f289e0855e1135.png

聪明的你,看出区别的吧


4 Alter操作

# 在字段score后面新增字段rank
ALTER TABLE study.customer ADD COLUMN rank UInt8 after score;
# 修改rank字段类型为String
ALTER TABLE study.customer MODIFY COLUMN rank String;
# 删除字段rank
ALTER TABLE study.customer DROP COLUMN rank;

欢迎关注公众号算法小生或沈健的技术博客



推荐阅读
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
author-avatar
1輩孓莣8鋽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有