Vous êtes sur la page 1sur 6

T.

S en Informatique Le Langage SQL CHAPITRE 04


Option: Base de Données A) Description d'une Base de Données
Prof : Mr BENSAHA Année: 2019-2020

Rappel : une Base de Données (B.D) est un grand ensemble de données, où les données sont
organisées très rigoureusement (exactement) sur des supports de stockage afin que l’on puisse
facilement les manipuler et les consulter. Le logiciel qui s’occupe de stocker ces masses de données,
de les manipuler et de les consulter s’appelle S.G.B.D.
Les S.G.B.D qui respectent le modèle relationnel sont des S.G.B.D Relationnels : exemple- FoxPro,
SyBase, Paradox,…
1) Introduction:
Le langage S.Q.L (Structured Query Language) ou Langage Structuré des Requêtes a été
développé au milieu des années 70 par I.B.M (System R).
en 1979 la société ORACLE Corporation est le 1er à commercialisé un SGBDR comprenant
une implémentation intégrée de SQL. le langage SQL est un langage non procédural, il est dit langage
ensembliste ou algébrique.
2) Caractéristiques:
Le langage S.Q.L se compose de deux (02) principaux modules (parties): le LDD (langage de
description de données) et le LMD (langage de manipulation de données); il permet ainsi:
- la définition des données (Create Table, create Index, Alter table, Drop, Rename,...);
- la M.A.J des données (Insert, UpDate, Delete);
- l'interrogation des données (l'ordre SELECT);
- le contrôle et sécurité des données (Intégrités, droits d'accès, verrous, cryptage): "Grant, Revoke,
Lock, Block....etc"
- la programmation: procédures stockées, fonctions, ...etc.
3) le Module L.D.D. (Langage de Description de Données): Il permet de décrire:
 Le schéma des relations (tables)
 Les domaines des attributs (types des champs)
 Les contraintes d'intégrité
 La gestion des autorisations
 La gestion du stockage physique
 Les index associés à chaque relation (table).
3.1) Domaines (Types de Données):
 Char(n) : chaîne de caractères de taille fixe n
 VarChar(n) : chaîne de caractères de taille variable mais inférieure à n
 Int : Entier (un sous ensemble fini des entiers, dépend de la machine)
 Smallint : Entier court. LongInt
 Decimal (p,d) ou Numeric(p,d) : Réel codé sur p chiffres de la partie entière et d chiffres de la décimale.
 Real ou Float: Un réel flottant.
 Date : (jours, mois, année)
 Time : HH :MM :SS (heure, minute, seconde)

Les valeurs nulles (NULL) sont possibles dans tous les domaines. Pour déclarer qu'un attribut ne doit pas
être nul, il faut rajouter NOT NULL
************************************************************************
3.2) Création des Tables:
Syntaxe:
Create Table <NomTable> (Col1 Type [contrainte de champs] [,Col2 Type [contrainte de champs]], .... )
Contrainte de champs:
Null | Not Null
Default <valeur par défaut>
Check( <conditions sur le champ>)
Constraint <NomContrainte> Primary Key
Constraint <NomContrainte> Foreign Key REFERENCES <Table_Source>(Clé primaire)
[ON DELETE [ UPDATE| CASCADE | RESTRICT | SET NULL]
Signification:
 Constraint <NomContrainte> Check (<condition(s) sur le champs>):
Précise une ou plusieurs conditions apportées sur le champs (tel que la note d'un module doit
être comprise entre 0 et 20 ).
 Constraint <NomContrainte> Primary Key: défini une contrainte de clé primaire
 Constraint <NomContrainte> Foreign Key: défini une contrainte de clé étrangère et précise sa
table de référence
ON DELETE CASCADE: Si un enregistrement est supprimée, alors les enregistrements (lignes) dans l'autre
table associée sont supprimées.
ON DELETE RESTRICT : Le système refuse la suppression d'un enregistrement s'il y a des enregistrement
qui lui sont rattachées dans l'autre table associée. C'est l'option est par défaut.
ON DELETE SET NULL: Si un enregistrement est supprimée, alors la clé étrangère dans l'autre table prend
la valeur NULL.
Exemple: Cet exemple montre la définition complète des tables avec quelques descriptions des
contraintes pour les 2 tables (SERVICE, EMPLOYES ) crées dans la base de données
PERSONNEL.
 Créez la table « SERVICE »
USE Personnel
Create Table SERVICE ( NumService Smallint Not Null Constraint Pk1 Primary Key, NomService
Varchar (20) NOT NULL DEFAULT 'Personnel' )
 Créez la table “EMPLOYES” + contraintes d’integrités
Use personnel
Create Table Employes (
Numeroemp varchar(10) CONSTRAINT PK2 Primary Key , nom varchar(20) NOT NULL,
Prenom varchar(30) NOT NULL, NumService smallint NOT NULL
Constraint PK3 FOREIGN KEY REFERENCES SERVICE (NumService) on delete Cascade )
3.3) Création des Index: un Index ou fichier Index est fichier associé ou attaché à la table il sert à
réorganiser les enregistrement dans l'ordre voulu et cela grâce à la clé primaire; ainsi il joue un rôle
important dans les opérations de recherche ou M.A.J des tables et surtout le volume des informations
stocké devient très important (grand).
On peut indexer une table sur 01 ou plusieurs champs par ordre d’importance mais on ne peut
pas le faire sur une vue.
l’ordre CREATE [Unique] Index <NomIndex> On <NomTable> (Coli [Asc|Desc],….)

permet de créer un index pour une table donnée.


Exemple: Create Unique Index I_Service On Service (NumService)

Suppression d’Index : la requête DROP Index <Nom Index> … permet de supprimer un Index de la table.

Exemple : Drop Index I_Service

3.4) Création de Vue (Table logique ou Virtuelle):


Une vue est une table crée dans la mémoire et qui consiste à extraire des données de la table
physique ou de regrouper les données de plusieurs tables dans une seule table (vue) dans le but
d'effectuer des recherches ou des statistiques sur les données stockées dans la Base de Données.
Ou Une vue est une fenêtre dynamique sur la B.D, dont les données ne sont pas physiquement stockées
mais qui se réfèrent à des données stockées dans d’autre(s) table(s).

On peut créer plusieurs vues à partir d’une même table, comme on peut créer une vue à partir de
plusieurs tables.

Syntaxe: Create View <Nom_Vue> [<liste de champs>] As <Question>


Cette requête permet de créer une vue à partir d’une ou plusieurs tables.

Exemple: Create View Cli_Mosta As Select * from Client


Where Ville = 'Mosta'
Cette requête permet de selectionner dans la vue la liste des clients habitant Mosta
Suppression de Vue : pour supprimer une vue on utilise la requête DROP
Syntaxe: Drop View <nom_vue>
Exemple: Drop View Cli_Mosta
3.5) Modification ou Mise à Jour de la structure d'une table : Alter table
On peut modifier dynamiquement la définition d'une table grâce a la commande ALTER TABLE.
Deux types de modifications sont possibles : ajout d'un champ (colonne) et modification d'un champ
(colonne). On peut également supprimer un ou plusieurs champs de la table ainsi, et on peut aussi
supprimer une ou plusieurs contraintes de la table.
Syntaxe
ALTER TABLE nom_table ADD nom_col1 TYPE1, nom_col2 TYPE2, ...,
|Alter nom_col1 TYPE1, nom_col2 TYPE2, ...,
Drop column nom_col1, nom_col2, ... ;
Drop Constraint <nom-contrainte>,…
3.6) Renommer une table : Rename <ancien_nom> to <nouveau_nom> ;
3.7) supprimer une table : Drop Table <nom_table> ;
T.D N°01

Exercice 1: Soit la B.D suivante : SOCIETE (NSoc, NomSoc, VilleSoc)


INDIVIDU (NI, Nom, VilleI, Nationalite)
PAYE (NI, NSoc , DateP, Salaire)
Exprimer en SQL les requêtes suivantes :
Créer les relations (tables) citées ci-dessus en précisant les indications suivantes :
a) NSoc : type numérique non nulle, NomSoc : type chaine de 15 caractères,
VilleSoc : type chaine de 15 caractères (ville par défaut ‘MOSTA’) ;
b) NI : type numérique non nulle, Nom : type chaine de 15 caractères,
VilleI : type chaine de 15 caractères, Nationalite : type chaine de 15 caractères
(Nationalité par défaut ‘ALGERIENNE’)
c) Date : type Date, Salaire : type réel (Compris entre 30000 et 120000 DA).

Exercice 2: Soit une B.D relationnelle formées des relations (tables) suivantes :
ENTREPRENEUR (Num-En, Nom, Prenom, NRegistre, Ville )
TRAVAUX (Num-Tr, Num_En*, Type , Cout)
Exprimer en SQL les requêtes suivantes :
Q1) créez les relations de la BD en donnant des indications selon votre choix et sans oublier la clé
primaire et la clé étrangère s’il y en a ;
Remarque : pour la clé étrangère ajouter la contrainte qui permet d’effacer en cascade les
enregistrements correspondants.
Q2) ajouter la condition suivante sur le champ Cout : Val min :200000,00 et Val max 70 00000,00 ;
Q3) créer une vue nommée Trav_Batiment dont le type de travaux est ‘Bâtiment’ et le coût
est > 3 000 000 ,00 ;

Exercice 3:
Soit la B.D F.P.J "fournisseurs-Pièce-Projet": dont les relations sont:
F(Nf, NomF, Capital, VilleF) P(NP, NomP, Poids, VilleP)
J(NJ, NomJ, VilleJ) FPJ(Nf, NP, NJ,Qte)
1) Créer les relations (tables) ci-dessus en précisant les indications suivantes:
Nf, Np, Nj : de type numérique différent de 0;
Nomf, NomP, Nomj : Type chaine de 20 caractères;
VilleF, VilleP, VilleJ : Type chaine de 10 caractères;
Poids: Type réel (Float)
Qte: Type entier court et doit être comprise entre 10 et 100
2) Ajouter à la relation P le champ couleur de type chaine de 10 caractères initialisé à 'Bleu',
PrixU de type réel.
3) supprimer de la table FPJ la contrainte sur la quantité (Qte)
Exercice 4: Soit la B.D contenant les relations (tables) suivantes :
PRODUITS (Ref, Design, Prix_U)
DEPOTS (NDep, Volume, Localite)
STOCK (Ref, NDep, Qte)
Exprimer en SQL les requêtes suivantes :
1) Créez les relations (tables) ci-dessus en précisant les types et contraintes imposées pour chaque
colonne (champ) selon votre choix ;
2) Créer un Index pour chaque relation (table) contenant la clé primaire et dont les noms des
Index sont : IP, ID et IS ;

Exercice 5: On dispose d’une B.D « Université » dont les relations (tables) sont :
ETU(n-et, nom-et, age, nationalite)
ENS(cod-ens, nom-ens, age, grade, nationalite, nomFac*)
FAC(nomFac, localite, doyen)
GroupFac(groupe, nomFac)
AFFEC(n-et, groupe)
EMPL(cod-ens, module, salle, groupe, jour, heure,)

1) Donnez le script LDD relatif à la création des tables (relations) en précisant les types comme
suit : n-et, cod-ens : type entier ≠ 0 ; nom-et, nom-ens, nomFac, grade, nationalite, module,
salle, jour: type chaine de n caractères ; age, heure: type entier court
2) Ajouter dans ETU et dans ENS les colonnes : ville-et, ville-ens de type chaine de caractères et
ajouter de même dans ENS la colonne salaire de type réel et doit être compris entre 35000.00
et 150 000.00
3) Supprimer de la table ETU la colonne Nationalite et de la table ENS la contrainte sur le salaire
4) Modifier le nom de relation ENS par le nom PROF
5) Créer un index pour la relation ETU nommé I-ETU contenant la clé primaire, ainsi un index
pour la relation ENS nommé I-ENS contenant aussi la clé primaire
6) Créer une vue des enseignants de la faculté « MEDECINE » dont l’âge est ≥ 30 ans et de
Grade « Chirurgien »

Exercice 6 :
Soit le Modèle Relationnel suivant relatif à la gestion des notes annuelles d’une promotion
d’étudiants :
ETUDIANT ( N-Etu, Nom, Date-Nais , Nationalite )
MATIERE (Cod-M, LibelléMat, Coeff )
EVALUER (N-Etu, Cod-M, Date, Note )
Q1) créer les relations (tables) ci-dessus en précisant les indications suivantes :
N-Etu (clé primaire) : type entier <>0 ; Nom, Cod-M, LibelléMat, nationalite : type chaîne de 15
caractères ;
Date-Nais, Date: type Date ; Coeff : type Octet (entier court) ; Note : type Réel (5 chiffres dont 2
décimales ;
Q2) créer un INDEX pour chaque relation contenant la clé primaire trié dans l’ordre descendant sur le
1er champ.
Q3) ajouter à la relation Etudiant le champ Ville initialisé par défaut à ‘Mosta’, et supprimer le champ
Nationalité.
Modifier dans la relation EVALUER le type de champ Cod_M qui est 1 chaine de 15 car au type
entier court.
Ajouter une contrainte sur le champ Note dont les valeurs sont entre 00,00 et 20,00
Q4) Créer une vue nommé Et_Admis à partir de la table EVALUER contenant tous les étudiants dont
la note ≥ 10

Exercice 7 :
Soit Soit la Base de Données suivante représentant les activités des restaurants:

RESTAURANT(Cod_Resto, NomR, VilleR, Jour_Fermeture)


CUISINIER(N°SS, NomC, Adresse, Nationalite, Grade)
MENUS(Cod_Resto, N°ss, NomPlat, Prix, Base)

1) Créer les relations (tables) citées ci-dessus en précisant les indications suivantes :
a. Cod_Resto, N°SS: type numérique
b. NomR, VilleR, NomC, Adresse, Nationalite, Grade, NomPlat, Base: type chaine
de 10 à 20 caractères, Jour_Fermeture de type Entier, Prix: réel;
c. Les données de Cod_Resto,N°SS sont des valeurs non nulles. VilleR par défaut
'MOSTA' et la Base par défaut 'Soupe'. Le Prix est comprise entre 100 et 20000
DA;
2) ajouter à la relation Restaurant le champ: Nbr-etoiles de type chaine de caractères ; modifier
Jour_Fermeture en type chaine de 10 caractères.
3) créer une vue qui contient tous les cuisiniers Algériens ayant le grade "Chef Cuisinier" et
travaillant dans la ville "ORAN";
4) créer une vue des restaurant 4 * qui ne servent pas de plat à base de viande.

Vous aimerez peut-être aussi