7.Mes premières requêtes SQL

7.1.Introduction

Maintenant que nous avons réussi à nous connecter à notre base de données[comment?] (après éventuellement l'avoir installée[comment?]) nous allons pouvoir commencer à "jouer" avec.

7.2.Création d'une table [CREATE TABLE]

La création d'une table se fait via la commande CREATE TABLE suivi du nom de la table (ici matable) et des paramètres de la table. Ces paramètres consistent en, au minimum, la liste des noms des champs de la table accompagnés du type de champ[en savoir plus] (entier, date, chaîne de caractères, etc.). Ainsi pour créer une table contenant
  • le nom d'une personne sur au maximum 128 caractères
  • l'année de naissance
  • la taille
on pourra utiliser la requête suivante
CREATE TABLE matable (nom VARCHAR(128), annee_naissance INTEGER, taille FLOAT)
rem
  • Selon le serveur de base de données et le client utilisé vous devrez peut-être ajouter un point-virgule à la fin de la requête (ce qui est le cas si vous utilisez la commande en ligne MySQL).

7.3.Liste des tables contenues dans la base de données

Pour visualiser l'effet de la commande précédente vous devez lister les tables de la base de données. Il n'existe pas de requête SQL standard pour ce type d'opération. La façon de faire dépend de la nature de la base de données.
  • avec MySQL: Cela se fait via la commande
    SHOW TABLES
  • avec PostgreSQL: Tapez la commande \d
  • Si vous utilisez un client web de type phpMyAdmin ou PhpPgAdmin, la liste des tables apparait automatiquement dans le descriptif de la base

7.4.Lister les champs d'une table

La façon de lister les champs d'une table (baptisée ici matable) dépend aussi de la nature de la base de données.
  • avec MySQL: Cela se fait via la commande
    DESCRIBE TABLE matable
  • avec PostgreSQL: Tapez la commande \d matable
  • Si vous utilisez un client web de type phpMyAdmin ou PhpPgAdmin, il suffit de sélectionner la table et l'onglet "structure" pour obtenir la liste et nature des champs qui la compose

7.5.Enregistrement d'une donnée dans une table [INSERT INTO]

L'ajout (ou insertion) d'une donnée dans une table se fait via l'instruction SQL INSERT INTO suivi du nom de la table et des valeurs à insérer.
Il existe plusieurs façons de l'utiliser. La version la plus courte qui n'est pas la plus sure et ne convient pas à toutes les situations consiste à seulement préciser les valeurs (dans l'ordre des champs tels qu'ils ont été créés) après le mot clé VALUES:
INSERT INTO matable VALUES ('Jean DUPONT', 1970, 1.80)
Il est toutefois préférable de préciser (avant le mot clé VALUES) le nom des champs dont vous précisez les valeurs (ce qui permet de ne pas avoir à se préoccuper de l'ordre dans lequel les champs ont été créés)
INSERT INTO matable (taille, annee_naissance, nom) VALUES (1.80, 1970, 'Jean DUPONT')
rem
  • Les valeurs de type chaîne de caractères doivent être mise entre apostrophes (quotes). Si ces chaines de caractères contiennent des apostrophes il faut que celle-ci doivent être "échappées" en les faisant précéder d'un caractère particulier, généralement un anti-slash '\' (pour certaines bases de données il faut la faire précéder d'une apostrophe). Ex:
    INSERT INTO matable VALUES ('Pierre D\'arvors', 1926, 1.70)

7.6.Lecture des données d'une table [SELECT ... FROM]

Pour lire le contenu d'une table (baptisée ici matable) vous pouvez faire appel à la requête SQL
SELECT * FROM matable
Cette requête listera tous les champs de tous les enregistrement de la table

7.7.Filtrer les résultats d'une requête [WHERE]

Pour limiter, sur critères, la liste des enregistrements retournés ou affectés par la requête vous pouvez utiliser l'instruction WHERE suivi de la condition (éventuellement une combinaison de conditions avec des opérateurs AND et/ou OR)
SELECT * FROM matable WHERE annee_naissance<1950
Cette requête listera tous les champs de tous les enregistrement de la table pour lesquels le champ "annee_naissance" contient une valeur strictement inférieure à 1950
En savoir plus sur la commande SQL WHERE

7.8.Suppression d'enregistrement(s) dans une table [DELETE FROM]

Pour supprimer un ou plusieurs enregistrements d'une table, il existe l'instruction DELETE FROM qui devra être suivie du nom de la table (puis généralement d'une clause WHERE permettant de retrouver le -ou les- enregistrements a supprimer). Exemple pour supprimer les enregistrements correspondant à des personnes nommées 'Jean DUPONT':
DELETE FROM matable WHERE nom='Jean DUPONT'
En l'absence de clause WHERE se sont l'ensemble des enregistrements de la table qui sont effacés.

7.9.Mise à jour d'enregistrement(s) dans table [UPDATE]

A compléter

7.10.Suppression d'une table

Pour supprimer de la base de données une table (matable) il faut utiliser à la requête SQL
DROP matable

7.11.Conclusion

Ceci n'est qu'un bref aperçu des commandes SQL, nous allons par la suite les présenter plus en détail.