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
.