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.
SQL: sentencia ALTER TABLE
Este tutorial de SQL explica cómo usar SQL sentencia ALTER TABLE Agregue una columna, modifique una columna, elimine una columna, cambie el nombre de una columna o cambie el nombre de una tabla (hay muchos ejemplos claros y concisos). También hemos agregado algunos ejercicios que puede probar usted mismo.
describir
La instrucción SQL ALTER TABLE se usa para agregar, modificar o eliminar/eliminar columnas en una tabla. La instrucción SQL ALTER TABLE también se usa para cambiar el nombre de las tablas.
Agregar columnas a la tabla
sintaxis
Para agregar una columna a una tabla, la sintaxis de ALTER TABLE en SQL es:
ALTER TABLE table_name ADD column_name column_definition;
ejemplo
Veamos un ejemplo de SQL ALTER TABLE que agrega columnas.
Por ejemplo:
ALTER TABLE supplier ADD supplier_name char(50);
Este ejemplo de SQL ALTER TABLE agregará una columna denominada nombre_proveedor a la tabla de proveedores.
Agregar varias columnas a una tabla
sintaxis
Para agregar varias columnas a una tabla existente, la sintaxis de SQL ALTER TABLE es:
ALTER TABLE table_name ADD (column_1 column_definition, column_2 column_definition, ... column_n column_definition);
ejemplo
Veamos un ejemplo de SQL ALTER TABLE que agrega varias columnas.
Por ejemplo:
ALTER TABLE supplier ADD (supplier_name char(50), city char(45));
Este ejemplo de SQL ALTER TABLE agregará dos columnas a la tabla de proveedores, nombre_proveedor como campo char(50) y ciudad como campo char(45).
Modificar una columna en una tabla
sintaxis
Para modificar una columna en una tabla existente, la sintaxis de SQL ALTER TABLE es:
Para Oracle, MySQL, MariaDB:
ALTER TABLE table_name MODIFY column_name column_type;
Para el servidor SQL:
ALTER TABLE table_name ALTER COLUMN column_name column_type;
Para PostgreSQL:
ALTER TABLE table_name ALTER COLUMN column_name TYPE column_definition;
ejemplo
Veamos un ejemplo de cómo usar la declaración ALTER TABLE para modificar una columna llamada nombre_proveedor. Tenga en cuenta que la mayoría de las bases de datos tienen una sintaxis ligeramente diferente.
Para oráculo:
ALTER TABLE supplier MODIFY supplier_name char(100) NOT NULL;
Para MySQL y MariaDB:
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL;
Para el servidor SQL:
ALTER TABLE supplier ALTER COLUMN supplier_name VARCHAR(100) NOT NULL;
Para PostgreSQL:
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL;
Modificar varias columnas en una tabla
sintaxis
Para modificar varias columnas en una tabla existente, la sintaxis de SQL ALTER TABLE es:
Para oráculo:
ALTER TABLE table_name MODIFY (column_1 column_type, column_2 column_type, ... column_n column_type);
Para MySQL y MariaDB:
ALTER TABLE table_name MODIFY column_1 column_definition [ FIRST | AFTER column_name ], MODIFY column_2 column_definition [ FIRST | AFTER column_name ], ... ;
Para PostgreSQL:
ALTER TABLE table_name ALTER COLUMN column_name TYPE column_definition, ALTER COLUMN column_name TYPE column_definition, ... ;
ejemplo
Veamos un ejemplo del uso de la sentencia ALTER TABLE para modificar varias columnas. En este ejemplo, modificaremos dos columnas denominadas nombre_proveedor y ciudad.
Para oráculo:
ALTER TABLE supplier MODIFY (supplier_name char(100) NOT NULL, city char(75));
Para MySQL y MariaDB:
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL, MODIFY city VARCHAR(75);
Para PostgreSQL:
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL, ALTER COLUMN city TYPE CHAR(75);
eliminar columna de la tabla
sintaxis
Para colocar una columna en una tabla existente, la sintaxis de SQL ALTER TABLE es:
ALTER TABLE table_name DROP COLUMN column_name;
ejemplo
Veamos un ejemplo de eliminación (es decir, eliminación) de una columna de una tabla.
Por ejemplo:
ALTER TABLE supplier DROP COLUMN supplier_name;
Este ejemplo de SQL ALTER TABLE eliminará la columna denominada nombre_proveedor de la tabla denominada proveedor.
Cambiar el nombre de la columna en la tabla
sintaxis
Para cambiar el nombre de una columna en una tabla existente, la sintaxis de SQL ALTER TABLE es:
Para Oracle y PostgreSQL:
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
Para SQL Server (usando un procedimiento almacenado llamado sp_rename):
sp_rename 'table_name.old_column', 'new_name', 'COLUMN';
Para MySQL y MariaDB:
ALTER TABLE table_name CHANGE COLUMN old_name TO new_name;
ejemplo
Veamos un ejemplo de cambio de nombre de una columna en la tabla de proveedores de nombre_proveedor a sname.
Para Oracle (9i Rel2 y posterior) y PostgreSQL:
ALTER TABLE supplier RENAME COLUMN supplier_name TO sname;
Para SQL Server (usando un procedimiento almacenado llamado sp_rename):
sp_rename 'supplier.supplier_name', 'sname', 'COLUMN';
Para MySQL y MariaDB:
ALTER TABLE supplier CHANGE COLUMN supplier_name sname VARCHAR(100);
En MySQL y MariaDB, debe especificar el tipo de datos de una columna al cambiarle el nombre.
renombrar tabla
sintaxis
Para cambiar el nombre de una tabla, la sintaxis de SQL ALTER TABLE es:
Para Oracle, MySQL, MariaDB, PostgreSQL y SQLite:
ALTER TABLE table_name RENAME TO new_table_name;
Para SQL Server (usando un procedimiento almacenado llamado sp_rename):
sp_rename 'table_name', 'new_table_name';
ejemplo
Veamos un ejemplo de cambio de nombre de una tabla llamada proveedor a un nuevo nombre de proveedor.
Para Oracle, MySQL, MariaDB, PostgreSQL y SQLite:
ALTER TABLE supplier RENAME TO vendor;
Para SQL Server (usando un procedimiento almacenado llamado sp_rename):
sp_rename 'supplier', 'vendor';
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 int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solución al Ejercicio #1:
La siguiente instrucción SQL ALTER TABLE 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 salario, que es un tipo de datos int.
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al ejercicio #2:
La siguiente instrucción SQL ALTER TABLE agregará una columna de salario a la tabla de empleados:
ALTER TABLE employees ADD salary int;
Ejercicio de práctica #3:
De la siguiente tabla de clientes, agregue dos columnas: una llamada contact_name que es un tipo de datos char(50) y otra llamada last_contacted que es un tipo de datos de fecha.
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50) NOT NULL, address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solución al Ejercicio #3:
La siguiente instrucción SQL ALTER TABLE agregará las columnas contact_name y last_contacted a la tabla de clientes:
ALTER TABLE customers ADD (contact_name char(50), last_contacted date);
Ejercicio de práctica #4:
Cambie la columna employee_name al tipo de datos char(75) de acuerdo con la tabla de empleados a continuación.
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al Ejercicio #4:
La siguiente instrucción SQL ALTER TABLE cambiará el tipo de datos de la columna nombre_empleado a char(75):
ALTER TABLE employees MODIFY employee_name char(75);
Ejercicio de práctica #5:
Según la siguiente tabla de clientes, cambie la columna nombre_cliente para que no permita valores nulos y cambie la columna de estado a un tipo de datos char(2).
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50), address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) );
Solución al Ejercicio #5:
La siguiente instrucción SQL ALTER TABLE modificará las columnas nombre_cliente y estado en la tabla de clientes en consecuencia:
ALTER TABLE customers MODIFY (customer_name char(50) NOT NULL, state char(2));
Ejercicio #6:
Según la siguiente tabla de empleados, elimine la columna de salario.
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, salary int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) );
Solución al Ejercicio #6:
La siguiente instrucción SQL ALTER TABLE 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 int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) );
Solución al Ejercicio #7:
La siguiente instrucción SQL ALTER TABLE 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;