Crear la base de datos y la tabla empleados (SQL)
Crear un CRUD en PHP y MySQL: base de datos y tabla empleados (paso a paso) 🧩
Si quieres construir un CRUD real (Create, Read, Update, Delete) con PHP y MySQL, lo primero es tener una base de datos bien definida.
En este caso de estudio vamos a trabajar con una tabla llamada empleados, diseñada para ser simple pero completa, ideal para practicar:
- Claves primarias (PK)
- Validaciones por longitud
- Búsquedas con LIKE
- Estados activo/inactivo
📌 Este ejemplo está pensado para usarse con un CRUD en PHP (PDO) + Bootstrap, como el que tengo publicado aquí: /casos-de-estudio/.1) Crear la base de datos (ejemplo)
Puedes llamarla como quieras. Yo usaré un nombre claro:
CREATE DATABASE IF NOT EXISTS floopware_casos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE floopware_casos;
✅ Por qué utf8mb4: soporta tildes, caracteres especiales y emojis sin problemas.
2) Crear la tabla empleados
Esta tabla usa codigo como clave primaria (PK). En el CRUD, este campo se usa como identificador único y se bloquea al editar (buena práctica).
Yo recomiendo utf8mb4 para un proyecto moderno.
CREATE TABLE IF NOT EXISTS empleados ( codigo VARCHAR(10) NOT NULL, nombres VARCHAR(50) NOT NULL, lugar_nacimiento VARCHAR(30) NOT NULL, fecha_nacimiento VARCHAR(30) NOT NULL, direccion VARCHAR(50) NOT NULL, telefono VARCHAR(10) NOT NULL, puesto VARCHAR(15) NOT NULL, estado INT(11) NOT NULL DEFAULT 1, PRIMARY KEY (codigo) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
¿Qué significa cada campo?
- codigo (PK): identificador único (ej.
EMP001) - nombres: nombre completo
- lugar_nacimiento: ciudad/país (lo que tú quieras)
- fecha_nacimiento: en tu caso es texto, por eso aceptas formato libre (ideal:
YYYY-MM-DD) - direccion: dirección corta
- telefono: texto para permitir números sin perder ceros
- puesto: puesto del empleado
- estado: 1 activo / 0 inactivo
3) Insertar datos de ejemplo (recomendado para la demo)
Esto es muy útil para que al entrar al CRUD no se vea vacío.
INSERT INTO empleados (codigo, nombres, lugar_nacimiento, fecha_nacimiento, direccion, telefono, puesto, estado) VALUES
('EMP001', 'Ana Pérez', 'Valencia', '1995-08-12', 'Calle Sol 123', '600123456', 'Soporte', 1),
('EMP002', 'Luis Gómez', 'Madrid', '1990-04-22', 'Av. Centro 45', '611987654', 'Ventas', 1),
('EMP003', 'Marta Ruiz', 'Sevilla', '1998-11-03', 'C/ Luna 7', '622112233', 'Admin', 0);
4) Consejo pro: ¿dejar fecha_nacimiento como VARCHAR o cambiar a DATE?
En tu tabla está como VARCHAR(30) y eso funciona.
Pero si quieres dar un salto de calidad, lo ideal es DATE, porque te permite:
- Calcular edad
- Filtrar por rangos
- Ordenar fechas correctamente
Opción mejorada (si algún día lo cambias):
ALTER TABLE empleados MODIFY fecha_nacimiento DATE NOT NULL;
Si lo cambias a DATE, también te conviene usar un <input type="date"> en el formulario.5) Enlazar esto con tu conexión PDO (lo que sigue)
Una vez creada la base de datos, el siguiente paso es conectar tu CRUD a MySQL con PDO (tu archivo includes/con.php), usando:
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTIONutf8mb4- Consultas preparadas
👉 En el siguiente post lo vamos a hacer, explicándolo línea por línea.
Post relacionados:
- Comandos básicos de Linux que debes conocer
- Cómo crear un CRUD completo con PHP y MySQL (PDO) + Bootstrap (caso real)