# PostgreSQL ALTER TABLE: añadir o eliminar columnas

Puedes usar el comando ALTER TABLE para personalizar tablas en PostgreSQL. El comando se utiliza con una acción para, por ejemplo, añadir o modificar columnas.

## ¿Qué es PostgreSQL `ALTER TABLE`?

El comando `ALTER TABLE` se utiliza en [PostgreSQL](https://www.ionos.com/es-us/digitalguide/servidores/know-how/postgresql/) para **modificar tablas** existentes. Se puede usar para añadir o eliminar una columna o para personalizarla según tus propias necesidades. Además, PostgreSQL `ALTER TABLE` se utiliza para establecer o eliminar restricciones para una tabla en el [sistema gestor de base de datos](https://www.ionos.com/es-us/digitalguide/hosting/cuestiones-tecnicas/sistema-gestor-de-base-de-datos-sgbd/). Para lograr el resultado deseado, se debe **especificar el comando con una acción**.

## `ALTER TABLE`: sintaxis

Para una comprensión básica, vale la pena echar un vistazo a la sintaxis básica de `ALTER TABLE`. Es la siguiente:

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

El comando real es seguido por el nombre de la tabla en la que se quiere realizar cambios. A continuación, especifica el comando PostgreSQL `ALTER TABLE` con la acción deseada.

Consejo Para crear una nueva tabla, utiliza el comando [CREATE TABLE](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/postgresql-create-table/) en PostgreSQL.

## PostgreSQL `ALTER TABLE`: ejemplos

En las siguientes secciones, se muestran ejemplos prácticos para ilustrar cómo funciona `ALTER TABLE`. Para ello, se ha creado una tabla de ejemplo con el nombre “Clientes”, que inicialmente contiene tres columnas y tres filas. Su aspecto es el siguiente:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nombre</th>
      <th>Ciudad</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>Los Ángeles</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>Nueva York</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Santos</td>
      <td>Chicago</td>
    </tr>
  </tbody>
</table>

Esto ahora se puede personalizar de varias maneras con `ALTER TABLE` en PostgreSQL.

### Añadir columna con PostgreSQL `ADD COLUMN`

Para añadir una columna adicional, utiliza `ALTER TABLE` en combinación con PostgreSQL `ADD COLUMN`. Esta acción tiene dos parámetros: el nombre de la columna y el tipo de datos de la columna. La sintaxis es la siguiente:

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

Si queremos añadir una columna para la dirección a nuestra tabla “Clientes”, utilizamos PostgreSQL `ADD COLUMN` de la siguiente manera:

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

La nueva tabla ampliada tiene ahora el siguiente aspecto:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nombre</th>
      <th>Ciudad</th>
      <th>Dirección</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Sánchez</td>
      <td>Los Ángeles</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Morales</td>
      <td>Nueva York</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Santos</td>
      <td>Chicago</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Borrar columnas con `DROP COLUMN`

Se procede de forma muy similar si queremos eliminar una columna de la tabla existente. Para ello, utilizamos PostgreSQL `ALTER TABLE` en combinación con la acción `DROP COLUMN`. Esta acción tiene como único parámetro el nombre de la columna. Esta es la sintaxis:

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

Para eliminar la columna “Ciudad”, utilizamos este código:

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

La tabla ahora solo consta de tres columnas:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nombre</th>
      <th>Dirección</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>Santos</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Renombrar columnas con `RENAME COLUMN`

También se puede renombrar una columna existente, lo que puede ser una buena alternativa a borrar o añadir nuevas columnas. La sintaxis de `RENAME COLUMN` dentro de `ALTER TABLE` es la siguiente:

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

Aquí convertimos la columna “Nombre” en la columna “Nombre del cliente”:

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

En nuestra tabla, solo cambia el nombre de la columna como deseamos:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>Nombre del cliente</th>
      <th>Dirección</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>Santos</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

### Otras acciones para PostgreSQL `ALTER TABLE`

Hay muchas otras acciones que puedes utilizar junto con `ALTER TABLE`. Estas son las más importantes:

Para cambiar el **tipo de datos** de una columna:

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

Para especificar que una columna debe **recibir un valor**:

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

Para establecer restricciones como `UNIQUE` o `PRIMARY KEY` para una columna, utiliza PostgreSQL `ALTER TABLE` en combinación con la acción `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/es-us/digitalguide/servidores/configuracion/postgresql-alter-table/](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/postgresql-alter-table/) for AI/LLM consumption.