Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011
Sommaire 1/ Présentation de SQL Server 2/ Architerture client-serveur 3/ Découvert de SQL Server 4/ Définition d une base de données relationnelle 5/ Exercice
1/ Présentation de SQL Server : SQL Server est un système de gestion de bases de données relationnelles (SGBDR) répondant aux exigences professionnelles du stockage de données. SQL Server prend en charge nativement pour la communication de requêtes entre client et serveur : Transact-SQL (variante du SQL pour l écriture des procédures stockées, entre autres) XML (extensible Markup Language, un langage à balises permettant la représentation de données arbitraires) MDX (Multidimensional expressions) SQL-DMO (SQL-Distributed Management Objects) Pour cela, deux modèles de stockage de données sont mis à disposition par SQL Server: OLTP (optimise la vitesse de mise à jour et de traitement) OLAP (permet la création de rapports et une analyse en entreprise) 1.2/ Composants client-serveur : L architecture de SQL Server est divisée en : une partie serveur : gestion des bases de données, répartition des ressources entre les différentes demandes des clients une partie client : affichage des résultantes de requêtes 1.3/ Bases de données SQL Server : SQL Server héberge deux types de bases de données, les bases de données système et les bases de données utilisateur. Les bases de données système contiennent des informations nécessaires au bon fonctionnement du moteur SQL Server et des services associés. Les bases de données utilisateur sont les bases de données créées et utilisées par les utilisateurs. Description des bases de données installées par défaut : - master : Contrôle les bases de données utilisateur et le fonctionnement global de SQL Server en effectuant le suivi d informations telles que les comptes d utilisateur, les variables d environnement configurables et les messages d erreur du système. - model : Offre un modèle ou prototype pour les nouvelles bases de données utilisateur. - tempdb : Offre une zone de stockage pour les tables temporaires et les autres besoins de stockage temporaire.
- msdb : Offre une zone de stockage pour les informations de programmation et l historique des travaux. - distribution : Stocke les données relatives à l historique et aux transactions utilisées dans la réplication. - pubs : Propose un exemple de base de données comme outil d apprentissage. - Northwind : Propose un exemple de base de données comme outil d apprentissage. 1.3.1. Objets de base de données : Une base de données est un ensemble de données, de tables et autres objets. Les objets de base de données vous aident à structurer vos données et à définir les mécanismes d intégrité des données. Description des objets de base de données SQL Server : - Table : Définit un ensemble de lignes ayant des colonnes associées. - Type de données : Définit les valeurs de données autorisées pour une colonne ou une variable. SQL Server offre les types de données fournis par le système. Les utilisateurs créent des types de données définis par l utilisateur. - Contrainte : Définit les règles relatives aux valeurs autorisées dans les colonnes et constitue le mécanisme standard pour garantir l intégrité des données. - Valeurs par défaut : Définit une valeur qui est stockée dans une colonne si aucune autre valeur n est fournie. - Règle : Contient des informations qui définissent les valeurs valides qui sont stockées dans une colonne ou un type de données. - Index : Constitue une structure de stockage offrant un accès rapide pour l extraction de données, et pouvant garantir l intégrité des données. Dans un index ordonné, les enregistrements de la table sont physiquement stockés suivant l ordre des valeurs de la ou des clés de l index. Dans un index non ordonné, l ordre logique de l index ne correspond pas à l ordre stocké physique des lignes de la table. - Vue : Permet de visualiser des données provenant d une ou de plusieurs tables ou vues d une même base de données. Fonction définie par l utilisateur Renvoie soit une valeur scalaire, soit une table.
- Procédure stockée : Constitue un ensemble nommé d instructions Transact-SQL pré compilées devant être exécutées ensemble. - Déclencheur : Constitue une forme spéciale de procédure stockée exécutée automatiquement lorsqu un utilisateur modifie des données d une table ou d une vue. *Prèsentation de SQL Server* Vous pouvez utiliser SQL Server pour traiter des transactions, stocker et analyser des données, et développer de nouvelles applications.
*Composants client-serveur* 2/ Architecture client-serveur : SQL Server utilise une architecture client-serveur pour répartir la charge de travail en différentes tâches exécutées sur les ordinateurs serveurs et les ordinateurs clients. Le client est chargé de la logique d'entreprise et de la présentation des données à l'utilisateur. Il est généralement exécuté sur un ou plusieurs ordinateurs, mais peut également être exécuté sur l'ordinateur serveur avec SQL Server. SQL Server gère les bases de données et répartit les ressources disponibles du serveur (telles que la mémoire, la bande passante du réseau et les opérations de disque) entre plusieurs demandes. L'architecture client-serveur permet de concevoir et de déployer des applications de manière optimale pour divers environnements. Les interfaces de programmation clientes permettent d'exécuter des applications sur des ordinateurs clients distincts et de communiquer avec le serveur par le biais d'un réseau. 2.1/Composants clients : 1/ Application cliente : Une application cliente exécute les instructions Transact-SQL et reçoit les ensembles de résultats. Vous développez une application à l'aide d'une API de base de données. L'application ne connaît pas les protocoles réseau sousjacents utilisés pour communiquer avec SQL Server. 2/ API de base de données : Les interfaces API de base de données (OLE DB, ODBC) utilisent un fournisseur, un pilote ou une bibliothèque de liaisons dynamiques (DLL, Dynamic Link Library) pour transmettre les instructions Transact-SQL et recevoir les ensembles de résultats. Il s'agit d'une interface utilisée par une application pour envoyer des requêtes à SQL Server et pour traiter les résultats renvoyés par SQL Server.
3/ Bibliothèque réseau cliente : Une bibliothèque réseau cliente gère les connexions réseau et le routage sur le client. Il s'agit d'un composant logiciel de communication qui assemble les requêtes de base de données et les résultats pour transmission par le protocole réseau approprié. Remarque : La bibliothèque cliente réseau doit correspondre à l'une des bibliothèques réseau serveur. 2.2/ Composants serveur : 1/ Bibliothèques réseau serveur : SQL Server peut contrôler simultanément plusieurs bibliothèques réseau. La bibliothèque réseau cliente doit correspondre à l'une des bibliothèques réseau serveur pour que la communication puisse s'effectuer correctement. 2/ Services Open Data : Les services Open Data mettent le client en relation avec SQL Server de manière transparente, en fournissant une interface réseau qui prend en charge les processus de protocole réseau et les routines de serveur. 3/ Moteur relationnel : Le moteur relationnel analyse les instructions Transact-SQL, optimise et exécute les plans d'exécution, traite le langage de définition de données (DDL, Data Definition Language) et les autres instructions et implémente la sécurité. 4/ Le moteur de stockage : Le moteur de stockage gère les fichiers de base de données et l'utilisation de l'espace dans ces fichiers, construit et lit les données à partir des pages physiques, gère les tampons de données, les entrées/sorties (E/S) physiques, contrôle les conflits d'accès, réalise les opérations d'ouverture de session et de récupération et implémente des fonctions utilitaires telles que le Vérificateur de cohérence de base de données,la sauvegarde et la restauration.
*Processus de communication client-serveur* Remarque : En général, les clients et les serveurs communiquent par le biais d'un réseau. 1. Une application cliente soumet une requête. Le client appelle l'api de base de données et transmet la requête. L'API de base de données utilise un fournisseur, un pilote, ou une DLL pour encapsuler la requête dans un ou plusieurs paquets TDS (Tabular Data Stream) et les transmettre à la bibliothèque réseau cliente. 2. La bibliothèque réseau cliente assemble les paquets TDS en paquets de protocole réseau. La bibliothèque réseau cliente appelle une API IPC (InterProcess Communication) Windows pour envoyer les paquets des protocoles réseau à une bibliothèque réseau serveur en utilisant la pile de protocoles réseau du système d'exploitation. La bibliothèque réseau serveur appropriée extrait les paquets TDS de la pile de protocoles réseau et les transmet aux services Open Data. 3. Les services Open Data extraient la requête des paquets TDS et la transmettent au moteur relationnel. Le moteur relationnel compile ensuite la requête dans un plan d'exécution optimisé. Il exécute le plan d'exécution. Le moteur relationnel communique avec le moteur de stockage à l'aide de l'interface OLE DB. 4. Le moteur de stockage transfère les données d'une base de données à des tampons de données, puis transmet les ensembles de lignes contenant des données au moteur
relationnel. Le moteur relationnel combine les ensembles de lignes dans l'ensemble de résultats final et le transmet aux services Open Data. 5. Les services Open Data préparent l'ensemble de résultats et le renvoient à l'application cliente en utilisant une bibliothèque réseau serveur, la pile de protocoles réseau, la bibliothèque réseau cliente et l'api de base de données. L'ensemble de résultats peut également être renvoyé au format XML. *Services SQL Server*
*Bases de données SQL Server* 3/ Découverte de SQL Server : Dans un premier temps, nous allons vous présenter l'outil SqlServer. Une fois installé, le produit est accessible par Cliquer sur menu "Démarrer" de Windows Cliquer sur menu "Programmes" Cliquer sur menu Microsoft SQL Server Le menu suivant apparaît:
Assurez-vous tout d'abord que SQL Server est démarré : pour cela cliquez sur l'option "Gestionnaire de service SQL Server" Un carré rouge sur le symbole du serveur indique qu'il n'est pas démarré; un triangle vert indique au contraire qu'il est démarré. Pour démarrer Query analyser que nous allons utiliser tout au long des trois chapitres qui suivent : 1. Cliquer sur menu "Démarrer" de Windows, 2. Cliquer sur menu "Programmes", 3. Cliquer sur menu Microsoft SQL Server, 4. Cliquer sur "Analyseur de requêtes"(query Analyser).
4/ Définition d une base de données relationnelle : 1/ Création d'une base de données : CREATE DATABASE : CREATE DATABASE <nom base de données> Exemple de commande passée dans l'analyseur de requêtes Une fois la commande tapée, vous avez accès à des outils jusqu'à alors inaccessibles : * Le qui permet la vérification de la syntaxe des lignes d'instructions saisies * Le qui permet la vérification de la syntaxe des lignes d'instructions saisies puis leur exécution s'il n'y a pas d'erreurs Suite à une exécution sans problème, des messages apparaissent dans une fenêtre "résultats" en bas d'écran. 2/Suppression d'une base de données DROP DATABASE : DROP DATABASE <nom base de données>
Suite à une exécution sans problème, des messages apparaissent dans une fenêtre "résultats" en bas d'écran. 3/ Modification d'une base de données ALTER DATABASE : ALTER DATABASE <nom base de données> ADD FILEGROUP <nomfichier1>. REMOVE FILE <nomfichier2> 4/ Création de table CREATE TABLE : La création d'une table s'effectue grâce à la commande CREATE TABLE. Exemple de commande simple: Type Désignation Lg Dec Exemple bit Valeur entière à 0 ou 1 char datetime chaîne de caractères longueur fixe, de 1 à 8000 Donnée Date & heure du 1 janvier 1753 au 6 juin 9999 char (30) decimal Nombre décimal avec position après decimal
la virgule (11 2) float image Nombre flottant Zone en binaire de longueur variable jusqu'à 2 Giga int Nombre entier allant de -2 31 (- 2,147,483,648) à 2 31 - (2,147,483,647). c money Valeur monétaire allant de-2^63 (- 922,337,203,685,477.5808) à 2^63 nchar ntext numeric nvarchar real chaîne de caractères de longueur fixe, de 1 à 4000 Texte non unicode Idem décimal chaîne de caractères de longueur variable de 1 à 4000 Nombre flottant smalldatetime Donnée Date & heure du 1 janvier1900, au 6 juin 2079 smallint Petit nombre entier allant de -2 15 (- 32,768) à 2 15 - (32,768) smallmoney Valeur monétaire allant de- - 214,748.3647 à - +214,748.3647 tinyint Entier de 0 à 255 text timestamp uniqueidentifier chaîne de caractères de longueur variable et de très grande taille Désigne un nombre entier élevé. N automatique
varbinary varchar Valeur binaire de longueur variable chaîne de caractères de longueur variable Exemple de commande avec colonne calculée : Contrainte Primary key Elle permet d'indiquer dans une table une colonne (zone) ou un ensemble de colonnes qui doit contenir des valeurs identifiant de façon unique Exemple : Dans une table SALARIES le numéro matricule est un identifiant permettant de repérer un et un seul salarié. Ce sera donc la "primary key" de la table SALARIES. Cette colonne doit être définie impérativement not null.
Autre exemple : la clé primaire est de type Identity avec une valeur initiale de 100 et un incrément de 10.Cela permet à chaque création de films dans la base de données d'attribuer automatiquement un numéro; le premier film créé se verra attribué le numéro 100, le second le numéro 110, Contrainte Unique : Désigne dans une table une colonne (zone) ou un ensemble de colonnes (de zones) qui doit contenir des valeurs ne se retrouvant pas dans une autre ligne de la même table.
Contrainte Foreign key : Désigne une clé étrangère qui se trouve dans une autre table en clé primaire; le nom de l'autre table est indiqué derrière références Si les noms de colonne diffèrent d'une table à l'autre, il faut indiquer le nom de la colonne de la table suivi de références suivi entre parenthèses du nom de la colonne dans l'autre table (là où elle est primaire ou secondaire). Contrainte Check : Cette contrainte permet d'introduire des contrôles sur les zones de la table : Contrôle de validité par rapport à des constantes ou des listes de constantes. Contrôle de cohérence entre deux colonnes de la table Dans l'exemple qui suit :
Contrôle que salaire est plus grand ou égal à 60 Contrôle que la date de début est inférieure ou égale à la date de fin. Valeur par défaut : default Cette contrainte permet d'indiquer le contenu d'une zone quand elle n'est pas indiquée lors de l'insertion d'une ligne dans la table.
Module : SQL Server 5/ Suppression d'une table DROP TABLE : DROP TABLE <nom table> Exemple de commande: Vous pouvez saisir plusieurs commandes sue l'écran de l'analyseur de requêtes. Exemple:
6/ Modification de la structure d'une table ALTER TABLE : ALTER TABLE nom table ADD nomnouvellecol typecolonne, DROP nomcolen Trop, ALTER COLUMN nomcolachanger nouveau_type_de_données NULL ou NOT NULL DROP CONSTRAINT nom Contrainte_ Il est parfois nécessaire : d'ajouter des colonnes non prévues lors du CREATE TABLE de retirer des contraintes portées à tort sur la table. Exemple: ajout d'une colonne:
Exemple : modification des attributs d'une colonne : Exemple: suppression d'une colonne: Exemple: suppression d'une contrainte: Remarque : Vous pouvez réaliser plusieurs opérations Add ou Drop avec un seul Alter Table. ****************************************************************************************************
5/ Exercice : Activité n 1 : constitution d une base 1) Création de la base de données ROYAUTxx (xx étant vos initiales). 2) Création d'une première table dans cette base : nom de la table MONARQUE Colonnes des tables nom du roi sur 15 caractères date de début de règne date de fin de règne avec une contrainte de clé primaire sur nom du roi. 3) Ajout de deux nouvelles colonnes à cette table dynastie sur 12 caractères surnom sur 15 caractères 4) Toujours sur la même base de données, création de deux tables : 1/ table époux avec : nom époux sur 25 caractères nom épouse sur 25 caractères date de mariage table EPOUSES avec avec une contrainte clé primaire sur nom époux et nom épouse 2/ table ENFANTS avec nom père sur 25 caractères nom mère sur 25 caractères prénom enfant sur 30 caractères date naissance de l'enfant Créer la contrainte clé primaire sur prénom et date de naissance et clé étrangère sur nom mère.