
# DROP TABLE
#### 功能描述
删除指定的表。
#### 注意事项
- DROP TABLE删除表后，依赖该表的索引会被删除，而使用到该表的函数和存储过程将无法执行。删除分区表，会同时删除分区表中的所有分区。
- 表的所有者、表所在模式的所有者、被授予了表的DROP权限的用户或被授予DROP ANY TABLE权限的用户，有权删除指定表，三权分立关闭时的系统管理员默认拥有该权限。
 
#### 语法格式
```
DROP TABLE [ IF EXISTS ] 
    { [schema.]table_name } [, ...] [ CASCADE | RESTRICT ] [ PURGE ];
```
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002558057255.png "点击放大")
#### 参数说明
- **IF EXISTS**
  如果指定的表不存在，则发出一个notice而不是抛出一个error。
  
- **schema**
  模式名称。
  
- **table_name**
  表名称。
  
- **CASCADE \| RESTRICT**
  - CASCADE：表示允许级联删除依赖于该表的对象（比如视图、触发器、索引；注：关联的表对象无法被级联删除）。
  
  - RESTRICT：表示有依赖于该表的对象存在时，该表无法被删除。此选项为缺省值。
   
- **PURGE**
  该参数表示即使开启回收站功能，使用DROP TABLE删除表时，也会直接物理删除表，而不是将其放入回收站中。
  
 
#### 示例
```
--创建test表。
gaussdb=# CREATE TABLE test(c1 int, c2 int);
--删除test表。
gaussdb=# DROP TABLE IF EXISTS test;
--创建test1表。
gaussdb=# CREATE TABLE test1(c1 int, c2 int);
--创建v_test1视图。
gaussdb=# CREATE VIEW v_test1 AS SELECT * FROM test1 WHERE c1 < 20;
--删除表报错。
gaussdb=# DROP TABLE test1;
ERROR:  table test1 cannot be dropped because other objects depend on it.
DETAIL:  view v_test1 depends on table test1
HINT:  Use DROP ... CASCADE to drop the dependent objects.
--使用CASCADE参数删除test1表，会级联删除掉视图。
gaussdb=# DROP TABLE test1 CASCADE;
NOTICE:  drop cascades to view v_test1
DROP TABLE
```
#### 相关链接
[ALTER TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0509.html#ZH-CN_TOPIC_0000002527986126)，[CREATE TABLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0567.html#ZH-CN_TOPIC_0000002527826214)
