Résumée : SQL
Dans ce résumée, on se base totalement sur l’exemple dans la deuxième partie
1. Langage SQL (Structured Query Language)
Langage d'Interrogation des Données (LID) : SELECT
Permet de récupérer des données.
Syntaxe :
Exemples :
o Récupérer tous les noms : SELECT nom FROM etudiants;
o Trier les données : SELECT * FROM etudiants ORDER BY age DESC;
o Utiliser des conditions : SELECT * FROM etudiants WHERE note > 12;
Fonctions SQL
Mono-lignes :
o Fonctions de chaînes (UPPER, LOWER), numériques (ROUND, ABS), de date
(SYSDATE, ADD_MONTHS), etc.
Multi-lignes :
o Fonctions d'agrégation comme SUM, AVG, COUNT, MAX, MIN.
Jointures
Interne (INNER JOIN) : Combine uniquement les enregistrements correspondants.
Externe :
o Gauche (LEFT JOIN) ou Droite (RIGHT JOIN) pour inclure les
enregistrements non correspondants.
o Exemple : Afficher tous les employés même sans projet :
sql
Copy code
SELECT [Link], [Link] FROM Employe E LEFT JOIN Projet P ON
E.PFE_ID = P.PFE_ID;
Cross Join : Produit cartésien entre deux tables.
2. Langage de Manipulation des Données (LMD)
Insertion des Données :
Ajouter une ligne :
INSERT INTO DEPARTMENTS VALUES (280, 'Marketing', 101, 1700);
Ajouter des données avec une requête :
INSERT INTO DEPARTMENTS (ID, NAME) SELECT ID, NAME FROM TEMP_TABLE;
Mise à Jour :
Modifier des données :UPDATE EMPLOYEES SET SALAIRE = 5000 WHERE ID = 1;
Suppression :
Supprimer des lignes :DELETE FROM EMPLOYEES WHERE ID = 1;
4. Transactions et Gestion ACID
ACID : Garantit la fiabilité des transactions.
o Atomicité : Tout ou rien.
o Cohérence : Respect des contraintes.
o Isolation : Les modifications ne sont visibles qu’après validation.
o Durabilité : Les données validées restent accessibles malgré les pannes.
Commandes Associées :
COMMIT : Valider les modifications.
ROLLBACK : Annuler les modifications.
SAVEPOINT : Définir un point de restauration.
5. PL/SQL
Langage procédural intégré à SQL (Oracle).
Avantages : Automatisation, réutilisation, et performances accrues via les procédures
stockées.
Exemple de bloc PL/SQL :
BEGIN
UPDATE EMPLOYEES SET SALAIRE = SALAIRE * 1.1 WHERE POSTE =
'Manager';
COMMIT;
END;
Partie nm 2 :
1. Table Etudiant
id_etudiant nom prenom age filiere_id
101 Dupont Jean 22 1
102 Martin Claire 20 1
103 Durand Paul 23 2
104 Lemoine Anne 21 3
2. Table Filiere
id_filiere nom_filiere
1 Informatique
2 Mathématiques
3 Physique
3. Table Professeur
id_professeur nom prenom emploi_id
201 Lemoine Claire 1
202 Martin Jean 2
203 Dupont Paul 3
4. Table Emploi
id_emploi type_emploi
1 Enseignant
2 Chargé de cours
3 Professeur principal
5. Table Etablissement
id_etablissement nom_etablissement adresse
1 Université ABC 123 Rue A
2 Université XYZ 456 Rue B
3 Lycée Pierre Curie 789 Rue C
Requêtes et résultats avec les valeurs fictives :
1. Récupérer les informations des étudiants d'une certaine filière (Informatique)
sql
Copy code
SELECT [Link], [Link], [Link]
FROM etudiant e
INNER JOIN filiere f ON e.filiere_id = f.id_filiere
WHERE f.nom_filiere = 'Informatique';
Résultat :
nom prenom age
Dupont Jean 22
Martin Claire 20
2. Récupérer tous les professeurs et leurs emplois
sql
Copy code
SELECT [Link], [Link], em.type_emploi
FROM professeur p
INNER JOIN emploi em ON p.emploi_id = em.id_emploi;
Résultat :
nom prenom type_emploi
Lemoine Claire Enseignant
Martin Jean Chargé de cours
Dupont Paul Professeur principal
3. Récupérer tous les étudiants et leurs établissements, y compris ceux sans
établissement
sql
Copy code
SELECT [Link], [Link], et.nom_etablissement
FROM etudiant e
LEFT JOIN etablissement et ON e.id_etudiant = et.id_etablissement;
Résultat :
nom prenom nom_etablissement
Dupont Jean Université ABC
Martin Claire Université XYZ
Durand Paul NULL
nom prenom nom_etablissement
Lemoine Anne Lycée Pierre Curie
4. Mettre à jour l'âge d'un étudiant (ex : mettre à jour l'âge de l'étudiant 101 à 23)
sql
Copy code
UPDATE etudiant
SET age = 23
WHERE id_etudiant = 101;
Table après mise à jour :
id_etudiant nom prenom age filiere_id
101 Dupont Jean 23 1
102 Martin Claire 20 1
103 Durand Paul 23 2
104 Lemoine Anne 21 3
5. Insérer un nouvel étudiant (ex : ajouter un étudiant 'Doe' en Informatique)
sql
Copy code
INSERT INTO etudiant (nom, prenom, age, filiere_id)
VALUES ('Doe', 'John', 24, 1);
Table après insertion :
id_etudiant nom prenom age filiere_id
101 Dupont Jean 23 1
102 Martin Claire 20 1
103 Durand Paul 23 2
104 Lemoine Anne 21 3
105 Doe John 24 1
6. Supprimer un étudiant (ex : supprimer l'étudiant avec id_etudiant = 103)
sql
Copy code
DELETE FROM etudiant
WHERE id_etudiant = 103;
Table après suppression :
id_etudiant nom prenom age filiere_id
101 Dupont Jean 23 1
102 Martin Claire 20 1
104 Lemoine Anne 21 3
7. Utiliser une sous-requête pour récupérer les étudiants ayant un âge supérieur à la
moyenne de leur filière (ex : 'Informatique')
sql
Copy code
SELECT nom, prenom, age
FROM etudiant
WHERE age > (
SELECT AVG(age)
FROM etudiant
INNER JOIN filiere ON etudiant.filiere_id = filiere.id_filiere
WHERE filiere.nom_filiere = 'Informatique'
);
Résultat :
nom prenom age
Dupont Jean 23
8. Afficher les étudiants ayant un âge supérieur à 22 dans la filière 'Mathématiques'
sql
Copy code
SELECT nom, prenom, age
FROM etudiant
WHERE filiere_id = 2 AND age > 22;
Résultat :
nom prenom age
Durand Paul 23