Nuevo mes, nuevos objetivos. Su ayuda ayuda al proyecto a avanzar. 🖥️ Apoye sqltest →
Código SQL copiado al portapapeles

Base de datos Employee (Firebird): esquema, tablas y ejercicios de SQL

Employee es la base de ejemplo que viene con Firebird: empleados, departamentos, puestos, proyectos, clientes y ventas de una pequeña empresa. En SQLtest.online puedes consultarla directamente en el navegador: resolver ejercicios con corrección automática y ejecutar tus propias consultas en el playground, sin instalar nada.

  • 10 tablas y 1 vista
  • 42 empleados
  • 21 departamentos
  • 33 ejercicios de SQL

Qué es Employee

Employee es la base de ejemplo clásica de Firebird, heredada de InterBase. Describe una pequeña empresa internacional: el árbol de departamentos, el personal y el historial de salarios, proyectos con presupuestos y ventas a clientes.

La base es pequeña, así que los resultados se comprueban a simple vista, pero sus relaciones son interesantes: una jerarquía de departamentos, una clave foránea compuesta de empleados a puestos y relaciones de muchos a muchos entre empleados y proyectos. También sirve para practicar el dialecto SQL de Firebird.

Diagrama ER

El diagrama muestra las tablas de Employee y las claves foráneas que las unen. Haz clic para abrirlo a tamaño completo.

Diagrama ER de la base de datos Employee

Qué contiene la base

Las tablas se agrupan en tres bloques.

Personal

EMPLOYEE, DEPARTMENT (cada departamento tiene uno superior), JOB y SALARY_HISTORY.

Proyectos

PROJECT, la tabla de relación EMPLOYEE_PROJECT y los presupuestos anuales en PROJ_DEPT_BUDGET.

Ventas

CUSTOMER, SALES (pedidos) y COUNTRY con las monedas.

Lo principal: un puesto se identifica con tres columnas a la vez (código, grado y país), por eso la unión de EMPLOYEE con JOB necesita las tres. La vista PHONE_LIST combina los empleados con los teléfonos de sus departamentos.

Cuántos datos hay en las tablas:

TablaFilasContenido
EMPLOYEE42empleados
DEPARTMENT21departamentos
JOB31puestos y rangos salariales
SALARY_HISTORY49cambios de salario
PROJECT6proyectos
EMPLOYEE_PROJECT28empleados ↔ proyectos
PROJ_DEPT_BUDGET24presupuestos de proyectos por departamento y año
CUSTOMER15clientes
SALES33pedidos
COUNTRY16países y monedas

Estructura de las tablas

Haz clic en una tabla para ver sus columnas, una fila de ejemplo y sus claves.

Lista de tablas

COUNTRY - tabla de países.
  • COUNTRYNombre del país
  • CURRENCYMoneda utilizada en el país
COUNTRY CURRENCY
USA Dólar
JOB - horario del personal de la empresa.
  • JOB_CODECódigo de trabajo
  • JOB_GRADEGrado de trabajo
  • JOB_COUNTRYPaís asociado con el trabajo
  • JOB_TITLETítulo del trabajo
  • MIN_SALARYSueldo mínimo para el trabajo
  • MAX_SALARYSueldo máximo para el trabajo
  • JOB_REQUIREMENTRequisitos del trabajo
  • LANGUAGE_REQRequisitos de idioma
JOB_CODE JOB_GRADE JOB_COUNTRY JOB_TITLE MIN_SALARY MAX_SALARY JOB_REQUIREMENT LANGUAGE_REQ
CEO 1 USA Director Ejecutivo 130000.00 250000.00 No hay requisitos específicos. [null]
  • FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY(COUNTRY)
DEPARTMENT - divisiones de la empresa.
  • DEPT_NONúmero de departamento
  • DEPARTMENTNombre del departamento
  • HEAD_DEPTDepartamento principal (puede ser nulo)
  • MNGR_NONúmero de gerente
  • BUDGETPresupuesto del departamento
  • LOCATIONUbicación del departamento
  • PHONE_NONúmero de teléfono del departamento
DEPT_NO DEPARTMENT HEAD_DEPT MNGR_NO BUDGET LOCATION PHONE_NO
000 Oficina Corporativa [null] 105 1000000.00 Monterey (408) 555-1234
  • FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT(DEPT_NO)
EMPLOYEE - lista de empleados.
  • EMP_NONúmero de empleado
  • FIRST_NAMENombre del empleado
  • LAST_NAMEApellido del empleado
  • PHONE_EXTExtensión telefónica del empleado
  • HIRE_DATEFecha de contratación del empleado
  • DEPT_NONúmero de departamento
  • JOB_CODECódigo de trabajo del empleado
  • JOB_GRADEGrado de trabajo del empleado
  • JOB_COUNTRYPaís asociado con el trabajo del empleado
  • SALARYSueldo del empleado
  • FULL_NAMENombre completo del empleado
EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_COUNTRY SALARY FULL_NAME
2 Robert Nelson 250 1988-12-28 00:00:00 600 VP 2 USA 105900.00 Nelson, Robert
  • FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
  • FOREIGN KEY (JOB_CODE) REFERENCES JOB(JOB_CODE)
PROJECT - lista de proyectos.
  • PROJ_IDID del proyecto
  • PROJ_NAMENombre del proyecto
  • PROJ_DESCDescripción del proyecto
  • TEAM_LEADERLíder del equipo para el proyecto
  • PRODUCTProducto asociado con el proyecto
PROJ_ID PROJ_NAME PROJ_DESC TEAM_LEADER PRODUCT
VBASE Base de Datos de Video Desarrollo de un sistema de gestión de base de datos de video para gestionar la distribución de video bajo demanda. 45 software
  • FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE(EMP_NO)
EMPLOYEE_PROJECT - mapeo de empleado-proyecto.
  • EMP_NONúmero de empleado
  • PROJ_IDID del proyecto
EMP_NO PROJ_ID
144 DGPII
  • FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
  • FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
PROJ_DEPT_BUDGET - presupuestos de proyectos.
  • FISCAL_YEARAño fiscal
  • PROJ_IDID del proyecto
  • DEPT_NONúmero de departamento
  • QUART_HEAD_CNTConteo de cabezas del trimestre (puede ser nulo)
  • PROJECTED_BUDGETPresupuesto proyectado para el año fiscal
FISCAL_YEAR PROJ_ID DEPT_NO QUART_HEAD_CNT PROJECTED_BUDGET
1994 GUIDE 100 [null] 200000.00
  • FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
  • FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
SALARY_HISTORY - historial de cambios salariales de los empleados.
  • EMP_NONúmero de empleado
  • CHANGE_DATEFecha de cambio de salario
  • UPDATER_IDID del actualizador
  • OLD_SALARYSalario anterior
  • PERCENT_CHANGEPorcentaje de cambio en el salario
  • NEW_SALARYNuevo salario después del cambio
EMP_NO CHANGE_DATE UPDATER_ID OLD_SALARY PERCENT_CHANGE NEW_SALARY
28 1992-12-15 00:00:00 admin2 20000.00 10.000000 22000.000000
  • FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
CUSTOMER - clientes de la empresa.
  • CUST_NONúmero de cliente
  • CUSTOMERNombre del cliente
  • CONTACT_FIRSTNombre de la persona de contacto
  • CONTACT_LASTApellido de la persona de contacto
  • PHONE_NONúmero de teléfono del cliente
  • ADDRESS_LINE1Línea de dirección 1
  • ADDRESS_LINE2Línea de dirección 2 (puede ser nulo)
  • CITYCiudad del cliente
  • STATE_PROVINCEEstado o provincia del cliente
  • COUNTRYPaís del cliente
  • POSTAL_CODECódigo postal del cliente
  • ON_HOLDEstado en espera (puede ser nulo)
CUST_NO

Consultas de ejemplo

Estas consultas muestran cómo se relacionan los datos. Copia cualquiera y ejecútala en el playground.

Un empleado, su departamento y su puesto: una unión por una clave compuesta de tres columnas.

SELECT FIRST 3 e.FIRST_NAME, e.LAST_NAME, d.DEPARTMENT, j.JOB_TITLE
FROM EMPLOYEE e
JOIN DEPARTMENT d ON d.DEPT_NO = e.DEPT_NO
JOIN JOB j ON j.JOB_CODE = e.JOB_CODE
          AND j.JOB_GRADE = e.JOB_GRADE
          AND j.JOB_COUNTRY = e.JOB_COUNTRY
ORDER BY e.EMP_NO;
FIRST_NAMELAST_NAMEDEPARTMENTJOB_TITLE
RobertNelsonEngineeringVice President
BruceYoungSoftware DevelopmentEngineer
KimLambertField Office: East CoastEngineer

Pedidos y clientes: Firebird usa FIRST n para limitar las filas.

SELECT FIRST 3 s.PO_NUMBER, c.CUSTOMER, s.ORDER_DATE, s.TOTAL_VALUE
FROM SALES s
JOIN CUSTOMER c ON c.CUST_NO = s.CUST_NO
ORDER BY s.ORDER_DATE;
PO_NUMBERCUSTOMERORDER_DATETOTAL_VALUE
V91E0210Central Bank1991-03-04 00:00:005000.00
V92J1003MPM Corporation1992-07-26 00:00:002985.00
V92E0340Central Bank1992-10-15 00:00:0070000.00

Ejercicios de SQL por tema

La base Employee tiene 33 ejercicios, desde selecciones sencillas hasta funciones de ventana y modificación de datos. Las soluciones se comprueban automáticamente en un Firebird real. El número de la derecha es la cantidad de ejercicios del tema; los puntos de color muestran el rango de dificultad.

Por dónde empezar

Los primeros ejercicios de la base Employee:

  1. Listar Departamentos
  2. Encontrar países que no usan Dólar/Euro
  3. Lista de Subdepartamentos (JOIN)
  4. Lista de Subdepartamentos
  5. Identificar Empleados Extranjeros
  6. Encontrar Empleados por Departamento
  7. Recuperar Salario del Empleado
  8. Empleados con Altos Salarios
  9. Empleados con Sueldos por Encima del Promedio
  10. Encontrar el Departamento Administrado

Todos los ejercicios de Employee →

Preguntas frecuentes

¿Hay que instalar Firebird para usar Employee?

No. Los ejercicios y el playground de SQLtest.online ejecutan las consultas en nuestros servidores, así que basta con un navegador. En el playground, Employee está disponible en Firebird 4.0.

¿De dónde viene la base Employee?

Se distribuye con Firebird como base de ejemplo (employee.fdb) y viene de InterBase, el predecesor de Firebird.

¿En qué se diferencia el SQL de Firebird?

La mayor parte del SQL estándar funciona como siempre. Las primeras diferencias que encontrarás: FIRST n / SKIP n o FETCH FIRST n ROWS ONLY para limitar filas, y nombres de objetos en mayúsculas.