Séance 6
Langage SQL-LMD
Pr. M. Machkour
Objectifs
Étudier les commandes du langage de modification des données:
Delete : Suppression des données
Insert : Insertion des données
Update : Modification des données
Utilisation de la commande truncate
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 2
Objectifs
Présentation du langage SQL
Étudier le langage de définition des données : LDD
La commande create
La commande alter
La commande drop
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 3
Carte conceptuelle du chapitre
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 4
La commande Delete
sert à supprimer des lignes
Delete
[From] nomTable
[Where condition];
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 5
La commande delete : exemple
Supprimer tous les employés
Delete from emp;
Ou bien
Delete emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 6
La commande delete : exemple
Supprimer les employés du service 1
Delete from emp
where nserv=1;
ou bien
Delete emp
where nserv=1;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 7
Remarque
La commande truncate…
truncate table nomTable;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 8
Truncate : Exemple
Truncate table emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 9
Truncate : Exemple
Truncate table emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 10
La commande insert
sert à insérer des lignes
Insert into nomTableVue[(listecolonnes)]
Values (listeValeursExpressions);
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 11
Exemple
Insert into emp
Values(1,'ali'…);
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 12
Exemple
Insert into emp(nemp,nom,prénom)
Values(1,'ali','ahmed');
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 13
Exemple
Insert into emp(nom,prénom,nemp)
Values('ali','ahmed',1);
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 14
La commande insert
sert à insérer des lignes
Insert into nomTableVue[(listecolonnes)]
requêteSélection;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 15
Exemple
Insert into emp1
Select *
from emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 16
Exemple
Insert into emp1(code,nom,prénom)
Select code, nom, prénom
from emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 17
La commande insert
sert à insérer des lignes
Insert into
(reqSélection )
Values (listeValeursExpressions)
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 18
SMI5/LPII FS Agadir : 20-21 BASES DE DONNÉES
Exemple
Insert into
(select nemp, nom, salaire from emp where nserv=1)
Values(1,'ali',10000);
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 19
Exemple d'exécution
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 20
Insert all
into nomTable(listeColonnes)
Values (listeExpressions)
into nomTable(listeColonnes)
Values (listeExpressions)
reqSélection;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 21
Exemple
Insert all
into emp1(nom)
Values(nom)
Into emp2(prénom)
Values (prénom)
Select * from emp;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 22
Exemple d'exécution
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 23
La commande update
sert à modifier les valeurs des données
Update nomTableVue
set col1=Expr1|default|(sélection),
col2=Expr2|default|(sélection)…
[Where condition];
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 24
La commande update
sert à modifier les valeurs des données
Update nomTableVue
set col1=Expr1|default|(sélection),
col2=Expr2|default|(sélection)…
[Where condition];
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 25
Update : exemple
Augmenter de 10% les salaires de tous les employés.
Update emp
set salaire=salaire*1.1
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 26
Update : exemple
Augmenter les salaires des employés de service 1 de 10%.
Update emp
set salaire=salaire*1.1
where nservice=1;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 27
Update : exemple
Mettre en majuscule les noms et les prénoms des employés
Update emp
set nom=upper(nom)
prénom=upper(prénom);
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 28
Exemple d'exécution : Update
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 29
Update : Exemple
Affecter à chaque employé le salaire max de son service
Update emp e1
set salaire=(select max(salaire) from emp e2 where
[Link]=[Link]);
Update emp
set salaire=(select max(salaire) from emp );
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 30
La commande update
sert à modifier les valeurs des données
Update nomTableVue
set (listeColonnes)=(sélection)
[Where condition];
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 31
Update : exemple
Changer le numéro du service 1 par 99 et Affecter à ses
employés la moyenne des salaires de leur service multiplié
par 1.1
update emp
set ( sal , nserv)=
(select avg(sal)*1.1, 99 from emp where nserv =1)
where nserv =1;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 32
Remarque
Les opérations sur les tables peuvent être aussi appliquées sur les vues
dites vues modifiables.
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 33
Exemples
- Delete from vueEmp
Where codeEmp=1;
- Insert into vueEmp
Values(…);
- Update vueEMP
Set salaire=1.1 * salaire;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 34
Objectifs
Étudier les commandes du langage de modification des données:
Delete : Suppression des données
Insert : Insertion des données
Update : Modification des données
Utilisation de la commande truncate
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 35
Utilisation de la clause returning
Cette clause stocke des valeurs issues des lignes changées dans des variables
dites variables de liaison.
Syntaxe
Update …
returning expr1, expr2… into :var1,:var2…;
var1, var2…sont dites variables de liaison
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 36
Exemples
Changer le service et le salaire de l'employé de numéro 10 (augmentation
de 10%). Les nouvelles valeurs seront placées dans des variables de liaison.
Variable de liaison
Définition d'une variable de liaison:
Var[iable] nomVar type
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 37
Variable de liaison (exemples)
var var_sal number
var var_nserv number
update emp
set ( sal , nserv)=
(select sal*1.1, 2 from emp where nemp =10)
where nemp =10
returning sal*1.1,nserv into :var_sal, : var_nser;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 38
Affichage des variables de liaison
- Pour afficher la valeur de var_sal sous SQL*PLUS on
utilise la syntaxe
print var_sal, var_nserv
ou simplement
print
- Pour afficher toutes les variables => var
- Pour avoir une description d'une variable
var nom_variable
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 39
La clause returning s'utilise aussi avec les commandes delete et insert
Delete …returning …;
Insert into … returning …;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 40
Exemples
-Delete from emp
Where nemp=1
Returning nom , sal into :vnom,:vsal
-delete from emp
Where ville='casa'
Returning sum(salaire), count(nemp) into :vsal , :vnbre;
-Insert into emp(nemp,nom,…)
Values(10,'ali',…)
Returning initcap(nom), sal*1.1 into :vnom,:vsal;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 41
-Insert into emp(nemp,nom,…)
Values(10,'ali',…1)
Returning (select locals from service where nserv=1), sal*1.1
into :vlocal, :vsal;
SMI5/LPII FS Agadir : 23-24 BASES DE DONNÉES 42