Vous êtes sur la page 1sur 4

Usthb

Facultéde Mathématiques Responsable du Module : Mme AHMIA.I


Département de Recherche Opérationnelle
Année 2020/2021
3 année Licence RO
Module Système d’information et Base de données

CorrigéSérie4

Exercice 1 :

1. Création des relations :

CREATE TABLE PFE(Num_PFE CHAR(5) PRIMARY KEY,


Titre VARCHAR(25),
SpécialitéVARCHAR(25)) ;
CREATE TABLE Etudiant(Matricule CHAR(12) PRIMARY KEY,
Nom VARCHAR(25),
Prenom VARCHAR(25),
Num_PFE CHAR(5) FOREIGN KEY REFERENCES PFE(Num_PFE) ) ;
Autre manière de création de la table Etudiant :
CREATE TABLE Etudiant(Matricule CHAR(12),
Nom VARCHAR(25),
Prenom VARCHAR(25),
Num_PFE CHAR(5),
PRIMARY KEY(Matricule),
FOREIGN KEY (Num_PFE) REFERENCES PFE(Num_PFE) ) ;
….
Terminez la création des autres tables
2. Ecrire la commande permettant de rajouter l’attribut Datesoutenance àla table
Soutenance.
ALTER TABLE Soutenance
ADD Datesoutenance DATE
3. Ecrire la commande permettant de rajouter l’attribut Grade àla table Enseignant.
ALTER TABLE Enseignant
ADD Grade VARCHAR(15)
4. Ecrire la commande permettant de supprimer les tables Soutenance et Jury.
DROP Soutenance
DROP Jury
Exercice2
Soit la base de données suivante permettant de gérer les consultations entre médecins identifiés par
leurs numero RPPS(répertoire des professionnels de santé) et des patients identifiés par leur numéro de
sécuritésocial numSS.
PATIENT(numSS, nomP, prenomP, genre, dateNaiss,# numRPPS)
MEDECIN (numRPPS, nomM, prenomM, specialite, ville, adresse)
CONSULTE (#numRPPS, #numSS, date, diagnostic, #numOrd)
PRESCRIPTION (numOrd, #idMed, nbBoites)
MEDICAMENT (idMed, nomMed, prix, categorie)
 Écrire en SQL les requêtes qui permettent d’effectuer les actions suivantes :
1. Créer la table PRESCRIPTION ;
CREATE TABLE PRESCRIPTION (numOrd CHAR(5), idMed CHAR(4), nbBoites int,
PRIMARY KEY (numOrd, idMed), FOREIGN KEY (idMed) REFERENCES
MEDICAMENT(idMed)) ;
2. Créer la table MEDICAMENT ;
CREATE TABLE MEDICAMENT (idMed CHAR(4) PRIMARY KEY, nomMed
VARCHAR(30), prix FLOAT, categorie VARCHAR(30)) ;
3. Ajouter le médicament n° 5432, avec le nom ‘aspirine’ et le prix ’11,05’ et de
catégorie ‘Antalgique’.
INSERT INTO MEDICAMENT VALUES (‘5432’, ‘aspirine’, 11,05, ‘Antalgique’)
4. Afficher la liste de tous les médecins.
SELECT * FROM MEDECIN
5. Afficher le nom et le prénom de tous les patients, trier par ordre inverse sur les noms;
SELECT nomP, prenomP FROM PATIENT
ORDER BY nom DESC ;
6. Afficher le nom et le prénom des médecins dont la spécialité contient la chaîne
"logue" ;
SELECT nomM, prénomM FROM MEDECIN
WHERE specialite LIKE '%logue%' ;
7. Afficher la liste des consultations qui n’ont pas donné lieu à une ordonnance;
SELECT * FROM CONSULT
WHERE numOrd is NULL;
8. Afficher tous les médecins qui ont la même spécialitéet qui sont dans la même ville
que le médecin Ahmed Mansour;
SELECT nomM, prenomM FROM MEDECIN
WHERE (specialite, ville) = (SELECT specialite, ville FROM MEDECIN
WHERE nomM=’Mansour’ AND prenomM=’Ahmed’ );
Autre écriture de la requête
SELECT nomM, prenomM FROM MEDECIN
WHERE (specialite= SELECT specialite FROM MEDECIN
WHERE nomM=’Mansour’ AND prenomM=’Ahmed’ )
AND
(ville= SELECT ville FROM MEDECIN
WHERE nomM=’Mansour’ AND prenomM=’Ahmed’ ) ;

9. Afficher tous les patients (numSS, nom, prénom) qui ont consulté un autre médecin
que leur médecin traitant ;
SELECT numSS, nomP, prénomP FROM PATIENT p
WHERE EXISTS (SELECT * FROM CONSULTE
WHERE numSS=p.numSS AND numRPPS<>p.numRPPS);
Autre écriture de la requête
SELECT numSS, nomP, prénomP FROM CONSULTE, PATIENT
WHERE (PATIENT.numRPPS <> CONSULT.numRPPS) AND
(PATIENT.numSS=CONSUL.numSS);
Exercice3
Etudiant(Matricule, Nom, Prénom, Groupe, Code-salle)
Enseignant(Code-ens, Nom-ens, Prénom-ens, Grade)
PC(Code-PC, Modèle, RAM)
Salle(Code-salle, superficie)
Séance(Code-séance, Code-ens, Codesalle, Jour-semaine, Heure, Groupe)
Affectation(Code-séance, Matricule, Code-PC)
1. Quelles sont les groupes dont les enseignants ont le Grade de Maitre de
Conférence.
SELECT Groupe FROM Séance, Enseignant
WHERE (Séance. Code-ens= Enseignant. Code-ens) AND
(Grade=’ Maitre de Conférence’)
2. Quels sont les étudiants (Matricule, Nom) non concerné par les séances du
jeudi.
SELECT Matricule, Nom From Etudiant, Séance
WHERE (Séance.Codesalle= Etudiant. Codesalle) AND
(Séance.Jour_semaine<>Jeudi)
Autre écriture de la requête:
SELECT Matricule, Nom From Etudiant
𝑆𝐸𝐿𝐸𝐶𝑇 𝐶𝑜𝑑𝑒𝑠𝑎𝑙𝑙𝑒 𝐹𝑟𝑜𝑚 𝑆𝑒𝑎𝑛𝑐𝑒
WHERE Codesalle NOT IN { 𝑊𝐻𝐸𝑅𝐸
𝐽𝑜𝑢𝑟𝑠𝑒𝑚𝑎𝑖𝑛𝑒 <> 𝐽𝑒𝑢𝑑𝑖

3. Quels sont les Maitres Assistants (Code-ens, Nom, Prénom) assurant plus
d’une séance de TP.
SELECT Code-ens, Nom, Prenom FROM Enseignant, Séance
WHERE (Enseignant.Code-ens=Seance.Code-ens)
AND (Grade=’Maitre Assistant’)
AND (Code-seance LIKE ‘%TP%’)
GROUP BY Code-ens
HAVING COUNT(Code-ens)>2
4. Quels sont les enseignants qui n’assurent aucune séance à la salle 204.
SELECT Code-ens, Nom, Prenom FROM Enseignant
WHERE Code-ens NOT IN SELECT Code-ens FROM Seance
WHERE Code-salle=’204’
5. Quels sont les groupes qui ont un nombre d’étudiants supérieur ou égale à 12.
SELECT Groupe FROM Etudiant
GROUP BY Groupe
HAVING COUNT(Matricule)≥ 12
6. Quelles sont les salles dont la superficie est maximale.
SELECT Code-salle FROM Salle
WHERE Superficie IN (SELECT MAX(Superficie) FROM Salle)
7. Quel est le nombre de séances assurées par chaque enseignant.
SELECT Code-ens, COUNT(Code-ens) FROM Seance
GROUP BY Code-ens

Vous aimerez peut-être aussi