Guía Completa de ALTER TABLE en MySQL
📌 Guía Completa de ALTER TABLE en MySQL
En este post aprenderás todas las opciones principales de ALTER TABLE en MySQL, para modificar tus tablas existentes: agregar, eliminar o cambiar columnas, modificar tipos, gestionar claves foráneas, índices y más.
🔹 1️⃣ Agregar columnas
ALTER TABLE posts ADD categoria VARCHAR(100);
ALTER TABLE posts ADD publicado BOOLEAN DEFAULT FALSE AFTER contenido;
- AFTER columna → indica dónde colocar la nueva columna.
- FIRST → para ponerla al inicio de la tabla.
🔹 2️⃣ Modificar tipo de columna
ALTER TABLE posts MODIFY categoria TEXT;
ALTER TABLE posts MODIFY publicado TINYINT(1) NOT NULL DEFAULT 0;
Usa MODIFY para cambiar tipo y propiedades de la columna existente.
🔹 3️⃣ Cambiar nombre de columna
ALTER TABLE posts CHANGE categoria categoria_nombre VARCHAR(150);
Sintaxis: CHANGE columna_antigua columna_nueva tipo
Permite cambiar el nombre y el tipo al mismo tiempo.
🔹 4️⃣ Eliminar columnas
ALTER TABLE posts DROP COLUMN categoria;
🔹 5️⃣ Agregar o quitar restricciones
Agregar clave foránea:
ALTER TABLE posts
ADD CONSTRAINT fk_usuario
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
ON DELETE CASCADE;
Eliminar clave foránea:
ALTER TABLE posts DROP FOREIGN KEY fk_usuario;
🔹 6️⃣ Renombrar la tabla
ALTER TABLE posts RENAME TO articulos;
🔹 7️⃣ Cambiar motor o charset
ALTER TABLE posts ENGINE = InnoDB;
ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
🔹 8️⃣ Cambiar columna de posición
ALTER TABLE posts MODIFY creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP FIRST;
ALTER TABLE posts MODIFY categoria VARCHAR(100) AFTER titulo;
🔹 9️⃣ Agregar índice
ALTER TABLE posts ADD INDEX idx_titulo (titulo);
ALTER TABLE posts ADD UNIQUE INDEX idx_usuario_titulo (usuario_id, titulo);
🔹 Resumen de las opciones más usadas
| Acción | Comando |
|---|---|
| Agregar columna | ADD columna tipo |
| Modificar tipo/propiedades | MODIFY columna tipo |
| Renombrar columna | CHANGE columna_antigua columna_nueva tipo |
| Eliminar columna | DROP COLUMN columna |
| Agregar FK | ADD CONSTRAINT fk FOREIGN KEY ... |
| Eliminar FK | DROP FOREIGN KEY fk |
| Cambiar tabla | RENAME TO nueva_tabla |
| Cambiar motor | ENGINE = InnoDB |
| Cambiar charset | CONVERT TO CHARACTER SET utf8mb4 |
| Agregar índice | ADD INDEX/UNIQUE INDEX ... |
Post a Comment