# CREATE DATABASE

The `CREATE DATABASE` statement creates a new CockroachDB database.

Note:

This statement performs a schema change. For more information about how online schema changes work in CockroachDB, see Online Schema Changes.

## Required privileges

Only members of the `admin` role can create new databases. By default, the `root` user belongs to the `admin` role.

## Synopsis

## Parameters

Parameter | Description
--- | ---
`IF NOT EXISTS` | Create a new database only if a database of the same name does not already exist; if one does exist, do not return an error.
`name` | The name of the database to create, which must be unique and follow these identifier rules.
`encoding` | The `CREATE DATABASE` statement accepts an optional `ENCODING` clause for compatibility with PostgreSQL, but `UTF-8` is the only supported encoding. The aliases `UTF8` and `UNICODE` are also accepted. Values should be enclosed in single quotes and are case-insensitive. Example: `CREATE DATABASE bank ENCODING = 'UTF-8'`.

## Example

### Create a database

    > CREATE DATABASE bank;

    > SHOW DATABASES;

    +---------------+
    | database_name |
    +---------------+
    | bank          |
    | defaultdb     |
    | postgres      |
    | system        |
    +---------------+
    (4 rows)

### Create fails (name already in use)

    > CREATE DATABASE bank;

    pq: database "bank" already exists

    > CREATE DATABASE IF NOT EXISTS bank;

SQL does not generate an error, but instead responds `CREATE DATABASE` even though a new database wasn't created.

    > SHOW DATABASES;

    +---------------+
    | database_name |
    +---------------+
    | bank          |
    | defaultdb     |
    | postgres      |
    | system        |
    +---------------+
    (4 rows)

## See also

- `SHOW DATABASES`
- `RENAME DATABASE`
- `SET DATABASE`
- `DROP DATABASE`
- Other SQL Statements
- Online Schema Changes