Contenu

Introduction

MySQL est la base de donnée (BDD) open-source la plus populaire du web. Vous pouvez tout apprendre sur le site internet officiel du projet: www.mysql.org

La structure des données

MySQL est un programme écrit en C++ qui tourne sur un serveur web, ou pour les gros sites web sur un serveur dédié à MySQL. MySQL peut fonctionner sur un PC, un Mac ou une station UNIX/LINUX.

Dans MySQL, les données sont structurées en différents niveaux. Le niveau supérieur est la base de donnée. Il peut y avoir plusieurs base de données sur un serveur MySQL, en général une base par site hébergé.

Une base de donnée contient une ou plusieurs tables, et les tables contiennent un ou plusieurs champs de données typées. C'est-à-dire que le type de donnée est défini pour chaque champs. Les noms des bases de données, des tables et des champs sont limités à 64 caractères.

Les types:

Il existe de multiples types de données. Voici une petite liste des types de données les plus courants:

code
espace
description
TINYINT 1octet Petits nombres entiers dans (-128, 127) ou (0, 255)
SMALLINT 2 octets Petits nombres entiers dans (-32'768, 32'767) ou (0, 65'535)
INT 4 octets Nombres entiers dans (-2'147'483'648, 2'147'483'647) ou (0, 4'294'967'295)
FLOAT(X) 4 ou 8 octets Nombre réel signé. Précision simple si X<=24 ou double si 25<=X<=53
VARCHAR(M) < 256 octets Chaîne de caractères de longueur variable. Longueur max M<255.
TEXT < 2+216 octets Texte de 65'535 caractères au maximum.
DATE 3 octets Date au format 'YYYY-MM-DD' entre 1000-01-01 et 9999-12-31.
TIMESTAMP 4 octets Tampon horaire UNIX au format 'YYYY-MM-DD HH:MM:SS' entre 1970-01-01 00:00:== et 2036-12-31 00:00:00.

Les options de champs

En plus du type que l'on définit pour chaque champs d'une table, on peut préciser certaines options à certains champs.

Par exemple, on définit généralement un champs id entier et unique qui est le numéro de l'enregistrement. Ce champs permet ensuite de s'assurer de retrouver les données du champs requis. Pour ne pas avoir de double enregistrements, on précise que ce champs est unique avec UNIQUE et on peut le faire AUTO_INCREMENT afin qu'il s'incrémente automatiquement à chaque nouvel enregistrement.

Voici les principales options:

option
description
AUTO_INCREMENT Le champs entier s'incrémente de 1 à chaque nouvel enregistrement
PRIMARY_KEY Crée une clé primaire sur le champs. Ce champs permet de repérer un enregistrement.
UNIQUE_KEY Comme PRIMARY_KEY mais en plus le champs 'accepte pas deux fois la même valeur.

Les références:

Les colonnes sont référencées à la manière d'une programmation objet:

Référence de colonne
Signification
id Référence à la colonne id d'une table
articles.id Référence à la colonne id de la table articles.
boutique.articles.id Référence à la colonne id de la table articles de la base de donnée boutique.

Les opérateurs

Une base de donnée sert essentiellement à enregistrer et à retrouver des données. Pour ces opérations il faut des opérateurs. Voici les principaux opérateurs MySQL:

Opérateur
Description
Opérateurs Mathématiques:
+ Addition
- Soustraction
* Multiplication
/ Division
Opérateurs logiques
|| Ou
&& Et
! Non
Opérateurs de comparaison
= Egal
<> ou != Inégal
<= Inférieur ou égal
< Inférieur
>= Supérieur ou égal
> Supérieur

Les requêtes MySQL

L'intérêt d'utiliser une base donnée plutôt ques des simples fichiers textes dans lesquels on irait enregistrer les données est l'utilisation des requêtes, parfois complexes, pour rechercher, trier, et fusionner les données.

Les quatres requêtes principales sont:

Requête
Description
SELECT champs FROM table WHERE condition Séléction des champs champs dans la table table des enregistrements avec la propriété condition.
INSERT INTO table (liste champs) VALUES (liste valeurs) Insertion d'un enregistrement dans la table table avec les valeurs liste valeurs dans les champs liste champs
UPDATE table SET champ1 = valeur1, ..., champN = valeurN WHERE condition Change dans la table table les champs champ1 à champN avec les valeurs valeur1 à valeurN des enregistrements avec la propriété condition
DELETE FROM table WHERE condition Efface les enregistrements de la table table qui ont la propriété condition

Exemples

Requête
Description
SELECT name FROM actors Séléction de tous les noms (name) de la table actors.
SELECT title FROM movies WHERE id = 1 Séléction du titre (title) de la table movies. pour le film avec le numéro d'enregistrement (id) 1
SELECT A.name, M.title FROM actors AS A, movies AS M WHERE M.id = 1 && A.id = M.id_actor Séléction du nom de l'acteur (name) et du titre (title) du film, tels que le numéro (id) du film est 1 et le numéro de l'acteur (id) correspond au champs id_actor du film séléctionné.

Définition et manipulation des données

On peut créer et gérer des données et des structures de données par le terminal à la ligne de commande. Pour cela il existe des fonctions telles que CREATE DATABASE nom_base pour créer une base de donnée nom_base ou DROP DATABASE nom_base pour la supprimer. On peut créer une table avec CREATE TABLE nom_table (...). Mais c'est une technique un peu difficile et il existe un très bon programme pour gérer les données, parmi d'autres, c'est phpMyAdmin.

phpMyAdmin

phpMyAdmin est un programme open-source écrit en PHP qui permet de gérer très efficacement les bases de données MySQL. Il gère plusieurs langues, plusieurs types de sécurité, et est mondialement reconnu.

Vous pouvez télécharger la version 2.2.7-pl1, pour examiner le code source.

Pour vous familiariser avec phpMyAdmin, essayer de gérer la base gybuwebfac ou alors allez gérer votre base de donnée sur bugnon.vd.ch.

Intégration de MySQL et PHP

La force de MySQL est la facilité avec laquelle on peut connecter les scripts PHP aux bases de données MySQL. Les fonctions spécifiques à cet usage sont légion, et il est conseillé de se référer à la documentation PHP sur www.php.net.

Les fonctions PHP pour MySQL

Les fonctions PHP pour MySQL commencent par mysql_ ce qui permet de s'en rappeler plus ou moins facilement...

Fonction
Description
$connection = mysql_connect($host, $user, $pass) Etabli une connexion avec le serveur mysql.
$selection_base = mysql_select_db("$bdd") Séléctionne la base de donnée $bdd
$res = mysql_query($query, $connection); Envoie une requête $query à MySQL avec la connection $connection
$nbr = mysql_num_rows($res); Compte le nombre d'enregistrements trouvés dans le résultat $res
$line = mysql_fetch_array($res) Crée un tableau $line avec le premier enregistrement trouvé dans le résulta $res

Exemples:

Code PHP
Affichage
<?php
// données connection mysql
// utilisez les donnees de votre serveur!
$host = "***";
$user = "***";
$pass = "***";
$bdd = "***";
// connection à mysql $connection = mysql_connect($host,$user,$pass);
if (!$connection) {
die("MySQL connection failed<br>");
}
else
{
echo "connection à mysql établie";
}

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'gybuwebfac.sql.free.fr' (1) in /mnt/109/sdb/9/2/gybuwebfac/mysql.php on line 916
MySQL connection failed