https://github.com/studoo-app/sql-td3-sio1
SQL - Découverte des jointures
https://github.com/studoo-app/sql-td3-sio1
2024-2025 sio1 sql
Last synced: 2 months ago
JSON representation
SQL - Découverte des jointures
- Host: GitHub
- URL: https://github.com/studoo-app/sql-td3-sio1
- Owner: studoo-app
- Created: 2024-12-09T20:34:35.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-12-10T11:24:44.000Z (10 months ago)
- Last Synced: 2025-02-14T05:37:09.212Z (8 months ago)
- Topics: 2024-2025, sio1, sql
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 2
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# TD 3 - Les jointures en SQL
[]()## Objectifs
- Comprendre le concept de clé étrangère et sa relation avec les clés primaires.
- Maîtriser la syntaxe des jointures SQL (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN).
- Écrire des requêtes SQL intégrant des jointures pour extraire des informations pertinentes.## Démarrage des services
- `docker compose up -d` pour démarrer les services
- `docker compose down` pour arrêter les services
- Accéder à PHPMYADMIN via `http://localhost:8080`## Définition : Créer la relation entre deux tables avec la clé étrangère
Une clé étrangère (FOREIGN KEY) établit un lien entre deux tables. Elle correspond à une colonne
(ou un ensemble de colonnes) dans une table qui fait référence à une clé primaire d'une autre table.### Exemple
```sql
CREATE TABLE Inscription (
id_inscription INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
id_etudiant INT,
id_cours INT,
FOREIGN KEY (id_etudiant) REFERENCES Etudiant(id_etudiant),
FOREIGN KEY (id_cours) REFERENCES Cours(id_cours)
);
```Ici, id_etudiant de la table Inscription est une clé étrangère qui fait référence à id_etudiant de la table Etudiant.
## Utilisation de la relation entre deux tables avec les jointures
Les jointures SQL permettent de lier les données de plusieurs tables sur la base d'une relation commune
(souvent une clé étrangère).### Les types de jointures :
- **INNER JOIN** : Ne conserve que les correspondances entre les deux tables.
- **LEFT JOIN** : Conserve toutes les lignes de la table de gauche, même si elles n'ont pas de correspondance.
- **RIGHT JOIN** : Conserve toutes les lignes de la table de droite, même si elles n'ont pas de correspondance.### Mise en application
#### **Exercice 1 : Les jointures simples**
- Affichez la liste des étudiants et les cours auxquels ils sont inscrits. (INNER JOIN)
- Affichez la liste de tous les étudiants, y compris ceux qui ne sont pas inscrits à des cours. (LEFT JOIN)
- Affichez la liste de tous les cours, y compris ceux auxquels aucun étudiant n'est inscrit. (RIGHT JOIN)
- Affichez la liste complète de tous les étudiants et de tous les cours, qu'il y ait correspondance ou non. (FULL OUTER JOIN)#### **Exercice 2 : Les jointures simples**
- Quels sont les étudiants qui ne sont inscrits à aucun cours ?
- Quels sont les cours qui n’ont aucun étudiant inscrit ?
- Affichez la liste des étudiants avec leurs cours. Indiquez "Non inscrit" si l'étudiant n'est inscrit à aucun cours.#### **Exercice 3 : Modification des Données**
- Insérez un nouvel étudiant nommé "Bernard Simon".
- Inscrivez "Bernard Simon" au cours "Anglais".
- Supprimez l'inscription de Paul Leroy au cours de Mathématiques.#### **Exercice 4 : Verification de l'intégrité**
- Essayez de supprimer un étudiant qui est encore inscrit à un cours.
- Essayez d’insérer un enregistrement dans la table `Inscription` avec un `id_etudiant` ou un `id_cours` qui n'existe pas.#### **Exercice 5 : Création d'une Requête Complexe**
- Affichez la liste des étudiants, le nombre total de cours auxquels ils sont inscrits et la liste de ces cours sous forme de texte.