Travaux pratiques du cours “Bases de données et SQL” avec MySQL Installer un serveur MySQL Sous windows ou MacIntosh télécharger la version adéquate du serveur MySQL depuis la page http://dev.mysql.com/downloads/mysql/5.0.html et installer comme avec n!importe quel logiciel. Sous ubuntu utiliser Synaptic pour faire l!installation de MySQL-server ou utiliser la commande “sudo apt-get install mysql-server” . Lors de l!installation il vous sera demandé d!attribuer un mot de passe pour l!utilisateur "root!, cet utilisateur étant l!administrateur du serveur mysql il a tous les droits et est donc très important, et il est souhaitable de lui créer un mot de passe (à ne pas oublier bien sur). Installer un client MySQL En complément au serveur ill est pratique d!utiliser l!un ou l!autre logiciel dit “client”, c!est à dire un logiciel permettant d!interagir avec le serveur. Cette étape n!est pas indispensable, vous pouvez aussi utiliser la ligne de commande pour effectuer toutes les opérations possible avec MySQL, cependant les lignes de commandes nécessitent un investissement personnel beaucoup plus important. MySQL propose différents outils graphiques rassemblés parfois sous l'appellation “MySQL GUI Tools” : • Mysql query browser vous permet d!écrire des requêtes SQL • Mysql admin vous permet d!administrer tous les aspects généraux du serveur et de manipuler les bases de données • MySQL Migration Toolkit permet d!importer dans MySQL des bases de données entières issues de divers autres systèmes tels que MS Access, Oracle, ... L!installation de ces outils se fait de la façon suivante : Sous ubuntu par synaptic ou par la commande “sudo apt-get install mysql-query-browser” ou autre selon ce que vous installez. Sous Windows et Mac téléchargez la version du paquet “MySQL GUI Tools” qui convient à votre système. Utiliser un client alternatif D!autres logiciels peuvent être utilisés pour accéder aux données stockées par MySQL. D!une part il existe des logiciels dont l!unique fonction est d!être client d!un ou de plusieurs SGBD, d!autre part il y a des logiciels autonomes qui peuvent se connecter à un SGBD moyennant l!installation dans le système d!un module de connexion spécifique au SGBD appelé “ODBC” ou une variante. Les logiciels clients sous windows : HeidiSQL, ... Les logiciels autonomes sous windows : MS Access, MS Excel, OpenOffice Base, Kexi, ... Les logiciels autonomes sous Ubuntu : OpenOffice Base, Kexi,... Les logiciels autonomes sous Mac Os X : OpenOffice Base, Kexi,... 1 Créer une base de données MySQL avec les outils graphiques Assurez-vous que le serveur soit actif (voir plus haut). Lancer MySQL-admin et vous connecter en tant que utilisateur “root” avec le mot de passe enregistré lors de l!installation de MySQL server. L!hôte est l!ordinateur sur lequel vous avez installé le serveur, c!est-à-dire “localhost” si c!est votre propre ordinateur. Le port par défaut est “3306”. Lorsque vous êtes connecté vous accédez à une fenêtre, avec une colonne sur la gauche en bas de laquelle se trouve un onglet nommé “Catalogs”. En y accédant vous pouvez y créer une base de données par un clic-droit sur la liste des bases de données. Donnez lui un nom et c!est fait. Ensuite allez sur l!onglet “Accounts” pour y créer un nouvel utilisateur, de votre choix (voir ci-dessous). Créer un utilisateur A partir de l!onglet “Accounts” de Mysql-admin vous pouvez créer un ou plusieurs utilisateurs. Vous devez fournir un nom et un mot de passe, puis éventuellement définir (clic-droit sur le nom de l!utilisateur dans la colonne de gauche) des pc à partir desquels l!utilisateur travaillera. Par défaut il y a “@%” qui signifie “tout ordinateur”, et à ce stade c!est suffisant. Attribuer des droits sur une base de données Dans la liste des utilisateurs (à gauche) sous le nom de l!utilisateur que vous venez de créer se trouve la liste des ordinateurs à partir desquels l!utilisateur peut travailler, par défaut il y a “@%” qui signifie “tout ordinateur”. Vous pouvez vous contenter de cette valeur, sélectionner-la en cliquant une fois dessus, puis dans la fenêtre de droite cliquer sur l!onglet “Schema privileges” qui vous donne la liste des DB existantes sur le serveur. Sélectionner la DB que vous avez créée précédemment et ensuite faites passer de la colonne de droite les droits que vous voulez attribuer à l!utilisateur sur cette DB vers la colonne du milieu. Par défaut faites les tous passer de droite à gauche. Enregistrez vos modifications. A partir de maintenant vous pouvez vous connecter à MySQL via n!importe quelle interface en vous identifiant avec cet utilisateur pour travailler sur la base de données que vous avez créée. Pour réaliser toutes ces opérations en ligne de commande je vous invite à vous reporter à la documentation en ligne de MySQL. Créer une table dans votre base de données MySQL A l!aide de MySQL-admin vous pouvez créer une table en cliquant sur “Table action” puis “Create Table”. Là vous aurez à créer les attributs (les colonnes) de la table en précisant le type de données ainsi que les éventuels autres paramètres que vous jugerez utiles (“NOT NULL”, “Unsigned”, etc). Vous aurez aussi à choisir une clé primaire parmi les attributs et éventuellement aussi des index. 2 Modifier une table dans MySQL Les structures de tables peuvent être modifiées dans MySQL-admin dans la même interface que celle utilisée pour la création mais l!accès à cette interface peut se faire par MySQL-Query-Browser par un clicdroit sur la table en question. Créer une table à partir d!une requête SELECT Dans la pratique, lorsqu!on a déjà une base de données chargées, il est facile de créer des tables à partir d!autres tables pour peu que ces dernières contiennent les données nécessaires à l!alimentation de la nouvelle table à créer. Il suffit pour cela de faire précéder la requête SELECT de la commande SQL “CREATE TABLE nom_de_la_table ” . Cela créera une table avec tous les attributs présents dans la clause SELECT mais pas les index ni la clé primaire qu!il faudra penser à ajouter par après. Extraire des données d!une table existante Utiliser l!outil MySQL-Query-Browser Ecrire une requête SELECT pour sélectionner les éléments à extraire, ex. : “SELECT * FROM table” pour obtenir tous les éléments de la table “table”. Ensuite aller dans le menu File, puis “Export Resultset” et sauvegarder dans le type souhaité selon l!usage prévu du fichier. Charger une table à partir d!un fichier La commande “LOAD DATA LOCAL INFILE 'datafile.csv' INTO TABLE tbl_name FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;” permet de charger la table “ tbl_name” avec le fichier “ datafile.csv” si celui-ci est de type txt, avec le pointvirgule en guise de séparateur de champs et le guillemet double en guise de délimiteur de champs textuel. Le point-virgule peut être remplacé par une virgule, une tabulation, ou autre mais il faut alors le préciser dans la requête ci-dessus, de même pour le délimiteur de champs. Les fins de lignes sont des caractères invisibles qui dépendent du système d!exploitation ou du logiciel utilisé pour créer le fichier; “\r\n” correspond à un encodage sous windows, “\r” à Mac OS et “\n” à Linux, mais cela peut varier et il vaut mieux être prudent. La clause “IGNORE” indique un nombre de lignes à ignorer au début du fichier et est facultative comme les autres clauses détaillées ci-dessus. Charger une BD avec MySQL Migration Toolkit L!outil MySQL Migration Toolkit permet de transférer dans MySQL le contenu et la structure entière d!une base de données telle qu!un fichier MS Access ou une base de données Oracle, MS SQL Server, etc (mais pas PostgreSQL). Il crée d!abord le script de création de la base et ensuite le script d!insertion des données, on peut donc éventuellement s!en servir pour ne faire qu!une seule de ces étapes. En particulier les fichiers Access sont généralement définis avec des formats de taille maximale (varchar(256), bigint, ...) et on peut saisir l!occasion pour les redéfinir avant de charger les données dans MySQL. 3