0% ont trouvé ce document utile (0 vote)
42 vues33 pages

TP1 MySQL

Transféré par

gkouamarthur
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues33 pages

TP1 MySQL

Transféré par

gkouamarthur
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP1 – BD Relationnelles

MySQL
Dr FOTSING TALLA Bernard
PhD in Computer Science

Chargé de Cours, IUTFV de Bandjoun


Université de Dschang
[Link]@[Link]

Version 2.0 – Octobre 2019


Objectifs du TP

 Appliquer les concepts théoriques étudiés en BD relationnelle sur le


SGBD MySQL
 L’étudiant doit pouvoir analyser un problème concret de Système
d’Information,
 Utiliser le modèle Entité-Association (MCD) pour décrire le schéma
conceptuel de la BD associée
 Utiliser le modèle relationnel (MLD) pour décrire le schéma logique de
la BD
 Utiliser MySQL pour créer le schéma physique de la BD
 Utiliser le langage de requête SQL pour peupler et interroger la BD

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 2


Plan

1 Prise en main de MySQL


2 Créer et utiliser une BD
3 Créer les tables
4 Insérer les données dans les tables
5 Exécuter les requêtes
1 Prise en main de MySQL

 MySQL est un Système de Gestion de Bases de Données


Relationnelles (SGBDR) basé sur le modèle client-serveur.
 C'est-à-dire que la BD se trouve sur un serveur, et pour interagir avec cette
BD, il faut utiliser un logiciel "client" qui va interroger le serveur et
transmettre la réponse que le serveur lui aura donnée
 Le serveur peut être installé sur une machine différente du client : situation
réelle en entreprise où les BD sont très importantes
 Le serveur et le client peuvent être également installés sur la même
machine : cas d’école.
 Dans tous les cas, chaque requête (insertion/modification/lecture de
données) est faite par l'intermédiaire du client. Jamais vous ne discuterez
directement avec le serveur

 Le langage SQL est utilisé pour la communication entre le client et le


serveur. MySQL utilise aussi le langage SQL

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 4


1 Prise en main de MySQL

 MySQL un des SGBDR les plus utilisés.


 Sa popularité est due en grande partie au fait que c’est un logiciel open
source, ie son code source est librement disponible et que quiconque peut
modifier MySQL pour l'améliorer ou l'adapter à ses besoins.
 Une version gratuite de MySQL est par conséquent disponible.
 Et une version commerciale payante existe également
 Le développement de MySQL commence en 1994 par David Axmark et
Michael Widenius.
 En 1995, la société MySQL AB est fondée par ces deux développeurs, et
Allan Larsson. La première version officielle de MySQL sort la même année
 En 2008, MySQL AB est rachetée par la société Sun Microsystems, qui est
elle-même rachetée par Oracle Corporation en 2010. Ce dernier édite aussi
Oracle Database, un puissant SGBD qui est payant (et très cher).
 Mais Oracle a promis de continuer à développer MySQL et de conserver la
double licence GPL (libre) et commerciale. Mais jusqu’à quand ?

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 5


1 Prise en main de MySQL

 On peut utiliser MySQL en ligne de commande ou en interface graphique


 Comme interface graphique pour MySQL, on peut citer MySQL Workbench,
PhpMyAdmin (souvent utilisé pour créer un site web en combinant MySQL
et PHP) ou MySQL Front
 Nous préférons la ligne de commande :
 La ligne de commande permet de faire des choses subtiles et compliquées,
et parfois on doit obligatoirement écrire soi-même des requêtes ;
 Ensuite, parce que vous aurez à utiliser MySQL en combinaison avec un
autre langage de programmation. Or, dans du code PHP (ou Java, ou
Python, etc.), on ne va pas écrire "Ouvre PhpMyAdmin et clique sur le bon
bouton pour que j’insére une donnée dans la base". On va écrire en dur les
requêtes. Il faut donc que vous sachiez comment faire dès maintenant.
 Si vous avez déjà installé un logiciel qui permet de gérer une base de
données MySQL, typiquement PHPMyAdmin qui est contenu dans les
célèbres MAMP (pour Mac) et WAMP (pour Windows), ou EasyPHP, il
n'est pas nécessaire de réinstaller MySQL. Il faut juste le localiser.

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 6


1 Prise en main de MySQL

 Téléchargez MySQL ici [Link]


 Nous utilisons le package EasyPhp : EasyPHP-5.8.1 qui contient PHP 5.8
VC9, Apache 2.2.21 VC9, MySQL 5.5.16, PhpMyAdmin 4.5, Xdebug 2.1.2
 A la fin de l’installation (en choisissant les valeurs par défaut), Vérifier que
MySQL est démarré en faisant Menu Démarrer Tous les Programmes 
EasyPHP 5.8.1  EasyPHP 5.8.1.

 S’il n’est pas démarré, cliquer sur le bouton correspondant pour le faire
 EasyPHP installe un produit pour l’administration d’une base de données
MYSQL appelé PhpMyAdmin.

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 7


1 Prise en main de MySQL

 Pendant l’installation, un utilisateur par défaut root avec/sans mot de passe


 Modifier la variable d’environnement Path en ajoutant le chemin absolu où
est installé mysql : C:\Program Files\EasyPHP-5.8.1\mysql\bin

 Ou en ligne de commande par


set PATH=%PATH%; C:\"Program Files"\EasyPHP-5.8.1\mysql\bin
 Démarrer ensuite l’invite de commande DOS en cliquer sur le menu
Démarrer  Exécuter. Puis taper la commande cmd.

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 8


1 Prise en main de MySQL

 Pour se connecter, le client mysql a besoin d'au minimum trois paramètres :


 l'hôte : c'est-à-dire l'endroit où est localisé le serveur ;
 le nom d'utilisateur ;
 et le mot de passe de l'utilisateur.
 Pour chacun des trois paramètres, la syntaxe est :
 --hote=nom_hote ou -h nom_hote
 --user=nom_utilisateur ou -u nom_utilisateur
 --password=password ou -ppassword
 Quelques exemples de connexion
 mysql -h localhost -u root -pmotdepassetopsecret
 mysql --host=localhost --user=root --password=motdepassetopsecret
 mysql -h localhost --user=root -pmotdepassetopsecret

 mysql -h localhost -u root -p ou simplement mysql -u root -p


 Enter password :
 Pour se déconnecter du client, on utilise la commande quit ou exit

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 9


1 Prise en main de MySQL

 Pour se connecter à MySQL, taper la commande : mysql -u root –p.


Ne tapez rien pour le mot de passe et validez

 Taper aussi Select ‘Hello World’;


 Taper help ou \h pour avoir de l’aide sur les commandes de MySQL.

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 10


1 Prise en main de MySQL

 En SQL, on utilise les -- (double tirets) pour les commentaires. MySQL


autorise aussi #
 En SQL et dans la plupart des SGBD, on entoure les chaines de caractères
par ‘ (guillemets simples). MySQL autorise aussi les guillemets doubles "
 En SQL on échappe les caractères spéciaux (simple guillemet \’, tabulation
\t, retour à la ligne \n, pourcent \%, souligné \_, antislash \\) par une simple
guillemet. MySQL autorise aussi l’antislash \
 Lorsqu’on se connecte à MySQL, il est nécessaire de préciser l’encodage
utilisé : soit pendant la connexion avec l’option --default-character-set ;
soit avec la commande set NAMES.
 Il y a plusieurs jeux de caractères, le plus utilisé et recommandé est utf8 qui
de représenter un plus grand nombre de caractères (plus de 65 000) de
plusieurs jeux de caractères différents
 mysql -u student -p --default-character-set=utf8
 SET NAMES ‘utf8’;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 11


1 Prise en main de MySQL

 MySQL définit plusieurs types de données :


 Des numériques entiers : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
 Des numériques décimaux : NUMERIC et DECIMAL, FLOAT, DOUBLE et REAL
 Des textes alphanumériques : CHAR et VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT et
LONGTEXT
 Des chaines binaires alphanumériques : BINARY et VARBINARY, TINYBLOB, BLOB,
MEDIUMBLOB et LONGBLOB
 Des chaines énumérées alphanumériques : SET et ENUM
 Des données temporelles : DATE, TIME, DATETIME, TIMESTAMP, YEAR
 Il faut toujours utiliser le type de données adapté à votre situation
 Les types SET et ENUM sont des types de données qui n’existent que
chez MySQL. Il faut donc les éviter.
 Le format de DATE est ‘AAAA-MM-JJ’. N’importe quelle ponctuation peut
être utilisée pour délimiter les parties (ou aucune)
 MySQL supporte des DATE allant de ‘1001-01-01’ à ‘9999-12-31’
 MySQL stocke un DATETIME au format ‘AAAA-MM-JJ HH:MM:SS’
 A ce niveau, l’environnement est prêt à recevoir des ordres SQL
Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 12
2 Créer, utiliser et supprimer une BD

 Pour créer une BD, taper la commande : CREATE DATABASE <nom_bd>;


 Ou CREATE DATABASE <nom_bd> CHARACTER SET 'utf8';
 Chaque fois qu’on se connecte à MySQL, il faut sélectionner la BD dans
laquelle on va travailler avec la commande : USE <nom_bd> ;

 On peut se connecter en spécifiant la BD par :


 mysql -u bft -p vignoble
 Pour supprimer une BD, taper DROP DATABASE <nom_bd> ; ou encore
DROP DATABASE IF EXISTS <nom_bd> ;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 13


3 Créer les tables

 Les moteurs de tables sont une spécificité de MySQL. Ce sont des


moteurs de stockage. Cela permet de gérer différemment les tables selon
l'utilité que l'on en a.
 Les deux moteurs les plus connus sont MyISAM et InnoDB. MyISAM est le
moteur par défaut
 Avantages de MyISAM : les commandes d'insertion et sélection de
données sont particulièrement rapides sur les tables utilisant ce moteur.
 Inconvénients de MyISAM : il ne gère pas certaines fonctionnalités
importantes comme les clés étrangères, qui permettent de vérifier l'intégrité
d'une référence d'une table à une autre table ou les transactions, qui
permettent de réaliser des séries de modifications "en bloc", ou au contraire
d'annuler ces modifications
 Avantages de InnoDB : il gère les clés étrangères et les transactions. En
cas en cas de crash du serveur, il possède un système de récupération
automatique des données.
 Inconvénients de InnoDB : Plus lent et plus gourmand en ressources que
MyISAM
Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 14
3 Créer les tables

 Pour qu'une table utilise le moteur de notre choix, il suffit d'ajouter à la fin
de la commande de création l’instruction ENGINE=moteur;
 La syntaxe de création d’une table est :
CREATE TABLE [IF NOT EXISTS] Nom_table (
colonne1 description_colonne1,
[colonne2 description_colonne2,
colonne3 description_colonne3,
...,]
[PRIMARY KEY (colonne_clé_primaire)]
) [ENGINE=moteur];
 Lorsque IF NOT EXISTS est présente et si une table de ce nom existe déjà
dans la BD, la requête renvoie un warning plutôt qu'une erreur.
 On peut aussi ne pas préciser la clé primaire directement à la création de la
table. Il est tout à fait possible de l'ajouter par la suite

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 15


3 Créer les tables
 Considérons la table Etudiant avec ses six colonnes suivantes
Nom du
Caractéristique Type NULL? Divers
champ
Numéro d'identité id SMALLINT Non Clé primaire + auto-incrément
+UNSIGNED
Matricule matricule VARCHAR(20) Non -
Nom Nom VARCHAR(30) Oui -
Sexe Sexe CHAR(1) Oui Exclusivement F ou M, par défaut F

Date de naissance date_nais DATETIME Non -


Description description TEXT Oui -

 En utilisant l'auto-incrémentation pour la colonne id, on demande à MySQL


d’ajouter une valeur fixée qui est automatiquement incrémenté de 1 à
chaque nouvelle inscription sans intervention du programmeur.

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 16


3 Créer les tables

 La syntaxe de création d’une table est :


CREATE TABLE Etudiant (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
mat VARCHAR(20) NOT NULL,
nom VARCHAR(30),
sexe CHAR(1) DEFAULT ‘F’,
date_nais DATETIME NOT NULL,
description TEXT,
CONSTRAINT Pk_Etudiant PRIMARY KEY (id),
CONSTRAINT Chk_Sexe CHECK (sexe IN (‘F’, ‘M’)),
) ENGINE=INNODB;

 Pour supprimer une table on utilise la commande DROP


DROP TABLE Etudiant ;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 17


3 Créer les tables

 Avant de supprimer la table, taper SHOW TABLES ; et puis DESCRIBE Etudiant ;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 18


3 Modifier la structure d’une table

 La commande ALTER TABLE permet de modifier la structure d’une table


 Lorsque l'on ajoute ou modifie une colonne, il faut toujours préciser sa
(nouvelle) description complète (type, valeur par défaut, auto-incrément)
ALTER TABLE nom_table ADD ... -- permet d'ajouter quelque chose (une colonne)
ALTER TABLE nom_table DROP ... -- permet de retirer quelque chose
ALTER TABLE nom_table CHANGE ... – permet de changer le nom d’une colonne
ALTER TABLE nom_table MODIFY ... -- permettent de modifier une colonne
 Soit la table de test suivante
 CREATE TABLE Test ( id INT NOT NULL, nom VARCHAR(10) NOT NULL,
PRIMARY KEY (id) );
 ALTER TABLE Test ADD COLUMN date_insertion DATE NOT NULL;
 ALTER TABLE Test DROP COLUMN date_insertion;
 ALTER TABLE Test CHANGE nom prenom VARCHAR(10) NOT NULL;
 ALTER TABLE Test MODIFY id BIGINT NOT NULL AUTO_INCREMENT;
 ALTER TABLE Test MODIFY nom VARCHAR(30) NOT NULL DEFAULT 'Blabla';
 ALTER TABLE Test ADD CONSTRAINT Pk_Test PRIMARY KEY (id);

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 19


3 Créer les tables

Buveur (NB, nom, prenom, ville, age)


Vins (NV, cru, region, millesime, degre)
Boire (NB#, NV#, date, quantité)

 CREATE TABLE Buveur (NB Integer NOT NULL, Nom VARCHAR(50) ,


Prenom VARCHAR(50), Ville VARCHAR (20), Age Integer, CONSTRAINT
Pk_Buveur PRIMARY KEY (NB));

 Procéder de la même façon pour créer les deux autres tables

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 20


4 Insertion des données

 On a deux possibilités s'offrent si l'on veut insérer une ligne dans une table :
 soit donner une valeur pour chaque colonne de la ligne,

 INSERT INTO Etudiant VALUES (1, ‘68IUT', ‘Kougang’, ‘F', ‘2004-04-05


[Link]', ‘Major de la promotion');
 INSERT INTO Etudiant VALUES (NULL, ‘69IUT', ‘FOTSO', NULL, '2000-
03-24 [Link]', NULL);
 soit ne donner les valeurs que de certaines colonnes, auquel cas il faut

bien sûr préciser de quelles colonnes il s'agit.


 INSERT INTO Etudiant(nom, sexe, date_nais) VALUES (‘Djuidje', 'F',
'2009-08-03 [Link]');
 INSERT INTO Etudiant (nom, description, date_nais) VALUES ('Choupi',
'Né sans oreille gauche', '2010-10-03 [Link]');
 INSERT INTO Etudiant (nom, sexe, date_nais,) VALUES
(‘Aissatou', 'F', '2008-12-06 [Link]'),
(‘Ondoua', 'M', '2008-09-11 [Link]'),
(‘La tortue', NULL, '2010-08-23 [Link]');
Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 21
4 Insertion des données

 Insérer dans chaque 5 enregistrements : Attention aux différentes


contraintes (valeurs non nulles, clés primaires, clefs étrangères, etc.)

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 22


5 Exécuter des requêtes

 Tester toutes les requêtes vues en cours

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 23


5.1 Quelques commandes usuelles

 SELECT DATABASE(); C’est une pseudo-requête SQL (sans FROM) qui


Affiche le nom de la base courante.
 SELECT USER(); Idem, cette pseudo-requête affiche le nom de l’utilisateur
 courant.
 • SHOW DATABASES; Affiche la liste des bases de données.
 • SHOW TABLES; Affiche la liste des tables de la base courante.
 • SHOW COLUMNS FROM <Nom-Table>; Affiche la description de la table
Nom-Table.
 SHOW GRANTS FOR <utilisateur>
 SHOW WARNINGS; afficher les avertissements sous MySQL

 Voir le schéma d’une table : DESCRIBE ou DESC


 mysql> Use vignoble;
 mysql> DESC Buveur;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 24


5.1 Quelques commandes usuelles

 Montrer les différentes bases de données existantes


 Mysql> show Databases;

 Voir les tables d’une BD (Vignoble par exemple)


 mysql> Use vignoble;
 mysql> Show tables ;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 25


5.1 Quelques commandes usuelles

 Créer un Nouvel Utilisateur (Avec GRANT ou CREATE USER (USAGE lui


donne la possibilité de se connecter sans mot de passe) :
 mysql> CREATE USER ‘bfotsing’@’localhost’ IDENTIFIED BY ‘bft’
 mysql> GRANT USAGE ON Vignoble.* TO bfotsing ;
 Ou directement avec tous les privilèges :
 mysql> GRANT ALL PRIVILEGES ON Vignoble.* TO ‘fotsing’@’localhost’
IDENTIFIED BY ’bernard’;

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 26


5.1 Quelques commandes usuelles

 mysql> REVOKE create, drop ON *.* FROM bfotsing@localhost;


Retire à bfotsing@localhost le droit de créer ou de détruire des tables.
 mysql> SET PASSWORD FOR visiteur@localhost =
PASSWORD(’monMot’);
Affecte un mot de passe à l’utilisateur visiteur

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 27


5.2 Fichiers .sql et .cvs

 Il est fastidieux d’entrer au clavier toutes les commandes SQL en ligne de


commande mysql, d’autant que toute erreur de frappe implique de
recommencer la saisie au début.
 Une meilleure solution est de créer un fichier (.sql) contenant les
commandes et de l’exécuter: on parle de script SQL.
 Un script SQL peut contenir tout un ensemble de commandes, chacune
devant se terminer par un ’;’. Toutes les lignes commençant par « # », ou
tous les textes encadrés par /*,*/, sont des commentaires.
 On indique à mysql qu’il doit prendre ses commandes dans ce fichier au
lieu de l’entrée standard de la manière suivante :
 C:> mysql -u adminFilms –p < [Link]
 ou simplement, si on utilise un fichier de configuration avec nom et mot de
passe : C:> mysql < [Link]
 Le caractère « < » permet une redirection de l’entrée standard (par défaut la
 console utilisateur) vers [Link].

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 28


5.2 Fichiers .sql et .cvs

 Dernière solution, quand on est déjà sous l’interpréteur de MySQL, on peut


exécuter les commandes contenues dans un fichier avec la commande
source ou \.
 mysql> source [Link]
 mysql> \. [Link]

 La commande LOAD DATA [LOCAL] INFILE permet de charger des


données dans une table à partir d'un fichier formaté (.csv par exemple)
nom;mat;date_nais
Charles;70IUT;1994-12-30
Bruno;72IUT;1978-05-12
Mireille;73IUT;1990-08-23
 MySQL permet de lire ce type de fichier afin de remplir une table avec les
données contenues dans le fichier.
 La syntaxe est la suivante :

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 29


5.2 Fichiers .sql et .cvs

LOAD DATA [LOCAL] INFILE 'nom_fichier'


INTO TABLE nom_table
[FIELDS
[TERMINATED BY '\t']
[ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES
[STARTING BY '']
[TERMINATED BY '\n']
]
[IGNORE nombre LINES]
[(nom_colonne,...)];

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 30


5.2 Fichiers .sql et .cvs

 Le mot-clé LOCAL sert à spécifier si le fichier se trouve côté client (dans ce


cas, on utilise LOCAL ou côté serveur (auquel cas, on ne met pas LOCAL)
 Si le fichier se trouve du côté du serveur, il est obligatoire, pour des raisons
de sécurité, qu'il soit dans le répertoire de la base de données
 Les clauses FIELDS (pour les colonnes) et LINES (pour les lignes)
permettent de définir le format de fichier utilisé.
 TERMINATED BY définit le caractère séparant les colonnes, entre guillemets
 ENCLOSED BY définit le caractère entourant les valeurs dans chaque colonne (vide par
défaut).
 ESCAPED BY définit le caractère d'échappement pour les caractères spéciaux.
 STARTING BY définit le caractère de début de ligne (vide par défaut)
 TERMINATED BY définit le caractère de fin de ligne (‘\n’ par défaut)

 La clause IGNORE nombre LINES permet d'ignorer un certain nombre de


lignes. Par exemple, si la première ligne de votre fichier contient les noms
des colonnes, vous ne voulez pas l'insérer dans votre table. Il suffit alors
d'utiliser IGNORE 1 LINES

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 31


5.2 Fichiers .sql et .cvs

 Exemple : créer un fichier [Link] contenant les lignes suivantes.


Attention, le fichier doit se terminer par un saut de ligne !
nom;mat;date_nais
Charles;70IUT;1994-12-30
Bruno;72IUT;1978-05-12
Mireille;73IUT;1990-08-23

 Enregistrer le fichier sur votre DD dans un repertoire bien connu


 Exécutez la commande suivante.
LOAD DATA LOCAL INFILE ‘[Link]'
INTO TABLE Etudiant
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(nom,mat,date_nais);

Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 32


Fotsing Talla Bernard, Ph.D TP - BDR : MySQL 33

Vous aimerez peut-être aussi