You are on page 1of 10

Atelier Bases de Données TP SQL

I. Introduction

Le langage SQL (Structured Query Langage: langage de requêtes structurées) est un


langage non procédural, conçu par IBM dans les années 70. SQL est basée sur
l’algèbre relationnelle (opérations ensemblistes et relationnelles). SQL constitue le
standard aux bases de données relationnelles. Ce langage permet l’accès aux données et
se compose de quatre sous-ensembles
ensembles :

 Le Langage de Définition de Données : LDD (Data Definition Language DDL) : Ce


langage permet la définition et la mise à jour de la structure de la base de données
(tables, attributs, vues, index, ...).
 Le Langage d’Interrogation de Données : LID : Ce langage permet de rechercher des
informations utiles en interrogeant la base de données. Certains considèrent ce
langage comme étant une partie du LMD.
 Le Langage de Manipulation de Données : LMD (Data MManipulation
anipulation Language DML) :
Ce langage permet de manipuler les données de la base et de les mettre à jour.
 Le Langage de Contrôle de Données : LCD (Data Control Language DCL) : Ce
langage permet de définir les droits d’accès pour les différents util
utilisateurs
isateurs de la base
de données, donc il permet de gérer la sécurité de la base et de confirmer et
d’annuler les transactions.

La figure ci-dessous
dessous présente les commandes de chaque langage :

1
Atelier Bases de Données TP SQL

 CREATE : création des objets.


 ALTER : modification de la structure des objets.
 DROP : suppression des objets.
 SELECT : consultation de données.
 INSERT : insertion des lignes à une table.
 UPDATE : modification de données.
 DELETE : suppression de données.
 GRANT: permet d'accorder des droits à un utilisateur.
 REVOKE : permet de retirer des droits à un utilisateur.

II. Base de données

Cette base de données décrit partiellement l’activité des employés rattachés à des
départements et travaillant dans des projets.

1. Tables de la base de données


1.1 Table EMPLOYE

EMPLOYE (MATRICULE, ENOM, FONCTION, DATEREC, SALAIRE, COMMISSION,


NUMDEPT#)

Chaque employé est caractérisé par un matricule (identifiant), possède un nom, une
fonction (PRESIDENT, MANAGER, ANALYSTE, etc.), une date de recrutement, un salaire,
peut avoir une commission, et appartient à un département.

1.2 Table DEPARTEMENT

DEPARTEMENT (NUMDEPT, DNOM, LOCALITE)

Chaque département est caractérisé par un numéro (identifiant), et a un nom et une


localité.

1.3 Table PROJET

PROJET (NUMPROJ, PNOM, EMPLACEMENT)

Chaque projet est caractérisé par un numéro (identifiant), et a un nom et un


emplacement.

1.4 Table TRAVAILLER


TRAVAILLER (MATRICULE#, NUMPROJ#, NBRE_H)

2
Atelier Bases de Données TP SQL

Décrit le lien (plusieurs à plusieurs) entre les employés et les projets. NBRE_H représente
le nombre d’heures travaillées pour chaque employé dans chaque projet.

III. Création de la base de données

La création de la base de données se fait en plusieurs étapes :

1. Création des tables


tables:

SQL permet de créer des relations sous forme de tables. Une commande de
création permet donc de préciser le nom de la table et de définir les éléments de la table
correspondant aux colonnes ou aux contraintes.

Syntaxe:
CREATE TABLE <nom de la table> (nom_colonne_1 type_colonne_1,
nom_colonne_2 type_colonne_2,....,
nom_colonne_ntype_colonne_n) ;

Type des données :

3
Atelier Bases de Données TP SQL

-----------------------------------------
CREATE TABLE EMPLOYE
( MATRICULE NUMBER(4),
ENOM VARCHAR2(30),
FONCTION VARCHAR2(30),
DATEREC DATE,
SALAIRE NUMBER(8,3),
COMMISSION NUMBER(8,3),
NUMDEPT NUMBER(2)
) ;

CREATE TABLE DEPARTEMENT


(
NUMDEPT NUMBER(2),
DNOM VARCHAR2(40),
LOCALITE VARCHAR2(30)
) ;

CREATE TABLE PROJET


(
NUMPROJ NUMBER(3),
PNOM VARCHAR2(40),
EMPLACEMENT VARCHAR2(30)
) ;
CREATE TABLE TRAVAILLER
(
MATRICULE NUMBER(4),
NUMPROJ NUMBER(3),
NBRE_H NUMBER(5)
) ;

2. Ajout des contraintes d’intégrité :

Une contrainte d’intégrité est une règle qui permet de contrôler la validité et la cohérence
des valeurs entrées dans les différentes tables de la base.

Contraintes d’intégrité sur un attribut : La contrainte porte sur un seul attribut. Ces
contraintes sont :

 NOT NULL : Spécifie que pour toute occurrence, l’attribut doit avoir une
valeur (la saisie de ce champ est obligatoire)
 UNIQUE : Toutes les valeurs de l’attribut sont distinctes.
 PRIMARY KEY: L’attribut est une clé primaire pour la table.
 CHECK: C’est une contrainte associée à une condition qui doit être vérifiée
par toutes les valeurs de l’attribut (domaine des valeurs de l’attribut).
 REFERENCES table (attribut): Il s’agit d’une contrainte d’intégrité
fonctionnelle par rapport à une clé ; chaque valeur de l’attribut doit exister
dans la table dont l’attribut est
4 référencé. On utilise cette contrainte pour les
clés étrangères.
Atelier Bases de Données TP SQL

Contraintes d’intégrité sur une table : La contrainte porte sur un ensemble d’attributs
d’une même table. Ces contraintes sont :

 UNIQUE (attri, attrj,…) : L’unicité porte sur le n-uplet des valeurs.


 PRIMARY KEY (attri, attrj,…) : Clé primaire de la table (clé composée).
 FOREIGN KEY (attri, attrj, ...) REFERENCES table (attrm, attrn, ...) [ON
DELETE CASCADE] : Désigne une clé étrangère sur plusieurs attributs.
L’option ON DELETE CASCADE indique que la suppression d’une ligne de la
table de référence va entraîner automatiquement la suppression des lignes
référencées.

Syntaxe :

 Clé primaire :

CONSTRAINT nom_contrainte PRIMARY KEY (attribut_clé [, attribut_clé2, …])


 Clé étrangère :

CONSTRAINT nom_contrainte FOREIGN KEY (attribut_clé_ét) REFERENCES


table(attribut)
 Contrainte de domaine :

CONSTRAINT nom_contrainte CHECK (condition)

/*-----------------------------------------------------------
CONTRAINTES CLES PRIMAIRES
--------------------------------------------------------------*/
ALTER TABLE EMPLOYE
ADD CONSTRAINT PK_EMPLOYE
PRIMARY KEY (MATRICULE);

ALTER TABLE DEPARTEMENT


ADD CONSTRAINT PK_DEPARTEMENT
PRIMARY KEY (NUMDEPT);

ALTER TABLE PROJET


ADD CONSTRAINT PK_PROJET

5
Atelier Bases de Données TP SQL

PRIMARY KEY (NUMPROJ);

ALTER TABLE TRAVAILLER


ADD CONSTRAINT PK_TRAVAILLER
PRIMARY KEY (MATRICULE,NUMPROJ);
/*-----------------------------------------------------------
CONTRAINTES CLES ETRANGERES
--------------------------------------------------------------*/

ALTER TABLE EMPLOYE


ADD CONSTRAINT FK_EMPLOYE
FOREIGN KEY (NUMDEPT)
REFERENCES DEPARTEMENT(NUMDEPT) ;

ALTER TABLE TRAVAILLER


ADD CONSTRAINT FK_TRAVAILLER_EMP
FOREIGN KEY (MATRICULE)
REFERENCES EMPLOYE (MATRICULE);

ALTER TABLE TRAVAILLER


ADD CONSTRAINT FK_TRAVAILLER_PROJ
FOREIGN KEY (NUMPROJ)
REFERENCES PROJET (NUMPROJ);

3. Chargement du contenu des tables

L’insertion de tuples

L’ajout de tuples se fait à l’aide de la commande INSERT. Il faut fournir le nom d’une relation
et une liste de valeurs pour le tuples. Les valeurs doivent être écrites dans le même ordre
que celui dans lequel ont été spécifiés les attributs auxquels elles correspondent lors de la
création de la table avec CREATE TABLE.

Syntaxe :

INSERT INTO nom_de_la_table (attribut1, attribut3, attributN) VALUES


(valeur_attribut1, valeur_attribut3, valeur_attributN) ;

/*==============================*/
/* Chargement Table DEPARTEMENT */
/*==============================*/

INSERT INTO DEPARTEMENT VALUES (10,’FINANCE’,’PARIS’) $;

INSERT INTO DEPARTEMENT VALUES (20,’ADMINISTRATIF’,’BRUXELLES’);

INSERT INTO DEPARTEMENT VALUES (30,’TECHNIQUE’,’LONDRES’);

6
Atelier Bases de Données TP SQL

INSERT INTO DEPARTEMENT VALUES (40,’OPERATIONNEL’,’ATHENES’);

/*=========================*/
/* Chargement Table PROJET */
/*=========================*/

INSERT INTO PROJET VALUES (10,’CONSTRUCTION D"UN


CENTRE’,’PARIS’) ;

INSERT INTO PROJET VALUES (20,’PROGRAMME ROUTE DE


L"EAU’,’BENIN’) ;

INSERT INTO PROJET VALUES (30,’ALIMENTATION EN EAU


POTABLE’,’HAITI’) ;

INSERT INTO PROJET VALUES (40,’FORAGE PUITS’,’MADAGASCAR’) ;

INSERT INTO PROJET VALUES (50,’MAINTENANCE


AERONAUTIQUE’,’LONDRES’) ;

/*============================*/
/* Chargement Table EMPLOYE */
/*============================*/

INSERT INTO EMPLOYE VALUES


(7800, ’THOMAS’, ’PRESIDENT’, TO_DATE(’20-10-1980’,’dd-mm-yyyy’),
5000, null, 20);

INSERT INTO EMPLOYE VALUES


(7600, ’BLAKE’, ’MANAGER’, TO_DATE(’10-6-1981’,’dd-mm-yyyy’), 2850,
null, 30);

INSERT INTO EMPLOYE VALUES


(7780, ’CLARK’, ’MANAGER’, TO_DATE(’13-9-1985’,’dd-mm-yyyy’), 2450,
null, 10);

INSERT INTO EMPLOYE VALUES


(7566, ’JONES’, ’MANAGER’, TO_DATE(’12-4-1990’,’dd-mm-yyyy’), 2975,
null, 10);

INSERT INTO EMPLOYE VALUES


(7788, ’SCOTT’, ’ANALYSTE’, TO_DATE(’13-07-1997’,’dd-mm-rr’), 3000,
200, 30);

INSERT INTO EMPLOYE VALUES


(7902, ’LOLA’, ’SECRÉTAIRE’, TO_DATE(’23-02-2005’,’dd-mm-yyyy’),
1750, null, 20);

INSERT INTO EMPLOYE VALUES


(7450, ’SMITH’, ’AGENT’, TO_DATE(’7-2-2010’,’dd-mm-yyyy’), 800,
null, 40);

7
Atelier Bases de Données TP SQL

/*=============================*/
/* Chargement Table TRAVAILLER */
/*=============================*/
INSERT INTO TRAVAILLER VALUES (7600, 30, 50)

INSERT INTO TRAVAILLER VALUES (7450, 20,100) ;

INSERT INTO TRAVAILLER VALUES (7600, 20,20) ;

INSERT INTO TRAVAILLER VALUES (7780, 10,150) ;

NSERT INTO TRAVAILLER VALUES (7902, 10,200) ;

INSERT INTO TRAVAILLER VALUES (7600, 10,30) ;

INSERT INTO TRAVAILLER VALUES (7566, 50,400) ;

INSERT INTO TRAVAILLER VALUES (7800, 40,120) ;

INSERT INTO TRAVAILLER VALUES (7902, 50,220) ;

INSERT INTO TRAVAILLER VALUES (7600, 40,35) ;

INSERT INTO TRAVAILLER VALUES (7566, 30,40);

 Modification d’une table

Ajouter une ou plusieurs colonnes

Syntaxe : ALTER TABLE<nom_de_la_table> ADD (nom_colonne1 type_colonne1,


nom_colonne2 type_colonne2,......,
nom_colonne n type_colonne n);
Exemple : ALTER TABLE EMPLOYE ADD (age number (3)) ;

Modifier le type ou une autre propriété d’une colonne

Syntaxe :
ALTER TABLE nom_table MODIFY (nom_colonne nouveau_type et/ou nouvelle_propriété) ;

Exemple : ALTER TABLE EMPLOYE MODIFY (ENOM VARCHAR2(10));

 Renommage une table

Syntaxe : RENAME nom_table TO nouveau_nom_table;


Exemple : RENAME EMPLOYE TO AGENT ;

8
Atelier Bases de Données TP SQL

 Suppression d’une table

Syntaxe : DROP nom_table;


Exemple : DROP EMPLOYE ;

IV. Mise à jour de la base de données (UPDATE, DELETE,


Insert)

 Mise à jour d’un attribut

La commande UPDATE sert à modifier les valeurs des attributs d’un ou plusieurs tuples
sélectionnés.

Syntaxe:

UPDATE nom_de_la_table
SET attribut = nouvelle_valeur
WHERE condition ;

Remarque
La clause WHERE sélectionne les tuples à modifier.

La clause SET spécifie les attributs à modifier et leurs nouvelles valeurs.


Exemple :
UPDATE Employe
SET Salaire = 950
WHERE Matricule = 7800 ;

 Suppression de tuples

La commande DELETE supprime des tuples d’une relation. La clause WHERE sert à
sélectionner les tuples à supprimer.

Syntaxe:

DELETE FROM nom_de_la table WHERE condition;


Exemple :

DELETE FROM DEPARTEMENT WHERE DNOM= ‘FINANCE’;

9
Atelier Bases de Données TP SQL

Insertion de tuples :

(Voir section précédente)

Exercice 1 :
1. Augmenter le salaire de tous les employés de 10%.
2. Changer le département finance par le département comptabilité-finance.
3. Supprimer l’employé ayant comme fonction PRESIDENT.
4. Modifier le nom et la localité de département numéro 20. Affecter la valeur
‘Personnel’ pour le nom du département et la valeur ‘Paris’ pour la localité du
département.
5. Annuler tous les changements de la base.

10

You might also like