Blog

Introducción práctica a bases de datos relacionales y SQL

Jan 19, 2025

¡Bienvenido! Es un placer tenerte por aquí.

En este post vamos a ver cómo configurar el gestor de bases de datos MySQL y a crear una base de datos para almacenar información de empleados.

¡Todo ello en tan solo 5 minutos! Una vez hecho esto, te dejaré algunos ejercicios de SQL con su solución para que puedas practicar.

¡Vamos a ello! 🚀

 

Contenidos

  1. Instalación y configuración de MySQL.
  2. Ejercicios (enunciado).
  3. Ejercicios (solución).

 

✅Instalación de MySQL

Si quieres aprender a trabajar con bases de datos, primero habrá que conseguir tener acceso a una, ¿no? 

Además, me imagino lo que estarás pensando, "esto va a ser muy complicado", "me voy a llevar toda la tarde para hacer esto", "esto solo lo saben hacer personas que saben de informática"...

¡En absoluto! Dame 5 minutos y vas tener tu propia base de datos funcionando en tu equipo.

 

Lo que vamos a hacer es lo siguiente:

  1. Descarga el instalador de la base de datoshttps://dev.mysql.com/downloads/.
  2. Vamos a instalar MySQL Server y MySQL Workbench.
  3. Vamos a crear una base de datos para almacenar datos de empleados. Para ello, descarga esta carpeta comprimida (click aquí).

 

Nota: Algunas ventanas del instalador de MySQL pueden cambiar según la versión del instalador. Cuando comiences, asegúrate de tener marcadas para instalar como mínimo MySQL Server y MySQL Workbench.

 

¡Mira el vídeo para ver cómo realizar cada uno de los pasos!

 

🤔Ejercicios (Enunciado)

¿Ya tienes instalado MySQL y has creado la base de datos de empleados? ¡Genial! Aquí te dejo algunos ejercicios de SQL para que puedas practicar. Puedes ver la solución al final del post.

  1. (Tabla employees) Obtener una lista de todos los empleados en la tabla employees.
  1. (Tabla employees) Obtener los nombres (first_name) y apellidos (last_name) de todos los empleados.
  1. (Tabla dept_emp) Obtener el número de empleado (emp_no) y el número de departamento (dept_no) de los empleados que trabajan en el departamento con el código 'd001'.
  1. (Tabla employees) Obtener los números de empleado (emp_no) y la fecha de contratación (hire_date) de todos los empleados contratados después del 1 de enero de 2000.
  1. Obtener el número de empleado (emp_no) y el número de departamento (dept_no) de todos los gerentes de departamento.
  1. Obtener el título (title) actual del empleado con el número 10001.
  1. Obtener el salario (salary) actual del empleado con el número 10001.
  1. Obtener los números de empleado (emp_no), nombres (first_name) y apellidos (last_name) de los empleados cuyo apellido es 'Simmel'.
  1. Contar el número de empleados en cada departamento.
  1. Contar el número de empleados por género (gender).
  1. Obtener los títulos (title) más comunes en la empresa, junto con la cantidad de empleados que tienen cada título.
  1. Obtener los números de departamento (dept_no) y el número de gerentes por departamento, mostrando solo aquellos departamentos que tengan más de 2 gerentes.
  1. Obtener departamentos que tienen más de 5 empleados.
  1. Obtener los nombres (first_name, last_name) de todos los empleados junto con sus títulos actuales.
  1. Obtener los nombres (first_name, last_name) de todos los empleados junto con el nombre del departamento al que pertenecen.
  1. Obtener los nombres (first_name, last_name) de todos los gerentes junto con el nombre del departamento y las fechas de inicio y fin de su gestión.

 

💡Ejercicios (Solución)

  1. (Tabla employees) Obtener una lista de todos los empleados en la tabla employees.
SELECT * 
FROM employees.employees;
  1. (Tabla employees) Obtener los nombres (first_name) y apellidos (last_name) de todos los empleados.
SELECT 
  first_name, 
  last_name 
FROM employees.employees;
  1. (Tabla dept_emp) Obtener el número de empleado (emp_no) y el número de departamento (dept_no) de los empleados que trabajan en el departamento con el código 'd001'.
SELECT 
  emp_no, 
  dept_no 
FROM employees.dept_emp 
WHERE dept_no = 'd001';
  1. (Tabla employees) Obtener los números de empleado (emp_no) y la fecha de contratación (hire_date) de todos los empleados contratados después del 1 de enero de 2000.
SELECT 
  emp_no, 
  hire_date 
FROM employees.employees 
WHERE hire_date > '2000-01-01';
  1. Obtener el número de empleado (emp_no) y el número de departamento (dept_no) de todos los gerentes de departamento.
SELECT 
  emp_no, 
  dept_no 
FROM employees.dept_manager;
  1. Obtener el título (title) actual del empleado con el número 10001.
SELECT 
  title 
FROM employees.titles 
WHERE emp_no = 10001 AND to_date = '9999-01-01';
  1. Obtener el salario (salary) actual del empleado con el número 10001.
SELECT salary 
FROM employees.salaries 
WHERE emp_no = 10001 AND to_date = '9999-01-01';
  1. Obtener los números de empleado (emp_no), nombres (first_name) y apellidos (last_name) de los empleados cuyo apellido es 'Simmel'.
SELECT 
    emp_no, 
    first_name, 
    last_name 
FROM employees.employees 
WHERE last_name = 'Simmel';
  1. Contar el número de empleados en cada departamento.
SELECT 
  dept_no, 
  COUNT(emp_no) AS num_empleados
FROM employees.dept_emp
GROUP BY dept_no;
  1. Contar el número de empleados por género (gender).
SELECT gender, COUNT(emp_no) AS num_empleados
FROM employees.employees
GROUP BY gender;
  1. Obtener los títulos (title) más comunes en la empresa, junto con la cantidad de empleados que tienen cada título.
SELECT title, COUNT(emp_no) AS num_empleados
FROM employees.titles
GROUP BY title
ORDER BY num_empleados DESC;
  1. Obtener los números de departamento (dept_no) y el número de gerentes por departamento, mostrando solo aquellos departamentos que tengan más de 2 gerentes.
SELECT 
    dept_no,
    COUNT(emp_no) AS num_gerentes
FROM employees.dept_manager
GROUP BY dept_no
HAVING COUNT(emp_no) > 2;
  1. Obtener departamentos que tienen más de 5 empleados.
SELECT 
    dept_no,
    COUNT(emp_no) AS num_empleados
FROM employees.dept_emp
GROUP BY dept_no
HAVING COUNT(emp_no) > 5;
  1. Obtener los nombres (first_name, last_name) de todos los empleados junto con sus títulos actuales.
SELECT e.first_name, e.last_name, t.title
FROM employees e
INNER JOIN titles t ON e.emp_no = t.emp_no
WHERE t.to_date = '9999-01-01';
  1. Obtener los nombres (first_name, last_name) de todos los empleados junto con el nombre del departamento al que pertenecen.
SELECT e.first_name, e.last_name, d.dept_name
FROM employees e
INNER JOIN dept_emp de ON e.emp_no = de.emp_no
INNER JOIN departments d ON de.dept_no = d.dept_no;
  1. Obtener los nombres (first_name, last_name) de todos los gerentes junto con el nombre del departamento y las fechas de inicio y fin de su gestión.
SELECT e.first_name, e.last_name, d.dept_name, dm.from_date, dm.to_date
FROM employees e
INNER JOIN dept_manager dm ON e.emp_no = dm.emp_no
INNER JOIN departments d ON dm.dept_no = d.dept_no;

🎉Siguientes pasos

Si has completado todos los ejercicios, ¡enhorabuena! Esta batería de ejercicios te habrá permitido tener una idea de qué es una base de datos y cómo puedes trabajar con ella utilizando SQL. Espero que te hayan sido de gran ayuda. 

Para seguir profundizando en esta materia, te recomiendo explorar los siguientes aspectos:

  • Profundiza en SQL. Estos son ejercicios introductorios, te animo a seguir explorando con ejercicios más avanzados.
  • Modelado de datos para crear tus propios diseños de bases de datos y diagramas Entidad Relación.
  • Utiliza una base de datos en tu proyecto IT. No hay mejor forma que practicar para dominar.
  • Object Relation Mapping (ORM). Por ejemplo, SQL Alchemy, que te permitirá trabajar con bases de datos en tu código de programación de forma cómoda como si fuesen clases y objetos.

¡Nos vemos en la próxima con más y mejor! 😊

NEWSLETTER

Mantente al día de las novedades

Recibe por correo notificaciones de las últimas noticias, eventos y formaciones.

Puedes dar de baja tu suscripción en cualquier momento.