Une (brève) introduction à SQL

La plupart des sites Web modernes sont de type dynamique. Qu'il s'agisse du site Internet d'une agence immobilière, d'un site Web pour une PME, un blog, etc. tous interagissent avec une base de données. Ces interactions se font la plupart du temps grâce au langage SQL (Structured Query Language) et le plus souvent le serveur de la base de données est MySQL.

Dans cet article nous allons voir les bases du langage SQL.

Pour ces exemples nous utiliserons une simple table, users, de trois colonnes :

  • user_id - un nombre entier automatiquement incrémenté
  • name - une chaîne de 50 caractères pour stocker un nom d'utilisateur
  • likes_bacon - une valeur booléenne (1 ou 0) indiquant si l'utilisateur aime le bacon

Création de la base de données

Avant de créer notre table des utilisateurs nous devons créer une base de données qui pourra accueillir la table. Cela se fait de la manière suivante :

Création de la table

Nous devons, avant de pouvoir manipuler des données, créer notre table de trois colonnes, chacune d'un type différent.

L'instruction de base pour créer une table est la suivante :

Comme il faut au moins une colonne pour chaque table de la base de données cela ne fonctionnera pas réellement. Ajoutons donc une colonne d'identifiant (user_id) , qui est un entier (INT) de 10 de long.

Comme nous ne voulons pas gérer de valeurs négative pour l'identifiant nous allons ajouter la clause unsigned. Et comme nous voulons que cette valeur s'incrémente automatiquement quand on enregistre un nouvelle utilisateur dans la table, nous appliquons également la clause AUTO_INCREMENT. Au passage, nous spécifions la valeur de départ de cet incrément (AUTO_INCREMENT=1)

Il ne nous reste qu'à ajouter les deux autres colonnes avant de nous intéresser à  la clé primaire et aux index.

Clé primaire et index

Nous allons indiquer que la colonne user_id est la clé primaire. Mais avant cela, voyons brièvement ce que sont les index dans MySQL.

  • Unique : dans ce cas, dans la colonne (ou l'ensemble de colonnes définies dans un index unique) devra fournir des valeurs uniques. Autrement dit, dans les différentes lignes on ne trouvera que des valeurs distinctes.
  • Index : ce type d'index est utilisé pour optimiser les requêtes sur la table, notamment pour les clauses WHERE.
  • Clé primaire : c'est une sorte d'amalgame des deux précédents types d'index. Mais, à l'inverse des deux autres, il ne peut y avoir qu'un index de type clé primaire par table.

Voyons à présent comment définir la colonne user_id en tant que clé primaire :

Supprimer une table

Une simple instruction permet de supprimer une table. Attention, il ne sera pas possible de la récupérer, c'est une destruction pure et simple.

Interrogation des données

Pour commencer, interrogeons la table de manière basique :

Dans cette requête nous utilisons l'astérisque (*) pour indiquer que nous voulons récupérer les données de toutes les colonnes de la table users. Mais si nous souhaitons récupérer uniquement les données de certaines colonnes, il suffit d'indiquer leur nom (en les séparant par des virgules) comme ceci :

Filtrer les données

Maintenant si nous voulons savoir quels sont les utilisateurs qui aiment le bacon, et seulement ceux-là, il est nécessaire de filtrer les données dans notre requête. Cela se fait en utilisant la clause WHERE.

Et si nous voulons appliquer plusieurs conditions ? Il suffit d'ajouter des critères à la clause WHERE en les combinant à l'aide des opérateurs AND ou OR.

Trier les résultats

Voyons maintenant comment trier les données retournées par une requête en utilisant la clause ORDER BY

Dans cette requête, avec l'instruction LIMIT, nous indiquons à partir de quelle ligne (0) nous voulons récupérer les données, et combien de lignes (10) nous voulons retourner. Si l'on veut retourner toutes les lignes, il suffit de ne pas utiliser l'instruction LIMIT.

Le mot clé ASC indique la manière dont est effectué le tri : ASC = ascendant, DESC = descendant

Insérer des données dans la table

Pour insérer des données dans la base de données, une requête comporte trois parties :

  • Le nom de la table
  • Le nom des colonnes
  • Les valeurs à insérer pour chaque colonne
Il est possible d'insérer plusieurs lignes par le biais d'une seule requête, en procédant comme ceci :

Mise à jour des données

Pour mettre à jour les données une requête pourra, comme pour l'interrogation, utiliser la clause WHERE (ce sera le cas dans la plupart du temps).

Cette requête est composée de quatre éléments :

  • Le nom de la table à mettre à jour
  • Le nom des colonnes à mettre à jour
  • La nouvelle valeur pour chaque colonne
  • Une clause WHERE optionnelle pour indiquer sur quelle(s) ligne(s) de la table doit s'opérer la mise à jour

Suppression des données dans une table

Tout comme avec les requêtes de type SELECT ou UPDATE, une requête de suppression DELETE peut utiliser la clause WHERE.

Conclusion

Ce bref tutoriel est loin de couvrir tout ce qu'il faut savoir sur SQL pour parvenir à construire un site web dynamique, et pour aller plus loin, n'hésitez pas à consulter la documentation officielle de MySQL.