Tp2 BD (LDD)
(Manipulation d’une BD en mode commande (SQL))
Modification de la structure d’une base de données :
1. Modifier la structure d'une table :
C’est grâce à la close ALTER TABLE qu’on peut modifier la structure d’une table.
Elle permet les modifications suivantes sur la structure d'une table existante :
Syntaxe :
ALTER TABLE Nom_table
• Ajout de nouvelles colonnes, [ADD COLUMN (Nom_colonne Type_donnee)]
• Modification de colonnes, [MODIFY Nom_colonne Type_donnee]
• Suppression de colonnes, [DROP COLUMN Nom_colonne]
• Ajout de contraintes d'intégrité, [ADD CONSTRAINT Nom_contrainte]
• Suppression de contraintes d'intégrité, [DROP CONSTRAINT Nom_contrainte]
• Activation ou désactivation de contraintes d'intégrité. [ENABLE|DISABLE nom_contrainte]
Exemples:
• Pour ajouter une colonne Tel à la table clients : ALTER TABLE clients ADD COLUMN (tel int(8) ) ;
• Pour modifier le type de la colonne âge en type date : ALTER TABLE clients MODIFY Age DATE;
• Pour supprimer la colonne email de la table clients : ALTER TABLE clients DROP COLUMN email ;
• Supposons que la table clients a été crée sans clé primaire, pour ajouter la contrainte d’intégrité clé primaire pour cette
table on utilise la commande suivante : ALTER TABLE clients ADD PRIMARY KEY (cin) ;
• Pour supprimer la clé primaire de la table command : ALTER TABLE command DROP PRIMARY KEY ;
• Pour désactiver une contrainte d'intégrité on utilise l’option DISABLE. Lorsqu'une contrainte est désactivée, le SGBD
ne va plus effectuer le contrôle imposé par cette contrainte. Par exemple pour désactiver la clé primaire de la table
clients : ALTER TABLE clients DISABLE PRIMARY KEY ;
Lorsque cette clé primaire est référencée dans une ou plusieurs autres tables, il faut supprimer les clés étrangères dans
les tables qui s'y référent avant de procéder à la suppression de la clé primaire.
-1-
• L'option ENABLE permet de réactiver une contrainte d'intégrité. Pour réactiver la clé primaire de la table clients :
ALTER TABLE clients ENABLE PRIMARY KEY ;
2. 2-La suppression d'une table :
Elle se fait en suivant la syntaxe suivante:
DROP TABLE Nom_table.
Exemple: Pour supprimer la table clients :
DROP TABLE clients ;
Exercice 1 : (Manipulation des colonnes) (LDD)
On va travailler sur la même base de données de l’exercice 1 du TP1 (Gestion_Elève).
Représentation graphique : ELEVE DEVOIR MATIERE
Id_elv Id_elv# Id_mat
nom Id_mat# Nom_mat
prenom note
date_naiss
A/ Ajout d’une colonne :
Q1/ ajouter à la table ‘ELEVE’ la colonne ‘CIN’ de type chaine de caractères (taille =8)
B/Suppression d’une colonne :
Q2/ Supprimer la colonne ‘date_naiss’ de la table ‘ELEVE’
C/Ajout d’une contrainte :
Q3/ Rendre la colonne ‘CIN’ clé primaire de la table ‘ELEVE’
D/ suppression d’une contrainte :
Q4/ supprimer la contrainte clé primaire de la table ‘ELEVE’
E/ Modification des propriétés d’une colonne :
Q5/ Modifier le type de la colonne ‘Note’ de la table ‘DEVOIR’ par le type entier (de 2 chiffres)
F/ Activer ou désactiver une contrainte :
Q6/ Désactiver la contrainte clé primaire de la table ‘ELEVE’
Q7/ Réactiver la contrainte clé primaire de la table ‘ELEVE’
-2-
G/ Suppression d’une table :
Q8/ supprimer la table ‘DEVOIR’
Exercice 2 :
Soit la base de données « Location de voitures » définit par les tables suivantes :
CLIENT (NCIN_Cli, Nom_Cli, Prenom_Cli, adresse_Cli, ville)
VEHICULE (immat_Vehicule, marque, model, date_acq)
LOCATION (immat_Vehicule# , NCIN_Cli #, date_Loc, duree_Loc,cout_loc)
1. Ouvrir «MYSQL ». (easyphp-administration-administrer mysql)
2. Créer une nouvelle base de données nommée « Location de voitures »
3. Créer les tables CLIENT, VEHICULE et LOCATION en précisant la clé primaire pour chacune d’elles.
Caractéristiques obligatoire Valide si
Champs Types taille
Table
NCIN_Cli texte 8 Oui
Nom_Cli Texte 20 oui
CLIENT Prenom_Cli Texte 20 oui
Adresse_Cli Texte 50 non
Ville Texte 20 non
immat_Vehicule Texte 10 oui
VEHICULE Marque Texte 20 oui (1)
Model Texte 20 oui
Date_acq numérique 4 oui
immat_Vehicule Texte 10 oui (2)
NCIN_Cli texte 8 oui (3)
LOCATION
Date_loc date <= aujourd’hui()
Duree_loc numérique 3 >0
Cout_loc decimal 8.3 >0
(1) Les valeurs de la colonne marque sont inclues dans l’intervalle
["peogeot","renault","Fiat","Opel","volkswagen","citroen"]
-3-
(2) Les valeurs de immat_vehicule dans la table location doivent exister dans la table véhicule
(3) Les valeurs de NCIN_cli de la table location doivent exister dans la table client
4. Ajouter à la table Client une colonne Tel_cli de type texte et de taille 10 caractères
5. Modifier le type de la colonne Tel_cli de la table client en numérique de taille 8 chiffres
6. Supprimer la colonne adresse_cli de la table Client
7. Ajouter une contrainte pour la colonne DATE_acq de la table véhicule pour qu’elle soit comprise entre 1990 et 2016
8. Ajouter la valeur par défaut « Tunis » à la colonne ville de la table Client
9. Supprimer la clé primaire de la table location puis définir les 3 colonnes NCIN_Cli, Immat_vehicule et date_loc
comme clé primaire
10. Désactiver la contrainte clé primaire de la table client
11. Réactiver cette contrainte
Créer une table loc puis la supprimer
-4-
Prof : Zomiti Henda Classe : 3ème SI
Correction Tp2
Exercice 1 :
Q1/ ALTER TABLE ELEVE ADD COLUMN (CIN int(8) ) ;
Q2/ ALTER TABLE ELEVE DROP COLUMN date_naiss ;
Q3/ ALTER TABLE ELEVE ADD PRIMARY KEY (CIN) ;
Q4/ ALTER TABLE ELEVE DROP PRIMARY KEY ;
Q5/ ALTER TABLE ELEVE MODIFY Note INT(2);
Q6/ ALTER TABLE ELEVE DISABLE PRIMARY KEY ;
Q7/ ALTER TABLE ELEVE ENABLE PRIMARY KEY ;
Q8/ DROP TABLE clients ;
Exercice 2 :
3. CREATE TABLE Client(
NCIN_Cli VARCHAR(8) PRIMARY KEY,
Nom_Cli VARCHAR(20) NOT NULL,
Prenom_Cli VARCHAR(20) NOT NULL,
Adresse_Cli VARCHAR(50) NULL,
Ville VARCHAR(20) NULL );
CREATE TABLE Vehicule( immat_Vehicule VARCHAR(10) PRIMARY KEY,
marque VARCHAR(20) NOT NULL CHECK( marque in ('Peugeot','Renault','Fiat','Opel',
'Volkswagen', 'Citroën')),
model VARCHAR(20) NOT NULL,
date_acq INT(4) NOT NULL );
5
Prof : Zomiti Henda Classe : 3ème SI
CREATE TABLE Location( immat_Vehicule VARCHAR(10) REFERENCES
vehicule(immat_Vehicule)ON DELETE CASCADE,
NCIN_Cli VARCHAR(8) REFERENCES Client(NCIN_Cli)ON DELETE CASCADE,
date_loc DATE CHECK(date_loc<=curdate()),
duree_loc INT(3) CHECK(duree_loc>0),
cout_loc DECIMAL(8,3) CHECK(cout_loc>0),
PRIMARY KEY(immat_Vehicule,NCIN_Cli) );
4. ALTER TABLE Client ADD COLUMN (Tel_Cli VARCHAR(10) );
5. ALTER TABLE Client MODIFY COLUMN Tel_Cli INT(8);
6. ALTER TABLE Client DROP COLUMN Adresse_Cli ;
7. ALTER TABLE Vehicule ADD CONSTRAINT Vc CHECK (Annee_Acq BETWEEN 1990
AND 2016);
8. ALTER TABLE Client MODIFY COLUMN Ville VARCHAR(20) DEFAULT 'tunis';
9. ALTER TABLE Location DROP PRIMARY KEY;
ALTER TABLE Location ADD PRIMARY KEY (immat_Vehicule,NCIN_Cli,date_loc);
10. ALTER TABLE Client DISABLE PRIMARY KEY;
11. ALTER TABLE Client ENABLE PRIMARY KEY;
12. DROP TABLE Location ;