12 fr

404 vues

Publié le

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
404
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

12 fr

  1. 1. Copyright  Oracle Corporation, 1998. Tous droits réservés. 12 Manipulation des Données
  2. 2. 12-2 Copyright  Oracle Corporation, 1998. Tous droits réservés. Objectifs 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
  3. 3. 12-3 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  4. 4. 12-4 Copyright  Oracle Corporation, 1998. Tous droits réservés. Ajout d'une Nouvelle Ligne dans une Table DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON Nouvelle ligne 50 DEVELOPMENT DETROIT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON "…insérer une nouvelle ligne dans la table DEPT …" 50 DEVELOPMENT DETROIT
  5. 5. 12-5 Copyright  Oracle Corporation, 1998. Tous droits réservés. L'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. INSERT INTO table [(column [, column...])] VALUES (value [, value...]);
  6. 6. 12-6 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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. • 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.
  7. 7. 12-7 Copyright  Oracle Corporation, 1998. Tous droits réservés. Insertion de Lignes Contenant des Valeurs NULL • 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. • Méthode explicite : spécifiez le mot-clé NULL. SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL); 1 row created.
  8. 8. 12-8 Copyright  Oracle Corporation, 1998. Tous droits réservés. Insertion de Valeurs Spéciales La fonction SYSDATE renvoie la date et 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.
  9. 9. 12-9 Copyright  Oracle Corporation, 1998. Tous droits réservés. Insertion de Dates dans un Format Spécifique • 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. • Vérification de l'ajout. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ------- -------- ---- --------- ---- ----- ----- 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10
  10. 10. 12-10 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  11. 11. 12-11 Copyright  Oracle Corporation, 1998. Tous droits réservés. Création d'un Script Contenant des Messages Personnalisés • 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’);
  12. 12. 12-12 Copyright  Oracle Corporation, 1998. Tous droits réservés. Copie 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. SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER'; 3 rows created.
  13. 13. 12-13 Copyright  Oracle Corporation, 1998. Tous droits réservés. Modification des Données d'une Table EMP "…modifier une ligne de la table EMP…" EMP 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 ...
  14. 14. 12-14 Copyright  Oracle Corporation, 1998. Tous droits réservés. L'Ordre UPDATE • Utilisez l'ordre UPDATE pour modifier des lignes existantes. • Si nécessaire, vous pouvez modifier plusieurs lignes à la fois. UPDATE table SET column = value [, column = value] [WHERE condition];
  15. 15. 12-15 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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. SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782; 1 row updated. SQL> UPDATE employee 2 SET deptno = 20; 14 rows updated.
  16. 16. 12-16 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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. Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé 7499.
  17. 17. 12-17 Copyright  Oracle Corporation, 1998. Tous droits réservés. Modification de Lignes en Fonction d'une Autre Table Utilisez des sous-interrogations dans l'ordre UPDATE pour modifier des lignes d'une 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.
  18. 18. 12-18 Copyright  Oracle Corporation, 1998. Tous droits réservés. Ordre UPDATE Synchronisé Syntaxe Utilisez une Sous-Interrogation Synchronisée pour mettre à jour les lignes d'une table basée sur des lignes d'une autre table. UPDATE table1 alias1 SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
  19. 19. 12-19 Copyright  Oracle Corporation, 1998. Tous droits réservés. Ordre UPDATE Synchronisé Exemple Ajouter une nouvelle colonne à la table emp pour stocker le nom du département, puis remplissez la table à l’aide d’un UPDATE Synchronisé . UPDATE emp e SET dname = (SELECT dname FROM dept d WHERE d.deptno = e.deptno);
  20. 20. 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 SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10; Modification de Lignes : Erreur de Contrainte d'Intégrité
  21. 21. 12-21 Copyright  Oracle Corporation, 1998. Tous droits réservés. "…supprime une ligne de la table DEPT…" Suppression d'une Ligne d'une Table DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ... DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...
  22. 22. 12-22 Copyright  Oracle Corporation, 1998. Tous droits réservés. L'Ordre DELETE Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE. DELETE [FROM] table [WHERE condition];
  23. 23. 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. Suppression de Lignes d'une Table SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. SQL> DELETE FROM department; 4 rows deleted.
  24. 24. 12-24 Copyright  Oracle Corporation, 1998. Tous droits réservés. Suppression de Lignes en Faisant Référence à une Autre Table Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à 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.
  25. 25. 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); Syntaxe Utilisez une Sous-Interrogation Synchronisée pour supprimer uniquement les lignes existant également dans une autre table. Ordre DELETE Synchronisé
  26. 26. 12-26 Copyright  Oracle Corporation, 1998. Tous droits réservés. Ordre DELETE Synchronisé Exemple 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 emp_history qui appartiennent aussi à la table emp .
  27. 27. 12-27 Copyright  Oracle Corporation, 1998. Tous droits réservés. Suppression de Lignes : Erreur de Contrainte d'Intégrité 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
  28. 28. 12-28 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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
  29. 29. 12-29 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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
  30. 30. 12-30 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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
  31. 31. 12-31 Copyright  Oracle Corporation, 1998. Tous droits réservés. Contrôle des Transactions DELETE Transaction Savepoint A ROLLBACK to Savepoint B DELETE Savepoint BCOMMIT INSERTUPDATE ROLLBACK to Savepoint A INSERTUPDATEINSERT ROLLBACK INSERT
  32. 32. 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 Traitement Implicite des Transactions
  33. 33. 12-33 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  34. 34. 12-34 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  35. 35. 12-35 Copyright  Oracle Corporation, 1998. Tous droits réservés. Validation de Données SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782; 1 row updated. • Effectuez les modifications. • Validez les modifications. SQL> COMMIT; Commit complete.
  36. 36. 12-36 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  37. 37. 12-37 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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.
  38. 38. 12-38 Copyright  Oracle Corporation, 1998. Tous droits réservés. Rollback 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.
  39. 39. 12-39 Copyright  Oracle Corporation, 1998. Tous droits réservés. Lecture 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
  40. 40. 12-40 Copyright  Oracle Corporation, 1998. Tous droits réservés. Implémentation de la Lecture Cohérente update emp set sal = 2000 where ename = 'SCOTT' Blocs de données Rollback segments select * from emp données modifiées et non modifiées 'anciennes' données avant modif. Utilisateur A Utilisateur B Lit une image cohérente
  41. 41. 12-41 Copyright  Oracle Corporation, 1998. Tous droits réservés. Verrouillage 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é
  42. 42. 12-42 Copyright  Oracle Corporation, 1998. Tous droits réservés. 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

×