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
- 35 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.
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:
| Tabla | Filas | Contenido |
|---|---|---|
| EMPLOYEE | 42 | empleados |
| DEPARTMENT | 21 | departamentos |
| JOB | 31 | puestos y rangos salariales |
| SALARY_HISTORY | 49 | cambios de salario |
| PROJECT | 6 | proyectos |
| EMPLOYEE_PROJECT | 28 | empleados ↔ proyectos |
| PROJ_DEPT_BUDGET | 24 | presupuestos de proyectos por departamento y año |
| CUSTOMER | 15 | clientes |
| SALES | 33 | pedidos |
| COUNTRY | 16 | paí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
- COUNTRYNombre del país
- CURRENCYMoneda utilizada en el país
| COUNTRY | CURRENCY |
|---|---|
| USA | Dólar |
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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_LINE1 Línea de dirección 1
- ADDRESS_LINE2Línea de dirección 2 (puede ser nula)
- CITYCiudad del cliente
- STATE_PROVINCEEstado o provincia del cliente
- COUNTRYPaís del cliente
- POSTAL_CODECódigo postal del cliente
- ON_HOLDEstado de bloqueo (puede ser nulo)
| CUST_NO | CUSTOMER | CONTACT_FIRST | CONTACT_LAST | PHONE_NO | ADDRESS_LINE1 | ADDRESS_LINE2 | CITY | STATE_PROVINCE | COUNTRY | POSTAL_CODE | ON_HOLD |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1001 | Signature Design | Dale J. | Little | (619) 530-2710 | 15500 Pacific Heights Blvd. | [null] | San Diego | CA | USA | 92121 | [null] |
- FOREIGN KEY (COUNTRY) REFERENCES COUNTRY(COUNTRY)
- PO_NUMBERNúmero de orden de compra
- CUST_NONúmero de cliente asociado al pedido
- SALES_REPNúmero del representante de ventas
- ORDER_STATUSEstado del pedido
- ORDER_DATEFecha del pedido
- SHIP_DATEFecha de envío
- DATE_NEEDEDFecha requerida (puede ser nula)
- PAIDEstado del pago
- QTY_ORDEREDCantidad pedida
- TOTAL_VALUEValor total del pedido
- DISCOUNTDescuento aplicado
- ITEM_TYPETipo de artículo del pedido
- AGEDAntigüedad del pedido
| PO_NUMBER | CUST_NO | SALES_REP | ORDER_STATUS | ORDER_DATE | SHIP_DATE | DATE_NEEDED | PAID | QTY_ORDERED | TOTAL_VALUE | DISCOUNT | ITEM_TYPE | AGED |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| V91E0210 | 1004 | 11 | shipped | 1991-03-04 00:00:00 | 1991-03-05 00:00:00 | [null] | y | 10 | 5000.00 | 0.100000 | hardware | 1.000000000 |
- FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER(CUST_NO)
- FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE(EMP_NO)
A continuación se muestra la lista de vistas de esta base de datos:
- EMP_NONúmero de empleado
- FIRST_NAMENombre del empleado
- LAST_NAMEApellido del empleado
- PHONE_EXTExtensión telefónica del empleado
- LOCATIONUbicación del departamento
- PHONE_NOTeléfono del departamento
| EMP_NO | FIRST_NAME | LAST_NAME | PHONE_EXT | LOCATION | PHONE_NO |
|---|---|---|---|---|---|
| 2 | Robert | Nelson | 250 | Monterey | (408) 555-1234 |
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_NAME | LAST_NAME | DEPARTMENT | JOB_TITLE |
|---|---|---|---|
| Robert | Nelson | Engineering | Vice President |
| Bruce | Young | Software Development | Engineer |
| Kim | Lambert | Field Office: East Coast | Engineer |
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_NUMBER | CUSTOMER | ORDER_DATE | TOTAL_VALUE |
|---|---|---|---|
| V91E0210 | Central Bank | 1991-03-04 00:00:00 | 5000.00 |
| V92J1003 | MPM Corporation | 1992-07-26 00:00:00 | 2985.00 |
| V92E0340 | Central Bank | 1992-10-15 00:00:00 | 70000.00 |
Ejercicios de SQL por tema
La base Employee tiene 35 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.
- Fundamentos de SQL 3
- Funciones de Agregación 3
- Funciones de Ventana 2
- Consultas analíticas 3
- Consultas de manipulación de datos (DML) 1
Por dónde empezar
Los primeros ejercicios de la base Employee:
- Listar Departamentos
- Encontrar países que no usan Dólar/Euro
- Lista de Subdepartamentos (JOIN)
- Lista de Subdepartamentos
- Identificar Empleados Extranjeros
- Encontrar Empleados por Departamento
- Recuperar Salario del Empleado
- Empleados con Altos Salarios
- Empleados con Sueldos por Encima del Promedio
- 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.