Vous êtes sur la page 1sur 27

Concepts et

langages des
Cours SGBD 5 Bases de
Données
Relationnelles

Cours SGBD 1
Sommaire

Cours SGBD 2
SQL Sous-requête
• Une sous-requête (aussi appelé « requête imbriquée » ou « requête en
cascade ») consiste à exécuter une requête à l’intérieur d’une autre
requête. Une requête imbriquée est souvent utilisée au sein d’une clause
WHERE ou de HAVING pou remplacer une ou plusieurs constante.
SELECT *
FROM `table`
WHERE `nom_colonne` IN
( SELECT `colonne`
FROM `table2`
WHERE `cle_etrangere` = 36 )
Cours SGBD 3
SQL EXISTS

• Dans le langage SQL, la commande EXISTS s’utilise dans une clause


conditionnelle pour savoir s’il y a une présence ou non de lignes
lors de l’utilisation d’une sous-requête.
SELECT nom_colonne1
FROM `table1`
WHERE EXISTS (
SELECT nom_colonne2
FROM `table2`
WHERE nom_colonne3 = 10
)

Cours SGBD 4
SQL EXISTS

• Exemple:
SELECT ref,designation
FROM f_produits fp JOIN f_stocks fs ON fp.ref = fs.ref
where fs.qte =0 and
exists (
select * from f_facturesdet fd
where fp.ref = fd.ref
);
Cours SGBD 5
SQL ALL

• La commande ALL permet de comparer une valeur dans l’ensemble


de valeurs d’une sous-requête. En d’autres mots, cette commande
permet de s’assurer qu’une condition est « égale », « différente », «
supérieure », « inférieure », « supérieure ou égale » ou « inférieure
ou égale » pour tous les résultats retourné par une sous-requête.

SELECT * FROM table1


WHERE condition > ALL (
SELECT * FROM table2 WHERE condition2 )

Cours SGBD 6
SQL ANY / SOME

• La commande ANY (ou SOME) permet de comparer une valeur


avec le résultat d’une sous-requête. Il est ainsi possible de vérifier
si une valeur est « égale », « différente », « supérieur », « supérieur
ou égale », « inférieur » ou « inférieur ou égale » pour au moins
une des valeurs de la sous-requête.

SELECT * FROM table1


WHERE condition > ANY (
SELECT * FROM table2 WHERE condition2 )

Cours SGBD 7
SQL Commentaires

• -- insert un commentaire jusqu’á la fin de la ligne


• /* … */ Encadre un commentaire sur une ou plusieurs lignes.

Cours SGBD 8
SQL UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Exemple :
UPDATE f_clients SET ville=‘CASA’
WHERE ville=‘CASABLANCA’

Cours SGBD 9
SQL DELETE

• La commande DELETE en SQL permet de supprimer des lignes dans


une table. En utilisant cette commande associé à WHERE il est
possible de sélectionner les lignes concernées qui seront supprimées.

DELETE FROM table


WHERE condition

Cours SGBD 10
SQL CREATE VIEW
Une vue (VIEW) est une relation virtuelle, exprimée en termes
d'une requête SQL.
Les vues permettent :
• de simplifier l'expression des requêtes ;
• de définir des sous-ensembles de la BD sur lesquels il sera
possible de spécifier des droits d'accès.

CREATE VIEW nom_de_vue (nom_col1,nom_col2,…) AS


Requête;
Cours SGBD 11
• CREATE VIEW liste_tv AS (categorie,reference,designation)
SELECT categorie,ref,designation
FROM f_produits fp join f_categories fc
ON fp.ref=fc.ref
where categ = 1;

Cours SGBD 12
Mise à jour au travers d'une vue
Pour être utilisée pour une mise à jour, une vue doit vérifier les
conditions suivantes :
• La vue ne doit pas inclure la clause DISTINCT.
• Chaque élément de la clause SELECT doit être un nom de colonne.
• La clause FROM ne doit contenir qu'une seule table, elle-même
modifiable.
• La clause WHERE ne doit pas contenir de sous-requête.
• La vue ne doit contenir ni clause GROUP BY, ni clause HAVING.

Cours SGBD 13
EXERCICES.
1 - Fixer une remise de 20% sur tous les téléviseurs LED. (table f_produits)
2 - Ajouter une colonne plafond á la table f_clients. (plafond de crédit à accorder á chaque client)
3 - Remplir les plafond de crédit pour chaque client de la façon suivante:
Plafond = 100.000dh pour les clients dont le CA <= 100.000
Plafond = 200.000dh pour les clients dont le CA est compris entre 100.001 et 200.000
Plafond = 300.000dh pour les clients dont le CA est compris entre 200.001 et 300.000
Plafond = 400.000dh pour les clients dont le CA > 300.001
4 - Créer une table f_avoirs (avoir,date,refclient,facture,montant)
5 - donner un avoir de 5% sur le montant de la facture pour chaque facture dont le montant est
supérieur ou égale á 150.000dh
6 - donner un avoir de 3% sur le montant de la facture pour chaque facture dont le montant est
inférieur á 150.000dh

Cours SGBD 14
7 - Rapport des factures avec valeur nette.
8 - Rapport de clients avec chiffre d’affaires.
9 - Rapport des ventes (Quantité et CA) par produit.

10- Donner la ou les facture(s) dont la valeur est la plus grande.


11- Donner la ou les facture(s) dont la valeur est la plus faible.
12- Donner le ou les clients dont le chiffre d’affaires est le plus grand.
13- Donner le ou les clients dont le chiffre d’affaires est le plus faible.

Cours SGBD 15
Concept de transaction

Une transaction est un fragment de programme dont l'exécution


fait passer une BD d'un état cohérent à un autre état cohérent.
Une transaction est une suite d'événements dont chacun peut
être :
• la lecture ou l'écriture d'une donnée ;
• le verrouillage ou le déverrouillage d'une donnée ;
• le démarrage ou l'arrêt de la transaction.
• Une donnée est un fragment d'une BD :
• une valeur d'attribut, un n-uplet, une table…
Cours SGBD 16
Événements

événement signification

start démarrage de la transaction

read D lecture d'une donnée D

write D modification d'une donnée D

rollback annulation de la transaction

commit confirmation de la transaction

Cours SGBD 17
Propriétés d'une transaction

ACID :

• Atomicité

• Cohérence

• Isolation

• Durabilité

Cours SGBD 18
Atomicité
• Soit toutes les modifications effectuées par une transaction sont
enregistrées dans la BD, soit aucune ne l'est.
• Si une transaction est confirmée (commit), toutes les modifications
qu'elle a effectuées sont enregistrées dans la BD et rendues visibles
aux autres utilisateurs.
• Si une transaction est interrompue (rollback), alors aucune de ces
modifications n'est enregistrée dans la BD.

Cours SGBD 19
Cohérence

• Une transaction fait passer une BD d'un état cohérent à un autre état
cohérent.

• Un état cohérent est un état dans lequel les contraintes d'intégrité


sont vérifiées.

Cours SGBD 20
Isolation

• Une transaction se déroule sans être perturbée par les transactions


concurrentes : tout se passe comme si elle se déroulait seule.

Cours SGBD 21
Durabilité

• Une fois qu'une transaction a été confirmée, le SGBD garantit


qu'aucune modification qu'elle a effectuée ne sera perdue, quels que
soient les accidents qui surviendront : interruption, panne du système
d'exploitation, « crash » de disque, etc.
Cours SGBD 22
• Problèmes dus à la concurrence
BD
T 1 T2
A = 10

read A    

  read A  

A = A + 10    

write A   A = 20

  A = A + 50  

  write A A = 60
Cours SGBD 23
• Lecture impropre (données incohérentes)
BD
A + B = 200
T1 T2
A = 120
B = 80
read A    
A = A - 50    
write A   A = 70
  read A  
  read B  
display A + B
   
(150 est affiché)
read B    
B = B + 50    
write B   B = 130
Cours SGBD 24
• Lecture impropre (données non confirmées)

BD
T1 T2
A = 50
  A = 70  
  write A A = 70
read A
   
(70 est lu)

rollback
  (La valeur initiale de A est A = 50
restaurée)

Cours SGBD 25
• Lecture non reproductible
BD
T1 T2
A = 10

read A
   
(10 est lu)

A = 20    
write A   A = 20

read A
   
(20 est lu)

Cours SGBD 26
Des questions ?

Cours SGBD 27