一、先提出几个问题

1、  如何复制一个表?

2、  为何增加表列失败?

3、  如何替换表中某列的某个字符串?

二、先看看clickhouse的基本操作

1.    创建数据库CREATE DATABASE

语法:CREATE DATABASE [IF NOT EXISTS] db_name

如果数据库db_name已经存在,则不会创建新的db_name数据库。

2.    创建表CREATE TABLE

语法:

CREATE TABLE [IF NOT EXISTS][db.]table_name [ON CLUSTER cluster]

(name1 [type1] [DEFAULT|MATERIALIZED|ALIASexpr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...) ENGINE = engine

在指定的‘db’数据库中创建一个名为’name’的表,如果查询中没有数据库’db’,则默认使用当前选择的数据库作为’db’。后面的‘()’括号中的内容为表结构及引擎声明。

其中:DEFAULT expr – 默认值,如果INSERT中不包含指定的列,那么将通过表达式计算它的默认值并填充它;

MATERIALIZED expr –物化表达式,被该表达式指定的列不能被INSERT,因为它总是被计算出来的,对于INSERT而言,不需要考虑这些列。 另外,在SELECT查询中如果包含星号,此列不会被查询;

ALIAS expr– 别名,这样的列不会存储在表中。它的值不能够通过INSERT写入,同时使用SELECT查询星号时,这些列也不会被用来替换星号,但是它们可以显示的用于SELECT中,在这种情况下,在查询分析中别名将被替换。

三种方式创建表:

1)     直接创建

语法:CREATE TABLE t1(id UInt16,name String) ENGINE=TinyLog

例如:create table t1(id UInt8,name String,address String)engine=MergeTree order by id

2)创建一个与其他表具有相同结构的表

语法:CREATE TABLE [IF NOT EXISTS] [db.]table_name AS[db2.]name2 [ENGINE = engine]

例如:create table t2 as t1 engine=MergeTree order by id

可以对其指定不同的表引擎声明。如果没有表引擎声明,则创建的表将与db2.name2使用相同的表引擎。

3)使用指定的引擎创建一个与SELECT子句的结果具有相同结构的表,并使用SELECT子句的结果填充它

语法:CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = engine AS SELECT ...

例如:create table t3engine=TinyLog as select * from t1

3.     插入数据INSERT

语法:INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), …

例如:insert into t1 (id,name,address) values(1,'aa','addr1'),(2,'bb','addr2')

也可以使用SELECT结果插入数据,语法:INSERT INTO [db.]table [(c1, c2, c3)] SELECT ...

例如:insert into t2 select *from t1

4.     增加表的列ALTER…ADD

语法:ALTER TABLE [db].name [ONCLUSTER cluster] ADD COLUMN ...

例如:alter table t1 add columnage Int8增加age列类型为Int8

5.     修改表的列ALTER…MODIFY

语法:ALTERTABLE[db].name[ONCLUSTERcluster]MODIFYCOLUMN...

例如:alter table t1 modify

column age String修改age列类型为String

6.    删除列ALTER…DROP

语法:ALTERTABLE[db].name[ONCLUSTERcluster]DROPCOLUMN...

例如:alter table t1 drop column age删除age列

7.    打印数据库/表列表SHOW

打印数据库列表语法:SHOUW DATABASES

打印表列表语法:SHOW TABLES

例如:show tables

8.     查看表结构DESCRIBLE

语法:DESC|DESCRIBETABLE[db.]table[INTOOUTFILEfilename][FORMATformat]

例如:desc t1

9.    删除表

语法:DROP [TEMPORARY] TABLE [IF

EXISTS] [db.]name [ON CLUSTER cluster]

例如:drop table t2

三、来解决先提出的几个问题

1、  如何复制一个表?

以复制demo库的t1表为例,可使用create table if not exists new_t1engine=TinyLog as select * from demo.t1

2、  为何增加表列失败?

以向上问1中增加列(名为hh)为例:alter

table new_t1 add column hh String,结果报错,TinyLog存储类型不支持add column操作。

这是因为clickhouse修改表是通过alter实现的,而TinyLog不支持alter操作,若要使用alter语法,可在建表时使用MergeTree引擎。查看表引擎可通过select engine from system.parts where table=table_name查看,如下:

3、 如何替换表中某列的某个字符串?

例如,替换问1中address列的‘addr’字符串为’no_where’,可使用alter table demo.t1 update address = replace(address,'addr','no_where’)where address is not null;

clickhouse建库_Clickhouse数据库基本操作相关推荐

  1. clickhouse建库_ClickHouse高性能数据库

    前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017年,有1.7亿条. 环境: centos ...

  2. clickhouse建库_专访ClickHouse创始人:数据库竞争依旧火热,技术整合势在必行

    加入「公开课」交流群,获取更多学习资料.课程及热招岗位等信息 翻译|郑天祺 (Amos Bird) 中科院计算所博士 整理 | 夕颜 2000 年以来,随着自互联网和云计算技术变革,数据库技术从底层计 ...

  3. mysql 建表sysdate_mysql数据库基本操作练习

    一.MySQL基本管理 1.使用mysql命令连接数据库. 2.练习查看/删除/创建库的相关操作. 3.练习查看/删除/创建表的相关操作. 实验步骤: 1.使用mysql命令连接数据库 连接MySQL ...

  4. oracle数据库集群采用的是形式,铁道部采用Oracle集群数据库进行TMIS系统“三级建库”...

    综述 铁道部利用Oracle9i集群数据库系统(Oracle9i RAC),顺利开展铁道部运输管理信息系统(TMIS)的"三级建库"工程--在各铁路局和铁路分局利用Oracle9i ...

  5. SQL server数据库手动建库建表建约束,代码建库建表,数据库备份

    目录 一,手动建库 二,sql代码建库 三,手动建表以及建立约束 四,sql代码建表以及建立约束 五,数据库备份 一,手动建库 右键数据库-->新建数据库 填写数据库名称-->确定 如果数 ...

  6. mysql 安装、建库、导入导出数据

    一.安装mysql数据库(如果已经有数据库,跳过这一步) 1. 下载和安装Yum repository 下载地址:https://dev.mysql.com/downloads/repo/yum/ 使 ...

  7. oracle11g建库详解,oracle11g手工建库

    1.设置环境变量 [oracle@HE3~]$ vi .bash_profile exportPATH exportEDITOR=vi exportORACLE_SID=orcl exportORAC ...

  8. mysql 导出建库_mysql 安装、建库、导入导出数据

    一.安装mysql数据库(如果已经有数据库,跳过这一步) 1. 下载和安装Yum repository 使用rpm安装下载的rpm. 2. 安装数据库 如果要安装8.0之前版本,认真阅读: yum i ...

  9. 数据库的基本操作——建库、删库、建表、删表等

    数据库的基本操作--建库.删库.建表.删表等 1.建库 2.建表 3.查询(query) 1.建库 2.建表 按第二个箭头,表的属性就会出来 3.查询(query)

  10. 数据库的实例化操作——员工信息的查询——建库建表录入信息(一)

    数据库的实例化操作--建库建表录入信息. 本文章共分为三部分,通过建立员工部门的信息来熟练掌握数据库的单表查询.多表查询. 员工信息如下: Dept表(部门) Dept部门表结构 字段 类型 描述 d ...

最新文章

  1. 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
  2. Unity降版本的蛋疼操作
  3. fiddler https
  4. LINUX/MAC的rpath,搜索依赖库时从哪里开始
  5. 维纳(Wiener)滤波及Matlab代码
  6. mysql jdbc 5.6_mysql5.6 jdbc驱动官网下载|
  7. 服务器怎么ghost备份系统,最详细的ghost备份系统图解
  8. Air720H模块MQTT协议的AT指令流程
  9. python实现文本分割
  10. 样本均值的特征与分布
  11. 分享台阶价格对比逻辑。(商城中购买数量越多,单价越低)
  12. mac中实用的录音软件有哪些?
  13. 点餐推荐系统_自助点餐、自助收银…智慧餐厅的下一步又会是什么?
  14. 【Leetcode】最长递增子序列问题及应用
  15. 2022第四届长安杯检材一wp
  16. HTML5页面显示本地图片,h5使用FileReader读取本地上传的图片文件并显示到浏览器...
  17. daimadaima
  18. 6、http客户端httpie工具
  19. 剪映字幕导出免费工具简单好用
  20. 【院校信息】2021中国海洋大学计算机考研数据汇总

热门文章

  1. 通达oa php_【通达OA】办公就用通达OA,通达OA官方网站_OA系统_协同办公
  2. php生产环境性能瓶颈分析,使用XHProf分析PHP性能瓶颈(一)
  3. PySide6开发-03-QLineEdit
  4. weka 贝叶斯 java_weka中朴素贝叶斯的实现
  5. Nvidia 驱动的安装和卸载(Ubuntu20.04)
  6. 豪迈HOMAG变频器维修E107544豪迈变频器维修09F5C3B
  7. 中科易安:公安对接流动人口管理智能锁需要联网吗?
  8. 解决Xshell6 Xftp 6 强制更新,无法更新使用问题
  9. python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版v3.5.803 安卓版-腾牛安卓网...
  10. Matlab中批读取DCM文件