L application de la physique classique dans le golf.pptx
12 fr
1. Copyright Oracle Corporation, 1998. Tous droits réservés.
12
Manipulation des Données
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. 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. 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. 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. 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. 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. 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. 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. 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. 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 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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