Curso de MySQL

Crear una base de datos en MySQL: CREATE DATABASE paso a paso

Por Víctor Peña · Publicado el

Crear una base de datos en MySQL

Hola, ¿cómo están? Continuando con el curso de MySQL, hoy creamos nuestra primera base de datos. Con la seguridad ya configurada, es momento de empezar a construir.

¡Empecemos!

La sentencia básica

CREATE DATABASE clinica;

Eso es todo. Ya tienes una base de datos vacía, lista para recibir tablas.

Para ver que existe:

SHOW DATABASES;

Verás la tuya junto a las del sistema —information_schema, mysql, performance_schema, sys—, que como dijimos no hay que tocar.

Evitar el error si ya existe

Si ejecutas CREATE DATABASE sobre una base que ya existe, MySQL lanza un error. Para evitarlo:

CREATE DATABASE IF NOT EXISTS clinica;

Es lo que se usa en los scripts de instalación, para que se puedan ejecutar más de una vez sin fallar.

El juego de caracteres: la línea que evita dolores

Aquí está lo más importante de esta lección, y lo que casi todos los tutoriales omiten.

CREATE DATABASE clinica
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Ponlo siempre. Es la diferencia entre que tu base guarde bien las tildes, las eñes y los emojis, o que un día aparezcan como á y ñ.

Por qué utf8mb4 y no utf8

Este detalle es peculiar de MySQL y conviene conocerlo: el utf8 de MySQL no es UTF-8 real. Es una implementación incompleta que solo admite hasta 3 bytes por carácter, lo que deja fuera los emojis y algunos caracteres asiáticos.

El UTF-8 verdadero, con sus 4 bytes, se llama utf8mb4 —de multi-byte 4—. Es el que quieres siempre.

Si alguna vez viste una aplicación que se rompe cuando un usuario escribe un emoji en un comentario, la causa suele ser exactamente esta.

Qué es la collation

El CHARACTER SET define cómo se guardan los caracteres. La COLLATE define cómo se comparan y ordenan.

  • utf8mb4_unicode_ci — el ci significa case insensitive: no distingue mayúsculas. Buscar «ana» encuentra «Ana». Además ordena correctamente en español.
  • utf8mb4_bin — distingue mayúsculas y acentos. Útil para códigos o contraseñas, poco práctico para nombres.
  • utf8mb4_general_ci — más antigua y ligeramente más rápida, pero con reglas de ordenación menos correctas.

Para la mayoría de proyectos, utf8mb4_unicode_ci es la elección adecuada.

Nombrar bien la base de datos

Reglas que evitan problemas:

  • Todo en minúsculas. En Linux los nombres distinguen mayúsculas; en Windows no. Una base llamada Clinica funciona en tu máquina y falla en el servidor.
  • Sin espacios ni tildes. Usa guiones bajos: clinica_dental, no clínica dental.
  • Descriptivo pero corto. Vas a escribirlo muchas veces.
  • Evita palabras reservadas de SQL como order, group o table.

Seleccionar la base de datos

Antes de trabajar con sus tablas, hay que indicarle a MySQL cuál usar:

USE clinica;

A partir de ahí, todas las sentencias se aplican a esa base. Para saber cuál está activa:

SELECT DATABASE();

Si olvidas el USE, obtendrás el error «No database selected», que es de los más frecuentes al empezar.

En Workbench también puedes hacer doble clic en el nombre de la base en el panel izquierdo: se pone en negrita y equivale al USE.

Ver la definición de una base

SHOW CREATE DATABASE clinica;

Devuelve la sentencia completa con la que fue creada, incluidos el juego de caracteres y la collation. Es útil para comprobar que una base heredada esté bien configurada.

Modificar una base existente

Si te diste cuenta tarde de que quedó en utf8 en vez de utf8mb4:

ALTER DATABASE clinica
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Un aviso importante: esto cambia el valor por defecto para las tablas nuevas, pero no convierte las que ya existen. Esas hay que alterarlas una por una:

ALTER TABLE pacientes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Es otra razón para hacerlo bien desde el principio.

Eliminar una base de datos

DROP DATABASE clinica;

Esta sentencia no pide confirmación y no se puede deshacer. Borra la base y todo lo que contiene, al instante.

Antes de ejecutarla en cualquier servidor que no sea tu máquina, comprueba dos cosas: que el nombre es el correcto, y que existe un respaldo reciente.

Una versión más segura para scripts:

DROP DATABASE IF EXISTS clinica;

Crearla desde las herramientas

En Workbench: el icono de base de datos con un signo más, en la barra de herramientas. Te pide el nombre, el juego de caracteres y la collation. Antes de aplicar, muestra el SQL que va a ejecutar, lo cual es una buena forma de aprender la sintaxis.

En phpMyAdmin: pestaña Bases de datos, escribe el nombre, elige utf8mb4_unicode_ci en el desplegable y pulsa Crear.

En ambos casos se ejecuta exactamente el CREATE DATABASE que vimos.

La base de datos del curso

Vamos a trabajar con un sistema de clínica, el que diseñamos en la lección del diagrama:

CREATE DATABASE IF NOT EXISTS clinica
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE clinica;

Ejecútalo, porque a partir de la próxima lección empezamos a crear sus tablas.

Errores comunes

  • Olvidar utf8mb4 y descubrirlo cuando aparecen caracteres raros.
  • Usar utf8 creyendo que es UTF-8.
  • Nombres con mayúsculas, que fallan al pasar de Windows a Linux.
  • Olvidar USE antes de trabajar con las tablas.
  • Ejecutar DROP DATABASE sin respaldo.

Para cerrar

Crear una base de datos es una línea, pero esa línea decide cómo se van a guardar los textos durante toda la vida del sistema. La versión completa —con utf8mb4 y utf8mb4_unicode_ci— cuesta lo mismo de escribir y te ahorra un problema que después es tedioso de arreglar.

En la siguiente lección veremos los tipos de datos, que es lo que necesitas antes de crear tablas.

Saludos y éxitos.

Norvic Software

Desarrollamos el software que tu empresa necesita

Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.

Solicitar cotizaciónVer todos los servicios

Cotización sin costo · Respuesta directa por WhatsApp