MYSQL – ALTERAR, ELIMINAR, RENOMBRAR, MODIFICAR

⚡ Resumen inteligente

ALTER, DROP, RENAME y MODIFY son las MySQL Comandos que modifican una base de datos una vez que ya está en uso. Permiten agregar, eliminar, renombrar y redefinir objetos como tablas y columnas sin descartar las filas ya almacenadas.

  • 🛠️ Comando ALTER: ALTER TABLE redefine un objeto que ya existe, de modo que un esquema en funcionamiento absorbe los nuevos requisitos sin necesidad de reconstruirlo.
  • AÑADIR COLUMNA: ALTER TABLE ADD COLUMN agrega un campo, y las filas existentes conservan todos los valores que ya contenían.
  • 🗑️ Comando DROP: DROP elimina permanentemente: una base de datos, una tabla o una sola columna mediante ALTER TABLE DROP COLUMN.
  • 🔁 Comando para renombrar: La función RENAME TABLE solo cambia el nombre de una tabla, y no se pierde ningún dato que contenga.
  • ✏️ CAMBIO Palabra clave: La instrucción CHANGE cambia el nombre de una columna y redefine su tipo y restricciones en una sola instrucción, por lo que se requieren ambos nombres de columna.
  • 🧩 MODIFICAR Palabra clave: MODIFY altera el tipo y las restricciones mientras se mantieneping el nombre, la opción más segura para una edición solo de texto.
  • 📍 DESPUÉS Palabra clave: AFTER coloca la columna recién agregada en la posición elegida en lugar de al final de la tabla.

MySQL ALTERAR, ELIMINAR, RENOMBRAR y MODIFICAR

¿Qué es el comando ALTER en MySQL?

El ALTER Este comando modifica una base de datos, tabla, vista u otro objeto de base de datos existente que necesite cambiar durante el ciclo de vida de la base de datos. Es el comando que permite que un esquema evolucione después de haber sido creado y llenado con datos.

Las necesidades empresariales rara vez son estáticas, y el diseño de una base de datos debe evolucionar con ellas. Supongamos que el diseño de la base de datos de Myflix ya está implementado y los usuarios la utilizan, y solo entonces el equipo se da cuenta de que se omitió información vital. Nadie quiere perder las filas existentes; simplemente desean registrar la nueva información junto con ellas.

La instrucción ALTER cubre precisamente esa situación. Puede cambiar el tipo de datos de un campo de cadena a número, renombrar un campo o agregar una columna completamente nueva a una tabla, todo ello sin alterar los datos ya almacenados en la tabla.

Una vez establecido el propósito del comando, el siguiente paso es la sintaxis que lo ejecuta.

MySQL Sintaxis ALTER

A continuación se muestra la sintaxis básica que se utiliza para agregar una columna a una tabla que ya existe.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

AQUÍ

  • “ALTERAR TABLA `nombre_tabla`” es el comando que dice MySQL servidor para modificar la tabla denominada `table_name`.
  • “AÑADIR COLUMNA `nombre_columna` `tipo_datos`” es el comando que dice MySQL El servidor agregará una nueva columna llamada `column_name` con el tipo de datos `data_type`.

Supongamos que Myflix ha implementado la facturación y los pagos en línea. Para ello, es necesario añadir un campo para el número de tarjeta de crédito a la tabla de miembros. Antes de realizar cualquier modificación, conviene revisar la estructura actual de la tabla. El script que se muestra a continuación lo hace.

SHOW COLUMNS FROM `members`;
Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombres completos varchar (350) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

💡 Nota sobre int(11): El número entre paréntesis solo indica el ancho de visualización. MySQL 8.0.17 lo dejó obsoleto para tipos enteros, por lo que un servidor moderno informa esta columna simplemente como intEl tamaño de almacenamiento no ha cambiado.

El script que se muestra a continuación agrega el nuevo campo a la tabla de miembros.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

Al ejecutar este script en myflixdb, se agrega una columna llamada credit_card_number a la tabla members con el tipo de datos VARCHAR. Al ejecutar nuevamente el script SHOW COLUMNS se obtiene el siguiente resultado.

Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombres completos varchar (350) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL
Número de Tarjeta de Crédito varchar (25) Si NULL

La fila resaltada confirma que credit_card_number se ha añadido a la tabla members, y los datos que ya se encuentran en las demás columnas no se ven afectados por esta adición.

Agregar una columna es solo una parte del proceso. Un esquema también debe eliminar los objetos que ya no necesita, y esa es la función del comando DROP.

¿Qué es el comando DROP en MySQL?

El comando DROP elimina un objeto de forma permanente. Se utiliza para

  1. Eliminar una base de datos de la MySQL servidor.
  2. Eliminar un objeto, como una tabla o una columna, de una base de datos.

⚠️ Advertencia: La operación DROP no es reversible. Ni el objeto ni las filas que contiene se pueden recuperar sin una copia de seguridad, así que ejecute una consulta SELECT en el destino y confirme primero la copia de seguridad.

Necesarioping una columna

En el ejemplo ALTER anterior, se agregó una columna llamada credit_card_number a la tabla members. Supongamos que la función de facturación en línea se pospone y que esa columna debe eliminarse nuevamente. El siguiente script lo hace.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

Al ejecutar el script, se elimina la columna credit_card_number de la tabla members. Al volver a listar las columnas, se confirma el resultado.

SHOW COLUMNS FROM `members`;
Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombres completos varchar (350) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

El número de tarjeta de crédito ha desaparecido de la lista de campos.

TABLA DE GOTA

La sintaxis para eliminar una tabla completa de una base de datos es la siguiente.

DROP TABLE `sample_table`;

Aplicada a un objeto real, la afirmación se ve así.

DROP TABLE `categories_archive`;

Al ejecutarlo, se elimina de la base de datos la tabla llamada `categories_archive` y todas las filas que contiene.

SOLTAR BASE DE DATOS

La misma palabra clave elimina un esquema completo. Agregar IF EXISTS suprime el error que MySQL Se activa cuando el objetivo ya no está presente, lo cual es útil dentro de scripts que se ejecutan más de una vez.

DROP DATABASE IF EXISTS `myflixdb_backup`;

Eliminar un objeto es definitivo. Cuando el objeto en sí debe permanecer y solo su nombre es incorrecto, el comando RENAME es la herramienta adecuada.

¿Qué es el comando RENAME en MySQL?

El comando RENAME cambia el nombre de un objeto de base de datos existente, como una tabla o una columna, por un nombre nuevo. Cambiar el nombre de una tabla no implica la pérdida de ninguno de los datos que contiene.

El comando tiene la siguiente sintaxis básica.

RENAME TABLE `current_table_name` TO `new_table_name`;

Para renombrar la tabla movierentals a movie_rentals, se utiliza el siguiente script.

RENAME TABLE `movierentals` TO `movie_rentals`;

Al ejecutarla, la tabla `movierentals` cambia de nombre a `movie_rentals`. Dado que el cambio de nombre solo modifica la etiqueta, al revertir la misma instrucción se restaura el nombre original.

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE maneja el nombre de una tabla. Renombrar una tabla columnay cambiar lo que contiene, es el trabajo de la palabra clave CAMBIO.

CAMBIAR palabra clave

La palabra clave CAMBIO le permite

  1. Cambiar el nombre de una columna
  2. Cambiar el tipo de datos de la columna
  3. Cambiar las restricciones de columna

Consideremos un ejemplo. El campo full_names en la tabla members es del tipo de datos varchar con un ancho de 350, como confirma el siguiente script.

SHOW COLUMNS FROM `members`;
Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombres completos varchar (350) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

Supongamos que el requisito es

  1. Cambia el nombre del campo de “full_names” a “fullname”.
  2. Cámbialo al tipo de datos char con un ancho de 250.
  3. Agregar una restricción NOT NULL

Las tres modificaciones se realizan mediante una única instrucción CHANGE.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

Al ejecutarlo contra myflixdb y luego ejecutar el script SHOW COLUMNS se obtiene el siguiente resultado.

Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombre completo char (250) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

La columna ahora se llama fullname, contiene char(250) y rechaza los valores NULL.

MODIFICAR palabra clave

La palabra clave MODIFY le permite

  1. Modificar el tipo de datos de la columna
  2. Modificar las restricciones de columna

En el ejemplo de CAMBIO anterior, el nombre del campo tuvo que proporcionarse dos veces, aunque el cambio de nombre era solo una parte del objetivo. Omitir el nombre del campo en una instrucción CHANGE genera un error. Cuando solo es necesario ajustar el tipo de datos y las restricciones, y el nombre debe permanecer sin cambios, la función MODIFY realiza la tarea con una sola mención de la columna.

El siguiente script cambia el ancho del campo "fullname" de 250 a 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

Al ejecutarlo en myflixdb y luego ejecutar el script SHOW COLUMNS se obtiene el resultado que se muestra a continuación.

Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombre completo char (50) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

⚠️ Advertencia: Reducir el tamaño de una columna trunca los datos que ya no caben. Cualquier nombre de más de 50 caracteres se recorta con esta instrucción, así que compruebe el valor existente más largo con una SELECT Consulta antes de reducir el tamaño de un campo.

CAMBIAR vs MODIFICAR vs RENOMBRAR COLUMNA

Las tres palabras clave se superponen, y elegir la incorrecta es la causa más común de errores en este ámbito. La tabla que aparece a continuación las presenta una al lado de la otra.

Palabra clave Cambia el nombre de la columna. Modifica el tipo y las restricciones Se requiere el nombre anterior Uso típico
CAMBIO Sí: Sí: Sí, además del nuevo nombre Cambiar el nombre y redefinir en una sola declaración.
MODIFICAR No Sí: Nombre dado una sola vez Ampliar, estrechar o volver a escribir una columna
CAMBIAR EL NOMBRE DE LA COLUMNA Sí: No Sí, además del nuevo nombre Cambiar nombre solamente, desde MySQL 8.0 en adelante

MySQL La versión 8.0 añadió una cuarta opción para el caso más sencillo: cambiar el nombre sin ninguna redefinición.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

El tipo y el nombre ya están definidos. La cuestión que queda por resolver es dónde se ubicará la nueva columna en la tabla, lo cual se controla con la palabra clave AFTER.

DESPUÉS de la palabra clave

Por defecto, una columna añadida con ALTER TABLE se coloca al final de la tabla. Para ubicarla en una posición específica, se combina el comando ALTER con la palabra clave AFTER.

El siguiente script agrega “date_of_registration” directamente después de date_of_birth en la tabla members.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

Al ejecutarlo en myflixdb y luego ejecutar el script SHOW COLUMNS se obtiene el resultado que se muestra a continuación.

Campo Tipo Nulo Clave Predeterminado Extra
número de socio int (11) NO PRI NULL autoincremento
nombre completo char (50) NO NULL
género varchar (6) Si NULL
fecha de nacimiento datos Si NULL
fecha_de_registro datos Si NULL
dirección física varchar (255) Si NULL
dirección postal varchar (255) Si NULL
número_de_contacto varchar (75) Si NULL
o enviar un email. varchar (255) Si NULL

La fila resaltada es la columna añadida después de date_of_birth. La palabra clave FIRST funciona de la misma manera y mueve la nueva columna al principio de la tabla.

Preguntas Frecuentes

No. Las sentencias DDL como ALTER, DROP y RENAME se confirman implícitamente en MySQLPor lo tanto, una transacción abierta no puede deshacerlas. La única forma de volver atrás es restaurar desde una copia de seguridad.

Depende del cambio. Muchas modificaciones de InnoDB se ejecutan en línea y permiten lecturas y escrituras concurrentes, mientras que otras copian la tabla completa y bloquean las escrituras. Agregue las cláusulas ALGORITHM y LOCK para especificar qué operaciones aceptará.

DROP elimina el objeto en sí. TRUNCATE vacía una tabla pero conserva su estructura. BORRAR Elimina las filas seleccionadas y se puede filtrar con una cláusula WHERE.

Por lo general, sí. Los asistentes de IA integrados en clientes como MySQL Banco de trabajo Convierta una solicitud como "agregar una columna de fecha que admita valores nulos después de date_of_birth" en una sintaxis válida. RevRevise la declaración generada comparándola con el esquema en vivo antes de ejecutarla.

Solo parcialmente. Las herramientas de revisión de IA señalan riesgos evidentes, como una columna eliminada que aún aparece en una consulta o un tipo de dato restringido que trunca los datos. No pueden ver a todos los usuarios que realizan la llamada, por lo que sigue siendo necesario realizar una prueba.

Resumir este post con: