CREATE TABLE DROP TABLE ALTER TABLE INSERT UPDATE DELETE SELECT interrogation 2 Instruction de mise à jour structure
INSERT INTO Table [ ( Nom_Colonne [, Nom_Colonne ]...) ] VALUES { (Valeur | Requête) [,(Valeur | Requête)... } Exemple: On désire insérer un nouveau département dans la table departement INSERT INTO departement (id, nom,ville) VALUES(50,‘Ingénierie',‘Québec'); ou bien INSERT INTO departement VALUES (50,‘Ingénierie',‘Québec'); 3
Exemple, on désire insérer un nouvel employé travaillant à Québec: INSERT INTO employe(id, nom, id_departement) VALUES (7777, ‘Toto’, (SELECT id FROM departement WHERE ville = ‘Québec’)); 4
Pour insérer les employés des départements 10,20,30 et 40 de la table ancien_emp dans la table employe INSERT INTO employe( id, nom, id_departement) SELECT id, nom, id_departement FROM ancien_emp WHERE id_departement IN (10,20,30,40); 5
Lorsqu'une colonne est omise dans un énoncé INSERT, elle prend la valeur NULL. 6
Format d'une date: ‘DD/MM/YYYY‘ INSERT INTO employe(id, nom, date_embauche) VALUES ( 7963, ‘Marion', TO_DATE('07/03/1999‘,‘DD/MM/YYYY’); Pour avoir la date du jour : SYSDATE INSERT INTO employe (id, nom, date_embauche) VALUES (7600, ‘Jacques’, SYSDATE); 7
8
Il s'agit d'un objet de la base de données que l'on utilise pour générer des nombres entiers qui se suivent Pour créer une séquence: CREATE SEQUENCE Nom_Séquence [ INCREMENT BY n ] [ START WITH n ] [ MAXVALUE n | NOMAXVALUE ] [ MINVALUE n | NOMINVALUE ] [ CYCLE | NOCYCLE ] [CACHE n | NOCACHE] Exemple: CREATE SEQUENCE seq_employe INCREMENT BY 1 START WITH 1; Pour détruire une séquence: DROP SEQUENCE Nom_Séquence; 9
S’il n’y a pas de cache pour la séquence, alors à chaque fois que l’on veut avoir nombre suivant de la séquence, il y a une opération sur le disque dur pour aller chercher et incrémenter la séquence. En utilisant CACHE 100, par exemple, les 100 prochains numéro seront immédiatement incrémentés dans la séquence. Ceux-ci pourront ensuite être utilisé sans avoir à faire d’accès au disque dur. ◦ Ceci permet une meilleur performance de la base de données lors d’insertion en “batch”. V I- 1010
Pour générer le nombre suivant d'une séquence. Nom_Séquence.NEXTVAL Exemple: On désire que les numéros d'employé soit générés automatiquement lors de la création d'un employé. 1) on crée la séquence "matricule" CREATE SEQUENCE seq_matricule INCREMENT BY 1 START WITH 1000; 2) Lors de la création d'un employé, on utilise cette séquence. INSERT INTO employe (id, nom, poste) VALUES (seq_matricule.nextval, ‘Morin’, ‘technicien’); 11
Pour utiliser le dernier nombre généré par une séquence. Nom_Séquence.CURRVAL Exemple: On désire afficher le dossier d'un employé qui vient d'être ajouté à la BD. INSERT INTO EMP (id, nom) VALUES (seq_matricule.nextval, ‘castagne’); SELECT id, nom FROM employe WHERE id = seq_matricule.currval; 12
Syntaxe: UPDATE Table SET Nom_Colonne = Expression [,…] [ WHERE Condition ] ou UPDATE Table SET (Nom_Colonne [,Nom_Ccolonne]...) = ( Requête ) [,...] [ WHERE condition ] Si on utilise une requête elle doit retourner aucune ou au maximum une rangée. Note :la requête est évaluée pour chaque rangée mise à jour. 13
Pour changer tous les vendeurs en représentants UPDATE employe SET poste = ‘Représentant' WHERE poste = ‘Vendeur‘ ; 14
Pour changer les vendeurs en représentants et les transférer au département 40 UPDATE employe SET id_departement= 40, poste = 'représentant‘ WHERE poste = 'vendeur‘ ; 15
Exemple: transférer tous les employés travaillant dans un département situé à Otttawa ou Toronto dans le département situé à Montréal de plus, mettre la commission pour ces employés à zéro UPDATE employe SET id_departement = (SELECT id FROM departement WHERE Ville= ’Montréal'), commission = 0 WHERE id_departement IN (SELECT id FROM departement WHERE Ville=’Ottawa‘ OR Ville= ’Toronto'); 16
La clause WHERE détermine les rangées qui seront supprimées. Si la clause WHERE est absente, toutes les rangées sont supprimées. Exemple: L'employé Martin a démissionné. Pour le rayer de la liste des employés: DELETE FROM employe WHERE id = 7654 ; Pour détruire tous les employés: DELETE FROM employe; 17