Sie sind auf Seite 1von 39

Manipulation des Donnes

Objectifs
A la fin de ce chapitre, vous saurez :
Dcrire chaque ordre du LMD Insrer des lignes dans une table Mettre jour des lignes dans une table Supprimer des lignes d'une table Contrler les transactions

Langage de Manipulation des Donnes

Un ordre du LMD est excut 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.

Ajout d'une Nouvelle Ligne dans une Table


50 DEVELOPMENT DETROIT

Nouvelle ligne DEPT


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

"insrer une nouvelle ligne dans la table DEPT "


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

50 DEVELOPMENT DETROIT

L'Ordre INSERT
L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.
INSERT INTO VALUES table [(column [, column...])] (value [, value...]);

Cette syntaxe n'insre qu'une seule ligne la fois.

Insertion de Nouvelles Lignes


Insrez une nouvelle ligne en prcisant une valeur pour chaque colonne. Eventuellement, numrez les colonnes dans la clause INSERT.
SQL> INSERT INTO 2 VALUES 1 row created. dept (deptno, dname, loc) (50, 'DEVELOPMENT', 'DETROIT');

Indiquez les valeurs dans l'ordre par dfaut des colonnes dans la table. Placez les valeurs de type caractre et date entre simples quotes.

Insertion de Lignes Contenant des Valeurs NULL


Mthode implicite : ne spcifiez pas la colonne dans la liste.
dept (deptno, dname ) (60, 'MIS'); SQL> INSERT INTO 2 VALUES 1 row created.

Mthode explicite : spcifiez le mot-cl NULL.


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

Insertion de Valeurs Spciales


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

Insertion de Dates dans un Format Spcifique


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

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

Cration d'un script interactif au moyen de


paramtres de substitution SQL*Plus.
SQL> INSERT INTO 2 VALUES 3 dept (deptno, dname, loc) (&department_id, '&department_name', '&location');

Insertion de Valeurs au Moyen de Variables de Substitution

Enter value for department_id: 80 Enter value for department_name: EDUCATION Enter value for location: ATLANTA 1 row created.

Cration d'un Script Contenant des Messages Personnaliss


ACCEPT stocke la valeur dans une variable. PROMPT affiche votre texte.
ACCEPT ACCEPT ACCEPT INSERT INTO VALUES department_id PROMPT 'Please enter the department number:' department_name PROMPT 'Please enter the department name:' location PROMPT 'Please enter the location:' dept (deptno, dname, loc) (&department_id, '&department_name', &location);

Copie de Lignes d'une Autre Table Ecrivez votre ordre INSERT en spcifiant
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.

Modification des Donnes d'une Table EMP


EMPNO ENAME 7839 7698 7782 7566 ... KING BLAKE CLARK JONES JOB PRESIDENT MANAGER MANAGER MANAGER ... DEPTNO 10 30 10 20

"modifier une ligne de la table EMP"

EMP
EMPNO ENAME 7839 7698 7782 7566 ... KING BLAKE CLARK JONES JOB PRESIDENT MANAGER MANAGER MANAGER ... DEPTNO 10 30 20 10 20

L'Ordre UPDATE
Utilisez l'ordre UPDATE pour modifier des lignes existantes.
UPDATE SET [WHERE table column = value [, column = value] condition];

Si ncessaire, vous pouvez modifier plusieurs lignes la fois.

Modification de Lignes d'une Table


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

La clause WHERE permet de modifier une ou plusieurs lignes spcifiques.

Si vous omettez la clause WHERE, toutes les lignes sont modifies.


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

Modification avec une Sous-Interrogation Multi-colonne

Modifier le poste et le n de

dpartement 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 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.
(SELECT FROM WHERE (SELECT FROM WHERE deptno emp empno = 7788) job emp empno = 7788);

SQL> UPDATE employee 2 SET deptno = 3 4 5 WHERE job = 6 7 2 rows updated.

Modification de Lignes : Erreur de Contrainte d'Intgrit


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

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

Suppression d'une Ligne d'une DEPT Table DEPTNO DNAME LOC


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

"supprime une ligne de la table DEPT"


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

L'Ordre DELETE
Vous pouvez supprimer des lignes d'une
table au moyen de l'ordre DELETE.
DELETE [FROM] [WHERE table condition];

Suppression de Lignes d'une Table La clause WHERE permet de supprimer


une ou plusieurs lignes spcifiques.
department dname = 'DEVELOPMENT'; SQL> DELETE FROM 2 WHERE 1 row deleted.

Si vous omettez la clause WHERE, toutes les lignes sont supprimes.


SQL> DELETE FROM 4 rows deleted. department;

Suppression de Lignes en Faisant Rfrence une Autredes Table Utilisez sous-interrogations dans

l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent celles d'une autre table.
SQL> DELETE FROM 2 WHERE 3 4 5 6 rows deleted. employee deptno = (SELECT FROM WHERE deptno dept dname ='SALES');

Suppression de Lignes : Erreur de Contrainte d'Intgrit


SQL> DELETE FROM 2 WHERE dept deptno = 10;

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

Transactions de Base de Donnes


lments suivants :

Une transaction se compose des


Ensemble d'ordres du LMD effectuant une modification cohrente des donnes Un ordre du LDD Un ordre du LCD

Transactions de Base de Donnes Une transaction :


Commence l'excution du premier ordre SQL Se termine par l'un des vnements suivants : COMMIT ou ROLLBACK Excution d'un ordre LDD ou LCD (validation
automatique) Fin de session utilisateur Panne du systme

Avantages des Ordres COMMIT et ROLLBACK


Garantit la cohrence des donnes Possibilit d'afficher le rsultat des modifications avant qu'elles ne soient dfinitives Regroupement logique d'oprations

Contrle des Transactions


Transaction INSERT
COMMIT

UPDATE

INSERT

DELETE

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 : Excution d'un ordre du LDD Excution 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 systme

Etat des Donnes Avant COMMIT ou ROLLBACK


Il est possible de restaurer l'tat prcdent des donnes. L'utilisateur courant peut afficher le rsultat des oprations du LMD au moyen de l'ordre SELECT. Les rsultats des ordres du LMD excuts par l'utilisateur courant ne peuvent pas tre affichs par d'autres utilisateurs. Les lignes concernes sont verrouilles. Aucun autre utilisateur ne peut les modifier.

Etat des Donnes Aprs COMMIT Les modifications des donnes dans la base
sont dfinitives. L'tat prcdent des donnes est irrmdiablement perdu. Tous les utilisateurs peuvent voir le rsultat des modifications. Les lignes verrouilles sont libres et peuvent de nouveau tre manipules par d'autres utilisateurs. Tous les savepoints sont effacs.

Validation de Donnes
Effectuez les modifications.
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782; 1 row updated.

Validez les modifications.


SQL> COMMIT; Commit complete.

Etat des Donnes Aprs ROLLBACK

L'ordre ROLLBACK rejette toutes les


modifications de donnes en instance.
Les modifications sont annules. L'tat prcdent des donnes est restaur. SQL> DELETE FROM employee; Les lignes verrouilles sont libres. 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. Oracle8 met en uvre un savepoint implicite. Toutes les autres modifications sont conserves. L'utilisateur doit terminer explicitement les transactions en excutant un ordre COMMIT ou ROLLBACK.

Lecture Cohrente
La lecture cohrente garantit tout moment une vue homogne des donnes. Les modifications effectues par un utilisateur n'entrent pas en conflit avec celles d'un autre utilisateur. Sur les mmes donnes, garantit que : la lecture ignore les critures en cours l'criture ne perturbe pas la lecture

Implmentation de la Lecture Cohrente


update emp set sal = 2000 where ename = 'SCOTT' Utilisateur A select * from emp
Lit une image cohrente

Blocs de donnes Rollback segments


donnes modifies et non modifies 'anciennes' donnes avant modif.

Utilisateur B

Verrouillage
Les verrous Oracle8 :
Evitent les risques de destruction des donnes en cas de transactions simultanes 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

Rsum
Ordre INSERT UPDATE DELETE COMMIT SAVEPOINT ROLLBACK 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 donnes en instance Permet un rollback partiel

Annule toutes les modifications de donnes en instance

Prsentation des Exercices


Insertion de lignes dans une table. Mise jour et suppression de lignes dans une table. Contrle des transactions.

Das könnte Ihnen auch gefallen