Vous êtes sur la page 1sur 24

Bases de Données

Avancées

M. ZOUHRI

FSJES- Meknès Master MIAGE


Langage de Manipulation des
Données
◦ Un ordre du LMD est exécuté lorsque :
 Vous ajoutez des lignes à une table
 Vous modifiez des lignes existantes dans une
table
 Vous supprimez des lignes d'une table

◦ Une transaction est un ensemble d'ordres du


LMD formant une unité de travail logique.
L‘ordre INSERT

◦ L'ordre INSERT permet d'ajouter de nouvelles


lignes dans une table.

INSERT
INSERT INTO
INTO table
table [(column
[(column [,
[, column...])]
column...])]
VALUES
VALUES (value
(value [,
[, value...]);
value...]);

◦ Cette syntaxe n'insère qu'une seule ligne à la


fois.
Insertion de Nouvelles Lignes
◦ Insérez une nouvelle ligne en précisant une valeur pour
chaque colonne.
◦ Eventuellement, énumérez les colonnes dans la clause
INSERT.
SQL> INSERT INTO dept (deptno, dname, loc)
2 VALUES (50, 'DEVELOPMENT', 'DETROIT');
1 row created.

◦ Indiquez les valeurs dans l'ordre par défaut des colonnes


dans la table.
◦ Placez les valeurs de type caractère et date entre simples
quotes.
Insertion de Valeurs au Moyen
de Variables de Substitution
 Création d'un script interactif au moyen
de paramètres de substitution SQL*Plus.
SQL> INSERT INTO dept (deptno, dname, loc)
2 VALUES (&department_id,
3 '&department_name', '&location');

Enter value for department_id: 80


Enter value for department_name: EDUCATION
Enter value for location: ATLANTA

1 row created.
Copie de Lignes d'une autre Table
◦ Ecrivez votre ordre INSERT en spécifiant une sous-
interrogation.
SQL> INSERT INTO managers(id, name, salary, hiredate)
2 SELECT empno, ename, sal, hiredate
3 FROM emp
4 WHERE job = 'MANAGER';
3 rows created.

◦ N'utilisez pas la clause VALUES.


◦ Le nombre de colonnes de la clause INSERT doit
correspondre à celui de la sous-interrogation.
L‘ordre UPDATE

◦ Utilisez l'ordre UPDATE pour modifier des lignes


existantes.

UPDATE
UPDATE table
table
SET
SET column
column == value
value [,
[, column
column == value]
value]
[WHERE
[WHERE condition];
condition];

◦ Si nécessaire, vous pouvez modifier plusieurs


lignes à la fois.
Modification de lignes d'une Table
◦ La clause WHERE permet de modifier une ou plusieurs
lignes spécifiques.
SQL> UPDATE emp
2 SET deptno = 20
3 WHERE empno = 7782;
1 row updated.

◦ Si vous omettez la clause WHERE, toutes les lignes sont


modifiées.
SQL>
SQL> UPDATE
UPDATE employee
employee
22 SET
SET deptno
deptno == 20;
20;
14
14 rows
rows updated.
updated.
Modification avec une
Sous-Interrogation Multi-colonne
 Modifier le poste et le n° de département
de l'employé 7698 à l'identique de
l'employé 7499.

SQL> UPDATE emp


2 SET (job, deptno) =
3 (SELECT job, deptno
4 FROM emp
5 WHERE empno = 7499)
6 WHERE empno = 7698;
1 row updated.
Modification de Lignes :
Erreur de Contrainte d'Intégrité
as
p
e
ist
SQL> UPDATE emp ' ex
SQL> UPDATE emp
n
22 SET
SET deptno
deptno == 55
55
55
33 WHERE deptno == 10; t
en
WHERE deptno 10;

em
art
ép
d
UPDATE
UPDATE emp
emp de
o
** ér
ERROR
ERROR at
at line
line 1:u
1:m
n
ORA-02291:
L e
ORA-02291: integrity
integrity constraint
constraint (USR.EMP_DEPTNO_FK)
(USR.EMP_DEPTNO_FK)
violated
violated -- parent
parent key
key not
not found
found
L‘ordre DELETE

 Vous pouvez supprimer des lignes d'une


table au moyen de l'ordre DELETE.

DELETE
DELETE [FROM]
[FROM] table
table
[WHERE
[WHERE condition];
condition];
Suppression de Lignes d'une Table
◦ La clause WHERE permet de supprimer une ou
plusieurs lignes spécifiques.
SQL>
SQL> DELETE
DELETE FROM
FROM department
department
22 WHERE
WHERE dname
dname == 'DEVELOPMENT';
'DEVELOPMENT';
11 row
row deleted.
deleted.

◦ Si vous omettez la clause WHERE, toutes les


lignes sont supprimées.

SQL>
SQL> DELETE
DELETE FROM
FROM department;
department;
44 rows
rows deleted.
deleted.
Suppression de Lignes :
Erreur de Contrainte d'Intégrité
ui
e q
g n clé
l i e
e
n mm
u o
SQL>
SQL> DELETE
DELETE FROM
FROM dept
dept er e c
22 WHERE deptno
deptno == 10; ri m i sé
WHERE 10;
p p ti l .
su e u bl e
as air ta
z p im tre
DELETE
DELETE FROM
FROM dept
dept
v e p r au
**
ou clé ne
ERROR
ERROR at
at line
line 1:1:e p ne s u
s n u constraint an
ORA-02292:
ORA-02292: integrity
integrity
u n t d
constraint (USR.EMP_DEPTNO_FK)
(USR.EMP_DEPTNO_FK)
violated --Vo
violated child
childt i e record
r
recorde foundfound

o n g è
c ran
ét
Transactions de Base de Données

 Une transaction se compose des éléments


suivants :
◦ Ensemble d'ordres du LMD effectuant une
modification cohérente des données
◦ Un ordre du LDD
◦ Un ordre du LCD
Transactions de Base de Données
Une transaction :
◦ Commence à l'exécution du premier ordre SQL
◦ Se termine par l'un des événements suivants :
 COMMIT ou ROLLBACK
 Exécution d'un ordre LDD ou LCD (validation
automatique)
 Fin de session utilisateur
 Panne du système
Avantages des ordres
COMMIT et ROLLBACK

◦ Garantit la cohérence des données

◦ Possibilité d'afficher le résultat des modifications

avant qu'elles ne soient définitives

◦ Regroupement logique d'opérations


Contrôle des Transactions
Transaction
Transaction

INSERT UPDATE INSERT DELETE

COMMIT Savepoint A Savepoint B

ROLLBACK to Savepoint B

ROLLBACK to Savepoint A

ROLLBACK
Traitement Implicite des Transactions

◦ Une validation automatique a lieu dans les situations


suivantes :
 Exécution d'un ordre du LDD
 Exécution d'un ordre du LCD
 Sortie normale de SQL*Plus, sans ordre COMMIT ou
ROLLBACK explicite

◦ Il se produit un rollback automatique en cas de sortie


anormale de SQL*Plus ou d'une panne du système
Etat des Données Avant
COMMIT ou ROLLBACK

◦ Il est possible de restaurer l'état précédent des données.


◦ L'utilisateur courant peut afficher le résultat des
opérations du LMD au moyen de l'ordre SELECT.
◦ Les résultats des ordres du LMD exécutés par l'utilisateur
courant ne peuvent pas être affichés par d'autres
utilisateurs.
◦ Les lignes concernées sont verrouillées. Aucun autre
utilisateur ne peut les modifier.
Etat des Données Après COMMIT
◦ Les modifications des données dans la base sont
définitives.
◦ L'état précédent des données est irrémédiablement
perdu.
◦ Tous les utilisateurs peuvent voir le résultat des
modifications.
◦ Les lignes verrouillées sont libérées et peuvent de
nouveau être manipulées par d'autres utilisateurs.
◦ Tous les savepoints sont effacés.
Validation de Données

◦ Effectuez les modifications.


SQL>
SQL> UPDATE
UPDATE emp
emp
22 SET
SET deptno
deptno == 10
10
33 WHERE
WHERE empno
empno == 7782;
7782;
11 row
row updated.
updated.

◦ Validez les modifications.


SQL> COMMIT;
Commit complete.
Etat des Données Après ROLLBACK
 L'ordre ROLLBACK rejette toutes les
modifications de données en instance.
◦ Les modifications sont annulées.
◦ L'état précédent des données est restauré.
◦ Les lignes verrouillées sont libérées.

SQL> DELETE FROM employee;


14 rows deleted.
SQL> ROLLBACK;
Rollback complete.
Annulation des Modifications
Jusqu'à une Etiquette
◦ Posez une étiquette dans la transaction
courante au moyen de l'ordre SAVEPOINT.
◦ Annulez la transaction jusqu'à cette étiquette
en utilisant l'ordre ROLLBACK TO SAVEPOINT.

SQL> UPDATE...
SQL> SAVEPOINT update_done;
Savepoint created.
SQL> INSERT...
SQL> ROLLBACK TO update_done;
Rollback complete.
Rollback au Niveau Ordre
◦ Si un seul ordre du LMD dans la transaction
échoue, seul cet ordre est annulé.
◦ Oracle met en œuvre un savepoint implicite.
◦ Toutes les autres modifications sont conservées.
◦ L'utilisateur doit terminer explicitement les
transactions en exécutant un ordre COMMIT ou
ROLLBACK.

Vous aimerez peut-être aussi