© Olfa DRIDI Langage de manipulation de données (LMD) & Langage de Contrôle des
© Olfa DRIDI Langage de manipulation de données (LMD) & Langage de Contrôle des transactions (LCT) Préparé par : Mme Olfa DRIDI Système de Gestion de Bases de Données © Les ordres SQL de manipulation • SQL propose 4 instructions pour manipuler les données: • INSERT • Insertion (ajout) de ligne(s) (d’enregistrements) dans une table • Utiliser SQL*LOAD pour des chargements externes • UPDATE • Mise à jour (modification) d’une ou plusieurs colonnes d’une ou plusieurs lignes • DELETE • Suppression d’une ou plusieurs lignes (enregistrements) • COMMIT / ROLLBACK • Fin d’une transaction Langage de Manipulation de Données © Pour pouvoir insérer des données dans une table, il faut que cette dernière soit dans votre schéma ou que vous avez reçu le privilège INSERT sur la table. Si vous avez le privilège INSERT ANY TABLE, vous pouvez ajouter des données dans n’importe quelle table de tout le schéma. Syntaxe: SQL> INSERT INTO nom_Table (A1,.........,An) VALUES (V1,.........,Vn); • A1,…...,An sont les noms des attributs dans lesquels on souhaite placer une valeur. Les autres attributs seront donc a NULL (ou a la valeur par défaut). Tous les attributs spécifiés NOT NULL (et sans valeur par défaut) doivent donc figurer dans une clause INSERT • V1,.....,Vn sont les valeurs des attributs • Cette instruction permet d’insérer une seule ligne 3 Insert – Monoligne Langage de Manipulation de Données © INSERT INSERT INTO nom_table [(liste des colonnes)] VALUES (liste des valeurs); INSERT INTO service (idSer, nomSer) VALUES (50,’Réseaux et Systèmes’); Exemples : INSERT INTO service VALUES (60,’Analyse et Conception’); Langage de Manipulation de Données © • SYSDATE 5 Insert – Valeurs spéciales Langage de Manipulation de Données © Création d'un script interactif au moyen de paramètres de substitution SQL*Plus. 6 Variables de substitution dans un ordre Insert Langage de Manipulation de Données 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. © • ACCEPT stocke la valeur dans une variable. • PROMPT affiche votre texte. Création d'un Script Contenant des Messages Personnalisés 7 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’); © § 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. Insert – Copie de Lignes d'une Autre Table 8 SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER'; 3 rows created. © 9 INSERT – Données provenant d’une autre table INSERT INTO etudiant_deug SELECT * FROM etudiant WHERE cycle = 1; Insert avec le contenu de une ou plusieurs tables INSERT INTO etudiant_deug (nomd, prenomd, cycled) SELECT nom,prenom,1 FROM etudiant WHERE cycle = 1; Langage de Manipulation de Données © UPDATE – Modification des données UPDATE nom_table SET colonne1 = valeur1 |expression |(requête_select [,colonne2 = valeur2 ….] [ WHERE (condition)]; UPDATE employe SET nom = ‘Michel’, adresse = ‘Toulouse’ WHERE idEmp = 100; Exemples : UPDATE employe SET salaire = salaire * 1.1 WHERE idSer = ‘info’; Cette instruction modifie plusieurs lignes en même temps Langage de Manipulation de Données © Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé 7499. UPDATE – Modification des données par une sous- requête 11 Langage de Manipulation de Données 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. © • Il faut respecter les contraintes qui existent au niveau des colonnes. Sinon, une erreur est renvoyée et la mise à jour n’est pas effectuée. Violation des CI 12 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; • Le numéro de département 55 n'existe pas Langage de Manipulation de Données © DELETE – Suppression d’une ligne d’une table 13 "…supprime une ligne de la 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 DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ... Langage de Manipulation de Données © DELETE – Suppression des données DELETE FROM nom_table [WHERE condition]; DELETE FROM employe WHERE idEmp = 100; Exemples : DELETE FROM employe; Langage de Manipulation de Donné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. © • Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à celles d'une autre table. DELETE – Utilisation des sous-requêtes 15 Langage de Manipulation de Données SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES'); 6 rows deleted. © • Une transaction est une unité logique de traitement formée d’une suite d’opérations (interrogation (lecture R) et/ou modification (écriture W) de la BD) • Cet ensemble d’opération doit être soit validé, soit annulé Exemple : Environnement bancaire, transfert d’une somme S d’un compte C1 à un compte C2 (1) Début transaction (2) R(C1) (3) C1 = C1 – S (4) W(C1) (5) R(C2) (6) C2 = C2 + S (7) W(C2) (8) Fin de transaction • Dans cet environnement, soit toutes les actions sont effectuées (transfert réussi), soit toutes annulées (pas de transfert) Transactions 16 Langage de Contrôle des Transactions © Le contrôle de transaction consiste à définir : • Le début et la fin de la transaction • Le découpage de la transaction en sous transactions dans le cas où le nombre d’opérations composant la transaction est important Début et la fin de transaction • Une transaction démarre par • N’importe quel ordre SQL suivant la connexion à Oracle • Ou par la fin de la transaction précédente • La fin d’une transaction peut être définie soit de façon • Explicite par l’un des ordres COMMIT ou ROLLBACK • implicite Contrôle des transactions 17 Langage de Contrôle des Transactions © Fin de transaction explicite • COMMIT termine une transaction • En validant les datas, • En rendant définitives et accessibles aux autres users toutes les modifications effectuées pendant la transaction en les sauvegardant dans la BD. • ROLLBACK termine une transaction • En annulant toutes les modifications de datas , Contrôle des transactions 18 Langage de Contrôle des Transactions © Fin de transaction implicite • L’exécution d’un ordre de LDD (create, drop, alter) après un ordre de LMD(insert, update, delete) valide la transaction en cours • L’arrêt normal d’une session par un EXIT permet la validation en cours • L’arrêt anormal d’une session annule la transaction en cours Contrôle des transactions 19 Langage de Contrôle des Transactions © Transaction avec étapes intermédiaires • Le découpage d’une transaction en plusieurs parties se fait en insérant des points de repères Ce découpage permet soit : • De valider l’ensemble des mises à jour • Soit d’annuler tout ou une partie des maj La création d’un point de repère se fait par l’ordre SAVEPOINT point_de_repère Contrôle de transactions 20 Langage de Contrôle des Transactions © 21 DELETE Transaction Savepoint A ROLLBACK to Savepoint B DELETE Savepoint B COMMIT INSERT UPDATE ROLLBACK to Savepoint A INSERT UPDATE INSERT ROLLBACK INSERT © Transaction avec étapes intermédiaires - Exemple Update table; Insert into table; Savepoint a Delete from table; Savepoint b Insert into table; Create table Rollback to a alter table insert into commit; Quels sont les ordres SQL qui seront, définitivement, pris en considération ? Contrôle de transaction 22 Langage de Contrôle des Transactions © Propriétés des transactions (ACID) 23 Langage de Contrôle des Transactions © Propriétés des transactions (ACID) 24 Langage de Contrôle des Transactions © Toutes les mises-à-jour (insert, update, delete, Merge) ne deviennent définitives qu‘à l'issue d'une validation par commit Entre-temps elles peuvent être annulées par rollback LMD – Remarques 25 Langage de Contrôle des Transactions © Questions?? 26 uploads/s1/chap3-lmdlct.pdf
Documents similaires
-
36
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 10, 2021
- Catégorie Administration
- Langue French
- Taille du fichier 1.5862MB