云服务器内容精选

  • 使用示例 --在default数据库和default_cluster集群下创建名为test表 CREATE TABLE default.test ON CLUSTER default_cluster ( `EventDate` DateTime, `id` UInt64 ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/test', '{replica}') PARTITION BY toYYYYMM(EventDate) ORDER BY id
  • 基本语法 方法一:在指定的“database_name”数据库中创建一个名为“table_name ”的表。 如果建表语句中没有包含“database_name”,则默认使用客户端登录时选择的数据库作为数据库名称。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = engine_name() [PARTITION BY expr_list] [ORDER BY expr_list] ClickHouse在创建表时建议携带PARTITION BY创建表分区。因为ClickHouse数据迁移工具是基于表的分区作数据迁移,在创建表时如果不携带PARTITION BY创建表分区,则在集群内ClickHouseServer节点间数据迁移界面无法对该表进行数据迁移。 方法二:创建一个与database_name2.table_name2具有相同结构的表,同时可以对其指定不同的表引擎声明。 如果没有表引擎声明,则创建的表将与database_name2.table_name2使用相同的表引擎。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name AS [database_name2.]table_name2 [ENGINE = engine_name] 方法三:使用指定的引擎创建一个与SELECT子句的结果具有相同结构的表,并使用SELECT子句的结果填充它。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name ENGINE = engine_name AS SELECT ...
  • 非聚合模型示例 在col1列后添加new_col列(添加Key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1; 在col1列后添加new_col列(添加Value列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 聚合模型示例 聚合列不支持修改聚合类型。 在col1列后添加new_col列(key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 在col1后添加new_col列(Value列SUM聚合类型): ALTER TABLE example_db.my_table ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT MAX DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 基本语法 CREATE TABLE [IF NOT EXISTS] [database.]table ( column_definition_list, [index_definition_list] ) [engine_type] [keys_type] [table_comment] [partition_info] distribution_desc [rollup_list] [properties] [extra_properties]
  • 使用示例 创建一个名为table1的普通表: CREATE TABLE example_db.table1 ( k1 TINYINT, k2 DECIMAL(10, 2) DEFAULT "10.5", k3 CHAR(10) COMMENT "string column", k4 INT NOT NULL DEFAULT "1" COMMENT "int column" ) COMMENT "table comment" DISTRIBUTED BY HASH(k1) BUCKETS 32; 创建一个名为table2的分区表。 使用event_day列作为分区列,建立3个分区:p201706、p201707、p201708,取值为: p201706:范围为 [最小值, 2017-07-01) p201707:范围为 [2017-07-01, 2017-08-01) p201708:范围为 [2017-08-01, 2017-09-01) 每个分区使用siteid进行哈希分桶,桶数为10。 创建表命令如下: CREATE TABLE table2 ( event_day DATE, siteid INT DEFAULT '10', citycode SMALLINT, username VARCHAR(32) DEFAULT '', pv BIGINT SUM DEFAULT '0' ) AGGREGATE KEY(event_day, siteid, citycode, username) PARTITION BY RANGE(event_day) ( PARTITION p201706 VALUES LESS THAN ('2017-07-01'), PARTITION p201707 VALUES LESS THAN ('2017-08-01'), PARTITION p201708 VALUES LESS THAN ('2017-09-01') ) DISTRIBUTED BY HASH(siteid) BUCKETS 10 PROPERTIES("replication_num" = "1"); 以上创建表设置replication_num建的都是单副本表,Doris建议采用默认的3副本设置,以保证高可用。 可以对Table增加上卷表(Rollup)以提高查询性能。 表的列的Null属性默认为true,会对查询性能有一定的影响。 Doris表必须指定分桶列。 查看表内容: SHOW TABLES; +----------------------+ | Tables_in_example_db | +----------------------+ | table1 | | table2 | +----------------------+ 2 rows in set (0.01 sec) DESC table1; +----------+-------------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-------+---------+-------+ | siteid | int(11) | Yes | true | 10 | | | citycode | smallint(6) | Yes | true | N/A | | | username | varchar(32) | Yes | true | | | | pv | bigint(20) | Yes | false | 0 | SUM | +----------+-------------+------+-------+---------+-------+ 4 rows in set (0.00 sec) DESC table2; +-----------+-------------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-------+---------+-------+ | event_day | date | Yes | true | N/A | | | siteid | int(11) | Yes | true | 10 | | | citycode | smallint(6) | Yes | true | N/A | | | username | varchar(32) | Yes | true | | | | pv | bigint(20) | Yes | false | 0 | SUM | +-----------+-------------+------+-------+---------+-------+ 5 rows in set (0.00 sec)
  • 示例 START TRANSACTION; START TRANSACTION ISOLATION LEVEL REPEATABLE READ; START TRANSACTION READ WRITE; START TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY; START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE; 不支持嵌套事务,也就是开启事务后,在commit之前不能再开启其它事务。
  • 示例 -- 创建事务表 create table upd_tb(col1 int,col2 string) with (format='orc',transactional=true); --插入数据 insert into upd_tb values (3,'A'),(4,'B'); --修改col1 = 4的数据 update upd_tb set col1=5 where col1=4; --查询表,col1=4的记录已被修改 select * from upd_tb; -- col1 | col2 ------|------ 5 | B 3 | A
  • HetuEngine常用数据源语法兼容性说明 语法 Hive MPPDB Elasticsearch HBase HetuEngine(跨域) ClickHouse Hudi MySQL 数据库的show schemas Y Y Y Y Y Y Y Y 数据库的create schema Y Y N Y N N Y N 数据库的use schema Y Y Y Y Y Y Y Y 数据库的alter schema Y N N N N N N N 数据库的drop schema Y Y Y Y N N Y N 表的show tables/show create table/show functions/show session Y Y Y Y Y Y Y Y 表的create Y Y N Y N N N N 表的create table TABLENAME as Y Y Y Y N N N N 表的insert into TABLENAME values Y Y Y Y Y N N N 表的insert into TABLENAME select Y Y Y Y Y N N N 表的insert overwrite TABLENAME values Y N N N N N N N 表的insert overwrite TABLENAME select Y N N N N N N N 表的alter Y Y N N N N N N 表的select Y Y Y Y Y Y Y Y 表的update Y Y Y N N N N N 表的delete Y Y Y Y N N N N 表的drop Y N Y Y Y N N N 表的desc/describe TABLENAME Y Y Y Y Y Y Y Y 表的analyze Y Y Y N N N Y N 表的comment Y N N N N N N N 表的explain Y Y Y Y Y N Y N 表的show stats Y Y Y N N N Y N 表的show columns Y Y Y Y Y Y Y Y 表的select column Y Y Y Y Y Y Y Y 视图的create view Y Y N N N N N N 视图的create or replace view Y N N N N N N N 视图的alter Y N N N N N N N 视图的drop Y N N N N N N N 视图的select Y Y N N Y Y Y Y 视图的desc/describe VIEWNAME Y Y N N Y Y Y Y 视图的show views/show create view Y Y N N N Y Y Y 视图的show columns Y Y Y Y Y Y Y Y 视图的select column Y Y Y Y Y Y Y Y 父主题: HetuEngine常见SQL语法说明
  • 描述 列出catalogName为mv中的所有物化视图以及对应的数据表。如果希望只查看某个schema中的物化视图,可以使用子句[IN/FROM schema_name] 通过可选子句“LIKE”,筛选视图名满足规则运算表达式的视图,如果不使用这个子句,会列举所有视图。匹配的视图会按字母顺序排列。 目前规则运算表达式支持“*”或“%”用于匹配任何字符,下划线“_”用于匹配一个字符,或“|”用于条件连接两个或多个条件。
  • ORDER BY ORDER BY子句用于按一个或多个输出表达式对结果集排序。 ORDER BY expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] 每个expression可以由输出列组成,也可以是按位置选择输出列的序号。 ORDER BY子句在GROUP BY或HAVING子句之后,在OFFSET、LIMIT或FETCH FIRST子句之前进行计算。 按照SQL规范,ORDER BY子句只影响包含该子句的查询结果的行顺序。HetuEngine遵循该规范,并删除该子句的冗余用法,以避免对性能造成负面影响。 例如在执行INSERT语句时,ORDER BY子句不会对插入的数据产生影响,是个冗余的操作,会对整个INSERT语句的整体性能产生负面影响,因此HetuEngine会跳过ORDER BY操作。 ORDER BY只作用于SELECT子句: INSERT INTO some_table SELECT * FROM another_table ORDER BY field; ORDER BY冗余的例子是嵌套查询,不影响整个语句的结果: SELECT * FROM some_table JOIN (SELECT * FROM another_table ORDER BY field) u ON some_table.key = u.key;
  • 系统表gs_global_config相关SQL 表26 系统表gs_global_config相关SQL 功能 相关SQL 新增、修改系统表gs_global_config的参数值 ALTER GLOBAL CONFIGURATION 删除系统表gs_global_config中的参数值 DROP GLOBAL CONFIGURATION 向系统表gs_global_config中插入一个或者多个弱口令 CREATE WEAK PASSWORD DICTIONARY 清空系统表gs_global_config中的所有弱口令 DROP WEAK PASSWORD DICTIONARY
  • 定义物化视图 表30 物化视图定义相关SQL 功能 相关SQL 创建一个全量物化视图 CREATE MATERIALIZED VIEW 创建一个增量物化视图 CREATE INCREMENTAL MATERIALIZED VIEW 更改一个现有物化视图的多个辅助属性 ALTER MATERIALIZED VIEW 强制删除数据库中已有的物化视图 DROP MATERIALIZED VIEW 以全量刷新的方式对物化视图进行刷新 REFRESH MATERIALIZED VIEW 以增量刷新的方式对物化视图进行刷新 REFRESH INCREMENTAL MATERIALIZED VIEW
  • 定义DATABASE LINK对象 DATABASE LINK是可以操作远程数据库对象,所涉及的SQL语句,如表22所示。 表22 DATABASE LINK对象相关SQL 功能 相关SQL 创建一个新的DATABASE LINK对象 CREATE DATABASE LINK 修改DATABASE LINK对象 ALTER DATABASE LINK 删除DATABASE LINK对象 DROP DATABASE LINK
  • 定义分区表 分区表是一种逻辑表,数据是由普通表存储的,主要用于提升查询性能。所涉及的SQL语句,如表9所示。 表9 分区表定义相关SQL 功能 相关SQL 创建分区表 CREATE TABLE PARTITION 创建分区 ALTER TABLE PARTITION 修改分区表属性 ALTER TABLE PARTITION 删除分区 ALTER TABLE PARTITION 删除分区表 DROP TABLE 创建二级分区表 CREATE TABLE SUBPARTITION 修改二级分区表分区 ALTER TABLE SUBPARTITION