Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parPlaisance Le meur Modifié depuis plus de 10 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.