DROP 语句可用于删除数据库、表、视图、字典,同时 ByteHouse 也支持通过 TRUNCATE TABLE 移除一个表所有数据。
DROP DATABASE)删除指定数据库。
DROP DATABASE [IF EXISTS] [databaseIdentifier]
参数 | 描述 |
|---|---|
IF EXISTS |
|
databaseIdentifier | 需要删除的表名称。 |
-- 1. 创建数据库 CREATE DATABASE IF NOT EXIST sample_db ON CLUSTER sample_cluster; -- 2. 删除数据库 DROP DATABASE sample_db ON CLUSTER CLUSTER sample_cluster;
DROP TABLE)删除指定表。
DROP TABLE [IF EXISTS] [tableIdentifier]
-- 1. 创建库 CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster; -- 2. 删除现存表 DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster; -- 3. 创建表 CREATE TABLE IF NOT EXISTS sample_db.sample_table ON CLUSTER sample_cluster( `order_by_column` String ) ENGINE = MergeTree ORDER BY (`order_by_column`); -- 4. 删除表 DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster;
DROP VIEW)删除视图。
与 DROP TABLE 的区别:
DROP TABLE 命令也能删除视图,但 DROP VIEW 是删除视图的标准和推荐方式。DROP VIEW 在执行删除操作前,会主动验证目标对象 ([db.]name) 是否为视图,避免因对象类型不匹配导致的错误。DROP TABLE 删除视图时,则不会验证指定对象是否为视图。如果目标对象不是视图(例如是一个表),DROP TABLE 也会直接删除指定的对象;如果目标对象不存在,则报错。DROP VIEW [IF EXISTS] [db.]name
-- 1. 创建库 CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster; -- 2. 删除现存表 DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster; -- 3. 创建表 CREATE TABLE IF NOT EXISTS sample_db.sample_table ON CLUSTER sample_cluster( `order_by_column` String ) ENGINE = MergeTree ORDER BY (`order_by_column`); -- 4. 创建视图 CREATE VIEW sample_view AS SELECT * FROM sample_db.sample_table -- 5. 删除视图 DROP VIEW IF EXISTS sample_view ON CLUSTER sample_cluster
DROP DICTIONARY)删除字典。
DROP DICTIONARY [IF EXISTS] [db.]name
-- 1. 创建库 CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster; -- 2. 创建字典 CREATE DICTIONARY IF NOT EXISTS sample_db.sample_dict ON CLUSTER sample_cluster ( `user_id` UInt64, `username` String, `age` UInt8 DEFAULT 0, `gender` UInt8 DEFAULT 0, `last_login` DateTime ) PRIMARY KEY user_id SOURCE(MySQL( host 'mysql_host.example.com' port 3306 user 'dict_reader' password 'secure_password' db 'user_db' table 'users' )) LAYOUT(FLAT()) LIFETIME(MIN 300 MAX 900); -- 3. 删除字典 DROP DICTIONARY IF EXISTS sample_db.sample_dict ON CLUSTER sample_cluster;
移除一张表所有数据。
TRUNCATE TABLE [IF EXISTS] [tableIdentifier]
-- 1. 创建库 CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster; -- 2. 删除现存表 DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster; -- 3. 创建表 CREATE TABLE IF NOT EXISTS sample_db.sample_table ON CLUSTER sample_cluster( `order_by_column` String ) ENGINE = MergeTree ORDER BY (`order_by_column`); -- 4. 插入数据 INSERT INTO sample_db.sample_table VALUES ('data_1'), ('data_2'), ('data_3'); -- 5. 验证数据插入 SELECT * FROM sample_db.sample_table; -- 6. 移除表 sample_table 中的所有数据 TRUNCATE TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster; -- 7. 验证数据已清空 SELECT count(*) FROM sample_db.sample_table;