Вы находитесь на странице: 1из 135

SYSTME DE GESTION DE BASES DE DONNES

Animateur : M. HAIJOUBI

SOMMAIRE
1. 2. 3. 4. 5. 6. 7.

Traduire les oprations de lalgbre Relationnelle en requtes SQL. Exploiter l'environnement du SGBDR pour interroger une base de donnes. Exploiter les commandes de description de donnes. Exploiter les commandes de manipulation des donnes. Grer des transactions. Utiliser les diffrents types dobjets sur une base de donnes. Scuriser les donnes.
2

1. Traduire les oprations de lalgbre Relationnelle en requtes SQL


  

Lalgbre relationnelle Le langage SQL Utiliser Lordre SELECT

Base de donnes exemple : Groupe(codeg,nomg) stagiaire(cin,nom,prnom,adresse,dn,ln,sexe, nb,codeg)


4

Lalgbre relationnelle
 L'algbre 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 matrise de l'algbre relationnelle permet de concevoir n'importe quelle requte aussi complexe soit elle avant de la mettre en uvre l'aide du langage SQL  Les oprations de base
  

Projection Slection Jointure

 Les oprations ensemblistes  Union  Intersection  Diffrence  Produit cartsien

La projection
 

Opration qui consiste extraire toutes lignes dune table pour un sous ensemble de colonnes Exemple :
Liste des nom,prnom des stagiaires Select nom,prnom from stagiaire

nom Saadi

prnom Maha

ln Fes

dn 12/10/1988 11/08/1986

Amrani Med

Sefrou 30/12/1987

Ayachi Rachida Fes

SELECT nom, prnom FROM stagiaire

nom Saadi

prnom Maha
6

Amrani Med Ayachi Rachida

La slection
  

Permet de retenir les lignes rpondant une condition de slection La condition est exprime l'aide des oprateurs =, >, <, >=, <=, <>, oprateurs logiques de base ET, OU, NON et ventuellement des parenthses Exemple : SELECT * FROM stagiaire WHERE ln=FES

nom Saadi

prnom Maha

ln Fes

dn 12/10/1988 11/08/1986

Amrani Med

Sefrou 30/12/1987

Ayachi Rachida Fes

SELECT nom, prnom FROM stagiaire Where ln=Fes

nom Saadi

prnom Maha

ln Fes

dn 12/10/1988 11/08/1986
7

Ayachi Rachida Fes

La jointure
 

Cet oprateur porte sur 2 tables qui doivent avoir au moins un attribut dfini dans le mme domaine La condition de jointure peut porter sur l'galit d'un ou de plusieurs attributs dfinis dans le mme domaine

nom Amrani Saadi Ayachi

prnom Med Maha Rachida

ln Sefrou Fes Fes

dn 30/12/1987 12/10/1988 11/08/1986

codeg
TDI1B TDI1A TDI1C

codeg
TDI1A TDI1B TDI1C

nomg
Groupe A Groupe B Groupe C

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

nom Amrani Saadi Ayachi

prnom Med Maha Rachida

ln Sefrou Fes Fes

dn 30/12/1987 12/10/1988 11/08/1986

codeg
TDI1B TDI1A TDI1C

codeg
TDI1B TDI1A TDI1C

nomg
Groupe B Groupe A Groupe C
8

Union (OU)
 Cet oprateur porte sur deux tables qui doivent avoir

le mme nombre d'attributs dfinis dans le mme domaine. On parle de tables ayant le mme schma.  La table rsultat possde les attributs des tables d'origine et les lignes de chacune, avec ou sans limination des doublons ventuels.

Intersection (ET)
 Cet oprateur porte sur deux tables de mme

schma  La table rsultat possde les attributs des tables d'origine et les lignes communes chacune.

10

Diffrence
 Cet oprateur porte sur deux tables de mme

schma  La table rsultat contient les lignes de la premire table qui n'appartiennent pas la deuxime

11

Produit cartsien
 Cet oprateur porte sur deux tables  La table rsultat est form par la concatnation de

chaque ligne de la premire table avec l'ensemble des lignes de la deuxime

12

TP01 : Cration de la BD (30mn)


 Dans cet exercice vous allez utiliser SQL Server pour

     

crer la base de donnes EFP comprenant les deux tables : groupe et stagiaire. Dmarrer SQL Enterprise manager Enregistrer votre serveur Crer la base de donnes Crer les tables Crer le schma de la base de donnes Utiliser lanalyseur de requtes pour interroger la BD

13

Le langage SQL
 En 1970, SQL (Standard Query Language, en franais langage

de requtes structures ) est n la suite des travaux mathmatiques de Codd (Directeur de recherche du centre IBM San-Jos) , travaux qui ont fond les bases de donnes 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 (+ intgrit) SQL2 en 1992 SQL3 en 1999  Aujourd'hui SQL constitue le point d'entre obligatoire sur une Base de Donne relationnelle.
14

Utiliser lordre SELECT


SELECT [DISTINCT] */liste dattributs FROM nom(s) de table(s) WHERE condition de slection GROUP BY nom de lattribut de regroupement HAVING condition de regroupement ORDER BY critre(s) de tri
[ UNION | INTERSECT | MINUS

SELECT .. ]
15

DISTINCT
 Le rsultat dun SELECT tant un ensemble, il peut y

avoir des doublons  Le mot cl DISTINCT permet de prciser que lon ne veut quun seul exemplaire de ces enregistrements  Remarque : le rsultat est une liste trie
 Exemple : liste des prnom des stagiaires

SELECT prnom FROM stagiaire SELECT DISTINCT prnom FROM stagiaire


16

Oprateurs Arithmtiques
 Vous pouvez utiliser les oprateurs

arithmtiques * / + - pour effectuer des calculs  Priorit des oprateurs : * et / sont prioritaires sur + et  Vous pouvez utiliser les parenthses
 Exemple :

SELECT nom, 2*nb FROM stagiaire


17

Les Valeurs NULL


 Une valeur NULL est une valeur non

disponible, non affecte, inconnue ou inapplicable. Une valeur NULL est diffrente du zro ou de l'espace. Le zro est un chiffre et l'espace est un caractre  Exemple :
SELECT * FROM stagiaire WHERE nb IS NULL
18

Alias de Colonne
 Renomme len-tte de colonne  Est utile dans les calculs  Suit immdiatement le nom de la colonne

avec le mot-cl AS  Doit obligatoirement tre inclus entre guillemets sil contient des espaces, des caractres spciaux ou si il faut tenir compte des majuscules/minuscules  Exemple :
SELECT nom, 2*nb AS note FROM stagiaire
19

Oprateur de Concatnation
 L'oprateur de concatnation (+) permet de

concatner des colonnes d'autres colonnes, des expressions arithmtiques ou des valeurs constantes  Exemple :
SELECT nom + + prnom AS NP FROM stagiaire

20

TP02 : Utiliser SELECT (20mn)


crire les requtes 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 prnom concatns et une autre pour ladresse  Afficher la liste des lieux et dates de naissance en dfinissant des alas pour ces deux colonnes
21

la Clause WHERE
 Dans la clause WHERE, les chanes

alphanumriques et les dates doivent tre incluses entre simples quottes  Oprateurs de Comparaison
Oprateur
= > >= < <= <>

Signification
Egal Suprieur Suprieur ou gal Infrieur Infrieur ou gal Diffrent de

22

L'Oprateur BETWEEN
 L'oprateur BETWEEN permet d'afficher des

lignes en fonction d'un intervalle de valeurs  Vous spcifiez un intervalle comprenant une limite infrieure et une limite suprieure
 Exemple :

SELECT * FROM stagiaire WHERE nb BETWEEN 12 AND 13


23

Oprateur IN
 Permet de comparer une expression avec

une liste de valeurs, utilisez l'oprateur IN  Oprateur dappartenance un ensemble de valeurs


 Exemple :

SELECT * FROM stagiaire WHERE ln IN (taza,sefrou ,rabat)


24

Oprateur LIKE
 L'oprateur LIKE permet deffectuer une

comparaison partielle  Il est surtout employ avec les colonnes contenant des donnes de type alphanumriques  Il utilise les jokers % et _ (pour cent et blanc soulign). Le joker % remplace n'importe quelle chane de caractres, y compris la chane vide. Le blanc soulign remplace un et un seul caractre.
 Exemple : SELECT * FROM stagiaire WHERE nom LIKE %BA%
25

Oprateurs Logiques
 Un oprateur logique combine le rsultat de

deux conditions pour produire un rsultat unique ou inverse le rsultat d'une condition unique. SQL inclut trois oprateurs logiques :

AND Intersection OR Union NOT ngation


26

Loprateur AND = intersection


sexe=M AND ln=Fes

27

Loprateur OR = Union
sexe = M OR ln=Fes

28

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 dfaut.  DESC (descending) classe les lignes en ordre dcroissant.
 Exemple : SELECT * FROM stagiaire ORDER BY sexe, nb DESC

29

La clause TOP
 La clause TOP n permet dafficher les n

premires lignes de la requte


 Exemple :

SELECT TOP 5 * FROM stagiaires ORDER BY nb DESC

30

TP03 : la clause WHERE (30mn)


Dvelopper les requtes suivantes :  Liste des stagiaires ayant une note du bac suprieure 12  Liste des stagiaires de sexe fminin puis celle des stagiaires masculins  Liste des stagiaires n Taza puis ceux qui ne sont pas ns Fes  Liste des stagiaires qui portent les prnoms : 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 trie dans lordre dcroissant des notes  Liste des stagiaires trie par sexe puis par nom
31

Fonctions mono ligne


de traitement des chanes de caractres  Fonctions numriques  Fonctions Date  Fonctions de Conversion de type
 Fonctions

32

Fonctions de traitement des chanes


 Les fonctions scalaires suivantes effectuent une

     

opration sur une valeur de type chane et renvoient une valeur numrique ou de type chane. LEN : longueur dune chane LEFT RIGHT SUBSTRING : extraction LOWER UPPER : majuscule/minuscule LTRIM RTRIM : supprimer espaces REVERSE : Renvoie l'inverse d'une expression de type caractre DIFFERENCE : compare deux chanes et renvoie une valeur de 0 4 (0 indique peu ou pas de similarit, 4 indique une forte similarit )
33

La fonction LEN
 Renvoie le nombre de caractres d'une expression

de chane, l'exception des espaces de droite en fin de chane


 Syntaxe LEN ( string_expression )  Exemple : dans l'exemple ci-aprs, le nombre de

caractres et les donnes figurant dans le nom du stagiaire sont slectionns


SELECT LEN(nom), nom FROM Stagiaire
34

Les fonctions LEFT,RIGHT et SUBSTRING


 Extraction dune sous chane de caractres  Syntaxe :
  

LEFT ( chane , longueur ) RIGHT ( chane , longueur ) SUBSTRING ( chane , dbut , longueur )

35

Les fonction UPPER et LOWER


 Conversion majuscule (UPPER) et minuscule

(LOWER) dune chane de caractres alphabtiques


 Syntaxe :
 

UPPER ( chane ) LOWER ( chane )

36

Les fonction LTRIM et RTRIM


 Suppression des espaces gauche (LTRIM)

ou droite (RTRIM) dune chane de caractres


 Syntaxe :
 

LTRIM ( chane ) RTRIM ( chane )

37

TP05 : Traitement des chanes (20mn)


Dvelopper les requtes suivantes  Liste des noms et longueurs des noms des stagiaires. Puis trier la liste dans lordre dcroissant des longueurs des noms.  Afficher une liste contenant les cinq premiers caractres du nom. Puis une autre liste avec les cinq derniers caractres du nom.  Liste des adresses en majuscule avec les lieux de naissance en minuscule.  Liste des adresses inverses  Afficher tous les prnoms similaires FATM
38

Fonctions numriques
 Les fonctions numriques utilisent et

ramnent des valeurs numriques.


 

ROUND : calculer larrondi CEILLING : trouver lentier immdiatement suprieur ou gal FLOOR : valeur entire

39

Fonctions Date
 Date = Anne, mois, jour,

heure, minute, seconde, milliseconde


 Les fonctions scalaires
Quelques fonctions DATEADD DATEDIFF DATEPART DAY MONTH YEAR

suivantes effectuent une opration sur une valeur d'entre de type date et heure et renvoient une valeur numrique, une valeur de type date ou heure, ou une chane.

40

La fonction DATEADD
 Renvoie une nouvelle
Intervalle year quart month dayofyear day week weekday hour minute second millisecond Abrviations yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw hh min ss, s ms
41

valeur datetime calcule en ajoutant un intervalle la date spcifie.  Syntaxe


DATEADD ( intervalle , nombre, date )

La fonction DATEDIFF
 DATEDIFF : renvoie le nombre de limites de

date et d'heure traverses entre deux dates donnes.


 Syntaxe DATEDIFF ( intervalle , dateDebut , dateFin )  Exemple : calcul de lage des stagiaires SELECT DATEDIFF(year, dn, getdate()) FROM stagiaire
42

La fonction DATEPART
 Renvoie un entier reprsentant l'lment de

date prcis dans la date spcifie.  Syntaxe :


DATEPART ( intervalle , date )
 Exemple : SELECT DATEPART(month, dn) FROM stagiaire

43

DAY, MONTH et YEAR


 Ces fonctions renvoient respectivement le

jour, mois et anne dune date donne


 Syntaxes :
  

DAY ( date ) MONTH ( date ) YEAR (date)

44

TP06: gestion des dates (30mn)


Dvelopper les requtes suivantes :  Liste des nom et anne de naissance des stagiaires  Liste des noms et ages des stagiaires  Liste des stagiaires ns un Jeudi  Liste des stagiaires ns au mois de Juillet  Les noms et prnoms des stagiaires ns entre 15/3/1985 et le 14/3/1987
45

Fonctions de conversion de type


 STR Convertit un nombre en chane de caractre  ASCII Renvoie le code ASCII du caractre plac

l'extrme gauche d'une expression de caractres  CHAR : convertit un code ASCII int en un caractre  CAST et CONVERT : Convertit explicitement une expression d'un type de donnes en une expression d'un type de donnes diffrent. CAST et CONVERT offrent la mme fonctionnalit.

46

Interroger plusieurs tables


Le produit cartsien Lqui-jointure Lauto-jointure Les jointures externes Oprations ensemblistes
47

Le produit cartsien


Le produit de deux tables permet dobtenir toutes les combinaisons de lignes de ces deux tables SELECT * FROM stagiaire, groupe

cin B2501 C2103 D1254

nom Ali Laila Said

codeg tdi1a tdi1a tdi1a

codeg

nomg Groupe A Groupe B

X
nom Ali Laila Said Ali Laila Said codeg tdi1a tdi1a tdi1a tdi1a tdi1a tdi1a

tdi1a tdi1b

cin B2501

codeg

nomg

tdi1a tdi1a tdi1a tdi1b tdi1b tdi1b

Groupe A Groupe A Groupe A Groupe B Groupe B Groupe B


48

C2103 D1254 B2501 C2103 D1254

Lequi-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 B2501 C2103 D1254 B2501 C2103 D1254

nom Ali Laila Said Ali Laila Said

codeg tdi1a tdi1a tdi1a tdi1a tdi1a tdi1a

codeg

nomg

= tdi1a = tdi1a = tdi1a tdi1b tdi1b tdi1b

Groupe A Groupe A Groupe A Groupe B Groupe B Groupe B


49

Alias de table
 Il est possible dutiliser des alas des tables

utilis dans une jointure pour simplifier lcriture de la requte SQL


 Exemple :

SELECT nom, nomg FROM stagiaire s, groupe g WHERE s.codeg = g.codeg


50

Lauto-jointure
 C'est une jointure d'une table avec elle-mme  Utile lorsqu'on souhaite relier des attributs qui

se trouvent l'intrieur d'une mme table


 Exemple : afficher les couples de stagiaires

(noms) ns la mme ville


SELECT s1.nom, s2.nom FROM stagiaire s1, stagiaire s2 WHERE s1.ln = s2.ln AND s1.cin<>s2.cin
51

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 opration 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
52

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 rsultats  Tlcharger et attacher la BD efp2 puis dvelopper les requtes suivantes :
  

Produit cartsien des tables stagiaire et module Liste des noms et notes des stagiaires Modifier la requte prcdente pour afficher mme les stagiaires qui nont pas de note
53

Oprations ensemblistes
 Loprateur UNION  Loprateur INTERSECT  Loprateur MINUS

54

Loprateur UNION
 Exemple : on souhaite crer une liste comprenant les

10 meilleurs stagiaires par rapport la note du bac avec une rpartition quitable par sexe (5 garons 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)

55

L oprateur INTERSECT
 Exemple : on souhaite obtenir les noms des stagiaires de sexe

masculin ayant une note du bac suprieure 12

 Solution ensembliste

(SELECT nom FROM stagiaire WHERE sexe=M) INTERSECT (SELECT nom FROM stagiaire WHERE nb>12)
 Solution prdicative

SELECT nom FROM stagiaire WHERE sexe=M AND nb>12


56

Loprateur MINUS
 On voudrait obtenir les noms des stagiaires fminins

qui ne sont pas ns FES

 Solution ensembliste SELECT nom FROM stagiaire WERE sexe=F MINUS SELECT nom FROM stagiaire WHERE ln=FES  Solution prdicative SELECT nom FROM stagiaire WHERE sexe=F and ln<>FES
57

TP08 : oprateurs ensemblistes (20mn)


 Donner les versions ensemblistes et

prdicatives des requtes 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
58

Regrouper les lignes dune table


 Il peut tre intressant de regrouper des

lignes afin de faire des oprations par groupe (oprations statistiques par exemple)  Cette opration se ralise l'aide de la clause GROUP BY, suivie du nom de chaque colonne sur laquelle on veut effectuer des regroupements.

59

Fonctions dagrgation
FONCTION DAGREGATION AVG([DISTINCT|ALL]n)
COUNT({*|[DISTINCT|ALL]expr})

DESCRIPTION Valeur moyenne de n, en ignorant les valeurs NULL (AVERAGE) Nombre de lignes, o expr est diffrent de NULL. Le caractre * comptabilise toutes les lignes slectionnes y compris les doublons et les lignes NULL Valeur maximale de expr, en ignorant les valeurs NULL Valeur minimale de expr, en ignorant les valeurs NULL Somme des valeurs de n, en ignorant les valeurs NULL

MAX([DISTINCT|ALL]expr) MIN([DISTINCT|ALL]expr) SUM([DISTINCT|ALL]n)

60

Clause GROUP BY
 Cette clause permet de crer 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
61

La clause HAVING
 Cette clause, contrairement la clause WHERE qui

prcise les conditions appliquer sur les lignes d'une table, permet de prciser des conditions au niveau des sous-ensembles crs par GROUP BY
 Exemple : reprendre la requte prcdente mais

afficher uniquement les ligne dont la moyenne est suprieur 12.5


SELECT codeg, avg(nb) FROM stagiaire GROUP BY codeg HAVING avg(nb) > 12.5
62

Rgle de regroupement
 Toutes les colonnes qui apparaissent aprs

la clause SELECT, sujette un regroupement, doivent :

 Soit

faire partie dune fonction dagrgation  Soit apparatre dans la clause GROUP BY
63

TP09 : regrouper des donnes (30mn)


 Dvelopper les requtes suivantes :  Moyenne des notes de contrle par module dabord 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 contrles par stagiaire. Afficher seulement ceux dont la moyenne est suprieur 11.75  Moyenne des efm des stagiaires de sexe fminin  Combien ya-t-il de lieux de naissance distincts  Combien ya-t-il de prnoms diffrents par groupe
64

Sous requtes
 Une sous requte est une requte SELECT qui

renvoie une valeur unique et est imbrique dans une autre instruction SELECT  Les instructions contenant une sous-requte se prsentent gnralement sous une des formes suivantes :
 

WHERE expression [NOT] IN (sous requte) WHERE expression oprateur_comparaison [ANY | ALL] (sous requte) WHERE [NOT] EXISTS (sous requte)

65

Sous requtes et loprateur IN


 Exemple : liste des stagiaires nayant pas de

note au module 3 :
SELECT nom, prenom FROM stagiaire WHERE cin NOT IN
(SELECT cin FROM resultat WHERE codem=3)

66

Sous requtes et loprateur 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)

67

Sous requtes et loprateur EXISTS


 Exemple : liste des modules pour lesquels il

existe au moins une note attribue un stagiaire :


SELECT * FROM module WHERE EXISTS (SELECT * FROM resultat WHERE codem=module.codem)

68

TP10 sous requtes (20mn)


Dvelopper les requtes suivantes :  Liste des stagiaires nayant pas de note pour le module 2  Liste des stagiaires ayant eu la meilleur note au module 3  Liste des stagiaires ayant eu la dernire note au module 3

69

70

2. Exploiter l'environnement du SGBDR pour interroger une BD


 L'Analyseur de requtes SQL permet :  crer des requtes et autres scripts SQL  procder au dbogage en cas de problme de

performances des requtes (Afficher le plan d'excution, Afficher la trace du serveur, Afficher les statistiques du client, Assistant Paramtrage d'index)  localiser des objets dans les bases de donnes  insrer, mettre jour ou supprimer rapidement des lignes dans une table (fentre Ouvrir une table)  Vous pouvez excuter l'Analyseur de requtes SQL directement partir du menu Dmarrer ou de SQL Server Enterprise Manager. Une autre possibilit consiste lancer l'application partir de l'invite de commandes, en excutant l'utilitaire isqlw. 71

72

3. Exploiter les commandes de description de donnes


 Principaux objets d'une base de donnes  Crer une base de donnes  Crer une table  Types de donnes des colonnes  Modifier la dfinition dune table  Supprimer une table

73

Principaux objets d'une base de donnes


Objet Table Description Unit de stockage lmentaire, compose de lignes et de colonnes Reprsente de manire logique des sousgroupes de donnes Amliore les performances de certaines requtes

Vue Index

74

Crer une base de donnes


CREATE DATABASE efp ON ( NAME = efp_data, FILENAME = 'd:\demo\efp_dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = efp_log', FILENAME = 'd:\demo\efp_log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) Nom logique du jurnal Nom physique sur le disque Taille initiale et taille maximale Croissance du fichier journal Nom logique du fichier de donnes Nom physique sur le disque Taille initiale et taille maximale Croissance du fichier de donnes Cre une bd nomme efp

75

Crer une table


CREATE TABLE nomtable (colonne1 definitionType, colonne2 definitionType, .)
 Cet ordre fait partie d'une srie d'ordres appartenant

au langage de dfinition des donnes (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 )
76

Loption DEFAULT
 On peut dclarer une valeur par dfaut pour

une colonne en utilisant l'option DEFAULT


 Cette option empche l'insertion de valeurs

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

77

Types de donnes des colonnes


Type de donnes Alphanumrique Syntaxe CHAR(n) VARCHAR(n) Numrique Description Chane de caractres de longueur fixe n (n<16383) Chane de caractres de n caractres maximum (n<16383)

NUMBER(n [,d]) Nombre de n chiffres [optionnellement d aprs la virgule] SMALLINT INT FLOAT Entier sign de 16 bits (-32768 32767) Entier sign de 32 bits (-2E31 2E31-1) Nombre virgule flottante Date sous la forme 16/07/99 Heure sous la forme 12:54:24.85 Date et Heure
78

Horaire

DATE TIME TIMESTAMP

Modifier la dfinition dune table


 Il est possible modifier la structure dune table pour

ajouter, par exemple, une colonne oublie ou changer une dfinition de colonne existante  Cela est possible grce 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)

79

Supprimer une table


 Pour supprimer une table, tapez la

commande :
DROP TABLE <nom de la table>

Exemple : suppression de la table des rsultats: DROP TABLE resultat


80

TP11 Description des donnes (1h)


En utilisant Enterprise manager, Crer la base de donnes test puis, avec lanalyseur de requtes :  Crer la table groupe  Crer la table stagiaire  Crer la table resultat  Crer la table module

81

Contraintes
 NOT NULL  PRIMARY KEY  FOREIGN KEY  UNIQUE  CHECK

82

NOT NULL
 La contrainte NOT NULL interdit la prsence

de valeurs NULL dans la colonne laquelle elle s'applique  Par dfaut, les colonnes peuvent contenir des valeurs NULL
 Exemple :

CREATE TABLE groupe (codeg int, nomg varchar(30) NOT NULL)


83

PRIMARY KEY
 Une contrainte PRIMARY KEY cre une cl primaire

pour la table  La contrainte PRIMARY KEY est une colonne ou un ensemble de colonnes qui identifie de manire 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) )
84

FOREIGN KEY
 La contrainte FOREIGN KEY, ou contrainte d'intgrit

rfrentielle, dsigne une colonne ou une combinaison de colonnes comme tant une cl trangre  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 )
85

UNIQUE
 Une contrainte d'intgrit 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) )
86

CHECK
 La contrainte CHECK dfinit 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) )
87

Suppression dun contrainte


 Utilisez l'ordre ALTER TABLE avec la clause

DROP  L'option CASCADE provoque galement la suppression de toutes les contraintes associes
 Exemple :

ALTER TABLE stagiaire DROP CONSTRAINT fk_groupe


88

TP12 contraintes (1h)


Ajouter aux tables de la base de donnes test les lments suivants :
  

Cls primaires Cls trangres 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 dfaut Les notes ne doivent pas accepter NULL
89

90

4. Exploiter les commandes de manipulation des donnes


 Ajout dune ligne  Ajout de plusieurs lignes avec SELECT  Insertion de valeurs NULL  Modification de ligne  Suppression dune ligne

91

Ajout dune 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 Dv Info 1 groupe A)
92

Ajout de plusieurs lignes avec SELECT


 Il est possible dinsrer le rsultat dune

requte SELECT dans une table


 Exemple : archivage de la liste des stagiaires

INSERT INTO archive_stagiaire SELECT * FROM stagiaire

93

Insertion de valeurs NULL


 Si une colonne n'est pas explicitement spcifie dans

la liste, elle reoit automatiquement une valeur NULL  Mthode implicite : ajout dun groupe sans fournir de valeur pour le nom du groupe :
INSERT INTO groupe (codeg) VALUES (TDI1A)
 Mthode explicite : spcifiez le mot-cl NULL INSERT INTO groupe (codeg, nomg) VALUES (TDI1A, NULL)
94

Modification de ligne
 Vous pouvez modifier des lignes existantes au

moyen de l'ordre UPDATE  Syntaxe :

UPDATE table SET colonne1=valeur1, colonne2=valeur2 [WHERE condition]


 Exemple : UPDATE stagiaire SET adresse =19, hay saada 2 Fs WHERE cin = c150

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


95

Suppression dune ligne


 Vous pouvez supprimer des lignes existantes

au moyen de l'ordre DELETE


 Syntaxe : DELETE [FROM] table WHERE condition  Exemple :

DELETE resultat WHERE note is null


96

TP13 manipulation des donnes (30mn)


 Ajouter un groupe la table groupe


Code : TDI2A nom : Techniques dv. 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 infrieure 11. Que constatez vous et pourquoi ?  Tous les stagiaires de premire anne sont admis en deuxime anne, crire la requte qui permet de modifier leur groupe
97

98

5. Grer des transactions


 Quest ce quune transaction  Dmarrage des transactions  Fin des transactions  BEGIN TRANSACTION  COMMIT TRANSACTION  ROLLBACK TRANSACTION

99

Quest ce quune transaction


 Les transactions offrent un mcanisme de

regroupement d'une srie de modifications de base de donnes dans une opration logique  Une fois les modifications apportes la base de donnes, elles peuvent tre valides ou annules comme une seule unit

100

Dmarrage des transactions


 Vous pouvez lancer des transactions explicites, implicites ou en

mode de validation automatique  Transactions explicites : Pour dmarrer une transaction explicite, utilisez l'instruction BEGIN TRANSACTION.  Transactions en mode de validation automatique : C'est le mode par dfaut de SQL Server. Chaque instruction est valide lorsqu'elle se termine. Il est inutile de spcifier des instructions de contrle des transactions.  Transactions implicites : Vous pouvez activer le mode de transaction implicite en utilisant l'instruction SET IMPLICIT_TRANSACTIONS ON. L'instruction suivante dmarre automatiquement une nouvelle transaction. La transaction est active jusqu' l'excution d'une instruction COMMIT ou ROLLBACK
101

Fin des transactions


 Vous pouvez terminer une transaction par

une instruction COMMIT ou ROLLBACK.  COMMIT : garantit que toutes les modifications effectues sur la base de donnes au cours de la transaction sont permanentes  ROLLBACK : annule toutes les modifications effectues par la transaction en rtablissant les donnes dans l'tat o elles taient avant le dbut de celle-ci
102

BEGIN TRANSACTION
 Indique le dbut d'une transaction locale

explicite
 Syntaxe :

BEGIN TRANSACTION

103

COMMIT TRANSACTION
 Marque la fin d'une transaction russie

implicite ou dfinie par l'utilisateur


 Syntaxe :

COMMIT TRANSACTION

104

ROLLBACK TRANSACTION
 Annule une transaction implicite ou explicite

jusqu'au dbut de la transaction ou jusqu'au dernier point d'enregistrement l'intrieur de la transaction


 Syntaxe :

ROLLBACK TRANSACTION

105

TP14 : les transactions


 La table compte comprend les champs suivants :

numro, nom et solde  Simuler une panne du serveur aprs lexcution dune partie dune transaction. Cette transaction comprend deux commandes update qui permettent deffectuer un virement de 1000DH du compte n100 vers le compte n200
Begin transaction Update compte set solde = solde -1000 where numero = 100 (panne du serveur = arrter puis redmarrer le serveur) Update compte set solde = solde -1000 where numero = 200 Commit transaction

 Que constatez vous?


106

107

6. Utiliser les diffrents types dobjets sur une base de donnes


 Les vues  Les index

108

Les vues
 Une vue est une table virtuelle dont le contenu est

dfini par une requte  Une vue ressemble une table relle, avec un ensemble de colonnes nommes et de lignes de donnes  Une vue n'existe pas en tant qu'ensemble de valeurs de donnes stock dans une base de donnes  Les lignes et les colonnes de donnes proviennent de tables rfrences dans la requte qui dfinit la vue et sont produites dynamiquement lorsque la vue est utilise
109

Avantages des vues


 Limiter l'accs la base de donnes en

affichant une slection de celle-ci  Simplifier la consultation des donnes. Une vue peut tre utilise pour extraire les donnes de plusieurs tables.  Permet des groupes d'utilisateurs d'accder aux donnes en fonction de leurs critres particuliers

110

Cration dune vue


 Vous pouvez crer une vue en utilisant l'ordre

CREATE VIEW suivi du nom de la vue, du mot AS et dune requte SQL


 Exemple : CREATE VIEW filles AS SELECT * FROM stagiaire WHERE sexe=F

CREATE VIEW garcons AS SELECT * FROM stagiaire WHERE sexe=M


111

Suppression dune vue


 DROP VIEW supprime une vue dans la base

de donnes courante
 Exemple :

DROP VIEW garcons

112

Les index
 Les index des bases de donnes 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 donnes permet de rechercher des donnes dans une table sans analyser la table tout entire L'index d'un livre est une liste de mots accompagns du numro de page o ils se trouvent L'index d'une base de donnes est une liste des valeurs d'une colonne accompagnes 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

113

Index ordonn et index unique


 Lorsque vous crez un index ordonn en

clusters, la table est copie, les donnes de la table sont tries et la table initiale est supprime
 La cration d'un index unique garantit l'chec

de toute tentative d'entrer des valeurs de cl en double

114

Cration dun 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)
115

TP15 vues et index (1h)


 Crer des vues partir des requtes du TP09  Ajouter un index unique comprenant les deux

colonnes nom et prnom des stagiaires

116

117

7. Scuriser les donnes


SYSTEME DEXPLOITATION SYSTEME DE GESTION DE BASE DE DONNEES BASE DE DONNEES OBJETS DE LA BASE DE DONNEES

118

Modes d'authentification
SQL Server peut fonctionner selon deux modes de scurit :  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 dun compte Windows ou dun compte propre SQL Server
119

Rles
 Les rles sont de puissants utilitaires permettant de runir les

 

 

utilisateurs en une seule unit laquelle il est possible d'appliquer des autorisations Les autorisations octroyes un rle, refuses ou rvoques s'appliquent aussi aux membres du rle. Vous pouvez crer un rle reprsentant un poste rempli par une catgorie de collaborateurs, lui octroyer les autorisations appropries. Chaque fois qu'un collaborateur passe un autre travail, il suffit de l'ajouter comme membre du rle. Il n'est pas ncessaire d'accorder, de refuser ou de rvoquer les autorisations de chaque utilisateur chaque fois qu'il accepte ou qu'il quitte un travail. Elles sont automatiquement appliques aux utilisateurs ds qu'ils deviennent membres du rle
120

Rle de serveur fixe


Rle sysadmin serveradmin setupadmin Description Excute n'importe quelle opration dans SQL Server Configure les paramtres au niveau du serveur. Ajoute et supprime les serveurs lis et excute certaines procdures systme stockes telles que sp_serveroption. Gre les connexions au serveur. Gre les traitements s'excutant dans une instance de SQL Server. Cre et modifie les bases de donnes. Gre les fichiers sur disque. Excute l'instruction BULK INSERT.
121

securityadmin processadmin dbcreator diskadmin bulkadmin

Rles de base de donnes fixes


rle public db_owner db_accessadmin db_securityadmin db_ddladmin db_backupoperator utilisation par dfaut Propritaire de la BD, possde toutes les autorisations sur la BD. gre les accs : ajoute ou supprime des utilisateur. gre les droits : accs, proprits d'objet, rles et membres des rles Excute les commandes de description de donnes (DDL) oprateur de sauvegarde (mais pas de restauration !). Lance les instructions DBCC, CHECKPOINT et BACKUP. droit de consultation des donnes de la base (lecture uniquement). Slectionne toutes les donnes de toutes les tables utilisateur dans la base de donnes. droit en lecture, criture des donnes de la base. Modifie les donnes de toutes les tables utilisateur dans la base de donnes. rvocation des droits en lecture sur tous les objets de la base rvocation des droits en criture sur tous les objets de la base
122

db_datareader

db_datawriter db_denydatareader db_denydatawriter

Administrateur systme (sa = system administrator)


 Compte sql server par dfaut  Il est affect au rle de serveur sysadmin et

ne peut pas tre modifi  Par dfaut le compte sa possde un mot de passe vide  Assignez un mot de passe au compte sa pour vous prmunir contre tout accs non autoris

123

Propritaire de la base de donnes (dbo, DataBase Owner)


 dbo est un utilisateur qui possde les autorisations

implicites ncessaires pour effectuer toutes les activits dans la base de donnes  L'utilisateur dbo ne peut pas tre supprim et est toujours prsent dans toutes les bases de donnes  Si l'utilisateur rachid, membre du rle de serveur sysadmin, cre une table T1, celle-ci appartiendra dbo et sera dsigne par dbo.T1, et non rachid.T1.  Si rachid est seulement membre du rle de base de donnes db_owner, et qu'il cre une table T1, celleci appartiendra rachid et sera dsigne par rachid.T1
124

Autoriser un compte Windows accder SQL server


 Cet exemple montre comment accorder un

compte Windows l'accs une base de donnes et comment associer la connexion un utilisateur de la base de donnes :


(sp = stored procedure procdure stocke)

USE master sp_grantlogin domaine\said sp_defaultdb @loginame = said', defdb = efp USE efp sp_grantdbaccess said, said
125

Ajout d'utilisateurs et de connexions


L'ajout d'un utilisateur affects des rles prdtermins se fait en deux temps :
1. 2.

cration de la connexion ajout d'un utilisateur et de son rle

Les procdures stockes utiliser sont les suivantes : sp_addlogin 'connexion', 'mot_de_passe', 'base_cible sp_adduser 'connexion', 'utilisateur', 'rle il est ncessaire d'utiliser la base de donnes cible. Exemple : cration de lutilisateur hamid dont le mot de pass kw7E.6J et possdant le rle de lecteur uniquement : exec sp_addlogin hamid', 'kw7E.6J', efp' sp_adduser hamid', 'u_hamid', 'db_datareader'
126

Octroi de permission
Accordez des autorisations d'instruction et d'objet qui permettent un compte utilisateur:


d'effectuer des oprations ou de travailler avec des donnes dans la base de donnes en cours de les restreindre quant aux oprations et informations qui ne font pas partie de leur fonction

127

Ajout d'un membre un rle


 sp_addrolemember ajoute un compte

comme membre du rle de base de donnes  Syntaxe :


sp_addrolemember 'role' , compte'
 Exemple :

sp_addrolemember comptable', said'

128

GRANT
 Permet un utilisateur de travailler avec les donnes de la base

ou d'excuter des instructions particulires.  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 accorde. 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

129

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

130

Refus d'autorisation
 supprime une autorisation prcdemment

accorde l'utilisateur ou au rle  dsactive une autorisation hrite d'un ou de plusieurs autres rles  vous assure qu'un utilisateur ou un rle n'hritera pas l'avenir d'une autorisation

131

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 public DENY SELECT, INSERT, UPDATE, DELETE ON stagiaire TO laila, driss
132

Retrait d'autorisation
 Vous pouvez retirer une autorisation prcdemment

accorde ou refuse  Le retrait d'une autorisation est similaire un refus dans la mesure o les deux actions suppriment une autorisation accorde au mme niveau  Cependant, cela n'empche pas l'utilisateur, le groupe ou le rle d'hriter d'une autorisation accorde un niveau suprieur.  Par consquent, si vous retirez l'autorisation d'affichage d'une table accorde un utilisateur, il est possible que celui-ci puisse encore l'afficher parce que l'autorisation avait t accorde un rle auquel il appartient
133

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 ali REVOKE SELECT ON stagiaire FROM meryem

134

TP16 : scurit
 Changer la scurit du serveur et passer la scurit mixte  Crer les comptes et les rles suivants :

    

Aziz et Driss : directeurs  Rachida, said et mourad : surveillance gnrale  Mounia, fatima, khalid : formateurs Accorder au rle directeur tous les droits sur la base de donnes efp Accorder au rle surveillant le droit de lecture des tables groupe et stagiaire Accorder au rle formateur le droit de lecture sur toutes les tables et le droit dcriture sur la table resultat Retirer lutilisateur mourad le droit de lecture de la colonne adresse de la stagiaire Autoriser said modifier ladresse

135

Вам также может понравиться