========== DROP TABLE ========== .. container:: refentry :name: SQL-DROPTABLE .. container:: titlepage .. container:: refnamediv .. rubric:: DROP TABLE :name: drop-table DROP TABLE — 移除一个表 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] .. container:: refsect1 :name: id-1.9.3.134.5 .. rubric:: 描述 :name: 描述 ``DROP TABLE``\ 从数据库移除表。只有表拥有者、 模式拥有者和超级用户能删除一个表。要清空一个表中的行但是不销毁该表, 可以使用\ `DELETE `__\ 或者\ `TRUNCATE `__\ 。 ``DROP TABLE``\ 总是移除目标表的任何索引、规则、 触发器和约束。不过,要删除一个被视图或者另一个表的外键约束所引用的表, 必须指定\ ``CASCADE``\ (\ ``CASCADE``\ 将会把依赖的视图 也完全移除,但是对于外键它将只移除外键约束,而完全不会移除其他表)。 .. container:: refsect1 :name: id-1.9.3.134.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``IF EXISTS`` 如果该表不存在则不要抛出一个错误,而是发出一个提示。 *``name``* 要删除的表的名称(可以是模式限定的)。 ``CASCADE`` 自动删除依赖于该表的对象(例如视图),然后删除所有 依赖于那些对象的对象(见\ `第 5.14 节 `__\ )。 ``RESTRICT`` 如果有任何对象依赖于该表,则拒绝删除它。这是默认值。 .. container:: refsect1 :name: id-1.9.3.134.7 .. rubric:: 示例 :name: 示例 要销毁两个表\ ``films``\ 和 ``distributors``\ : .. code:: programlisting DROP TABLE films, distributors; .. container:: refsect1 :name: id-1.9.3.134.8 .. rubric:: 兼容性 :name: 兼容性 这个命令符合 SQL 标准,不过该标准只允许每个命令删除一个表并且没有 ``IF EXISTS``\ 选项。该选项是一个 OushuDB 扩展。 .. container:: refsect1 :name: id-1.9.3.134.9 .. rubric:: 另见 :name: 另见 `ALTER TABLE `__, `CREATE TABLE `__