Articles

Oracle ALTER TABLE ADD Column By Examples

Posted on

Resumen: en este tutorial, aprenderá a utilizar la sentencia Oracle ALTER TABLE ADD column para añadir una o más columnas a una tabla.

Para añadir una nueva columna a una tabla, se utiliza la sentencia ALTER TABLE de la siguiente manera:

ALTER TABLE table_name ADD column_name data_type constraint;

En esta sentencia:

  • Primero, se especifica el nombre de la tabla, a la que se quiere añadir la nueva columna, después de la cláusula ALTER TABLE.
  • En segundo lugar, se especifica el nombre de la columna, el tipo de datos y su restricción.
  • Tenga en cuenta que no puede añadir una columna que ya existe en la tabla; al intentar hacerlo se producirá un error. Además, la sentencia de columna ALTER TABLE ADD añade la nueva columna al final de la tabla. Oracle no proporciona ninguna forma directa que permita especificar la posición de la nueva columna como otros sistemas de bases de datos como MySQL.

    En caso de querer añadir más de una columna, se utiliza la siguiente sintaxis:

ALTER TABLE table_name ADD ( column_name_1 data_type constraint, column_name_2 data_type constraint, ...);

En esta sintaxis, se separan dos columnas con una coma.

Ejemplos de columna ALTER TABLE ADD de Oracle

Creemos una tabla llamada members para la demostración.

CREATE TABLE members( member_id NUMBER GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR2(50), last_name VARCHAR2(50), PRIMARY KEY(member_id));

La siguiente sentencia añade una nueva columna llamada birth_date a la tabla members:

ALTER TABLE members ADD birth_date DATE NOT NULL;

En este ejemplo, la columna birth_date es una columna DATE y no acepta nulos.

Supongamos que quieres registrar el momento en el que se crea y actualiza una fila. Para ello, necesitas añadir dos columnas created_at y updated_at como sigue:

ALTER TABLE members ADD( created_at TIMESTAMP WITH TIME ZONE NOT NULL, updated_at TIMESTAMP WITH TIME ZONE NOT NULL );

Los tipos de datos de las columnas created_at y updated_at son TIMESTAMP WITH TIME ZONE. Estas columnas tampoco aceptan null.

Para comprobar si una columna existe en una tabla, se consultan los datos desde la vista user_tab_cols. Por ejemplo, la siguiente sentencia comprueba si la tabla members tiene la columna first_name.

SELECT COUNT(*)FROM user_tab_colsWHERE column_name = 'FIRST_NAME' AND table_name = 'MEMBERS';

Esta consulta resulta útil cuando se quiere comprobar si una columna existe en una tabla antes de añadirla.

Por ejemplo, el siguiente bloque PL/SQL comprueba si la tabla members tiene la columna effective_date antes de añadirla.

SET SERVEROUTPUT ON SIZE 1000000DECLARE v_col_exists NUMBER BEGIN SELECT count(*) INTO v_col_exists FROM user_tab_cols WHERE column_name = 'EFFECTIVE_DATE' AND table_name = 'MEMBERS'; IF (v_col_exists = 0) THEN EXECUTE IMMEDIATE 'ALTER TABLE members ADD effective_date DATE'; ELSE DBMS_OUTPUT.PUT_LINE('The column effective_date already exists'); END IF;END;/

Si ejecutas el bloque a la primera, la columna effective_date se añade al final de la tabla members. Sin embargo, una vez que lo ejecutes desde la segunda vez, verás el siguiente mensaje:

The column effective_date already exists

que es lo que esperábamos.

En este tutorial, ha aprendido a utilizar la sentencia de columna de Oracle ALTER TABLE ADD para añadir una o más columnas a una tabla existente.

  • ¿Ha sido útil este tutorial?
  • SíNo

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *