本页概述了如何更改和删除数据库模式中的对象。
在阅读本页之前,请执行以下操作:
要更改数据库模式中的现有对象,使用ALTER
语句。
ALTER
语句通常采用以下形式:
ALTER {OBJECT_TYPE} {OBJECT_NAME} {SUBCOMMAND};
范围 | 描述 |
---|---|
{OBJECT_TYPE} | 对象的类型。 |
{OBJECT_NAME} | 对象的名称。 |
{SUBCOMMAND} | 要进行的更改的子命令。 |
hubble支持以下ALTER
语句:
ALTER DATABASE
ALTER SCHEMA
ALTER TABLE
ALTER INDEX
ALTER VIEW
ALTER SEQUENCE
ALTER TYPE
ALTER USER/ROLE
要对在创建表中创建的表进行一些更改。具体来说,执行以下操作:
name
。name
和email
列。abc_schema
用户定义的模式。abc
。该ALTER TABLE
语句具有针对所有这些更改的子命令:
ADD COLUMN
子命令。ALTER PRIMARY KEY
子命令。SET SCHEMA
子命令。OWNER TO
子命令。以下示例说明
添加ALTER TABLE
添加列的语句name
:
ALTER TABLE cust_info ADD COLUMN name string;
添加另一个ALTER TABLE
语句以将主键列更改为name
和email
:
ALTER TABLE cust_info ALTER PRIMARY KEY USING COLUMNS (name, email);
为了将列添加到现有表的主键索引中,该列必须具有现有NOT NULL
约束。综合来讲,添加一个子命令来设置列上的约束:
ALTER TABLE cust_info
ADD COLUMN name STRING NOT NULL,
ALTER COLUMN email SET NOT NULL;
执行主键添加:
ALTER TABLE cust_info ALTER PRIMARY KEY USING COLUMNS (name, email);
更改模式的语句:
ALTER TABLE IF EXISTS cust_info SET SCHEMA abc_schema;
ALTER TABLE IF EXISTS test.abc_schema.cust_info OWNER TO abc;
要从数据库模式中删除对象,请使用DROP
语句。
DROP
语句通常采用以下形式:
DROP {OBJECT_TYPE} {OBJECT_NAME} CASCADE;
范围 | 描述 |
---|---|
{OBJECT_TYPE} | 对象的类型。 |
{OBJECT_NAME} | 对象的名称。 |
{CASCADE} | 一个可选的关键字,它将删除依赖于被删除对象的所有对象。 |
hubble支持以下DROP
语句:
DROP DATABASE
DROP SCHEMA
DROP TABLE
DROP INDEX
DROP SEQUENCE
DROP VIEW
DROP USER/ROLE
CASCADE
语句删除对象的所有内容,在模式初始化后应谨慎使用。假设想删除一个不经常使用的索引。
show indexes from cust_info;
table_name | index_name | non_unique | seq_in_index | column_name | direction | storing | implicit | visible
-------------+--------------------------------+------------+--------------+-------------+-----------+---------+-----------+---------
cust_info | cust_info_pkey | f | 1 | name | ASC | f | f | t
cust_info | cust_info_pkey | f | 2 | email | ASC | f | f | t
cust_info | cust_info_first_name_last_name_key | f | 1 | first_name | ASC | f | f | t
cust_info | cust_info_first_name_last_name_key | f | 2 | last_name | ASC | f | f | t
cust_info | cust_info_first_name_last_name_key | f | 3 | name | ASC | f | t | t
cust_info | cust_info_first_name_last_name_key | f | 4 | email | ASC | f | t | t
cust_info | cust_info_email_key | f | 1 | email | ASC | f | f | t
cust_info | cust_info_email_key | f | 2 | name | ASC | f | t | t
show create table test.abc_schema.cust_info;
CREATE TABLE abc_schema.cust_info (
first_name STRING NOT NULL,
last_name STRING NOT NULL,
email STRING NOT NULL,
name STRING NOT NULL,
CONSTRAINT "primary" PRIMARY KEY (name ASC, email ASC),
UNIQUE INDEX cust_info_first_name_last_name_key (first_name ASC, last_name ASC),
UNIQUE INDEX cust_info_email_key (email ASC),
FAMILY "primary" (first_name, last_name, email, name)
);
cust_info_first_name_last_name_key
是一个UNIQUE
索引。
执行DROP
语句:
DROP INDEX test.abc_schema.cust_info@cust_info_first_name_last_name_key CASCADE;