Nouveau mois, nouveaux objectifs. Votre aide fait avancer le projet. 🖥️ Soutenez sqltest →
Code SQL copié dans le presse-papiers

Base de données Employee (Firebird) : schéma, tables et exercices SQL

Employee est la base d'exemple fournie avec Firebird : employés, services, postes, projets, clients et ventes d'une petite entreprise. Sur SQLtest.online, vous l'interrogez directement dans le navigateur : vous résolvez des exercices corrigés automatiquement et exécutez vos propres requêtes dans le bac à sable, sans rien installer.

  • 10 tables et 1 vue
  • 42 employés
  • 21 services
  • 33 exercices SQL

Qu'est-ce que Employee

Employee est la base d'exemple classique de Firebird, héritée d'InterBase. Elle décrit une petite entreprise internationale : l'arbre des services, le personnel et l'historique des salaires, des projets avec leurs budgets et des ventes aux clients.

La base est petite, les résultats se vérifient donc à l'œil, mais ses relations sont intéressantes : une hiérarchie de services, une clé étrangère composite des employés vers les postes et des liens plusieurs-à-plusieurs entre employés et projets. C'est aussi l'occasion de pratiquer le dialecte SQL de Firebird.

Diagramme ER

Le diagramme montre les tables de Employee et les clés étrangères qui les relient. Cliquez pour l'ouvrir en taille réelle.

Diagramme ER de la base de données Employee

Contenu de la base

Les tables se répartissent en trois groupes.

Personnel

EMPLOYEE, DEPARTMENT (chaque service a un service parent), JOB et SALARY_HISTORY.

Projets

PROJECT, la table de liaison EMPLOYEE_PROJECT et les budgets annuels dans PROJ_DEPT_BUDGET.

Ventes

CUSTOMER, SALES (bons de commande) et COUNTRY avec les devises.

L'essentiel à retenir : un poste est identifié par trois colonnes à la fois (code, grade et pays), la jointure de EMPLOYEE avec JOB les utilise donc toutes les trois. La vue PHONE_LIST associe les employés aux téléphones de leur service.

Volume de données des tables :

TableLignesContenu
EMPLOYEE42employés
DEPARTMENT21services
JOB31postes et fourchettes de salaire
SALARY_HISTORY49évolutions de salaire
PROJECT6projets
EMPLOYEE_PROJECT28employés ↔ projets
PROJ_DEPT_BUDGET24budgets de projet par service et par année
CUSTOMER15clients
SALES33bons de commande
COUNTRY16pays et devises

Structure des tables

Cliquez sur une table pour voir ses colonnes, une ligne d'exemple et ses clés.

Liste des tables

COUNTRY - table des pays.
  • COUNTRYNom du pays
  • CURRENCYDevise utilisée dans le pays
COUNTRY CURRENCY
USA Dollar
JOB - grille des postes de l'entreprise.
  • JOB_CODECode du poste
  • JOB_GRADENiveau du poste
  • JOB_COUNTRYPays associé au poste
  • JOB_TITLEIntitulé du poste
  • MIN_SALARYSalaire minimum pour le poste
  • MAX_SALARYSalaire maximum pour le poste
  • JOB_REQUIREMENTExigences du poste
  • LANGUAGE_REQExigences linguistiques
JOB_CODE JOB_GRADE JOB_COUNTRY JOB_TITLE MIN_SALARY MAX_SALARY JOB_REQUIREMENT LANGUAGE_REQ
CEO 1 USA Chief Executive Officer 130000.00 250000.00 Pas d'exigences spécifiques. [null]
  • FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY(COUNTRY)
DEPARTMENT - divisions de l'entreprise.
  • DEPT_NONuméro du département
  • DEPARTMENTNom du département
  • HEAD_DEPTDépartement parent (peut être null)
  • MNGR_NONuméro du manager
  • BUDGETBudget du département
  • LOCATIONLocalisation du département
  • PHONE_NONuméro de téléphone du département
DEPT_NO DEPARTMENT HEAD_DEPT MNGR_NO BUDGET LOCATION PHONE_NO
000 Corporate Office [null] 105 1000000.00 Monterey (408) 555-1234
  • FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT(DEPT_NO)
EMPLOYEE - liste des employés.
  • EMP_NONuméro de l'employé
  • FIRST_NAMEPrénom de l'employé
  • LAST_NAMENom de famille de l'employé
  • PHONE_EXTPoste téléphonique de l'employé
  • HIRE_DATEDate d'embauche de l'employé
  • DEPT_NONuméro du département
  • JOB_CODECode du poste de l'employé
  • JOB_GRADENiveau du poste de l'employé
  • JOB_COUNTRYPays associé au poste de l'employé
  • SALARYSalaire de l'employé
  • FULL_NAMENom complet de l'employé
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 - liste des projets.
  • PROJ_IDID du projet
  • PROJ_NAMENom du projet
  • PROJ_DESCDescription du projet
  • TEAM_LEADERChef d'équipe pour le projet
  • PRODUCTProduit associé au projet
PROJ_ID PROJ_NAME PROJ_DESC TEAM_LEADER PRODUCT
VBASE Video Database Développement d'un système de gestion de base de données vidéo pour gérer la distribution vidéo à la demande. 45 software
  • FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE(EMP_NO)
EMPLOYEE_PROJECT - affectation des employés aux projets.
  • EMP_NONuméro de l'employé
  • PROJ_IDID du projet
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 - budgets des projets.
  • FISCAL_YEARAnnée fiscale
  • PROJ_IDID du projet
  • DEPT_NONuméro du département
  • QUART_HEAD_CNTEffectif trimestriel (peut être null)
  • PROJECTED_BUDGETBudget prévisionnel pour l'année fiscale
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 - historique des changements de salaire des employés.
  • EMP_NONuméro de l'employé
  • CHANGE_DATEDate du changement de salaire
  • UPDATER_IDIdentifiant de la personne effectuant la mise à jour
  • OLD_SALARYSalaire précédent
  • PERCENT_CHANGEPourcentage de changement de salaire
  • NEW_SALARYNouveau salaire après le changement
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 - clients de l'entreprise.
  • CUST_NONuméro du client
  • CUSTOMERNom du client
  • CONTACT_FIRSTPrénom de la personne de contact
  • CONTACT_LASTNom de famille de la personne de contact
  • PHONE_NONuméro de téléphone du client
  • ADDRESS_LINE1 Adresse ligne 1
  • ADDRESS_LINE2Adresse ligne 2 (peut être null)
  • CITYVille du client
  • STATE_PROVINCEÉtat ou province du client
  • COUNTRYPays du client
  • POSTAL_CODECode postal du client
  • ON_HOLDStatut "en attente" (peut être null)
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)
SALES - liste des ventes.
  • PO_NUMBERNuméro du bon de commande
  • CUST_NONuméro du client associé à la commande
  • SALES_REPNuméro du représentant commercial
  • ORDER_STATUSStatut de la commande
  • ORDER_DATEDate de la commande
  • SHIP_DATEDate d'expédition
  • DATE_NEEDEDDate limite souhaitée (peut être null)
  • PAIDStatut de paiement
  • QTY_ORDEREDQuantité commandée
  • TOTAL_VALUEValeur totale de la commande
  • DISCOUNTRemise appliquée
  • ITEM_TYPEType d'article dans la commande
  • AGEDValeur d'ancienneté
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)

Voici la liste des vues de cette base de données :

PHONE_LIST - vue de la liste téléphonique des employés.
  • EMP_NONuméro de l'employé
  • FIRST_NAMEPrénom de l'employé
  • LAST_NAMENom de famille de l'employé
  • PHONE_EXTPoste téléphonique de l'employé
  • LOCATIONEmplacement du département
  • PHONE_NONuméro de téléphone du département
EMP_NO FIRST_NAME LAST_NAME PHONE_EXT LOCATION PHONE_NO
2 Robert Nelson 250 Monterey (408) 555-1234

Exemples de requêtes

Ces requêtes montrent comment les données sont reliées. Copiez-en une et exécutez-la dans le bac à sable.

Un employé, son service et son poste : une jointure sur une clé composite de trois colonnes.

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

Commandes et clients : Firebird limite les lignes avec FIRST n.

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

Exercices SQL par thème

La base Employee compte 33 exercices, des sélections simples jusqu'aux fonctions de fenêtrage et à la modification des données. Les solutions sont vérifiées automatiquement sur un vrai serveur Firebird. Le nombre à droite indique combien d'exercices compte le thème ; les points colorés montrent la plage de difficulté.

Par où commencer

Les premiers exercices sur la base Employee :

  1. Afficher les départements
  2. Trouver les pays hors Dollar/Euro
  3. Liste des sous-départements (JOIN)
  4. Obtenir la liste des sous-départements
  5. Trouver les employés étrangers
  6. Trouver les employés par département
  7. Trouver le salaire de l'employé
  8. Employés avec salaires élevés
  9. Employés avec un salaire supérieur à la moyenne
  10. Trouver le département

Tous les exercices Employee →

Questions fréquentes

Faut-il installer Firebird pour utiliser Employee ?

Non. Les exercices et le bac à sable de SQLtest.online exécutent les requêtes sur nos serveurs : un navigateur suffit. Dans le bac à sable, Employee est disponible sous Firebird 4.0.

D'où vient la base Employee ?

Elle est fournie avec Firebird comme base d'exemple (employee.fdb) et remonte à InterBase, le prédécesseur de Firebird.

En quoi le SQL de Firebird est-il différent ?

La plupart du SQL standard fonctionne normalement. Premières différences rencontrées : FIRST n / SKIP n ou FETCH FIRST n ROWS ONLY pour limiter les lignes, et des noms d'objets en majuscules.