DROP TABLE命令用于删除整个表及表内的所有数据。

语法

DROP TABLE name [CASCADE | RESTRICT | CASCADE CONSTRAINTS]

说明

DROP TABLE 可从数据库中删除表,当您删除一个表时,这个表的所有分区或子分区也会被删除。要清空表中的行但不销毁表,请使用 DELETEDROP 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 RESTRICTPolarDB PostgreSQL版(兼容Oracle)将报告错误。

  • 如果您指定 DROP TABLE orders CASCADE CONSTRAINTSPolarDB PostgreSQL版(兼容Oracle)将删除orders表并从items表中删除外键规格,但不删除items表。