Previous Up Next
Université Lille 3-Charles de GaulleUFR de Mathématiques Sciences Économiques et Sociales

Chapitre 40  Modification de base, transactions, tables et vues

40.1  Transactions

40.2  Modifier le contenu

40.2.1  Créer une table

La commande CREATE TABLE permet de créer une table.

Créons la table AFFAIRE :
     CREATE TABLE AFFAIRE 
                 (NOAFF NUMERIC(3) NOT NULL,
                  NOM VARCHAR (10) ,
                  BUDGET NUMERIC(8,2)) 
     ;





Exercice 55   Créer une table TRUC copie d'une autre table (EMP, par exemple)


40.2.2  Insertion de lignes

La commande INSERT permet de créer une nouvelle ligne dans une table.

Par exemple, pour insérer une nouvelle ligne dans la table EMP, essayez la suite de commandes que voici :
      BEGIN
      ;
      INSERT INTO EMP
             VALUES (1001,'Bodinoz','Arnaud','1998-05-19',null,1, 50,15000,null) 
      ;
      SELECT * FROM EMP 
      ;
      ROLLBACK
      ;
      SELECT * FROM EMP 
      ;
      BEGIN
      ;
      INSERT INTO EMP
             VALUES (1001,'Bodinoz','Arnaud','1998-05-19',null,1, 50,15000,null) 
      ;
      SELECT * FROM EMP 
      ;
      COMMIT
      ;
      SELECT * FROM EMP 
      ;
La mise à jour n'est prise en compte que si l'intégrité des données est satisfaite.

Par exemple, si on veut insérer une nouvelle ligne dans la table EMP avec le numéro d'employé non renseigné :
      BEGIN
      ;
      INSERT INTO EMP
             VALUES (null,'Nogues', 'Annie', '11-SEP-97',null,1, 50,12000,null) 
      ;
      SELECT * FROM EMP 
      ;
      COMMIT 
      ;
Même quand on souhaite pas remplir toutes les colonnes on peut insérer une nouvelle ligne dans la table EMP sans utiliser la clause NULL pour les valeurs non renseignées.
      BEGIN
      ;
      INSERT INTO EMP (NOEMP, NOM, EMBAUCHE, NODEPT) 
             VALUES (1002, 'Charon','22-APR-98',50) 
      ;
      SELECT * 
        FROM EMP
       WHERE NOM = 'Charon' 
      ;
      COMMIT 
      ;
Créer la table BONUS vide avec la commande suivante :
      CREATE TABLE bonus
                  (nom VARCHAR(25) ,
                   titre  VARCHAR(25) ,
                   salaire NUMERIC(11, 2) ,
                   tx_commission NUMERIC(4, 2)
                             CONSTRAINT emp_tx_commission_ck
                                  CHECK (tx_commission BETWEEN 10 AND 20)
                  )
      ;
L'insertion dans une table peut se faire par une sélection dans une autre table. Par exemple pour ajouter dans la table BONUS les lignes de EMP dont le titre est Chef Entrepot ou dont le taux de commission est supérieur à 14 :
      BEGIN
      ;
      SELECT * 
        FROM BONUS 
      ;
      INSERT INTO BONUS 
             SELECT NOM, TITRE, SALAIRE, TX_COMMISSION 
               FROM EMP
              WHERE TITRE = 'Chef Entrepot'
                 OR TX_COMMISSION > 14 
      ;
      SELECT * 
        FROM BONUS 
      ;
      COMMIT 
      ;





Exercice 56   Insérer des données dans la table AFFAIRES :


40.2.3  Modification de lignes

La commande UPDATE permet de mettre à jour dans une table une ou plusieurs colonnes pour une ou plusieurs lignes.

Pour mettre à jour le salaire de l'employé Amartakaldire, en l'augmentant de 10%, il faudra taper :
      BEGIN
      ;
      SELECT *
        FROM EMP 
       WHERE NOM ='Amartakaldire' 
      ; 
      UPDATE EMP 
         SET SALAIRE = SALAIRE * cast (1.1 AS NUMERIC )
       WHERE NOM = 'Amartakaldire' 
      ; 
      SELECT *
        FROM EMP 
       WHERE NOM ='Amartakaldire' 
      ; 
      COMMIT 
      ;





Exercice 57   Mettre à jour le titre (Représentant), le salaire (20000) et le taux de commission (15%) de Kaécouté.





Exercice 58   Augmenter de 5% les employés de la table EMP qui se trouvent dans la table BONUS.


40.2.4  Suppression de lignes

La commande DELETE permet de supprimer une ou plusieurs lignes d'une table.




Exercice 59   Supprimer de la table BONUS l'employé Zoudanlkou.





Exercice 60   Supprimer l'employé Amartakaldire de la table BONUS.





Exercice 61   Supprimer l'employé Amartakaldire de la table EMP et faire ROLLBACK.





Exercice 62   Supprimer toutes les lignes de BONUS et faire ROLLBACK, recommencer mais faire COMMIT (et essayer ROLLBACK après).


40.2.5  Suppression d'une table

La commande DROP TABLE permet de détruire une table (lignes et structure).

Pour supprimer totalement la table EMP :
     DROP TABLE EMP ;
Pour la recréer voir la fiche précédente.

40.2.6  Modification de la structure d'une table

La commande ALTER TABLE permet de modifier la structure de la table, même si elle contient des données.

Mais il est impossible en PostgreSQL de changer le type d'une colonne. On ne peut que : Si en plus on veut supprimer la colonne en trop, il ne reste qu'à : Toutes ces manoeuvres sont dangereuses : il est donc indispensable d'utiliser les transactions.

Nous voulons mettre à jour la table AFFAIRE : passer à 1500000 le budget de l'enregistrement dont NOAFF vaut 103 .

Pour cela nous devoir modifier la structure de la table AFFAIRE : faire passer la colonne BUDGET à 9 chiffres dont 2 après la virgule.
     SELECT * FROM AFFAIRE 
     ;
     UPDATE AFFAIRE 
        SET BUDGET = 1500000 
      WHERE NOAFF = 103 
     ;
     BEGIN
     ;
     SELECT * FROM AFFAIRE 
     ;
     ALTER TABLE AFFAIRE
           RENAME BUDGET TO EX
     ;
     SELECT * FROM AFFAIRE 
     ;
     ALTER TABLE AFFAIRE
           ADD BUDGET NUMERIC(9,2)
     ;
     SELECT * FROM AFFAIRE 
     ;
     UPDATE AFFAIRE
        SET BUDGET = EX
     ;
     SELECT * FROM AFFAIRE 
     ;
     ALTER TABLE AFFAIRE
           RENAME TO ANCIEN
     ;
     SELECT NOAFF,NOM,BUDGET
       INTO AFFAIRE
       FROM ANCIEN
     ;
     SELECT * FROM AFFAIRE 
     ;
     UPDATE AFFAIRE
        SET BUDGET = 1500000 
      WHERE NOAFF = 103 
     ;
     SELECT * FROM AFFAIRE 
     ;
     DROP TABLE ANCIEN
     ;
     COMMIT
     ;





Exercice 63   Modifier la structure de EMP en ajoutant une colonne NOAFF.





Exercice 64   Mettre à jour la table EMP :
nodept   noaff
10 -> 101
31 -> 102
32 -> 102
33 -> 102
34 -> 102
35 -> 102
41 -> 103
42 -> 103
43 -> 103
44 -> 103
45 -> 103
50 -> 101





Exercice 65   Détruire la table AFFAIRE.
Détruire et re-créer la table EMP
à l'original.


40.3  Vues

La commande CREATE VIEW permet de créer une vue relative à une ou plusieurs tables de la base.




Exercice 66   Créer une vue relative au numéro, nom et titre des employés des départements supérieurs à 40 et utiliser la vue pour interroger. Mettre à jour EMP et utiliser la vue pour interroger.





Dans la version actuelle de PostgreSQL une vue ne peut pas servir à mettre à jour une table.

Exercice 67   Essayez de mettre à jour la table EMP en utilisant la vue DEPT4.





Exercice 68   Créer une vue relative au nom, numéro de service des employés et au nom du service. Utiliser la vue.





Exercice 69   Créer une vue relative au nom, salaire et salaire annuel des employés.
D.Gonzalez (gonzalez@univ-lille3.fr) en date du th , 

Previous Up Next