Vous êtes sur la page 1sur 34

M19 : SGBD 1

Algè
Algèbre Relationnel

Formateur : Driouch Bouazza


Etablissement : OFPPT/CFMOTI
11/11/2009 V1.1
http://www.driouchb.0fees.net/

DRIOUCH B. 1

Plan
Historique SGBD
• Définition
• Model hié
hiérarchique
• Model Ré
Réseau
• Model Objet
• Model Relationnel
Algè
Algèbre Relationnel
• Opé
Opérateurs ensemblistes
• Opé
Opérateurs unaires relationnel
• Opé
Opérateurs binaires relationnel
• Arbre algé
algébrique

DRIOUCH B. 2

Quelques dé
défnitions…
fnitions…

Base de données :ensemble de données


structurées, sûres, cohérentes et
partageables simultanément.
SGBD : Ensemble (matériel) des programmes
qui permet la structuration, le stockage
et la manipulation des données.

DRIOUCH B. 3

1
Services attendus d’
d’un SGBD

D LM SGF : Système de gestion de


LD D fichier.

SGF LDD : Langage de définition de


donnée.
I NT

STOCKAGE

LMD : Langage de Manipulation de


Disque donnée.
STOCKAGE : enregistrement
SEC

BACKUP : Sauvegarde.
UP
CO
NF CK CONF : Configuration
BA
SEC : Sécurité
INT : Interactif

DRIOUCH B. 4

Modè
Modèle hié
hiérarchique
Liaison entre les objets
Client
Client de type 1 àn
Client

Client
Modèle arborescent
dont le parcours se fait
Commandes
Commandes
Commandes
Commandes
Commandes
Commandes
du père vers le fls à
l’aide de pointeurs
Lignes Lignes Lignes
Lignes Lignes
Lignes
Commande
Lignes
Commande
Commande
Commande
Lignes
Lignes
Commande
Commande
Commande
Lignes
Commande
Commande
Lignes
Commande
Commande
Complexitéimportante
Système DL1 / IBM
DRIOUCH B. Années 60 5

Modè
Modèle ré
réseau
Liaison entre les objets de
Client
Client

Client
type n àn
Client

Modèle dont le parcours se


Commandes
fait àl’aide de pointeurs
Commandes
Commandes
Commandes
Commandes
Commandes
Commandes
Articles mais en tous sens
Paternitémultiple
Lignes
Lignes
Lignes
Commande
Lignes
Commande
Commande
Commande
Système IDS2 de Bull
1968 (Bachman 62)
DRIOUCH B. 6

2
Modè
Modèle relationnel
Basésur le modèle Entité
Client Commande
Relation dérivéde la
PK IdClient PK IdCommande théorie des ensembles et de
FK1 IdClient
la logique des prédicats
Grande indépendance entre
Article
CommandeArticle
vue externe et stockage
PK,FK1 IdCommande
PK IdArticle
PK,FK2 IdArticle interne
Simplicité-Evolutivité
Théorie : Codd1972
DRIOUCH B. 7
IBM System R 1979 et DB2 1982

Modè
Modèle relationnel
• SGBDR Client / Serveur
DB2 - IBM
• UDB (Universal
(Universal Data Base Tous Syst èmes)
• DB2 400 (AS 400)
Oracle
SQL Server – Microsoft
Informix (Rachat par IBM)
MYSQL (Open Source)
• Minimiser les échanges / ré
réseau
• Programmation de la logique de MAJ
DRIOUCH B.
côté
côté serveur 8

Modè
Modèle relationnel
• SGBDR Fichier
Access
Paradox
FoxPro
• Les donné
données sont modifié
modifiées
localement / poste client
• Trafic important sur le r éseau
• Bonnes performances sur poste de
travail

DRIOUCH B. 9

3
Modè
Modèle objet mort né
né ?
• Projet O2 dé
développé
veloppé par Altair
Commercialisé
Commercialisé par O2 technologies,
Racheté
Racheté par Ardent Software puis
par Informix et retiré
retiré du marché
marché en
2000 …
• ODMG dissout en 2001
• Nouvelle norme en cours de SQL 3

DRIOUCH B. 10

Algè
Algèbre Relationnel
L'alg èbre relationnelle est un concept math ématique de
relation de la thé
théorie des ensembles .

L'alg èbre relationnelle a été inventé


inventée en 1970 par Edgar
Frank Codd,
Codd, le directeur de recherche du centre IBM de San
José
José. Elle est constitué
constituée d'un ensemble d'opé d'opérations
formelles sur les relations . Les op érations relationnelles
permettent de cr éer une nouvelle relation (table) à partir
d'opé
d'opérations élémentaires sur d'autres tables (par exemple
l'union, l'intersection, ou encore la diff érence).

Les principes de l'alg èbre relationnelle sont mis en œuvre


de nos jours par les SGBD Relationnels dont ils constituent
les fondements th éoriques.

DRIOUCH B. 11

Opé
Opérateurs ensemblistes
Union

R1 R2 R1 ∪ R2

L’union est utilis ée pour relier 2


relations uni-
uni-compatibles,
compatibles, c’c’est à dire
ayant le même nombre d ’attributs et des
attributs respectifs d éfinis sur le même
domaine.
DRIOUCH B. 12

4
Opé
Opérateurs ensemblistes
Exemple:
R1 : relation Vols
Paris - Nice

R2 : relation Vols
Brive - Marseille

∪∪
R1 R2 : liste des
Vols Paris - Nice et
Brive - Marseille

DRIOUCH B. 13

Opé
Opérateurs ensemblistes
Intersection

R1 R1 ∩ R2
R2

• R1 ∩∩R2
• L’intersection est utilisé
utilisée pour relier 2
relations uni-
uni-compatibles,
compatibles, c’ c’est à dire
ayant le même nombre d’ d’attributs et
des attributs respectifs dédéfinis sur le
même domaine.
DRIOUCH B. 14

Opé
Opérateurs ensemblistes
Exemple :

DRIOUCH B. 15

5
Opé
Opérateurs ensemblistes
Diffé
Différence

R1 R2 R1 -R2

R1 - R2
La diffé
différence est utilis ée pour relier 2 relations uni-
uni-
compatibles , c’
c’est à dire ayant le même nombre
d’attributs et des attributs respectifs d éfinis sur le
même domaine.

DRIOUCH B. 16

Opé
Opérateurs ensemblistes
Exemple :

DRIOUCH B. 17

Opé
Opérateurs unaires relationnels
Les opé
opérateurs unaires sont les op érateurs qui ne font
intervenir qu ’une seule relation.
Sé lection
La sé
sélection op ère un dé
découpage horizontal de la table.
On obtient tous les attributs pour les enregistrements
sélectionné
lectionnés.

Exemples :
liste des vols pour Nice
liste des avions qui ont plus de 200 places

DRIOUCH B. 18

6
Opé
Opérateurs unaires relationnels
Projection
La projection opè
opère un dé
découpage vertical
de la table.
On obtient tous les enregistrements pour les
attributs choisis.

Exemples :
liste des noms des pilotes
liste des modè
modèles d’
d’avions

DRIOUCH B. 19

Opé
Opérateurs binaires relationnels
Les opé
opérateurs binaires sont ceux qui font
intervenir deux relations.
Produit cart é sien
Le produit carté
cartésien consiste à rassembler
deux tables en une seule en reliant chaque
élément de l’
l’une avec tous les éléments de
l’autre.

DRIOUCH B. 20

Opé
Opérateurs binaires relationnels
Division
La division consiste à trouver la liste des valeurs
d’un attribut de R1 telles qu’
qu’il existe un élément
dans R1 pour chaque valeur de R2 pour l’l’attribut
correspondant.

Exemples:
liste des pilotes qui conduisent tous les avions
liste des avions qui vont dans toutes les villes

DRIOUCH B. 21

7
Opé
Opérateurs binaires relationnels
Jointure
La jointure consiste à rechercher entre deux
tables ayant un attribut commun (même type et
même domaine de d éfinition) tous les éléments
des deux tables pour lesquels ces attributs ont la
même valeur.
La jointure entre les tables AVION et PILOTE
consiste à rechercher toutes les informations du
pilote de chaque avion. Concr ètement elle r éalise
la concat énation des tuples (ou n-tuples)
tuples) de Avion
avec Pilote chaque fois que
AVION.PIL# = VOL.PIL#.

DRIOUCH B. 22

Fonction et Agr égats


L’algè
algèbre relationnelle est insuffisante pour
traiter de v éritables applications des bases de
donné
données, telles la suivie de production, la gestion
de budget, … il est en effet n écessaire d ’effectuer
des calculs sur la base pour supporter de telles
applications, c’c’est l’
l’objet de l’
l’introduction des
fonctions de calcul au sein de l ’algè
algèbre et du
support des agré
agrégats.
Fonction de calcul (Somme, produit, …)
R1 Sélection (R2, Degre*
Degre*Quatite/100
Quatite/100 > 10)
Support des agré
agrégats(Somme, Moyenne, …)
R1 AGREGAT(R2, Attribut1,
Fonction{Attribut2})

DRIOUCH B. 23

Exemple VolAvion
Avion Vol
#av #vo
Marque Avian
Typeavion Pilote AffectationVol
Capacite Villedepart Passager
localisation Villearrive Vol
Heuredepart Datevol
heurarrive Numplace
Prix

Pilote
#pil
Nom Passager
Codepostal #pas
Ville Nom
Datenaissance Prenom
Datedebutactivite ville
DRIOUCH B. Datefinactivite 24
salairebrut

8
Arbre Algé
Algébrique
La repré
représentation
graphique et
beaucoup plus
lisible que les
opé
opération
algé
algébrique avec
plusieurs opé
opérateur

DRIOUCH B. 25

Exemple
Soit le sché
schéma relationnel suivant:
Auditeur( no-
no-auditeur , nom-
nom-auditeur )
Examen( no-
no-examen,
examen, salle, date)
Passe -Examen(
Examen(no-
no-auditeur , no-
no-examen,
examen, note)
Quels sont les auditeurs qui ont eu la
moyenne à leur examen?
R1 Sélection(passe
lection(passe--examen ,note >= 10)
R2 Jointure(Auditeur,R1, auditeur.no -auditeur=R1.no
auditeur=R1.no -
auditeur)
R3 Projection(R2, nom-
nom-auditeur )
Quels sont les auditeurs qui ont passé
passé leur
examen à la salle «S10»
S10»?
DRIOUCH B. 26

Arbre algé
algébrique

Arbre algé
algébrique
pour les auditeurs
qui ont eu la
moyenne à leur
examen

DRIOUCH B. 27

9
Exercice
Soit le sché
schéma relationnel suivant:
Fournisseur(Num
Fournisseur(Num- -F , nom, ville)
Produit (Code
(Code--P, libellé
libellé, origine, couleur)
Fourniture(Num
Fourniture( Num--F, Code-
Code-P, quantité
quantité)

On sait également que des fournisseurs sont enregistré


enregistr és dans la BD, même s’
s’ils ne
fournissent pas de produits.

Questions:
Construire les arbres algé
algébriques correspondant aux requêtes suivantes:
a) Numé
Numéros des fournisseurs qui me fournissent au moins un produit
b) Numé
Numéros des fournisseurs qui me fournissent au moins le produit dont le numé
numéro
est P6
c) Numé
Numéros des fournisseurs qui me fournissent quelque chose d’d’autre que le produit
P6
d) Numé
Numéros et noms des fournisseurs qui ne me fournissent rien.
e) Numé
Numéros des fournisseurs qui me fournissent quelque chose mais pas le le produit P6
f) Nom des fournisseurs trouvé
trouvé en c)
g) Numé
Numéros des fournisseurs qui me fournissent tous les produits originaire
originaire de DIJON
h) Noms et villes des fournisseurs qui me fournissent au moins un produit
produit originaire de
leur ville.
i) Numé
Numéros des fournisseurs qui ne fournissent que des produits verts.
DRIOUCH B. 28

M19 : SGBD 1
Langage de Manipulation de Donné
Donnée(LMD)

Formateur : Driouch Bouazza


Etablissement : OFPPT/CFMOTI

http://www.driouchb.0fees.net/

DRIOUCH B. 29

Plan
Définition
Opé
Opérations de Sé Sélection
Opé
Op é rations de Jointure
Les Fonctions inté
intégré
gré

DRIOUCH B. 30

10
Introduction
LMD est le sous ensemble du langage SQL utilis é pour manipuler
des donn ées au sein d ’un Syst ème de Gestion de Bases de
Donné
Données Relationnel.
S.Q.L. signifie Structured Query Language.
Language.
Il est issu de SEQUEL : Structured English Query Language,
Language, C ’est
le premier langage pour les S.G.B.D. Relationnels, Il a ét é
développé
veloppé par IBM en 1970 pour syst ème R, son 1er SGBDR.
S.Q.L. a été reconnu par l ’ANSI (Association de Normalisation des
Systè
Systèmes d ’Information) puis s ’est imposé
imposé comme norme, Il
n’existe pas de S.G.B.D. Relationnel sans S.Q.L.
S.Q.L. est un langage relationnel qui permet d ’effectuer les tâches
suivantes :
• Définition et modification de la structure de la base de donn ées
• Interrogation et modification non proc édurale (c’
(c ’est à dire interactive)
de la base de donn ées
• Contrôle de s écurité
curité et d’
d’inté
intégrité
grit é de la base
• Sauvegarde et restauration des bases

DRIOUCH B. 31

Opé
Opération de sé
sélection
L’instruction SELECT permet d ’extraire des donn ées et de
les pré
présenter trié
triées et/ou regroup ées suivant certains
critè
critères.
Les enregistrements doivent v érifier certains crit ères
exprimé
exprimés dans des expression conditionnelles.
Syntaxe de l ’instruction SELECT
• SELECT liste des attributs à afficher ou *
• [DISTINCT] mot clé
clé facultatif (é
(élimination des doublons)
• FROM liste des noms de tables
• [WHERE] condition sur les attributs
• [GROUP BY] nom de l’ l’attribut de regroupement
• [HAVING] condition de regroupement
• [ORDER BY] critè
critère de tri

DRIOUCH B. 32

Exemple VolAvion
Avion Vol
#av #vo
Marque Avian
Typeavion Pilote AffectationVol
Capacite Villedepart Passager
localisation Villearrive Vol
Heuredepart Datevol
heurarrive Numplace
Prix

Pilote
#pil
Nom Passager
Codepostal #pas
Ville Nom
Datenaissance Prenom
Datedebutactivite ville
DRIOUCH B. Datefinactivite 33
salairebrut

11
Opé
Opération de sé
sélection
1. Requêtes sur une seule table:
SELECT *
FROM Vol
WHERE HeureDepart > 16

DRIOUCH B. 34

Opé
Opération de sé
sélection
Nous n’n’avons pas besoin de tous les attributs et il
s’agit d’
d’un vol au d épart de Toulouse et à destination
de Grenoble, Nous alors donc restreindre les attributs
retenus dans l ’opé
opération SELECT au moyen d ’une
Projection et compl éter la clause Where :

SELECT vol#,heuredepart
vol#,heuredepart,,heurearrivee
FROM vol
WHERE heuredepart > 16
AND villedepart LIKE 'Toulou
' Toulou %'
AND villearrivee = 'Grenoble'

DRIOUCH B. 35

Opé
Opération de sé
sélection
Utilisation du mot clé
clé DISTINCT
Le ré
résultat d ’un SELECT étant un ensemble, il peut y avoir des
doublons. Le mot cl é DISTINCT permet de pr éciser que l ’on
ne veut qu’
qu’un seul exemplaire des lignes retenues dans la
sélection.
Ensemble des types d ’avions dont la capacit é est supé
supérieure
à 250 passagers.
SELECT Marque,TypeAvion , Capacite
FROM AVION
WHERE Capacite > 250

DRIOUCH B. 36

12
Opé
Opération de sé
sélection
Nous ajoutons le mot clé
clé DISTINCT
à la sé
sélection et ordonnons les
donné
données par capacité
capacités
décroissantes :
SELECT DISTINCT Marque,TypeAvion,Capacite
FROM AVION
WHERE Capacite > 250
ORDER BY Capacite DESC

DRIOUCH B. 37

Opé
Opération de sé
sélection
Fonctions de groupe
Nous pouvons travailler sur des donn ées consolidé
consolidées au travers de
requêtes qui, à partir d ’un ensemble de lignes s électionné
lectionnées,
réalisent des opé
op érations de synth èse sur ces donn ées.
Nous pouvons combiner ainsi des fonctions r écapitulatives à la
liste des attributs sélectionné
lectionnés:
• SUM somme des valeurs de l ’attribut
• MIN minimum des valeurs de l ’attribut
• MAX maximum des valeurs de l ’attribut
• AVG moyenne des valeurs
• COUNT nombre d ’enregistrements s électionn és
Nous avons à notre disposition des clauses sp écifiques à la
construction de requêtes r écapitulatives. Nous avons ainsi les
clauses :
• GROUP BY permet d ’exprimer sur quels attributs sont agr ég és les
donné
données.
• HAVING permet de d éfinir une condition sur des valeurs de
regroupement.
DRIOUCH B. 38

Opé
Opération de sé
sélection
Quelques exemples :
Nombre d’
d’avions dans la table AVION
SELECT COUNT(AV#)
FROM AVION
Le ré
résultat est 16
Mécanisme des alias : NomColonne AS
NomAlias
SELECT COUNT(AV#) as "Nombre
"Nombre Avions"
Avions"
FROM AVION
DRIOUCH B. 39

13
Opé
Opération de sé
sélection
Groupement
Je peux aussi vouloir comptabiliser le nombre d ’avions par
marque. La clause GROUP BY me permet alors de d éfinir les
conditions de regroupement des calculs r écapitulatifs :

SELECT COUNT(AV#) as " Nombre Avions "


FROM AVION
GROUP BY Marque

SELECT Marque,COUNT(AV#) as "Nombre Avions"


FROM AVION
GROUP BY Marque
ORDER BY "Nombre
"Nombre Avions " DESC
(ORDER BY COUNT(AV#) DESC )

DRIOUCH B. 40

Opé
Opération de sé
sélection
HAVING
On veux aussi ne pas vouloir conserver dans mon r ésultat les
marques dont le nombre d’ d’ avions est infé
inférieur à 3.
J’introduis alors dans ma requête une clause HAVING qui
exprime une condition sur une op ération de regroupement.

SELECT Marque,COUNT(AV#) as "Nombre Avions"


FROM AVION
GROUP BY Marque
HAVING COUNT(AV#) > 2
-- on ne peut pas utiliser " Nombre Avions"
Avions "
ORDER BY COUNT(AV#) DESC

Capacité
Capacités minimum et maximum des Boeing.
SELECT MIN(Capacite)
MIN(Capacite) as "Capacite
"Capacite Mini Boeing",
MAX(Capacite)
MAX(Capacite) as "Capacite
"Capacite Maxi Boeing"
FROM AVION
WHERE Marque = 'BOEING'

DRIOUCH B. 41

Opé
Opération de sé
sélection
On peut utilisé
utilisé dans la sé
sélection les
opé
opérateur suivant:
• Opé
Opérateurs arithmé
arithmétiques
• Opé
Opérateurs de comparaison
• Opé
Opérateurs logiques
• Opé
Opérateur de traitement de chaî
chaînes

DRIOUCH B. 42

14
Exemples
Liste des vols au d épart de Toulouse et a destination de Paris entre 12 et
15 heures.
SELECT vol#,
vol#, villedepart , villearrivee , heuredepart , heurearrivee
FROM Vol
WHERE Heuredepart BETWEEN 12 AND 15
AND villedepart LIKE 'TOULO% ‘ AND villearrivee LIKE 'PAR%'

-- Liste des noms de pilotes


SELECT nom
FROM Pilote

-- Liste des Pilotes dont le nom contient la cha î ne el */


SELECT nom
FROM Pilote
Where nom LIKE '%el% ‘

-- Liste des Pilotes dont le 3 ème caractè


caract ère du nom est un r*/
SELECT nom
FROM Pilote
Where nom LIKE '__r%'
DRIOUCH B. 43

Exemples
-- Liste des Pilotes dont le nom comporte les caract ères u,c,ou l
SELECT nom
FROM Pilote
Where nom LIKE '%[ cul]%
cul]%‘‘

-- Liste des Pilotes dont le nom commence par le caract ère m ou l


SELECT nom
FROM Pilote
Where nom LIKE '[ml]% ‘

/* Liste des Pilotes dont le nom commence par le caract ère m ou l


et se termine par l */
SELECT nom
FROM Pilote
Where nom LIKE '[ ml]%l‘
ml]%l ‘

DRIOUCH B. 44

Les Opé
Opérations de Jointure
2. Requêtes inté
intégrant plusieurs tables
La jointure consiste à rechercher entre deux tables
ayant un attribut commun (même type et même
domaine de d éfinition) tous les tuples (toutes les
lignes) pour lesquels ces attributs ont la même
valeur.
• la méméthode ensembliste r éalise l’ l’intersection de
deux ensembles et s ’exprime sous forme de
requêtes imbriqu ées.
• la méméthode pr édicative v érifie l’é
l’égalit
galité
é de deux
attributs et s ’exprime sous la forme d ’une seule
sélection conditionnelle.

DRIOUCH B. 45

15
Les Opé
Opérations de Jointure
La mé
méthode ensembliste
Sché
Schéma de construction :
SELECT liste d’
d ’attributs
FROM table1
WHERE attribut de jointure
IN (SELECT attribut de jointure
FROM table2
WHERE condition)
La requête à l’inté
intérieur des parenth èses est dite requête
interne ou sous-
sous-requête.
requête. Elle est évalu ée en premier,
constituant ainsi un premier ensemble dont on r éalisera
l’intersection (IN) avec l ’ensemble issu de l ’évaluation
’évaluation de la
requête externe.
Les attributs s électionné
lectionnés, et retenus dans le jeu de r ésultat,
sont n é cessairement issus de la requête externe. Il s ’agit
donc d’d’une mé
méthode assez restrictive.

DRIOUCH B. 46

Les Opé
Opérations de Jointure
Exemple
SELECT PIL# as "Code Pilote",NOM
FROM PILOTE
WHERE PIL# IN (SELECT PILOTE
FROM VOL
WHERE Villedepart = 'Paris');

DRIOUCH B. 47

Les Opé
Opérations de Jointure
Autre exemple : Traitement du sauf (n égation NOT)
ou diffé
différence.
Liste des pilotes qui ne sont pas affect és à des vols.
SELECT PIL# as "Code Pilote",NOM
FROM PILOTE
WHERE PIL# NOT IN (SELECT PILOTE
FROM VOL)
On ne pourra pas non plus écrire la requête suivante :
SELECT PIL# as "Code Pilote",NOM,VILLEDEPART
FROM PILOTE
WHERE PIL# IN (SELECT PILOTE FROM VOL)
Car l ’attribut VILLEDEPART n ’appartient pas à la table sur
laquelle porte la requête externe. Vous obtenez un message
d’erreur
DRIOUCH B. 48

16
Les Opé
Opérations de Jointure
La mé
méthode pré
prédicative
La requête comporte une seule instruction SELECT qui
traite plusieurs tables dont la liste appara ît dans la clause
FROM. La traduction de la jointure se fait par une équation
de jointure ( égalité
galité entre 2 attributs) exprim ée au niveau
de la clause FROM.

Il existe quatre natures de jointure qui sont respectivement


exprimé
exprimées par les mots cl és INNER, RIGHT OUTER, LEFT
OUTER ou FULL OUTER dont nous verrons les diff érents cas
d’usage dans les exemples suivants.

Cette m éthode est en g énéral pré


pr éférable à la mé
méthode
ensembliste car plus performante.

DRIOUCH B. 49

Les Opé
Opérations de Jointure
Jointure interne (INNER JOIN)
Liste des avions affect és à des vols avec la mention
de la ville de d épart du vol.
SELECT AV#,MARQUE,TYPEAVION,VILLEDEPART
FROM AVION INNER JOIN VOL
ON AVION.AV# = VOL.AVION

La clause INNER JOIN, jointure interne, ne retient que les ligne s des
deux tables pour lesquelles l'expression exprim ée au niveau de
ON se vé
vérifie.
DRIOUCH B. 50

Les Opé
Opérations de Jointure
Jointure interne (LEFT
(LEFT JOIN)
Si nous voulons la liste de tous les avions avec, pour ceux qui
volent, des informations sur les villes de d épart, nous écrierons :
SELECT AV#,MARQUE,TYPEAVION,VILLEDEPART
FROM AVION LEFT OUTER JOIN VOL
ON AVION.AV# = VOL.AVION

Pour les avions qui ne sont pas en service, l ’attribut VILLEDEPART


aura la valeur NULL

DRIOUCH B. 51

17
Les Opé
Opérations de Jointure
Complé
Compléments sur des jointures
INNER
Spé
Spécifie toutes les paires correspondantes de lignes
renvoyé
renvoyées. Supprime les lignes n'ayant pas de
correspondance entre les deux tables. Ceci est l'option par
défaut si aucun type de jointure n'est sp écifi é.
FULL [OUTER] : Peu utilis ée
Pré
Précise qu'une ligne de la table de gauche ou de droite, qui ne
correspond pas à la condition de jointures, est comprise
dans l'ensemble de r ésultats et que les colonnes de sortie
sans correspondance dans l'autre table ont des valeurs
nulles. Ceci est fourni en plus de toutes les lignes
renvoyé
renvoyées par INNER JOIN.

DRIOUCH B. 52

Les Opé
Opérations de Jointure
Complé
Compléments sur des jointures
LEFT [OUTER]
Spé
Spécifie que toutes les lignes de la table de gauche ne respectant
pas la condition de jointure sont comprises dans l'ensemble de
résultats, et que les colonnes de sortie de l'autre table sans
correspondance ont des valeurs NULL.
RIGHT [OUTER] :
Spé
Spécifie que toutes les lignes de la table de droite ne respectant pas
la condition de jointure sont comprises dans l'ensemble de
résultats, et que les colonnes de sortie correspondant à l'autre
table ont des valeurs NULL.
JOIN
Indique que l'op ération de jointure sp écifié
cifiée doit avoir lieu entre les
tables ou vues donn ées.
ON <condition de recherche>
Indique la condition sur laquelle se base la jointure

DRIOUCH B. 53

Les Opé
Opérations de Jointure
Auto-
Auto-jointure
L’auto-
auto-jointure est la jointure entre une table et elle -même, pour
sélectionner des enregistrements correspondant à d’autres de la
même table. Il est n écessaire de recourir alors à des alias pour
définir la table dé
déjà utilisé
utilisée.
Exemple d ’ auto -jointure : Liste des avions de même
capacit é
SELECT AVION.AV#, AVION.MARQUE, AVION.TYPEAVION,
AVION.CAPACITE, AV2.AV#, AV2.MARQUE, AV2.TYPEAVION,
AV2.CAPACITE
FROM AVION INNER JOIN AVION AS "AV2"
ON AVION.CAPACITE = AV2.CAPACITE
WHERE AVION.AV# > AV2.AV#
A noter : L’L’expression de la clause WHERE pour éliminer les
paires de lignes figurant plusieurs fois.

DRIOUCH B. 54

18
Les Opé
Opérations de Jointure
Requêtes sur 3 tables (jointes 2 à 2)
Liste des vols avec informations sur pilotes et avions
SELECT VOL#, VILLEARRIVEE, VILLEDEPART, HEUREDEPART,
AV#,MARQUE, TYPEAVION, PIL#, NOM
FROM AVION INNER JOIN VOL
ON AVION.AV# = VOL.AVION
INNER JOIN PILOTE
ON VOL.PILOTE = PILOTE.PIL#

DRIOUCH B. 55

Les fonctions inté


intégré
grées
On pré
présente les principaux fonctions inté
intégré
grées
proposé
proposées par SQL Server, aussi sous des formes
similaires sinon identiques sous les principaux
SGBDR du marché
marché.

• Fonctions de conversion
• Fonctions de traitement de cha înes
• Fonctions de manipulation de dates
• Quelques fonctions int égré
grées

SQL server propose de nombreuses fonctions


inté
intégré
grées qui permettent de manipuler des
donné
données utilisateurs ou des donné
données du systè
système.

DRIOUCH B. 56

Les fonctions inté


intégré
grées
Fonctions de conversion
Certaines conversions ne peuvent être automatiquement
réalisé
alisées par le syst ème. Nous devons alors r éaliser ces
conversions de mani ère explicite au moyen des fonctions de
conversion CAST et CONVERT.

SELECT CONVERT(DATETIME,GETDATE(),102) AS "Date au


format amé
am éricain"

SELECT CONVERT(Decimal(10,3),sum((UnitPrice * 1 -
Discount) * Quantity)) AS "TOTAL CA Net " FROM [Order
Details]

DRIOUCH B. 57

19
Les fonctions inté
intégré
grées
Fonctions de traitement de cha înes
Quelques exemples dans ce tableau car elles sont nombreuses
Voir aide à l’index fonctions, cha îne

Liste des noms des


pilotesformatés. Le
premier caractère de
gauche est mis en
majuscules, Les
autres caractères en
minuscules

SELECT Upper(Substring(Nom,1,1)) + Substring(Nom,2,Len(Nom)-


1) FROM PILOTE

DRIOUCH B. 58

Les fonctions inté


intégré
grées
Fonctions de manipulation de dates
Fonctions int égré
grées permettant de manipuler des valeurs de type
DATETIME.

Nombre de jours entre la date de naissance et la date du jour.


SELECT NOM,DATEDIFF(DAY, DateNaissance ,GETDATE()) as "Nombre
jours depuis Naissance"
FROM Pilote
Extrait de portions de la date de naissance avec DatePart et
DateName
SELECT DATEPART(MONTH, DateNaissance ),
DATENAME(MONTH,DateNaissance )
FROM PILOTE

DRIOUCH B. 59

Exercice
Gestion Stock
•Clients (Ref_cli
(Ref_cli,,DescriptionCl,Contact,
DescriptionCl,Contact,villleCl
villleCl,,solvabiulite,
solvabiulite,telCl)
telCl)
•Fournisseurs (Ref_fou
(Ref_fou,,descriptionF,
descriptionF,VilleF,
VilleF, TelF )
•Produits (Ref_pro
(Ref_pro,, DescriptionP,
DescriptionP, Ref_fou,
Ref_fou , Ref_cat,
Ref_cat, PrixU,
PrixU, Quantite)
Quantite)
•Categorie (Ref_cat,
Ref_cat, DescriptionCa)
DescriptionCa)
•Commande (Ref_com
(Ref_com,, Ref_cli,
Ref_cli, DateCom,
DateCom, Date_liv)
Date_liv)
•DetailCommande (Ref_com,
Ref_com,Ref_pro,
Ref_pro, Qtite)
Qtite)

Questions :
Liste des commandes du 1er Trimestre de l ’anné anné e 1997.
Liste des commandes dont la diff érence entre la date de commande et la
date de livraison est sup érieure à 10 jours.
Liste des commandes en affichant les produits command és avec leurs
prix et quantit és respectifs ainsi que la date de commande et le client.
Liste des caté
cat égories dont la d ésignation contient la lettre « N ».
Lister les fournisseurs qui ne figurent pas dans la table Produi t.
Liste des produits affichant les quantit és maximale et minimale
commandé
commandées par Produit.
Liste des produits affichant une nouvelle colonne «Montant Total par
Produit»
Produit».
DRIOUCH B. 60

20
M19 : SGBD 1
Langage de D éfnition de Donn ée(LDD)

Formateur : Driouch Bouazza


Etablissement : OFPPT/CFMOTI

http://www.driouchb.0fees.net/

DRIOUCH B. 61

Plan
Introduction
Objets d’
d’une base de donné
donnée
Dénomination
Create (DataBase,
DataBase, Table)
Alter et Truncat Table
Gestion des contraintes

DRIOUCH B. 62

Introduction
LDD est le sous-
sous-ensemble du langage
SQL, pour cr éer et modifier des objets de
base de donné
données, en particulier les tables.
Le LDD nous permet de :
• Cré
Créer des tables
• Décrire les diffé
différents types de donné
données
utilisables pour les dé
définitions de colonne
• Modifier la dé
définition des tables
• Supprimer, renommer et tronquer une table

DRIOUCH B. 63

21
Objets d'une Base de Donné
Données
Une base de donn ées peut contenir de nombreuses
structures de donn ées.
Chaque structure doit être pr éd éfinie lors de la conception
de la base de donn ées pour pouvoir être cr éée
éée durant la
phase de construction de la base.

Vous avez la possibilit é de cré


créer des tables à tout moment,
y compris lorsque la base de donn ées est d éjà en cours
d'utilisation.

DRIOUCH B. 64

Conventions de Dé
Dénomination
Utilisez des noms signifiants.
Un nom :
• Doit commencer par une lettre
• Peut comporter de 1 à 249 caractè
caractères
• Ne peut contenir que les caractè
caractères A à Z, a à
z, 0 à 9, (_, $, et #, et espaces dé
déconseillé
conseillés)
• Ne doit pas porter le nom d’ d’un autre objet
appartenant au même utilisateur
• Ne doit pas être un mot ré réservé
servé SQL Server

DRIOUCH B. 65

L'Ordre CREATE DATABASE


CREATE DATABASE [emploi]

ON PRIMARY
( NAME = N'emploi',
FILENAME = N'C: \Program Files\
Files\Microsoft SQL
Server\
Server\MSSQL.1\
MSSQL.1\MSSQL\
MSSQL\DATA \emploi.mdf' ,
SIZE = 3072KB ,
FILEGROWTH = 1024KB )

LOG ON
( NAME = N'emploi_log',
FILENAME = N'C: \Program Files\
Files\Microsoft SQL
Server\
Server\MSSQL.1\
MSSQL.1\MSSQL\
MSSQL\DATA \emploi_log.ldf' ,
SIZE = 1024KB ,
FILEGROWTH = 10%)
GO

DRIOUCH B. 66

22
L'Ordre CREATE TABLE
Pour cré
créer une table, l'utilisateur doit disposer du privil ège
CREATE TABLE et d'un espace de stockage dans laquelle il pourra
cré
créer des objets.
L'administrateur de base de donn ées utilise des ordres du LCD
(langage de contrôle des donn ées) pour accorder des privil èges
aux utilisateurs.
Syntaxe :
CREATE TABLE [ schema.]
schema.]table
table
(column datatype [DEFAULT expr],...
expr],...
• schema nom du schema
• table nom de la table
• column nom de la colonne
• datatype type de donn ées et longueur de la colonne
• DEFAULT expr spé
spécifie une valeur par d éfaut
Exemple
• CREATE TABLE dept (DEPTNO INTEGER, DEPTNAME
CHAR(25))

DRIOUCH B. 67

L'Ordre CREATE TABLE


Références à un sché
schéma
Un sché
schéma est une collection d'objets.
Les sché
schémas sont des structures
logiques qui font directement
référence aux donné
données de la base.
Un sch éma permet de regrouper les
objets afin de les traiter comme une
entité
entité unique pour leur attribuer des
droits.
DRIOUCH B. 68

L'Ordre CREATE TABLE


L'Option DEFAULT
On peut déd éclarer une valeur par dé
d éfaut pour une colonne en utilisant
l'option DEFAULT.
Cette option empêche l'insertion de valeurs NULL dans une colonn e
lors de l'ajout d'une ligne qui ne comporte pas de donn ées pour
cette colonne.
La valeur par dédéfaut peut être un litt éral, une expression ou une
fonction SQL telle que DATE() et USER

Expression colonne calculé


calculée
Expression dé
définissant la valeur d'une colonne calcul ée. Une colonne
calculé
calculée est une colonne virtuelle qui n'est pas stock ée
physiquement dans une table.

DRIOUCH B. 69

23
L'Ordre CREATE TABLE
Les types de donné
données dans SQL Server
Les types de donn ées de base pour les valeurs d ’une colonne propos és par le
systè
système :

L'affectation d'un type de donn ées à un objet d éfinit quatre attributs de


l'objet :
• le type de donn ées contenues par l'objet
• la longueur ou la taille de la valeur stock ée
• la pr écision du nombre (types de donn ées numé
num ériques uniquement)
• l'é
l'échelle du nombre (types de donn ées numé
numériques uniquement).

DRIOUCH B. 70
L'Ordre CREATE TABLE
Donné
Type de Donn ée

DRIOUCH B. 71

Ordre ALTER TABLE


Utilisez l'ordre ALTER TABLE pour :
• Ajouter une colonne
• Modifier une colonne existante
• Définir une valeur par d éfaut pour une nouvelle colonne
ALTER TABLE table
ADD column datatype [DEFAULT expr]
expr]

ALTER TABLE table


ALTER COLUMN column datatype [DEFAULT expr]
expr]

Exec sp_rename ‘nTable.nColonne ’, ‘Newname’


Newname’, ‘COLUMN’
COLUMN’

ALTER TABLE table


DROP COLUMN nColonne

Exec sp_help nObjet –Infos sur l’


l ’objet, table, vues …

DRIOUCH B. 72

24
Ordre ALTER TABLE
a) Ajout
ALTER TABLE dept
ADD (job VARCHAR(9));
La nouvelle colonne est placé
placée à la fin.

b) Modification
Vous pouvez modifier le type de donné
données, la taille
et la valeur par dé
défaut d'une colonne.
ALTER TABLE dept
ALTER COLUMN (DEPTNOM VARCHAR(65));

DRIOUCH B. 73

Vider une table


Vider une Table
TRUNCATE TABLE est un autre ordre LDD, qui permet de
supprimer toutes les lignes d'une table tout en lib érant
l'espace utilis é pour stocker cette table.

TRUNCATE TABLE table;table;


où : table est le nom de la table

L'ordre TRUNCATE TABLE ne peut être annul é.

L'ordre DELETE quant à lui supprime aussi les lignes d'une


table, mais il ne lib ère pas l'espace de stockage.

DRIOUCH B. 74

Suppression de Table
Suppression de Tables
L'ordre DROP TABLE supprime la d éfinition
d'une table, Lorsque vous supprimez une
table, la base de donn ées perd toutes les
donné
données de la table ainsi que tous les
index associé
associés.

Syntaxe :
DROP TABLE dept

l'ordre DROP TABLE est irr éversible.


DRIOUCH B. 75

25
Commande de M. A. J.
Les commandes de mise-à-jour (insertion, destruction,
modification) sont considérablement plus simples que les
requêtes.
Insertion
L’insertion s’effectue avec la commande INSERT dont la
syntaxe est la suivante :
INSERT INTO R( A1, A2, ... An) VALUES (v1, v2, ... vn)
Exemple :
INSERT INTO Client (id, nom, prenom)
VALUES (40, ’Moriarty’, ’Dean’)

INSERT INTO Sites (lieu, region)


SELECT lieu, regionFROM Station
Bien entendu le nombre d’attributs et le type de ces derniers
doivent être cohérents.
DRIOUCH B. 76

Commande de M. A. J.
Destruction
La destruction s’effectue avec la clause DELETE dont la
syntaxe est :
DELETE FROM R
WHERE condition
Exemple : destruction de tous les clients dont le nom
commence par ’M’.
DELETE FROM Client
WHERE nom LIKE ’M%’
Modification
La modification s’effectue avec la clause UPDATE. La syntaxe :
UPDATE R SET A1=v1, A2=v2, ... An=vn
WHERE condition
Exemple :
UPDATE ActiviteSET prix = prix* 1.1 WHERE nomStation= ’Passac’
DRIOUCH B. 77

Gestion des contraintes d’


d’inté
intégrité
grité
On fait appel à des contraintes pour empêcher l'entr ée de
donné
données incorrectes dans des tables. Il s ’agit d’
d’une
approche non sp écifique à SQL Server mais mis en œuvre
par tous les SGBD conformes au mod èle relationnel et à la
norme SQL.

On utilise des contraintes pour :


• Appliquer des rèrègles au niveau d'une table chaque fois qu'une
ligne est insé
ins érée, mise à jour ou supprimé
supprimée dans cette table.
La contrainte doit être satisfaite pour que l'op ération ré
réussisse.
• Empêcher la suppression d'un enregistrement si il y a une
dépendance avec un autre enregistrement de la table en
relation.
• Éviter la suppression d'une table dont d épend une autre table.
• Appliquer des rèrègles aux valeurs ins érées dans une colonne
pour vé
vérifier qu’
qu’elles sont conformes aux r ègles dé
définies

DRIOUCH B. 78

26
Types d’
d’inté
intégrité
grité des donné
données
Inté
Intégrité
grité de domaine
• Spé
Spécifie un ensemble de valeurs pour une colonne
• Détermine si les valeurs nulles sont autoris ées
• Implé
Implémentation par contrôle de validit é
Inté
Intégrité
grité des entité
entités
• Toute ligne doit avoir un identifiant unique
• Notion de cl é primaire
Inté
Intégrité
grité référentielle
• Assure l ’inté
intégrité
grité des relations entre la cl é primaire
de la table r éférencé
renc ée et les cl és étrang ères
• On ne peut supprimer une ligne ni modifier la cl é
primaire si une cl é étrangè
trang ère y fait r éférence
DRIOUCH B. 79

Contraintes d'Inté
d'Intégrité
grité

• Types de contraintes :
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
Toutes les contraintes sont stock ées
dans le dictionnaire de donn ées.
DRIOUCH B. 80

Contraintes d'Inté
d'Intégrité
grité
DEFAULT
Spé
Spécifie la valeur fournie pour la colonne lorsque vous n'avez pas
spé
spécifié
cifié explicitement de valeur lors d'une insertion.
La contrainte NOT NULL
Mots clé
clés déd éterminant si les valeurs NULL sont permises ou non dans
une colonne.
La Contrainte PRIMARY KEY
Une contrainte PRIMARY KEY cr ée une cl é primaire pour la table.
IDENTITY (propri été)
Cré
Crée une colonne d'identit é dans une table.
IDENTITY [ ( seed , increment ) ]
La Contrainte de Clé
Cl é UNIQUE
Une contrainte d'int égrité
grité de type cl é UNIQUE exige que chaque
valeur dans une colonne ou dans un ensemble de colonnes soit
unique
La Contrainte FOREIGN KEY

DRIOUCH B. 81

27
Contraintes d'Inté
d'Intégrité
grité
Une contrainte peut être d éfinie au niveau table ou colonne en fonction de
sa nature.
CREATE TABLE [ schema.]
schema.]table
table
(column datatype [DEFAULT expr]
expr]
[column_constraint ],

[table_constraint]);
table_constraint]);

schema nom du propri étaire de la table


table nom de la table
DEFAULT expr valeur par d éfaut à utiliser si une valeur est omise
dans l'ordre INSERT
column nom de la colonne
datatype type de donn ées et longueur de la colonne
column_constraint contrainte d'int égrité
grité incluse dans la d éfinition de la
colonne
table_constraint contrainte d'int égrité
grité incluse dans la d éfinition de la
table

DRIOUCH B. 82

Contraintes d'Inté
d'Intégrité
grité
CREATE TABLE emp(
emp(
empno INTEGER,
ename VARCHAR(10),

deptno INTEGER NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO));
Syntaxe de cré
cr éation d’
d ’une contrainte :
constraint_name nom de la contrainte
constraint_type type de contrainte
• Contrainte au niveau colonne
column [CONSTRAINT constraint_name]
constraint_name ] constraint_type ,
• Contrainte au niveau table
column,...
column,...
[CONSTRAINT constraint_name]
constraint_name ] constraint_type
(column,
column, ...),

DRIOUCH B. 83

Contraintes d'Inté
d'Intégrité
grité (Exemple)
Exemple:
Soit le Sché
Sch éma relationnel GestAud suivant:
Auditeur (#
(#IdAud,
IdAud, Nom)
Examen (#(#IdEx,
IdEx, Salle, DateEx)
DateEx)
Passe_Ex (IdAud,
IdAud, IdEx,Note)
IdEx,Note)

Scripte :
Use master
Create database GestAud
GestAud
On primary
(name='GestAud_dat',
filename= ‘C :\GestAud_dat.mdf',
size=3MB,
filegrowth=10%)
Log on
(name='GestAud_log',
filename= ‘C :\GestAud_log.ldf',
size=1MB,
filegrowth=10%)
Go
exec sp_helpdb GestAud
Go

DRIOUCH B. 84

28
Contraintes d'Inté
d'Intégrité
grité (Exemple)
-- Creation des tables
USE GestAud
Create Table Auditeur(NuAud int identity,
identity , Nom varchar(30))
Create Table Examen(NuEx int identity,
identity , Salle varchar(20), DateEx smalldatetime)
Create Table Passe_Ex(NuAud int, NuEx int, note real default 0)
Go
-- Creation des tables
USE GestAud
Create Table Auditeur(NuAud int identity, Nom varchar(30))
Create Table Examen(NuEx int identity, Salle varchar(20), DateEx smalldatetime)
Create Table Passe_Ex(NuAud int, NuEx int, note real default 0)
Go
-- Supprimer une table
Drop table Auditeur
Go
-- Alter ajouter, Modifier, renommer et supprimer
Alter Table Auditeur ADD TelAud char(10)
Alter Table Auditeur Alter Column TelAud varchar(10)
Exec sp_rename 'Auditeur.TelAud','Telephone','COLUMN'
Alter Table Auditeur Drop Column Telephone
Exec sp_help Auditeur

DRIOUCH B. 85

Contraintes d'Inté
d'Intégrité
grité (Exemple)
-- suppression de la contraint avant d'ajouter une autre
--(nom
--(nom donné
donnée par le systè
syst ème et trouvé
trouvé avec sp_help)
Alter table passe_ex drop constraint df__passe_ex__note__00551192
df__passe_ex__note__00551192
Alter table Passe_ex Add CONSTRAINT ntest DEFAULT (0) for note

-- la contraint not null


alter table Passe_ex Alter Column note real not null

-- la contraint primary key


alter table Examen Alter Column NuEx int null
alter table Examen Add constraint ct_pk_nuex Primary key (NuEx)
alter table Auditeur Add constraint ct_pk_nuaud Primary key (NuAud)
(NuA ud)
alter table Examen Drop constraint ct_pk_nuex

-- Ajout sans clé


clé primaire
insert into examen (NuEx , Salle , DateEx ) values (1,'S01','02/10/2009')
(1,'S01','02/ 10/2009')
insert into examen (NuEx , Salle , DateEx ) values (2,'S02','12/11/2009')
(2,'S02','12/ 11/2009')
-- Ajout avec clé
clé primaire
insert into examen ( Salle , DateEx ) values ('S01','02/10/2009')
('S01','02/10/2009')
insert into examen ( Salle , DateEx ) values ('S02','12/11/2009')
('S02','12/11/2009')

DRIOUCH B. 86

Contraintes d'Inté
d'Intégrité
grité (Exemple)
insert into Auditeur ( Nom ) values ('Ali')
insert into Auditeur ( Nom ) values ('Ahmed')
select * from examen
select * from Auditeur

-- la contraint Foreign key


alter table Passe_ex Add constraint ct_fk_ex Foreign key (NuEx) REFERENCES Examen (NuEx)
alter table Passe_ex Add constraint ct_fk_aud Foreign key (NuAud ) REFERENCES Auditeur (NuAud)
alter table Passe_ex Drop constraint ct_fk_passex
insert into Passe_ex (NuAud , NuEx , note) values (1,1,12.25)
insert into Passe_ex (NuAud , NuEx , note) values (1,3,12.25) -- ne peut pas etre ajouter

-- la contraint UNIQUE
alter table Passe_Ex add constraint pex_unique unique (NuAud,NuE x)
insert into Passe_ex (NuAud , NuEx , note) values (1,1,12.25) -- ne peut pas etre ajouter

-- la contraint check
alter table Passe_Ex add constraint pex_check check (note betwe en 0 and 20)
insert into Passe_ex (NuAud , NuEx , note) values (1,2,25) -- ne peut pas etre ajouter
insert into Passe_ex (NuAud , NuEx , note) values (1,2,15)

DRIOUCH B. 87

29
Transaction
Une transaction est une suite d'op érations effectu ées comme une seule unit é
logique de travail. Une unit é logique de travail doit poss éder quatre
propri étés appelé
appel ées propri étés ACID (Atomicit é, Cohé
Cohérence, Isolation et
Durabilit é).
Atomique, au sens ou on ne peut pas la diviser en une partie qui échoue
et une partie qui r éussit.
Cohé
Cohérence, au sens o ù une fois la transaction termin ée, la base est de
nouveau dans un état coh érent.
Isolé
Isol ée, au sens où
où une transaction consid ère que, pendant son ex écution,
les donn ées qu’
qu ’elle manipule ne sont pas modifi ées par une autre
transaction.
Durable, au sens o ù les modifications op érées par la transaction sont
enregistr ées de fa çon permanente (et recouvrables en cas de
reconstruction de la base).

Begin TRANSACTION
Liste d’
d ’instruction SQL
si (Condition) ROLLBACK

COMMIT TRANSACTION
DRIOUCH B. 88

Les Indexes
À l'instar
l'instar de l'index d'un livre, l'index d'une base de donn ées vous
permet de retrouver rapidement des informations dans une table
ou une vue index ée. Un index se compose de cl és cr éées éées à partir
d'une ou plusieurs colonnes dans la table ou la vue et de
pointeurs qui mappent sur l'emplacement de stockage des
donné
données sp écifié
cifi ées. Un index bien con çu am éliore de mani ère
significative les performances des requêtes et des applications de
base de donn ées. Un index peut r éduire la quantit é de donn ées
qui doivent être lues par une requête pour retourner un ensemble
de ré
résultats.

if exists (select name from sys.indexes where name like N'Ind_No m')
Drop index Ind_Nom on Auditeur
Go
Create index Ind_Nom
On Auditeur(Nom)
Go
DRIOUCH B. 89

Sécurisé
curisé une BD (Vue)
Vue
Une vue est une table virtuelle dont la d éfinition s’
s’appuie sur des tables ou
d’autres vues. Elle affiche des donn ées qui ne lui sont pas propres, mais
c’est comme une fenêtre par laquelle il est possible de visualiser ou de
modifier des donn ées venant des tables.

DRIOUCH B. 90

30
Sécurisé
curisé une BD (Vue)
Avantages d'une Vue
• Limite l'acc ès à la base de donné
données en affichant une sé sélection de celle -ci.
• Permet aux utilisateurs de cr éer des requêtes simples pour extraire les r ésultats de requêtes
complexes. Par exemple, vous pouvez extraire des informations de plusieurs tables sans
savoir écrire un ordre de jointure.
• Garantit l'indé
l'ind épendance des donné
données pour des utilisateurs et des programmes d'application
contextuels. Une vue peut être utilis ée pour extraire les donn ées de plusieurs tables. Vous
pouvez ainsi modifier la structure d ’une table sans avoir à recompiler la vue.
• Permet à des groupes d'utilisateurs d'acc éder aux donnédonnées en fonction de leurs critè
critères
particuliers, notamment de rè règles de confidentialit é. Ainsi, on peut proposer une vue
restreinte d’d’une table à certains utilisateurs, en omettant une colonne par exemple (une vue
sur la table des Salari és qui ne comporte pas la colonne salaire)

Une vue simple :


• Est dé
dérivé
rivée des donné
données d'une seule table
• Ne contient ni fonctions ni groupes de donné
données
• Permet d'exé
d'ex écuter des opé
opérations de mise à jour

Une vue complexe :


• Est dé
dérivé
rivée des donné
données de plusieurs tables
• Peut contenir des fonctions ou des groupes de donné
données
• Ne permet pas toujours d'exé
d'exécuter des opé
opérations de mise à jour
DRIOUCH B. 91

Sécurisé
curisé une BD (Vue)
Cré
Création d'une Vue
CREATE VIEW [ schema_name . ] view_name
[ WITH < view_attribute > [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]

WITH CHECK OPTION.


Cette option impose que toutes les instructions de modification de donné
données
exé
exé cuté
cutées sur la vue respectent le crit ère dé
d éfini dans select_statement .

Suppression d'une Vue


L'ordre DROP VIEW view_name : permet de supprimer une vue.
La suppression d'une vue n'a aucun effet sur les tables sur lesq uelles la vue
est basé
bas ée.
DRIOUCH B. 92

Sécurisé
curisé une BD (Connexion)
2 modes d’
d’authentification
• Authentification approuvé
approuvée par Windows
Principe associ é à :
• Un compte utilisateur
• Un groupe d’
d’utilisateurs
Mise en œuvre rapide
Fonctionnalit és de sé
sécurité
curité avanc ées
• Authentification SQL Server
Pour permettre l ’accè
accès à des clients non Microsoft
Couche suppl émentaire de s écurité
curité
Plus lourd à mettre en œuvre
• Un serveur peut mettre en œuvre le mode
d’authentification windows seul ou le mode
mixte (+ SQL Server)
DRIOUCH B. 93

31
Sécurisé
curisé une BD (Connexion)
Cré
Création des comptes de connexions
• sp_addlogin permet d’
d’ajouter un
compte de connexion SQL Server :
EXEC sp_addlogin ‘Bost',
Bost', ‘xxx123', ‘Master'
Utilisateur, mot de passe, base donné
données par dé
défaut
• sp_grantlogin permet d’ d’autoriser la
connexion d’d’un utilisateur ou groupe
d’utilisateurs
EXEC sp_grantlogin ‘D-Afpabrive\
Afpabrive\Bost‘
Bost‘
La procé
procédure sp_denylogin permet elle d’ d’interdire
l’accè
accès d’
d’un utilisateur ou d’
d’un groupe.
DRIOUCH B. 94

Use Master
CREATE LOGIN [OFPPT\
[OFPPT\ali]
ali] FROM WINDOWS;
GO

CREATE LOGIN Ahmed WITH PASSWORD =


'3KHJ6dhx(0xVYsdf‘
'3KHJ6dhx(0xVYsdf‘, database=
database=‘Master’
Master’;
GO

Use VolAvion
CREATE USER Ahmed FOR LOGIN Ahmed;
Ahmed;
GO
DRIOUCH B. 95

Sécurisé
curisé une BD (Rôle)
• Les rôles permettent de regrouper en une
seule unité
unité logique des utilisateurs ou groupes
ayant des droits similaires
• Il existe des rôle fixes standard pour donner
accè
accès à des fonctions administratives
courantes :
Au niveau des serveurs : rôle fixe de serveur
Au niveau db : rôle fixe de base de donn ées
• Vous pouvez dédéfinir vos propres rôles afin de
regrouper des droits sur des fonctions
accessibles à une caté
catégorie d’
d’employé
employés.
Rôles de base de donn ées dé
définis par l’
l’utilisateur

DRIOUCH B. 96

32
Sécurisé
curisé une BD (Rôle)
Principaux rôles fixes de serveur
Rôle Autorisation
sysadmin Exécutionde toutesles activités

dbcreator Créationet modifcation des bases de données

processadmin Gestiondes processusSQL Server

serveradmin Confguration des paramètresde serveur

setupadmin Gestionde la réplication

securityadmin Gestiondes connexionset autorisations

DRIOUCH B. 97

Sécurisé
curisé une BD (Rôle)
Rôles fixes de base de donné
données
Rôle Autorisation
public Conservation de toutes les autorisations par défaut

db_owner Exécutionde toutesles activitéssurunebase


db_accessadmin Ajoutousuppression d'utilisateurs, groupeset rôles
db_ddladmin Ajout, modifousupp. d'objetsde base de données
db_security admin Affectation d'autorisationsd'instructionet surles objets
db_backupoperator Sauvegardeet restaurationde la base de données
db_datareader Lecture des donnéesdanstoutesles tables
db_datawriter Ajout, modifcation ousuppression des données
db_denydatareader Impossible de lire les données
db_denydatawriter Impossible de modifer les données
DRIOUCH B. 98

Sécurisé
curisé une BD (Autorisation)
Attribution d’
d’autorisations : GRANT
GRANT SELECT
ON products
TO R-Consult(Rôle défini par utilisateur)

GRANT INSERT, UPDATE, SELECT


ON products
TO Bost, GG-IDG10 (Utilisateurs ou groupes)

Uitlisateur/rôle Insert Update Select


Bost
GG-IDG10
R-Consult
DRIOUCH B. 99

33
Sécurisé
curisé une BD (Autorisation)
Refus d’
d’autorisations : DENY
DENYSELECT,INSERT,UPDATE
ON products
TO Bost
Même si Bost appartient au rôle spécifique R-Consult,
il ne pourra pas accéder àla table productsen
consultation .

Uitlisateur/rôle Insert Update Select


Bost
GG-IDG10
R-Consult
DRIOUCH B. 100

Sécurisé
curisé une BD (Autorisation)
Retrait d ’autorisations : REVOKE
REVOKESELECT,UPDATE,INSERT
ON products
TO Bost

Bost peut obtenir un droit de lecture implicite par


un rôle le cas échéant mais il n’a plus de droit
explicite sur l’objet Products

Uitlisateur/rôle Insert Update Select


Bost
GG-IDG10
R-Consult
DRIOUCH B. 101

34