# Como criar tabelas com PostgreSQL CREATE TABLE

O comando PostgreSQL `CREATE TABLE` é usado para criar novas tabelas em um banco de dados. Com ele, você também pode definir diversas especificações para a tabela inteira ou cada coluna individualmente.

## O que é PostgreSQL `CREATE TABLE`?

O comando `CREATE TABLE` do PostgreSQL é usado para **criar uma nova tabela em um banco de dados existente**. Para fazer isso, você precisa especificar um nome único e designar a cada uma de suas colunas um título e um tipo de dado. Ao criar tabelas nesse sistema de gerenciamento de banco de dados popular, você também consegue definir restrições (*constraints*) para todas as colunas ou apenas algumas delas.

Dica Se quiser modificar as configurações da sua tabela posteriormente, use o comando [PostgreSQL `ALTER TABLE`](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/postgresql-alter-table/) para ajustar as colunas como preferir.

## Qual é a sintaxe do comando PostgreSQL `CREATE TABLE`?

A sintaxe básica do comando PostgreSQL `CREATE TABLE` é a seguinte:

```postgresql
CREATE TABLE nome_tabela(
coluna1 tipo_dado PRIMARY KEY,
coluna2 tipo_dado,
coluna3 tipo_dado,
…
);
```

O comando `CREATE TABLE` instrui o PostgreSQL a **criar uma nova tabela**. Ele é seguido pelo nome da tabela, que deve ser único. Parênteses são posicionados imediatamente após esse nome. Entre eles, é preciso definir os títulos de cada uma das colunas e seus respectivos tipos de dados.

Caso você queira adicionar restrições, a sintaxe ficará assim:

```postgresql
CREATE TABLE nome_tabela(
    coluna1 tipo_dado PRIMARY KEY,
    coluna2 tipo_dado NOT NULL,
    coluna3 tipo_dado UNIQUE
);
```

Além de `PRIMARY KEY`, o PostgreSQL também oferece suporte às seguintes restrições:

- `NOT NULL`: Assegura que uma coluna não contenha valores `NULL`
- `UNIQUE`: Assegura que todos os valores em uma coluna ou combinação de colunas sejam únicos
- `CHECK`: Define condições que devem ser atendidas ao inserir ou atualizar os dados
- `FOREIGN KEY`: Estabelece uma relação com uma coluna em outra tabela
- `DEFAULT`: Especifica um valor padrão para uma coluna se nenhum valor explícito for informado

## Exemplo de uso do comando PostgreSQL `CREATE TABLE`

Para ilustrar como o comando PostgreSQL `CREATE TABLE` funciona, vamos criar uma tabela chamada `lista_clientes`. Ela será composta por quatro colunas: `id`, `nome`, `país` e `endereço`. A coluna `id` será definida como `PRIMARY KEY`. A restrição `NOT NULL` será usada para garantir que as colunas `id` e `nome` sejam preenchidas, evitando valores nulos. Este será o código da tabela:

```postgresql
CREATE TABLE lista_clientes(
id INT PRIMARY KEY NOT NULL,
nome VARCHAR(50) NOT NULL,
país VARCHAR(50),
endereço VARCHAR(255)
);
```

A execução desse comando criará uma tabela vazia com o nome e as colunas especificadas no código. Em seguida, você poderá preenchê-la com os dados desejados. Após ser preenchida, a tabela ficará parecida com esta:

<table>
  <thead>
    <tr>
      <th>id</th>
      <th>nome</th>
      <th>país</th>
      <th>endereço</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Carla Santos</td>
      <td>Brasil</td>
      <td>Rua das Flores, 123, RJ, 12345</td>
    </tr>
    <tr>
      <td>2</td>
      <td>…</td>
      <td>…</td>
      <td>…</td>
    </tr>
    <tr>
      <td>3</td>
      <td>…</td>
      <td>…</td>
      <td>…</td>
    </tr>
  </tbody>
</table>

### Como verificar tabelas com o comando `\d`

O comando `\d` gera uma lista com todas as tabelas contidas em um banco de dados. Ele pode ser usado para verificar se uma tabela foi criada com sucesso. Veja seu funcionamento:

```postgresql
testdb-# \d
```

Você também pode usar o comando para obter uma descrição detalhada de uma tabela. Neste caso, vamos usar a tabela criada anteriormente para entender como o código funciona:

```postgresql
testdb-# \d lista_clientes
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/postgresql-create-table/](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/postgresql-create-table/) for AI/LLM consumption.