SQL : Chapitre 6
Corrections
Learning by Doing.
Le monde du SQL.
Chapitre 7.
Pour sélectionner toutes les données de la table "student", utilisez :
SELECT * FROM student;
Vous pouvez aussi utiliser cette requête qui inclue le nom de la base de donnée et la table.
SELECT * FROM education.student;
Pour sélectionner toutes les données de la table "university", utilisez :
SELECT * FROM university;
La requête suivante permet de sélectionner toutes les lignes et toutes les colonnes de la table "student".
SELECT *
FROM student;
La requête suivante est une projection qui permet de sélectionner toutes les lignes, mais seulement une partie de colonnes de la table "student" (identifiant de l'étudiant, son nom et sa nationalité).
SELECT std_id, std_name, std_nationality
FROM student;
La requête suivante combine une projection et une restriction qui permet de sélectionner uniquement des lignes qui correspond aux étudiants français et seulement une parie de colonnes de la table "student".
SELECT std_id, std_name, std_nationality
FROM student
WHERE std_nationality="French";
Pour sélectionnez les noms et les prénoms des étudiants de la table « student », utilisez la requête suivante :
SELECT std_name, std_surname
FROM student;
SELECT std_name AS NAME, std_surname AS SURNAME
FROM student
-> Sélectionnez les étudiants qui ont 20 ans.
SELECT *
FROM student
WHERE std_age=20;
-> Sélectionnez les étudiants qui ont moins de 30 ans et qui sont américains.
SELECT *
FROM student
WHERE std_age < 30 AND std_nationality="American";
-> Sélectionnez les étudiants âgés entre 18 et 22 ans et qui ne sont pas français.
SELECT *
FROM student
WHERE std_age BETWEEN 18 AND 22
AND std_nationality<>"French";
-> Sélectionnez les étudiants qui ont plus de 18 ans ou qui sont américains.
SELECT *
FROM student
WHERE std_age>18 OR std_nationality="American";
-> Sélectionnez des établissements français qui ont moins de 100 ans.
SELECT *
FROM university
WHERE unv_country="France" AND
unv_year>1922;
SELECT *
FROM university
WHERE unv_country="France" AND
unv_year>2022-100;
SELECT *
FROM university
WHERE unv_country="France" AND
unv_year>YEAR(CURRENT_DATE())-100;
-> Sélectionnez les étudiants qui n’ont pas de numéro de téléphone renseigné.
SELECT *
FROM student
WHERE std_phone IS NULL ;
SELECT *
FROM student
WHERE std_phone LIKE "%XX%"
OR std_phone IS NULL;
Exercices pratiques : Les visites guidées
-> Affichez la liste des utilisateurs de la plateforme.
SELECT * FROM utilisateur;
-> Affichez la liste des utilisateurs-guides de la plateforme.
SELECT DISTINCT tour_guide FROM tour;
-> Affichez le tour le plus court.
SELECT * FROM tour
ORDER BY tour_duration ASC
LIMIT 1;
-> Affichez le tour le plus long.
SELECT * FROM tour
ORDER BY tour_duration DESC
LIMIT 1;
-> Affichez les commentaires qui ont une note inférieure à 5.
SELECT * FROM commentaire
WHERE cmt_note < 5;
-> Affichez les réservations faites par l’utilisateur ‘lachard’.
SELECT * FROM booking
WHERE usr_customer LIKE "%lachard%";
-> Affichez la liste des utilisateurs PREMIUM dans l’ordre alphabétique.
SELECT * FROM utilisateur
WHERE usr_is_premium=1
ORDER BY usr_surname ASC;
SELECT usr_surname AS SURNAME, usr_name AS NAME FROM utilisateur
WHERE usr_is_premium=1
ORDER BY usr_surname ASC;
-> Affichez les utilisateurs qui n’utilisent pas Gmail pour se connecter.
SELECT * FROM utilisateur
WHERE usr_email NOT LIKE "%gmail%";
-> Affichez la liste des utilisateurs triée par âge qui utilisent Gmail pour se connecter.
SELECT * FROM utilisateur
WHERE usr_email LIKE "%gmail%"
ORDER BY usr_age ASC;
-> Affichez les utilisateurs qui n’ont pas renseigné leur âge.
SELECT * FROM utilisateur
WHERE usr_age IS NULL;
-> Affichez les utilisateurs qui ont entre 19 et 21 ans et qui utilisent Gmail.
SELECT * FROM utilisateur
WHERE usr_age BETWEEN 19 AND 21
AND usr_email LIKE "%gmail%";
-> Affichez les tours proposés à Paris et qui coutent moins de 20 euros.
SELECT * FROM tour
WHERE tour_city="PARIS" AND tour_price<20;
-> Affichez les noms et les descriptions des visites qui coutent moins de 30 euros ou qui durent plus de 2 heures.
SELECT tour_name, tour_description FROM tour
WHERE tour_price<30 AND tour_duration<2;
-> Affichez les courriels des utilisateurs qui ont noté les tours sans laisser de commentaire et en laissant une note inférieure à 5. Triez les résultats par note en commençant par la note la plus faible.
SELECT * FROM commentaire
WHERE cmt_body IS NULL AND cmt_note<5
ORDER BY cmt_note ASC;
-> Sélectionnez les tours proposés en avril.
SELECT * FROM tour
WHERE tour_date LIKE "2022-04%"
SELECT * FROM tour
WHERE tour_date BETWEEN '2022-04-1 00:00:00' AND '2022-04-30 23:59:59'
SELECT * FROM tour
WHERE MONTH(tour_date)=4;