MySQL

Les bases de données relationnelles

Elles permettent de regrouper des informations sous la forme de tables dans une base de données. Le principe consiste à relier les tables entre elles grâce à des clés primaire (table source) et des clés étrangères (= référence à une clé primaire, à définir dans la table cible).

Nous utiliserons PhpMyAdmin, logiciel qui permet de gérer des bases de données avec une interface Web.

Le langage SQL (Structured Query Language)

C'est un langage qui permet de formuler des requêtes de type relationnel pour dialoguer avec les bases de données, et leurs tables.

Sélection de données dans la base

La commande SELECT vous permettra de sélectionner les champs qui vos intéressent.

Syntaxe :

   SELECT * (ou liste de colonnes)
   FROM nom_table ;

Modification des données de la base

Pour modifier la base de données, utiliser la commande UPDATE.

Syntaxe :

     UPDATE nom_table
     SET colonne1 = 'nouvelle valeur'
     WHERE colonne1 = 'ancienne valeur' ;

Insérer des données dans la base

Pour ce faire, utiliser la commande INSERT.

Syntaxe :

    INSERT INTO nom_table(colonne1, colonne2, colonne3)
    VALUES('valeur1', 'valeur2', 'valeur3') ; 

Supprimer des données

Utiliser la commande DELETE.

Syntaxe :

    DELETE FROM nom_table
    WHERE id = valeur ;

 

Spécifier des conditions

On utilise la fonction WHERE, qui permet d'indiquer les spécificités de votre requête.

Opérateurs à utiliser :

= Egal
<> Différent de
> Plus grand que
< Plus petit que
>= Plus grand ou égal à
<= Plus petit ou égal à
BETWEEN Entre une fourchette de chiffres
LIKE Recherche plein texte / utiliser des % pour indiquer qu'il  a du texte (avant, après ou les deux).
 

Attention de bien penser à mettre vos chaînes de caractères entre guillemets !

 

Spécifier des tris sur les résultats

On utilise ORDER BY suivi du nom de colonne sur laquelle vous voulez trier vos résultats.

 

Exemple de requête

SELECT * FROM ma_table WHERE colonne1 = 'traduction' AND colonne2 = 'FR' ORDER BY colonne3 ;

 

Les jointures

Pour combiner les résultats de plusieurs tables, on fait des jointures qui permettent d'aligner les données de chacune des tables sur un identifiant commun (clé).

Syntaxe 1 (ancienne) :

SELECT * FROM table1, table2  WHERE table1.id = table2.id ;

 

Syntaxe 2 (nouvelle) :

SELECT * FROM table1 (INNER) JOIN table1 ON table2.id = table1.id ;
 

Structuration des tables de la base de données

Clés primaires

  • Les clés primaires permettent d'assigner un identifiant unique pour chaque ligne d'une table.

Clés étrangères

  • Les clés étrangères permettent d'établir des relations entre plusieurs tables, de façon à conserver la cohérence des données (cf. Gestion des relations / Relations view dans PHPMyAdmin).
    • Il faut créer la clé depuis la table qui reçoit la contrainte (ex. table_adresses vers table_personnes).
    • Il faut que le champ qui reçoit la contrainte (ex. table_adresses.id) soit indexé.
    • Il faut que les deux colonnes soient de type identique.

Liens

Pour plus d'informations sur le langage SQL : http://fr.wikipedia.org/wiki/Structured_Query_Language

Pour aller plus loin, lire le tutoriel : http://www.siteduzero.com/tutoriel-3-464494-administrez-vos-bases-de-don...

 

TP sur MySQL

 

Organisation des données

  • Aller sur phpmyadmin : http://localhost/phpmyadmin
  • Créer une base de données
  • Réfléchir à comment structurer les informations qui sont dans votre formulaire (TP précédent sur les formulaires) ainsi qu'au type de données
  • Réfléchir à l'organisation de ces données de façon relationnelle (bien utiliser les clés primaires et étrangères)
  • Créer les tables adéquates
  • Insérer les données dans les tables
  • Réfléchir enfin à comment gérer ces données s'il faut les stocker dans plusieurs langues, et proposer un schéma de base de données adéquat

Manipulation des données

  • Utiliser le langage de requêtes SQL (cf. ci-dessous) pour insérer, modifier et effacer des données :
    • Sélectionner tout le contenu d'une de vos tables
    • Faire la même chose en triant sur une colonne
    • Insérer de nouvelles données dans une de vos tables
    • Mettre à jour une valeur dans une de vos tables
    • Afficher des données provenant de deux tables
    • Afficher des données provenant de trois tables
    • Afficher des données en filtrant sur la valeur d'une colonne
    • Supprimer des données
  • Quand vos requêtes fonctionnent, stockez-les dans un fichier (on en aura besoin pour faire la même chose avec PHP dans le TP suivant)

Rappel : création d'une table avec Phpmyadmin

  1. S'assurer que la base de données a utf8_general_ci pour Collation (sinon, le changer depuis Opérations)
  2. Créer une nouvelle table (Collation : uft8_general_ci)
  3. Choisir InnoDB pour le moteur de stockage
  4. Créer un champ id : INT (integer) et cocher la case A_I (auto-increment)
  5. Le définir comme clé primaire (identifiant unique pour chaque ligne)
  6. Pour créer un champ texte : TEXT
  7. Pour créer un champ texte de plus petite taille : VARCHAR et spécifier le nombre de caractères maximum