You need to enable JavaScript to run this app.
ByteHouse 企业版

ByteHouse 企业版

复制全文
DDL
删除语句 (DROP)
复制全文
删除语句 (DROP)

DROP 语句可用于删除数据库、表、视图、字典,同时 ByteHouse 也支持通过 TRUNCATE TABLE 移除一个表所有数据。

删除数据库 (DROP DATABASE)

删除指定数据库。

语法

DROP DATABASE [IF EXISTS] [databaseIdentifier]

参数说明

参数

描述

IF EXISTS

  • 如果指定IF EXISTS,无论目标表是否存在,执行删除语句后系统都会返回成功。
  • 如果不指定IF EXISTS,当目标表不存在时,系统会返回ERROR: table "non_exist_table" does not exist报错。

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

移除一张表所有数据。

语法

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;
最近更新时间:2025.08.14 10:17:09
这个页面对您有帮助吗?
有用
有用
无用
无用