1SQL
Le schéma de la base de données cours est le suivant: ✔
Etudiant(Numetu,Nometu,Prenometu,Dtnaiss,Cdsexe#) ✔
Matiere(Numat,Nomat,Coeff,Numens#) ✔ Sexe(Cdsexe,Lbsexe) ✔
Enseignant(Numens, Nomens,Prenomens,Grade,Ancien) ✔ Notes(Numetu#,
Numat#, note).
B) Commandes MySQL:
1) Afficher les tables:
```sql
SHOW TABLES;
```
2) Afficher la structure:
```sql
DESCRIBE Etudiant;
DESCRIBE Matiere;
DESCRIBE Sexe;
DESCRIBE Enseignant;
DESCRIBE Notes;
```
C) Requêtes simples:
1) Liste des étudiants:
```sql
SELECT Numetu, Nometu, Prenometu FROM Etudiant;
```
2) Matières par ordre alphabétique:
```sql
SELECT * FROM Matiere ORDER BY Nomat;
```
3) Enseignants par ancienneté:
```sql
SELECT Nomens, Prenomens, Ancien FROM Enseignant ORDER BY Ancien;
```
4) Liste des assistants:
```sql
SELECT * FROM Enseignant WHERE Grade = 'ASS';
```
5) Ancienneté spécifique:
```sql
SELECT * FROM Enseignant WHERE Ancien > 3;
SELECT * FROM Enseignant WHERE Ancien BETWEEN 2 AND 4;
```
6) Ancienneté de SIMON:
```sql
SELECT Ancien FROM Enseignant WHERE Nomens = 'SIMON' AND Prenomens =
'Étienne';
```
7) Étudiants avec prénom en J:
```sql
SELECT * FROM Etudiant WHERE Prenometu LIKE 'J%';
```
8-10) Effectifs:
```sql
SELECT COUNT(*) FROM Etudiant;
SELECT COUNT(*) FROM Etudiant WHERE Cdsexe = 'M';
SELECT COUNT(*) FROM Etudiant WHERE Cdsexe = 'F';
```
11-14) Statistiques ancienneté:
```sql
SELECT MIN(Ancien) FROM Enseignant;
SELECT MAX(Ancien) FROM Enseignant;
SELECT Nomens, Grade, Ancien FROM Enseignant WHERE Ancien IN (SELECT
MIN(Ancien) FROM Enseignant) OR Ancien IN (SELECT MAX(Ancien) FROM
Enseignant);
SELECT AVG(Ancien) FROM Enseignant;
```
15) Âge des étudiants:
```sql
SELECT Nometu, YEAR(CURRENT_DATE) - YEAR(Dtnaiss) AS age FROM Etudiant;
```
D) Jointures:
1) Enseignants d'histoire:
```sql
SELECT e.Nomens, e.Grade FROM Enseignant e JOIN Matiere m ON e.Numens =
m.Numens WHERE m.Nomat = 'Histoire';
```
2) Matières MCF/ASS:
```sql
SELECT m.Nomat, m.Coeff FROM Matiere m JOIN Enseignant e ON m.Numens =
e.Numens WHERE e.Grade IN ('MCF', 'ASS');
```
3-5) Notes et étudiants:
```sql
SELECT e.Nometu, e.Prenometu, n.note FROM Etudiant e JOIN Notes n ON
e.Numetu = n.Numetu JOIN Matiere m ON n.Numat = m.Numat WHERE m.Nomat
= 'Histoire' ORDER BY e.Nometu;
SELECT n.note, m.Nomat, e.Nometu FROM Notes n JOIN Matiere m ON n.Numat =
m.Numat JOIN Etudiant e ON n.Numetu = e.Numetu;
SELECT e.Nometu FROM Etudiant e WHERE NOT EXISTS (SELECT * FROM Notes n
JOIN Matiere m ON n.Numat = m.Numat WHERE m.Nomat = 'Histoire' AND
n.Numetu = e.Numetu);
```
E) Regroupements:
1-4) Moyennes et statistiques:
```sql
SELECT m.Nomat, AVG(n.note) as moyenne FROM Notes n JOIN Matiere m ON
n.Numat = m.Numat GROUP BY m.Nomat;
SELECT e.Nometu, AVG(n.note * m.Coeff) / SUM(m.Coeff) as moyenne FROM
Etudiant e JOIN Notes n ON e.Numetu = n.Numetu JOIN Matiere m ON n.Numat =
m.Numat GROUP BY e.Numetu;
SELECT COUNT(*) FROM (SELECT e.Numetu FROM Etudiant e JOIN Notes n ON
e.Numetu = n.Numetu JOIN Matiere m ON n.Numat = m.Numat GROUP BY
e.Numetu HAVING AVG(n.note) >= 10) as subquery;
SELECT m.Nomat FROM Notes n JOIN Matiere m ON n.Numat = m.Numat GROUP
BY m.Nomat HAVING AVG(n.note) < 10;
```