Démarrer avec MySQL

Documentation et tables de démo (example database)

Toute la documentation officielle MySQL (en différentes langues) peut se trouver sur :

http://dev.mysql.com/doc/

On trouvera également sur ce lien les différentes bases de données d’exemple (example database) qui permettent de faire des exercices sur des tables simple. On trouvera notamment les bases de données SAKILA, MENAGERIE et WORLD.

Les 2 tables d’exemples de la base ménégerie sont montrées ci-après, elles seront utiles pour certains exercices…

bd menagerie

Le fichier SQL qui permet de créer simplment ces tables peut être récupéré sur http://moncours.estsurinternet.com/coursweb/wp-content/uploads/dump_menagerie.txt

ou copié / collé à partir du SQL suivant :

— MySQL dump menagerie

DROP TABLE IF EXISTS `event`;
CREATE TABLE `event` (
`name` varchar(20) DEFAULT NULL,
`date` date DEFAULT NULL,
`type` varchar(15) DEFAULT NULL,
`remark` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `event` VALUES
(‘Fluffy’,’1995-05-15′,’litter’,’4 kittens, 3 female, 1 male’),
(‘Buffy’,’1993-06-23′,’litter’,’5 puppies, 2 female, 3 male’),
(‘Buffy’,’1994-06-19′,’litter’,’3 puppies, 3 female’),
(‘Chirpy’,’1999-03-21′,’vet’,’needed beak straightened’),
(‘Slim’,’1997-08-03′,’vet’,’broken rib’),
(‘Bowser’,’1991-10-12′,’kennel’,NULL),
(‘Fang’,’1991-10-12′,’kennel’,NULL),
(‘Fang’,’1998-08-28′,’birthday’,’Gave him a new chew toy’),
(‘Claws’,’1998-03-17′,’birthday’,’Gave him a new flea collar’),
(‘Whistler’,’1998-12-09′,’birthday’,’First birthday’);

DROP TABLE IF EXISTS `pet`;
CREATE TABLE `pet` (
`name` varchar(20) DEFAULT NULL,
`owner` varchar(20) DEFAULT NULL,
`species` varchar(20) DEFAULT NULL,
`sex` char(1) DEFAULT NULL,
`birth` date DEFAULT NULL,
`death` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `pet` VALUES
(‘Fluffy’,’Harold’,’cat’,’f’,’1993-02-04′,NULL),
(‘Claws’,’Gwen’,’cat’,’m’,’1994-03-17′,NULL),
(‘Buffy’,’Harold’,’dog’,’f’,’1989-05-13′,NULL),
(‘Fang’,’Benny’,’dog’,’m’,’1990-08-27′,NULL),
(‘Bowser’,’Diane’,’dog’,’m’,’1979-08-31′,’1995-07-29′),
(‘Chirpy’,’Gwen’,’bird’,’f’,’1998-09-11′,NULL),
(‘Whistler’,’Gwen’,’bird’,NULL,’1997-12-09′,NULL),
(‘Slim’,’Benny’,’snake’,’m’,’1996-04-29′,NULL),
(‘Puffball’,’Diane’,’hamster’,’f’,’1999-03-30′,NULL);

note : il faudra d’abord se connecter au serveur MySQL, créer la base ‘menagerie’, puis la sélectionner avant de lancer ces commandes SQL. Tout ceci sera détaillé dans les paragraphes suivants…

Se connecter au serveur

Les clients MySQL requièrent généralement que vous spécifiez :
• la machine hôte que vous voulez utiliser (le serveur)
• votre nom d’utilisateur
• votre mot de passe
Le client mysql le plus simple, pour faire du SQL de manière interactive s’appelle …’mysql’. On peut l’appeler comme ceci :

$> mysql [-h nom_d_hote] [-u nom_d_utilisateur]
[-pvotre_mot_de_passe]

les formes alternatives des options -h, -u et -p sont –host=host_name, –user=user_name et -password=your_pass. Notez qu’il n’y a aucun espace entre l’option -p ou –password= et le mot de passe qui le suit.
Si vous utilisez les options -p et –password mais que vous ne spécifiez pas de mot de passe, le client vous le demandera interactivement. Le mot de passe ne sera alors pas affiché. C’est la méthode la plus sécurisée.

Mysql utilise des valeurs par défaut pour chacun des paramètres qui manquent en ligne de commande :
• Le nom d’hôte par défaut est localhost.
• Le nom d’utilisateur par défaut est votre nom d’utilisateur de système Unix.
• Aucun mot de passe n’est transmis si -p manque.
Par exemple, pour un utilisateur Unix ‘robert’, les commandes suivantes sont équivalentes :

$> mysql -h localhost -u robert
$> mysql -h localhost
$> mysql -u robert
$> mysql

Les autres clients MySQL se comportent de manière similaire.

Alternative pour fournir les valeurs de connexion

Vous pouvez spécifier différentes valeurs par défaut qui seront utilisées lorsque vous établirez la connexion, de manière ce que vous n’ayez pas à entrer ces informations en ligne de commande lorsque vous invoquez un programme client. Cela peut se
faire de plusieurs fa¸ons :
• Vous pouvez spécifier les informations de connexion dans la section [client] du fichier de configuration .my.cnf de
votre dossier personnel. La section qui vous intéresse ressemble à ceci :

[client]
host=nom_d_hote
user=nom_d’utilisateur
password=votre_mot_de_passe

Vous pouvez spécifier les paramètres de connexion avec les variables d’environnement. L’hôte peut être spécifié à mysql avec la variable MYSQL_HOST. L’utilisateur MySQL peut être spécifié avec la variable USER (uniquement pour Windows). Le mot
de passe peut être spécifié avec MYSQL_PWD : mais ceci est peu sécurisé.

Entrer une commande SQL interactivement

Quelques règles pour executer des commandes :

  • Une commande consiste normalement en une commande SQL valide suivie d’un point-virgule.Les mots-clef peuvent être entrés sous n’importe quelle forme de casse.
  • Vous pouvez entrer plusieurs requêtes sur une seule ligne. Il suffit de terminer chacune d’elle par un ‘;’
  • Une commande peut être saisie sur plusieurs lignes

Les requêtes suivantes sont équivalentes…
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

on peut aussi ne pas spécifier de table et faire des calculs en SQL…

mysql> SELECT SIN(PI()/4), (4+1)*5;
————————–
SIN(PI()/4) | (4+1)*5
0.707107 – 25 –

Utiliser des scripts SQL

Il est possible de lancer une commande ou un ensemble de commandes SQL contenues dans un fichier externe, avec la commande source

mysql> source nom_du_script

On peut également utiliser des batchs MySQL, c’est à dire lancer des scripts à partir du système d’exploitation, enutilisant la redirection d’entrée ‘<‘

$> mysql prametre_de_connexion < nom_du_fichier_batch

Utiliser une base de données

Une base de données au sens MySQL est un ensemble de tables liées entre elles fonctionnellement : les tables de l’application ‘ressources humaines’ ou les tables de l’application’annuaire’ par exemple.

Utilisez la commande SHOW pour trouver quelles bases existent déjà sur le serveur :

mysql> SHOW DATABASES;
Database
———-
mysql
test
tmp

Note : Vous ne pourrez voir toutes les bases de données si vous n’avez pas le privilège SHOW DATABASES.

Pour accéder à base de données test (si elle existe) :

mysql> USE test
Database changed

Note: USE, ne requiert pas de point-virgule.

Il est possible d’accéder aux données d’une autre base que la base courante, en préfixant le nom de la table par le nom la base cible

mysql> use base1
/* une table locale */
mysql> select * from toto;
/* une table d’une autre bas, dans la même session */
mysql> select * from base2.tata;

note : des bases et des tables de démo sont disponibles sur le site de MySQL, et donc utilisables pour des tests, par exemple :
la ‘menagerie’ : http://downloads.mysql.com/docs/menagerie-db.zip

Créer et sélectionner une base de données

Si l’administrateur vous a créé une base de données lors du paramétrage de vos droits, vous pouvez commencer à l’utiliser. Sinon, vous aurez besoin de la créer par vous-même

mysql> CREATE DATABASE menagerie;

note : sous Unix les noms de base et de table sont sensibles à la casse.L
La création d’une base de données ne la sélectionne pas pour l’utilisation ; vous devez le faire explicitement.

Vous pouvez sélectionner la base directement dans la ligne de commande lorsque vous invoquez mysql. Par exemple :

$> mysql -h hote -u utilisateur -p menagerie