manipulation des données , cours sql oracle

42
Copyright Oracle Corporation, 1998. Tous droits réservés. 12 12 Manipulation des Données www.TelechargerCou rs.com

Upload: webreaker

Post on 22-Jun-2015

832 views

Category:

Documents


6 download

DESCRIPTION

Manipulation des Données , cours sql oracle

TRANSCRIPT

Page 1: Manipulation des Données , cours sql oracle

Copyright Oracle Corporation, 1998. Tous droits réservés.

1212

Manipulation des DonnéesManipulation des Données

www.TelechargerCours.com

Page 2: Manipulation des Données , cours sql oracle

12-2 Copyright Oracle Corporation, 1998. Tous droits réservés.

ObjectifsObjectifs

A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :

• Décrire chaque ordre du LMD

• Insérer des lignes dans une table

• Mettre à jour des lignes dans une table

• Supprimer des lignes d'une table

• Contrôler les transactions

A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :

• Décrire chaque ordre du LMD

• Insérer des lignes dans une table

• Mettre à jour des lignes dans une table

• Supprimer des lignes d'une table

• Contrôler les transactions

www.TelechargerCours.com

Page 3: Manipulation des Données , cours sql oracle

12-3 Copyright Oracle Corporation, 1998. Tous droits réservés.

Langage de Manipulation des Données

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.

• 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.

www.TelechargerCours.com

Page 4: Manipulation des Données , cours sql oracle

12-4 Copyright Oracle Corporation, 1998. Tous droits réservés.

Ajout d'une Nouvelle Ligne dans une Table

Ajout d'une Nouvelle Ligne dans une Table

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

Nouvelle ligneNouvelle ligne

50 DEVELOPMENT DETROIT

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

"…insérer une "…insérer une nouvelle ligne dans la nouvelle ligne dans la

table DEPT …"table DEPT …"

50 DEVELOPMENT DETROIT

Page 5: Manipulation des Données , cours sql oracle

12-5 Copyright Oracle Corporation, 1998. Tous droits réservés.

L'Ordre INSERTL'Ordre INSERT

• L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.

• Cette syntaxe n'insère qu'une seule ligne à la fois.

• L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.

• Cette syntaxe n'insère qu'une seule ligne à la fois.

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

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

www.TelechargerCours.com

Page 6: Manipulation des Données , cours sql oracle

12-6 Copyright Oracle Corporation, 1998. Tous droits réservés.

Insertion de Nouvelles LignesInsertion 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.

• 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.

• Insérez une nouvelle ligne en précisant une valeur pour chaque colonne.

• Eventuellement, énumérez les colonnes dans la clause INSERT.

• 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.

SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (50, 'DEVELOPMENT', 'DETROIT');1 row created.1 row created.

www.TelechargerCours.com

Page 7: Manipulation des Données , cours sql oracle

12-7 Copyright Oracle Corporation, 1998. Tous droits réservés.

Insertion de Lignes Contenant des Valeurs NULL

Insertion de Lignes Contenant des Valeurs NULL

• Méthode implicite : ne spécifiez pas la colonne dans la liste.

• Méthode implicite : ne spécifiez pas la colonne dans la liste.

SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS');1 row created.1 row created.

• Méthode explicite : spécifiez le mot-clé NULL.

• Méthode explicite : spécifiez le mot-clé NULL.

SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL);1 row created.1 row created.

Page 8: Manipulation des Données , cours sql oracle

12-8 Copyright Oracle Corporation, 1998. Tous droits réservés.

Insertion de Valeurs SpécialesInsertion de Valeurs Spéciales

La fonction SYSDATE renvoie la date et La fonction SYSDATE renvoie la date et l'heure courantes.l'heure courantes.La fonction SYSDATE renvoie la date et La fonction SYSDATE renvoie la date et l'heure courantes.l'heure courantes.

SQL> INSERT INTO emp (empno, ename, job, 2 mgr, hiredate, sal, comm, 3 deptno) 4 VALUES (7196, 'GREEN', 'SALESMAN', 5 7782, SYSDATE, 2000, NULL, 6 10);1 row created.1 row created.

Page 9: Manipulation des Données , cours sql oracle

12-9 Copyright Oracle Corporation, 1998. Tous droits réservés.

Insertion de Dates dans un Format Spécifique

Insertion de Dates dans un Format Spécifique

• Ajout d'un nouvel employé.• Ajout d'un nouvel employé.SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3,97', 'MON DD,YY'), 4 1300, NULL, 10);1 row created.1 row created.

• Vérification de l'ajout.• Vérification de l'ajout.EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ------- -------- ---- --------- ---- ----- ----- 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10

Page 10: Manipulation des Données , cours sql oracle

12-10 Copyright Oracle Corporation, 1998. Tous droits réservés.

Insertion de Valeurs au Moyen de Variables de Substitution

Insertion de Valeurs au Moyen de Variables de Substitution

Création d'un script interactif au moyen Création d'un script interactif au moyen de paramètres de substitution SQL*Plus.de paramètres de substitution SQL*Plus.Création d'un script interactif au moyen Création d'un script interactif au moyen de paramètres de substitution SQL*Plus.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: 8080Enter value for department_name: EDUCATIONEDUCATIONEnter value for location: ATLANTAATLANTA

1 row created.

Page 11: Manipulation des Données , cours sql oracle

12-11 Copyright Oracle Corporation, 1998. Tous droits réservés.

Création d'un Script Contenant des Messages Personnalisés

Création d'un Script Contenant des Messages Personnalisés

• ACCEPT stocke la valeur dans une variable.

• PROMPT affiche votre texte.

• ACCEPT stocke la valeur dans une variable.

• PROMPT affiche votre texte.

ACCEPT department_id PROMPT 'Please enter the -

department number:'

ACCEPT department_name PROMPT 'Please enter -

the department name:'

ACCEPT location PROMPT 'Please enter the -

location:'

INSERT INTO dept (deptno, dname, loc)

VALUES (&department_id, '&department_name',

‘&location’);

Page 12: Manipulation des Données , cours sql oracle

12-12 Copyright Oracle Corporation, 1998. Tous droits réservés.

Copie de Lignes d'une Autre TableCopie de Lignes d'une Autre Table

• Ecrivez votre ordre INSERT en spécifiant une sous-interrogation.

• N'utilisez pas la clause VALUES.• Le nombre de colonnes de la clause

INSERT doit correspondre à celui de la sous-interrogation.

• Ecrivez votre ordre INSERT en spécifiant une sous-interrogation.

• N'utilisez pas la clause VALUES.• Le nombre de colonnes de la clause

INSERT doit correspondre à celui de la 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.3 rows created.

www.TelechargerCours.com

Page 13: Manipulation des Données , cours sql oracle

12-13 Copyright Oracle Corporation, 1998. Tous droits réservés.

Modification des Données d'une Table

Modification des Données d'une Table

EMPEMP

"…modifier une "…modifier une ligne ligne

de la table EMP…"de la table EMP…"

EMPEMP

EMPNO ENAME JOB ... DEPTNO

7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...

20

EMPNO ENAME JOB ... DEPTNO

7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...

Page 14: Manipulation des Données , cours sql oracle

12-14 Copyright Oracle Corporation, 1998. Tous droits réservés.

L'Ordre UPDATEL'Ordre UPDATE

• Utilisez l'ordre UPDATE pour modifier des lignes existantes.

• Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.

• Utilisez l'ordre UPDATE pour modifier des lignes existantes.

• Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.

UPDATE tableSET column = value [, column = value][WHERE condition];

UPDATE tableSET column = value [, column = value][WHERE condition];

www.TelechargerCours.com

Page 15: Manipulation des Données , cours sql oracle

12-15 Copyright Oracle Corporation, 1998. Tous droits réservés.

Modification de Lignes d'une Table

Modification de Lignes d'une Table

• La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.

• Si vous omettez la clause WHERE, toutes les lignes sont modifiées.

• La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.

• Si vous omettez la clause WHERE, toutes les lignes sont modifiées.

SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782;1 row updated.1 row updated.

SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.

SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.

Page 16: Manipulation des Données , cours sql oracle

12-16 Copyright Oracle Corporation, 1998. Tous droits réservés.

Modification avec une Sous-Interrogation Multi-colonne

Modification avec une Sous-Interrogation Multi-colonne

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.1 row updated.

Modifier le poste et le n° de département de Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé l'employé 7698 à l'identique de l'employé 7499.7499.

Modifier le poste et le n° de département de Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé l'employé 7698 à l'identique de l'employé 7499.7499.

Page 17: Manipulation des Données , cours sql oracle

12-17 Copyright Oracle Corporation, 1998. Tous droits réservés.

Modification de Lignes en Fonction d'une Autre TableModification de Lignes en

Fonction d'une Autre Table

Utilisez des sous-interrogations dans l'ordre Utilisez des sous-interrogations dans l'ordre UPDATE pour modifier des lignes d'une table UPDATE pour modifier des lignes d'une table à l'aide de valeurs d'une autre table.à l'aide de valeurs d'une autre table.

Utilisez des sous-interrogations dans l'ordre Utilisez des sous-interrogations dans l'ordre UPDATE pour modifier des lignes d'une table UPDATE pour modifier des lignes d'une table à l'aide de valeurs d'une autre table.à l'aide de valeurs d'une autre table.

SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.

SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.

Page 18: Manipulation des Données , cours sql oracle

12-18 Copyright Oracle Corporation, 1998. Tous droits réservés.

Ordre UPDATE SynchroniséOrdre UPDATE Synchronisé

SyntaxeSyntaxe

Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour mettre à jour les lignes Synchronisée pour mettre à jour les lignes d'une table basée sur des lignes d'une d'une table basée sur des lignes d'une autre table.autre table.

SyntaxeSyntaxe

Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour mettre à jour les lignes Synchronisée pour mettre à jour les lignes d'une table basée sur des lignes d'une d'une table basée sur des lignes d'une autre table.autre table.

UPDATE table1 alias1SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);

UPDATE table1 alias1SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);

www.TelechargerCours.com

Page 19: Manipulation des Données , cours sql oracle

12-19 Copyright Oracle Corporation, 1998. Tous droits réservés.

Ordre UPDATE SynchroniséExemple

Ordre UPDATE SynchroniséExemple

Ajouter une nouvelle colonne à la table Ajouter une nouvelle colonne à la table emp pour stocker le nom du département, emp pour stocker le nom du département, puis remplissez la table à l’aide d’un puis remplissez la table à l’aide d’un UPDATE Synchronisé .UPDATE Synchronisé .

Ajouter une nouvelle colonne à la table Ajouter une nouvelle colonne à la table emp pour stocker le nom du département, emp pour stocker le nom du département, puis remplissez la table à l’aide d’un puis remplissez la table à l’aide d’un UPDATE Synchronisé .UPDATE Synchronisé .

UPDATE emp eSET dname = (SELECT dname FROM dept d WHERE d.deptno = e.deptno);

UPDATE emp eSET dname = (SELECT dname FROM dept d WHERE d.deptno = e.deptno);

www.TelechargerCours.com

Page 20: Manipulation des Données , cours sql oracle

12-20 Copyright Oracle Corporation, 1998. Tous droits réservés.

UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found

UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found

SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;

SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;

Modification de Lignes : Erreur de Contrainte d'Intégrité

Modification de Lignes : Erreur de Contrainte d'Intégrité

Le numéro de départe

ment 55 n'existe pas

Le numéro de départe

ment 55 n'existe pas

Le numéro de départe

ment 55 n'existe pas

Le numéro de départe

ment 55 n'existe pas

www.TelechargerCours.com

Page 21: Manipulation des Données , cours sql oracle

12-21 Copyright Oracle Corporation, 1998. Tous droits réservés.

"…supprime une ligne "…supprime une ligne de la table DEPT…"de la table DEPT…"

Suppression d'une Ligne d'une Table Suppression d'une Ligne d'une Table

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ...

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...

www.TelechargerCours.com

Page 22: Manipulation des Données , cours sql oracle

12-22 Copyright Oracle Corporation, 1998. Tous droits réservés.

L'Ordre DELETEL'Ordre DELETE

Vous pouvez supprimer des lignes d'une Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE.table au moyen de l'ordre DELETE.Vous pouvez supprimer des lignes d'une Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE.table au moyen de l'ordre DELETE.

DELETE [FROM] table[WHERE condition];

DELETE [FROM] table[WHERE condition];

www.TelechargerCours.com

Page 23: Manipulation des Données , cours sql oracle

12-23 Copyright Oracle Corporation, 1998. Tous droits réservés.

• La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques.

• Si vous omettez la clause WHERE, toutes les lignes sont supprimées.

• La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques.

• Si vous omettez la clause WHERE, toutes les lignes sont supprimées.

Suppression de Lignes d'une TableSuppression de Lignes d'une Table

SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.

SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.

SQL> DELETE FROM department;4 rows deleted.4 rows deleted.

SQL> DELETE FROM department;4 rows deleted.4 rows deleted.

www.TelechargerCours.com

Page 24: Manipulation des Données , cours sql oracle

12-24 Copyright Oracle Corporation, 1998. Tous droits réservés.

Suppression de Lignes en Faisant Référence à une Autre Table

Suppression de Lignes en Faisant Référence à une Autre Table

Utilisez des sous-interrogations dans Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à dont certaines valeurs correspondent à celles d'une autre table.celles d'une autre table.

Utilisez des sous-interrogations dans Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à dont certaines valeurs correspondent à celles d'une autre table.celles d'une autre table.

SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES');6 rows deleted.6 rows deleted.

www.TelechargerCours.com

Page 25: Manipulation des Données , cours sql oracle

12-25 Copyright Oracle Corporation, 1998. Tous droits réservés.

SQL> DELETE FROM table1 alias1 2 WHERE column operator 3 (SELECT expression 3 FROM table2 alias2 4 WHERE alias1.column = alias2.column);

SQL> DELETE FROM table1 alias1 2 WHERE column operator 3 (SELECT expression 3 FROM table2 alias2 4 WHERE alias1.column = alias2.column);

SyntaxeSyntaxe

Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour supprimer Synchronisée pour supprimer uniquement les lignes existant également uniquement les lignes existant également dans une autre table.dans une autre table.

SyntaxeSyntaxe

Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour supprimer Synchronisée pour supprimer uniquement les lignes existant également uniquement les lignes existant également dans une autre table.dans une autre table.

Ordre DELETE SynchroniséOrdre DELETE Synchroniséwww.TelechargerCours.com

Page 26: Manipulation des Données , cours sql oracle

12-26 Copyright Oracle Corporation, 1998. Tous droits réservés.

Ordre DELETE SynchroniséExemple

Ordre DELETE SynchroniséExemple

SQL> DELETE FROM emp_history eh WHERE empid = (SELECT empno FROM emp e WHERE e.empno = eh.empid);

SQL> DELETE FROM emp_history eh WHERE empid = (SELECT empno FROM emp e WHERE e.empno = eh.empid);

Supprimer les employés de la table Supprimer les employés de la table emp_history qui appartiennent aussi à la emp_history qui appartiennent aussi à la table emp .table emp .

Supprimer les employés de la table Supprimer les employés de la table emp_history qui appartiennent aussi à la emp_history qui appartiennent aussi à la table emp .table emp .

www.TelechargerCours.com

Page 27: Manipulation des Données , cours sql oracle

12-27 Copyright Oracle Corporation, 1998. Tous droits réservés.

Suppression de Lignes : Erreur de Contrainte d'Intégrité

Suppression de Lignes : Erreur de Contrainte d'Intégrité

SQL> DELETE FROM dept 2 WHERE deptno = 10;

SQL> DELETE FROM dept 2 WHERE deptno = 10;

DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found

DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found

Vous ne pouvez pas supprim

er une lig

ne qui

Vous ne pouvez pas supprim

er une lig

ne qui

contient u

ne clé primaire

utilisée comme clé

contient u

ne clé primaire

utilisée comme clé

étrangère dans une autre

table.

étrangère dans une autre

table.

Vous ne pouvez pas supprim

er une lig

ne qui

Vous ne pouvez pas supprim

er une lig

ne qui

contient u

ne clé primaire

utilisée comme clé

contient u

ne clé primaire

utilisée comme clé

étrangère dans une autre

table.

étrangère dans une autre

table.

Page 28: Manipulation des Données , cours sql oracle

12-28 Copyright Oracle Corporation, 1998. Tous droits réservés.

Transactions de Base de DonnéesTransactions de Base de Données

Une transaction se compose des éléments Une transaction se compose des éléments suivants :suivants :

• Ensemble d'ordres du LMD effectuant une modification cohérente des données

• Un ordre du LDD

• Un ordre du LCD

Une transaction se compose des éléments Une transaction se compose des éléments suivants :suivants :

• Ensemble d'ordres du LMD effectuant une modification cohérente des données

• Un ordre du LDD

• Un ordre du LCD

www.TelechargerCours.com

Page 29: Manipulation des Données , cours sql oracle

12-29 Copyright Oracle Corporation, 1998. Tous droits réservés.

Transactions de Base de DonnéesTransactions 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

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

www.TelechargerCours.com

Page 30: Manipulation des Données , cours sql oracle

12-30 Copyright Oracle Corporation, 1998. Tous droits réservés.

Avantages des Ordres COMMIT et ROLLBACKAvantages 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

• 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

www.TelechargerCours.com

Page 31: Manipulation des Données , cours sql oracle

12-31 Copyright Oracle Corporation, 1998. Tous droits réservés.

Contrôle des TransactionsContrôle des Transactions

DELETEDELETE

TransactionTransactionTransactionTransaction

Savepoint ASavepoint A

ROLLBACK to Savepoint BROLLBACK to Savepoint B

DELETEDELETE

Savepoint BSavepoint BCOMMITCOMMIT

INSERTINSERTUPDATEUPDATE

ROLLBACK to Savepoint AROLLBACK to Savepoint A

INSERTINSERTUPDATEUPDATEINSERTINSERT

ROLLBACKROLLBACK

INSERTINSERT

www.TelechargerCours.com

Page 32: Manipulation des Données , cours sql oracle

12-32 Copyright Oracle Corporation, 1998. Tous droits réservés.

• 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

• 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

Traitement Implicite des TransactionsTraitement Implicite des Transactionswww.TelechargerCours.com

Page 33: Manipulation des Données , cours sql oracle

12-33 Copyright Oracle Corporation, 1998. Tous droits réservés.

Etat des Données Avant COMMIT ou ROLLBACKEtat 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.

• 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.

www.TelechargerCours.com

Page 34: Manipulation des Données , cours sql oracle

12-34 Copyright Oracle Corporation, 1998. Tous droits réservés.

Etat des Données Après COMMITEtat 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.

• 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.

www.TelechargerCours.com

Page 35: Manipulation des Données , cours sql oracle

12-35 Copyright Oracle Corporation, 1998. Tous droits réservés.

Validation de DonnéesValidation de Données

SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.

SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.

• Effectuez les modifications.• Effectuez les modifications.

• Validez les modifications.• Validez les modifications.SQL> COMMIT;Commit complete.Commit complete.

www.TelechargerCours.com

Page 36: Manipulation des Données , cours sql oracle

12-36 Copyright Oracle Corporation, 1998. Tous droits réservés.

Etat des Données Après ROLLBACKEtat des Données Après ROLLBACKL'ordre ROLLBACK rejette toutes les L'ordre ROLLBACK rejette toutes les modifications de données en instance.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.

L'ordre ROLLBACK rejette toutes les L'ordre ROLLBACK rejette toutes les modifications de données en instance.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.14 rows deleted.SQL> ROLLBACK;Rollback complete.Rollback complete.

www.TelechargerCours.com

Page 37: Manipulation des Données , cours sql oracle

12-37 Copyright Oracle Corporation, 1998. Tous droits réservés.

Annulation des Modifications Jusqu'à une Etiquette

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.

• 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.Savepoint created.SQL> INSERT...SQL> ROLLBACK TO update_done;Rollback complete.Rollback complete.

Page 38: Manipulation des Données , cours sql oracle

12-38 Copyright Oracle Corporation, 1998. Tous droits réservés.

Rollback au Niveau OrdreRollback au Niveau Ordre

• Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé.

• Oracle8 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.

• Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé.

• Oracle8 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.

www.TelechargerCours.com

Page 39: Manipulation des Données , cours sql oracle

12-39 Copyright Oracle Corporation, 1998. Tous droits réservés.

Lecture CohérenteLecture Cohérente

• La lecture cohérente garantit à tout moment une vue homogène des données.

• Les modifications effectuées par un utilisateur n'entrent pas en conflit avec celles d'un autre utilisateur.

• Sur les mêmes données, garantit que :

– la lecture ignore les écritures en cours

– l'écriture ne perturbe pas la lecture

• La lecture cohérente garantit à tout moment une vue homogène des données.

• Les modifications effectuées par un utilisateur n'entrent pas en conflit avec celles d'un autre utilisateur.

• Sur les mêmes données, garantit que :

– la lecture ignore les écritures en cours

– l'écriture ne perturbe pas la lecture

www.TelechargerCours.com

Page 40: Manipulation des Données , cours sql oracle

12-40 Copyright Oracle Corporation, 1998. Tous droits réservés.

Implémentation de la Lecture Cohérente

Implémentation de la Lecture Cohérente

update empupdate empset sal = 2000set sal = 2000where ename = where ename = 'SCOTT''SCOTT'

Blocs de Blocs de donnéesdonnées

Rollback Rollback segmentssegments

select *select *from empfrom emp

données données modifiéesmodifiéeset nonet nonmodifiéesmodifiées

'anciennes' 'anciennes' données données avant modif.avant modif.

Utilisateur AUtilisateur A

Utilisateur BUtilisateur B

Lit une Lit une imageimagecohérentecohérente

www.TelechargerCours.com

Page 41: Manipulation des Données , cours sql oracle

12-41 Copyright Oracle Corporation, 1998. Tous droits réservés.

VerrouillageVerrouillage

Les verrous Oracle8 :Les verrous Oracle8 :

• Evitent les risques de destruction des données en cas de transactions simultanées

• N'exigent aucune intervention de l'utilisateur

• S'appliquent au niveau de restriction le plus bas

• Sont actifs durant toute la transaction

• Fonctionnent en deux modes de base : – Exclusif– Partagé

Les verrous Oracle8 :Les verrous Oracle8 :

• Evitent les risques de destruction des données en cas de transactions simultanées

• N'exigent aucune intervention de l'utilisateur

• S'appliquent au niveau de restriction le plus bas

• Sont actifs durant toute la transaction

• Fonctionnent en deux modes de base : – Exclusif– Partagé

Page 42: Manipulation des Données , cours sql oracle

12-42 Copyright Oracle Corporation, 1998. Tous droits réservés.

RésuméRésumé

Description

Ajoute une nouvelle ligne dans une table

Modifie des lignes dans une table

Supprime des lignes d'une table

Valide toutes les modifications de données en instance

Permet un rollback partiel

Annule toutes les modifications de données en instance

Ordre

INSERT

UPDATE

DELETE

COMMIT

SAVEPOINT

ROLLBACK

www.TelechargerCours.com