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

# Criando tabelas no ClickHouse

> Saiba mais sobre como criar tabelas no ClickHouse

Como a maioria dos bancos de dados, o ClickHouse agrupa logicamente as tabelas em **bancos de dados**. Use o comando `CREATE DATABASE` para criar um novo **banco de dados** no ClickHouse:

```sql theme={null}
CREATE DATABASE IF NOT EXISTS helloworld
```

Da mesma forma, use `CREATE TABLE` para definir uma nova tabela. Se você não especificar o nome do banco de dados, a tabela será criada no banco de dados
`default`.

A tabela a seguir, chamada `my_first_table`, é criada no banco de dados `helloworld`:

```sql theme={null}
  CREATE TABLE helloworld.my_first_table
  (
      user_id UInt32,
      message String,
      timestamp DateTime,
      metric Float32
  )
  ENGINE = MergeTree()
  PRIMARY KEY (user_id, timestamp)
```

No exemplo acima, `my_first_table` é uma tabela `MergeTree` com quatro colunas:

* `user_id`: um inteiro sem sinal de 32 bits
* `message`: um tipo de dado `String`, que substitui tipos como `VARCHAR`, `BLOB`, `CLOB` e outros usados em outros sistemas de banco de dados
* `timestamp`: um valor `DateTime`, que representa um instante no tempo
* `metric`: um número de ponto flutuante de 32 bits

<Note>
  O motor da tabela determina:

  * Como e onde os dados são armazenados
  * Quais consultas são suportadas
  * Se os dados são replicados ou não

  Há muitos motores à disposição, mas, para uma tabela simples em um servidor ClickHouse de nó único, [MergeTree](/pt-BR/reference/engines/table-engines/mergetree-family/mergetree) provavelmente será a escolha mais adequada.
</Note>

<div id="a-brief-intro-to-primary-keys">
  ## Uma breve introdução às chaves primárias
</div>

Antes de prosseguir, é importante entender como as chaves primárias funcionam no ClickHouse (a implementação
das chaves primárias pode parecer inesperada!):

* as chaves primárias no ClickHouse ***não são únicas*** para cada linha de uma tabela

A chave primária de uma tabela do ClickHouse determina como os dados são ordenados quando gravados em disco. A cada 8.192 linhas ou 10 MB de
dados (o que chamamos de **granularidade do índice**), é criada uma entrada no arquivo de índice da chave primária. Esse conceito de granularidade
cria um **índice esparso** que cabe facilmente na memória, e os grânulos representam uma faixa com a menor quantidade de
dados de coluna processada durante consultas `SELECT`.

A chave primária pode ser definida usando o parâmetro `PRIMARY KEY`. Se você definir uma tabela sem especificar uma `PRIMARY KEY`,
a chave passa a ser a tupla especificada na cláusula `ORDER BY`. Se você especificar tanto uma `PRIMARY KEY` quanto uma `ORDER BY`, a chave primária deverá ser um prefixo da ordenação.

A chave primária também é a chave de ordenação, que é uma tupla de `(user_id, timestamp)`. Portanto, os dados armazenados em cada
arquivo de coluna serão ordenados por `user_id` e, em seguida, por `timestamp`.

<Tip>
  Para mais detalhes, confira o [módulo de treinamento Modeling Data](https://learn.clickhouse.com/visitor_catalog_class/show/1328860/?utm_source=clickhouse\&utm_medium=docs) na ClickHouse Academy.
</Tip>
