<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/drop_table.sgml,v 1.27 2007/05/15 19:13:55 neilc Exp $
PostgreSQL documentation
-->

<refentry id="SQL-DROPTABLE">
 <refmeta>
  <refentrytitle id="SQL-DROPTABLE-TITLE">DROP TABLE</refentrytitle>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>DROP TABLE</refname>
  <refpurpose>remove a table</refpurpose>
 </refnamediv>

 <indexterm zone="sql-droptable">
  <primary>DROP TABLE</primary>
 </indexterm>

 <refsynopsisdiv>
<synopsis>
DROP TABLE [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
</synopsis>
 </refsynopsisdiv>
 
 <refsect1>
  <title>Description</title>

  <para>
   <command>DROP TABLE</command> removes tables from the database.
   Only its owner can drop a table.  To empty a table of rows
   without destroying the table, use <xref linkend="sql-delete"
   endterm="sql-delete-title"> or <xref linkend="sql-truncate"
   endterm="sql-truncate-title">.
  </para>

  <para>
   <command>DROP TABLE</command> always removes any indexes, rules,
   triggers, and constraints that exist for the target table.
   However, to drop a table that is referenced by a view or a foreign-key
   constraint of another table, <literal>CASCADE</> must be
   specified. (<literal>CASCADE</> will remove a dependent view entirely,
   but in the foreign-key case it will only remove the foreign-key
   constraint, not the other table entirely.)
  </para>
 </refsect1>
  
 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><literal>IF EXISTS</literal></term>
    <listitem>
     <para>
      Do not throw an error if the table does not exist. A notice is issued 
      in this case.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="PARAMETER">name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of the table to drop.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>CASCADE</literal></term>
    <listitem>
     <para>
      Automatically drop objects that depend on the table (such as
      views).
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>RESTRICT</literal></term>
    <listitem>
     <para>
      Refuse to drop the table if any objects depend on it.  This is
      the default.
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   To destroy two tables, <literal>films</literal> and 
   <literal>distributors</literal>:

<programlisting>
DROP TABLE films, distributors;
</programlisting>
  </para>
 </refsect1>
 
 <refsect1>
  <title>Compatibility</title>

  <para>
   This command conforms to the SQL standard, except that the standard only
   allows one table to be dropped per command, and apart from the 
   <literal>IF EXISTS</> option, which is a <productname>PostgreSQL</> 
   extension.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-altertable" endterm="sql-altertable-title"></member>
   <member><xref linkend="sql-createtable" endterm="sql-createtable-title"></member>
  </simplelist>
 </refsect1>

</refentry>
