Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: sentencia ALTER TABLE
Este tutorial de Oracle describe cómo usar Oracle sentencia ALTER TABLE Agregue columnas, modifique columnas, elimine columnas, cambie el nombre de las columnas o cambie el nombre de las tablas (con sintaxis, ejemplos y ejercicios).
describir
La instrucción ALTER TABLE de Oracle se utiliza para agregar, modificar o eliminar/eliminar columnas en una tabla. La instrucción ALTER TABLE de Oracle también se utiliza para cambiar el nombre de las tablas.
Agregar columnas a la tabla
sintaxis
Para agregar una columna a una tabla, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name ADD column_name column_definition;
ejemplo
Veamos un ejemplo que muestra cómo usar la instrucción ALTER TABLE para agregar una columna a una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers ADD customer_name varchar2(45);
Este ejemplo de ALTER TABLE de Oracle agregará una columna denominada nombre_cliente a la tabla de clientes del tipo de datos varchar2(45).
En un ejemplo más complejo, puede usar la declaración ALTER TABLE para agregar una nueva columna que también tiene un valor predeterminado:
ALTER TABLE customers ADD city varchar2(40) DEFAULT 'Seattle';
En este ejemplo, se agregó una columna denominada ciudad a la tabla Clientes con un tipo de datos de varchar2(40) y un valor predeterminado de “Seattle”.
Agregar varias columnas a una tabla
sintaxis
Para agregar MÚLTIPLES COLUMNAS a una tabla existente, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name ADD (column_1 column_definition, column_2 column_definition, ... column_n column_definition);
ejemplo
Veamos un ejemplo que muestra cómo usar la instrucción ALTER TABLE para agregar varias columnas a una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers ADD (customer_name varchar2(45), city varchar2(40) DEFAULT 'Seattle');
Este ejemplo de Oracle ALTER TABLE agregará dos columnas a la tabla de clientes, nombre_cliente como campo varchar2(45) y ciudad como campo varchar2(40), con un valor predeterminado de “Seattle”.
Modificar una columna en una tabla
sintaxis
Para modificar una columna en una tabla existente, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name MODIFY column_name column_type;
ejemplo
Veamos un ejemplo que muestra cómo usar la declaración ALTER TABLE para modificar una columna en una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers MODIFY customer_name varchar2(100) NOT NULL;
Este ejemplo de Oracle ALTER TABLE modifica la columna denominada nombre_cliente a un tipo de datos de varchar2(100) y obliga a la columna a no permitir valores nulos.
En un ejemplo más complejo, puede usar la instrucción ALTER TABLE para agregar valores predeterminados y modificar definiciones de columnas:
ALTER TABLE customers MODIFY city varchar2(75) DEFAULT 'Seattle' NOT NULL;
En este ejemplo, la declaración ALTER TABLE modificará la columna denominada ciudad a un tipo de datos de varchar2(75), el valor predeterminado se establecerá en “Seattle” y la columna se establecerá para no permitir nulos.
Modificar varias columnas en una tabla
sintaxis
Para modificar varias columnas en una tabla existente, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name MODIFY (column_1 column_type, column_2 column_type, ... column_n column_type);
ejemplo
Veamos un ejemplo que muestra cómo usar la declaración ALTER TABLE para modificar varias columnas en una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers MODIFY (customer_name varchar2(100) NOT NULL, city varchar2(75) DEFAULT 'Seattle' NOT NULL);
Este ejemplo de ALTER TABLE de Oracle modifica las columnas nombre_cliente y ciudad. La columna nombre_cliente se establecerá en el tipo de datos varchar2(100) y no permitirá valores nulos. La columna de la ciudad se establecerá en el tipo de datos varchar2(75), su valor predeterminado se establecerá en “Seattle” y la columna no permitirá valores nulos.
eliminar columna de la tabla
sintaxis
Para DROP A COLUMN en una tabla existente, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name DROP COLUMN column_name;
ejemplo
Veamos un ejemplo que muestra cómo usar la instrucción ALTER TABLE para colocar una columna en una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers DROP COLUMN customer_name;
Este ejemplo de ALTER TABLE de Oracle eliminará la columna llamada nombre_cliente de la tabla llamada clientes.
Cambiar el nombre de la columna en la tabla
(Nuevo en Oracle 9i Versión 2)
sintaxis
A partir de Oracle 9i versión 2, ahora puede cambiar el nombre de las columnas.
Para cambiar el nombre de una columna en una tabla existente, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
ejemplo
Veamos un ejemplo que muestra cómo usar la declaración ALTER TABLE para cambiar el nombre de una columna en una tabla de Oracle.
Por ejemplo:
ALTER TABLE customers RENAME COLUMN customer_name TO cname;
Este ejemplo de Oracle ALTER TABLE cambia el nombre de una columna llamada nombre_cliente a cname.
renombrar tabla
sintaxis
Para cambiar el nombre de una tabla, la sintaxis de Oracle ALTER TABLE es:
ALTER TABLE table_name RENAME TO new_table_name;
ejemplo
Veamos un ejemplo que muestra cómo usar la declaración ALTER TABLE para cambiar el nombre de una tabla en Oracle.
Por ejemplo:
ALTER TABLE customers RENAME TO contacts;
Este ejemplo de Oracle ALTER TABLE cambiará el nombre de la tabla Clientes a Contactos.
Ejercicio 1:
Cambie el nombre de la tabla de departamentos a departamento de acuerdo con la tabla de departamentos a continuación.
CREATE TABLE departments ( department_id number(10) NOT NULL, department_name varchar2(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solución al Ejercicio #1:
La siguiente sentencia ALTER TABLE de Oracle cambia el nombre de la tabla de departamentos a departamentos:
ALTER TABLE departments RENAME TO depts;
Ejercicio de práctica #2:
De la siguiente tabla de empleados, agregue una columna denominada bonificación, que es un tipo de datos de número (6).
CREATE TABLE employees ( employee_number number(10) NOT NULL, employee_name varchar2(50) NOT NULL, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al ejercicio #2:
La siguiente instrucción ALTER TABLE de Oracle agregará una columna de bonificación a la tabla de empleados:
ALTER TABLE employees ADD bonus number(6);
Ejercicio de práctica #3:
De la siguiente tabla de clientes, agregue dos columnas: una llamada contact_name que es un tipo de datos varchar2(50) y otra llamada last_contacted que es un tipo de datos de fecha.
CREATE TABLE customers ( customer_id number(10) NOT NULL, customer_name varchar2(50) NOT NULL, address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solución al Ejercicio #3:
La siguiente instrucción Oracle ALTER TABLE agrega las columnas contact_name y last_contacted a la tabla de clientes:
ALTER TABLE customers ADD (contact_name varchar2(50), last_contacted date);
Ejercicio de práctica #4:
Cambie la columna employee_name al tipo de datos varchar2(75) de acuerdo con la siguiente tabla de empleados.
CREATE TABLE employees ( employee_number number(10) NOT NULL, employee_name varchar2(50) NOT NULL, department_id number(10), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al Ejercicio #4:
La siguiente instrucción ALTER TABLE de Oracle cambia el tipo de datos de la columna employee_name a varchar2(75):
ALTER TABLE employees MODIFY employee_name varchar2(75);
Ejercicio de práctica #5:
En la siguiente tabla de clientes, cambie la columna nombre_cliente para que no permita valores nulos y cambie la columna de estado al tipo de datos varchar2(2).
CREATE TABLE customers ( customer_id number(10) NOT NULL, customer_name varchar2(50), address varchar2(50), city varchar2(50), state varchar2(25), zip_code varchar2(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solución al Ejercicio #5:
La siguiente instrucción ALTER TABLE de Oracle modificará las columnas nombre_cliente y estado en la tabla de clientes en consecuencia:
ALTER TABLE customers MODIFY (customer_name varchar2(50) NOT NULL, state varchar2(2));
Ejercicio #6:
Según la siguiente tabla de empleados, elimine la columna de salario.
CREATE TABLE employees ( employee_number number(10) NOT NULL, employee_name varchar2(50) NOT NULL, department_id number(10), salary number(6), CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al Ejercicio #6:
La siguiente declaración ALTER TABLE de Oracle eliminará la columna de salario de la tabla de empleados:
ALTER TABLE employees DROP COLUMN salary;
Ejercicio #7:
Cambie el nombre de la columna Nombre del departamento a Nombre del departamento de acuerdo con la tabla de departamentos a continuación.
CREATE TABLE departments ( department_id number(10) NOT NULL, department_name varchar2(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solución al Ejercicio #7:
La siguiente sentencia ALTER TABLE de Oracle cambiará el nombre de la columna nombre_departamento a nombre_depto en la tabla de departamentos:
ALTER TABLE departments RENAME COLUMN department_name TO dept_name;