Vous êtes sur la page 1sur 6

TP3 - CRÉATION ET MISE À

JOUR
 Vue d'ensemble

Question à laquelle ce e activité va perme re de répondre :


- Comment écrire un script SQL pour créer ou modi er une base de données ?
Objectifs pédagogiques visés :
- Manipuler les mots-clefs CREATE TABLE et ALTER TABLE
- Mettre à jour une base de données avec les mots-clefs INSERT et UPDATE
- Identi er les clefs primaires et relationnelles et les dé nir correctement lors de la
création (ou de la modi cation) d’une base de données

 Activités à réaliser

Connectez-vous à la base de données de votre environnement en suivant le


guide de connexion.

Etude de cas : les cabinets médicaux


Dans ce TP nous allons nous intéresser à la conception d’une base de données pour gérer un
réseau de cabinets médicaux. La première étape est de créer une table pour gérer le
personnel non-soignant du réseau. A noter que chaque membre du personnel n’est affecté
qu’à un seul cabinet.

CABINET (id, nom, adresse)


PERSONNEL (id, nom, prenom, fonction, cabinet)

Création d’une table

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
La syntaxe suivante permet de créer une table dont la clef primaire est id et dont
attribut2 est une clef référentielle vers une autre table :

CREATE TABLE nom


(
id type primary key,
attribut1 type propriete_facultative,
attribut2 type propriete_facultative REFERENCES table_referencee
(attribut_table_referencee),
...
);

type peut être remplacé par :

serial : a n de créer une clef au format d’un entier qui s’auto-incrémente tout seul à
chaque insertion d’une ligne dans la table
un autre type numérique
une chaîne de caractère
une date
.. et bien d’autres choses

propriete_facultative peut être remplacé par :

UNIQUE pour spéci er que la valeur ne peut pas se répéter


NOT NULL pour spéci er que la valeur ne peut pas être manquante.

Si (attribut_table_referencee) n’est pas spéci é, la clef référentielle pointera


automatiquement sur la clef primaire de la table référencée.

Question 1 : Le schéma logique proposé dans le paragraphe « Étude de cas » ne permet


pas d’avoir une base de données intègre. Pourquoi ?

Question 2 : Dé nissez les contraintes de clés primaires et de clés référentielles sur le


schéma de la base de données pour corriger ce problème.

Question 3 : Écrivez les requêtes SQL permettant de créer les tables CABINET et
PERSONNEL .

Clefs composites
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
 Dé nition

Clef composite
On dit qu’une clef est composite si elle est composée de plusieurs attributs.

CREATE TABLE nom_table


(
attribut1 type,
attribut2 type,
attribut3 type propriete_facultative,
attribut4 type propriete_facultative,
...,
primary key(attribut1, attribut2),
foreign key (attribut3, attribut4) references nom_table_referencee
(attribut1_table_referencee, attribut2_table_referencee),
);

Insertion dans une table


La requête suivante permet d’insérer les valeurs de tous les attributs dans une ligne de la
table :

INSERT INTO nom_table VALUES (valeur1, valeur2, valeur3);

Si vous ne désirez insérer que les valeurs de certaines colonnes utilisez la syntaxe :

INSERT INTO nom_table (attribut1, attribut3, attribut9) VALUES (valeur1,


valeur3, valeur9);

Si pour la clef primaire vous avez spéci é le type serial , ajoutez la valeur DEFAULT
dans la commande INSERT .

Question 4 : Créez un premier cabinet médical.


Question 5 : Insérez deux membres du personnel : M. Thomas Dupont (dont le poste
n’est pas encore connu) et une secrétaire médicale Mme Elisabeth Aimée.

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Suppression de lignes et destruction
d’une table
DELETE FROM nom_table WHERE condition;

DROP TABLE nom_table;

Attention si la table à détruire est référencée, il faut tout d’abord détruire la ou les tables qui
la référence.

Question 6 : Mme Aimée ne souhaite pas rester à l’issue de sa période d’essai.


Supprimez-la de la base de données.

Mise à jour d’une ligne


UPDATE nom_table SET attribut1 = valeur1, attribut2 = valeur2, ...,
WHERE condition;

Question 7 : M. Dupont est affecté à une poste de brancardier. Mettez à jour la base de
données.

Modification de la structure d’une


table
Ajout d’un a ribut

ALTER TABLE nom_table ADD COLUMN nom_colonne type contrainte;

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Ajout d’une clef primaire

ALTER TABLE nom_table ADD CONSTRAINT nom_clef_PK PRIMARY KEY


(attributs);

Ajout d’une clef référentielle

ALTER TABLE nom_table ADD CONSTRAINT nom_clef_FK


FOREIGN KEY (liste_attributs_clef_referentielle) REFERENCES
nom_table_referencee(liste_attributs_clef_primaire);

 Activités à réaliser

Il est possible de supprimer une contrainte un utilisant le mot-clef DROP CONSTRAINT


à la place de ADD CONSTRAINT .

Question 8 : Dé nissez la ou les clefs à ajouter à la table MEDECIN a n que les


médecins puissent être affectés à un CABINET . Écrivez ensuite la requête SQL
nécessaire pour modi er la table MEDECIN .

Vérification de l’intégrité des


données
Question 9 : Pour une clef primaire, proposez une requête INSERT et une requête
UPDATE qui testent le bon comportement du système en matière de contrainte
d’intégrité.

Question 10 : Pour une clef référentielle proposez une requête INSERT et une
requête UPDATE qui testent le bon comportement du système en matière de
contrainte d’intégrité.

 Activités à réaliser

Après avoir réalisé le TP vous pouvez consulter la correction.

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com

Vous aimerez peut-être aussi