La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com.

Présentations similaires


Présentation au sujet: "T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com."— Transcription de la présentation:

1 T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com

2 Objectifs En suivant ce cours, vous serez capable : De décrire tous les ordres DML Dinsérer des lignes dans une table De les modifier ou supprimer De contrôler les transactions © sebvita.com

3 Lordre INSERT © sebvita.com

4 Présentation Un ordre DML est exécuté lors : – De lajout de lignes dans une table – De la modification de lignes – De la suppression de lignes Une transaction est un ensemble dordres DML qui constituent une unité logique de travail © sebvita.com

5 Lordre INSERT Ajouter une ligne à une table Insérer une nouvelle ligne dans la table DEPARTMENTS Nouvelle ligne DEPARTMENTS © sebvita.com

6 Syntaxe Ajouter une nouvelle ligne avec la clause INSERT : Avec cette syntaxe on insère une ligne à la fois INSERT INTO table [(column [, column...])] VALUES (value [, value...]); © sebvita.com

7 Exemple basique Insérer une ligne avec une valeur pour chaque colonne Lister les valeurs dans lordre des colonnes de la table Éventuellement, lister les colonnes dans la clause Mettre les chaînes de caractères et les dates entre quotes simples INSERT INTO departments(department_id, department_name, manager_id,location_id) VALUES (70, 'Public Relations', 100, 1700); 1 row created. © sebvita.com

8 Exemple avec des valeurs NULL Implicite : Ne pas mettre les colonnes Explicite : Écrire NULL dans les valeurs INSERT INTO departments (department_id, department_name ) VALUES (30, 'Purchasing'); INSERT INTO departments VALUES (100, 'Finance', NULL, NULL); 1 row created. 1 row created © sebvita.com

9 Exemple avec des fonctions La fonction SYSDATE retourne les date et heure courantes INSERT INTO employees (employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id) VALUES (113, 'Louis', 'Popp', 'LPOPP', '515.124.4567', SYSDATE, 'AC_ACCOUNT', 6900, NULL, 205, 100); 1 row created. © sebvita.com

10 Exemple avec des dates Ajouter un nouvel employé Vérifier lajout INSERT INTO employees VALUES (114, 'Den', 'Raphealy', 'DRAPHEAL', '515.127.4561', TO_DATE('FEB 3, 1999', 'MON DD, YYYY'), 'AC_ACCOUNT', 11000, NULL, 100, 30); 1 row created. © sebvita.com

11 Exemple de création de script Utiliser les variables de substitution INSERT INTO departments (department_id, department_name, location_id) VALUES (&department_id,'&department_name',&location ); 1 row created. © sebvita.com

12 Copier les lignes dune autre table Écrire l INSERT avec une sous-requête Ne pas utiliser de clause VALUES Faire correspondre les colonnes de l INSERT et de la sous-requête INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%'; 4 rows created. © sebvita.com

13 V OUS AVEZ DES QUESTIONS ?

14 Lordre UPDATE © sebvita.com

15 Changer les données dune table EMPLOYEES Mettre à jour la table EMPLOYEES : © sebvita.com

16 Syntaxe Modifier des lignes existantes avec UPDATE Peut mettre à jour plusieurs lignes en même temps UPDATE table SET column = value [, column = value,...] [WHERE condition]; © sebvita.com

17 Exemples Lignes spécifiques avec la clause WHERE Toutes les lignes de la table UPDATE employees SET department_id = 70 WHERE employee_id = 113; UPDATE copy_emp SET department_id = 110; 1 row updated. 22 row updated. © sebvita.com

18 Exemple avec sous-requêtes Mettre à jour le métier et le salaire de lemployé 114 avec les données de lemployé 205 UPDATE employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205), salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114; 1 row updated. © sebvita.com

19 Utiliser une autre table Utiliser les données dune autre table grâce aux sous-requêtes UPDATE copy_emp SET department_id = (SELECT department_id FROM employees WHERE employee_id = 100) WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200); 1 row updated. © sebvita.com

20 DEFAULT Utiliser la valeur par défaut dune colonne Peut-être utilisé dans les INSERT et UPDATE INSERT INTO deptm3 (department_id, department_name, manager_id) VALUES (300, 'Engineering', DEFAULT); UPDATE deptm3 SET manager_id = DEFAULT WHERE department_id = 10; © sebvita.com

21 V OUS AVEZ DES QUESTIONS ?

22 Les ordres DELETE et TRUNCATE © sebvita.com

23 Supprimer les lignes dune table DEPARTMENTS Supprimer une ligne de la table DEPARTMENTS : © sebvita.com

24 Syntaxe Supprimer des lignes existantes dune table DELETE [FROM] table [WHERE condition]; © sebvita.com

25 Exemples Lignes spécifiques avec la clause WHERE Toutes les lignes de la table DELETE FROM departments WHERE department_name = 'Finance'; DELETE FROM copy_emp; 1 row deleted. 22 rows deleted. © sebvita.com

26 Exemple avec sous-requêtes Supprimer des lignes dune table en fonction des données dune autre DELETE FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE '%Public%'); 1 row deleted. © sebvita.com

27 Lordre TRUNCATE Supprimer toutes les lignes dune table Est un DDL et non un DML : ne peut pas être annulé aussi facilement Syntaxe : Exemple : TRUNCATE TABLE table_name; TRUNCATE TABLE copy_emp; © sebvita.com

28 V OUS AVEZ DES QUESTIONS ?

29 Lordre MERGE © sebvita.com

30 Présentation Permet une insertion ou mise à jour conditionnelle Lance un UPDATE si la ligne existe, un INSERT dans le cas contraire : – Évite les mises à jour séparées – Simplifie lutilisation et améliore les performances – Très utile dans les applications de datawarehouse © sebvita.com

31 Syntaxe Lordre MERGE permet un UPDATE ou un INSERT selon une condition MERGE INTO table_name table_alias USING (table | view | sub_query) alias ON (join condition) WHEN MATCHED THEN UPDATE SET col1 = col_val1, col2 = col2_val WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values); © sebvita.com

32 Exemple Insérer ou modifier les lignes dans COPY_EMP pour correspondre à la table EMPLOYEES MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET c.first_name = e.first_name, c.last_name = e.last_name,... c.department_id = e.department_id WHEN NOT MATCHED THEN INSERT VALUES(e.employee_id, e.first_name, e.last_name, e.email, e.phone_number, e.hire_date, e.job_id, e.salary, e.commission_pct, e.manager_id, e.department_id); © sebvita.com

33 Exemple SQL> SELECT * 2 FROM COPY_EMP; no rows selected MERGE INTO copy_emp c USING employees e ON (c.employee_id = e.employee_id) WHEN MATCHED THEN UPDATE SET... WHEN NOT MATCHED THEN INSERT VALUES...; SELECT * FROM COPY_EMP; 20 rows selected. © sebvita.com

34 V OUS AVEZ DES QUESTIONS ?

35 Contrôle des transactions © sebvita.com

36 Présentation Une transaction de base de données consiste en un des points suivants : – Des ordres DML – Un ordre DDL – Un ordre DCL © sebvita.com

37 Présentation Une transaction commence avec le premier DML Se termine avec : – Un COMMIT ou ROLLBACK – Un DDL ou DCL (commit automatique) – Lutilisateur quitte iSQL*Plus – Le système plante © sebvita.com

38 Présentation Les avantages des transactions : – Assurer la consistance des données – Prévisualiser les changements avant de les rendre permanents – Grouper les opérations logiques © sebvita.com

39 Chronologie DELETE INSERT UPDATE INSERT ROLLBACK to SAVEPOINT B ROLLBACK to SAVEPOINT A ROLLBACK SAVEPOINT B SAVEPOINT A Transaction COMMIT Temps © sebvita.com

40 Revenir en arrière Créer un point de retour dans une transaction avec SAVEPOINT Revenir en arrière avec ROLLBACK TO SAVEPOINT INSERT... ROLLBACK TO update_done ; UPDATE... SAVEPOINT update_done ; Savepoint created. Rollback complete. © sebvita.com

41 Revenir en arrière Un commit automatique a lieu : – Lors dun DDL – Lors dun DCL – Lorsquon quitte iSQL*Plus sans COMMIT ou ROLLBACK Un rollback automatique a lieu lorsquon quitte de manière anormale © sebvita.com

42 État des données Avant un COMMIT ou un ROLLBACK : – Létat des données peut être retrouvé – Lutilisateur en cours peut prévisualiser les données – Les autres utilisateurs ne peuvent pas voir les changements – Les lignes affectées sont verrouillées ; les autres utilisateurs ne peuvent pas les modifier © sebvita.com

43 État des données Après un COMMIT – Les changements sont rendus permanents – Létat précédent des données est perdu – Tous les utilisateurs peuvent voir le résultat – Les verrous sont relâchés – Tous les points de retour sont effacés © sebvita.com

44 Exemple Changement des données Validation des données DELETE FROM employees WHERE employee_id = 99999; COMMIT ; INSERT INTO departments VALUES (290, 'Corporate Tax', NULL, 1700); 1 row deleted. 1 row created. Commit complete. © sebvita.com

45 État des données Après un ROLLBACK – Les changements sont annulés – Létat précédent est restauré – Les verrous sur les lignes sont relâchés DELETE FROM copy_emp; ROLLBACK ; 22 rows deleted. Rollback complete. © sebvita.com

46 Exemple DELETE FROM test; ROLLBACK; DELETE FROM test WHERE id = 100; SELECT * FROM test WHERE id = 100; COMMIT; 25,000 rows deleted. Rollback complete. 1 row deleted. No row selected. Commit complete. © sebvita.com

47 Rollback dune requête Si un seul DML plante pendant lexécution, seul ce DML est annulé Le serveur Oracle implémente un SAVEPOINT implicite Tous les autres changements sont maintenus Lutilisateur peut terminer explicitement avec un COMMIT ou un ROLLBACK © sebvita.com

48 Consistance des données La lecture consistante des données garantie la consistance des résultats à tout moment Les changements dun utilisateur ninfluent pas ceux dun autre utilisateur Elle assure également que pour des mêmes données : – Les lecteurs nattendent pas les « écrivains » – Les « écrivains » nattendent pas les lecteurs © sebvita.com

49 Lecture consistante User B User A UPDATE employees SET salary = 7000 WHERE last_name = 'Grant'; SELECT * FROM userA.employees; © sebvita.com

50 V OUS AVEZ DES QUESTIONS ?

51 Manipulation des données © sebvita.com

52 Résumé Les transactions Les ordres DML Ordres DDL © sebvita.com La lecture consistante

53 Ressources http://www.oracle.com http://otn.oracle.com © sebvita.com


Télécharger ppt "T ECHNOLOGIES O RACLE Manipulation des données © sebvita.com."

Présentations similaires


Annonces Google