Jointures de base de données pour les données personnelles

SQLSQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à utiliser des requêtes de jointure pour extraire des données pertinentes de la table emp, de la table dept et de la table salgrade dans la base de données du personnel.

👀 Aperçu

Exemple de requête de jointure SQL

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment accéder à la base de données MySQL et importer les données du personnel
  • Comment utiliser une jointure équi (inner join) pour extraire les noms, les dates d'embauche et les noms de département correspondants de la table des employés
  • Comment utiliser une jointure non équi pour extraire les noms, les salaires et les informations de niveau de salaire correspondantes de tous les employés de la table des employés
  • Comment utiliser une auto-jointure pour extraire les informations sur le supérieur de l'employé nommé "SMITH"
  • Comment utiliser une jointure externe gauche pour extraire toutes les informations sur les départements et leurs informations sur les employés correspondants

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre les différents types de requêtes de jointure et quand les utiliser
  • Extraire et manipuler des données de plusieurs tables dans une base de données à l'aide de requêtes de jointure
  • Appliquer des concepts avancés de SQL pour résoudre des problèmes complexes d'extraction de données

Accéder à MySQL et importer les données

Dans cette étape, vous allez apprendre à accéder à la base de données MySQL et à importer les données du personnel.

  1. Ouvrez un terminal et exécutez la commande suivante pour démarrer le service MySQL :
sudo service mysql start
  1. Accédez à l'interface de ligne de commande MySQL en utilisant la commande sudo sans mot de passe :
sudo mysql
  1. Importez les données du personnel à partir du fichier /home/labex/project/personnel.sql dans la base de données MySQL :
SOURCE /home/labex/project/personnel.sql;

Maintenant, vous avez réussi à accéder à la base de données MySQL et à importer les données du personnel. Vous pouvez passer à l'étape suivante.

Récupérer les noms d'employés, les dates d'embauche et les noms de départements

Dans cette étape, vous allez apprendre à utiliser une jointure équi (inner join) pour récupérer les noms, les dates d'embauche et les noms de département correspondants de la table des employés.

  1. Ouvrez le fichier join_query.sql dans un éditeur de texte et ajoutez le code suivant :
SELECT e.ename AS `Name`, e.hiredate AS HireDate, d.dname AS DepartmentName
FROM emp e
JOIN dept d ON e.deptno = d.deptno;

Cette requête effectue une jointure interne entre les tables emp et dept, en correspondant la colonne deptno de la table emp avec la colonne deptno de la table dept. La sortie résultante inclura le nom de l'employé, la date d'embauche et le nom du département.

  1. Enregistrez le fichier join_query.sql.

Récupérer les noms d'employés, les salaires et les niveaux de salaire

Dans cette étape, vous allez apprendre à utiliser une jointure non équi pour récupérer les noms, les salaires et les informations de niveau de salaire correspondantes de tous les employés de la table des employés.

  1. Ouvrez le fichier join_query.sql et ajoutez le code suivant sous la requête précédente :
SELECT e.ename AS `Name`, e.sal AS Salary,
       CASE s.grade
           WHEN 1 THEN 'A'
           WHEN 2 THEN 'B'
           WHEN 3 THEN 'C'
           WHEN 4 THEN 'D'
           WHEN 5 THEN 'E'
           ELSE 'Unknown'
       END AS Grade
FROM emp e
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;

Cette requête effectue une jointure non équi entre les tables emp et salgrade, en correspondant le salaire de l'employé (e.sal) avec la plage de niveau de salaire (s.losal et s.hisal). L'instruction CASE est utilisée pour convertir le niveau de salaire numérique en un niveau de salaire alphabétique correspondant.

  1. Enregistrez le fichier join_query.sql.

Récupérer les informations sur le supérieur de l'employé nommé "SMITH"

Dans cette étape, vous allez apprendre à utiliser une auto-jointure pour récupérer les informations sur le supérieur de l'employé nommé "SMITH".

  1. Ouvrez le fichier join_query.sql et ajoutez le code suivant sous les requêtes précédentes :
SELECT e1.empno, e1.ename, e1.job, e1.mgr, e1.hiredate, e1.sal, e1.comm, e1.deptno
FROM emp e1
JOIN emp e2 ON e1.empno = e2.mgr
WHERE e2.ename = 'SMITH';

Cette requête effectue une auto-jointure sur la table emp, en correspondant la colonne empno d'un employé (e1) avec la colonne mgr d'un autre employé (e2). La clause WHERE filtre les résultats pour n'inclure que les informations sur le supérieur de l'employé nommé "SMITH".

  1. Enregistrez le fichier join_query.sql.

Récupérer toutes les informations sur les départements et leurs informations sur les employés correspondants

Dans cette étape, vous allez apprendre à utiliser une jointure externe gauche pour récupérer toutes les informations sur les départements et leurs informations sur les employés correspondants. Si un département n'a pas d'employés, les informations sur l'employé seront remplies de NULL.

  1. Ouvrez le fichier join_query.sql et ajoutez le code suivant sous les requêtes précédentes :
SELECT e.empno, e.ename, e.job, e.mgr, e.hiredate, e.sal, e.comm, e.deptno,
       d.deptno AS deptno_dept, d.dname, d.loc
FROM dept d
LEFT JOIN emp e ON d.deptno = e.deptno;

Cette requête effectue une jointure externe gauche entre les tables dept et emp, en correspondant la colonne deptno de les deux tables. La sortie résultante inclura toutes les informations sur les départements, ainsi que les informations sur les employés correspondantes. Si un département n'a pas d'employés, les informations sur l'employé seront remplies de NULL.

  1. Enregistrez le fichier join_query.sql.

Maintenant, vous avez terminé toutes les tâches du projet. Vous pouvez exécuter le script join_query.sql dans l'interface de ligne de commande MySQL pour voir les résultats des requêtes :

MariaDB [personnel]> SOURCE /home/labex/project/join_query.sql;
Résultat d'exécution de la requête SQL
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.