La Solution d'Exercice SQL Corrigé :création de table/création de vue/la commande alter table




1. Créez une table de voiture dans la collection ACME qui a:
[No (PK), marque, model, année, anciennete,  couleur, kilomètres]
Tous les champs sont obligatoires sauf couleur.
Les seules valeurs acceptables pour Marque sont «HONDA», «TOYOTA», «NISSAN '
La base de données doit rejeter toute rangée où le
    Kilomètres est supérieure à 25000 * d’ancienneté


CREATE TABLE ACME.VOITURE

            (No           CHAR(5),

                        Marque               CHAR(15)                  NOT NULL,

                        Model              CHAR(15)                  NOT NULL,

                        Annee                DECIMAL(2,0)          NOT NULL,

                        Anciennete         DECIMAL(2,0)          NOT NULL,

                        Couleur              CHAR(15),

                        Kilometers      DECIMAL(7,1)          NOT NULL,

                        CONSTRAINT   ACME.VOITURE_No_PK

                                                 PRIMARY KEY (No),

                        CONSTRAINT   ACME.Marque_CK

                                                 CHECK (Marque IN ('HONDA','TOYOTA','NISSAN')),

                        CONSTRAINT   ACME.Kilometers_CK

                                                 CHECK (Kilometers <= 2500 * Anciennete)

                        );

2. Créez une table propriétaire dans la collecte ACME qui a
[ID (PK), NOM, Tel, Permis]
Tel est un champ optionnel.



CREATE TABLE ACME.PROPRIETAIRE
                 (ID                   CHAR(5),
                  Nom                      CHAR(15)           NOT NULL,
                  Tel                     CHAR(15) ,
 Permis          DECIMAL(2,0)   NOT NULL,
 CONSTRAINT          ACME.ID_PK
PRIMARY KEY (ID)
 );

3. Créez une table de PROPRIETAIRE_VOITURE sans les clés étrangères qui a:
[ID (PK), No (PK),  Prix]



CREATE TABLE ACME.PROPRIETAIRE_VOITURE
                 (ID                   CHAR(5),
                 No                         CHAR(5),
                 Prix                           DECIMAL(7,1)  NOT NULL,
                 CONSTRAINT           ACMEPROPRIETAIRE_VOITURE_PK 
                                                     PRIMARY KEY
                                                     (ID, No)
                 );

  4. Ajouter la clé étrangère qui portera la table de PROPRIETAIRE_VOITURE à la table propriétaire.


ALTER TABLE PROPRIETAIRE_VOITURE
                 ADD CONSTRAINT  ACME.PROPRIETAIRE_VOITURE_TO_PROPRIETAIRE_FK
                 FOREIGN KEY
                 (ID)
                 REFERENCES
                 PROPRIETAIRE.ID;

 5. Ajouter la clé étrangère qui portera la table de PROPRIETAIRE_VOITURE à la table de la Voiture
  
ALTER TABLE ACME.PROPRIETAIRE_VOITURE
                 ADD CONSTRAINT  ACME.PROPRIETAIRE_VOITURE_TO_VOITURE_FK
                 FOREIGN KEY
                 (No)
                 REFERENCES
                 ACME.VOITURE(No);

 
6. Assurez-vous que la base de données ne permettra pas la valeur de Permis être inséré dans une nouvelle ligne si cette valeur a déjà  utilisé dans une autre ligne.

ALTER TABLE ACME.PROPRIETAIRE
                 ADD CONSTRAINT  ACME.Permis_UN
                 UNIQUE (Permis);

  7. Ajouter un attribut Address à la table propriétaire. Il est de 30 caractères de large.


ALTER TABLE ACME.PROPRIETAIRE
                             ADD COLUMN
                             Address        CHAR(30);

  8. Créez une vue appelée PROPRIETE qui apparaît à l'utilisateur comme le tableau suivant:
[ID, No, Marque, Annee, Prix]


CREATE VIEW ACME.PROPRIETE as
                 (SELECT  o.ID, c.No, c.Marque, c.Annee, oc.Prix
                             FROM ACME.PROPRIETAIRE o, ACME.CAR c, 
             ACME.PROPRIETAIRE_VOITURE oc
WHERE c.No      = oc.No
AND     oc.ID = o.ID);
  9. Retirer la colonne couleur de la table de la VOITURE.


ALTER TABLE ACME.VOITURE
                 DROP COLUMN Couleur;


  10. Retirez toutes les données et tableaux de la collection ACME.


DROP COLLECTION ACME;
CREATE COLLECTION ACME;


►Voir La liste des Exercices SQL Corrigés