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
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.
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. |
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. |
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. |
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 |
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 |
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é. |
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 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.
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 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 |
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 |