TP3 : Cr eation de tables
Transcription
TP3 : Cr eation de tables
Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer les exercices du TP precedent si ce n'est pas deja le cas. Le schema entite-relation suivant modelise les deux nouvelles tables que vous allez creer durant ce TP : 1 Creer ou supprimer une table Pour creer une table simple, on utilisera la commande CREATE TABLE en speciant le nom et le type de chaque colonne. A la creation, la table sera vide, mais un certain espace lui sera alloue. La syntaxe est la suivante : CREATE TABLE nom table(nom col1 TYPE1, nom col2 TYPE2, ...) ; Pour supprimer la table nom table, on fera appel a la commande DROP TABLE de la facon suivante : DROP TABLE nom table ; La denition de la table ainsi que son contenu sont detruits, et l'espace occupe par la table est libere. Exercice 1. On souhaite la table personne contenant les colonnes suivantes : personne(nom, ville, ddn) 1. Avant de creer cette table, assurer vous d'avoir prealablement eace toute table homonyme avec la commande DROP TABLE. 2. Creer la table personne, en precisant les types suivants pour chacune des colonnes : { nom : VARCHAR(20) { ville : VARCHAR(20) { ddn : DATE 3. Verier le resultat de la commande en tapant nd. 2 Contraintes d'integrite A la creation d'une table, les contraintes d'integrite se declarent de la facon suivante : CREATE TABLE nom table ( nom col 1 type 1, nom col 2 type 2, ... nom col n type n [CONSTRAINT nom contrainte 1] contrainte 1, [CONSTRAINT nom contrainte 2] contrainte 2, ... [CONSTRAINT nom contrainte m] contrainte m ) ; ou directement apres le nom de la colonne : CREATE TABLE nom nom ... nom nom table ( col 1 type 1 [CONSTRAINT nom contrainte 1] contrainte 1, col 2 type 2 [CONSTRAINT nom contrainte 2] contrainte 2, col n type n [CONSTRAINT nom contrainte n] contrainte n) ; Les contraintes dierentes que l'on peut declarer sont les suivantes : { NOT NULL : la colonne ne peut pas contenir de valeurs NULL (cette contrainte s'emploie directement apres le nom de la colonne) { UNIQUE : chaque ligne de la table doit avoir une valeur dierente ou NULL pour cette (ou ces) colonne(s). { PRIMARY KEY : chaque ligne de la table doit avoir une valeur dierente pour cette (ou ces) colonne(s). Les valeurs NULL sont rejetees. { REFERENCES : cette colonne fait reference a une colonne d'une autre table (cette contrainte s'emploie directement apres le nom de la colonne) { FOREIGN KEY ... REFERENCES : cette colonne (ou liste de colonnes) fait reference a une colonne (ou liste de colonnes) formant une cle primaire d'une autre table (cette contrainte ne s'emploie qu'en n de table) { CHECK : permet de specier les valeurs acceptables pour une colonne. Exercice 2. On souhaite creer la table voiture contenant les colonnes suivantes : voiture(numero, marque, puissance, nom propt, prenom propt, cout, taxe) 1. Avant de creer cette table, assurer vous d'avoir prealablement eace toute table homonyme avec la commande DROP TABLE. 2. Creer la table voiture, en placant les contraintes suivantes pour chacune des colonnes : { numero : INTEGER doit ^etre une clef primaire { marque : VARCHAR(20) ne doit pas ^etre NULL { puissance : INTEGER { nom propt : VARCHAR(20) { prenom propt : VARCHAR(20) { cout : INTEGER ne doit pas ^etre NULL { taxe : INTEGER 2 3 Modier une table On peut modier dynamiquement la denition d'une table gr^ace a la commande ALTER TABLE. Deux types de modications sont possibles : ajout d'une colonne et modication d'une colonne existante. 3.1 Ajout/Suppression d'une colonne La commande suivante permet d'ajouter une colonne a une table existante : ALTER TABLE nom table ADD COLUMN nom col1 TYPE1 ; Les types possibles sont les m^emes que ceux decrits avec la commande CREATE TABLE. Si la table contient deja des lignes, la nouvelle colonne aura des valeurs NULL pour les lignes existantes. Pour retirer une colonne, utiliser la commande : ALTER TABLE nom table DROP COLUMN nom col1 ; Les donnees des colonnes mentionnees disparaissent. Les contraintes de table les impliquant sont aussi supprimees. Neanmoins, si une colonne est referencee par une contrainte de cle etrangere dans une autre table, PostgreSQL ne supprimera pas silencieusement cette contrainte. Exercice 3. Ajouter dans la table personne une colonne prenom de type VARCHAR(20), ainsi qu'une colonne age de type INTEGER. 3.2 Modier une colonne On peut modier le nom d'une colonne, changer son type ou modier une contrainte NOT NULL en faisant appel aux commandes : { ALTER TABLE nom table RENAME COLUMN ancien nom TO nouveau nom ; { ALTER TABLE nom table ALTER COLUMN nom colonne TYPE nouveau type ; { ALTER TABLE nom table ALTER COLUMN nom colonne SET | DROP NOT NULL ; Dans tous les cas, si la colonne contient des donnees, il faut s'assurer que le nouveau type est compatible avec les donnees existantes. Exercice 4. Modier la table personne an d'autoriser la saisie de noms ayant jusqu'a 30 lettres. 3.3 Modication de contraintes de table On peut ajouter ou supprimer les contraintes d'une table en faisant appel aux commandes suivantes : { ALTER TABLE nom table ADD [CONSTRAINT nom contrainte] contrainte ; { ALTER TABLE nom table DROP CONSTRAINT nom contrainte ; Remarque : Si les contraintes n'ont pas ete nommees, un nom par defaut leur est attribue an que l'on puisse les supprimer ulterieurement ! Exercice 5. Modier les tables personne et voiture an de prendre en compte les contraintes suivantes : 3 { Les colonnes nom et prenom de la table personne forment une clef primaire. { Les colonnes nom propt et prenom propt de la table voiture forment une clef etrangere se referant aux colonnes nom et prenom de la table personne. { la colonne age de la table personne doit contenir des donnees qui, lorsqu'elles sont non NULL, doivent ^etre en accord avec la date de naissance ddn de la personne. On se reportera a la documentation disponible en ligne pour savoir comment eectuer des operations sur les dates et recuperer la date courante. 4 Modier le contenu d'une base 4.1 Ajout de lignes La commande INSERT permet d'inserer une ligne dans une table en speciant les valeurs a inserer. La syntaxe est la suivante : INSERT INTO nom table(nom col 1, nom col 2, ...) VALUES (val 1, val 2...) La liste des noms de colonne est optionnelle. Si elle est omise, la liste des colonnes sera par defaut la liste de l'ensemble des colonnes de la table dans l'ordre de la creation de la table. Si une liste de colonnes est speciee, les colonnes ne gurant pas dans la liste auront la valeur NULL. Exercice 6. Ajouter dans la table personne les personnes suivantes : { { { { M. Paul Dupont, ne le 05 Juin 1946, demeurant a Montrouge Mme Michele Dulong, nee le 03 Juillet 1963, demeurant a Maubeuge M. Dominique Ducourt ne le 23 Mars 1956, demeurant a Elancourt Melle Julie Dupuy nee le 28 Mai 1980, demeurant a Meudon Exercice 7. Ajouter dans la table voiture les vehicules suivants : { la voiture numero 123, de marque Renault, classe en puissance 4, appartenant a M. Paul Dupont, de prix 15 000 e dont taxe 150. { la voiture numero 160, de marque Renault, classe en puissance 3, appartenant a M. Paul Dupont, de prix 10 000 e dont taxe 100. { la voiture numero 190, de marque Citroen, classe en puissance 4, appartenant a Mme Michele Dulong, de prix 8 000 e dont taxe 80. { la voiture numero 500, de marque Peugeot, classe en puissance 4, appartenant a M. Michele Dulong, de prix 9 500 e dont taxe 95. { la voiture numero 600, de marque Renault, classe en puissance 3, de proprietaire inconnu, de prix 9 000 e dont taxe 90. 4 4.2 Modication de lignes La commande UPDATE permet de modier les valeurs d'une ou plusieurs colonnes, dans une ou plusieurs lignes existantes d'une table. La syntaxe est la suivante : UPDATE nom table SET nom col 1 = expression 1, nom col 2 = expression 2 ... nom col p = expression p WHERE predicat Les valeurs des colonnes nom col1, nom col2, ..., nom colp sont modiees dans toutes les lignes satisfaisant au predicat. En l'absence d'une clause WHERE, toutes les lignes sont mises a jour. Les expressions expression1, expression2,... peuvent faire reference aux anciennes valeurs de la ligne. Exercice 8. Augmenter de 1% les taxes appliquees au prix des voitures. 4.3 Suppression de lignes La commande DELETE permet de supprimer des lignes d'une table. La syntaxe est la suivante : DELETE FROM nom table WHERE predicat ; Toutes les lignes pour lesquelles predicat est evalue a vrai sont supprimees. En l'absence de clause WHERE, toutes les lignes de la table sont supprimees. Exercice 9. Supprimer tous les voitures dont le proprietaire est M. Paul Dupont. Lors de la correction, une grande attention sera portee a la clarte des reponses et la presentation du rapport. 5