Olivier Mondet http://unidentified-one.net



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

Création et Gestion des tables

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

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

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

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

CREATION WEB DYNAMIQUE

Le Langage De Description De Données(LDD)

Langage SQL : créer et interroger une base

Les BASES de DONNEES dans WampServer

I. MySQL : Serveur et SGBD

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

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

Installation d'un serveur FTP géré par une base de données MySQL

Pratique et administration des systèmes

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

SQL Historique

TP3 : Creation de tables 1 seance

Historisation des données

Gestion de base de données

Bases de données relationnelles

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

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

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)

1/ Présentation de SQL Server :

Optimisations des SGBDR. Étude de cas : MySQL

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Cours: Administration d'une Base de Données

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

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

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Installation et Mise en œuvre de MySQL

Encryptions, compression et partitionnement des données

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

OpenPaaS Le réseau social d'entreprise

Mysql avec EasyPhp. 1 er mars 2006

PHP et les Bases de données - Généralités

TP Contraintes - Triggers

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

Stockage du fichier dans une table mysql:

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

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

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

Le Langage SQL version Oracle

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

Synchronisation Mysql (Replication)

Construire une base de donnée pour bibliothèque

Gestion des utilisateurs et de leurs droits

Introduction à MySQL (ou MySQL en 3 heures montre en main)

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

Bases de données et sites WEB

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

Mysql. Les requêtes préparées Prepared statements

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

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

I4 : Bases de Données

1. Base de données SQLite

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

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

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

Bases de SQL. Hacks 1-6 CHAPITRE UN

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Auto-évaluation Oracle: cours de base

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

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

MySQL - Réplication. Fichiers de relais et de statut de la réplication. Mise en place de la réplication

windows. deb etch main deb-src etch main

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Bases de données relationnelles & SQL

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

Exercices sur SQL server 2000

Objectifs du TP : Initiation à Access

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

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

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

Compétences Business Objects

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

MySQL / SQL EXEMPLES

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

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

Le protocole FTP (File Transfert Protocol,

Les bases de données

A QUOI SERVENT LES BASES DE DONNÉES?

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Application web de gestion de comptes en banques

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

SUPPORT DE COURS / PHP PARTIE 3

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Architecture de la plateforme SBC

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

Devoir Data WareHouse

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

Transcription:

T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage SQL LDD, et en une initiation à la partie LCD. Tous les ordres SQL sont définis dans les autres chapitres de ce cours. Nous ne reviendrons donc pas sur la syntaxe. Olivier Mondet http://unidentified-one.net Mise en place MySQL doit être installé au préalable, soit seul, soit avec EasyPHP-ModGSI. Pour cela suivre les guides correspondants. Cet exercice utilise la version de MySQL installée avec EasyPHP-ModGSI. Nous utiliserons le client MySQL livré avec l installation (dans EasyPHP1-8-ModGSI\mysql\bin) qui se nomme mysql (à ne pas confondre avec mysqld qui est le «logiciel» de base de données en luimême). Connexion La connexion à la base de données se fait par l instruction mysql u root p puis en pressant la touche entrée. Le mot de passe demandé est root par défaut avec la version de MySQL fournie par EasyPHP-ModGSI. Voici la fenêtre de connexion : C:\Program Files\EasyPHP1-8-ModGSI\mysql\bin>mysql -u root -p Enter password: **** Your MySQL connection id is 2 to server version: 5.0.18-max Le prompt attend des ordres SQL de syntaxe correcte ou des commandes propres à MySQL. Création d une base de données et création des tables : Nous allons créer la base de données des stagiaires gsi, où seront implémentées les relations suivantes : etablissement (nume, nome, ville) nume est la clé primaire stagiaire (nums, noms, prenoms, mails, nume) nums est la clé primaire, nume est la clé étrangère en référence à nume de la table etablissement Nous ne préciserons pas le moteur de base de données et utiliserons le moteur par défaut InnoDB de MySQL. Ce moteur remplace le moteur MyISAM plus ancien et ne respectant pas (entre autre) l intégrité fonctionnelle. Se référer aux autres chapitres pour de plus amples explications. Ch.4 - Applications (exercice de découverte).doc page 1 / 9 om (2005-2006)

CREATE DATABASE gsi; Query OK, 1 row affected (0.09 sec) USE gsi; Database changed CREATE TABLE etablissement -> ( -> nume INT NOT NULL, -> nome VARCHAR(30), -> ville VARCHAR(30), -> CONSTRAINT pk_etablissement PRIMARY KEY(nume) -> ); Query OK, 0 rows affected (0.20 sec) On aura noté que juste après avoir créé la base de données, on se connecte à celle-ci (avec USE). C est dans la base de données gsi que nous allons créer les tables. CREATE TABLE stagiaire -> ( -> nums INT NOT NULL, -> noms VARCHAR(30), -> prenoms VARCHAR(30), -> mails VARCHAR(50), -> nume INT NOT NULL, -> CONSTRAINT pk_stagiaire PRIMARY KEY(nums), -> CONSTRAINT fk_stag_etab FOREIGN KEY(nume) REFERENCES etablissement(nume ) -> ); Query OK, 0 rows affected (0.16 sec) MySQL offre diverses possibilités de typage des champs : Types numériques exacts Types approchés Les entiers Dates Chaînes Chaînes de grande taille Enumérations NUMERIC, DECIMAL (DEC), INTEGER (INT)(4 octets) et SMALLINT FLOAT, REAL et DOUBLE PRECISION TINYINT (1 octet), SMALLINT (2 octets), MEDIUMINT (3 octets), INTEGER (INT)(4 octets), BIGINT (8 octets) DATE ('0000-00-00'), DATETIME ('0000-00-00 00:00:00') (attention les dates sont notées à l anglaise AAAA-JJ-MM) CHAR (format nom compressé où 1caractère = 1octet), VARCHAR (format compressé, à choisir à partir de 5 à 10 caractères) BLOB, TEXT SET Les clauses CONSTRAINT permettent de déclarer les clés primaires et les clés étrangères. Le nommage pk_table ou fk_table1_table2 est un moyen signifiant de nommer les contraintes en fonction de leur rôle : pk_table est le nom de la contrainte qui déclare la clé primaire d une table, fk_table1_table2 est le nom de la contrainte qui déclare la clé étrangère qui assure le l intégrité référentielle entre la table n 1 et la table n 2. Les noms des contraintes doivent être uniques pour une base de données. On aura noté que tant qu un point virgule ; n est pas inséré (marquant la fin d un ordre et donc le début de son interprétation par MySQL) le prompt passe de à ->. Se référer aux autres chapitres pour de plus amples explications. Ch.4 - Applications (exercice de découverte).doc page 2 / 9 om (2005-2006)

Nous pouvons vérifier l existence de la base de données et des tables. SHOW DATABASES; +--------------------+ Database +--------------------+ information_schema cinema gsi mysql phpmyadmin +--------------------+ 5 rows in set (0.00 sec) SHOW TABLES; +---------------+ Tables_in_gsi +---------------+ etablissement stagiaire +---------------+ 2 rows in set (0.00 sec) L ordre SHOW TABLES implique d être connecté à une base de données, car les tables affichées sont celle de la base de données active. Insertion des valeurs et violation de contraintes Nous allons entrer un premier enregistrement. INSERT INTO etablissement VALUES ('1','Geoffroy-Saint-Hilaire','ETAMPES') ; Query OK, 1 row affected (0.09 sec) Nous allons entrer un second enregistrement en tentant une violation de contrainte relative à la clé primaire. INSERT INTO etablissement VALUES ('1','Vilgenis','MASSY'); ERROR 1062 (23000): Duplicata du champ '1' pour la clef 1 On remarque que MySQL réagit et indique bien un problème sur la clé primaire avec un champ comportant un doublon. Problème qui devrait se régler avec une insertion correcte. INSERT INTO etablissement VALUES ('2','Vilgenis','MASSY'); Query OK, 1 row affected (0.03 sec) Nous allons insérer des valeurs dans la seconde table en respectant l intégrité fonctionnelle relative au champ nume (l établissement doit exister dans la table etablissement avant l insertion). INSERT INTO stagiaire VALUES ('1','Georges','Dumont','georges.dumont@mail.fr','1'); Query OK, 1 row affected (0.06 sec) INSERT INTO stagiaire VALUES ('2','Bernardette','Martin','b.martin@mail.f r','1'); Query OK, 1 row affected (0.08 sec) Ch.4 - Applications (exercice de découverte).doc page 3 / 9 om (2005-2006)

Nous allons tenter une violation de clé étrangère (intégrité fonctionnelle) en saisissant un code établissement n existant pas dans la table etablissement. INSERT INTO stagiaire VALUES ('3','Yolande','Kraft','yolande1678@mail.fr','3'); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f ails (`gsi/stagiaire`, CONSTRAINT `fk_stag_etab` FOREIGN KEY (`nume`) REFERENCES `etablissement` (`nume`)) L intégrité référentielle est donc bien respectée. Si vous utilisez une version antérieure de MySQL ou si vos tables sont déclarées avec la mention type=myisam, vous serez surpris de constater que MySQL ne respecte pas l intégrité référentielle. Autrement dit, l insertion aurait été acceptée. Vous pouvez en faire le constat en réessayant cet exercice avec les tables déclarées de la façon suivante : CREATE TABLE etablissement ( nume INT NOT NULL, nome VARCHAR(30), ville VARCHAR(30), CONSTRAINT pk_etablissement PRIMARY KEY(nume) )type=myisam; CREATE TABLE stagiaire ( nums SMALLINT NOT NULL auto_increment, noms VARCHAR(30), prenoms VARCHAR(30), mails VARCHAR(50), nume INT NOT NULL, CONSTRAINT pk_stagiaire PRIMARY KEY(nums), CONSTRAINT fk_stag_etab FOREIGN KEY(nume) REFERENCES etablissement(nume) )type=myisam; Bien sur le moteur InnoDB semble plus performant si on s attache à l aspect «intégrité référentielle», cependant le moteur InnoDB est moins performant que le moteur MyISAM en termes de rapidité d exécution. C est pour cela que MySQL était souvent choisi pour les sites Web avec son moteur MyISAM. Vous pouvez en faire le constat en réessayant cet exercice avec les tables déclarées comme ci-dessus. Avec le moteur InnoDB il est impossible de supprimer un élément référencé. Pour terminer, on peut afficher le contenu de nos tables SELECT * -> FROM etablissement; nume nome ville 1 Geoffroy-Saint-Hilaire ETAMPES 2 Vilgenis MASSY 2 rows in set (0.00 sec) SELECT * -> FROM stagiaire; +------------------------------+------+ nums noms prenoms mails nume +------------------------------+------+ 1 Georges Dumont georges.dumont@mail.fr 1 2 Bernardette Martin b.martin@mail.fr 1 +------------------------------+------+ 2 rows in set (0.00 sec) Ch.4 - Applications (exercice de découverte).doc page 4 / 9 om (2005-2006)

ainsi que leur structure. DESCRIBE etablissement; +-------+-------------+------+-----+---------+-------+ Field Type Null Key Default Extra +-------+-------------+------+-----+---------+-------+ nume int(11) NO PRI nome varchar(30) YES NULL ville varchar(30) YES NULL +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.05 sec) DESCRIBE stagiaire; +---------+-------------+------+-----+---------+-------+ Field Type Null Key Default Extra +---------+-------------+------+-----+---------+-------+ nums int(11) NO PRI noms varchar(30) YES NULL prenoms varchar(30) YES NULL mails varchar(50) YES NULL nume int(11) NO MUL +---------+-------------+------+-----+---------+-------+ 5 rows in set (0.05 sec) Mise à jour de la structure des tables Notre base de données prend en compte la discipline des enseignants participant au stage (CAPET). etablissement (nume, nome, ville) nume est la clé primaire discipline (numd, libd) numd est la clé primaire stagiaire (nums, noms, prenoms, mails, nume, numd) nums est la clé primaire, nume est la clé étrangère en référence à nume de la table etablissement numd est la clé étrangère en référence à numd de la table discipline Il faut donc ajouter une table, puis mettre à jour la structure de la table stagiaire en ajoutant le champ numd et l intégrité référentielle. L ajout de la table et l insertion de valeurs. CREATE TABLE discipline -> ( -> numd CHAR(1) NOT NULL, -> libd VARCHAR(40), -> CONSTRAINT PK_discipline PRIMARY KEY(numd) -> ); Query OK, 0 rows affected (0.11 sec) INSERT INTO discipline VALUES ('B','Capet B'); Query OK, 1 row affected (0.05 sec) INSERT INTO discipline VALUES ('D','Capet D'); Query OK, 1 row affected (0.05 sec) Ch.4 - Applications (exercice de découverte).doc page 5 / 9 om (2005-2006)

L ajout du champ numd à la structure de la table stagiaire (ALTER) et la mise à jour (UPDATE) de la table (le stagiaire n 1 sera CAPET B, le stagiaire n 2 sera CAPET D). ALTER TABLE stagiaire -> ADD numd CHAR(1) NOT NULL; Query OK, 2 rows affected (0.36 sec) Enregistrements: 2 Doublons: 0 Avertissements: 0 UPDATE stagiaire -> SET numd = 'B' -> WHERE nums = '1'; Query OK, 1 row affected (0.06 sec) Enregistrements correspondants: 1 ModifiÚs: 1 Warnings: 0 UPDATE stagiaire -> SET numd = 'D' -> WHERE nums = '2'; Query OK, 1 row affected (0.05 sec) Enregistrements correspondants: 1 ModifiÚs: 1 Warnings: 0 L ajout de la contrainte d intégrité référentielle sur la clé étrangère. ALTER TABLE stagiaire -> ADD CONSTRAINT FK_disc_stag FOREIGN KEY(numd) REFERENCES discipline(numd ); Query OK, 2 rows affected (0.41 sec) Enregistrements: 2 Doublons: 0 Avertissements: 0 Notez que l on ajoute cette contrainte après la mise à jour de la table stagiaire car sinon les champs numd seraient vides (NULL) et MySQL refuserait d ajouter la contrainte sur des champs vides (c est une violation de contrainte justement). Ce problème se pose uniquement parce que la table possède déjà des enregistrements. Modification de la structure d une table (suite) et suppression d un table Finalement nous ne voulons plus garder la discipline des stagiaires et donc revenir à notre base de données telle qu elle était auparavant. Nous devons mettre à jour la structure de la table stagiaire et supprimer la contrainte d intégrité référentielle, puis le champ numd. ALTER TABLE stagiaire -> DROP FOREIGN KEY FK_disc_stag; Query OK, 2 rows affected (0.25 sec) Enregistrements: 2 Doublons: 0 Avertissements: 0 ALTER TABLE stagiaire -> DROP numd; Query OK, 2 rows affected (0.24 sec) Enregistrements: 2 Doublons: 0 Avertissements: 0 Nous pouvons supprimer la table discipline. DROP TABLE discipline; Query OK, 0 rows affected (0.11 sec) La suppression des tables doit toujours se faire en tenant compte des contraintes d intégrité référentielle. On doit toujours commencer par supprimer les tables comportant des clés étrangères puis les tables n en comportant pas. Il s agit de l ordre exactement inverse de l ordre de création des tables. Ch.4 - Applications (exercice de découverte).doc page 6 / 9 om (2005-2006)

Création d utilisateur et attribution de droits Sous MySQL la gestion des utilisateurs posait souvent des problèmes (avec les versions antérieures à la n 5). Il était fréquent d entrer en force les paramètres utilisateur pour qu ils soient pris en compte. La version 5 de MySQL semble mieux intégrer la gestion des utilisateurs. Les droits (ou privilèges) que l on peut accorder aux utilisateurs correspondent aux ordres que l on veut leur laisser passe. Par exemple les privilèges sur les tables : SELECT, INSERT, UPDATE, DELETE, CREATE, DROP. Nous allons créer un utilisateur nommé bob dont le mot de passe sera 123456. CREATE USER 'bob' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.14 sec) Vous devriez pouvoir vous connecter avec ce compte (sinon reconnectez vous sous root et saisissez FLUSH PRIVILEGES pour forcer MySQL à recharger ses tables système). C:\Program Files\EasyPHP1-8-ModGSI\mysql\bin>mysql -u bob -p Enter password: ****** Your MySQL connection id is 62 to server version: 5.0.18-max L ennui c est que bob ne possède aucun privilège! Il ne peut même pas se connecter à notre base gsi. USE gsi; ERROR 1044 (42000): AccÞs refusú pour l'utilisateur: 'bob'@'@%'. Base 'gsi' L attribution des privilèges porte sur une base (ou toutes les bases) et sur des tables (ou toutes les tables). Nous allons simplement donner le privilège SELECT sur la table etablissement à bob. GRANT SELECT ON gsi.etablissement TO bob@localhost IDENTIFIED BY '123456' ; Query OK, 0 rows affected (0.03 sec) Après le privilège SELECT, nous avons précisés la base de données et la table, puis l utilisateur et le domaine (localhost = le poste uniquement, % tous les postes). Ici bob ne pourra exercer ses droits qu au niveau local uniquement. C:\Program Files\EasyPHP1-8-ModGSI\mysql\bin>mysql -u bob -p Enter password: ****** Your MySQL connection id is 66 to server version: 5.0.18-max USE gsi; Database changed SELECT * -> FROM etablissement; nume nome ville 1 Geoffroy-Saint-Hilaire ETAMPES 2 Vilgenis MASSY 2 rows in set (0.03 sec) SELECT * -> FROM stagiaire; ERROR 1142 (42000): La commande 'SELECT' est interdite Ó l'utilisateur: 'bob'@'@ localhost' sur la table 'stagiaire' Ch.4 - Applications (exercice de découverte).doc page 7 / 9 om (2005-2006)

On aura vérifié que bob peut bien faire un SELECT sur la table etablissement et pas sur la table stagiaire. Vous aurez noté que lorsque nous avons attribué le privilège nous avons dû redonner le mot de passe de bob. Ce qui limite très fortement la portée de l ordre CREATE USER. En effet, nous pouvons créer un utilisateur en même temps que nous lui accordons ses privilèges. GRANT SELECT ON gsi.* TO marc@'%' IDENTIFIED BY 'tomate34'; Query OK, 0 rows affected (0.05 sec) exit Bye C:\Program Files\EasyPHP1-8-ModGSI\mysql\bin>mysql -u marc -p Enter password: ******** Your MySQL connection id is 68 to server version: 5.0.18-max USE gsi; Database changed SELECT * -> FROM stagiaire; +------------------------------+------+ nums noms prenoms mails nume +------------------------------+------+ 1 Georges Dumont georges.dumont@mail.fr 1 2 Bernardette Martin b.martin@mail.fr 1 +------------------------------+------+ 2 rows in set (0.03 sec) INSERT INTO stagiaire -> VALUES ('3','Henri','Grandin','henri75@mail.fr','2'); ERROR 1142 (42000): La commande 'INSERT' est interdite Ó l'utilisateur: 'marc'@' @localhost' sur la table 'stagiaire' Notre utilisateur marc a bien eu accès aux tables de la base gsi. Par contre il ne peut pas faire autre chose que des SELECT. Si nous voulons simplement changer le mot de passe de marc. SET PASSWORD FOR 'marc'@'%' = PASSWORD('nouveau_mot'); Query OK, 0 rows affected (0.00 sec) Si nous voulons supprimer les privilèges de marc. REVOKE SELECT ON gsi.* FROM 'marc'@'%'; Query OK, 0 rows affected (0.00 sec) Notre utilisateur ne pourra pas se connecter à la base gsi. Nous pouvons décider de le supprimer. DROP USER marc@'%'; Query OK, 0 rows affected (0.05 sec) L utilisateur est définitivement supprimer et ne pourras plus se connecter à la base de données. Remarquez que nous avons précisé marc@'%' : avec les ordres CREATE USER et DROP USER vous n êtes pas obligé de préciser '%', car par défaut, quand vous saisissez CREATE/DROP USER titi, l utilisateur sera titi@'%'. Il n y a que si vous voulez créer un utilisateur local titi@'locahost' ou pour une station particulière titi@'monposte' que vous devez ajouter cette mention : CREATE/DROP USER titi@'localhost'. Ch.4 - Applications (exercice de découverte).doc page 8 / 9 om (2005-2006)

Création de vues Depuis la version 5, MySQL intègre la possibilité de créer des vues. Les vues permettent de projeter une image particulière d une ou plusieurs tables. Par exemple une table où l on masque certaines colonnes ou certaines lignes, ou bien des tables que l on met en relation dans une vue. Prenons pour exemple la table stagiaire, à partir de laquelle nous voulons simplement établir la liste des membres avec leurs noms et leurs prénoms (on peut aisément imaginer que pour des raisons de confidentialité ou de vie privée des champs n apparaissent plus). CREATE VIEW stage -> AS SELECT noms, prenoms -> FROM stagiaire; Query OK, 0 rows affected (0.05 sec) SELECT * -> FROM stage; noms prenoms Georges Dumont Bernardette Martin 2 rows in set (0.00 sec) Que faire avec cette vue? Avec la partie précédente on peut très bien imaginer que cette liste épurée puisse être parcourue par un utilisateur créé pour cet effet. GRANT SELECT ON gsi.stage TO sophie@'%' IDENTIFIED BY 'fraise65'; Query OK, 0 rows affected (0.05 sec) exit Bye C:\Program Files\EasyPHP1-8-ModGSI\mysql\bin>mysql -u sophie -p Enter password: ******** Your MySQL connection id is 91 to server version: 5.0.18-max USE gsi; Database changed SELECT * -> FROM stage; noms prenoms Georges Dumont Bernardette Martin 2 rows in set (0.02 sec) Ch.4 - Applications (exercice de découverte).doc page 9 / 9 om (2005-2006)