SQL – DML – Insert, Update, Delete, Truncate et les transactions

SQL – DML – Insert, Update, Delete, Truncate
et les transactions
PATDEZ-2006- Insérer des lignes, modifier des valeurs de colonnes et supprimer des lignes Page
1/6
Insérer des lignes, modifier des valeurs de colonnes et supprimer
des lignes
Les ordres de création de lignes, de mise à jour des valeurs de colonnes et de suppression de lignes
interviennent au niveau du CONTENU des tables.
Ces ordres mettent en œuvre
l’APPLICATION DES CONTRAINTES D’INTEGRITE spécifiés lors de la création des tables
les mécanismes de GESTION DE TRANSACTION afin de garantir l’intégrité des données lors
d’accès concurrent aux données.
1-Insérer des lignes dans une table, ordre INSERT INTO
L’ordre INSERT permet l’ajout de lignes dans une table.
A- Insérer une ligne complète à partir de valeurs fixes
Dans ce cas de requête d’insertion, les listes des valeurs sont fournies par des valeurs
constantes ou des expressions contenant des fonctions.
Ces listes de valeurs doivent correspondre à toutes les colonnes de la table, sinon une liste des
noms de colonnes correspondantes doit être précisée.
Syntaxe générale :
INSERT INTO nom_table [(col1, col2, col3, ...)]
VALUES (valeur1, valeur2, valeur3, …)
;
Par exemple : ajouter un membre
INSERT INTO member VALUES (1,'dupont','pierrE','bld
Gambetta' , 'cachan' , '20/10/1975',NULL);
B- Insérer plusieurs lignes à partir d’une requête
Dans ce cas de requête d’insertion, les listes des valeurs sont fournies par une requête SELECT
complète.
Ces listes de valeurs doivent correspondre à toutes les colonnes de la table, sinon une liste des
noms de colonnes correspondantes doit être précisée.
Syntaxe générale :
INSERT INTO nom_table [(col1, col2, col3, ...)]
SELECT nomCol1, nomCol2, nomCol3,...
FROM nom_table1
[WHERE conditions]
[GROUP BY colonnes]
[HAVING conditions]
[ORDER BY colonnes]
;
SQL – DML – Insert, Update, Delete, Truncate
et les transactions
PATDEZ-2006- Insérer des lignes, modifier des valeurs de colonnes et supprimer des lignes Page
2/6
2-Mettre à jour des valeurs de colonnes, ordre UPDATE
L’ordre UPDATE permet la mise à jour de valeurs de colonnes dans UNE SEULE TABLE selon la
valeur d’une condition exprimée dans la clause WHERE.
ATTENTION :
UN ORDRE DE MISE A JOUR SANS CLAUSE ‘WHERE’ AFFECTE
TOUTE LES LIGNES DE LA TABLE.
Syntaxe générale :
UPDATE nom_table
SET col1 = valeur1 [,col2 = valeur2, col3 = valeur3,...]
[WHERE expression_condition]
;
La condition spécifiée peut être exprimée :
Par rapport aux colonnes de la table mise à jour
Par rapport à une requête imbriquée indépendante ou corrélée
Mettre à jour (corriger) le prénom d’un membre :
UPDATE membre
SET prenom = ‘john’
WHERE id_memb = 10 ;
Augmenter le tarif des activités (de TOUTES les activités) de 10% :
UPDATE activite
SET tarif = tarif * 1.1;
Augmenter de 10% le prix des oeuvres des artistes nés avant 1900 :
UPDATE t_oeuvre
SET prix = prix * 1.1
WHERE numartiste IN ( SELECT numartiste FROM t_artiste
WHERE anneeNaissance < 1900 )
;
3-Supprimer des lignes d’une table, ordre DELETE
L’ordre DELETE permet la suppression d’une ou plusieurs lignes d’une table selon la valeur
d’une condition.
SQL – DML – Insert, Update, Delete, Truncate
et les transactions
PATDEZ-2006- Insérer des lignes, modifier des valeurs de colonnes et supprimer des lignes Page
3/6
ATTENTION :
UN ORDRE DE SUPPRESSION SANS CLAUSE ‘WHERE’ SUPPRIME
TOUTE LES LIGNES DE LA TABLE.
DELETE [FROM] nom_table
[WHERE expression_condition]
;
La condition spécifiée peut être exprimée :
Par rapport aux colonnes de la table cible de la suppression de lignes
Par rapport à une requête imbriquée indépendante ou corrélée
Supprimer les inscriptions du membre de numéro 10 :
DELETE inscrire
WHERE id_memb = 10 ;
4-Vider une table de son contenu, ordre TRUNCATE TABLE
L’ordre TRUNCATE TABLE permet la suppression de TOUTES LES LIGNES D’UNE TABLE sans
conservation de la trace de la suppression (SANS JOURNALISATION).
ATTENTION :
LES SUPPRESSIONS DE LIGNES NE SONT PAS JOURNALISEES
(un ordre ROLLBACK ne permet pas d’annuler cette suppression de lignes)
TRUNCATE TABLE nom_table
;
5-Validation ou abandon des mises à jour effectuées
Les mises à jour demandées au SGBD ne sont effectivement vraiment enregistrées dans le base de
données que lorsque demande leur validation explicitement.
A- Valider les mises à jour effectuées
Permet de confirmer la mise à jour des données dans la base de données (depuis le dernier ordre
COMMIT)
Syntaxe générale :
COMMIT [TRANSACTION];
B- Annuler les mises à jour effectuées
Permet d’annuler la mise à jour des données dans la base de données (depuis le dernier ordre
COMMIT).
Syntaxe générale :
ROLLBACK [TRANSACTION];
SQL – DML – Insert, Update, Delete, Truncate
et les transactions
PATDEZ-2006- Insérer des lignes, modifier des valeurs de colonnes et supprimer des lignes Page
4/6
6-Gestion des transaction
Les requêtes SQL DML permettent la réalisation de tâches de mises à jour complexes sur les données des
tables.
Dans certains cas, ces mises à jour vont requérir l’exécution de plusieurs requêtes successives afin de
prendre en compte les mises à jour multi tables.
De plus, dans des environnement transactionnels, des mises à jour simultanées peuvent être requises par
différents utilisateurs ou différents applications. Des effets d’entrelacement dans l’exécution de ces lots
de requêtes peuvent apparaître.
A- Les mécanismes d’isolation des transactions : les verrous
Les lectures et écritures d’une transaction doivent être garanties par le SGBD : soit elles se déroulent
toutes correctement soit elles sont toutes abandonnées.
Voici quelques cas d’anomalies possibles qui est indispensable de gérer. T1 et T2 représentent 2
transactions se déroulant simultanément. R représente une opération de lecture, W une opération de mise
à jour.
Cas A- Lecture des données non validées (« dirty read »)
Une transaction (T2) va lire des données écrites par une autre transaction (T1) concurrente non encore
validée
T1 T2
R(A), W(A)
R(A), W(A), commit
R(B), W(B), abort
Cas B- Lecture des données non répétable(« non repeatable read »)
Une transaction (T1) est amenée à relire des données lues précédemment, ces données ayant été modifiées
depuis la lecture initiale par une transaction (T2)
T1 T2
R(A)
R(A), W(A), commit
R(A), W(A), commit
Cas C- Lecture fantômes (« phantom »)
Une transaction (T1) est amenée à relire un ensemble de lignes lues précédemment, des lignes ayant été
ajoutées par une transaction (T2)
T1 T2
R(A)
R(A), W(A), commit
R(A), W(A), commit
SET TRANSACTION ISOLATION LEVEL niveau_isolation
SQL – DML – Insert, Update, Delete, Truncate
et les transactions
PATDEZ-2006- Insérer des lignes, modifier des valeurs de colonnes et supprimer des lignes Page
5/6
Les degrés d’isolation des transactions :
Niveau d’isolation niveau A B C
READ UNCOMMITED
Permet de lire une ligne même si elle a été
mises à jour par une transaction non validée
0 possible possible possible
READ COMMITED
Empêche la lecture d’une donnée mise à
jour par une autre transaction
1 impossible possible possible
REPEATABLE READ
Empêche la mise à jour de données lues
2 impossible impossible possible
SERIALIZABLE
Empêche toute mise à jour ou insertion si
une transaction est en cours
3 impossible impossible impossible
La pose de verrous sur les lignes lues (ou les pages physiques) va permettre aux autres transaction ayant
besoin de ces pages de savoir qu’elles doivent attendre pour garantir les données lues.
B- Le Deadlock, contrepartie de la pose des verrous
La gestion des transactions met en place des verrous (lock) de lectures de lignes (ou au niveau physique
bloc ou pages de la base) pour empêcher la lecture de lignes en train d’être mises à jour.
Ces verrous sont libérés sur le commit ou le rollback
Ces mécanismes de verrous peuvent néanmoins conduire à une situation de blocage, selon la
terminologie :
Deadlock - verrou mortel - étreinte fatale - interblocage
T1 T2
R(A)
Verrou(A)
R(B)
Verrou(B)
R(B)
Attente libération Verrou(B)
R(A)
Attente libération Verrou(A)
Cette situation de blocage est gérée par les SGBD. A la détection de ces blocages, évènement est
déclenché, celui-ci annulant l’une des 2 transactions en cours.
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !