Tutorial completo de MySQL 8: instalación, administración, tipos de datos y backup (2026)

Antes de crear tablas necesitas una base de datos. En MySQL, una base de datos es un contenedor lógico que agrupa tablas, vistas, procedimientos almacenados y funciones. Elegir el juego de caracteres (CHARACTER SET) y la ordenación (COLLATION) correctos al crear la base de datos evita problemas de codificación más adelante, especialmente con caracteres no-ASCII como acentos, ñ o emoji.

En este capítulo cubrimos CREATE DATABASE, la elección de utf8mb4 como juego de caracteres, ALTER DATABASE y las buenas prácticas de nomenclatura.

Crear una base de datos

-- Forma mínima
CREATE DATABASE tienda;

-- Forma completa (recomendada)
CREATE DATABASE tienda
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- Con IF NOT EXISTS para evitar error si ya existe
CREATE DATABASE IF NOT EXISTS tienda
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

utf8mb4: el juego de caracteres correcto para MySQL

MySQL tiene un tipo llamado utf8 que en realidad es un UTF-8 de 3 bytes (no el UTF-8 estándar). Esto significa que no puede almacenar caracteres que requieren 4 bytes, como emoji o caracteres de idiomas como el tibetano. Siempre usa utf8mb4 para Unicode completo.

Charset

Bytes por carácter

Emoji

Úsalo cuando...

utf8 (MySQL)

1-3

No

Nunca (nombre engañoso, es un subconjunto de UTF-8)

utf8mb4

1-4

Siempre — es el UTF-8 completo

latin1

1

No

Solo si necesitas compatibilidad con sistemas antiguos

Collations: cómo se ordenan y comparan las cadenas

-- Ver todas las collations disponibles para utf8mb4
SHOW COLLATION WHERE Charset = 'utf8mb4';

-- Las más usadas:
-- utf8mb4_unicode_ci   → basada en el estándar Unicode; sensible a acentos pero no a mayúsculas
-- utf8mb4_general_ci   → más rápida pero menos precisa (no recomendada para idiomas no-ingleses)
-- utf8mb4_bin          → comparación byte a byte; distingue mayúsculas y acentos
-- utf8mb4_spanish_ci   → ordenación específica para español (ñ en su lugar correcto)
-- utf8mb4_0900_ai_ci   → nueva en MySQL 8, accent-insensitive y case-insensitive

-- Ejemplo: la collation afecta a ORDER BY, LIKE, =...
-- Con _ci (case insensitive): 'hola' = 'HOLA' es TRUE
-- Con _bin: 'hola' = 'HOLA' es FALSE

Ver la base de datos activa y modificarla

-- Ver qué BD está seleccionada
SELECT DATABASE();

-- Cambiar la BD activa
USE tienda;

-- Modificar el charset de una BD existente (solo afecta a tablas nuevas)
ALTER DATABASE tienda CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Para cambiar también las tablas existentes, hay que modificar cada tabla:
ALTER TABLE clientes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Eliminar una base de datos

-- Elimina la BD y TODOS sus contenidos (tablas, datos, vistas...) SIN CONFIRMACIÓN
-- Irreversible si no tienes backup
DROP DATABASE tienda;
DROP DATABASE IF EXISTS tienda;  -- no falla si no existe

Buenas prácticas de nomenclatura

  • Nombres en minúsculas: tienda_online, no TiendaOnline. MySQL en Linux distingue mayúsculas en nombres de BD y tabla; en Windows no. Usar minúsculas garantiza portabilidad.
  • Separador guión bajo: tienda_online, no tiendaonline.
  • Sin espacios ni caracteres especiales en nombres de bases de datos o tablas.
  • Nombres descriptivos y cortos: blog, ecommerce, crm_empresa.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP