> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação do CREATE DATABASE

# CREATE DATABASE

Cria um novo banco de dados.

```sql theme={null}
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)] [SETTINGS ...] [COMMENT 'Comment']
```

<div id="clauses">
  ## Cláusulas
</div>

<div id="if-not-exists">
  ### IF NOT EXISTS
</div>

Se o banco de dados `db_name` já existir, o ClickHouse não cria um novo banco de dados e:

* Não lança uma exceção se a cláusula for especificada.
* Lança uma exceção se a cláusula não for especificada.

<div id="on-cluster">
  ### ON CLUSTER
</div>

O ClickHouse cria o banco de dados `db_name` em todos os servidores do cluster especificado. Veja mais detalhes no artigo sobre [DDL distribuído](/pt-BR/reference/statements/distributed-ddl).

<div id="engine">
  ### ENGINE
</div>

Por padrão, o ClickHouse usa seu próprio motor de banco de dados [Atomic](/pt-BR/reference/engines/database-engines/atomic). Também existem [MySQL](/pt-BR/reference/engines/database-engines/mysql), [PostgresSQL](/pt-BR/reference/engines/database-engines/postgresql), [MaterializedPostgreSQL](/pt-BR/reference/engines/database-engines/materialized-postgresql), [Replicated](/pt-BR/reference/engines/database-engines/replicated), [SQLite](/pt-BR/reference/engines/database-engines/sqlite).

<div id="comment">
  ### COMENTÁRIO
</div>

Você pode adicionar um comentário ao banco de dados ao criá-lo.

Há suporte a comentários em todos os motores de banco de dados.

**Sintaxe**

```sql theme={null}
CREATE DATABASE db_name ENGINE = engine(...) COMMENT 'Comment'
```

**Exemplo**

```sql title="Query" theme={null}
CREATE DATABASE db_comment ENGINE = Memory COMMENT 'The temporary database';
SELECT name, comment FROM system.databases WHERE name = 'db_comment';
```

```text title="Response" theme={null}
┌─name───────┬─comment────────────────┐
│ db_comment │ The temporary database │
└────────────┴────────────────────────┘
```

<div id="settings">
  ### CONFIGURAÇÕES
</div>

<div id="lazy-load-tables">
  #### lazy\_load\_tables
</div>

Quando ativado, as tabelas não são carregadas completamente durante a inicialização do banco de dados. Em vez disso, é criado um proxy leve para cada tabela, e o mecanismo real da tabela é materializado no primeiro acesso. Isso reduz o tempo de inicialização e o uso de memória em bancos de dados com muitas tabelas, em que apenas um subconjunto é consultado com frequência.

```sql theme={null}
CREATE DATABASE db_name ENGINE = Atomic SETTINGS lazy_load_tables = 1;
```

Aplica-se a motores de banco de dados que armazenam metadados de tabelas em disco (por exemplo, `Atomic`, `Ordinary`). Views, visões materializadas, dicionários e tabelas baseadas em funções de tabela são sempre carregados imediatamente, independentemente dessa configuração.

**Quando usar:** Essa configuração é útil para bancos de dados com um grande número de tabelas (centenas ou milhares), em que apenas um subconjunto é consultado ativamente. Ela reduz o tempo de inicialização do servidor e o uso de memória ao adiar a criação de objetos do motor de tabela, a varredura de partes de dados e a inicialização de threads em segundo plano até o primeiro acesso.

**Impacto em `system.tables`:**

* Antes de uma tabela ser acessada, `system.tables` mostra seu motor como `TableProxy`. Após o primeiro acesso, passa a mostrar o nome real do motor (por exemplo, `MergeTree`).
* Colunas como `total_rows` e `total_bytes` retornam `NULL` para tabelas não carregadas porque o armazenamento real ainda não foi criado.

**Interação com operações DDL:**

* `SELECT`, `INSERT`, `ALTER`, `DROP` disparam automaticamente o carregamento do motor de tabela real no primeiro uso.
* `RENAME TABLE` funciona sem disparar um carregamento.
* Depois que uma tabela é carregada, ela permanece carregada por toda a duração do processo do servidor.

**Limitações:**

* Ferramentas de monitoramento que dependem dos metadados de `system.tables` (por exemplo, `total_rows`, `engine`) podem exibir informações incompletas para tabelas não carregadas.
* A primeira consulta a uma tabela não carregada tem um custo único de carregamento (análise da instrução `CREATE TABLE` armazenada e inicialização do motor).

Valor padrão: `0` (desabilitado).
