当前位置: 首页 > news >正文

ClickHouse(十九):Clickhouse SQL DDL操作-1

 

 进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!

🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客

📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


目录

1. 创建库

2. 查看数据库

​​​​​​​​​​​​​​3. 删除库

​​​​​​​4. 创建表

​​​​​​​​​​​​​​5. 查看表

​​​​​​​​​​​​​​6. 查看表的定义

​​​​​​​8. 删除表

​​​​​​​9. 修改表

​​​​​​​9.1 添加列

​​​​​​​9.2 删除列

​​​​​​​9.3 清空列

​​​​​​​9.4 给列修改注释

​​​​​​​9.5 修改列类型

​​​​​​​10. 给表重命名

10.1 给表重命名语法

10.2 示例


DDL:Data Definition Language,数据库定义语言。在ClickHouse中,DDL语言中修改表结构仅支持Merge表引擎、Distributed表引擎及MergeTree家族的表引擎,SQL 中的库、表、字段严格区分大小写。

​​​​​​​1. 创建库

  • 创建库基础语法:
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

2. 查看数据库

  • 查看数据库语法
SHOW DATABASES;

​​​​​​​​​​​​​​3. 删除库

  • 删除库基础语法:
DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]
  • 示例:
#创建库 test_dbnode1 :) create database if not exists test_db;CREATE DATABASE IF NOT EXISTS test_dbOk.0 rows in set. Elapsed: 0.007 sec.#删除库node1 :) drop database test_db;DROP DATABASE test_dbOk.0 rows in set. Elapsed: 0.003 sec.

注意:在创建数据库时,在/var/lib/clickhouse/metadata/目录下会有对应的库目录和库.sql文件,库目录中会存入在当前库下建表的信息,xx.sql文件中存入的是建库的信息。如图:

当删除数据库时,/var/lib/clickhouse/metadata/目录下对应的库目录和xx.sql文件也会被清空。

​​​​​​​4. 创建表

创建表的基本语法:

#第一种CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster](name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...) ENGINE = engine#第二种CREATE TABLE [IF NOT EXISTS] [db.]table_name AS [db2.]name2 [ENGINE = engine]#第三种CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = engine AS SELECT ...

注意:以上普通第一种建表语句是直接创建表。第二种创建表方式可以创建一个与db2中name2一样结构的表,也可以指定表引擎,也可以不指定,不指定默认与db2中的name2表引擎一样,不会将表name2中的数据填充到对应的新表中。第三种方式可以指定引擎创建一个与Select 子句的结果相同结构的表,并将Select子句的结果填充它。

  • 示例:
#第一种方式创建表node1 :) create table if not exists newdb.t1(:-] id UInt8 default 0 comment '编号',:-] name String default '无姓名' comment '姓名',:-] age UInt8 default 18 comment '年龄':-] )engine = TinyLog;CREATE TABLE IF NOT EXISTS newdb.t1(`id` UInt8 DEFAULT 0 COMMENT '编号',`name` String DEFAULT '无姓名' COMMENT '姓名',`age` UInt8 DEFAULT 18 COMMENT '年龄')ENGINE = TinyLogOk.0 rows in set. Elapsed: 0.004 sec.# 第二种方式创建表node1 :) create table if not exists t2 engine = Memory as newdb.t_tinylog;CREATE TABLE IF NOT EXISTS t2 AS newdb.t_tinylogENGINE = MemoryOk.0 rows in set. Elapsed: 0.006 sec.# 第三种方式创建表node1 :) create table if not exists t3 engine = Memory as select * from newdb.t_tinylog where id >2;CREATE TABLE IF NOT EXISTS t3ENGINE = Memory ASSELECT *FROM newdb.t_tinylogWHERE id > 2Ok.0 rows in set. Elapsed: 0.010 sec.#查询表t3数据node1 :) select * from t3;SELECT *FROM t3┌─id─┬─name─┬─age─┐│  3 │ 王五   │  20 │└────┴──────┴─────┘1 rows in set. Elapsed: 0.004 sec.

​​​​​​​​​​​​​​5. 查看表

  • 查看表语法:
SHOW TABLES;SHOW TABLES IN default;

​​​​​​​​​​​​​​6. 查看表的定义

  • 查看表定义语法:
SHOW CREATE TABLE XXX;
  • 示例:
#查看表定义node1 :) show create table t3;SHOW CREATE TABLE t3┌─statement─────────────────────────────────┐│ CREATE TABLE newdb.t3(`id` UInt8,`Name` String)ENGINE = TinyLog │└───────────────────────────────────────────┘1 rows in set. Elapsed: 0.002 sec.

​​​​​​​7. 查看表的字段

  • 查看表定义语法:
DESC XXXX;
  • 示例:
#查看表t3的字段node1 :) desc t3;DESCRIBE TABLE t3┌─name─┬─type───┬─default_type─┬─...│ id   │ UInt8  │              │  ...│ Name │ String │              │  ...└──────┴────────┴──────────────┴──...2 rows in set. Elapsed: 0.004 sec.

​​​​​​​8. 删除表

  • 删除表的基本语法:
DROP [TEMPORARY] TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]
  • 示例:
#删除表node1 :) drop table t3;DROP TABLE t3Ok.0 rows in set. Elapsed: 0.003 sec.

​​​​​​​9. 修改表

  • 修改表语法
ALTER TABLE [db].name [ON CLUSTER cluster] ADD|DROP|CLEAR|COMMENT|MODIFY COLUMN ...

​​​​​​​9.1 添加列

  • 示例:
#使用default 库,创建表 test1,使用MergeTree引擎node1 :) use default;node1 :) create table test1(id UInt8,name String)engine = MergeTree() order by id partition by name;CREATE TABLE test1(`id` UInt8,`name` String,`loc` String)ENGINE = MergeTree()PARTITION BY locORDER BY idOk.0 rows in set. Elapsed: 0.005 sec.Ok.#查看表test1表结构node1 :) desc test1;DESCRIBE TABLE test1┌─name─┬─type───┬...│ id   │ UInt8  │...│ name │ String │...│ loc  │ String │...└──────┴────────┴...3 rows in set. Elapsed: 0.004 sec.#添加表字段node1 :) alter table test1 add column age UInt8;#查看表结构,添加字段成功node1 :) desc test1;DESCRIBE TABLE test1┌─name─┬─type───┬...│ id      │ UInt8     │...│ name    │ String   │...│ loc     │ String   │...│ age     │ UInt8    │...└─────┴─────┴...4 rows in set. Elapsed: 0.003 sec.

​​​​​​​9.2 删除列

  • 示例:
#删除表test1中的name age字段node1 :) alter table test1 drop column age;#查看表 test1表结构node1 :) desc test1;DESCRIBE TABLE test1┌─name─┬─type───┬...│ id   │ UInt8  │...│ name │ String │...│ loc  │ String │...└──────┴────────┴...2 rows in set. Elapsed: 0.004 sec.

​​​​​​​9.3 清空列

注意,不能清空排序、主键、分区字段。

  • 示例:
#向表 test1中插入以下几条数据node1 :)  insert into table test1  values (1,'张三','北京'),(2,'李四','上海'),(3,'王五','北京');#查看表中的数据┌─id─┬─name─┬─loc──┐│  1  │ 张三  │ 北京  ││  3  │ 王五  │ 北京  │└────┴──────┴──────┘┌─id─┬─name─┬─loc──┐│  2  │ 李四  │ 上海  │└────┴──────┴──────┘#清空 test1 name列在’北京’分区的值node1 :) alter table test1 clear column name in partition '北京';#查看表中的数据node1 :) select * from test1;┌─id─┬─name─┬─loc──┐│  1 │        │ 北京  ││  3 │        │ 北京  │└────┴──────┴──────┘┌─id─┬─name─┬─loc──┐│  2  │ 李四  │ 上海  │└────┴──────┴──────┘#清空 test1 name 列下的值node1 :) alter table test1 clear column name;#查看表中的数据node1 :) select * from test1;┌─id─┬─name─┬─loc──┐│  1   │         │ 北京     ││  3   │         │ 北京     │└───┴────┴─────┘┌─id─┬─name─┬─loc──┐│  2   │         │ 上海    │└───┴─────┴────┘

​​​​​​​9.4 给列修改注释

  • 示例:
#修改表 test1 name 列的注释node1 :) alter table test1 comment column name '姓名';#查看表 test1描述┌─name─┬─type───┬─default_type─┬─default_expression─┬─comment─┬...│ id    │ UInt8  │                │                         │           │...│ name │ String │                │                         │ 姓名      │...│ loc   │ String │                │                        │           │...└──────┴────────┴──────────────┴────────────────────┴─────────┴...
  • ​​​​​​​9.5 修改列类型

  • 示例:
#修改表 test1 name列类型为UInt8node1 :) alter table test1 modify column name UInt8#node1 :) desc test1;┌─name─┬─type───┬─default_type─┬─default_expression─┬─comment─┬│ id    │ UInt8  │                 │                        │           ││ name │ UInt8   │                │                        │ 姓名      ││ loc   │ String │                │                        │           │└──────┴────────┴──────────────┴────────────────────┴─────────┴

​​​​​​​10. 给表重命名

给表重新命名可以作用在任意的表引擎上。

10.1 给表重命名语法

RENAME TABLE [db11.]name11 TO [db12.]name12, [db21.]name21 TO [db22.]name22, ... [ON CLUSTER cluster]

10.2 示例

#创建库 testdb1node1 :) create database testdb1;#创建库 testdb2node1 :) create database testdb2;#使用库testdb1,并创建表 t1node1 :) use testdb1;node1 :) create table t1 (id UInt8 ,name String) engine = MergeTree() order by id ;#将表 t1 重命名为test1node1 :) rename table t1 to test1;#将表test1 移动到testdb2库下,并重新命名为t2, testdb1 下没有表了node1 :) rename table testdb1.test1 to testdb2.t2;

👨‍💻如需博文中的资料请私信博主。


相关文章:

ClickHouse(十九):Clickhouse SQL DDL操作-1

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…...

小程序保留2位小数据,不四舍五入

方法1: parseInt toFixed /* * 保留2位小数,不四舍五入 * 5.992550 >5.99 , 2 > 2.00 * */ const toFixed2Decimal (value) > {return (parseInt(value*100)/100).toFixed(2) } console.log(587.67*100) console.log(toFixed2Decimal(587.67…...

【linux-nginx】nginx限流以及控制访问方法

一、限流 可以使用一些模块和指令来实现限流。以下是一些常用的方法: 使用 ngx_http_limit_req_module 模块:该模块可以限制每个客户端的请求速率。你可以在 Nginx 的配置文件中启用该模块,并使用 limit_req_zone 指令来定义限流规则。例如…...

菜单和内容滚动的联动原理及代码

之前写代码有个需求:左侧是一个菜单,右边是内容,点击左侧菜单右边内容滚动到对应位置,右边内容滚动到某位置时,左侧菜单也会选中对应的菜单项。UI如下:这是大多网站的移动端都会有的需求。 解决方案一&…...

Python爬虫:单线程、多线程、多进程

前言 在使用爬虫爬取数据的时候,当需要爬取的数据量比较大,且急需很快获取到数据的时候,可以考虑将单线程的爬虫写成多线程的爬虫。下面来学习一些它的基础知识和代码编写方法。 一、进程和线程 进程可以理解为是正在运行的程序的实例。进…...

超强的Everything,吊打系统自带文件搜索功能!

目录 一、软件简介 二、软件下载 三、软件说明 一、软件简介 Everything是一款由David OReilly开发的电脑搜索软件,它可以帮助用户快速找到电脑上的文件和文件夹。与其他搜索工具不同的是,Everything使用了一种非常快速和高效的搜索算法&#xff0c…...

flink配置参数

flink-conf.yaml 基础配置 # jobManager 的IP地址jobmanager.rpc.address: localhost# JobManager 的端口号jobmanager.rpc.port: 6123# JobManager JVM heap 内存大小jobmanager.heap.size: 1024m# TaskManager JVM heap 内存大小taskmanager.heap.size: 1024m# 每个 TaskMan…...

学习Vue:安装Vue.js和设置开发环境

当您决定进入现代前端开发的世界,Vue.js 无疑是一个令人激动的选择。它以其简洁、灵活和高效的特点在开发者社区中备受赞誉。本文将为您详细介绍如何安装 Vue.js 并设置开发环境,让您能够迅速开始编写 Vue 应用程序。 步骤1:安装 Node.js 和 …...

代理技术在网络安全、爬虫和数据隐私中的多重应用

1. Socks5代理:灵活的数据中转 Socks5代理协议在网络通信中起着关键作用。与其他代理技术不同,Socks5代理不仅支持TCP连接,还能够处理UDP流量,使其在需要实时数据传输的场景中表现尤为出色。通过将请求和响应中转到代理服务器&am…...

Python 3 使用Hadoop 3之MapReduce总结

MapReduce 运行原理 MapReduce简介 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。 MapReduce分成两个部分:Map(映射)和Reduce(归纳)。…...

KU Leuven TU Berlin 推出“RobBERT”,一款荷兰索塔 BERT

荷兰语是大约24万人的第一语言,也是近5万人的第二语言,是继英语和德语之后第三大日耳曼语言。来自比利时鲁汶大学和柏林工业大学的一组研究人员最近推出了基于荷兰RoBERTa的语言模型RobBERT。 谷歌的BERT(来自Transformers的B idirectional …...

Postern中配置和使用Socks5代理指南

在Postern中配置和使用Socks5代理,可以为你的爬虫项目提供更灵活、更可靠的网络连接。本文将向你分享如何在Postern中配置和使用Socks5代理的方法,解决可能遇到的问题 配置和使用Socks5代理的步骤: 1.了解Socks代理:了解Socks5代…...

android 窗口级模糊实现方式

在Android上实现窗口级模糊效果有多种方法,下面列出了其中两种常用的实现方式: RenderScript模糊效果: 使用ScriptIntrinsicBlur类在RenderScript中实现模糊效果。创建一个RenderScript实例并将要模糊的图像传递给它。创建一个ScriptIntrinsi…...

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素,我们往往想到就是先给数组…...

HTTP2协议介绍

前言 HTTP是现代互联网通信的基础协议之一,早在1991年,HTTP/0.9版本就诞生了,之后又陆续发布了HTTP/1.0和HTTP/1.1,为互联网应用提供了更高效和可靠的通信方式。 随着时间的推移,互联网的规模和复杂性不断扩大&#x…...

矩阵的转置

题目: 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]]class Solution(object):def transpose(self, matrix):"&q…...

web集群学习:nginx+keepalived实现负载均衡高可用性

目录 项目架构 一,环境介绍 二,项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控(1>通过killall命令探测服务运行状态) 通过vrrp_script实现对集群资源…...

MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术

文章目录 CView类的分支CEditViewCHtmlViewMainFrm.h CMainFrame 类的接口CMainView .h CListCtrl与CListView的创建原理 CTreeViewCTreeCtrl类简介CTreeCtrl类的原理以及常用功能 MFC六大关键技术视图和带分割栏的框架开发与消息路由CLeftView.cppCRightView.hCRightView.cppC…...

SpringBoot复习:(37)自定义ErrorController

所有接口统一返回的数据格式 package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code code;}public S…...

Linux学习之防火墙概述

防火墙分类: 软件防火墙:常用于数据包的过滤,比如限制某些ip或者端口,进行某些数据的转发或者传送 硬件防火墙:防御地域攻击 软件防火墙的分类: 包过滤防火墙:控制比较宽泛,防御效果…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...