# PostgreSQL ALTER TABLE: adicionar ou eliminar colunas

Pode utilizar o comando ALTER TABLE para personalizar tabelas no PostgreSQL. O comando é utilizado com uma ação para, por exemplo, adicionar ou alterar colunas.

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

O comando `ALTER TABLE` é utilizado no PostgreSQL para **alterar tabelas** existentes. Pode ser utilizado para adicionar ou eliminar uma coluna, ou para personalizá-la de acordo com as suas necessidades. Além disso, o PostgreSQL `ALTER TABLE` é utilizado para definir ou eliminar restrições numa tabela no sistema de gestão de bases de dados. Para obter o resultado pretendido, é necessário **especificar o comando com uma ação**.

## `ALTER TABLE`: sintaxe

Para uma compreensão básica, vale a pena dar uma olhada na sintaxe básica do `ALTER TABLE`. É a seguinte:

```postgresql
ALTER TABLE nombre_de_la_tabla acción;
```

O comando principal é seguido do nome da tabela na qual se pretende efetuar alterações. Em seguida, especifique o comando PostgreSQL `ALTER TABLE` com a ação pretendida.

Dica Para criar uma nova tabela, utilize o comando [CREATE TABLE](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/postgresql-create-table/) no PostgreSQL.

## PostgreSQL `ALTER TABLE`: exemplos

Nas secções seguintes, são apresentados exemplos práticos para ilustrar o funcionamento `ALTER TABLE`. Para tal, foi criada uma tabela de exemplo com o nome «Clientes», que inicialmente contém três colunas e três linhas. A sua aparência é a seguinte:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Cidade</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>Madrid</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>Barcelona</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Simón</td>
      <td>Alicante</td>
    </tr>
  </tbody>
</table>

Agora, isto pode ser personalizado de várias formas com `ALTER TABLE` do PostgreSQL.

### Adicionar uma coluna no PostgreSQL `ADD COLUMN`

Para adicionar uma coluna adicional, utilize o comando ``ALTER TABLE`em conjunto com o PostgreSQL`ADD COLUMN`. Esta ação tem dois parâmetros: o nome da coluna e o tipo de dados da coluna. A sintaxe é a seguinte:

```postgresql
ALTER TABLE nombre_de_tabla ADD COLUMN nombre_de_columna tipo_datos;
```

Se quisermos adicionar uma coluna para o endereço à nossa tabela «Clientes», utilizamos o PostgreSQL `ADD COLUMN` da seguinte forma:

```postgresql
ALTER TABLE Clientes ADD COLUMN Dirección VARCHAR(255);
```

A nova tabela ampliada tem agora o seguinte aspeto:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Cidade</th>
      <th>Endereço</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>Madrid</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>Barcelona</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Simón</td>
      <td>Alicante</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Apagar colunas com `DROP COLUMN`

O procedimento é muito semelhante se quisermos eliminar uma coluna da tabela existente. Para tal, utilizamos a ação PostgreSQL `ALTER TABLE` em combinação com a ação `DROP COLUMN`. Esta ação tem como único parâmetro o nome da coluna. Eis a sintaxe:

```postgresql
ALTER TABLE nombre_de_tabla DROP COLUMN nombre_de_columna;
```

Para eliminar a coluna «Cidade», utilizamos este código:

```postgresql
ALTER TABLE clientes DROP COLUMN ciudad;
```

A tabela agora tem apenas três colunas:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nome</th>
      <th>Endereço</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Simón</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Renomear colunas com `RENAME COLUMN`

Também é possível renomear uma coluna existente, o que pode ser uma boa alternativa à eliminação ou adição de novas colunas. A sintaxe de `RENAME COLUMN` dentro de `ALTER TABLE` é a seguinte:

```postgresql
ALTER TABLE nombre_de_tabla RENAME COLUMN nombre_de_columna TO nuevo_nombre;
```

Aqui, transformamos a coluna «Nome» na coluna «Nome do cliente»:

```postgresql
ALTER TABLE clientes RENAME COLUMN nombre TO nombre_cliente;
```

Na nossa tabela, basta alterar o nome da coluna conforme desejamos:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nome do cliente</th>
      <th>Endereço</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Simón</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Outras ações para o PostgreSQL `ALTER TABLE`

Existem muitas outras ações que podes utilizar em conjunto com `ALTER TABLE`. Estas são as mais importantes:

Para alterar o **tipo de dados** de uma coluna:

```postgresql
ALTER TABLE nombre_de_tabla ALTER COLUMN nombre_de_columna TYPE tipo_datos;
```

Para indicar que uma coluna deve **receber um valor**:

```postgresql
ALTER TABLE nombre_de_tabla ALTER COLUMN nombre_de_columna SET NOT NULL;
```

Para definir restrições como `UNIQUE` ou `PRIMARY KEY` para uma coluna, utilize o PostgreSQL `ALTER TABLE` em combinação com a ação `ADD CONSTRAINT`:

```postgresql
ALTER TABLE nombre_de_tabla ADD CONSTRAINT nombre_de_restricción definición_de_restricción;
```


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