Vous êtes sur la page 1sur 28

SGBD

Langage de Manipulation de Données

2018-2019
MONTASSAR BEN MESSAOUD, Ph.D
© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Objectifs du chapitre

Ce chapitre décrit l’aspect LMD (langage de


manipulation des données) de SQL.

Nous verrons que SQL propose trois instructions


pour manipuler des données :
• l’insertion d’enregistrements : INSERT ;
• la modification de données : UPDATE ;
• la suppression d’enregistrements : DELETE.
1

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Insertions d’enregistrements (INSERT)

• Pour pouvoir insérer des enregistrements dans


une table, il faut que cette dernière soit dans
votre schéma ou que vous ayez 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 schéma.

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Insertions d’enregistrements (INSERT)

Il existe plusieurs possibilités d’insertion :

• l’insertion monoligne qui ajoute un


enregistrement par instruction.

• et l’insertion multiligne qui insère plusieurs


valeurs.

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
• La syntaxe simplifiée de l’instruction INSERT
monoligne est la suivante :

INSERT INTO [schéma.] { nomTable | nomVue |


requêteSELECT }
[(colonne1, colonne2…)]
VALUES (valeur1 | DEFAULT, valeur2 | DEFAULT…);

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner toutes les colonnes
• Ajoutons trois lignes dans la table Compagnie
en alimentant toutes les colonnes de la table
par des valeurs.
• La deuxième insertion utilise le mot-clé
DEFAULT pour affecter explicitement la valeur
par défaut à la colonne ville.
• La troisième insertion attribue explicitement la
valeur NULL à la colonne nrue.

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner toutes les colonnes
Compagnie:
comp nrue rue ville nomcomp

Instruction Commentaires
INSERT INTO Compagnie VALUES ('SING', 7, Toutes les valeurs sont
'Camparols', 'Singapour', 'Singapore AL'); renseignées dans l’ordre
de la structure de la table.
INSERT INTO Compagnie VALUES ('AC', 124, DEFAULT explicite.
'Port Royal', DEFAULT, 'Air France');
INSERT INTO Compagnie VALUES ('AN1', NULL explicite.
NULL, 'Hoche', 'Blagnac', 'Air Regional1');
6

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner certaines colonnes
Insérons deux lignes dans la table Compagnie en
ne précisant pas toutes les colonnes.
• La première insertion affecte implicitement la
valeur par défaut à la colonne ville.
• La deuxième donne implicitement la valeur
NULL à la colonne nrue.

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner certaines colonnes
Compagnie:
comp nrue rue ville nomcomp

Instruction Commentaires
INSERT INTO Compagnie(comp, nrue, rue, DEFAULT implicite.
nomComp) VALUES ('AF', 8, 'Champs
Elysées', 'Castanet Air');
INSERT INTO Compagnie(comp, rue, ville, NULL sur nrue implicite.
nomComp) VALUES ('AN2', 'Foch', 'Blagnac',
'Air Regional2');

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner certaines colonnes

Table après insertion :


Valeur Nulle Valeur par défaut

comp nrue rue ville nomcomp


SING 7 Camparols Singapour Singapour AL
AF 124 Port Royal Paris Air France
AN1 Hoche Blagnac Air Regional1
AC 8 Champs Elysées Paris Castanet Air
AN2 Foch Blagnac Air Regional2

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Ne pas respecter des contraintes
Insérons des enregistrements dans la table Pilote
qui ne respectent pas des contraintes.

Insertions vérifiant les contraintes Insertions ne vérifiant pas les contraintes


INSERT INTO Pilote VALUES
('PL-1', 'Amélie Sulpice', 450, 'AF');
ORA-00001: violation de contrainte
INSERT INTO Pilote VALUES unique (SOUTOU.PK_PILOTE)
('PL-1', 'Amélie Sulpice', 450, 'AF'); INSERT INTO Pilote VALUES
('NomNul', NULL, 450, 'AF');
ORA-02290: violation de contraintes
(SOUTOU.NN_NOM) de vérification

10

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Ne pas respecter des contraintes
Insertions vérifiant les contraintes Insertions ne vérifiant pas les contraintes
INSERT INTO Pilote VALUES
('PbHvol','Trop volé!',20000.01,'AF');
ERREUR à la ligne 1 :
INSERT INTO Pilote VALUES ORA-02290: violation de contraintes
('PL-2', 'Thomas Sulpice', 900, 'AF'); (SOUTOU.CK_NBHVOL) de vérification
INSERT INTO Pilote VALUES
('Unique','Amélie Sulpice',450,'AF');
ORA-00001: violation de contrainte
unique (SOUTOU.UN_NOM)
INSERT INTO Pilote VALUES INSERT INTO Pilote VALUES
('PL-3', 'Paul Soutou', 1000, 'SING'); ('PL-2','Thomas Sulpice',900, 'TOTO');
ORA-02291: violation de contrainte
(SOUTOU.FK_PIL_COMPA_COMP)
d’intégrité touche parent introuvable
11

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Modification de
colonnes

12

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Modification de colonnes (UPDATE)

• L’instruction UPDATE permet la mise à jour des


colonnes d’une table. Pour pouvoir modifier des
enregistrements d’une table, il faut que cette
dernière soit dans votre schéma ou que vous
ayez reçu le privilège UPDATE sur la table.

• Si vous avez le privilège UPDATE ANY TABLE,


vous pouvez modifier des enregistrements de
tout schéma.
13

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
• La syntaxe simplifiée de l’instruction UPDATE est la
suivante :

UPDATE [schéma.] nomTable


SET colonne1 = expression | (requête_SELECT) | DEFAULT
(colonne1, colonne2…) = (requête_SELECT)
[WHERE (coition)] ;

14

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
UPDATE [schéma.] nomTable
SET colonne1 = expression | (requête_SELECT) | DEFAULT
(colonne1, colonne2…) = (requête_SELECT)
[WHERE (coition)] ;

• La première écriture de la clause SET met à jour une


colonne en lui affectant une expression (valeur, valeur par
défaut, calcul, résultat d’une requête).

15

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
UPDATE [schéma.] nomTable
SET colonne1 = expression | (requête_SELECT) | DEFAULT
(colonne1, colonne2…) = (requête_SELECT)
[WHERE (coition)] ;

• La deuxième écriture rafraîchit plusieurs colonnes à l’aide du


résultat d’une requête.

16

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
UPDATE [schéma.] nomTable
SET colonne1 = expression | (requête_SELECT) | DEFAULT
(colonne1, colonne2…) = (requête_SELECT)
[WHERE (coition)] ;

• La condition filtre les lignes à mettre à jour dans la table. Si


aucune condition n’est précisée, tous les enregistrements
seront mis à jour. Si la condition ne filtre aucune ligne,
aucune mise à jour ne sera réalisée.
17

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Modification d’une colonne

• Modifions la compagnie de code 'AN1' en


affectant la valeur 50 à la colonne nrue.

UPDATE Compagnie SET nrue = 50


WHERE comp = 'AN1';

18

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Modification de plusieurs colonnes

• Modifions la compagnie de code 'AN2' en


affectant simultanément la valeur 14 à la
colonne nrue et la valeur par défaut (‘Paris’) à
la colonne ville.

• UPDATE Compagnie SET nrue = 14, ville =


DEFAULT WHERE comp = 'AN2';

19

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Renseigner certaines colonnes

La table Compagnie contient à présent les


lignes suivantes.
Modification1

comp nrue rue ville nomcomp


SING 7 Camparols Singapour Singapour AL
AF 124 Port Royal Paris Air France
AN1 50 Hoche Blagnac Air Régional1
AC 8 Champs Elysées Paris Castanet Air
AN2 14 Foch Paris Air Régional2

Modification2
20

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Ne pas respecter des contraintes
Modifications vérifiant les contraintes Ne vérifiant pas les contraintes
UPDATE Pilote SET brevet='PL-2'
WHERE brevet='PL-1';
--Modif d’une clé étrangère ORA-00001: violation de contrainte
UPDATE Pilote unique (SOUTOU.PK_PILOTE)
SET compa = 'SING' UPDATE Pilote SET nom = NULL
WHERE brevet = 'PL-2'; WHERE brevet = 'PL-1';
ORA-02290: violation de contraintes
(SOUTOU.NN_NOM) de vérification
--Modif d’une clé primaire UPDATE Pilote SET nbHVol = 20000.01
UPDATE Pilote WHERE brevet='PL-1';
SET brevet = 'PL3bis' ORA-02290: violation de contraintes
WHERE brevet = 'PL-3'; (SOUTOU.CK_NBHVOL) de vérification

21

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Suppression d’enregistrements

• Les instructions DELETE et TRUNCATE


permettent de supprimer un ou plusieurs
enregistrements d’une table. Pour pouvoir
supprimer des données dans une table, il faut
que cette dernière soit dans votre schéma ou
que vous ayez reçu le privilège DELETE sur la
table.
• Si vous avez le privilège DELETE ANY TABLE,
vous pouvez détruire des enregistrements dans
n’importe quelle table de tout schéma. 22

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe
La syntaxe simplifiée de l’instruction DELETE est la suivante :

DELETE [FROM] [schéma.]nomTable [WHERE (condition)] ;

• La condition sélectionne les lignes à supprimer dans la table.


Si aucune condition n’est précisée, toutes les lignes seront
supprimées. Si la condition ne sélectionne aucune ligne,
aucun enregistrement ne sera supprimé.

23

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Exemple de suppressions

DELETE FROM Pilote WHERE compa = 'AF';


DELETE Compagnie WHERE comp = 'AF';

DELETE FROM Compagnie WHERE comp =


'SING';
ORA-02292: violation de contrainte
(SOUTOU.FK_PIL_COMPA_COMP) d'intégrité -
enregistrement fils existant
24

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Syntaxe TRUNCATE
La commande TRUNCATE supprime tous les enregistrements
d’une table et libère éventuellement l’espace de stockage
utilisé par la table (chose que ne peut pas faire DELETE) :

TRUNCATE TABLE [schéma.]nomTable [{ DROP | REUSE }


STORAGE];

• La récupération de l’espace est réalisée à l’aide de l’option


DROP STORAGE (option par défaut).
• Dans le cas inverse (REUSE STORAGE), l’espace est
utilisable par les nouvelles données de la table.
25

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Cohérence
Deux types de problèmes sont automatiquement résolus par
Oracle pour assurer l’intégrité référentielle :
• La cohérence du « fils » vers le « père » : on ne doit pas pouvoir insérer un
enregistrement « fils » (ou modifier sa clé étrangère) rattaché à un
enregistrement « père » inexistant. Il est cependant possible d’insérer un
« fils » (ou de modifier sa clé étrangère) sans rattacher d’enregistrement
« père » à la condition qu’il n’existe pas de contrainte NOT NULL au niveau
de la clé étrangère.

• La cohérence du « père » vers le « fils » : on ne doit pas pouvoir supprimer


un enregistrement « père » (ou modifier sa clé primaire) si un
enregistrement « fils » y est encore rattaché. Il est possible de supprimer les
« fils » associés (DELETE CASCADE) ou d’affecter la valeur nulle aux clés
étrangères des « fils » associés (DELETE SET NULL). 26

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.
Thank you for your attention!

montassar.benmessaoud@gmail.com

Montassar Ben Messaoud, Ph.D SGBD: SQL de base


© 2013 Cengage Learning. All Rights Reserved. This edition is intended for use outside of the U.S. only, with content that may be different from the U.S. Edition.
May not be scanned, copied, duplicated, or posted to a publicly accessible website, in whole or in part.

Vous aimerez peut-être aussi