Académique Documents
Professionnel Documents
Culture Documents
Lotfi NAJDI
Année Universitaire 2020 / 2021
Licence Professionnelle Génie Informatique
Faculté Polydisciplinaire de Taroudant
Langage de manipulation de données
Une transaction est composée d'un ensemble d'instructions LMD qui forment une unité de travail
logique.
Exemple de transaction
Lorsqu'un client de la banque transfère de l'argent d'un compte d'épargne vers un compte
Le serveur Oracle doit vérifier que les trois instructions SQL sont exécutées de manière à
préserver l'équilibre des comptes. Si quelque chose empêche l'exécution de l'une des
L’ajout de ligne n’est réalisé que si toutes les contraintes sont respectées : Clé primaire, clés
Les colonnes qui sont omises sont valorisées à leur valeur DEFAULT si elle existe, sinon NULL
Nouvelle ligne
DEPARTMENTS
• Insère une nouvelle ligne contenant des valeurs pour chaque colonne.
• Il est recommandé de citer toutes les colonnes, pour des raisons de lisibilité et de maintenabilité
• Mettez les valeurs des caractères et des dates entre guillemets simples.
Insérer des valeurs NULL
Utilisez le symbole & dans l’instruction INSERT pour demander la saisie des valeurs .
& est un paramètre de substitution permettant de renseigner les variables utilisateur au moment de
l’exécution.
Insère toutes les lignes renvoyées par la sous-interrogation dans la table sales_reps.
L'instruction UPDATE
Permet de mettre à jour certaines colonnes de lignes existantes dans une table
Si aucune condition n’est indiquée, toutes les lignes sont mises à jour
La mise à jour des lignes n’est réalisée que si toutes les contraintes sont respectées
Modification des données dans une table
EMPLOYEE
S
UPDATE élémentaire :
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
Les valeurs pour une ou plusieurs lignes sont mises à jour si on spécifie la clause WHERE :
UPDATE employees
SET department_id = 50
WHERE employee_id = 113;
Les valeurs de toutes les lignes de la table sont modifiées si la clause WHERE est omise
UPDATE copy_emp
SET department_id = 110;
• Pour mettre à jour la valeur d'une colonne à NULL, utilisez SET column_name= NULL .
L'instruction UPDATE
UPDATE complexe : les colonnes peuvent être mises à jour avec le résultat d’une requête
SELECT
Mettez à jour le poste et le salaire de l'employé 113 de sorte qu'ils correspondent à ceux de
l'employé 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 = 113;
Mettre à jour deux colonnes avec une sous-interrogation
UPDATE employees
SET (job_id, salary) = (SELECT job_id, salary
FROM employees
WHERE employee_id = 205)
WHERE employee_id = 113;
L'instruction DELETE
exprimées
La suppression des lignes n’est réalisée que si toutes les contraintes sont respectées
(il n’est pas possible de supprimer une ligne qui est référencée par une autre ligne dans une table fille
Si des enregistrements existent dans des tables filles, une erreur ORA-02292 (violation de contrainte
Dans ce cas, il est nécessaire de supprimer au préalable les enregistrements fils rattachés , sauf si la
DELETE SET NULL », auquel cas Oracle supprime automatiquement les enregistrements fils, ou
DEPARTMENTS
Syntaxe :
Si la clause WHERE n’est pas renseignée , alors toutes les lignes de table seront supprimées
Pour supprimer des lignes d'une table sur la base des valeurs d'une autre table :
Suite à l’exécution de TRUNCATE sur une table , cette dernière devient vide cependant
Instruction DDL est non pas DML (ne peut être facilement annulée )
L'instruction TRUNCATE
TRUNCATE est une alternative à l’ordre DELETE beaucoup plus performante (quasi-instantanée,
Instruction à utiliser dans un contexte batch, pour purger efficacement une table de travail qui n’est
Le serveur Oracle garantit la cohérence des données par l'intermédiaire des transactions.
données.
Des instructions faisant partie du LMD ou DML qui constituent une modification cohérente des
données.
Une instruction faisant partie du LCD pour langage de contrôle de données ou DCL ( GRANT,
REVOKE)
Transactions de base de données : Début et fin
Une instruction LDD ou LCD est exécutée (commit c.-à-d. validation automatique).
• Pré visualiser les modification effectuées sur données avant de les rendre définitives
Instruction Description
SAVEPOINT name sauvegarde spécifié. Ce qui aura comme conséquence l’annulation de toutes
Time COMMIT
Transaction
DELETE
SAVEPOINT A
INSERT
UPDATE
SAVEPOINT B
INSERT
ROLLBACK ROLLBACK
ROLLBACK
TO SAVEPOINT B TO SAVEPOINT A
Traitement implicite des transactions
• Fermeture normale de SQL DEVELOPER ou de SQL*Plus sans émettre explicitement d’instruction COMMIT
ou ROLLBACK.
En cas d’arrêt anormal d’un composant (client, réseau, serveur) une opération d’annulation ROLLBACK
L’état transitoire des données n’est accessible qu’au sein de la session effectuant les opérations ;Les
autres utilisateurs (sessions ), ne peuvent pas voir les résultats des déclarations DML émises par
l'utilisateur actuel.
Des verrous sont positionnés au niveau des lignes/colonnes impactées afin de garantir la cohérence
des données. D’autres utilisateurs ne pourront effectuer de modifications simultanées sur les données.
État des données après COMMIT
Les modifications apportées aux données sont rendues permanents (dans la base de données)
Les verrous (Locks) sont libérés et les lignes deviennent disponibles pour d'autres utilisateurs qui
COMMIT;
État des données après ROLLBACK
• La cohérence de la lecture garantit une vue cohérente des données à tout moment.
• Les modifications apportées par un utilisateur n'entrent pas en conflit avec les
modifications apportées par un autre utilisateur.
• Les personnes qui effectuent des opérations de lectures (Readers ) n'attendent pas
que les writers terminent leurs opérations.
• Elle conserve une copie partielle de la base de données dans les segments d'annulation (Undo
segments)
• Lorsqu'une opération d'insertion, de mise à jour ou de suppression est effectuée sur la base de
données, le serveur Oracle prend une copie des données avant qu'elles ne soient modifiées et l'écrit
• Read consistent image est construite à partir des données validées dans la table et des anciennes
valeurs des données qui sont modifiées et qui ne sont pas encore validées dans le segment
d'annulation.
Read Consistency
• La version originale, plus ancienne, des données du segment d'annulation est réinscrite
dans la table.
• Tous les utilisateurs voient la base de données telle qu'elle existait avant le début de la
transaction.
Clause FOR UPDATE dans une instruction SELECT
Si l'instruction SELECT tente de verrouiller une ligne qui est déjà verrouillée par un autre utilisateur, la
base de données attend que la ligne soit disponible, puis renvoie les résultats de l'instruction SELECT.
Clause FOR UPDATE avec WAIT
Dans cet ’exemple, la base de données va attendre que la ligne soit disponible juste pendant cinq
USING (department_id)
FOR UPDATE
ORDER BY e.employee_id;
FOR UPDATE peut être utilisée, dans une instruction SELECT avec plusieurs tables.
Dans ce cas, les lignes des deux tables EMPLOYEES et DEPARTMENTS sont verrouillées.
Utilisez FOR UPDATE OF COLUMN_NAME pour qualifier la colonne que vous avez l'intention de
modifier, alors seules les lignes de la table contenant la colonne sont verrouillées dans ce cas de
figure.
Récapitulatif
Fonction Description