Page |1
0. INTRODUCTION
0. 1 Objectifs du cours
Ce cours permet aux bacheliers de :
- Comprendre les concepts sous-jacents à la réalisation d'une
base de données ;
- Comprendre le modèle relationnel afin de l’utiliser
pratiquement à l’aide du langage SQL. Enfin, utiliser une
technique de modélisation reconnue pour structurer les
données d’entreprises ;
- D’être capable de gérer les utilisateurs en leur accordant ou
retirer des privilèges.
0. 2 Plan du cours
PREMIERE PARTIE : ADMINISTRATION D’UNE BASE DE DONNEES
AVEC MYSQL
Chapitre 1 : DEFINITION DE CONCEPTS DE BASE
Chapitre 2 : RAPPELS ET COMPLEMETS SUR LA MODELISATION
ET
LA CONCEPTION D’UNE BASE DE DONNEES
Chapitre 3 : INSTALLATION ET CONFIGURATION DE SGBDR
MYSQL, INTERFACE DE
DEVELLOPEMENT MYSQL ET GESTION DES
UTILISATEURS
Chapitre 4 : LANGAGE SQL AVANCE (BONUS)
DEUXIEME PARTIE : ADMINISTRATION BDD AVEC SQL
SERVEUR
Chapitre 1 : GESTION DES ACCÈS AU SERVEUR
Chapitre 2 : CRÉATION D’UNE BASE DE DONNÉES
Chapitre 3 : CRÉATION DES TYPES DES DONNÉES ET LES
TABLES
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |2
Chapitre 4 : GESTION DES UTILISATEURS DE BASE DE
DONNÉES
Chapitre 5 : GESTION DES DROITS
Chapitre 6 : LES RÔLES
PREMIERE PARTIE : ADMINISTRATION D’UNE BASE DE
DONNEES AVEC
MYSQL
Chapitre 1 : DEFINITION DE CONCEPTS DE BASE
• Définition d’une Base de Données
Une Base de données (BD) informatique est un ensemble de
données structurées mémorisées sur un support permanent
qui modélisent un univers réel, dans laquelle il est possible de
stocker une collection de données organisées et structurées de
manière à pouvoir facilement consulter et modifier leur
contenu. Une BD est faite pour enregistrer des faits, des
opérations au sein d’un organisme (administration, banque,
université, hôpital, ...).
Mais il ne suffit pas que la base de données existe. Il faut aussi
pouvoir la gérer, interagir avec cette base, donc il est
nécessaire d’avoir également : un système permettant de
gérer cette base ; un langage pour transmettre des
instructions à la base de données (par l’intermédiaire d’un
système de gestion de base de données).
• Définition d’un SGBD
Un Système de Gestion de Base de Données (SGBD) est un
logiciel (ou un ensemble de logiciels) permettant de manipuler
les données d’une base de données. Manipuler, c’est-à-dire
structurer, stocker, consulter, mettre à jour ou encore partager
les informations par plusieurs utilisateurs simultanément en
toute sécurité dans une base de données.
Les SGBD les plus répandus sont : Oracle, Microsoft SQL Server,
MySQL, Access, etc.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |3
• Les Couches d’un SGBD
Un SGBD se compose en première approximation de trois
couches emboîtées de fonctions, depuis les mémoires
secondaires vers les utilisateurs :
- Gestionnaire de fichiers : Gestion sur mémoire secondaire
des données, fournit aux couches supérieures des mémoires
secondaires adressables par objets et capables de faire le
partage des données, la gestion de la concurrence d’accès,
reprise après pannes.
- SGBD interne : Définition de la structure de données :
Langage de Définition de Données (LDD). Consultation,
Insertion, suppression et Mise à Jour des données : Langage de
Manipulation de Données (LMD). Gestion de la confidentialité,
Maintien de l’intégrité.
- SGBD externe : La mise en forme et la présentation des
données aux programmes d’applications et aux utilisateurs
interactifs.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |4
• Objectifs d’un SGBD
Que doit permettre un SGBD?
▪ Décrire l’information : Création des objets avec leurs
contraintes indépendamment des applications.
Modification des structures et des contraintes (Langage de
Définition des Données).
▪ Manipuler l’information : Manipulations des données par
des utilisateurs sans décrire la manière de les retrouver ou
de les mettre à jour, qui est propre à la machine. (Langage
de Manipulation des Données).
▪ Contrôler information:
Intégrité : Respecter l’intégrité de l’information et vérifier les
contraintes d’intégrité. Par exemple : le salaire doit être
compris entre 20.000 et 40.000. Confidentialité : Autoriser la
confidentialité des informations. Tout le monde ne peut pas
voir et faire n’importe quoi : contrôle des droits d’accès,
autorisation, etc (Langage de Contrôle des Données).
▪ Partager l’information : une BD est partagée entre
plusieurs utilisateurs en même temps (contrôle des accès
concurrents). Notion de transaction : L’exécution d’une
transaction doit préserver la cohérence de la BD.
Notion de rôles et de privilèges :
Droits et devoirs des utilisateurs.
▪ Assurer la sécurité de l’information : reprise après panne,
journalisation, etc.
▪ Performances d’accès : index (hashage, arbres balancés,
etc).
▪ Indépendance physique : Pouvoir modifier les structures
de stockage ou les index sans que cela ait de répercussion
au niveau des applications. Les disques, les méthodes
d’accès, les modes de placement, le codage des données
ne sont pas apparents
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |5
▪ Indépendance logique : Permettre aux différentes
applications d’avoir des vues différentes des mêmes
données. Permettre au DBA (Administrateur de base de
données) de modifier le schéma logique sans que cela ait
de répercussion au niveau des applications
• Fonctions d’un SGBD
Un SGBD permet de décrire les données des bases, de les
interroger, de les mettre à jour, de transformer des
représentations de données, d’assurer les contrôles d’intégrité,
de concurrence et de sécurité. Il supporte de plus en plus des
fonctions avancées pour la gestion de procédures et
d’événements.
- DEFINITION DES DONNEES : Langage de définition des
données (LDD) (conforme à un modèle de données).
- MANIPULATION DES DONNEES : Interrogation, Mise à jour
(Insertion, suppression, modification). Langage de manipulation
des données (LMD).
- CONTRÔLE DES DONNEES : Contraintes d’intégrité, Contrôle
des droits d’accès, Gestion de transactions. Langage de
contrôle des données (LCD).
• Architecture typique d’un SGBD
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |6
Analyseur de requêtes : L’analyse syntaxique (conformité à la
grammaire) et sémantique (conformité à la vue référencée ou
au schéma) de la requête.
a) Contrôleur de requêtes : Consiste à changer la requête en
remplaçant les références aux objets de la vue par leur
définition en termes d’objets du schéma.
b) Optimiseur de requêtes : Elaborer un plan d’accès optimisé
pour traiter la requête.
c) Exécuteur de plans : Exécuter le plan d’accès choisi et
élaboré par l’optimiseur.
Architecture d’un SGBD CLIENT-SERVEUR
Le mode de fonctionnement
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |7
D’un point de vue opérationnel, un SGBD est un ensemble de
processus et de tâches qui supportent l’exécution du code du
SGBD pour satisfaire les commandes des utilisateurs.
L’architecture client-serveur inclut le noyau d’un SGBD, appelé
DMCS (Description Manipulation and Control Sub-system), qui
fonctionne en mode serveur. Autour de ce serveur s’articulent
des processus attachés aux utilisateurs supportant les outils et
les interfaces externes.
Chapitre 2 : Rappels et compléments sur la modélisation et
la conception de BDD
2.1 Notion de modélisation des données
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |8
2.1.1 Le modèle Entité-Association (E/A)
Le modèle E/A est un formalisme graphique pour la
modélisation de données, les origines du modèle sont les
travaux de Chen et Tardieu en 1975. Le succès du modèle E/A
est dû aux spécificités suivantes : langage graphique, concepts
simples : Choses (objets) -> entités, liens entre les choses
(objets) -> association, regroupement des choses de même
nature : classes d’entités, classes d’association.
a) Entités : Une entité est un objet, un événement, un lieu,
une personne, une chose, identifiable sans ambiguïté. Les
entités peuvent être regroupées en types d’entités (un
élément concret ou abstrait) Exemple :
Le cinéma : «dar el baida» est une instance ou occurrence de
l’entité cinéma, l’acteur : «Atemane Ariouate» est une instance
ou occurrence de l’entité acteur, le film « dawria nahwa
charke» est une instance ou occurrence de l’entité film.
b) Associations : Une association c’est un lien entre deux
ou plusieurs entités
Exemple : Atemane Ariouate a joué dans "dawria nahwa charke"
c) Propriétés ou Attributs : Une donnée élémentaire que
lon perçoit sur une entité ou une association Exemple :
Pour les entités :
— Nom, Prénom pour l’entité ACTEURS
— Titre, Metteur en scène pour l’entité FILMS
— Nom, Adresse pour l’entité CINEMA
Formalisme graphique pour les entités
Pour les associations : Les propriétés que l’on met dans une
association doivent obligatoirement relier les entités Exemple :
Le Rôle d’un acteur. Le rôle relie, un acteur et le film dans
lequel il a joué
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
Page |9
Formalisme graphique pour les associations
Relation/association
d) L’identifiant : Propriété ou groupe de propriétés qui sert
à identifier une entité. L’identifiant d’une entité est choisi
par l’analyste de façon à ce que deux occurrences de
cette entité ne puissent pas avoir le même identifiant
e) Les cardinalités : Une association permet de relier, une
ou plusieurs entités. Le rôle détermine la façon dont les
entités sont reliées.
Le rôle d’une association est défini par deux nombres (min,
max) représentant le nombre de fois minimum et le nombre de
fois maximum qu’une entité participe à une association. Les
valeurs possibles sont : (0,1), (1,1), (0,N), (1 ,N )
— Min : Correspond à la réponse à la question : combien de fois
au moins une entité de A est reliée à une entité de B
— Max : correspond à la réponse à la question : combien de fois
au plus une entité de A est reliée à une entité de B
Remarque : il faut les poser dans les deux sens de A vers B puis
de B vers A.
Acteurs vers Films : le rôle de type 1 ,N
(1) un acteur a joué dans au moins un film — (N) un acteur
peut avoir joué dans plusieurs films De Films vers Acteurs 0,N :
(0) : un film n’ayant pas d’acteurs, possible si c’est un film
documentaire (N) : un film peut avoir plusieurs acteurs
2.2 Notion de conception de bases de données
2.2.1 Le modèle relationnel
L’organisation des données au sein d’une BD a une importance
essentielle pour
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 10
faciliter l’accès et la mise à jour des données. Le modèle
relationnel est fondé
sur la notion mathématique de
RELATION — Introduit par Codd En
1970 (recherche IBM)
— Données organisées en tables (adressage relatif)
— Stratégie d’accès déterminée par le SGBD
Les règles de passage d’un schéma Entité/Association à un
Schéma Relationnel:
(1) : Toute classe d’entités du diagramme entité/association
est représentée par une relation dans le schéma relationnel
équivalent. La clé de cette relation est l’identifiant de la classe
d’entités correspondante.
(2) : Toute classe d’association est transformée en relation. La
clé de cette relation est composée de tous les identifiants des
entités participantes.
(3) : Toute classe d’associations reliée à une classe d’entités
avec une cardinalité de type 0,1 ou 1,1 peut être fusionnée
avec la classe d’entités. Dans ce cas, on déplace les attributs
de la classe d’associations vers ceux de la relation traduisant
la classe d’entités.
Exemple :
Acteurs (NumActeur, Nom, Prénom)
Films (NumFilm, Titre, MetteurEnScène, NumReal)
Cinema (NumCinéma, Nom, Adresse)
Realisateurs (NumReal,Nom, Prénom)
Jouer (NumACteur, NumFilm , Rôle)
Affichage (NumFilm, NumCinema ,Date)
Les avantages du modèle relationnel
— Simplicité de présentation : représentation sous
forme de tables, — Opérations relationnelles : algèbre
relationnelle,
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 11
— Indépendance physique : optimisation des accès, stratégie
d’accès déterminée par le système,
— Indépendance logique : concept de VUES,
— Maintien de l’intégrité : contraintes d’intégrité définies au
niveau du schéma.
Chapitre 3
INSTALLATION ET CONFIGURATION DE MYSQL, INTERFACE DE DEVELLOPEMENT
MYSQL ET GESTION DES UTILISATEURS
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 12
3.1 INSTALLATION ET CONFIGURATION DE MYSQL
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 13
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 14
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 15
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 16
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 17
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 18
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 19
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 20
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 21
3.2. INTERFACE DE DEVELLOPEMENT MYSQL
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 22
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 23
3.3. GESTION DES UTILISATEURS
• Création, modification et suppression d'utilisateurs ;
• Explication des privilèges et options des utilisateurs ;
• Attribution et révocation de privilèges aux utilisateurs.
• Introduction
• Création, modification et suppression des
utilisateurs
• Les privilèges - introduction
• Ajout et révocation de privilèges
• Privilèges particuliers
• Options supplémentaires
Introduction
Pendant ce cours, nous avons créé une base de données :
élevage. Vous avez peut-être créé également d'autres bases
de données pour vos tests et projets personnels.
Mais ce ne sont pas les seules bases de données existant sur
votre serveur MySQL. Connectez-vous avec l'utilisateur "root"
(sinon certaines bases de données vous seront cachées) et
exécutez la requête suivante :
SHOW DATABASES;
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 24
La base gescli est bien là, en compagnie de quelques autres :
• information_schema : cette base de données stocke les
informations sur toutes les bases de données. Les tables,
les colonnes, le type des colonnes, les procédures des
bases de données y sont recensées, avec leurs
caractéristiques. Nous verrons cette base de données plus
en détail dans le prochain chapitre.
• performance_schema : permet de stocker des informations
sur les actions effectuées sur le serveur (temps
d'exécution, temps d'attente dus aux verrous, etc.)
• Test : il s'agit d'une base de test automatiquement créée.
Si vous ne l'avez pas utilisée, elle ne contient rien.
• mysql : qui contient de nombreuses informations sur le
serveur. Entre autres, c'est dans cette base que sont
stockés les utilisateurs et leurs privilèges.
Voir tous les utilisateurs existant dans la base de données
mysql :
• Accéder dans la base de données mysql :
• Voir toutes les tables de cette base de données
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 25
• Voir les contenus de la table user :
Select user,host,password from user ;
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 26
Les privilèges En mode console
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 27
En mode graphique
Lorsque l'on se connecte à MySQL, on le fait avec un
utilisateur. Chaque utilisateur possède une série de privilèges,
relatifs aux données stockées sur le serveur : le privilège de
sélectionner les données, de les modifier, de créer des objets,
etc. Ces privilèges peuvent exister à plusieurs niveaux : base
de données, tables, colonnes, procédures, etc.
Création d’un utilisateur
Exemple : création d’un utilisateur appelé ‘’ AURORE’’
‘aurore’
Voir son existence dans la base de données mysql :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 28
Stockage des utilisateurs et privilèges
Toutes ces informations sont stockées dans la base de données
mysql. Les utilisateurs sont stockés dans la table user, avec
leurs privilèges globaux (c'està-dire valables au niveau du
serveur, sur toutes les bases de données). La base mysql
possède par ailleurs quatre tables permettant de stocker les
privilèges des utilisateurs à différents niveaux.
• db : privilèges au niveau des bases de données.
• tables_priv : privilèges au niveau des tables.
• columns_priv : privilèges au niveau des colonnes.
• proc_priv : privilèges au niveau des routines (procédures
et fonctions stockées).
Modifications
Il est tout à fait possible d'ajouter, modifier et supprimer des
utilisateurs en utilisant des requêtes INSERT, UPDATE ou
DELETE directement sur la table mysql.user. De même pour
leurs privilèges, avec les tables mysql.db, mysql.tables_priv,
mysql.columns_priv et mysql.procs_priv.
Cependant, en général, on utilise plutôt des commandes
dédiées à cet usage.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 29
Ainsi, pas besoin de se soucier de la structure de ces tables, et
le risque d'erreur est moins grand. Ce sont ces commandes que
nous allons décortiquer dans la suite de ce chapitre.
Tout comme on peut préciser la table à laquelle appartient une
colonne en préfixant le nom de la colonne par le nom de la
table : nom_table.nom_colonne, il est possible de préciser à
quelle base de données appartient une table :
nom_bdd.nom_table, voire même préciser à la fois la table et la
base de données dans laquelle se trouve une colonne :
nom_bdd.nom_table.nom_colonne.
Création, modification et suppression des
utilisateurs Création et suppression
On l'a vu, il est possible de créer un utilisateur en lui donnant
directement des privilèges, grâce à la commande GRANT.
Cependant, il existe des commandes dédiées uniquement à la
manipulation des utilisateurs. Ce sont ces commandes que
nous allons voir maintenant. Nous reparlerons de GRANT plus
tard.
Syntaxe
Voici les requêtes à utiliser pour créer et supprimer un
utilisateur :
-- Création
CREATE USER 'login'@'hote' [IDENTIFIED BY 'mot_de_passe'];
-- Suppression
DROP USER 'login'@'hote';
Utilisateur
L'utilisateur est donc défini par deux éléments :
• son login;
• L’hôte à partir duquel il se connecte.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 30
Login
Le login est un simple identifiant. Vous pouvez le choisir
comme vous voulez. Il n'est pas obligatoire de l'entourer de
guillemets, sauf s'il contient des caractères spéciaux comme -
ou @. C'est cependant conseillé.
Hôte
L'hôte est l'adresse à partir de laquelle l'utilisateur va se
connecter. Si l'utilisateur se connecte à partir de la machine
sur laquelle le serveur MySQL se trouve, on peut utiliser
'localhost'. Sinon, on utilise en général une adresse IP ou un
nom de domaine.
Exemples :
CREATE USER ‘aurore’@'localhost' IDENTIFIED BY '1234';
CREATE USER 'mutombo'@'194.28.12.4' IDENTIFIED BY 'muto';
CREATE USER 'flory'@'arb.brab.net' IDENTIFIED BY 'flory';
Il est également possible de permettre à un utilisateur de se
connecter à partir de plusieurs hôtes différents (sans devoir
créer un utilisateur par hôte) : en utilisant le joker %, on peut
préciser des noms d'hôtes partiels, ou permettre à l'utilisateur
de se connecter à partir de n'importe quel hôte.
Exemples
-- aurore peut se connecter à partir de n'importe quel hôte dont
l'adresse IP commence par 194.28.12.
CREATE USER 'aurore'@'194.28.12.%' IDENTIFIED BY '1234';
-- mutombo peut se connecter à partir de n'importe quel hôte
du domaine brab.net
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 31
CREATE USER 'mutombo'@'%.brab.net' IDENTIFIED BY 'muto';
-- flory peut se connecter à partir de n'importe quel hôte
CREATE USER 'flory'@'%' IDENTIFIED BY 'flory';
Comme pour le login, les guillemets ne sont pas obligatoires,
sauf si un caractère spécial est utilisé (comme le joker % par
exemple). Notez que si vous ne précisez pas d'hôte, c'est
comme si vous autorisiez tous les hôtes. 'balu'@'%' est donc
équivalent à 'balu'.
Les guillemets se placent indépendamment autour du login et
autour de l'hôte. N'entourez pas tout par des guillemets :
CREATE USER 'aurore@localhost' créera un utilisateur dont le
login est 'aurore@localhost', autorisé à se connecter à partir de
n'importe quel hôte.
Renommer l'utilisateur
Pour modifier l'identifiant d'un utilisateur (login et/ou hôte), on
peut utiliser RENAME USER ancien_utilisateur TO
nouvel_utilisateur.
Exemple : on renomme max en maxime, en gardant le même
hôte.
RENAME USER 'max'@'localhost' TO 'maxime'@'localhost';
Mot de passe
Le mot de passe de l'utilisateur est donné par la clause
IDENTIFIED BY. Cette clause n'est pas obligatoire, auquel cas
l'utilisateur peut se connecter sans donner de mot de passe.
Ce n'est évidemment pas une bonne idée d'un point de vue
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 32
sécurité. Évitez au maximum les utilisateurs sans mot de
passe.
Lorsqu'un mot de passe est précisé, il n'est pas stocké tel quel
dans la table mysql.user. Il est d'abord masqué, et c'est cette
valeur masqué qui est stockée.
Modifier le mot de passe
Pour modifier le mot de passe d'un utilisateur, on peut utiliser
la commande SET PASSWORD (à condition d'avoir les
privilèges nécessaires, ou d'être connecté avec l'utilisateur
dont on veut changer le mot de passe). Cependant, cette
commande ne hashe pas le mot de passe automatiquement. Il
faut donc utiliser la fonction PASSWORD().
Exemple
SET PASSWORD FOR 'aurore'@'194.28.12.%' =
PASSWORD('12345');
Les privilèges - introduction
Lorsque l'on crée un utilisateur avec CREATE USER, celui-ci n'a
au départ aucun privilège, aucun droit. En SQL, avoir un
privilège, c'est avoir l'autorisation d'effectuer une action sur un
objet.
Exemple : l’utilisateur aurore n’a pas de privileges dans notre
base de données :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 33
Un utilisateur sans aucun privilège ne peut rien faire d'autre que
se connecter. Il n'aura pas accès aux données, ne pourra créer
aucun objet
(base/table/procédure/autre), ni en utiliser.
Les différents privilèges
Il existe de nombreux privilèges dont voici une sélection des
plus utilisés (à l'exception des privilèges particuliers ALL,
USAGE et GRANT OPTION que nous verrons plus loin).
Privilèges du CRUD
Les privilèges SELECT, INSERT, UPDATE et DELETE permettent
aux utilisateurs d'utiliser ces mêmes commandes.
Privilèges concernant les tables, les vues et les bases de
données
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 34
Privilège Action autorisée
CREATE TABLE Création de tables
CREATE
Création de tables temporaires
TEMPORARY TABLE
Création de vues (il faut également avoir
CREATE VIEW le privilège SELECT sur les colonnes
sélectionnées par la vue)
ALTER Modification de tables (avec ALTER TABLE)
DROP Suppression de tables, vues et bases de
données
Autres privilèges
Privilège Action autorisée
CREATE Création de procédures stockées (et de fonctions
ROUTINE stockées non couvert dans ce cours)
ALTER Modification et suppression de procédures
ROUTINE stockées (et fonctions stockées)
EXECUTE Exécution de procédures stockées (et fonctions
stockées)
INDEX Création et suppression d'index
TRIGGER Création et suppression de triggers
LOCK Verrouillage de tables (sur lesquelles on a le
TABLES privilège SELECT)
CREATE Gestion d'utilisateur (commandes CREATE USER,
USER DROP USER, RENAME USER et SET PASSWORD)
Les différents niveaux d'application des privilèges
Lorsque l'on accorde un privilège à un utilisateur, il faut
également préciser à quoi s'applique ce privilège.
Niveau Application du privilège
. Privilège global : s'applique à toutes les
bases de données, à tous les objets. Un
privilège de ce niveau sera stocké dans la
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 35
table mysql.user.
Si aucune base de données n'a été
préalablement sélectionnée (avec USE
nom_bdd), c'est l'équivalent de. (Privilège
* stocké dans mysql.user). Sinon, le
privilège s'appliquera à tous les objets de
la base de données qu'on utilise (et sera
stocké dans la table mysql.db).
Privilège de base de données : s'applique
nom_bdd.* à tous les objets de la base nom_bdd
(stocké dans mysql.db).
nom_bdd.nom_tabl Privilège de table (stocké dans
e mysql.tables_priv).
Privilège de table : s'applique à la table
nom_table de la base de données dans
nom_table laquelle on se trouve, sélectionnée au
préalable avec USE nom_bdd (stocké
dans mysql.tables_priv).
S'applique à la procédure (ou fonction)
nom_bdd.nom_routi
stockée nom_bdd.nom_routine (privilège
ne
stocké dans mysql.procs_priv).
Les privilèges peuvent aussi être restreints à certaines
colonnes, auquel cas, ils seront stockés dans la table
mysql.columns_priv. Nous verrons comment restreindre un
privilège à certaines colonnes avec la commande GRANT.
Ajout et révocation de privilèges
Ajout de privilèges
Pour pouvoir ajouter un privilège à un utilisateur, il faut
posséder le privilège GRANT OPTION. Pour l'instant, seul
l'utilisateur "root" le possède. Étant donné qu'il s'agit d'un
privilège un peu particulier, nous n'en parlerons pas tout de
suite. Connectez-vous donc avec "root" pour exécuter les
commandes de cette partie.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 36
Syntaxe
La commande pour ajouter des privilèges à un utilisateur est la
suivante :
GRANT privilege [(liste_colonnes)] [, privilege [(liste_colonnes)],
...]
ON [type_objet] niveau_privilege TO utilisateur [IDENTIFIED BY
mot_de_passe];
• privilege : le privilège à accorder à l'utilisateur (SELECT,
CREATE VIEW, EXECUTE,…) ;
• (liste_colonnes) : facultatif - liste des colonnes auxquelles
le privilège s'applique ;
• niveau_privilege : niveau auquel le privilège s'applique (.,
nom_bdd.nom_table,…) ;
• type_objet : en cas de noms ambigus, il est possible de
préciser à quoi se rapporte le niveau : TABLE ou
PROCEDURE.
On peut accorder plusieurs privilèges en une fois : il suffit de
séparer les privilèges par une virgule. Si l'on veut restreindre
tout ou partie des privilèges à certaines colonnes, la liste doit
en être précisée pour chaque privilège.
Si l'utilisateur auquel on accorde les privilèges n'existe pas, il
sera créé. Auquel cas, il vaut mieux ne pas oublier la clause
IDENTIFIED BY pour donner un mot de passe à l'utilisateur.
Sinon, il pourra se connecter sans mot de passe.
Si l'utilisateur existe, et qu'on ajoute la clause IDENTIFIED BY,
son mot de passe sera modifié.
Exemples
Créé un utilisateur et lui accorder les privileges :
Create user ‘flory’@’localhost’ identified by ‘flory’ ;
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 37
Accorder les privilèges
GRANT ALL PRIVILEGES ON gescli.* TO 'flory'@'localhost'
IDENTIFIED
BY 'flory';
Cette requête a créé un utilisateur 'flory'@'localhost', et lui a
donné tous les droits sur la base de données gescli.
Activer ou flashé les privilèges :
Comment se connecter en tant que ‘flory’
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 38
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 39
On crée un utilisateur 'john'@'localhost', en lui donnant les
privilèges SELECT sur la table gescli.client.
Create user ‘john’@’localhost’ identified by
‘2020’ ; GRANT SELECT ON gescli.client TO
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 40
'john'@'localhost' IDENTIFIED BY '2020'; Flush
privileges ;
Se connecter comme John
2. On accorde le privilège SELECT et INSERT à l'utilisateur
'john'@'localhost' sur la table gescli.client, et on modifie son
mot de passe.
GRANT SELECT
ON TABLE gescli.agent -- On précise que c'est une table
(facultatif)
TO 'john'@'localhost' IDENTIFIED BY 'change2012';
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 41
On accorde à 'john'@'localhost' le privilège de créer et exécuter
des procédures stockées dans la base de données gescli.
GRANT CREATE ROUTINE, EXECUTE ON gescli.* TO
'john'@'localhost';
Révocation de privilèges
Pour retirer un ou plusieurs privilèges à un utilisateur, on utilise
la commande REVOKE.
REVOKE privilege [, privilege, ...] ON niveau_privilege FROM
utilisateur;
Exemple
REVOKE DELETE ON gescli.client FROM 'john'@'localhost';
Privilèges particuliers
Les privilèges ALL, USAGE et GRANT OPTION
Pour terminer avec les différents privilèges, nous allons parler
de trois privilèges un peu particuliers :
1° ALL
Le privilège ALL (ou ALL PRIVILEGES), comme son nom
l'indique, représente tous les privilèges. Accorder le privilège
ALL revient donc à accorder tous les droits à l'utilisateur. Il faut
évidemment préciser le niveau auquel tous les droits sont
accordés (on octroie tous les privilèges possibles sur une table,
ou sur une base de données, etc.).
Un privilège fait exception : GRANT OPTION n'est pas compris
dans les privilèges représentés par ALL.
Exemple : on accorde tous les droits sur la table Client à
'john'@'localhost'.
GRANT ALL ON gecli.Client TO 'john'@'localhost';
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 42
2° USAGE
À l'inverse de ALL, le privilège USAGE signifie "aucun
privilège". À première vue, utiliser la commande GRANT pour
n'accorder aucun privilège peut sembler un peu ridicule. En
réalité, c'est extrêmement utile : USAGE permet en fait de
modifier les caractéristiques d'un compte avec la commande
GRANT, sans modifier les privilèges du compte. USAGE est
toujours utilisé comme un privilège global (donc ON *.*).
Exemple : modification du mot de passe de 'john'@'localhost'.
Ses privilèges ne changent pas.
GRANT USAGE ON *.* TO 'john'@'localhost' IDENTIFIED BY
'test2012usage';
Nous verrons plus tard les autres options de la commande
GRANT, que l'on pourrait vouloir modifier en utilisant le privilège
USAGE.
3° GRANT OPTION
Nous voici donc au fameux privilège GRANT OPTION. Un
utilisateur ayant ce privilège est autorisé à utiliser la
commande GRANT, pour accorder des privilèges à d'autres
utilisateurs. Ce privilège n'est pas compris dans le privilège
ALL. Par ailleurs, un utilisateur ne peut accorder que les
privilèges qu'il possède lui-même.
On peut accorder GRANT OPTION de deux manières :
• comme un privilège normal, après le mot GRANT ;
• à la fin de la commande GRANT, avec la clause WITH
GRANT OPTION.
Exemple : on accorde les privilèges SELECT, UPDATE, INSERT,
DELETE et GRANT OPTION sur la base de données gescli à
'joseph'@'localhost'.
GRANT SELECT, UPDATE, INSERT, DELETE, GRANT OPTION ON
gescli.* TO 'joseph'@'localhost' IDENTIFIED BY 'ploc4';
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 43
-- OU
GRANT SELECT, UPDATE, INSERT, DELETE ON gescli.*TO
'joseph'@'localhost' IDENTIFIED BY 'ploc4'
WITH GRANT OPTION;
Le privilège ALL doit s'utiliser tout seul. Il n'est donc pas
possible d'accorder GRANT OPTION et ALL de la manière
suivante : GRANT ALL, GRANT OPTION… Il est nécessaire dans
ce cas d'utiliser WITH GRANT OPTION.
Particularité des triggers, vues et procédures stockées
Les triggers, les vues et les procédures stockées (ainsi que les
événements et les fonctions stockées, non couvertes par ce
cours) ont un système spécial quant à la vérification des
privilèges des utilisateurs. En effet, ces objets sont créés dans
le but d'être exécutés dans le futur, et l'utilisateur créant un tel
objet pourrait bien être différent de l'utilisateur se servant de
l'objet. Il y a donc deux types d'utilisateurs potentiels pour ces
types d'objet : celui ayant défini l'objet, et celui utilisant l'objet.
Quels privilèges faut-il vérifier lorsqu'une procédure est
exécutée ? Lorsque la requête SELECT d'une vue est
exécutée ?
Par défaut, ce sont les privilèges du définisseur (celui qui a
défini l'objet) qui sont vérifiés. Ce qui veut dire qu'un utilisateur
pourrait exécuter une procédure agissant sur des tables sur
lesquelles il n'a lui-même aucun privilège. L'important étant les
privilèges de l'utilisateur ayant défini la procédure. Bien
entendu, un utilisateur doit toujours avoir le privilège EXECUTE
pour exécuter une procédure stockée, les privilèges du
définisseur concernent les instructions à l'intérieur de la
procédure ou du trigger (ou de la requête SELECT pour une
vue).
Exemple : avec l'utilisateur aurore, on définit une procédure
faisant une requête SELECT sur la table agent. On exécute
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 44
ensuite cette procédure avec l'utilisateur john, qui n'a aucun
droit sur la table agent.
Utilisateur aurore :
USE gescli;
DELIMITER
CREATE PROCEDURE test_definer()BEGIN SELECT * FROM
agent;END
DELIMITER;
Utilisateur john :
USE gescli;
SELECT * FROM agent;
CALL test_definer();
L'utilisateur john n'a aucun droit sur agent. La requête SELECT
échoue donc avec le message d'erreur suivant :
ERROR 1142 (42000): SELECT command denied to user
'john'@'localhost' for table 'agent'
Par contre, john a le droit d'exécuter les procédures de la base
de données gecli. Il exécute donc sans problème test_definer(),
qui lui affiche le contenu d'Adoption. Les privilèges vérifiés au
niveau des instructions exécutées par la procédure sont en
effet ceux de l'utilisateur balu, ayant défini celle-ci.
Préciser et modifier le définisseur
Les commandes de création des vues, triggers et procédures
stockées permettent de préciser une clause DEFINER, dans
laquelle on précise l'identifiant d'un utilisateur. Par défaut,
c'est l'utilisateur courant qui est utilisé. Cependant il est
possible de donner un autre utilisateur comme définisseur de
l'objet, à condition d'avoir le privilège global SUPER. Sans ce
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 45
privilège, on ne peut donner comme DEFINER que soi-même,
soit avec CURRENT_USER ou CURRENT_USER(), soit avec
l'identifiant ('balu'@'localhost' par exemple). La clause
DEFINER se place après le mot-clé CREATE.
Exemple : définition de deux procédures stockées avec
l'utilisateur root (le seul ayant le privilège SUPER sur notre
serveur), l'une avec root pour DEFINER (CURRENT_USER()),
l'autre avec john.
DELIMITER |
CREATE DEFINER = CURRENT_USER() PROCEDURE
test_definer2()
BEGIN
SELECT * FROM Race;
END
CREATE DEFINER = 'john'@'localhost' PROCEDURE
test_definer3()
BEGIN
SELECT * FROM Race;
END |
DELIMITER ;
Si l'on exécute ces deux procédures avec l'utilisateur john, on
obtient deux résultats différents.
CALL test_definer2();
CALL test_definer3();
La première procédure s'exécute sans problème. john n'a
aucun droit sur la table Race, mais le définisseur de
test_definer2() étant root, ce sont ses privilèges qui comptent.
Par contre, la seconde échoue, car le définisseur de
test_definer3() a été initialisé à john.
Modification du contexte
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 46
Il est possible, pour les vues et les procédures stockées, de
changer la manière dont les privilèges sont vérifiés à
l'exécution. On peut faire en sorte que ce soit les privilèges de
l'utilisateur qui se sert de la vue ou de la procédure
("l'invocateur") qui soient vérifiés, et non plus les privilèges du
définisseur.
Ce n'est pas possible pour les triggers, car ceux-ci ne sont pas
exécutés directement par un utilisateur, mais par une action
de l'utilisateur (insertion, modification, suppression dans la
table sur laquelle le trigger est défini).
Pour changer le contexte de vérification des privilèges d'une
vue ou d'une procédure, il faut utiliser la clause SQL SECURITY
{DEFINER | INVOKER}.
Syntaxe de création des vues et des procédures, clauses
DEFINER et SQL SECURITY comprises.
-- Vues
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { utilisateur | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW nom_vue [(liste_colonnes)]
AS requete_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
-- Procédures
CREATE
[DEFINER = { utilisateur | CURRENT_USER }]
PROCEDURE nom_procedure
([parametres_procedure]) SQL SECURITY
{ DEFINER | INVOKER }
corps_procedure
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 47
Exemple : création, par l'utilisateur root, de deux vues avec des
contextes de vérification des privilèges différents.
CREATE DEFINER = CURRENT_USER
SQL SECURITY DEFINER
VIEW test_contexte1
AS SELECT * FROM Race;
CREATE DEFINER = CURRENT_USER
SQL SECURITY INVOKER
VIEW test_contexte2
AS SELECT * FROM Race;
Toujours avec l'utilisateur root, on autorise john à faire des
SELECT sur ces vues.
GRANT SELECT ON gest.agent_contexte1 TO 'john'@'localhost';
GRANT SELECT ON gescli.agent_contexte2 TO
'john'@'localhost';
Utilisons maintenant ces vues avec l'utilisateur john, qui n'a
toujours aucun droit sur agent.
SELECT * FROM test_contexte1;
SELECT * FROM test_contexte2;
La première requête affiche bien la table Race. Par contre, la
seconde échoue avec l'erreur suivante :
ERROR 1356 (HY000): View 'elevage.test_contexte2'
references invalid table
1e(s) or column(s) or function(s) or definer/invoker of view lack
rights to use t hem
Options supplémentaires
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 48
La commande GRANT possède encore deux
clauses facultatives supplémentaires, permettant de
limiter les ressources serveur de l'utilisateur, et d'obliger
l'utilisateur à se connecter via SSL.
Limitation des ressources
On peut limiter trois choses différentes pour un utilisateur :
• le nombre de requêtes par heure
(MAX_QUERIES_PER_HOUR) : limitation de toutes les
commandes exécutées par l'utilisateur ;
• le nombre de modifications par heure
(MAX_UPDATES_PER_HOUR) : limitation des commandes
entraînant la modification d'une table ou d'une base de
données ;
• le nombre de connexions au serveur par
heure (MAX_CONNECTIONS_PER_HOUR).
Pour cela, on utilise la clause WITH MAX_QUERIES_PER_HOUR nb
| MAX_UPDATES_PER_HOUR nb |
MAX_CONNECTIONS_PER_HOUR nb
de la commande GRANT. On peut limiter une des ressources, ou
deux, ou les trois en une fois, chacune avec un nombre
différent.
Exemple : création d'un compte 'aline'@'localhost' ayant tous
les droits sur la base de données gescli, mais avec des
ressources limitées.
GRANT ALL ON gescli.*
TO 'aline'@'localhost' IDENTIFIED BY 'limited'
WITH MAX_QUERIES_PER_HOUR 50
MAX_CONNECTIONS_PER_HOUR 5;
Pour limiter les ressources d'un utilisateur existant sans
modifier ses privilèges, on peut utiliser le privilège USAGE.
Exemple
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 49
GRANT USAGE ON *.* TO 'john'@'localhost' WITH
MAX_UPDATES_PER_HOUR 15;
Pour supprimer une limitation de ressources, il suffit de la
mettre à zéro.
Exemple
GRANT USAGE ON *.*
TO 'john'@'localhost' WITH
MAX_UPDATES_PER_HOUR 0;
Connexion SSL
La clause REQUIRE de la commande GRANT permet d'obliger
l'utilisateur à se connecter via SSL, c'est-à-dire à l'aide d'une
connexion sécurisée. Avec une telle connexion, toutes les
données transitant entre le client et le serveur sont chiffrées,
et non plus passées en clair.
Nous ne verrons pas les détails de cette clause dans ce cours. Je
vous renvoie donc à la documentation si vous êtes intéressés
par le sujet.
En résumé,
• Les utilisateurs et leurs privilèges sont stockés dans la
base de données mysql.
• On peut manipuler directement les tables de la base
mysql, ou utiliser les commandes dédiées pour gérer les
utilisateurs (CREATE USER, DROP USER,…) et leurs
privilèges (GRANT, REVOKE).
• Lorsque l'on accorde un privilège à un utilisateur, il faut
également préciser à quel niveau on le lui accorde
(global, base de données, table, colonne, procédure).
• Le privilège ALL permet d'accorder en une fois tous les
privilèges, sauf GRANT OPTION. Le privilège USAGE
permet de modifier les options d'un utilisateur avec la
commande GRANT sans modifier ses privilèges. Quant à
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 50
GRANT OPTION, cela permet à un utilisateur d'accorder à
d'autres les privilèges qu'il possède.
• Les privilèges des vues, procédures stockées et triggers
sont vérifiés de manière particulière, grâce aux clauses
DEFINER et SQL SECURITY utilisées à la création de ces
objets.
• Il est également possible, avec la commande GRANT, de
limiter les ressources disponibles pour un utilisateur, et
d'obliger un utilisateur à se connecter via SSL.
Chapitre 4 : SQL Avancé (LDD, LMD et LCD)
4.1 Présentation de SQL
SQL signifie « Structured Query Language » c’est-à-dire «
Langage d’interrogation structuré ». En fait SQL est un langage
complet de gestion de bases de données relationnelles. Il est
introduit par IBM dans les années 70, il est considéré comme
l’évolution du langage SEQUEL, il est commercialisé tout
d’abord par ORACLE. SQL est devenu le langage standard des
systèmes de gestion de bases de données (SGBD)
relationnelles (SGBDR).
C’est à la fois :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 51
— Un langage d’interrogation de la base (SELECT).
— Un langage de manipulation des données (UPDATE, INSERT,
DELETE). — Un langage de définition des données (CREATE,
ALTER, DROP).
— Un langage de contrôle de l’accès aux données (GRANT,
REVOKE). — Un langage de gestion de transactions
(COMMIT, ROLLBACK).
SQL a été normalisé dès 1986 mais les premières normes, trop
incomplètes, ont été ignorées par les éditeurs de SGBD :
(ANSI : American National Standard Institute)
— SQL 1 initial : ANSI date de 1986.
— SQL 1 intégrité référentielle : ANSI date de 1989.
— SQL 2 ANSI date de 1992, extension de SQL1.
— SQL 3 ANSI date de 1999. (appelée aussi SQL99) est la
nouvelle norme SQL avec l’intégration du modèle objet.
4.2 Définition de données
SQL est un Langage de Définition des Données (LDD), il permet
de créer des tables dans une base de données relationnelle,
ainsi que d’en modifier ou en supprimer.
Ordres pour la création et la suppression de la base de donnes :
Créer une Bases de données
CREATE DATABASE nom_bdd;
Supprimer une Bases de données
DROP DATABASE nom_bdd;
4.2.1 Création de tables
La commande CREATE TABLE crée la définition d’une table
Syntaxe :
CREATE TABLE nom_table ( - - définition des colonnes
Col1 TYPE (taille) [NOT NULL [UNIQUE ]]
[DEFAULT valeur ]
[PRIMARY KEY ]
[REFERENCES table ]
[CHECK condition ] ,
...,
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 52
- - contraintes de table
[PRIMARY KEY (liste de colonnes) ] ,
[UNIQUE (liste de colonnes) ] ,
... ,
[FOREIGN KEY (liste de colonnes) REFERENCES table
[ON DELETE {RESTRICT | CASCADE | SET NULL} ]
[ON UPDATE {RESTRICT | CASCADE | SET NULL} ] ,
... ,
[CHECK condition ] ,
...
);
Principaux types de données
— le type CHAR pour les colonnes qui contiennent des chaînes
de longueur constante ( CHAR (n)).
— le type VARCHAR pour les colonnes qui contiennent des
chaînes de longueurs variables ( VARCHAR (n)).
— le type SMALLINT Nombres entiers sur 2 octets.
— le type INTEGER Nombres entiers sur 4 octets.
— le type DECIMAL(n,m) correspond à des nombres décimaux
qui ont n chiffres significatifs et m chiffres après la virgule.
— le type DATE réserve 2 chiffres pour le mois et le jour et 4
pour l’année.
— le type TIME pour les heures, minutes et secondes.
— ...
Contraintes d’intégrité
— NOT NULL : valeur null impossible.
— UNIQUE : interdit qu’une colonne contienne deux valeurs
identiques.
— PRIMARY KEY : définit la clé primaire de la table.
— FOREIGN KEY : indique que la colonne que l’on définit est
une clé étrangère qui fait référence à la colonne de la table
tableref (contrainte d’intégrité référentielle).
— CHECK : donne une condition que les colonnes de chaque
ligne devront vérifier (plage ou liste de valeurs).
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 53
— CASCADE : cascader les suppressions ou
Modifications. — SET NULL : rendre nul les
attributs référençant.
— RESTRICT : rejet de la mise à jour c’est l’option
par défaut. Les contraintes peuvent s’exprimer :
— Soit au niveau colonne (contraintes locales) : valables
pour une colonne. — Soit au niveau table (contraintes
globales) : valables pour un ensemble de colonnes d’une
table. Les contraintes se définissent :
— Soit lors de la création des tables, dans l’ordre CREATE
TABLE; — Soit après la création des tables, par l’ordre
ALTER TABLE permettant certaines modifications de la
structure des tables.
EXEMPLE : CREATE TABLE Clients ( idClient CHAR(6) PRIMARY
KEY , nom VARCHAR(30) NOT NULL, adresse VARCHAR(30) ,
numéroTelephone INTEGER
);
CREATE TABLE Produit ( idProduit CHAR(6) PRIMARY KEY , nom
VARCHAR(30) NOT NULL, marque VARCHAR(30) NOT NULL , prix
DECIMAL(6,2) ,
- - contrainte de table
CHECH (marque IN ( BMW, TOYOTA,PEUGEOT) )
);
CREATE TABLE Vente ( idVente CHAR(6) PRIMARY KEY ,
referenceProduit CHAR(6) , idClient CHAR(6) ,
date DATE NOT NULL
, - - contrainte de
table
FOREIGN KEY (referenceProduit) REFERENCES Produit(idProduit)
ON
DELETE
CASCADE,
FOREIGN KEY (idClient) REFERENCES Clients (idClient) ON
DELETE CASCADE, ) ;
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 54
4.2.2 Modification du schéma
Il est possible de supprimer ou de modifier la structure d’une
table à l’aide des commandes :
DROP TABLE et ALTER TABLE
Renommer une table
ALTER TABLE nom_table RENAME TO nouveau_nom;
Ajout ou modification de colonne
ALTER TABLE nom_table {ADD/MODIFY} ([nom_colonne type
[contrainte], ...]) ;
Renommer une colonne
ALTER TABLE nom_table RENAME COLUMN
ancien_nom TO nouveau_nom; Supprimer une
colonne
ALTER TABLE nom_table DROP COLUMN nom_colonne;
Ajout d’une contrainte de table
ALTER TABLE nom_table ADD [CONSTRAINT nom_contrainte ]
contrainte;
Supprimer des contraintes
ALTER TABLE nom_table DROP CONSTRAINT nomContrainte;
Suppression de données uniquement
TRUNCATE TABLE nom_table;
4.2.3 Création d’index Afin d’améliorer les temps de
réponses, SQL propose un mécanisme d’index. Un index est
associé à une table, mais il est stocké à part. Un index peut
ne porter que sur une colonne (index simple) ou sur plusieurs
(index multiple). Chaque valeur d’index peut ne désigner
qu’une et une seule ligne, on parlera alors d’index unique
donc de clef primaire, dans le cas contraire on parlera
d’index dupliqué. Remarque : Un index est automatiquement
créé lorsqu’une table est créée avec la contrainte
PRIMARY KEY.
Création
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 55
CREATE INDEX index_nom ON
table; — index sur une seule
colonne :
CREATE INDEX index_nom ON table ( colonne1); — index sur
plusieurs colonnes :
CREATE INDEX index_nom ON table (colonne1, colonne2);
Suppression
DROP INDEX nom_index;
4.3 Manipulation de données
SELECT, INSERT, UPDATE et DELETE sont les 4 commandes de
manipulation des données en SQL.
4.3.1 Modifier une base de données
Les commandes INSERT, UPDATE et DELETE permet la
modification d’une base de données.
— La commande INSERT :
La commande INSERT permet d’ajouter de nouvelles lignes à
une table
Syntaxe
INSERT INTO NomTable ( colonne1,colonne2,colonne 3,...)
VALUES ( Valeur1,Valeur2,Valeur3,...);
Insertion par une sélection
INSERT INTO NomTable ( colonne1,colonne 2,...)
SELECT colonne1,colonne2,... FROM NomTable2
WHERE condition Exemple :
INSERT INTO Clients (idClient, nom, adresse,
numéroTelephone ) VALUES
(‘c214’, ‘hamiche’, ‘cité Hamadi N114’, ‘0654874125’)
; Remarque :
Les valeurs inconnues prennent la valeur NULL
— La commande UPDATE :
La commande UPDATE permet de changer des valeurs
d’attributs de lignes existantes. Syntaxe
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 56
UPDATE NomTable SET Colonne = Valeur Ou Expression
[WHERE condition] Exemple :
UPDATE Clients SET numéroTelephone = 05874521 WHERE
idClient = c214 ;
Remarque :
L’absence de clause WHERE signifie que les changements
doivent être appliqués à toutes les lignes de la table cible.
— La commande DELETE :
La commande DELETE permet d’enlever des lignes dans une
table.
Syntaxe
DELETE FROM NomTable
[WHERE condition] Exemple :
DELETE FROM Clients WHERE idClient = ’c214’; Remarque :
L’absence de clause WHERE signifie que toutes les lignes de
la table cible sont enlevées
4.3.2 Interroger une base de données
La commande SELECT permet de rechercher des données à
partir de plusieurs tables; le résultat est présenté sous forme
d’une table réponse.
Syntaxe de base
SELECT [ALL|DISTINCT] NomColonne1,... | * FROM NomTable1,...
WHERE Condition
— ALL : toutes les lignes.
— DISTINCT : pas de doublons.
— * : toutes les colonnes.
— La clause AS : SELECT Compteur AS Ctp FROM Vehicule
Expression des restrictions
Les conditions peuvent faire appel aux opérateurs suivants :
— Opérateurs logiques : AND, OR, NOT, XOR
— Comparateurs de chaînes : IN, BETWEEN, LIKE
— Opérateurs arithmétiques : +, -, /, %
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 57
— Comparateurs arithmétiques : =, <, >, >=, <=, <> —
Fonctions numérique : abs, log, cos, sin, mod, power,...
— Fonctions sur chaine : length, concat,...
Exemple
SELECT * FROM produit WHERE (prix>1000) AND (prix <=3000)
SELECT * FROM produit WHERE prix BETWEEN 1000 AND 3000
SELECT * FROM produit WHERE Marque IN ( ’TOYOTA’,’BMW’ )
Différentes clauses de SELECT
Syntaxe
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression LIMIT count
— GROUP BY
GROUP BY est utilisé pour grouper plusieurs résultats sur un
groupe de résultat.
Exemple
SELECT COUNT (*)
FROM produit
GROUP BY marque
— HAVING
La clause HAVING permet de spécifier une condition de
restriction des groupes. Elle sert à éliminer certains groupes,
comme WHERE sert à éliminer des lignes.
Exemple
SELECT COUNT (*)
FROM produit
GROUP BY marque
HAVING COUNT (*) > 40
— ORDER BY
ORDER BY permet de trier les lignes dans un résultat d’une
requête SQL. Il est possible de trier les données sur une ou
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 58
plusieurs colonnes, par ordre ascendant ou descendant ( ASC|
DESC ).
Exemple
SELECT *
FROM produit
ORDER BY marque DESC
— UNION
UNION permet de concaténer les résultats de deux requêtes ou
plus. Pour l’utiliser il est nécessaire que chacune des requêtes
à concaténer retournes le même nombre de colonnes, avec les
mêmes types de données et dans le même ordre.
Exemple
SELECT marque FROM produit
UNION
SELECT marque FROM Vente
— INTERSECT
INTERSECT permet d’obtenir l’intersection des résultats de
deux requêtes (récupérer les enregistrements communs à 2
requêtes). Cela permet de trouver s’il y a des données
similaires sur 2 tables distinctes.
Exemple
SELECT marque FROM produit
INTERSECT
SELECT marque FROM Vente
— Expression des jointures
Le produit cartésien s’exprime simplement en incluant plusieurs
tables après la clause FROM. La condition de jointure est
exprimée après WHERE
Exemple
SELECT P.IdProduit, P.nom
FROM produit P , vente V
WHERE P.IdProduit = V.referenceProduit
— Requête imbriquée
SQL permet l’imbrication de sous-requêtes au niveau de la
clause WHERE.
Les sous-requêtes sont utilisées :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 59
- dans des prédicats de comparaison : (=, <>, <, <=, >, >=) -
dans des prédicats : IN, EXISTS, ALL ou ANY.
Exemple
SELECT C.nom
FROM client C
WHERE idClient IN (
SELECT V.IdClient
FROM vente V
WHERE referenceProduit IN (
SELECT idProduit
FROM produit P
WHERE P.nom =
’p1’ )) — Le prédicat
EXISTS
Il permet de tester si le résultat d’une sous-requête est vide ou
non.
Exemple
SELECT P.nom
FROM produit P
WHERE NOT EXISTS ( SELECT *
FROM vente V
WHERE V.referenceProduit = P.IdProduit )
— Le prédicat ALL ou ANY
Ils permettent de tester si un prédicat de comparaison est vrai
pour tous ( ALL ) ou au moins un (ANY) des résultats d’une sous-
requête.
Exemple
SELECT C.nom
FROM client C, vente V, produit P
WHERE C.idClient = V. idClient AND P.idProduit =
V.referenceProduit AND
P.prix >= ALL
( SELECT PR.prix
FROM client CL, vente VT, produit PR
WHERE CL.idClient = VT. idClient AND PP.idProduit =
VT.referenceProduit
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
P a g e | 60
AND PR.nom = ’c1’ )
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
61
4.4 Contrôle de Données
4.4.1 Contrôle des accès concurrents
La notion de transaction :
Une transaction est une unité logique de traitement qui est soit
complètement exécutée, soit complètement abandonnée. Une
transaction fait passer la BD d’un état cohérent à un autre état
cohérent. Une transaction est terminée : soit par
COMMIT, soit par ROLLBACK.
La commande COMMIT
La commande COMMIT termine une transaction avec succès;
toutes les mises à jour de la transaction sont validées. On dit
que la transaction est validée.
La commande ROLLBACK
La commande ROLLBACK termine une transaction avec échec;
toutes les mises à jour de la transaction sont annulées (tout se
passe comme si la transaction n’avait jamais existé). On dit
que la transaction est annulée.
4.4.2 Contrôle des droits d’accès
La commande GRANT
La commande GRANT permet de passer des droits d’accès à un
utilisateur ou un groupe d’utilisateurs
Syntaxe
GRANT privilèges ON table TO bénéficiaire
[WITH GRANT OPTION ]
Les privilèges qui peuvent être
passés sont : — soit ALL (tous les
privilèges) — soit une liste de
privilèges parmi :
— SELECT
— INSERT
— UPDATE [(liste de colonnes)] : l’omission de la liste de
colonnes signifie toutes les colonnes
— DELETE
Le bénéficiaire peut être :
— soit PUBLIC (tous les utilisateurs)
— soit un utilisateur ou un groupe d’utilisateurs
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
62
L’option WITH GRANT OPTION permet de passer un privilège
avec le droit de le transmettre.
La commande REVOKE
La commande REVOKE permet de retirer des droits à un
utilisateur ou groupe d’utilisateurs.
Syntaxe
REVOKE privilèges ON table FROM bénéficiaire
4.4.3 Notion de sous-schéma
L’objet VUE
Une vue est une table virtuelle (aucune implémentation
physique de ses données) calculée à partir des tables de base
par une requête.
Une vue apparaît à l’utilisateur comme une table réelle,
cependant les lignes d’une vue ne sont pas stockées dans la
BD (La définition de la vue est enregistrée dans le DD). Les
vues assurent l’indépendance logique, elles peuvent être
utilisées pour cacher des données sensibles, ou pour montrer
des données statistiques.
Création et suppression d’une
VUE : Création :
CREATE VIEW NomVue(NomColonne1,...) AS SELECT
NomColonne1,..
FROM NomTable
WHERE Condition
Suppression :
DROP VIEW
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
63
nom_vue;
RENOME :
RENAME VIEW nom_vue TO nouveau_nom;
Intérêt des vues
— Indépendance logique
Le concept de vue permet d’assurer une indépendance des
applications vis-à-vis des modifications du schéma (Assurer
l’indépendance du schéma externe).
— Simplification d’accès
Les vues simplifient l’accès aux données en permettant par
exemple une prédéfinition des jointures et en masquant ainsi à
l’utilisateur l’existence de plusieurs tables (Création de
résultats intermédiaires pour des requêtes complexes).
Exemple : La vue qui calcule les moyennes générales pourra
être consultée par la requête :
SELECT * FROM Moyennes
— Confidentialité des données
Une vue permet d’éliminer des lignes sensibles et/ou des
colonnes sensibles dans une table de base (éviter de
divulguer certaines informations). 3.4.4 Rôles
— Regroupement de privilèges pour des familles d’utilisateur
— Facilitent la gestion des autorisations des privilèges objet en
évitant les ordres
GRANT
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
64
— Un rôle par défaut est donné à un utilisateur
— Un utilisateur peut posséder plusieurs rôles mais il n’est
connecté qu’avec un seul à la fois
— On peut donner un mot de passe pour certains rôles
Manipulation des rôles : Ordres
Création / Modification d’un rôle
{CREATE|ALTER} ROLE nom_role {NOT IDENTIFIED | IDENTIFIED
{BY mot_de_passe|}
EXTERNALLY};
Remplissage et attribution d’un rôle
GRANT {privilege1 | role1} TO nom_role;
GRANT {privilege2 | role2} TO nom_role;
GRANT ROLE nom_role TO user;
Rôle par défaut ou activation
SET ROLE nom_role [IDENTIFIED BY mot_de_passe ] ;
Suppression / Révocation d’un rôle
DROP ROLE nom_role; REVOKE ROLE nom_role FROM user;
Exemple
CREATE ROLE employeur;
GRANT SELECT, INSERT,UPDATE(adresse, numéroTelephone)
ON clients
TO employeur;
GRANT SELECT, INSERT ON produit TO employeur;
GRANT ALL ON vente TO employeur;
GRANT ROLE employeur TO Said, Salah, Karim;
4.4.5 Contraintes évènementielles : Trigger
Tout comme les procédures stockées, les triggers servent à
exécuter une ou plusieurs instructions. Mais à la différence
des procédures, il n’est pas possible d’appeler un trigger : un
trigger doit être déclenché par un événement. Un trigger est
attaché à une table, et peut être déclenché par : — Une
insertion dans la table ( INSERT ).
— La suppression d’une partie des données de la table
(DELETE) .
— La modification d’une partie des données de la table
( UPDATE ).
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
65
Par ailleurs, une fois le trigger déclenché, ses instructions
peuvent être exécutées soit juste avant (BEFORE) l’exécution de
l’événement déclencheur, soit juste après (AFTER).
Syntaxe
CREATE TRIGGER nom_trigger
{BEFORE | AFTER | INSTEAD OF}
{INSERT | DELETE | UPDATE [OF col1, col2,...]}
ON {nom_table | nom_vue}
[REFERENCING {NEW|OLD} AS <nom> ]
[FOR EACH ROW ]
[WHEN condition ] BLOC PL/SQL
— BEFORE : Exécution avant modification des données.
— AFTER : Exécution après modification des données.
— INSTEAD OF : Exécution à la place de l’ordre SQL envoyé.
— INSERT, UPDATE, DELETE : Action concernée par le
déclencheur. — OLD : représente les valeurs des colonnes de
la ligne traitée avant qu’elle ne soit modifiée par l’événement
déclencheur. Ces valeurs peuvent être lues, mais pas
modifiées.
— NEW : représente les valeurs des colonnes de la ligne traitée
après qu’elle a été modifiée par l’événement déclencheur. Ces
valeurs peuvent être lues et modifiées.
Suppression des triggers
DROP TRIGGER nom_trigger;
Exemple 1 : Supprimer les produits correspondant au
fournisseur supprimé (On suppose que chaque produit peut être
livré par un seul fournisseur).
DELIMITER |
CREATE TRIGGER DeleteFournisseur
BEFORE DELETE ON Fournisseur
FOR EACH ROW
BEGIN
DELETE FROM Produit P WHERE P.idFournisseur =
OLD.idFournisseur;
END |
DELIMITER;
Exemple 2 :
Contrôler l’existence d’un fournisseur lors de l’ajout d’un
produit. Si pas de fournisseur, annuler la transaction.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
66
DELIMITER |
CREATE TRIGGER InsertProduit
BEFORE INSERT ON Produit
FOR EACH ROW
BEGIN
WHEN ( NOT EXIST (
SELECT * FROM Fournisseur F WHERE F.IdFournisseur =
NEW.IdFournisseur )
ABORT TRANSACTION;
END |
DELIMITER;
DEUXIEME PARTIE : ADMINISTRATION BDD AVEC SQL SERVEUR
La généralisation des Systèmes de Gestion de Base de Données
pour les applications sur différents types de plates-formes, et le
développement du business intelligence nécessitent des
spécialistes garants de l'intégrité et de la cohérence des
données. Le poste d'administrateur de bases de données est
devenu essentiel dans les structures informatiques, même
légères.
MISSIONS.
L’administrateur base de données a pour fonction d’organiser et
de gérer en toute fiabilité les systèmes de gestion des données
de l'entreprise. Il doit en assurer la cohérence, la qualité et la
sécurité.
Ses principales tâches :
- Installer, configurer et administrer les bases de données
- Gérer l’espace de stockage physique et logique des bases
- Veiller à l’intégrité des données stockées dans les bases
- Mettre en place des plans de sauvegarde
- Mettre en place des solutions de maintien de la continuité
de la production.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
67
- Veiller au maintien de la performance de l’accès aux
données
- Participer à la formation des utilisateurs dans l’entreprise
- Participer à la veille technologique
OBJECTIFS.
Le poste d'administrateur de bases de données est devenu
essentiel dans les structures informatiques, mêmes légères
d’où les nombreuses offres disponibles sur le marché de
l’emploi.
A la fin de son cours, l’étudiant sera capable de :
- Administrer un environnement serveurs Windows 2014 et
MySQL
- Ecrire des requêtes Transact-SQL
- Maintenir une base de données SQL
- Développer des packages SSIS (SQL Server Integration
Services)
- Renforcer l’intégrité des données en utilisant Master Data
Services
- Purifier les données avec Data Quality Services
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
68
INTRODUCTION GENERALE
La sécurité est un domaine important dans les bases de
données. Sans sécurité, nos données sont exposées à des
risques d’altération de tous les types, le plus souvent à cause
des utilisateurs finaux, ou d’une mauvaise politique de gestion
des bases. Il existe dans SQL Server, trois types d’objets qui
vont nous permettre de sécuriser nos bases et donc garantir
une plus grande chance d’intégrités pour nos données. Ces trois
types sont :
Les entités de sécurité : c’est un compte de sécurité qui
dispose d’un accès au serveur de données SQL.
Les sécurisables : ce sont des objets gérés par le serveur.
Les autorisations : celles-ci sont accordées aux entités de
sécurité afin de pouvoir travailler avec les sécurisables.
Ces éléments de sécurité ont une organisation de type
hiérarchique. Cette hiérarchie va nous permettre de mettre en
place une politique sure, afin de maintenir l’intégrité de nos
données, en faisant en sorte que cette gestion des droits
d’accès soit simple, mais efficace. Par exemple, de façon
hiérarchique, on pourra accorder l’autorisation « SELECT », à un
sécurisable, par exemple un schéma, pour permettre à l’entité
de sécurité qui reçoit cette autorisation d’effectuer l’opération
SELECT sur tous les objets contenus dans le schéma définit.
S’il faut parler rapidement des schémas. Il en existe trois types
qui sont définis. Les schémas de niveau serveur, qui vont
s’appliquer à toutes les bases de données implantés sur le
serveur. Les schémas de niveau base de données, actifs
seulement sur la base de données ou il est défini. Et enfin les
rôles d’application, définis sur la base de données utilisateur
et qui vont permettre le bon fonctionnement d’une application
cliente. D’autres sécurisables existent, par exemple les
utilisateurs simples, les groupes… Leur organisation vis-à-vis
des autres éléments de sécurité ce fait aussi de manière
hiérarchique, comme pour les schémas. Il est possible d’obtenir
un catalogue complet des utilisateurs et de leurs privilèges,
grâce aux vues système.
Voici quelques-unes de ces vues :
✓ Sys.server_permissions : Liste des permissions au
niveau serveur et de leurs bénéficiaires.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
69
✓ Sys.server_principals : Entités de sécurité définis au
niveau serveur. ✓ Sys.sql_logins : Liste des connexions
au niveau serveur.
✓ Sys.Server_role_members : Liste des bénéficiaires d’un
rôle au niveau serveur.
✓ Sys.database_permissions : Liste des permissions et de
leurs bénéficiaires au niveau base de données.
✓ Sys.database_principals : Entités de sécurité au niveau
base de données.
✓ Sys.database_role_members : Liste des bénéficiaires
d’un rôle de base de données.
Apprenons maintenant toutes les manières de préserver
l’intégrité des données de nos bases, en mettant en place une
politique de sécurité efficace.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
70
Chapitre 1. Gestion des accès serveur
Avant de pouvoir commencer à travailler avec les données de
nos bases, il est impératif de se loger sur le serveur SQL. Cette
étape permet de s’identifier au niveau du serveur SQL, afin de
pouvoir exploiter les droits qui ont été attribués à notre
connexion. Dans SQL Server, il existe plusieurs modes
d’authentification que nous pouvons définir mais dans le cadre
de notre cours et vue le temps qui nous est accordés nous
allons nous baser au mode d’authentification Windows
parce que c’est le mode le plus utilisé dans des entreprises.
1. Mode de sécurité Windows
1.1 En général
Dans ce mode de sécurité, SQL Server s’appuie sur les
fonctionnalités de Windows. En effet, il se sert de la sécurité de
Windows (login et mot de passe) pour créer des connexions aux
instances et donc aux bases de données. Puisque le mode de
sécurité Windows se sert de la sécurité du système sur lequel
SQL Server est installé, la gestion des groupes est aussi
possible.
Il est donc plus facile d’administrer des connexions aux bases
de données, de manière plus souple d’utilisateur par utilisateur.
1.2 En détail
En réalité, seuls les logins sont sauvegardés dans l’instance, de
façon à permettre l’accès aux bases par la suite. Le mot de
passe de chaque utilisateur est détenu par Windows. Vous
comprendrez aisément qu’il est bien plus sécurisé de ne pas
stocker le mot de passe d’un utilisateur directement dans une
base système. De plus, la politique d’administration et de
sécurité qui énonce la règle suivante : un mot de passe par
utilisateur, est bien plus simple à mettre en place.
2. Choisir son mode de sécurité
On peut directement choisir le mode de sécurité de SQL Server
de deux manières différentes : lors de l’installation de l’instance
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
71
SQL Server, ou bien directement dans SSMS, sans passer par
l’assistant d’installation de SQL Server.
2.1 Avec l’assistant d’installation
Lors de l’installation d’une instance de SQL Server, il vous sera
demandé de préciser quel mode de sécurité vous désirez
mettre en place. Choisissez bien entendue le mode qui vous
convient.
2.2 Avec SSMS
Avec SSMS, il va falloir vous rendre directement dans les
propriétés de votre instance afin de modifier le mode de
sécurité. Voici la fenêtre sur laquelle vous devez vous rendre
afin d’opérer aux modifications :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
72
Cliquer dans le menu Sécurité de cette fenêtre, et la partie
Authentification du Server, choisissez simplement le mode de
sécurité à mettre en place. Cliquez sur OK pour valider votre
choix.
3. Gestion des connections à SQL Server
3.1 En mode sécurité Windows
Les noms de groupes ou les utilisateurs doivent être les mêmes
que sous Windows. Il existe plusieurs façons de créer des
connexions au serveur de base de données.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
73
1 Avec SQL Server Management Studio (SSMS)
Pour créer une connexion par l’intermédiaire de SSMS, il vous
suffit de vous rendre dans l’explorateur d’objet, de déployer les
nœuds jusqu’à Sécurité Connexion. Dans le menu contextuel
de ce nœud, choisir nouvelle connexion. La fenêtre suivante
apparait :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
74
L’interface graphique SSMS permet tout aussi bien de modifier
les propriétés d’une connexion ou bien de la supprimer
simplement. 2 Avec du code T-SQL
Avec du code T-SQL, la syntaxe de création d’une connexion
SQL Server est la suivante :
USE[master]
GO
CREATE LOGIN [HEDI-PC\Bulaya]FROM WINDOWS
WITH DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[Français]
GO
L’instruction CREATE LOGIN permet d’annoncer à SQL Server
que nous allons créer une connexion. Il est nécessaire de
donner le nom de la connexion Windows associée. La clause
FROM WINDOWS, permet de dire que le login existe dans le
système d’exploitation Windows.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
75
Les deux options suivantes permettent quant à elles de choisir,
et la base par défaut de la connexion, et la langue par défaut
de cette même connexion.
Note : Il est important de noter que les instructions UPDATE et
DELETE peuvent être appliquées dans le cas d’un changement
de propriété de connexion ou d’une suppression de connexion.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
76
Chapitre 2. Création d’une base de données
Nous utilisons SQL Server pour traiter des transactions, stocker
et analyser des données, et créer des applications de base de
données. SQL Server est une famille de produits et de
technologies qui répond aux impératifs de stockage de données
des environnements OLTP (traitement transactionnel en ligne)
et OLAP (traitement analytique en ligne). SQL Server est un
système de gestion de bases de données relationnelles
(SGBDR) qui :
✓ Gère le stockage des données pour les traitements et les
analyses ;
✓ Stocke des données de nombreux types, notamment les
données de type texte, numériques, XML (Extensible
Markup Language), et des objets volumineux ;
✓ Répond aux demandes des applications clientes ;
✓ Utilise Transact-SQL, XML ou d’autres commandes SQL
Server pour envoyer des demandes entre une application
cliente et SQL Server. Le composant SGBDR de SQL Server
est chargé de :
✓ Gérer les relations entre les données d’une base de
données ;
✓ Vérifier que les données sont stockées correctement et
que les règles qui définissent les relations au sein des
données ne sont pas violées ;
✓ Récupérer toutes les données à un point de cohérence
comme, dans le cas d’une défaillance du système.
Bases de données OLTP
Les tables relationnelles organisent les données dans une base
de données OLTP pour réduire les informations redondantes et
accroitre la rapidité des mises à jour. SQL Server permet à un
grand nombre d’utilisateurs d’exécuter des transactions et de
modifier simultanément les données en temps réel dans les
bases de données OLTP.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
77
Bases de données OLAP
La technologie OLAP permet d’organiser et de synthétiser de
grandes quantités de données afin qu’un analyste puisse
évaluer des données rapidement et en temps réel. Microsoft
SQL Server Analysis Services organise ces données pour
prendre en charge un grand nombre de solutions
professionnelles de l’analyse et la génération de rapports
d’entreprise à la modernisation des données en passant par la
prise de décision. Éléments à prendre en compte lors de la
planification d’une de données. Lorsque vous planifiez une
nouvelle base de données, vous devez prendre plusieurs
éléments en considération. La liste suivante présente certains
de ces éléments :
✓ Rôle du stockage des données. Les bases de données
OLTP et OLAP n’ont pas le même rôle ; par conséquent,
leurs impératifs en termes de conception sont différents ;
✓ Débit des transactions. Les impératifs des bases de
données OLTP en termes de nombres de transactions
peuvent être traitées par minute, heure ou jour sont
élevés. Une conception efficace reposant sur un niveau de
normalisation approprié, des index et des partitions de
données peut contribuer à un débit de transactions élevé ;
✓ Croissance potentielle du stockage des données
physiques. Pour de grandes quantités de données, le
matériel pour la mémoire, l’espace disque et la puissance
de l’unité centrale doivent être appropriés. L’estimation de
la quantité de données que votre base de données
continuera de fonctionner efficacement. Vous pouvez
configurer vos bases de données de sorte que la taille des
fichiers augmente automatiquement jusqu’à une limite
maximale spécifiée. Toutefois, l’augmentation
automatique de la taille des fichiers peut contribuer à
diminuer les performances. Dans la plupart des solutions
de base de données serveur, vous devez créer la base de
données avec des fichiers de taille appropriée, contrôler
l’utilisation de l’espace disque et réallouer plus d’espace
uniquement lorsque cela s’avère nécessaire.
✓ Emplacement des fichiers. L’emplacement que vous
choisissez pour les fichiers de base de données peut avoir
une incidence sur les performances.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
78
Si vous avez la possibilité d’utiliser plusieurs lecteurs de
disques, vous pouvez répartir vos fichiers de base de
données sur plusieurs disques. Ainsi, SQL Server dispose
de plusieurs connexions et de plusieurs en-têtes de disque
pour une lecture et une écriture efficace des données.
Exemples de création d’une base de données
Vous pouvez créer une base de données à l’aide des outils
graphiques de SQL
Server Management Studio ou de l’instruction Transact-SQL
CREATE DATABASE
Les exemples suivants indiquent comment créer une base de
données à l’aide de Transact-SQL.
USE master
GO
CREATE DATABASE GESVE
ON (
NAME='GESVE_Data',
FILE NAME='D:\DATA\GESVE.mdf',
SIZE= 900 MB,
FILEGROWTH= 0
)
LOG ON
(
NAME='GESVE_Log',
FILE NAME='D:\DATA\GESVE.ldf',
SIZE= 20 MB,
FILEGROWTH= 0
)
GO
Ou encore:
USE master
GO
CREATE DATABASE GESVE
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
79
GO
2.1 Gestion des schémas
Un schéma est un ensemble logique d’objets à l’intérieur des
bases de données sur le serveur. Leur but est de faciliter, entre
autres, l’échange de données entre les utilisateurs, sans pour
autant affecter la sécurité. Concrètement, les schémas
permettent une gestion plus aisée des privilèges d’utilisation
des objets. Comme nous l’avons vu dans la salle, un utilisateur
est mappé sur un schéma dès sa création, obligatoirement.
Si toutefois, aucun nom de schéma n’est précisé, alors
l’utilisateur sera mappé sur dbo par défaut. Pour expliquer
simplement le fonctionnement des schémas prenons un
exemple. Un utilisateur est mappé sur un schéma nommé
Service_Comptabilite_Isipa. Pour requêter sur les objets de
la base, il pourra écrire directement le nom seul de cet objet si
celui-ci est compris dans le schéma sur lequel il est mappé.
Dans le cas contraire, l’utilisateur devra préciser le schéma de
l’objet, le nom de l’objet et à ce moment-là, SQL Server
cherchera si ledit utilisateur possède les droit d’utiliser l’objet
auquel il tente d’accéder.
On peut retenir que les schémas servent essentiellement à
faciliter le partage d’information entre les utilisateurs mappés
sur ce schéma.
2.1.1. Création d’un schéma
2.1.1.1 Avec SSMS
Pour créer un schéma grâce à SSMS, il vous suffit de déployer
tous les nœuds jusqu’à sécurité, d’afficher le menu contextuel
(clic droit) du nœud schéma et de sélectionner Nouveau
schéma. Une nouvelle fenêtre apparait.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
80
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
81
2.1.1.2 Avec du code T-SQL
Voici la syntaxe de création d’un schéma de base de données :
USE [GESVE]
GO
CREATE SCHEMA [Service_Comptabilite_Isipa] AUTHORIZATION
[db_accessadmin]
[options]
GO
Pour créer un schéma de base de données, nous nous servons
de l’instruction
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
82
CREATE SCHEMA. Comme tout objet dans une base de
données, un schéma doit avoir un nom unique dans la famille
des schémas. Il est donc nécessaire de préciser un nom derrière
cette instruction.
La clause instruction va nous permettre en revanche de
préciser l’utilisateur de base de données qui sera propriétaire
du schéma. Pour finir, ce que nous avons représenté par option
représente l’espace dans lequel nous pouvons directement faire
la définition de nos tables, vues et privilèges rattachés à nos
tables.
2.2 Modification d’un schéma
2.2.1 Avec SSMS
Avec l’interface graphique, la manipulation est la même que
pour la création d’un schéma. Cependant, il faudra veiller à ne
pas créer un nouveau schéma, mais à se rendre dans les
propriétés du schéma que nous voulons modifier. Il faut en
revanche prendre en compte que l’on ne peut pas changer le
nom du schéma, seulement les tables, vue qui y sont
contenues, les autorisations et le propriétaire du schéma.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
83
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
84
2.3 Suppression d’un schéma
2.3.1 Avec SSMS
Pour supprimer un schéma de base de données avec SSMS,
rendez-vous sur le nœud schéma de la base de données ou est
mappé le schéma. Déployez ce nœud pour laisser apparaitre les
schémas existants. Faites un clic droit sur le schéma à
supprimer et sélectionnez Supprimer.
2.3.2 Avec du code T-SQL
Pour supprimer un schéma, nous allons utiliser l’instruction
DROP SCHEMA, avec la syntaxe suivante :
Drop schema Service_Comptabilite_Isipa
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
85
Chapitre 3 Création de types de données et de tables
Les données d’une base de données sont stockées dans des
tables et chaque élément de données est défini comme un type
de données spécifiques. Ce fascicule décrit les types de
données fournis par le système dans Microsoft SQL Server 2014
et 2012 dans le cadre de notre cours et explique comment
définir des types de données Transact-SQL personnalisés. Il
décrit également comment créer des tables et comment utiliser
des tables partitionnées pour organiser des données en
partitions multiples.
3.1 Création de types de données
Avant de créer une table, vous devez définir les différents types
des données appelées à être stockées dans cette table. Les
types de données spécifient le type d’information (caractères,
nombres ou dates) qu’une colonne peut contenir, ainsi que le
mode de stockage des données. SQL Server 2014 ou 2012
offres plus de 30 types de données systèmes spécifiques. Il
prend également en charge les types de données d’alias, c’est-
à-dire des types de données définis par l’utilisateur fondés sur
des types de données systèmes.
Ci-dessous sont les types de données fournis par le
système !!
Catégorie Types de données
Entier Int, Bigint, Smallint, Tinyint
Numériqu Exact Decimal, Numeric
e Approximatif Floot, Real
Monétaire Money, Smallmoney
Date et Heure Datetime, Date, SmallDatetime
Caractère Non-Unicode Char, Varchar, Varchar(max), Text
Unicode Nchar, Nvarchar, Nvarchar(max),
Ntext
Binaire Binary, Varbinary, Varbinary(max)
Image Image
Identificateur Uniqueidentifier
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
86
Global
XML Xml
Spécial Bit, Cursor, Timestamp, Sysname,
table, Sql_variant
Les types de données d’une colonne définissent les valeurs que
celle-ci accepte dans une table de base de données. Certaines
catégories de types de données fréquemment adoptées dans
les langages de programmation disposent de plusieurs types de
données SQL Server qui leurs sont associés. Vous devez
toujours opter pour le plus petit type de données parmi ceux
répondant à vos besoins de façon à économiser de l’espace
disque et permettre l’insertion du plus grand nombre de lignes
possibles sur une page de données, ce qui d’ailleurs vous
garantira des performances optimales.
Utilisation des types de données fournis par le système
SQL Server 2014 ou 2012 propose plusieurs types de données
qui peuvent être plus ou moins appropriés selon les
circonstances. Vous devez tenir compte des exigences de vos
données et de la façon dont vous envisagez de les utiliser avant
d’opter pour un type de données.
Types de données numériques exacts et approximatifs
La manière dont vous projetez d’utiliser un type de données
doit déterminer le choix d’un type de données numérique exact
ou approximatif.
Les types de données numériques exacts vous permettent
de spécifier exactement l’échelle et la précision à
employer. Par exemple, vous pouvez spécifier trois chiffres
à droite et quatre chiffres à gauche de la valeur décimale.
Une requête retourne toujours exactement ce que vous
avez entré. SQL Server prend en charge deux types de
données numériques exacts pour des raisons de
compatibilité ANSI : decimal et numeric. En règle générale,
les types de données numériques exacts sont utilisés pour
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
87
les applications financières dans lesquelles vous souhaitez
reproduire les données de manière cohérente (toujours
deux nombres de décimales) et pour interroger la colonne
concernée (par exemple, rechercher tous les emprunts
avec un taux d’intérêt de 8,75 pourcents) ;
Les types de données numériques approximatifs stockent
les données avec autant de précision que possible. Par
exemple, la fraction un tiers est représentée dans un
système décimal sous la forme 0,33333 (répétition). Ce
nombre ne peut pas être stocké avec précision, d’où le
stockage d’une valeur approximative. SQL Server prend en
charge deux types de données numériques approximatifs :
float et real. Si vous arrondissez des nombres ou effectuez
des contrôles de qualité entre des valeurs, il est préférable
d’éviter le recours à des types de données numériques
approximatifs.
Types de données caractères
Lorsque vous savez que toutes les valeurs d’une entité de
données spécifiques auront exactement la même taille, vous
pouvez utiliser un type de données de longueur fixe (par
exemple, nchar) et indiquer le nombre d’octets à réserver pour
chaque valeur. Lorsque la longueur de la valeur est susceptible
de varier, il peut être plus efficace d’adopter un type de
données de longueur variable comme nvarchar et de spécifier
la longueur maximale de la valeur.
Lorsque vous spécifiez un type de données de longueur
variable, SQL Server réserve deux octets pour chaque valeur de
longueur variable en tant que marqueur et utilise uniquement
l’espace supplémentaire requis pour chaque valeur.
Données de types date et heure
SQL Server 2014 ou 2012 fournit les types de données datetime
et smalldatetime pour stocker les données de date et d’heure. Il
fournit également le type de données timestamp pour le
versionning basé sur les lignes. Sachez également que lorsque
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
88
vous voulez utiliser la date abrégée vous allez préciser au
niveau de type de données le type date.
Le type de données datetime s’avère utile pour
représenter les données de date et d’heure comprise
entre le 1er Janvier 1700 et le 31 décembre 9999 avec une
précision d’un trois centièmes de secondes.
Vous pouvez utiliser le type de données smalldatetime pour
représenter les données de date et d’heure comprise entre le
1erjanvier 1900 et le 6 janvier 2079 avec une précision d’une
minute. Les valeurs correspondants au type de données
smalldatetime sont arrondies à la minute près.En règle
générale, vous utilisez le type de données smalldatetime
lorsque vous n’avez pas besoin de stocker l’heure ou du moins,
de manière précise (par exemple, date d’expiration). Vous
utilisez généralement le type de données datetime lorsque vous
devez stocker l’heure du jour avec une plus grande précision.
Le type de données timestamp expose automatiquement
les nombres binaires uniques générés. Vous utilisez
généralement le type de données timestamp pour ajouter
les informations de version des lignes d’une table.
Chaque base de données tient à jour un compteur que
SQL Server incrémente à chaque opération de mise à jour
ou d’insertion. La valeur d’un champ timestamp est une
heure relative interne à la base de données, et non une
heure réelle qui peut être associée à une horloge. Chaque
table ne peut contenir qu’une seule colonne timestamp,
mais vous n’êtes pas tenu d’attribuer un nom aux
colonnes qui utilisent le type de données timestamp,
comme l’illustre l’exemple Transact-SQL suivant :
CREATE TABLE T_Vente(Prikey int PRIMARY KEY,timestamp);
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
89
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
90
Valeurs de données élevées
Les colonnes employées pour le stockage de valeurs de
données de taille moyenne à élever (généralement supérieures
à 8000 octets) peuvent être stockées à l’aide d’une colonne
varchar, nvarchar ou varbinary déclarée avec le spécificateur
max.
Le spécificateur max permet de remplacer les types de données
d’objets volumineux (text, ntext et image) des versions
antérieures de SQL Server, mêmesi celles-ci sont fournies pour
des raisons de compatibilité descendante.
Ci-dessous sont les types de données d’alias ?
Un type de données d’alias est un type de données
personnalisé basé sur un type de données fourni par le
système. Il présente les caractéristiques suivantes :
Il vous permet d’affiner davantage un type de données
pour garantir une cohérence lors de l’utilisation d’éléments
de données communs dans différentes tables ou bases de
données ;
Il est défini dans une base de données spécifiques ;
Il doit disposer d’un nom unique dans la base de données.
(Toutefois, les types de données d’alias portant des noms
différents peuvent avoir la même définition.)
Quand créer des types de données d’alias ?
Vous devez créer un type de données d’alias lorsque vous
devez définir un élément de données fréquemment employé
avec un format spécifique. Par exemple, une colonne dans
laquelle vous stockez un code de pays fondé sur la norme
alpha-2 des abréviations des noms de pays (par exemple, JP
pour le Japon et CH pour la Suisse) de l’Organisation
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
91
internationale de normalisation (ISO) peut être définie sous la
forme char (2).
Toutefois, si le code de pays est destiné à un usage régulier
dans la base de données, vous pouvez définir un type de
données Country code (CodePays) et l’utiliser à la place. Cela
facilite la compréhension des définitions d’objets et du code
dans votre base de données.
Exemple de création d’un type de données d’alias
Vous pouvez créer des types de données d’alias à l’aide de
l’Explorateur d’objets dans SQL Server Management Studio ou
de l’instruction Transact-SQL « CREATE TYPE ». L’exemple de
code suivant explique comment créer un type de données
d’alias nommé CountryCode (CodePays).
CREATETYPEdbo.Produit
FROMchar(2)
NULL
Notez que lorsque vous créez un type de données d’alias, vous
pouvez spécifier sa possibilité de valeur NULL. Un type de
données d’alias créé avec l’option NOT NULL ne peut jamais
être utilisé pour le stockage d’une valeur NULL. Il est important
de spécifier la possibilité de valeur NULL appropriée lorsque
vous créez un type de données, car la procédure de
modification d’un type de données peut être fastidieuse. Vous
devez utiliser l’instruction DROP TYPE pour supprimer le type de
données, puis recréer un nouveau type de données afin de le
remplacer. La suppression d’un type de données utilisé par des
tables de la base de données étant impossible, vous devez
également commencer par MODIFIER chaque table qui exploite
le type de données.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
92
3.2 Création de tables
Éléments à prendre en compte pour la création de tables
Lorsque vous créez une table, vous devez spécifier le nom de la
table ainsi que les noms et les types de données des colonnes.
Les noms de colonnes doivent être uniques à une table donnée.
Toutefois, vous pouvez utiliser le même nom de colonne dans
différentes tables au sein de la même base de données. Vous
devez spécifier un type de données pour chaque colonne. Vous
pouvez disposer des éléments suivants:
➢ Plus de 2 milliards d’objets par base de données, tables
comprises ;
➢ Jusqu’à 1024 colonnes par table;
➢ Jusqu’à 8060 octets par ligne. (La longueur maximale
approximative ne s’applique pas aux colonnes définies à
l’aide du spécificateur max).
Classement des colonnes
Un classement désigne un ordre de tri des données qui
détermine l’ordre dans lequel les valeurs sont répertoriées
lorsque les données sont triées de manière séquentielle.
Différents classements permettent de trier des données dans
des ordres différents selon divers critères : respect de la casse
par le classement, règles de tri pour les lettres accentuées et
les caractères spéciaux et autres éléments à prendre en
compte. SQL Server prend en charge le stockage des entités de
données avec différents classements dans la même base de
données. Vous pouvez spécifier des classements SQL Server
distincts au niveau de la colonne afin qu’un classement
différent puisse être attribué à chaque colonne d’une table.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
93
Possibilité de valeur NULL
Vous pouvez préciser dans la définition de table si l’utilisation
de valeurs NULL dans chaque colonne est autorisée. Si vous ne
spécifiez pas l’option NULL ou NOT NULL, SQL Server attribue la
caractéristique NULL ou NOT NULL par défaut au niveau de la
session ou de la base de données. Toutefois, ne vous fiez pas à
ces valeurs par défaut car elles peuvent changer.
Types de colonnes spéciaux
Les types spéciaux de colonnes incluent les éléments suivants :
➢ Colonnes calculées. Une colonne calculée est une colonne
virtuelle qui n’est pas stockée physiquement dans la table.
SQL Server utilise la formule que vous définissez lors de la
création de la colonne pour calculer la valeur de cette
dernière lorsque la colonne est requise. La formule est
définie avec d’autres colonnes de la même table.
L’utilisation d’un nom de colonne calculée dans une requête
peut simplifier la syntaxe de la requête ;
➢ Colonnes d’identité. Vous pouvez utiliser la propriété
Identité pour créer des colonnes (appelées colonnes
d’identité) qui contiennent des valeurs séquentielles
générées par le système qui identifient chaque ligne
insérée dans une table. Une colonne d’identité est souvent
utilisée pour les valeurs de clé primaire. En demandant à
SQL Server de fournir automatiquement les valeurs de
clés, vous pouvez réduire vos coûts et améliorer vos
performances. Le travail de programmation est simplifié,
les valeurs de clé primaire restent limitées en taille et le
risque de goulots d’étranglement découlant des
transactions des utilisateurs est réduit ;
➢ Colonnes timestamp. Les colonnes définies avec le type de
données timestamp affichent une valeur par défaut qui
désigne un horodatage généré automatiquement et
garanti comme étant unique au sein de la base de
données ;
➢ Colonnes unique identifié. Les colonnes définies avec le
type de données unique identifié peuvent être utilisées
pour le stockage d’identificateurs uniques globaux (GUID)
garantis comme étant universellement uniques. Vous
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
94
pouvez générer une valeur pour une colonne unique
identifiée à l’aide de la fonction Transact-SQL « NEWID ».
Création de tables pour notre BDD GESVE
Vous pouvez créer des tables à partir de l’Explorateur d’objets
dans SQL Server Management Studio (SSMS) ou à l’aide
l’instruction Transact-SQL CREATE TABLE.
L’exemple de code Transac-SQl ci-dessous crée les tables de
notre BDD GESVE :
Create Table Gerance.Produit
(
CodPronvarchar (5)notnull,
DesiPronvarchar (40)notnull,
Punumericnotnull,
Constraint CodPro primary key clustered (CodPro asc), unique
(Codpro)
)
Create Table Reception.Client
(
CodCli nvarchar (5)notnull,
NomCli nvarchar (30)notnull,
CateCli nvarchar (15)null,
Adressen varchar (50)notnull,
Constraint Codcli primary key clustered (Codcli asc), unique
(CodCli)
)
Create Table dbo.Achat
(
NumAchat intidentity (1,1),
CodPro nvarchar (5)notnull,
CodCli nvarchar (5)notnull,
Qte_Achat decimalnotnull,
Date_Achat datenotnull,
Foreignkey (CodPro) references Gerance.Produit,
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
95
Foreignkey (CodCli) references Reception.Client,
Constraint NumAchat primary key clustered (NumAchatasc)
)
Create index Ind_CodPro on Gerance.Produit(Codpro);
Create index Ind_CodCli on Reception.Client(CodCli);
Chapitre 4 Gestion des utilisateurs de base de données
Maintenant que nous avons définis les connexions (objets de
niveau serveur), nous allons voir comment définir les objets de
niveau base de données que sont les utilisateurs. En effet, les
droits d’accès, d’écriture, de lecture sur les bases de
données ne sont pas attribués aux connexions, mais aux
utilisateurs de bases de données. Il faut alors savoir que
chaque utilisateur de base de données est affilié à une
connexion de niveau serveur. Cependant, il existe des
utilisateurs, qui eux ne sont pas associés à une connexion
particulière (guest, sys…).
Il est donc bon de savoir que si un utilisateur dispose d’une
connexion de base de données et que celle-ci n’appartient à
aucun utilisateur de base de données capable d’intervenir sur la
base, les actions que celui-ci peut effectuer sont très limitées. Il
existe alors deux types de droits:
Ceux qui permettent ou non d’utiliser les objets de
telle ou telle base.
Ceux qui permettent d’utiliser telle ou telle
instruction. Comme nous l’avons dit plus tôt, ces droits sont
accordés ou refusés aux utilisateurs de bases de données et
non aux connexions serveur.
Note : Les utilisateurs de bases de données sont stockés dans la
table système sysuser. De plus, à sa création, un utilisateur ne
dispose d’aucun droit particulier si ce n’est de celui de guest.
4.1 Création d’utilisateurs de base de données
Il existe deux manières de créer des utilisateurs dans SQL
Serveur, comme pour créer la plupart des objets présents dans
une base de données. La création d’un utilisateur de base de
données va permettre de lier l’utilisateur à la connexion, et
donc autoriser l’utilisation de cette base.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
96
4.1.1 Avec SSMS
Pour créer un utilisateur dans SSMS, ouvrez l’explorateur
d’objets, et placez-vous sur la base de données concernée.
Développez alors le nœud Sécurité et placez-vous sur le nœud
Utilisateurs.
Dans le menu contextuel du nœud Utilisateurs, choisissez
Nouvel utilisateur.
Une nouvelle fenêtre s’ouvre.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
97
Précisez dans un premier temps le nom de l’utilisateur de base
de données et dans un second temps, la connexion serveur à lui
associer. À partir de cette fenêtre, il est, entre autres, possible
d’attacher des schémas à cet utilisateur ainsi que des rôles de
base de données. Cliquez alors sur OK. Votre utilisateur est créé
et mappé sur une connexion existante.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
98
4.1.2 Avec du code T-SQL
En Transact SQL, l’instruction permettant de créer des
utilisateurs et de les mapper aux différentes connexions est
CREATE USER. Voici la syntaxe détaillée de cette instruction :
USE[Manep]
GO
CREATE USER[HEDI-PC\Bulaya]FOR LOGIN[HEDI-PC\Bulaya] WITH
DEFAULT_SCHEMA=[Marjolain]
GO
✓ FOR LOGIN : Définit la connexion où sera mappé
l’utilisateur.
✓ WITH DEFAULT SCHEMA : Nom du schéma de base de
données à donner à l’utilisateur.
Note : Il existe des procédures stockées pour créer des
utilisateurs et leurs donner des droits sur les bases de données
qui sont sp_grantdbaccess et sp_adduser. Celles-ci sont
maintenues pour des raisons de compatibilité ascendante,
cependant, il est conseillé de ne plus les utiliser car elles sont
vouées disparaitre dans les prochaines versions de SQL Server.
4.2. Modification d’utilisateur de base de données
4.2.1 Avec SQL Server Management Studio
Pour modifier un utilisateur de base de données via l’interface
graphique, il vous suffit de déployer l’ensemble des nœuds qui
mène à cet utilisateur dans l’explorateur d’objets, afficher le
menu contextuel et sélectionner propriétés. Vous arriverez
alors directement sur la fenêtre de création d’un utilisateur, ou
certains champs seront remplis. Il vous suffira de changer les
informations que vous désirez modifier.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
99
4.2.2 Avec du code T-SQL
Pour modifier un utilisateur avec du code, nous allons utiliser
l’instruction ALTER USER. Voici la syntaxe de modification des
propriétés d’un utilisateur.
ALTER USER[HEDI-PC\Bulaya]
WITH NAME=Deep,
DEFAULT_SCHEMA=[dbo]
4.3 Suppression d’utilisateur de base de données
4.3.1 Avec SSMS
La procédure est la même que pour la modification.
Simplement, au lieu d’afficher le menu contextuel et de
sélectionner propriété, nous allons sélectionner supprimer.
4.3.2 Avec du code T-SQL
Pour supprimer un utilisateur, nous allons utiliser l’instruction
DROP USER. Voici la syntaxe de cette instruction :
DROP USER[Deep]
GO
Chapitre 5 Gestion des droits
Les droits sont les autorisations qui vont nous permettre de
travailler avec notre base de données. Ils sont organisés de
façon hiérarchique par rapport aux éléments sécurisables du
serveur. L’attribution des droits peut être faite à tous les
niveaux, que ce soit au niveau serveur, au niveau base de
données ou encore directement sur les schémas ou les objets.
Par conséquent, ils peuvent être accordés soit à un utilisateur,
soit à une connexion. Il est possible de gérer ces permissions
grâce à 3 instructions simples dans SQL Server : GRANT, DENY,
REVOKE. GRANT permet de donner un privilège, REVOKE
permet de le retirer si celui-ci a été donné auparavant et DENY
permet de l’interdire même si il a été donné au travers d’un
rôle.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
100
5.1 Droits d’instruction
Ces droits correspondent aux droits qui permettent de créer
(mettre à jour, supprimer) de nouveau objets dans la base. Les
utilisateurs qui possèdent de tels droits sont donc capable de
créer leurs propres tables…
Voici les principaux droits disponibles : CREATE DATABASE,
CREATE
TABLE, CREATE FUNCTION, CREATE PROCEDURE, CREATE VIEW,
BACKUP DATABASE, BACKUP LOG…
Nous allons maintenant apprendre à donner, retirer ou interdire
des droits.
5.1.1 Avec SSMS
Avec SSMS, on peut administrer ces droits via la fenêtre
propriété de la base de données concernée.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
101
Pour ajouter des droits à un utilisateur, sélectionnez l’utilisateur
dans le premier champ, où nous avons notre utilisateur Guest,
et octroyez-lui, enlevez-lui ou refusez-lui des permissions en
cochant ou décochant les checkbox en conséquence.
5.1.2 Avec du code T-SQL
Pour ajouter, supprimer ou interdire un droit à un utilisateur de
base de données, nous allons utiliser les instructions GRANT,
DENY et REVOKE comme énoncé précédemment. Voici la
syntaxe de don, suppression ou interdiction de droits :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
102
5.2 Droits d’utilisation
Les droits d’utilisation permettent de déterminer si un
utilisateur possède les droits pour travailler sur les objets, par
exemple lire les informations, insérer des données… Dans le
cas général, c’est le propriétaire de l’objet qui définit les droits
d’utilisation. En ce qui concerne les droits de lecture et de mise
à jour des données, le propriétaire possède la faculté de choisir
quelles colonnes l’utilisateur peut lire ou mettre à jour. Voici la
liste des principaux droits d’utilisation : INSERT, UPDATE,
SELECT, DELETE, EXECUTE.
5.2.1 Avec SSMS
Les droits d’utilisation peuvent être gérés à deux niveaux dans
SQL Server, au niveau utilisateur et au niveau objet. Dans
SSMS, pour les deux niveaux cités, la gestion de ces droits ce
fait grâce à la fenêtre de propriété. Voici les deux cas de
fenêtre dans lesquelles vous pouvez changer les droits
d’utilisation. - Au niveau objet :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
103
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
104
- Au niveau utilisateur :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
105
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
106
5.2.2 Avec du code T-SQL
Pour donner des droits d’utilisation ou les retirer avec du code
T-SQL, nous allons retrouver les trois mots clés GRANT, DENY et
REVOKE. La syntaxe en revanche sera changeante. La voici :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
107
5.3 Droits au niveau base de données
Les droits au niveau des bases de données vont donner des
droits aux utilisateurs qui ne seront valables que sur une base
de données précise. Au niveau base de données, il est possible
de donner des droits à un utilisateur, à un schéma, à une
assembly ou encore à un objet service broker. Ces droits
peuvent être attribués de plusieurs manières, soit par du code
Transact SQL, soit par les propriétés de la base de données.
5.3.1 Avec SSMS
Pour accorder des droits, vous procèderez de la façon suivante.
Déroulez la totalité des nœuds qui mènent à votre base de
données, affichez le menu contextuel de cette base de données
en effectuant un clic droit et sélectionnez propriété. Vous
aboutissez sur la fenêtre suivante (Pensez à vous rendre dans la
partie Autorisations) :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
108
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
109
Il vous suffit d’ajouter des utilisateurs dans la première partie
nommée Utilisateurs ou rôles et de leur donner des droits dans
la seconde partie nommée Autorisations. Cliquez enfin sur OK
pour valider vos choix.
5.3.2 Avec du code T-SQL
Avec du code T-SQL, nous utiliserons la syntaxe suivante :
• Permission de base de données : La ou les permissions de
base de données à accorder à l’utilisateur de base de
données. • Utilisateur : L’utilisateur qui va recevoir les
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
110
permissions de base de données précisées après
l’instruction GRANT.
• Groupe ou rôle : Constitue le contexte de sécurité qui va
nous permettre d’accorder les privilèges.
Note : Il est évident que nous pouvons utiliser l’instruction
GRANT, aussi bien que les instructions DENY et REVOKE, pour
interdire et supprimer des droits aux utilisateurs. Nous avons
noté plus haut que nous précisons le nom des permissions de
bases de données après l’instruction principale GRANT. Nous
allons lister la quasi-totalité de ces permissions ci-après :
ALTER ALTER ANY USER
ALTER ANY APPLICATION ROLE
AUTHENTICATE
ALTER ANY ASSEMBLY
BACKUP DATABASE
ALTER ANY ASYMMETRIC KEY
ALTER ANY CERTIFICATE
BACKUP LOG
ALTER ANY CONTRACT
CHECKPOINT
ALTER ANY DATABASE DDL
TRIGGER ALTER ANY DATABASE CREATE DATABASE DDL EVENT
EVENT NOTIFICATION
NOTIFICATION ALTER CREATE DEFAULT
ANY DATASPACE CREATE FULLTEXT CATALOG
CREATE FUNCTION
ALTER ANY FULLTEXT CATALOG CREATE MESSAGE TYPE
CREATE PROCEDURE
ALTER ANY MESSAGE TYPE
ALTER ANY REMOTE SERVICE CREATE QUEUE
BINDING ALTER
CREATE REMOTE SERVICE
BINDING
ANY ROLE
CREATE ROLE
CREATE ROUTE
ALTER ANY ROUTE
CREATE RULE
ALTER ANY SCHEMA CREATE SCHEMA
ALTER ANY SERVICE CREATE SERVICE
ALTER ANY SYMMETRIC KEY CREATE SYMMETRIC KEY
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
111
CREATE SYNONYM CREATE VIEW
CREATE TABLE CREATE XML SCHEMA
COLLECTION
CREATE TYPE
DELETE
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
112
5.4 Droit au niveau serveur
Les privilèges au niveau serveur s’attribuent de la même
manière que ceux de niveau base de données, simplement, ils
ne sont pas les mêmes. En revanche, ces privilèges ne sont pas
attribués à un utilisateur, mais à une connexion. Nous ne
présenterons donc pas les façons d’attribuer ces droits
puisqu’elles sont les mêmes que pour le niveau base de
données et d’ailleurs dans le cadre de notre cours nous avons
commencé par l’attribution de ce droit, mais nous allons les
citer :
- ADMINISTER BULK OPERATIONS
- ALTER ANY CONNECTION
- ALTER ANY CREDENTIAL
- ALTER ANY DATABASE
- ALTER ANY ENDPOINT
- ALTER ANY EVENT NOTIFICATION
- ALTER ANY LINKED SERVER
- ALTER ANY LOGIN
- ALTER RESOURCES
- ALTER SERVER STATE
- ALTER SETTINGS
- ALTER TRACE
- AUTHENTICATE SERVER
- CONNECT SQL
- CONTROL SERVER
Chapitre 6 Les rôles
On peut dire que les rôles sont des sortes de groupements de
droits. Il existe trois niveaux d’actions pour les rôles : Server,
Base de données et Application. L’utilité des rôles réside dans le
fait qu’il est plus simple d’attribuer des droits à des rôles puis
d’attribuer des rôles à des utilisateurs ou des connexions plutôt
que d’attribuer directement des droits à ces derniers. Il faut
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
113
donc retenir que les rôles sont des ensembles de droits qui
portent un nom et qu’on peut les attribuer aux utilisateurs. Pour
faciliter la gestion des droits, SQL Server propose des droits dits
fixes. En effet, ils sont prédéfinis et donc non modifiables. Ils
sont définis à deux niveaux : Server et Base de données. En
revanche, les rôles définis par l’utilisateur de SQL Server
atteignent deux niveaux différents : Base de données et
Application. Pour finir, un utilisateur de base de données peut
avoir accès à des droits de quatre manières différentes : grâce
aux droits de la connexion qu’il utilise, grâce aux rôles fixes,
grâce aux rôles créés par l’utilisateur et enfin grâce aux droits
qui lui ont été directement affectés.
Note : Il existe un rôle qui est public et qui est attribué à tous
les utilisateurs de base de données et à toutes les connexions.
Ce rôle ne peut pas être enlevé à aucun des utilisateurs. En
revanche, il peut être modifié. Il faut simplement prendre en
compte que TOUS les utilisateurs auront les droits ajoutés à
public.
1. Les rôles
prédéfinis Rôles
serveur :
• Sysadmin : Administrateur du serveur.
• Serveradmin : Permet de configurer les paramètres au
niveau du serveur.
• Setupadmin : Permet d’exécuter certaines procédures
stockées et d’ajouter des serveurs liés.
• Securityadmin : Permet de gérer les connexions serveur.
• Processadmin : Permet de gérer les traitements au sein de
SQL Server.
• Dbcreator : Permet de créer ou modifier des bases de
données.
• Diskadmin : Permet de gérer les fichiers sur le disque.
• Bulkadmin : Permet d’exécuter l’instruction BULK INSERT.
Rôles base de données :
• Db_owner : Équivalent à propriétaire base de données.
• Db_accessadmin : Permet d’ajouter et supprimer des
utilisateurs de base de données.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
114
• Db_datareader : Permet d’utiliser l’instruction SELECT.
• Db_datawriter : Permet d’utiliser les instructions INSERT,
UPDATE et DELETE.
• Db_ddladmin : Permet d’effectuer les opérations sur les
objets de base de données.
• Db_securityadmin : Permet de gérer les éléments de
sécurité sur la base de données.
• Db_backupoperator : Permet l’utilisation des backups.
• Db_denydatareader: Interdit l’instruction SELECT.
• Db_denydatawriter : Interdit l’écriture sur la base de
données.
2 Les rôles définis par l’utilisateur
Il est possible de définir ses propres rôles afin de faciliter
l’administration des droits dans SQL Server. Logiquement, on
créera un rôle dit personnaliser lorsque plusieurs utilisateurs
doivent avoir les mêmes droits et que ces droits n’existent pas
dans les rôles prédéfinis. Les rôles peuvent être accordés soit
directement à un utilisateur, soit à un autre rôle.
2.1 Avec SQL Server Management Studio
Pour créer un nouveau rôle, procédez de la manière suivante.
Déployez successivement le nœud de votre base de données
puis le nœud sécurité. Affichez alors le menu contextuel du
nœud rôles et sélectionnez Nouveau rôle.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
115
Vous obtenez cette nouvelle fenêtre :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
116
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
117
Il vous suffit alors de préciser le nom et le propriétaire du rôle.
En revanche, vous n’êtes pas obligé de préciser les autres
informations de suite. Vous pouvez les modifier ultérieurement
en vous rendant dans les propriétés du rôle voulu.
2.2 Avec du code T-SQL
Voici la syntaxe de création d’un rôle personnalisé :
Nous allons bien entendu créer un rôle grâce à l’instruction
CREATE ROLE. Il est alors nécessaire de préciser le nom du
schéma après cette instruction pour assurer son unicité au sein
de la base de données sur le serveur. On peut enfin préciser un
propriétaire grâce à la clause AUTHORIZATION.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
118
❖ La sauvegarde d'une base de données
Après avoir se connecter, affichez l'arborescence en cliquant
sur le nom du serveur. Cliquez sur Base de données puis
sélectionnez la base de données souhaité. Il en existe deux
sortes, la base de données utilisateur, visible dans cette
arborescence ou une base de données système, pour cela,
cliquez sur Base de données que voulez faire la Backup. Clic
droit sur la base de données / Tâches / Sauvegarder :
Une fenêtre nommée « Sauvegarder la base de données »
s'affiche, vérifiez le nom de la base de données. Sélectionnez
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
119
"Complète" dans le champ "Type de sauvegarde"
Vous avez accès à certaines options dans « Jeu de
sauvegarde » ou « Backup Type», vous pouvez modifier le
nom, entrer une description correspondantes à la sauvegarde,
ajouter une date d'expiration à cette sauvegarde (en cliquant
sur «Après» «After»).Certaines destinations de sauvegarde
sont disponibles, vous pouvez choisir d'en ajouter ou d'en
supprimer, l'interface étant intuitive les boutons correspondent
aux actions qu'ils exécutent, Ajout / Modifier / Supprimer.
• Nous pouvons utiliser le langage T-SQL
BACK UP DATABASE[GESVA]TO DISK= N'C:\Program Files\Microsoft SQL
Server\MSSQL11.HEDI\MSSQL\Backup\GESVA.bak' WITH RETAINDAYS=
7,NOFORMAT,NOINIT,NAME=N'GESVA-Full Database
Backup',SKIP,NOREWIND,NOUNLOAD,STATS= 10
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
120
L'onglet « Options » offre la possibilité d'écraser la sauvegarde
précédente si elle existe, d'en créer une différente, de vérifier la
sauvegarde en fin d'opération...
Voici un aperçu de l'onglet :
• La sauvegarde différentielle
Il est possible d'effectuer une sauvegarde différentielle dès
qu'une sauvegarde complète a été enregistrée. Cette
sauvegarde différentielle ne sauvegarde que les éléments
modifiés ou ajoutés depuis la sauvegarde complète. La
procédure est identique à celle décrite juste avant, seul le
cinquième point doit être modifié, il faut sélectionner «
Différentielle » dans le champ « Type de sauvegarde »
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
121
• La sauvegarde planifiée
Il est également possible de planifier la sauvegarde d'une ou de
plusieurs bases de données régulièrement, quotidienne,
hebdomadaire, mensuelle, ... Ceci peut se révéler très utile
pour une entreprise souhaitant garder une version sauvegardée
de sa base de données la plus récente possible, en cas de
perte.
Note : Remarque : pensez à démarrer l'agent SQL Server
pour la suite, si celuici est arrêté.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
122
Vous recevrez un message de confirmation, acceptez.
1. Création de l'unité de sauvegarde
L'unité de sauvegarde va permettre d'indiquer les lieux
d'enregistrement pour nos sauvegardes, par la suite il ne sera
donc pas utile de devoir taper le chemin d'accès, qui est plus
enclin à l'erreur dans une requête.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
123
Déployez « Objet serveur » dans l'arborescence de gauche, clic
droit sur "Unité de sauvegarde" puis «Nouvelle unité de
sauvegarde».
Le nom du périphérique correspond au nom de l'unité de
sauvegarde, donnez-lui un nom approprié à l'élément à laquelle
elle sera affectée pour plus de lisibilité.
Le fichier est le chemin du fichier dans lequel la sauvegarde
sera stockée.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
124
• Code Transact-SQL
USE[GESVA]
GO
EXECmaster.dbo.sp_addumpdevice@devtype=N'disk',@logicalname=N'Gesvent',
@phy sicalname=N'D:\Backup_Gesva\Sauver_Gesvent.bak'
GO
Une fois l'unité de sauvegarde créée, elle apparaît dans
l'arborescence de gauche.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
125
2. Création d'un nouvel opérateur
L'opérateur recevra une notification en cas d'échec ou du bon
déroulement de la sauvegarde. Faites un clic droit sur
«Opérateurs» dans l'arborescence de gauche puis «Nouvel
opérateur...»
Une fenêtre s'ouvre alors :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
126
T-SQL
USE[GESVE]
GO
EXECmsdb.dbo.sp_add_operator@name=N'Clery_Luamba',
@enabled=1,
@sunday_pager_start_time=80000,
@sunday_pager_end_time=180000,
@pager_days=1,
@email_address=N'[email protected]',
@netsend_address=N'192.168.1.75'
GO
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
127
Saisissez le nom de l'opérateur, son adresse électronique et le
nom de sa machine dans « Adresse NET SEND ».
Note : Il est possible de voir toutes les notifications envoyées à
cet utilisateur dans la rubrique "Notifications".
Une fois l'opérateur créé, celui-ci apparaît dans l'arborescence
de gauche :
3 Finalisation de l'automatisation
Pour automatiser cette solution, créez un nouveau travail, pour
cela clic droit sur « Travail», «nouveau travail...»
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
128
Pour l'exemple dans le cadre de notre cours, nous allons faire
une sauvegarde hebdomadaire, saisissons "Sauvegarde
Hebdomadaire" pour nommer celle-ci.
Ajoutons une description pour pouvoir la réutiliser plus
facilement.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
129
Une fois ces informations sont remplies allez dans l'onglet «
Étapes » ou «Steps»
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
130
En bas à gauche cliquez sur « New. » pour en créer une
sauvegarde, dans cette étape nous allons demander de
sauvegarder la BDD GESVA.
Nous allons saisir « Sauve_GESVE» dans le nom de l'étape.
Choisissez « Script Transact -SQL (T-SQL) » dans le type de
l'étape. Pour sauvegarder une base de donnéez, saisissez la
commande :
BACKUP DATABASE[GESVA] TO SauveGarde_Hebdomadaire
GO
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
131
Le bouton
« Analyserou» « Parse »en anglais permet de vérifier la bonne
syntaxe de votre commande.
Note il
: est possible de spécifier un chemin pour l'enregistrement de la base, de
la manière suivante (l'unité de sauvegarde n'est alors plus utile) :
BACKUPDATABASE[Gesva]TODISK=
N'D:\Data\GesvaIsipa.bak'
GO
Dans l'onglet « Avancé » ou « Advanced », différentes
options sont disponibles, l'action à effectuer en cas de succès,
d'échec, le nombre de tentatives à effectuer, ... Nous
modifierons l'action en cas de succès en sélectionnant « Passer
à l'étape suivante » ou «Go to the next Step».
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
132
Note : Lorsque plusieurs étapes sont créées, il est possible de :
Les déplacer grâce aux flèches en bas à gauche de la
fenêtre pour modifier leur ordre d'exécution ;
Choisir l'ordre d'action de la prochaine étape dans l'onglet
Avancé des propriétés de l'étape.
Une fois les deux étapes créées (une pour chaque base de
données), nous sommes de nouveau dans la fenêtre «
Propriétés du travail ». Dirigez-vous dans l'onglet «
Planifications » ou « Schedules», celui-ci va nous permettre
de planifier de manières régulières les sauvegardes.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
133
Cliquez sur « Nouvelle... » ou « New » pour planifier les
sauvegardes. Pour cet exemple nous avons décidé d'effectuer
une sauvegarde par semaine.
Prenons le contexte d'une entreprise, la sauvegarde doit être
faite le week-end pour ne pas perturber le trafic. Vous devriez
avoir sélectionnez ces options :
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
134
Le travail s'effectuera toutes les semaines, dans la nuit de
samedi à dimanche. La sauvegarde ne se manifeste pas à
l'écran quand elle démarre et ne perturbe pas les capacités de
la machine sur laquelle vous travaillez (pour les petites
sauvegardes du moins). Vous pouvez vérifier que celle-ci s'est
bien déroulée en regardant la date de modification du fichier
dans le répertoire choisi auparavant. De plus il est possible de
recevoir une notification du bon déroulement du travail (voir
dans l'onglet « Notifications » dans les propriétés du travail).
Il est également possible de démarrer le travail manuellement,
à un autre horaire que celui planifié. Clic droit sur le travail
souhaité, « Démarrer le travail à l'étape... »
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
135
Celui-ci démarrera, s'il se termine correctement la fenêtre
affichée ressemblera à ça :
La sauvegarde se trouve bien à l'emplacement précisé dans
l'unité de sauvegarde.
❖ Restaurer une base de données grâce à SQL Serveur
2014 ou 2012 Management Studio.
Se connecter à SQL Server, sélectionner le serveur souhaité
pour afficher l'arborescence :
Choisissez Base de données
Clic droit sur la base de données / Tâches / Restaurer
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
136
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
137
Cliquer sur Base de données, une fenêtre nommée «
Restaurer la base de données» va alors s'ouvrir
Dans onglet « Général », choisissez la destination de la base,
en entrant le nom de
Celle-ci :
Sélectionnez l'emplacement du fichier, appelé « jeu de
sauvegarde » à restaurer.
Deux options s'offrent à vous « A partir de la base de
données » ou « A partir de l’unité »
Dans la grille « Sélectionnez les jeux de sauvegarder à
restaurer », sélectionnez la base à restaurer, celle-ci
affiche les bases de données disponibles à l'emplacement
spécifié.
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
138
Les options avancées sont disponibles en cliquant sur «
Options » dans l'onglet Sélectionner une page.
D'autres options sont disponibles dans l’onglet Onglet de
restauration,
« Remplacer la base de données existante», «Conserver les
paramètres de réplication», «Demander confirmation avant
chaque restauration de sauvegarde», «Restreindre l'accès à la
base de données restaurée». Sélectionnez l'option la plus
appropriée à votre cas.
Après la restauration il est possible de choisir ce que
devient la base de données une fois restaurée, pour cela,
allé dans l'onglet État de récupération.
SQL Server 2014 ou 2012 est un outil puissant de gestionnaire
de base de données. Il permet d'automatiser les sauvegardes
des entreprises désireuses de garder une trace la plus récente
de leur activité. Il permet également de signaler le bon
déroulement de la sauvegarde, vérifié que celle-ci n'est pas
vide, ...
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI
139
Note de Cours de Gestion de base de données
Présenté par Ir. Assistant Pierre MUTOMBO MUSOKAYI