> This page location: Manage Databases > Drop Database
> Full Neon documentation index: https://neon.com/docs/llms.txt

# PostgreSQL DROP DATABASE

**Summary**: in this tutorial, you will learn how to use the PostgreSQL `DROP DATABASE` statement to drop a database.

## Introduction to PostgreSQL DROP DATABASE statement

The `DROP DATABASE` statement deletes a database from a PostgreSQL server.

Here's the basic syntax of the `DROP DATABASE` statement:

```sql
DROP DATABASE [IF EXISTS] database_name
[WITH (FORCE)]
```

In this syntax:

- First, specify the database name that you want to remove after the `DROP DATABASE` keywords.
- Second, if you delete a non-existing database, PostgreSQL will issue an error. To prevent the error, you can use the `IF EXISTS` option. In this case, PostgreSQL will issue a notice instead.
- Third, the `DROP DATABASE` statement will fail if there are active connections to the target database unless you use the `FORCE` option. The `FORCE` option will attempt to terminate all existing connections to the target database.

The `DROP DATABASE` statement deletes the database from both catalog entry and data directory. Since PostgreSQL does not allow you to roll back this operation, you should use it with caution.

To execute the `DROP DATABASE` statement, you need to be the database owner.

Additionally, you cannot execute the `DROP DATABASE` statement while connecting to the target database. In this case, you can connect to the default `postgres` database or use the `dropdb` utility before executing the `DROP DATABASE` statement.

The `dropdb` is a command-line utility that allows you to drop a database. The `dropdb` program executes the `DROP DATABASE` statement behind the scenes.

## PostgreSQL DROP DATABASE statement examples

Let's take some examples of using the `DROP DATABASE` statement.

### Setting up sample databases

We'll create some databases for the demonstration purposes:

```sql
CREATE DATABASE hr;
CREATE DATABASE test;
```

### 1) Basic DROP DATABASE statement example

First, open Command Prompt on Windows or Terminal on Unix-like systems and connect to the PostgreSQL server using psql:

```bash
psql -U postgres
```

Second, drop the database `hr` using the following `DROP DATABASE` statement:

```sql
DROP DATABASE hr;
```

### 2) Removing a non-existing database example

The following example attempts to drop a database that does not exist:

```sql
DROP DATABASE non_existing_database;
```

PostgreSQL will issue the following error:

```
ERROR:  database "non_existing_database" does not exist
```

If you use the `IF EXISTS` option, PostgreSQL will issue a notice instead:

```sql
DROP DATABASE IF EXISTS non_existing_database;
```

Output:

```
NOTICE:  database "non_existing_database" does not exist, skipping
DROP DATABASE
```

### 3) Drop a database that has active connections example

First, establish a connection to the PostgreSQL server using the `psql` tool:

```bash
psql -U postgres
```

Next, open the second connection to the PostgreSQL server. You can use psql, pgAdmin, or any PostgreSQL client tool.

Then, attempt to delete the `test` database from the first session:

```sql
DROP DATABASE test;
```

PostgreSQL issues an error:

```sql
ERROR:  database "test" is being accessed by other users
DETAIL:  There is 1 other session using the database.
```

The output indicates that the `test` database is being accessed by other users.

To drop the database that has active connections, you can use the `FORCE` option.

After that, find the connections to the `test` database by retrieving data from the `pg_stat_activity` view:

```sql
SELECT
  datname,
  pid,
  usename,
  application_name,
  client_addr,
  client_port
FROM
  pg_stat_activity
WHERE
  datname = 'test';
```

Output:

```text
 datname | pid  | usename  | application_name | client_addr | client_port
---------+------+----------+------------------+-------------+-------------
 test    | 9724 | postgres | psql             | 127.0.0.1   |       61287
(1 row)
```

The `test` database has one connection from `localhost`. Therefore, it's safe to terminate this connection and remove the database.

Finally, terminate the connections to the `test` database and drop it using the `WITH (FORCE)` option:

```sql
DROP DATABASE test WITH (FORCE)
```

Output:

```sql
DROP DATABASE
```

## Summary

- Use the PostgreSQL `DROP DATABASE` statement to drop a database.

---

## Related docs (Manage Databases)

- [Create Database](https://neon.com/postgresql/postgresql-administration/postgresql-create-database)
- [Alter Database](https://neon.com/postgresql/postgresql-administration/postgresql-alter-database)
- [Rename Database](https://neon.com/postgresql/postgresql-administration/postgresql-rename-database)
- [Copy a Database](https://neon.com/postgresql/postgresql-administration/postgresql-copy-database)
- [Get Database Object Sizes](https://neon.com/postgresql/postgresql-administration/postgresql-database-indexes-table-size)
- [Change Database Owner](https://neon.com/postgresql/postgresql-administration/postgres-change-database-owner)
