SQL
Qu'est-ce que SQL ? (Structured Query Language)
SQL (prononcé sequel en anglais) est un langage de manipulation de bases de données relationelles.
Je précise que je vais mettre les instructions SQL en majuscules, il s'agit d'une convention non obligatoire mais qui a l'avantage de distinguer rapidement les instructions des noms de colonnes et de tables.
Sélection
L'instruction SELECT
SELECT * FROM personne
Sélectionne toutes les colonnes de la table personne.
DISTINCT
N'affiche qu'un exemplaire de chaque ligne identique. Cela permet d'éviter d'obtenir des informations dupliquées.
SELECT DISTINCT nom FROM personne
Selectionne la colonne nom dans la table personne en retirant les doublons.
WHERE
Permet de mettre une condition pour spécifier les lignes à afficher.
Exemple :
SELECT nom FROM personne WHERE prenom = 'Lino'
Selectionne le nom des personnes dont le prénom est Lino.
HAVING
Permet de mettre une condition pour une colonne calculée
Exemple :
SELECT nom FROM personne HAVING age > 25
Sélectionne le nom des personnes ayant un âge supérieur à 25.
CONDITIONS
Pour combiner plusieurs conditions, on peut utiliser AND, OR et NOT.
GROUP BY
Regroupe les lignes ayant des valeurs similaire
Exemple :
SELECT COUNT(*) FROM personne GROUP BY pays
Compte le nombre de personne par pays.
ORDER BY
Détermine les colonnes que l'on veut trier. (ASC, DESC pour l'ordre)
Exemple :
SELECT nom FROM personne ORDER BY date_naissance
Trie avec la date de naissance (ordre ascendant par défaut)
LIKE
Like sélectionne les lignes en comparant la valeur d'une colonne à une chaîne de caractères.
SELECT * FROM personnes WHERE tel like '06%'
Selectionne les personnes dont le numéro de téléphone commence par 06
%QuelqueChose%
(Qui contient ...)
%QuelqueChose
(Qui finit par ...)
IN
Vérifie qu'une valeur est présente dans une liste
NOT IN
Vérifie qu'une valeur n'est pas présente dans une liste.
SELECT nom, ville FROM personnes WHERE ville NOT IN ('Prague','Miami','Tacos')
Liste des personnes n’habitant pas à Prague, Miami ou Tacos
BETWEEN
Peut être utilisé pour vérifier si une valeur (chaine de caractères, date, chiffre) est entre 2 valeurs.
SELECT nom FROM personne WHERE age BETWEEN 10 and 20
Exemple : Liste des personnes dont l'age est compris entre 10 et 20
FONCTIONS
COUNT ()
compte le nombre de lignes
MIN ()
trouve la valeur minimale d'une colonne
MAX ()
trouve la valeur maximale d'une colonne
SUM ()
additionne des valeurs
AVG ()
calcule la moyenne
Elles ne sont pas toutes là, mais ce sont les plus courantes. Rien ne t'empêche d'en savoir plus en cliquant ici (et sur ce site tu peux également encore en découvrir d'autres qui ne figurent pas dans ce tuto).
Exemple :
SELECT AVG(age) FROM personne
Sélectionne l'âge moyen des personnes.
Insertion
Ajout d'une personne (INSERT)
Pour une table de la forme suivante :
Exemple sur toutes les colonnes (attention à l'ordre, il est défini par l'ordre des colonnes dans la table) :
INSERT INTO personne VALUES ('Robert', 'Dupont')
Exemple avec colonnes précisées (permet de définir un ordre) :
INSERT INTO personne (nom, prenom) VALUES ('Dupont', 'Robert')
Exemple avec plusieurs insertions à la fois :
INSERT INTO client (prenom, nom) VALUES ('Melanie', 'Cruz'), ('Simon', 'Lacite')
De manière générale précisez les colonnes : cela vous permet de ne pas vous tromper sur l'ordre et de clarifier la lecture du code
MODIFICATION
Exemple pour un changement d'âge :
UPDATE personne SET age = 6
Il est possible d'ajouter des conditions dans un update (comme WHERE)
SUPPRESSION
Permet de supprimer une ou des ligne(s)
DELETE from personne WHERE prenom = 'Enzo'
JOINTURE
Comme je l'ai dit précédement, SQL est un langage de manipulation de base de donnée relationelle.
Mais c'est quoi une base de donnée relationelle ?
Il existe plusieurs types de bases de données, comme MongoDB qui est une base de données distribuée (NoSQL) et il existe aussi des bases de données relationelle comme MySQL (c'est ce que nous voyons actuellement).
Bon tu l'auras deviné les jointures vont nous permettre de faire comuniquer nos tables via des relations avec des cardinalités (terme que nous verrons eventuellement dans un tuto de conception de BDD).
Bon maintenant des exemples de relations (tirés du concepteur phpMyAdmin) :
Exemple en SQL :
SELECT plat.libelle, plat_ingredient.id_ingredient
FROM plat
INNER JOIN plat_ingredient
ON plat.id_plat = plat_ingredient.id_plat
WHERE plat_ingredient.id_plat = 2
On sélectionne le nom et l'id des ingrédients d'un plat dont l'id est 2. Les ingrédients étant dans une autre table, il faut réaliser une jointure dans laquelle on spécifie que id du plat est le même pour le plat et pour les ingrédients. Cette jointure est réalisée grâce à l'instruction JOIN.
Pour faire ceci, dans votre BDD vous devez avoir comme l'exemple ci-dessus une table avec une clé étrangère c'est-à-dire un id obligatoire correspondant à un élément dans une autre table et permettant d'y faire référence (ici, le champ id_plat
dans la table plat_ingredient).
Il est possible de faire plusieurs jointures à la fois pour accéder à d'autres tables :
Ici nous avons "id_plat" et "id_ingredient" donc si on veut ajouter une ligne dans "plat_ingredient" nous devons mettre l'id d'un plat existant et d'un ingrédient existant pour affilier un ingrédient à un plat.
Bon pour revenir aux JOIN, il en existe plusieurs types :
Pour l'instant nous nous arrêterons ici, le but est de montrer les bases mais un lien est dispo en cliquant sur le nom de chaque jointure pour en savoir plus.
La DB utilisée dans ce tuto est disponible ici : https://github.com/DogLoc/GCA-SQL.
FIN
Voilà c'est tout pour ce tuto je suis disponible sur le discord GCA si vous avez des questions !