SGBDR. 1 introduction : SQL server. SQL-Server est un SGBDR Client-Serveur qui utilise TRANSACT-SQL dans ses transactions. 13/04/2015.

Documents pareils
Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de Données relationnelles et leurs systèmes de Gestion

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

TP Contraintes - Triggers

Cours Bases de données 2ème année IUT

Configurer la supervision pour une base MS SQL Server Viadéis Services

Le Langage De Description De Données(LDD)

Olivier Mondet

Intégrité des données

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Les déclencheurs. Version 1.0. Grégory CASANOVA

Création et Gestion des tables

Bases de données avancées

Gestion des utilisateurs et de leurs droits

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Administration des bases de données. Jean-Yves Antoine

Historisation des données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Bases de données et sites WEB

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

SQL Historique

CREATION WEB DYNAMIQUE

Cours Bases de données 2ème année IUT

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Java DataBaseConnectivity

Langage SQL : créer et interroger une base

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

I. MySQL : Serveur et SGBD

Partie II Cours 3 (suite) : Sécurité de bases de données

Encryptions, compression et partitionnement des données

Présentation du PL/SQL

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Pour les débutants. langage de définition des données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles

Notes de cours : bases de données distribuées et repliquées

Gestion de base de données

PHP 5. La base de données MySql. A. Belaïd 1

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

LE LANGAGE SQL2 1. INTRODUCTION

Le langage SQL (première partie) c Olivier Caron

SQL Server administration SERVEUR DE BASES DE DONNEES OLIVIER D.

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction au Système de Gestion de Base de Données et aux Base de Données

SQL Server 2000, Analysis Services et DTS

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Attaques applicatives

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL Server Cyril Gruau. 11 février 2003

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Compétences Business Objects

Bases de Données Avancées PL/SQL

Bases de données et sites WEB Licence d informatique LI345

OpenPaaS Le réseau social d'entreprise

Devoir Data WareHouse

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

TP3 : Creation de tables 1 seance

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

AGRÉGATION «ÉCONOMIE ET GESTION»

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

//////////////////////////////////////////////////////////////////// Administration bases de données

Auto-évaluation Oracle: cours de base

Cours Bases de données 2ème année IUT

Bases de données relationnelles

Paginer les données côté serveur, mettre en cache côté client

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Introduction à JDBC. Accès aux bases de données en Java

Cours: Administration d'une Base de Données

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Les bases de données

1/ Présentation de SQL Server :

Les bases fondamentales du langage Transact SQL

Les BASES de DONNEES dans WampServer

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

MS SQL Express 2005 Sauvegarde des données

Cours de SQL SERVER 2005 SQL SERVER 2005

BASES DE DONNEES TP POSTGRESQL

Data Tier Application avec SQL Server 2008 R2

Modélisation et Gestion des bases de données avec mysql workbench

1 Position du problème

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Java Licence Professionnelle CISII,

Transcription:

SGBDR Sql server 1 Pr H.LAARAJ 2 1 introduction : SQL server SQL-Server est un SGBDR Client-Serveur qui utilise TRANSACT-SQL dans ses transactions. Client Requête (Transact-SQL) Serveur Résultats (seulement les donnes) Base de Données Application CLIENTE Application SERVEUR : SQL-SERVER (SGBDR) 1

3 Objets de SQL Server Les bases de données contiennent un certain nombre d objets logiqu es. Il est possible de regrouper ces objets en trois grandes catégories : Gestion et stockage des données : tables, type de données, contrai ntes d intégrité, valeur par défaut, règles et index. Accès aux données : vues et procédures stockées. Gestion de l intégrité complexe : déclencheur (Trigger) 4 2 Création une base de données La création d une base de données est une étape ponctuelle, réalisée par un administrateur SQL Server. Avant de tenter de créer une base de données, il e st important de définir un certain nombre d éléments de façon précise : le nom de la base de données qui doit être unique sur le serveur SQL, la taille de la base de données, les fichiers utilisés pour le stockage des données. Une base peut être créée de deux façons différentes : par l intermédiaire de l instruction Transact SQL CREATE DATABASE ; par l intermédiaire de SQL Server Management Studio. 2

5 3 les tables, view 3.1 création des tables: create table nom_table( champ type,.) Exemple : créer les 2 tables? Employer( code, nom, prenom, date_naiss, salaire,codef) Fonction (codef, nomf) 6 3.2 les contraintes d intégrités Contraintes de clé primaire : ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte PRIMARY KEY(nom_champ); Exemple : Le champ code de la table Employer 3

7 Contraintes de clés étrangeres : ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte FOREIGN KEY(nom_champ) REFERENCES nom_table(champ); Exemple : Le champ codef de la table Fonction 8 Contraintes de validation Les contraintes de validations (CHECK) vont permettre de définir un certain nombre de règles simples de gestion des données. ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte CHECK (règles); Exemple : Définir la règle suivante : La salaire de l employer doit être compris entre 3000 et 20000 4

9 Les index Les index vont permettre d accéder plus rapidement aux différentes informations. CREATE INDEX nom_index Exemple : ON nom_table(nom_champ); Définir un index pour le champ codef de la table Fonction 10 Exercice pratique : Dans MS sql server : Créer la base de données bd1 Créer 2 tables employer et fonction avec toutes les contraintes possibles Insérer les enregistrements dans ses 2 tables 5

11 Types de données définis par l utilisateur Il est possible de définir ses propres types de données, soit par l intermédiaire d e Management Studio, soit par la commande CREATE TYPE. CREATE TYPE nom_type from type_base { null / not null} Exemple : Définir un "type de données utilisateur" nommé texte de type nvarchar(20) non null et attribuer ce type aux champs nomf de la table fonction? 12 La valeur par défaut La valeur par défaut permet de préciser la valeur qui va être positionnée dans la colonne si aucune information n est précisée lors de l insertion de la ligne. CREATE DEFAULT nom_val_defaut as valeur Rq: la procédure sp_bindefault (nom_val_defaut, table.champ )permet d attribuer la valeur par défaut à un champ donné en argument Exemple : Créer la valeur par défaut suivante: valdefautnom (Valeur = anonyme ) et attribuer cette valeur par défaut au champ nom dans la table Employer. 6

13 séquence Une séquence est un objet lié au schéma défini par l'utilisateur qui génère une séquence de valeurs numériques d'après la spécification avec laquelle la séquence a été créée CREATE SEQUENCE schema_name. sequence_name AS integer_type START WITH <constant> INCREMENT BY <constant> MINVALUE <constant> NO MINVALUE MAXVALUE <constant> NO MAXVALUE CYCLE NO CYCLE CACHE <constant> NO CACHE ; 14 Contrairement aux valeurs de colonnes d'identité générées lors de l'insertion de lignes, une application peut obtenir le numéro séquentiel suivant sans insérer la ligne en appelant l instruction: NEXT VALUE FOR schema_name. sequence_name 7

15 3.3 view Une vue est une table virtuelle, dans laquelle il est possible de rassembler des informations provenant de plusieurs tables les données ne sont pas stockées dans une table de la base de données CREATE VIEW Nom_de_la_Vue (colonnes) AS SELECT... 16 4 langage transact sql 4.1 La déclaration d une variable Declare @Nom_Variable Type_Donnée Exemple : Declare @a int Declare @b nvarchar(10) 8

17 4.2 l affectation d une valeur à une variable Select @Nom_Variable = valeur Select @Nom_Variable = (Select...from...Where ) ou Set @Nom_Variable =valeur Set @Nom_Variable = (Select...from...Where ) 18 4.3 l affichage d informations Print Elément_A_Afficher Ou select Elément_A_Afficher Remarque : qu'on ne peut jamais concaténer une valeur numérique avec une valeur chaîne de caractères, Exemple : Declare @x int Set @x = 2 Print la valeur de x : + convert(nvarchar(20),@x) 9

19 4.4 les structures alternatives If Condition Begin Instructions End Else Begin Instructions End 20 4.4 les boucles While Condition Begin instructions End Remarques : Le mot clé Break est utilisé dans une boucle While pour forcer l'arrêt de la boucle Le mot clé Continue est utilisé dans une boucle While pour annuler l'itération en cours et passer aux itérations suivantes (renvoyer le programme à la ligne du while) 10

21 4.5 Exercice: Soit la base de donneés suivante: table etudiant (NumEtd INT, nom nvarchar(23),prenom nvarchar(23),adresse nvarchar(123),ville nvarchar(23)) table matiere (NumMat INT, libelle nvarchar(23)) table notation (NumEtd INT,NumMat INT,note decimal(2,2),dateevaluer datetime) 1 Ecrire un programme qui calcule la moyenne de note de l étudiant numéro 2 et affiche un message moyenne valide ' ou moyenne invalide ' selon que la moyenne est inférieur ou supérieur à 10 2 Ecrire un programme qui : Calcule le nombre d étudiants dans la table Enregistre un nouveau étudiant avec les valeurs ( nbreetudiants+1, salmi, mourad,null, laayoune ) 22 5 Procédures stockées 5.1 Procédure sans arguments Create Procedure Nom_Procédure as Instructions Exécution : Exec Nom_Procedure Exemple: Créer une procédure stockée nommée PS1 qui affiche la liste des étudiants: 11

23 5.2 Avec des paramètres en entrée : Create Procedure Nom_Procedure Nom_Param1_Entrée Type_Donnée = Valeur_Par_Defaut, Nom_Param2_Entrée Type_Donnée = Valeur_Par_Defaut as Instructions Exécution : Exec Nom_Procedure Valeur_Param1, Valeur_Param2... Ou Exec Nom_Procedure Nom_Param1 = Valeur_Param1, Nom_Param2 = Valeur_Param2... 24 Exemples: 1. Créer une procédure stockée nommée PS2 qui affiche la liste des notes d'un étudiant dont le numéro est donné en paramètre : 2. Créer une procédure stockée nommée PS3 qui reçoit un numéro de l étudiant, un numéro de matière et la note : Si l étudiant n'existe pas ou si la matière n'est pas disponible, afficher un message d'erreur Ajouter ensuite seulement les valeurs d entrée à la table notation, la dateevaluer prend la valeur vide 12

25 5.3 Avec des paramètres en sortie Create Procedure Nom_Propriétaire.Nom_Procedure Nom_Param1_Entrée Type_Donnée = Valeur_Par_Defaut, Nom_Param2_Sortie Type_Donnée Output... as instructions Exécution : Declare Var_Param1_Sortie Type_Param1_Sortie... Exec Nom_Procedure Val_Param1_Entrée,..., Var_Param2_Sortie Output... Exemple: Créer une procédure stockée nommée PS4 qui retourne en sortie la moyenne de notes d un étudiant dont le numéro est passé en paramètre d entrée : 26 5.4 Fonction qui retourne une valeur scalaire Create Function Nom_fonction (Nom_Param1 Type_Donnée, ) Returns type_de_retour as Instructions... Return Valeur Exemple : Créer une fonction nommée F1(numero int) qui retourne la moyenne des notes d un étudiant dont le numéro est passé en argument? 13

27 5.5 Fonction qui retourne une table Create Function Nom_Fonction (Nom_Param1 Type_Donnée, ) Returns Table as Return (Select ) Exemple : Créer une fonction nommée F2() qui retourne la liste des étudiants (nom, prenom): 28 6 Curseurs 6.1 définition : L utilisation de curseurs est une technique permettant de traiter ligne par ligne le résultat d une requête, contrairement au SQL (SELECT) qui traite un ensemble de lignes. 14

29 6.2 Declarer CURSOR Cette instruction permet la déclaration et la description du curseur ANSI. DECLARE nomcurseur[insensitive][scroll]cursor FOR SELECT... FOR {READ ONLY UPDATE[OF liste_colonne]}] INSENSITIVE Seules les opérations sur la ligne suivante sont permises. SCROLL Les déplacements dans les lignes du curseur peuvent être effectués dans tous les sens. UPDATE Précise que des mises à jour vont être réalisées sur la table d origine du curseur. 30 6.3 manipuler les curseurs Pour ouvrir un curseur Open nom_curseur Pour lire un enregistrement à partir d'un curseur Fetch {First next prior last} from nom_curseur into variable1, variable2,.. Fermer un curseur Close nom_curseur Libérer les ressources utilisées par un curseur : Deallocate Nom_Curseur La variable système @@fetch_status est utilisée pour détecter la fin du curseur. Tant que cette variable = 0, on a pas encore atteint la fin du curseur. 15

31 6.4 Exemple: Créer un curseur qui : 1. Affiche la liste des étudiants sous la forme : nom : prénom : 2. Affiche le première enregistrement de la table étudiant sous la forme : nom : prénom : 3. effectue la suppression itérative d un étudiant s il constate qu il n a pas une note ( note is null) : 32 7. transaction Une transaction est un ensemble indivisible d instructions Transact SQL. Soit la totalité peut s exécuter, soit aucune instruction ne peut s exécuter. 16

33 Pour démarrer une transaction on utilise l'instruction Begin Tran Pour valider la transaction et rendre les traitements qui lui sont associés effectifs, on utilise l'instruction Commit Tran Pour interrompre une transaction en cours qui n'a pas encore été validée, on utilise l'instruction Rollback Tran Begin Tran [Nom_Transaction] If Condition RollBack Tran [Nom_Transaction] Commit Tran [Nom_Transaction] 34 Update Commit Rollback 17

35 8 Les exceptions Pour chaque erreur qui survient dans SQL Server, SQL Server produit un message d erreur. En règle générale, tous les messages possèdent la même structure : Texte Message : Représente le texte du message. Gravité : niveau compris entre 1 et 25 afin de mesurer l'importance de l'erreur. Seul l'administrateur système peut ajouter des messages avec un niveau de gravité compris entre 19 et 25 Etat : Valeur entière comprise entre 1 et 127 qui identifie la source à partir de laquelle l'erreur a été émise. Il est possible de lever des exceptions personnalisées via l instruction RAISERROR : Exemple : RAISERROR ('Le stock est négatif!', 12, 1) Gravité Etat 36 gestion des erreurs Il existe deux manières de gérer les erreurs. La première consiste à tester la valeur de la variable système @@ERROR la seconde consiste à positionner dans un gestionnaire d exception TRY le bloc d instructions à tester, et dans le CATCH, l erreur à lever. Voyons la syntaxe : BEGIN TRY... END TRY BEGIN CATCH... END CATCH 18

37 les fonctions SQL utilisées Pour obtenir des informations sur l erreur, il est possible d utiliser les fonctions SQL suivantes : ERROR_MESSAGE() : Retourne le texte du message à communiquer à l application. Ce texte comprend tous les paramètres mis en argument à l erreur en question. ERROR_NUMBER() : Retourne le numéro de l erreur. ERROR_SEVERITY() : Retourne le niveau de gravité. ERROR_STATE() : Retourne l état. ERROR_LINE() : Retourne le numéro de la ligne à partir de laquelle l'erreur a été émise. 38 Exemple: Ecrire un code T-Sql qui génère une erreur lors que l utilisateur: Insère dans la table matière un enregistrement dont la clé est déjà existe Insère dans la table notation une note > 20 ou < 0 19

39 9. Triggers(déclencheurs) Se déclenche directement après une instruction (insert delete update) CREATE TRIGGER <name> ON <table> {FOR AFTER INSTEAD OF} <list of events> AS. --les instructions T-SQL Avec: FOR ou AFTER: déclenche le trigger après l instruction. INSTEAD OF : n exécute pas l instruction mais fait un traitement à la place. <list of events> = INSERT, DELETE, UPDATE 40 les tables INSERTED et DELETED Dans les instructions Trigger on a 2 tables INSERTED et DELETED Dans le cas d un DELETE : DELETED contient les lignes supprimées Dans le cas d un INSERT : INSERTED contient les nouvelles lignes Dans le cas d un UPDATE : DELETED contient les lignes avant modification, INSERTED contient les lignes après modification INSERTED Rollback Insert delete update Trigger BD DELETED 20

41 11 schéma Les schémas SQL sont des unités de code à la manière de bibliothèque package ou des espaces de noms create schema mon_schema 42 12.Gestion des droits d accès en SQL Server Comme tous les autres SGBD, SQL Server exige que les utilisateurs des bases de données soient préalablement connectés au Serveur SQL. Les droits d accès que l on pourra définir sur les différents objets de la BD seront associés à un utilisateur de BD, auquel correspondra une connexion au serveur (appelée également login). SQL Server prévoit 2 modes de sécurité différents permettant de créer des connexions au serveur. Mode de sécurité Windows: L accès au serveur SQL est transparent pour les utilisateurs approuvés par Windows. Mode de sécurité Mixte: Ce mode repose sur une authentification Windows suivie d une authentification SQL Server. 21

43 Syntaxe de création d une connexion (login) en mode sécurité Windows : CREATE LOGIN nom_connexion FROM WINDOWS [WITH DEFAULT_DATABASE=mabd ] nom_connexion doit être un nom d utilisateur ou de groupe Windows en mode sécurité Mixte : CREATE LOGIN nom_connexion WITH PASSWORD = mon_mot_de_passe [,DEFAULT_DATABASE=mabd ] 44 Gestion des utilisateurs de la BD Les connexions au niveau serveur seront donc associées («mappées») à des utilisateurs de BD. CREATE USER nomutilisateur [FOR LOGIN maconnexion] [WITH DEFAULT_SCHEMA= nomschéma] nomschéma est le nom du schéma associé à cet utilisateur de BD. Un schéma est un ensemble logique d objets (tables, vues, procédures, fonctions) à l intérieur d une BD 22

45 Gestion des droits Il est possible de gérer l attribution de privilèges au niveau du serveur, de la BD entière, au niveau d un schéma particulier ou au niveau d un objet particulier. Droits d utilisation de DDL: Ces droits permettront à des utilisateurs de créer leurs propres BD, tables, vues, procédures, fonctions (CREATE) Accorder : GRANT {ALL permission[,... ]} TO utilisateur Permission : nom de la (ou des) permission(s) de DDL explicitement accordée(s) ou toutes (ALL) Retirer : REVOKE {ALL permission } FROM utilisateur Interdire : DENY permission TO utilisateur 46 Droits d utilisation de DML: Accorder : GRANT {ALL permission[,... ]} ON Objet TO utilisateur Permission : nom de la (ou des) permission(s) de DDL explicitement accordée(s) ou toutes (ALL) Retirer : REVOKE {ALL permission } ON Objet FROM utilisateur Interdire : DENY permission ON Objet TO utilisateur 23

47 Les rôles Ils permettent de gérer plus facilement les privilèges en accordant ceux-ci aux rôles et en accordant ensuite un ou plusieurs rôles aux différents utilisateurs. Syntaxe: CREATE ROLE nomrole Pour ajouter un utilisateur dans un rôle il faut utiliser la procédure stockée système sp_addrolemember Exec sp_addrolemember nom_rôle, nom_utilisateur 24