Introduction à SQL
Transcription
Introduction à SQL
Chapitre 4 Introduction à SQL Au fond, est-ce que ranger ça ne revient pas un peu à foutre le bordel dans son désordre ? Philippe Geluck 4.1 Installation de MySQL Pour télécharger MySQL avec l'installateur (MSI Installer), vous pouvez vous rendre sur le site suivant : http://dev.mysql.com/downloads/mysql/#downloads. Plutôt que de choisir la toute dernière version 5.6.10 (176 Mo tout de même), nous nous contenterons de la version 5.5.30 (31 Mo). Vériez que la version sélectionnée est bien Microsoft Windows et cliquez sur Download. Vous allez être redirigé vers une page vous proposant de créer un compte d'utilisateur ; descendez en bas de la page et cliquez sur No start my download. thanks, just Exécutez le chier téléchargé ; l'installateur démarre et vous guide lors de l'installation. Lors- qu'il vous demande de choisir entre trois types d'installation, choisissez Typical. Cela installera tout ce dont nous allons avoir besoin. 39 40 CHAPITRE 4. INTRODUCTION À SQL Cliquez sur next, l'installation se lance. Une fois qu'elle est terminée, cliquez sur Terminer après vous être assurés que la case lancer l'outil de configuration MySQL est cochée. Dans cet outil de conguration, choisissez la conguration standard et, à l'étape suivante, cochez l'option Include Bin Directory in Windows PATH. On vous propose alors de dénir un nouveau mot de passe pour l'utilisateur root (root signie racine, l'utilisateur root dispose de tous les privilèges d'administration). Choisissez un mot de passe et conrmez-le. ATTENTION : assurez-vous de ne pas oublier ce mot de passe ! Ne cochez aucune autre option à cette étape. Cliquez ensuite sur Execute pour lancer la conguration. 4.2 MySQL est maintenant installé et prêt à être utilisé ! Organisation d'une base de données Généralement, une base de données s'organise de la manière suivante : BASE DE DONNEES/DATABASE TABLE(S)/TABLE(S) CHAMPS/FIELD(S) VALEUR(S)/VALUE(S) Les éléments d'une base de données sont rangés en tables, qui elles-mêmes contiennent des champs qui peuvent avoir plusieurs valeurs. Par exemple, on pourrait imaginer une base de données des Élèves-ingénieurs contenant la table des Grandes Écoles ; chaque école aurait autant de champs que de promotions et, à l'intérieur de chaque champ, les valeurs représenteraient les noms, prénoms et adresses des élèves. 4.3. 41 CONNEXION À MYSQL 4.3 Connexion à MySQL Pour se connecter, lancer l'invite de commande (Menu démarrer → cmd → Entrer ). Les champs à renseigner sont : le client (ici le client est MySQL) l'hôte (la base de données est accessible directement depuis votre machine : l'utilisateur (choisissez l'utilisateur root localhost) an de disposer de tous les droits) le mot de passe (password de l'utilisateur root conguré auparavant) Ainsi, une connexion complète peut s'écrire de la manière suivante : mysql -h localhost -u root -ppassword ATTENTION : ne pas mettre d'espace entre la directive -p et votre mot de passe. MySQL 5.5 Command Line Client qui a été créé dans la liste déconnecter, il sut de rentrer la directive quit ou \q ou Vous pouvez également utiliser de vos programmes. Pour vous encore exit dans votre invite de commande. MySQL Avant de voir les principales directives de données isen, que nous allons appliquer à la base de nous allons créer un utilisateur secondaire, ayant des droits limités, an d'éviter que vous ne supprimiez des tables préalablement existantes. Pour ce faire, connectez-vous avec l'utilisateur root, comme indiqué précédemment, et entrez ensuite les directives : GRANT ALL PRIVILEGES ON isen.* TO 'user'@'localhost' IDENTIFIED BY 'motdepasse'; GRANT ALL PRIVILEGES ON isen.* : alloue tous les droits sur la base de données isen. TO 'user'@'localhost' : crée un nouvel utilisateur pouvant se connecter à la base de données via l'adresse locale (remplacer user par n'importe quel nom). IDENTIFIED BY 'motdepasse' : crée le mot de passe du nouvel utilisateur. quit , puis mysql -h localhost -u user -pmotdepasse Ensuite déconnectez-vous (pour changer d'utilisateur) en utilisant la commande reconnectez-vous avec votre nouvel utilisateur : 4.4 Syntaxe SQL et premières commandes À partir de l'invite de commandes, vous pouvez réaliser toutes les opérations sur votre base de données. Il est recommandé, mais pas obligatoire, d'écrire les commandes en majuscules. Les commandes se terminent par ; ; pour annuler une ligne en cours de saisie, tapez On peut acher le statut du serveur à l'aide de : compte utilisateur à l'aide de SHOW STATUS; \c . et on peut vérier son SELECT USER(); Création et sélection d'une base de données Les commandes élémentaires permettant de créer cette base de données sont : création d'une nouvelle base de données sélection de la base isen ou bien connexion à isen (sans la sélectionner) : (ici le ; est facultatif ) : USE isen; MySQL et sélection directe de la base : CREATE DATABASE isen; 42 CHAPITRE 4. INTRODUCTION À SQL mysql -h localhost -u user -pmotdepasse isen liste des bases de données : SHOW DATABASES; suppression d'une base de données : DROP DATABASE isen; Création, insertion et modication d'une table Considérons, par exemple, la table cir2 constituée par les élèves ci-dessous : Prénom Nom Age E-mail Tim AURIOL 21 [email protected] Amir BELGHIT 21 [email protected] Benjamin BERTHEVAS 19 [email protected] Kévin CERDAN 20 [email protected] Corentin DELCOURT 18 [email protected] Alexis HELLOUIN DE MENIBUS 22 [email protected] Khaled JAFFAL 20 [email protected] Etienne JEZEQUEL 19 [email protected] Maxime LEBEURIER 21 [email protected] Mickaël L'HARIDON 19 [email protected] Guy-Yann MORVAN 20 [email protected] Yannis OZAROWSKI 22 [email protected] Hugo ROIGNANT 21 [email protected] Mathieu SINIC 19 [email protected] Mathieu THOULOUSE 21 [email protected] Romain VAUDOUR 20 [email protected] Pierre ZEMB 21 [email protected] La table cir2 Les commandes élémentaires permettant de créer cette table sont : cir2 : CREATE TABLE cir2 (Prenom VARCHAR(30), Nom VARCHAR(30), Age INT(3), création d'une nouvelle table Email VARCHAR(30)); SHOW TABLES; ALTER TABLE cir2 ADD Sexe CHAR; retrait d'un champ : ALTER TABLE cir2 DROP Sexe; modication du nom d'un champ : ALTER TABLE cir2 CHANGE Email Courrier VARCHAR(30); achage de la structure de la table : DESCRIBLE cir2; achage des tables de la base courante : ajout d'un champ : chargement d'un chier directement dans une table : listecir2.txt contenant tous les élèves au format "Tim" Tab "Auriol" Tab 21 Tab "[email protected]" \r\n on peut le charger dans la table cir2 avec : LOAD DATA LOCAL INFILE '/path/listecir2.txt'INTO TABLE cir2 si l'on dispose d'un chier LINES TERMINATED BY '\r\n'; - une valeur nulle (NULL) s'écrit : \N : dans le chier. - en cas d'erreur dans le chier, on peut le corriger, eacer la table (sans la supprimer) : DELETE FROM cir2; et la recharger. 4.4. 43 SYNTAXE SQL ET PREMIÈRES COMMANDES ajout d'une valeur (i.e. une ligne) : INSERT INTO cir2 VALUES ("François", "KANY", 42, "[email protected]"); UPDATE cir2 SET Age = 43 WHERE Nom = "KANY"; suppression d'une valeur : DELETE FROM cir2 WHERE Nom="KANY"; achage de toute la table : SELECT * FROM cir2; (* permet de pointer sur toutes les entrées). suppression de la table : DROP TABLE cir2; correction d'une valeur : Recherche dans une base de données Les commandes élémentaires permettant de réaliser ces opérations sont : sélection d'une ligne : SELECT * FROM cir2 WHERE Nom = "Auriol"; SELECT * FROM cir2 WHERE Age = 21; sélection de plusieurs lignes : sélection de lignes suivant plusieurs critères : SELECT * FROM cir2 WHERE Age = 21 AND Prenom = "Mathieu"; les mots clés AND et OR permettent d'exécuter plusieurs requêtes en une seule commande. ( AND est prioritaire sur OR si l'on n'utilise pas de parenthèses pour regrouper les opérateurs). sélection d'une colonne : SELECT Nom FROM cir2; sélection de plusieurs colonnes : SELECT Nom, Prenom FROM cir2; sélection d'une colonne en évitant les doublons : SELECT DISTINCT Prenom FROM cir2; (Mathieu n'apparaît qu'une fois). sélection d'une colonne croisée avec un critère sur les lignes : SELECT Prenom FROM cir2 WHERE Age=21; tri des lignes par ordre croissant : SELECT Nom FROM cir2 ORDER BY Age; (ou BY Age DESC; pour un tri décroissant). sélection suivant un modèle : SELECT * FROM cir2 WHERE Nom LIKE "A%"; "a") ; LIKE "%A"; (qui nissent par "A" ou (tous les noms qui commencent par "A" ou "a") ; LIKE "%A%"; (qui contiennent "A" ou "a"). SELECT * FROM cir2 WHERE Nom REGEXP "^A"; (tous les noms qui commencent par "A" ou "a") ; REGEXP "A$"; (qui nissent par "A" ou "a") ; REGEXP "^.A"; (dont la deuxième lettre est "A" ou "a") ; REGEXP BINARY "^a"; (dont la première lettre est exactement "a"). comptage du nombre de lignes : SELECT COUNT(*) FROM cir2; Concept de clé primaire PRIMARY KEY : attribue un identiant id unique à un élément d'une base de données ; ce qui permet de diérencier deux entrées qui auraient exactement les mêmes attributs. Cet identiant s'appelle la clé primaire. On peut l'attribuer manuellement ou automatiquement à l'aide de id INT NOT NULL AUTO_INCREMENT, Voici le code pour la table cir2. CREATE TABLE cir2 (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), Prenom VARCHAR(30), Nom VARCHAR(30), Age INT(3), Email VARCHAR(30)); 44 CHAPITRE 4. INTRODUCTION À SQL On doit alors entrer : INSERT INTO cir2 VALUES (1,"Tim", "Auriol", 21, "[email protected]"); ou bien : INSERT INTO cir2 VALUES (NULL,"Tim", "Auriol", 21, "[email protected]"); Concept de clé étrangère Une clé étrangère sert à créer des liens entre diérentes tables. Soient A et B deux tables indexées par leurs clés primaires respectivement a et b. b est une clé étrangère pour A (et réciproquement), on l'indique par le mot clé REFERENCES . Par exemple, créons la table des TD d'informatique de ce livre. Pour lier cette table à leurs auteurs, il faut écrire : CREATE TABLE tdinfo ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), Intitule VARCHAR(255), Langage ENUM ("Mathematica","Python"), Programmeur INT NOT NULL REFERENCES cir2(id)); INSERT SELECT INSERT INSERT INTO cir2 VALUES (NULL,"Khaled", "JAFFAL",20, "[email protected]"); @last:=LAST_INSERT_ID(); INTO tdinfo VALUES (NULL,"Sudoku","Python",@last), INTO tdinfo VALUES (NULL,"pH","Python",@last); INSERT INTO cir2 VALUES (NULL,"Corentin", "DELCOURT", 18, "[email protected]"); SELECT @last:=LAST_INSERT_ID(); INSERT INTO tdinfo VALUES (NULL,"RSA", "Python",@last), INSERT INTO tdinfo VALUES (NULL,"Transformee de Fourier","Python",@last); Ainsi, SELECT * FROM tdinfo; permet de visualiser les intitulés et les langages avec les identiants des programmeurs tels qu'ils apparaissent dans la table cir2.