# PostgreSQL CREATE TABLE: como criar novas tabelas

No PostgreSQL, o comando CREATE TABLE é utilizado para criar novas tabelas dentro de uma base de dados. Ao utilizar este comando, definem-se também diretamente várias especificações para a tabela e as suas colunas individuais.

## O que é o PostgreSQL `CREATE TABLE`?

O comando `CREATE TABLE` é utilizado no PostgreSQL para criar uma **nova tabela numa base de dados existente**. Ao fazê-lo, define-se sempre um nome único e exclusivo na base de dados para a tabela e as suas respetivas colunas. Cada coluna recebe também um nome e o tipo de dados que deve conter no final. É igualmente possível definir restrições tanto para colunas específicas como para todas elas durante a criação.

Dica Se, mais tarde, quiser alterar a configuração da tabela, pode utilizar o comando [ALTER TABLE](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/postgresql-alter-table/) no sistema de gestão de bases de dados para personalizar colunas específicas, sempre que necessário.

## Sintaxe e funcionalidade do `CREATE TABLE`

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

```postgresql
CREATE TABLE nombre_de_la_tabla(
columna1 tipo_de_dato PRIMARY KEY, 
columna2 tipo_de_dato, 
columna3 tipo_de_dato, 
... 
);
```

Primeiro, utiliza-se o comando principal `CREATE TABLE` para instruir o PostgreSQL a criar uma **nova tabela**. Em seguida, atribui-se-lhe um nome único. Os nomes das colunas individuais e a definição dos tipos de dados permitidos aparecem a seguir, entre parênteses.

Se quiseres incluir restrições (constraints), a sintaxe muda e ficaria assim:

```postgresql
CREATE TABLE nombre_de_la_tabla( 
columna1 tipo_de_dato PRIMARY KEY restricción, 
columna2 tipo_de_dato restricción, 
columna3 tipo_de_dato restricción, 
... 
);
```

Além do `PRIMARY KEY`, o PostgreSQL suporta os seguintes tipos de restrições:

- `NOT NULL`: desta forma, garante-se que a coluna em questão não contenha nenhum valor NULL.
- `UNIQUE`: pode definir esta restrição para garantir que todos os valores de uma coluna ou combinação de colunas sejam únicos.
- `CHECK`: utilize `CHECK` para definir as condições que devem ser cumpridas ao inserir ou atualizar dados.
- `FOREIGN KEY`: esta restrição é necessária para estabelecer relações com uma coluna de outra tabela.
- `DEFAULT`: define um valor por defeito para uma coluna caso não seja especificado um valor explícito ao inserir.

## Exemplo prático do PostgreSQL `CREATE TABLE`

A funcionalidade do PostgreSQL `CREATE TABLE` torna-se mais clara se a compreendermos através de um exemplo prático. Para isso, vamos criar uma nova tabela chamada «Lista de clientes». Inicialmente, ela deve conter quatro colunas: «ID», «Nome», «País» e «Endereço». Definimos «ID» como `PRIMARY KEY` e as colunas «ID» e «Nome» não devem ficar vazias. O código correspondente é o seguinte:

```postgresql
CREATE TABLE lista_de_clientes(
ID INT PRIMARY KEY NOT NULL,
Nombre VARCHAR(50) NOT NULL,
País VARCHAR(50),
Dirección VARCHAR(255)
);
```

A base de dados irá agora criar uma tabela vazia com este nome e as colunas que definiu, que poderá preencher posteriormente com valores. O resultado da tabela preenchida seria algo semelhante a isto:

<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>Mario Martínez</td>
      <td>Espanha</td>
      <td>Calle Mayor 1, 12345 Madrid</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>

## Ver tabelas criadas com `\d`

Para ter a certeza de que a ação PostgreSQL com `CREATE TABLE` foi executada com sucesso, pode utilizar o comando `\d`. Este comando mostra todas as tabelas existentes numa base de dados. Eis como se utiliza:

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

Também pode utilizar o comando para obter uma descrição mais detalhada de uma tabela específica. Para obter uma lista de todas as especificações do nosso exemplo anterior, utilize-o da seguinte forma:

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


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