135
SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

Embed Size (px)

Citation preview

Page 1: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

SYSTÈME DE GESTION DE BASES DE DONNÉES

Animateur : M. HAIJOUBI

Page 2: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

2

SOMMAIRE

1. Traduire les opérations de l’algèbre Relationnelle en requêtes SQL.

2. Exploiter l'environnement du SGBDR pour interroger une base de données.

3. Exploiter les commandes de description de données.

4. Exploiter les commandes de manipulation des données.

5. Gérer des transactions.6. Utiliser les différents types d’objets sur une base de

données.7. Sécuriser les données.

Page 3: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

3

Page 4: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

4

1. Traduire les opérations de l’algèbre Relationnelle en requêtes SQL

L’algèbre relationnelle Le langage SQL Utiliser L’ordre SELECT

Base de données exemple :

Groupe(codeg,nomg)

stagiaire(cin,nom,prénom,adresse,dn,ln,sexe, nb,codeg)

Page 5: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

5

L’algèbre relationnelle L'algèbre relationnelle est à l'origine du langage SQL (Structured Query

Language) d'IBM, langage d'interrogation et de manipulation de tous les SGBDR actuels (Oracle, PostgreSQL, MySQL, MS SQLServer, MS Access et tous les autres).

Une bonne maîtrise de l'algèbre relationnelle permet de concevoir n'importe quelle requête aussi complexe soit elle avant de la mettre en œuvre à l'aide du langage SQL

Les opérations de base Projection Sélection Jointure

Les opérations ensemblistes Union Intersection Différence Produit cartésien

Page 6: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

6

La projection Opération qui consiste à extraire toutes lignes d’une table pour un sous ensemble de colonnes Exemple :

Liste des nom,prénom des stagiairesSelect nom,prénom from stagiaire

nom prénom ln dn

Amrani Med Sefrou 30/12/1987

Saadi Maha Fes 12/10/1988

Ayachi Rachida Fes 11/08/1986

SELECT nom, prénomFROM stagiaire

nom prénom

Amrani Med

Saadi Maha

Ayachi Rachida

Page 7: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

7

La sélection Permet de retenir les lignes répondant à une condition de sélection La condition est exprimée à l'aide des opérateurs =, >, <, >=, <=, <>, opérateurs logiques de base

ET, OU, NON et éventuellement des parenthèses Exemple :

SELECT * FROM stagiaire WHERE ln=‘FES’

nom prénom ln dn

Amrani Med Sefrou 30/12/1987

Saadi Maha Fes 12/10/1988

Ayachi Rachida Fes 11/08/1986

SELECT nom, prénomFROM stagiaire Where ln=‘Fes’

nom prénom ln dn

Saadi Maha Fes 12/10/1988

Ayachi Rachida Fes 11/08/1986

Page 8: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

8

La jointure Cet opérateur porte sur 2 tables qui doivent avoir au moins un attribut défini dans le même

domaine La condition de jointure peut porter sur l'égalité d'un ou de plusieurs attributs définis dans le

même domaine

nom prénom ln dn codeg

Amrani Med Sefrou 30/12/1987 TDI1B

Saadi Maha Fes 12/10/1988 TDI1A

Ayachi Rachida Fes 11/08/1986 TDI1C

codeg nomg

TDI1A Groupe A

TDI1B Groupe B

TDI1C Groupe C

SELECT * FROM stagiaire,groupe WHERE stagiaire.codeg = groupe.codeg

nom prénom ln dn codeg codeg nomg

Amrani Med Sefrou 30/12/1987 TDI1B TDI1B Groupe B

Saadi Maha Fes 12/10/1988 TDI1A TDI1A Groupe A

Ayachi Rachida Fes 11/08/1986 TDI1C TDI1C Groupe C

Page 9: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

9

Union (OU)

Cet opérateur porte sur deux tables qui doivent avoir le même nombre d'attributs définis dans le même domaine. On parle de tables ayant le même schéma.

La table résultat possède les attributs des tables d'origine et les lignes de chacune, avec ou sans élimination des doublons éventuels.

Page 10: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

10

Intersection (ET)

Cet opérateur porte sur deux tables de même schéma

La table résultat possède les attributs des tables d'origine et les lignes communes à chacune.

Page 11: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

11

Différence

Cet opérateur porte sur deux tables de même schéma

La table résultat contient les lignes de la première table qui n'appartiennent pas à la deuxième

Page 12: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

12

Produit cartésien

Cet opérateur porte sur deux tables La table résultat est formé par la concaténation de

chaque ligne de la première table avec l'ensemble des lignes de la deuxième

Page 13: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

13

TP01 : Création de la BD (30mn)

Dans cet exercice vous allez utiliser SQL Server pour créer la base de données EFP comprenant les deux tables : groupe et stagiaire.

Démarrer SQL Enterprise manager Enregistrer votre serveur Créer la base de données Créer les tables Créer le schéma de la base de données Utiliser l’analyseur de requêtes pour interroger la BD

Page 14: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

14

Le langage SQL En 1970, SQL (Standard Query Language, en français langage

de requêtes structurées ) est né à la suite des travaux mathématiques de Codd (Directeur de recherche du centre IBM à San-José) , travaux qui ont fondé les bases de données relationnelles

Suite à ces recherches plusieurs langages sont apparus :•IBM Sequel (Structured English Query Language) en 1977 •IBM Sequel/2 •IBM System/R •IBM DB2

En 1982, SQL fut lancé commercialement par IBM. SQL a subit 3 normalisations :•SQL1 en 1986 (version minimale)•SQL1 en 1989 (+ intégrité)•SQL2 en 1992•SQL3 en 1999

Aujourd'hui SQL constitue le point d'entrée obligatoire sur une Base de Donnée relationnelle.

Page 15: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

15

Utiliser l’ordre SELECT

SELECT [DISTINCT] */liste d’attributs

FROM nom(s) de table(s)

WHERE condition de sélection

GROUP BY nom de l’attribut de regroupement

HAVING condition de regroupement

ORDER BY critère(s) de tri

[ UNION | INTERSECT | MINUS

SELECT ….. ]

Page 16: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

16

DISTINCT

Le 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’un seul exemplaire de ces enregistrements

Remarque : le résultat est une liste triée

Exemple : liste des prénom des stagiaires

SELECT prénom FROM stagiaire

SELECT DISTINCT prénom FROM stagiaire

Page 17: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

17

Opérateurs Arithmétiques

Vous pouvez utiliser les opérateurs arithmétiques * / + - pour effectuer des calculs

Priorité des opérateurs : * et / sont prioritaires sur + et –

Vous pouvez utiliser les parenthèses

Exemple :SELECT nom, 2*nb FROM stagiaire

Page 18: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

18

Les Valeurs NULL

Une valeur NULL est une valeur non disponible, non affectée, inconnue ou inapplicable. Une valeur NULL est différente du zéro ou de l'espace. Le zéro est un chiffre et l'espace est un caractère

Exemple : SELECT *

FROM stagiaire

WHERE nb IS NULL

Page 19: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

19

Alias de Colonne

Renomme l’en-tête de colonne Est utile dans les calculs Suit immédiatement le nom de la colonne

avec le mot-clé AS Doit obligatoirement être inclus entre

guillemets s’il contient des espaces, des caractères spéciaux ou si il faut tenir compte des majuscules/minuscules

Exemple :SELECT nom, 2*nb AS note FROM stagiaire

Page 20: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

20

Opérateur de Concaténation

L'opérateur de concaténation (+) permet de concaténer des colonnes à d'autres colonnes, à des expressions arithmétiques ou à des valeurs constantes

Exemple :SELECT nom + ’ ‘ + prénom AS NP

FROM stagiaire

Page 21: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

21

TP02 : Utiliser SELECT (20mn)

Écrire les requêtes qui permettent : Afficher la liste de tous les stagiaires Afficher la liste des villes de naissance sans

doublons Afficher une liste qui comprend deux

colonnes : une pour le nom et prénom concaténés et une autre pour l’adresse

Afficher la liste des lieux et dates de naissance en définissant des aléas pour ces deux colonnes

Page 22: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

22

la Clause WHERE

Dans la clause WHERE, les chaînes alphanumériques et les dates doivent être incluses entre simples quottes

Opérateurs de Comparaison

Opérateur=>

>=<

<=<>

SignificationEgal àSupérieur à Supérieur ou égal à Inférieur à Inférieur ou égal àDifférent de

Page 23: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

23

L'Opérateur BETWEEN

L'opérateur BETWEEN permet d'afficher des lignes en fonction d'un intervalle de valeurs

Vous spécifiez un intervalle comprenant une limite inférieure et une limite supérieure

Exemple :SELECT *

FROM stagiaire

WHERE nb BETWEEN 12 AND 13

Page 24: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

24

Opérateur IN

Permet de comparer une expression avec une liste de valeurs, utilisez l'opérateur IN

Opérateur d’appartenance à un ensemble de valeurs

Exemple :SELECT *

FROM stagiaire

WHERE ln IN (‘taza’,’sefrou ‘,’rabat’)

Page 25: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

25

Opérateur LIKE

L'opérateur LIKE permet d’effectuer une comparaison partielle

Il est surtout employé avec les colonnes contenant des données de type alphanumériques

Il utilise les jokers % et _ (‘pour cent’ et ‘blanc souligné’). Le joker % remplace n'importe quelle chaîne de caractères, y compris la chaîne vide. Le blanc souligné remplace un et un seul caractère.

Exemple :SELECT * FROM stagiaire WHERE nom LIKE ‘%BA%’

Page 26: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

26

Opérateurs Logiques

Un opérateur logique combine le résultat de deux conditions pour produire un résultat unique ou inverse le résultat d'une condition unique. SQL inclut trois opérateurs logiques :

AND Intersection

OR Union

NOT négation

Page 27: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

27

L’opérateur AND = intersection

sexe=‘M’ ANDAND ln=‘Fes’

Page 28: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

28

L’opérateur OR = Union

sexe = ‘M’ OROR ln=‘Fes’

Page 29: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

29

Le tri ORDER BY

ORDER BY colonne1 | 1 [ASC ou DESC ] [, colonne2 | 2 [ASC ou DESC ] ...

La clause ORDER BY sert à trier les lignes ASC (ascending) classe les lignes en ordre

croissant. C'est l'ordre par défaut. DESC (descending) classe les lignes en ordre

décroissant.

Exemple :SELECT * FROM stagiaire ORDER BY sexe, nb DESC

Page 30: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

30

La clause TOP

La clause TOP n permet d’afficher les n premières lignes de la requête

Exemple :SELECT TOP 5 *

FROM stagiaires

ORDER BY nb DESC

Page 31: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

31

TP03 : la clause WHERE (30mn)

Développer les requêtes suivantes : Liste des stagiaires ayant une note du bac supérieure à 12 Liste des stagiaires de sexe féminin puis celle des stagiaires

masculins Liste des stagiaires né à Taza puis ceux qui ne sont pas nés à

Fes Liste des stagiaires qui portent les prénoms : Fatima, Meryem

ou Ahmed Les stagiaires qui habitent le quartier Benslimane Les stagiaires de sexe masculin ayant plus de 12 dans la note

du Bac Les stagiaires ayant une note entre 11 et 12 Liste des stagiaires triée dans l’ordre décroissant des notes Liste des stagiaires triée par sexe puis par nom

Page 32: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

32

Fonctions mono ligne

Fonctions de traitement des chaînes de caractères

Fonctions numériquesFonctions DateFonctions de Conversion de type

Page 33: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

33

Fonctions de traitement des chaînes

Les fonctions scalaires suivantes effectuent une opération sur une valeur de type chaîne et renvoient une valeur numérique ou de type chaîne.

LEN : longueur d’une chaîne LEFT RIGHT SUBSTRING : extraction LOWER UPPER : majuscule/minuscule LTRIM RTRIM : supprimer espaces REVERSE : Renvoie l'inverse d'une expression de

type caractère DIFFERENCE : compare deux chaînes et renvoie

une valeur de 0 à 4 (0 indique peu ou pas de similarité, 4 indique une forte similarité )

Page 34: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

34

La fonction LEN

Renvoie le nombre de caractères d'une expression de chaîne, à l'exception des espaces de droite en fin de chaîne

SyntaxeLEN ( string_expression )

Exemple : dans l'exemple ci-après, le nombre de caractères et les données figurant dans le nom du stagiaire sont sélectionnésSELECT LEN(nom), nom FROM Stagiaire

Page 35: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

35

Les fonctions LEFT,RIGHT et SUBSTRING Extraction d’une sous chaîne de caractères

Syntaxe : LEFT ( chaîne , longueur ) RIGHT ( chaîne , longueur ) SUBSTRING ( chaîne , début , longueur )

Page 36: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

36

Les fonction UPPER et LOWER

Conversion majuscule (UPPER) et minuscule (LOWER) d’une chaîne de caractères alphabétiques

Syntaxe : UPPER ( chaîne ) LOWER ( chaîne )

Page 37: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

37

Les fonction LTRIM et RTRIM

Suppression des espaces à gauche (LTRIM) ou à droite (RTRIM) d’une chaîne de caractères

Syntaxe : LTRIM ( chaîne ) RTRIM ( chaîne )

Page 38: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

38

TP05 : Traitement des chaînes (20mn)

Développer les requêtes suivantes Liste des noms et longueurs des noms des

stagiaires. Puis trier la liste dans l’ordre décroissant des longueurs des noms.

Afficher une liste contenant les cinq premiers caractères du nom. Puis une autre liste avec les cinq derniers caractères du nom.

Liste des adresses en majuscule avec les lieux de naissance en minuscule.

Liste des adresses inversées Afficher tous les prénoms similaires à « FATM »

Page 39: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

39

Fonctions numériques

Les fonctions numériques utilisent et ramènent des valeurs numériques. ROUND : calculer l’arrondi CEILLING : trouver l’entier immédiatement

supérieur ou égal FLOOR : valeur entière

Page 40: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

40

Fonctions Date

Date = Année, mois, jour, heure, minute, seconde, milliseconde

Les fonctions scalaires suivantes effectuent une opération sur une valeur d'entrée de type date et heure et renvoient une valeur numérique, une valeur de type date ou heure, ou une chaîne.

Quelques fonctions

DATEADD

DATEDIFF

DATEPART

DAY

MONTH

YEAR

Page 41: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

41

La fonction DATEADD

Renvoie une nouvelle valeur datetime calculée en ajoutant un intervalle à la date spécifiée.

SyntaxeDATEADD ( intervalle ,

nombre, date )

Intervalle Abréviations

year yy, yyyy

quart qq, q

month mm, m

dayofyear dy, y

day dd, d

week wk, ww

weekday dw

hour hh

minute min

second ss, s

millisecond ms

Page 42: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

42

La fonction DATEDIFF

DATEDIFF : renvoie le nombre de limites de date et d'heure traversées entre deux dates données.

SyntaxeDATEDIFF ( intervalle , dateDebut , dateFin )

Exemple : calcul de l’age des stagiairesSELECT DATEDIFF(year, dn, getdate()) FROM stagiaire

Page 43: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

43

La fonction DATEPART

Renvoie un entier représentant l'élément de date précisé dans la date spécifiée.

Syntaxe :DATEPART ( intervalle , date )

Exemple :SELECT DATEPART(month, dn)

FROM stagiaire

Page 44: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

44

DAY, MONTH et YEAR

Ces fonctions renvoient respectivement le jour, mois et année d’une date donnée

Syntaxes : DAY ( date ) MONTH ( date ) YEAR (date)

Page 45: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

45

TP06: gestion des dates (30mn)

Développer les requêtes suivantes : Liste des nom et année de naissance des

stagiaires Liste des noms et ages des stagiaires Liste des stagiaires nés un Jeudi Liste des stagiaires nés au mois de Juillet Les noms et prénoms des stagiaires nés

entre 15/3/1985 et le 14/3/1987

Page 46: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

46

Fonctions de conversion de type

STR Convertit un nombre en chaîne de caractère ASCII Renvoie le code ASCII du caractère placé à

l'extrême gauche d'une expression de caractères CHAR : convertit un code ASCII int en un caractère CAST et CONVERT : Convertit explicitement une

expression d'un type de données en une expression d'un type de données différent. CAST et CONVERT offrent la même fonctionnalité.

Page 47: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

47

Interroger plusieurs tables

Le produit cartésienL’équi-jointureL’auto-jointureLes jointures externesOpérations ensemblistes

Page 48: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

48

Le produit cartésien Le produit de deux tables permet d’obtenir toutes les combinaisons de lignes de ces deux

tablesSELECT * FROM stagiaire, groupe

cin nom codeg

B2501 Ali tdi1a

C2103 Laila tdi1a

D1254 Said tdi1a

codeg nomg

tdi1a Groupe A

tdi1b Groupe B

cin nom codeg codeg nomg

B2501 Ali tdi1a tdi1a Groupe A

C2103 Laila tdi1a tdi1a Groupe A

D1254 Said tdi1a tdi1a Groupe A

B2501 Ali tdi1a tdi1b Groupe B

C2103 Laila tdi1a tdi1b Groupe B

D1254 Said tdi1a tdi1b Groupe B

XX

==

Page 49: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

49

L’equi-jointure On appelle équi-jointure une jointure dont la qualification est une égalité entre

deux colonnes.Select * FROM stagiaire, groupe

WHERE stagiaire.codeg = groupe.codeg

Select * FROM stagiaire INNER JOIN groupe ON stagiaire.codeg = groupe.codeg

cin nom codeg codeg nomg

B2501 Ali tdi1a tdi1a Groupe A

C2103 Laila tdi1a tdi1a Groupe A

D1254 Said tdi1a tdi1a Groupe A

B2501 Ali tdi1a tdi1b Groupe B

C2103 Laila tdi1a tdi1b Groupe B

D1254 Said tdi1a tdi1b Groupe B

===≠≠≠

Page 50: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

50

Alias de table

Il est possible d’utiliser des aléas des tables utilisé dans une jointure pour simplifier l’écriture de la requête SQL

Exemple :SELECT nom, nomg

FROM stagiaire s, groupe g

WHERE s.codeg = g.codeg

Page 51: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

51

L’auto-jointure

C'est une jointure d'une table avec elle-même Utile lorsqu'on souhaite relier des attributs qui

se trouvent à l'intérieur d'une même table

Exemple : afficher les couples de stagiaires (noms) nés à la même villeSELECT s1.nom, s2.nomFROM stagiaire s1, stagiaire s2WHERE s1.ln = s2.lnAND s1.cin<>s2.cin

Page 52: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

52

Les jointures externes

Une equi-jointure ne renvoie des lignes que si la colonne de jointure d'une table est égale à la colonne de jointure de l'autre table

Il peut être utile d'afficher toutes les lignes d'une table qu'il y ait ou non correspondance avec l'autre table de jointure

Les colonnes pour lesquelles il n'y a pas de correspondance sont remplies avec la valeur NULL

Cette opération s'appelle une jointure externe Il existe deux type de jointures externes : jointure externe

gauche et jointure externe droite Notation

Jointure externe gauche *= ou LEFT JOIN

Jointure externe droite =* ou RIGHT JOIN

Page 53: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

53

TP07 : les jointures (30mn)

Commencer par ajouter les tables suivantes à la BD : Module( codem, nomm) Resultat( cin, codem, controle,efm)

Mettre à jour le diagramme de la BD Remplir la table des modules et ajouter quelques

enregistrements dans la table des résultats Télécharger et attacher la BD efp2 puis développer

les requêtes suivantes : Produit cartésien des tables stagiaire et module Liste des noms et notes des stagiaires Modifier la requête précédente pour afficher même les

stagiaires qui n’ont pas de note

Page 54: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

54

Opérations ensemblistes

L’opérateur UNIONL’opérateur INTERSECTL’opérateur MINUS

Page 55: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

55

L’opérateur UNION

Exemple : on souhaite créer une liste comprenant les 10 meilleurs stagiaires par rapport à la note du bac avec une répartition équitable par sexe (5 garçons et 5 filles)(SELECT top 5 *

FROM stagiaire WHERE sexe=‘F’

ORDER BY nb DESC)

UNION

(SELECT top 5 *

FROM stagiaire WHERE sexe=‘M’

ORDER BY nb DESC)

Page 56: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

56

L’ opérateur INTERSECT

Exemple : on souhaite obtenir les noms des stagiaires de sexe masculin ayant une note du bac supérieure à 12

Solution ensembliste(SELECT nom FROM stagiaire WHERE sexe=‘M’)

INTERSECT(SELECT nom FROM stagiaire WHERE nb>12)

Solution prédicativeSELECT nom FROM stagiaire WHERE sexe=‘M’ AND nb>12

Page 57: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

57

L’opérateur MINUS

On voudrait obtenir les noms des stagiaires féminins qui ne sont pas nés à FES

Solution ensemblisteSELECT nom FROM stagiaireWERE sexe=’F’

MINUSSELECT nom FROM stagiaireWHERE ln=‘FES’

Solution prédicativeSELECT nom FROM stagiaireWHERE sexe=‘F’ and ln<>’FES’

Page 58: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

58

Donner les versions ensemblistes et prédicatives des requêtes suivantes : Noms des stagiaires masculins ayant moins

de 20 ans Noms des stagiaires du groupe TSDI2A qui ne

sont pas né à TAZA,SEFROU ou TAOUNATE Une liste contenant 3 stagiaires né à FES et 3

né à SEFROU ayant obtenu la meilleurs note au bac

TP08 : opérateurs ensemblistes (20mn)

Page 59: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

59

Regrouper les lignes d’une table

Il peut être intéressant de regrouper des lignes afin de faire des opérations par groupe (opérations statistiques par exemple)

Cette opération se réalise à l'aide de la clause GROUP BY, suivie du nom de chaque colonne sur laquelle on veut effectuer des regroupements.

Page 60: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

60

Fonctions d’agrégation

FONCTION D’AGREGATION DESCRIPTION

AVG([DISTINCT|ALL]n) Valeur moyenne de n, en ignorant les valeurs NULL (AVERAGE)

COUNT({*|[DISTINCT|ALL]expr}) Nombre de lignes, où expr est différent de NULL. Le caractère * comptabilise toutes les lignes sélectionnées y compris les doublons et les lignes NULL

MAX([DISTINCT|ALL]expr) Valeur maximale de expr, en ignorant les valeurs NULL

MIN([DISTINCT|ALL]expr) Valeur minimale de expr, en ignorant les valeurs NULL

SUM([DISTINCT|ALL]n) Somme des valeurs de n, en ignorant les valeurs NULL

Page 61: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

61

Clause GROUP BY

Cette clause permet de créer des sous-ensembles de lignes pour lesquels la valeur d'une (ou plusieurs) colonne est identique

Exemple : calculer la moyenne des notes du bac pour chaque groupe

SELECT codeg, avg(nb)

FROM stagiaire

GROUP BY codeg

Page 62: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

62

La clause HAVING

Cette clause, contrairement à la clause WHERE qui précise les conditions à appliquer sur les lignes d'une table, permet de préciser des conditions au niveau des sous-ensembles créés par GROUP BY

Exemple : reprendre la requête précédente mais afficher uniquement les ligne dont la moyenne est supérieur à 12.5

SELECT codeg, avg(nb) FROM stagiaireGROUP BY codegHAVING avg(nb) > 12.5

Page 63: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

63

Règle de regroupement

Toutes les colonnes qui apparaissent après la clause SELECT, sujette à un regroupement, doivent :

Soit faire partie d’une fonction d’agrégation

Soit apparaître dans la clause GROUP BY

Page 64: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

64

Développer les requêtes suivantes : Moyenne des notes de contrôle par module d’abord en

affichant le codem et la moyenne, ensuite en affichant le nomm et la moyenne

Nombre total de stagiaires Nombre de stagiaires de chaque groupe Note maximale et note minimale pour chaque module Moyenne de tous les contrôles par stagiaire. Afficher

seulement ceux dont la moyenne est supérieur à 11.75 Moyenne des efm des stagiaires de sexe féminin Combien y’a-t-il de lieux de naissance distincts Combien y’a-t-il de prénoms différents par groupe

TP09 : regrouper des données (30mn)

Page 65: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

65

Sous requêtes

Une sous requête est une requête SELECT qui renvoie une valeur unique et est imbriquée dans une autre instruction SELECT

Les instructions contenant une sous-requête se présentent généralement sous une des formes suivantes : WHERE expression [NOT] IN (sous requête) WHERE expression opérateur_comparaison [ANY |

ALL] (sous requête) WHERE [NOT] EXISTS (sous requête)

Page 66: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

66

Sous requêtes et l’opérateur IN

Exemple : liste des stagiaires n’ayant pas de note au module 3 :

SELECT nom, prenom

FROM stagiaire

WHERE cin NOT IN (SELECT cin FROM resultat

WHERE codem=3)

Page 67: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

67

Sous requêtes et l’opérateur ALL/ANY Exemple : le stagiaire ayant la plus hausse

note du bac :

SELECT nom, prenom,nb

FROM stagiaire

WHERE nb > ALL

(SELECT nb FROM stagiaire)

Page 68: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

68

Sous requêtes et l’opérateur EXISTS

Exemple : liste des modules pour lesquels il existe au moins une note attribuée à un stagiaire :

SELECT * FROM module

WHERE EXISTS

(SELECT * FROM resultat

WHERE codem=module.codem)

Page 69: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

69

TP10 sous requêtes (20mn)

Développer les requêtes suivantes : Liste des stagiaires n’ayant pas de note pour

le module 2 Liste des stagiaires ayant eu la meilleur note

au module 3 Liste des stagiaires ayant eu la dernière note

au module 3

Page 70: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

70

Page 71: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

71

2. Exploiter l'environnement du SGBDR pour interroger une BD L'Analyseur de requêtes SQL permet : créer des requêtes et autres scripts SQL procéder au débogage en cas de problème de

performances des requêtes (Afficher le plan d'exécution, Afficher la trace du serveur, Afficher les statistiques du client, Assistant Paramétrage d'index)

localiser des objets dans les bases de données insérer, mettre à jour ou supprimer rapidement des

lignes dans une table (fenêtre Ouvrir une table) Vous pouvez exécuter l'Analyseur de requêtes SQL

directement à partir du menu Démarrer ou de SQL Server Enterprise Manager. Une autre possibilité consiste à lancer l'application à partir de l'invite de commandes, en exécutant l'utilitaire isqlw.

Page 72: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

72

Page 73: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

73

3. Exploiter les commandes de description de données Principaux objets d'une base de données Créer une base de données Créer une table Types de données des colonnes Modifier la définition d’une table Supprimer une table

Page 74: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

74

Principaux objets d'une base de donnéesObjet Description

Table Unité de stockage élémentaire, composée de lignes et de colonnes

Vue Représente de manière logique des sous-groupes de données

Index Améliore les performances de certaines requêtes

Page 75: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

75

Créer une base de données

CREATE DATABASE efp Crée une bd nommée efp

ON

( NAME = ‘efp_data’, Nom logique du fichier de données

FILENAME = 'd:\demo\efp_dat.mdf', Nom physique sur le disque

SIZE = 10, MAXSIZE = 50, Taille initiale et taille maximale

FILEGROWTH = 5 ) Croissance du fichier de données

LOG ON

( NAME = ‘efp_log', Nom logique du jurnal

FILENAME = 'd:\demo\efp_log.ldf', Nom physique sur le disque

SIZE = 5MB, MAXSIZE = 25MB, Taille initiale et taille maximale

FILEGROWTH = 5MB ) Croissance du fichier journal

Page 76: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

76

Créer une table

CREATE TABLE nomtable

(colonne1 definitionType, colonne2 definitionType, ….)

Cet ordre fait partie d'une série d'ordres appartenant au langage de définition des données (LDD) qui sera étudié dans les prochains chapitres.

Exemple :CREATE TABLE resultat

(cin varchar(12), codem int, controle float, efm float,

Moyenne AS (controle + efm)/3 )

Page 77: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

77

L’option DEFAULT

On peut déclarer une valeur par défaut pour une colonne en utilisant l'option DEFAULT

Cette option empêche l'insertion de valeurs

NULL dans une colonne lors de l'ajout d'une ligne

Page 78: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

78

Types de données des colonnes

Type de données Syntaxe Description

Alphanumérique CHAR(n) Chaîne de caractères de longueur fixe n (n<16383)

VARCHAR(n) Chaîne de caractères de n caractères maximum (n<16383)

Numérique NUMBER(n [,d]) Nombre de n chiffres [optionnellement d après la virgule]

SMALLINT Entier signé de 16 bits (-32768 à 32767)

INT Entier signé de 32 bits (-2E31 à 2E31-1)

FLOAT Nombre à virgule flottante

Horaire DATE Date sous la forme 16/07/99

TIME Heure sous la forme 12:54:24.85

TIMESTAMP Date et Heure

Page 79: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

79

Modifier la définition d’une table

Il est possible modifier la structure d’une table pour ajouter, par exemple, une colonne oubliée ou changer une définition de colonne existante

Cela est possible grâce à la commande ALTER TABLE

Vous pouvez ajouter des colonnes à une table en utilisant l'ordre ALTER TABLE avec la clause ADD

Exemple :ALTER TABLE resultat

ADD appreciation VARCHAR(60)

Page 80: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

80

Supprimer une table

Pour supprimer une table, tapez la commande :

DROP TABLE <nom de la table>

Exemple : suppression de la table des résultats:

DROP TABLE resultat

Page 81: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

81

TP11 Description des données (1h)

En utilisant Enterprise manager, Créer la base de données test puis, avec l’analyseur de requêtes :

Créer la table « groupe » Créer la table « stagiaire » Créer la table « resultat » Créer la table « module »

Page 82: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

82

Contraintes

NOT NULL PRIMARY KEY FOREIGN KEY UNIQUE CHECK

Page 83: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

83

NOT NULL

La contrainte NOT NULL interdit la présence de valeurs NULL dans la colonne à laquelle elle s'applique

Par défaut, les colonnes peuvent contenir des valeurs NULL

Exemple :CREATE TABLE groupe

(codeg int, nomg varchar(30) NOT NULL)

Page 84: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

84

PRIMARY KEY

Une contrainte PRIMARY KEY crée une clé primaire pour la table

La contrainte PRIMARY KEY est une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne d'une table

garantit qu'aucune colonne faisant partie de la clé primaire ne contient de valeur NULL

Exemple :CREATE TABLE groupe

(codeg varchar(6), nomg varchar(30) NOT NULL, CONSTRAINT pk_groupe PRIMARY KEY(codeg) )

Page 85: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

85

FOREIGN KEY La contrainte FOREIGN KEY, ou contrainte d'intégrité

référentielle, désigne une colonne ou une combinaison de colonnes comme étant une clé étrangère

établit une relation avec une clé primaire

Exemple :CREATE TABLE stagiaire

(cin varchar(12), nom varchar(30), … ,codeg varchar(6),CONSTRAINT pk_stagiaire PRIMARY KEY (cin),CONSTRAINT fk_groupe FOREIGN KEY (codeg)

REFERENCES groupe(codeg)ON DELETE NO ACTION ON UPDATE CASCADE

)

Page 86: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

86

UNIQUE

Une contrainte d'intégrité de type clé UNIQUE exige que chaque valeur dans une colonne ou dans un ensemble de colonnes (la clé) soit unique

Exemple :CREATE TABLE stagiaire

(cin varchar(12), ni int, nom varchar(30), … ,codeg varchar(6),CONSTRAINT pk_stagiaire PRIMARY KEY (cin),CONSTRAINT fk_groupe FOREIGN KEY (codeg) REFERENCES groupe(codeg),CONSTRAINT uk_ni UNIQUE (ni) )

Page 87: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

87

CHECK

La contrainte CHECK définit une condition que chaque ligne doit obligatoirement satisfaire

Exemple :CREATE TABLE stagiaire

(cin varchar(12), nom varchar(30),

sexe CHAR(1),… ,

CHECK (sexe=‘F’ or sexe=‘M’) )

Page 88: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

88

Suppression d’un contrainte

Utilisez l'ordre ALTER TABLE avec la clause DROP

L'option CASCADE provoque également la suppression de toutes les contraintes associées

Exemple :ALTER TABLE stagiaire

DROP CONSTRAINT fk_groupe

Page 89: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

89

TP12 contraintes (1h)

Ajouter aux tables de la base de données test les éléments suivants :

Clés primaires Clés étrangères avec mise à jour en cascade Les notes doivent être comprises entre 0 et

20 Le sexe doit être ‘F’ ou ‘M’ avec ‘F’ comme

valeur par défaut Les notes ne doivent pas accepter NULL

Page 90: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

90

Page 91: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

91

4. Exploiter les commandes de manipulation des données Ajout d’une ligne Ajout de plusieurs lignes avec SELECT Insertion de valeurs NULL Modification de ligne Suppression d’une ligne

Page 92: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

92

Ajout d’une ligne

Pour ajouter de nouvelles lignes dans une table, utilisez l'ordre INSERT

Syntaxe : INSERT INTO table [(colonne1, colonne2 … )]

Values (valeur1, valeur2, … )

Exemple :

INSERT INTO groupe (codeg, nomg)

VALUES (‘TDI1A’, ‘Techniques Dév Info 1 groupe A’)

Page 93: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

93

Ajout de plusieurs lignes avec SELECT Il est possible d’insérer le résultat d’une

requête SELECT dans une table

Exemple : archivage de la liste des stagiairesINSERT INTO archive_stagiaire

SELECT * FROM stagiaire

Page 94: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

94

Insertion de valeurs NULL

Si une colonne n'est pas explicitement spécifiée dans la liste, elle reçoit automatiquement une valeur NULL

Méthode implicite : ajout d’un groupe sans fournir de valeur pour le nom du groupe :

INSERT INTO groupe (codeg)

VALUES (‘TDI1A’)

Méthode explicite : spécifiez le mot-clé NULL INSERT INTO groupe (codeg, nomg)

VALUES (‘TDI1A’, NULL)

Page 95: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

95

Modification de ligne

Vous pouvez modifier des lignes existantes au moyen de l'ordre UPDATE

Syntaxe :UPDATE tableSET colonne1=valeur1, colonne2=valeur2 …[WHERE condition]

Exemple :UPDATE stagiaire SET adresse =’19, hay saada 2 Fès’WHERE cin = ‘c150’

UPDATE resultat SET note = note + 1WHERE codem=1

Page 96: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

96

Suppression d’une ligne

Vous pouvez supprimer des lignes existantes au moyen de l'ordre DELETE

Syntaxe :DELETE [FROM] tableWHERE condition

Exemple :DELETE resultat WHERE note is null

Page 97: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

97

TP13 manipulation des données (30mn)

Ajouter un groupe à la table groupe Code : ‘TDI2A’ nom : ‘Techniques dév. Info 2 A’

Ajouter un stagiaire du groupe TDI2A à la table stagiaire

Supprimer le groupe TDI2A. Que constatez vous et pourquoi ?

Supprimer les stagiaires qui ont une note du bac inférieure à 11. Que constatez vous et pourquoi ?

Tous les stagiaires de première année sont admis en deuxième année, écrire la requête qui permet de modifier leur groupe

Page 98: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

98

Page 99: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

99

5. Gérer des transactions

Qu’est ce qu’une transaction Démarrage des transactions Fin des transactions BEGIN TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION

Page 100: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

100

Qu’est ce qu’une transaction

Les transactions offrent un mécanisme de regroupement d'une série de modifications de base de données dans une opération logique

Une fois les modifications apportées à la base de données, elles peuvent être validées ou annulées comme une seule unité

Page 101: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

101

Démarrage des transactions

Vous pouvez lancer des transactions explicites, implicites ou en mode de validation automatique

Transactions explicitesTransactions explicites : Pour démarrer une transaction explicite, utilisez l'instruction BEGIN TRANSACTION.

Transactions en mode de validation automatiqueTransactions en mode de validation automatique : C'est le mode par défaut de SQL Server. Chaque instruction est validée lorsqu'elle se termine. Il est inutile de spécifier des instructions de contrôle des transactions.

Transactions implicitesTransactions implicites : Vous pouvez activer le mode de transaction implicite en utilisant l'instruction SET IMPLICIT_TRANSACTIONS ON. L'instruction suivante démarre automatiquement une nouvelle transaction. La transaction est active jusqu'à l'exécution d'une instruction COMMIT ou

ROLLBACK

Page 102: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

102

Fin des transactions

Vous pouvez terminer une transaction par une instruction COMMIT ou ROLLBACK.

COMMITCOMMIT : garantit que toutes les modifications effectuées sur la base de données au cours de la transaction sont permanentes

ROLLBACKROLLBACK : annule toutes les modifications effectuées par la transaction en rétablissant les données dans l'état où elles étaient avant le début de celle-ci

Page 103: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

103

BEGIN TRANSACTION

Indique le début d'une transaction locale explicite

Syntaxe :

BEGIN TRANSACTION

Page 104: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

104

COMMIT TRANSACTION

Marque la fin d'une transaction réussie implicite ou définie par l'utilisateur

Syntaxe :COMMIT TRANSACTION

Page 105: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

105

ROLLBACK TRANSACTION

Annule une transaction implicite ou explicite jusqu'au début de la transaction ou jusqu'au dernier point d'enregistrement à l'intérieur de la transaction

Syntaxe :ROLLBACK TRANSACTION

Page 106: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

106

TP14 : les transactions

La table compte comprend les champs suivants : numéro, nom et solde

Simuler une panne du serveur après l’exécution d’une partie d’une transaction. Cette transaction comprend deux commandes update qui permettent d’effectuer un virement de 1000DH du compte n°100 vers le compte n°200Begin transactionUpdate compte set solde = solde -1000 where numero = 100(panne du serveur = arrêter puis redémarrer le serveur)Update compte set solde = solde -1000 where numero = 200Commit transaction

Que constatez vous?

Page 107: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

107

Page 108: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

108

6. Utiliser les différents types d’objets sur une base de données Les vues Les index

Page 109: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

109

Les vues

Une vue est une table virtuelle dont le contenu est défini par une requête

Une vue ressemble à une table réelle, avec un ensemble de colonnes nommées et de lignes de données

Une vue n'existe pas en tant qu'ensemble de valeurs de données stocké dans une base de données

Les lignes et les colonnes de données proviennent de tables référencées dans la requête qui définit la vue et sont produites dynamiquement lorsque la vue est utilisée

Page 110: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

110

Avantages des vues

Limiter l'accès à la base de données en affichant une sélection de celle-ci

Simplifier la consultation des données. Une vue peut être utilisée pour extraire les données de plusieurs tables.

Permet à des groupes d'utilisateurs d'accéder aux données en fonction de leurs critères particuliers

Page 111: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

111

Création d’une vue

Vous pouvez créer une vue en utilisant l'ordre CREATE VIEW suivi du nom de la vue, du mot AS et d’une requête SQL

Exemple :CREATE VIEW filles ASSELECT * FROM stagiaire WHERE sexe=‘F’

CREATE VIEW garcons ASSELECT * FROM stagiaire WHERE sexe=‘M’

Page 112: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

112

Suppression d’une vue

DROP VIEW supprime une vue dans la base de données courante

Exemple : DROP VIEW garcons

Page 113: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

113

Les index

Les index des bases de données sont similaires aux index que l'on trouve dans les livres

L'index d'un livre vous permet de rechercher rapidement des informations sans lire la totalité de l'ouvrage

Celui d'une base de données permet de rechercher des données dans une table sans analyser la table tout entière

L'index d'un livre est une liste de mots accompagnés du numéro de page où ils se trouvent

L'index d'une base de données est une liste des valeurs d'une colonne accompagnées des emplacements de stockage des lignes où les valeurs se trouvent

Un index peut être créé dans une table, soit sur une seule colonne, soit sur un ensemble de colonnes

Page 114: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

114

Index ordonné et index unique

Lorsque vous créez un index ordonné en clusters, la table est copiée, les données de la table sont triées et la table initiale est supprimée

La création d'un index unique garantit l'échec de toute tentative d'entrer des valeurs de clé en double

Page 115: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

115

Création d’un index

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX nom_index ON { table | vue } ( colonne [ ASC | DESC ] [ ,...n ] )

Exemple :

CREATE UNIQUE INDEX idx_inscription

ON stagiaire (nins)

CREATE INDEX idx_nom

ON stagiaire (nom)

Page 116: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

116

TP15 vues et index (1h)

Créer des vues à partir des requêtes du TP09

Ajouter un index unique comprenant les deux colonnes nom et prénom des stagiaires

Page 117: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

117

Page 118: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

118

7. Sécuriser les données

SYSTEME D’EXPLOITATION

SYSTEME DE GESTION DE BASE DE DONNEES

BASE DE DONNEES

OBJETS DE LA BASE DE DONNEES

Page 119: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

119

Modes d'authentification

SQL Server peut fonctionner selon deux modes de sécurité :

mode d'authentification Windows : Ce mode permet à l'utilisateur de se connecter par le biais d'un compte utilisateur Windows

mode mixte (authentification Windows et authentification SQL Server) : ce mode permet aux utilisateurs de se connecter à SQL Server à l'aide d’un compte Windows ou d’un compte propre à SQL Server

Page 120: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

120

Rôles

Les rôles sont de puissants utilitaires permettant de réunir les utilisateurs en une seule unité à laquelle il est possible d'appliquer des autorisations

Les autorisations octroyées à un rôle, refusées ou révoquées s'appliquent aussi aux membres du rôle.

Vous pouvez créer un rôle représentant un poste rempli par une catégorie de collaborateurs, lui octroyer les autorisations appropriées.

Chaque fois qu'un collaborateur passe à un autre travail, il suffit de l'ajouter comme membre du rôle.

Il n'est pas nécessaire d'accorder, de refuser ou de révoquer les autorisations de chaque utilisateur à chaque fois qu'il accepte ou qu'il quitte un travail.

Elles sont automatiquement appliquées aux utilisateurs dès qu'ils deviennent membres du rôle

Page 121: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

121

Rôle de serveur fixe

Rôle Description

sysadmin Exécute n'importe quelle opération dans SQL Server

serveradmin Configure les paramètres au niveau du serveur.

setupadmin Ajoute et supprime les serveurs liés et exécute certaines procédures système stockées telles que sp_serveroption.

securityadmin Gère les connexions au serveur.

processadmin Gère les traitements s'exécutant dans une instance de SQL Server.

dbcreator Crée et modifie les bases de données.

diskadmin Gère les fichiers sur disque.

bulkadmin Exécute l'instruction BULK INSERT.

Page 122: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

122

Rôles de base de données fixes rôle utilisation

public par défaut

db_owner Propriétaire de la BD, possède toutes les autorisations sur la BD.

db_accessadmin gère les accès : ajoute ou supprime des utilisateur.

db_securityadmin gère les droits : accès, propriétés d'objet, rôles et membres des rôles

db_ddladmin Exécute les commandes de description de données (DDL)

db_backupoperator

opérateur de sauvegarde (mais pas de restauration !). Lance les instructions DBCC, CHECKPOINT et BACKUP.

db_datareaderdroit de consultation des données de la base (lecture uniquement). Sélectionne toutes les données de toutes les tables utilisateur dans la base de données.

db_datawriterdroit en lecture, écriture des données de la base. Modifie les données de toutes les tables utilisateur dans la base de données.

db_denydatareader révocation des droits en lecture sur tous les objets de la base

db_denydatawriter révocation des droits en écriture sur tous les objets de la base

Page 123: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

123

Administrateur système (sa = system administrator) Compte sql server par défaut Il est affecté au rôle de serveur sysadmin et

ne peut pas être modifié Par défaut le compte sa possède un mot de

passe vide Assignez un mot de passe au compte sa pour

vous prémunir contre tout accès non autorisé

Page 124: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

124

Propriétaire de la base de données (dbo, DataBase Owner) dbo est un utilisateur qui possède les autorisations

implicites nécessaires pour effectuer toutes les activités dans la base de données

L'utilisateur dbo ne peut pas être supprimé et est toujours présent dans toutes les bases de données

Si l'utilisateur rachid, membre du rôle de serveur sysadmin, crée une table T1, celle-ci appartiendra à dbo et sera désignée par dbo.T1, et non rachid.T1.

Si rachid est seulement membre du rôle de base de données db_owner, et qu'il crée une table T1, celle-ci appartiendra à rachid et sera désignée par rachid.T1

Page 125: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

125

Autoriser un compte Windows à accéder à SQL server Cet exemple montre comment accorder à un

compte Windows l'accès à une base de données et comment associer la connexion à un utilisateur de la base de données : (sp = stored procedure procédure stockée)

USE master sp_grantlogin ‘domaine\said’sp_defaultdb @loginame = ‘said', defdb = ‘efp‘USE efpsp_grantdbaccess ‘said’, ‘said’

Page 126: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

126

Ajout d'utilisateurs et de connexionsL'ajout d'un utilisateur affectés à des rôles prédéterminés se fait en deux temps :

1. création de la connexion 2. ajout d'un utilisateur et de son rôle

Les procédures stockées à utiliser sont les suivantes :

sp_addlogin 'connexion', 'mot_de_passe', 'base_cible‘sp_adduser 'connexion', 'utilisateur', 'rôle‘

il est nécessaire d'utiliser la base de données cible.

Exemple : création de l’utilisateur hamid dont le mot de passé kw7E.6J et possédant le rôle de lecteur uniquement :

exec sp_addlogin ‘hamid', 'kw7E.6J', ‘efp' sp_adduser ‘hamid', 'u_hamid', 'db_datareader'

Page 127: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

127

Octroi de permission

Accordez des autorisations d'instruction et d'objet qui permettent à un compte utilisateur:

d'effectuer des opérations ou de travailler avec des données dans la base de données en cours

de les restreindre quant aux opérations et informations qui ne font pas partie de leur fonction

Page 128: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

128

Ajout d'un membre à un rôle

sp_addrolemember ajoute un compte comme membre du rôle de base de données

Syntaxe :sp_addrolemember 'role' , ‘compte'

Exemple :

sp_addrolemember ‘comptable', ‘said'

Page 129: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

129

GRANT Permet à un utilisateur de travailler avec les données de la base

ou d'exécuter des instructions particulières. Autorisations sur une instruction :

GRANT { ALL | instruction [ ,...n ] } TO compte [ ,...n ]

ALL : Accorde toutes les autorisations Instruction : Nom de l'instruction pour laquelle l'autorisation

est accordée. La liste des instructions peut inclure : CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE, BACKUP LOG

Exemples : GRANT ALL to said GRANT CREATE VIEW to rachid

Page 130: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

130

GRANT

Autorisations sur un objet :GRANT

    { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( colnne [ ,...n ] ) ] ON { table | vue         | ON { table | vue } [ ( colonne [ ,...n ] ) ]     } TO compte [ ,...n ]

Exemples : GRANT SELECT ON module TO public GRANT INSERT, UPDATE, DELETE ON stagiaire TO

fatima, said, ali

Page 131: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

131

Refus d'autorisation

supprime une autorisation précédemment accordée à l'utilisateur ou au rôle

désactive une autorisation héritée d'un ou de plusieurs autres rôles

vous assure qu'un utilisateur ou un rôle n'héritera pas à l'avenir d'une autorisation

Page 132: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

132

DENY Autorisations sur une instruction :

DENY { ALL | instruction [ ,...n ] } TO compte [ ,...n ]

Autorisations sur un objet :DENY     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( colonne [ ,...n ] ) ] ON { table | vue         | ON { table | vue } [ ( colonne [ ,...n ] ) ]     } TO compte [ ,...n ] [ CASCADE ]

Exemple :GRANT SELECT ON stagiaire TO publicDENY SELECT, INSERT, UPDATE, DELETE ON stagiaire TO laila, driss

Page 133: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

133

Retrait d'autorisation

Vous pouvez retirer une autorisation précédemment accordée ou refusée

Le retrait d'une autorisation est similaire à un refus dans la mesure où les deux actions suppriment une autorisation accordée au même niveau

Cependant, cela n'empêche pas l'utilisateur, le groupe ou le rôle d'hériter d'une autorisation accordée à un niveau supérieur.

Par conséquent, si vous retirez l'autorisation d'affichage d'une table accordée à un utilisateur, il est possible que celui-ci puisse encore l'afficher parce que l'autorisation avait été accordée à un rôle auquel il appartient

Page 134: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

134

REVOKE Autorisations sur une instruction :

REVOKE { ALL | instruction [ ,...n ] } FROM compte [ ,...n ]

Autorisations sur un objet :REVOKE     { ALL [ PRIVILEGES ] | permission [ ,...n ] }     {         [ ( colonne [ ,...n ] ) ] ON { table | vue         | ON { table | vue } [ ( colonne [ ,...n ] ) ]     } FROM compte [ ,...n ] [ CASCADE ]

Exemple :REVOKE CREATE TABLE FROM aliREVOKE SELECT ON stagiaire FROM meryem

Page 135: SYSTÈME DE GESTION DE BASES DE DONNÉES Animateur : M. HAIJOUBI

135

TP16 : sécurité

Changer la sécurité du serveur et passer à la sécurité mixte Créer les comptes et les rôles suivants :

Aziz et Driss : directeurs Rachida, said et mourad : surveillance générale Mounia, fatima, khalid : formateurs

Accorder au rôle directeur tous les droits sur la base de données efp

Accorder au rôle surveillant le droit de lecture des tables groupe et stagiaire

Accorder au rôle formateur le droit de lecture sur toutes les tables et le droit d’écriture sur la table resultat

Retirer à l’utilisateur mourad le droit de lecture de la colonne adresse de la stagiaire

Autoriser said à modifier l’adresse