0% ont trouvé ce document utile (0 vote)
52 vues5 pages

Bac SQL Correc

Le document présente des sujets corrigés de bac en bases de données, incluant des requêtes SQL pour manipuler des tables telles que Role, Eleves, et Commandes. Il aborde des concepts comme les clés primaires et étrangères, ainsi que des opérations comme INSERT, UPDATE et SELECT. Des exemples de requêtes sont fournis pour illustrer les erreurs potentielles et les bonnes pratiques en matière de gestion de données.

Transféré par

ndjendjeaurelien
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • prix,
  • sélection,
  • quantité,
  • clients,
  • tables,
  • clés étrangères,
  • erreurs SQL,
  • saisie,
  • domaines d'attributs,
  • UPDATE
0% ont trouvé ce document utile (0 vote)
52 vues5 pages

Bac SQL Correc

Le document présente des sujets corrigés de bac en bases de données, incluant des requêtes SQL pour manipuler des tables telles que Role, Eleves, et Commandes. Il aborde des concepts comme les clés primaires et étrangères, ainsi que des opérations comme INSERT, UPDATE et SELECT. Des exemples de requêtes sont fournis pour illustrer les erreurs potentielles et les bonnes pratiques en matière de gestion de données.

Transféré par

ndjendjeaurelien
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • prix,
  • sélection,
  • quantité,
  • clients,
  • tables,
  • clés étrangères,
  • erreurs SQL,
  • saisie,
  • domaines d'attributs,
  • UPDATE

SUJETS DE BAC CORRIGÉS: BASES DE DONNÉES

SUJET METROPOLE 1
On peut reproduire le MCD dans JMerise:

On obtient les tables:

1. Si Piece et Acteur sont vides, il n'est pas possible d'insérer une entrée dans
la relation Role car les valeurs des clés étrangères idPiece et idRole ne sont
pas définies. Le SGBD retournera donc une erreur.

2. Pour ajouter ce rôle, on doit écrire la requête suivante :


INSERT INTO Role VALUES(46721, 389761, 'Tartuffe')

3. La requête SQL ci-dessous a pour but d’actualiser la colonne Langue en


ajoutant la valeur 'Anglais' pour tous les enregistrements dont l’attribut Langue a
pour valeur 'Britannique' ou 'Américain '

Requête SQL étudiée :


UPDATE Piece
SET langue = "Anglais"
WHERE langue = "Américain" OR langue = "Britannique";
4.
a. SELECT nom, prenom FROM Acteur WHERE anneeNaiss >
1990

b. SELECT anneeNaiss FROM Acteur ORDER BY anneeNaiss


DESC LIMIT 1

ou mieux:

SELECT MAX(anneeNaiss) FROM Acteur

c. SELECT Role.nomRole FROM Role


INNER JOIN Acteur
ON Role.idActeur = Acteur.idActeur
WHERE Acteur.prenom = 'Vincent'
AND Acteur.nom = 'Macaigne'

ou avec seulement la clause WHERE:

SELECT Role.nomRole FROM Role, Acteur


WHERE Acteur.prenom = 'Vincent' AND Acteur.nom =
'Macaigne' AND Role.idActeur = Acteur.idActeur

d. SELECT Piece.titre FROM Piece


INNER JOIN Role
ON Role.idPiece = Piece.idPiece
INNER JOIN Acteur
ON Role.idActeur = Acteur.idActeur
WHERE Acteur.prenom = 'Jeanne'
AND Acteur.nom = 'Balibar'

ou avec seulement la clause WHERE:

SELECT Piece.titre FROM Piece, Acteur, Role


WHERE Piece.langue = 'Russe' AND Acteur.prenom =
'Jeanne' AND Acteur.nom = 'Balibar' AND
Role.idActeur = Acteur.idActeur AND Role.idPiece =
Piece.idPiece

SUJET METROPOLE 2

1. Le code SQL ci-dessous provoque une erreur car le premier et le dernier


enregistrement ont une même clé primaire. Cela viole la contrainte d´intégrité.

SUJETS DE BAC CORRIGES: BASES DE DONNEES


Requête SQL étudiée :
INSERT INTO Eleves VALUES (128, 'Dupont', 'Jean', 'T1') ;
INSERT INTO Eleves VALUES (200, 'Dupont', 'Jean', 'T1') ;
INSERT INTO Eleves VALUES (128, 'Dubois', 'Jean', 'T2')
;

2. Dans la définition de la relation Emprunts, ce qui assure qu’on ne peut pas


enregistrer un emprunt pour un élève qui n’a pas encore été inscrit dans la relation
Eleves est la clé étrangère idEleve qui doit d’abord être définie par la clé primaire
idEleve de la relation Eleves.

3. SELECT titre FROM Livre WHERE auteur = 'Molière'

4. La requête SQL ci-dessous compte le nombre d'élèves enregistrés dans la


classe T2.

Requête SQL étudiée :


SELECT COUNT(*)
FROM Eleves
WHERE classe = 'T2' ;

5.

UPDATE Emprunts SET dateRetour = '2020-09-30'


WHERE idEmprunt = 640 ;

6. La requête ci-dessous donne les noms et prénoms des élèves enregistrés


dans la classe de T2 ayant emprunté un livre au CDI.

Requête SQL étudiée :


SELECT DISTINCT nom, prenom
FROM Élèves, Emprunts
WHERE Eleves.idEleve = Emprunts.idEleve
AND Eleves.classe = 'T2' ;

7. Il faut joindre les trois tables:

SELECT Eleves.nom, Eleves.prenom FROM Eleves


INNER JOIN Emprunts
ON Eleves.idEleve = Emprunts.idEleve
INNER JOIN Livres
ON Livres.isbn = Emprunts.isbn
WHERE Livres.titre = 'Les misérables'

... ou avec seulement la clause WHERE:


SELECT Eleves.nom, Eleves.prenom
FROM Eleves, Emprunts, Livres
WHERE Livres.titre = 'Les misérables'
AND Livres.isbn = Emprunts.isbn
AND Emprunts.idEleve = Eleves.idEleve

POLYNESIE
PARTIE A

1. On donne les clés primaires des relations :


Clients : idClient
Articles : idArticle

2. Le domaine des attributs :

Email : Varchar(50) --! TEXTE de 50 caractères maximum

Quantite : INT --! ENTIER

3. CREATE TABLE Commandes (

IdCmd INT PRIMARY KEY,

IdClient INT,

Date DATE,

AdresseLivraison VARCHAR(90),

PaiementValide BOOLEAN,

LivraisonFaite BOOLEAN,

FOREIGN KEY(IdClient) REFERENCES Clients (IdClient)

);

PARTIE B

1. Lorsqu'un formulaire contient une quantité importante de données, il est


préférable d'utiliser la méthode POST car les informations du formulaire à envoyer
passent directement à l'intérieur la requête HTTP et non à l'intérieur de l’URL. Les
navigateurs ont une taille limitée de caractères dans la barre d´adresse (8000
actuellement pour CHROME).
SUJETS DE BAC CORRIGES: BASES DE DONNEES
2. Pour la validation du paiement, il est préférable d'utiliser le protocole HTTPS
car il est entièrement chiffré et donc bien plus sécurisé que le protocole HTTP.

3. Avant la validation du formulaire, l'intérêt de vérifier le format des informations


saisies est de vérifier que les informations saisies sont cohérentes et logiques pour
éviter de possibles bugs ou erreurs.

PARTIE C

1.
SELECT IdArticle, Libelle FROM Articles WHERE PrixEnCentimes < 1500

2. La requête ci-dessous sélectionne tous les identifiants des clients, leurs mails,
les identifiants de leurs commandes et leurs adresses de livraison quand les
paiements sont invalides.

Requête SQL étudiée :


SELECT u.IdClient, u.Email, v.IdCmd, v.AdresseLivraison
FROM Clients as u JOIN Commandes as v
ON u.IdClient = v.IdClient
WHERE v.PaiementValide = False;

3. Il faut à nouveau joindre trois tables:

SELECT Articles.Libelle FROM Articles


INNER JOIN ArticlesCommande
ON Articles.IdArticle = ArticlesCommande.IdArticle
INNER JOIN Commandes
ON ArticlesCommande.IdCmd = Commandes.IdCmd
WHERE Commandes.IdCmd = 1345

... ou avec seulement la clause WHERE:

SELECT Articles.Libelle
FROM Articles, ArticlesCommande, Commandes
WHERE Commandes.IdCmd = 1345
AND ArticlesCommande.IdCmd = Commandes.IdCmd
AND Articles.IdArticle = ArticlesCommande.IdArticle

4.

INSERT INTO Articles (Libelle, Description, PrixEnCentimes)


VALUES ('Imperméable', 'Cet imperméable se replie en forme de pochette.', 999)

Vous aimerez peut-être aussi