DROP TABLE命令用于删除整个表及表内的所有数据。
语法
DROP TABLE name [CASCADE | RESTRICT | CASCADE CONSTRAINTS]
说明
DROP TABLE
可从数据库中删除表,当您删除一个表时,这个表的所有分区或子分区也会被删除。要清空表中的行但不销毁表,请使用 DELETE
。DROP TABLE
始终删除针对目标表存在的所有索引、规则、触发器和约束。
使用DROP TABLE命令,您必须是分区根的拥有者、拥有表的小组中的成员、模式拥有者或是数据库的超级用户。
参数
参数 | 说明 |
name | 要删除的表或分区表的名称(可能是schema限定的)。 |
包含 RESTRICT
关键字可指定在存在任何依赖于表的对象的情况下,服务器应拒绝将其删除。这是默认行为,DROP TABLE
命令在存在任何依赖于表的对象的情况下将报告错误。
包含CASCADE
/ CASCADE CONSTRAINTS
子句可指定PolarDB PostgreSQL版(兼容Oracle)删除所指定表的所有依赖约束(不包括其他对象类型)。
示例
以下命令删除名为 emp且没有依赖项的表:
DROP TABLE emp;
DROP TABLE
命令的结果会有所不同,这取决于表是否有任何依赖项,您可以通过指定删除行为来控制结果。例如,如果您创建orders和items这两个表,而items表依赖于orders表:
CREATE TABLE orders
(order_id int PRIMARY KEY, order_date date, …);
CREATE TABLE items
(order_id int REFERENCES orders, quantity int, …);
根据您的删除行为,PolarDB PostgreSQL版(兼容Oracle)在删除orders表时执行以下操作:
如果您指定
DROP TABLE orders RESTRICT
,PolarDB PostgreSQL版(兼容Oracle)将报告错误。如果您指定
DROP TABLE orders CASCADE CONSTRAINTS
,PolarDB PostgreSQL版(兼容Oracle)将删除orders表并从items表中删除外键规格,但不删除items表。