Chapitre 1: Les jointures - Cours SQL
Qu'est-ce qu'une jointure?
Dans ce chapitre, nous allons apprendre quelque chose de fondamental dans les bases de données relationnelles: les jointures.
Si on dit qu'elles sont relationnelles, c'est pas pour rien.
En effet, vous pouvez faire des conditions dans vos requêtes SQL en incluant des tables.
Mais avant d'utiliser les jointures, je pense qu'il est important de savoir quand on peut l'utiliser.
Quand utiliser les jointures?
C'est une bonne question.
On va considérer qu'on a 2 tables: une simple table dico et une autre membre.
La table dico:
Code sql:
CREATE TABLE dico(
nom VARCHAR(25),
definition TEXT,
id_membre INT)
La table membre:
Code sql:
CREATE TABLE membre(
id INT PRIMARY KEY AUTO_INCREMENT,
nom_membre VARCHAR(25),
citation VARCHAR(25))
Voilà , donc le id_membre de la table dico contient l'id du membre contenu dans la table membre.
Ce qu'on veut faire, c'est récupérer (dans l'exemple) le nom du membre à partir de l'id du membre pour chaque définition.
Ici, ce serait pas trop possible puisque dans ma table dico, je n'ai pas le nom du membre mais seulement son id.
Et bien, c'est effectivement possible avec les jointures!
C'est ce que nous allons voir de suite.
Les jointures en pratique!
Voici la syntaxe générale:
Code sql:
SELECT les_champs_a_recuperer FROM table1 JOIN table2 ON table1.champs=table2.champs
Comme vous le voyez c'est pas très compliqué.
Ce qui est après le ON est une condition et peut très bien être remplacé par > ou autre mais a généralement moins d'intèrêt d'être utilisé.
Voici comment faire dans notre exemple:
Code sql:
SELECT nom_membre, nom, definition FROM dico JOIN membre ON dico.id_membre=membre.id LIMIT 0, 20
Cette requête va vous récupérer les 20 premières définitions et va récupérer le nom de membre de chacunes de ces définitions respectives.
Chapitre 2: Les Unions SQL - Cours SQL
Quelle est l'utilité des unions en SQL?
Parfoit, faire 1 requête est plus rapide qu'en faire plusieurs et c'est pourquoi nous allons voir comment grouper plusieurs requêtes pour en faire qu'une seule.
Attention: La requête peut être plus rapide mais peut aussi être plus lente dans certain cas.
Exemple d'utilté des unions
Maintenant, je vous propose que j'ai 2 tables: une pour avoir le nombre de connectés et une autre pour avoir le nombre de membres.
En temps normal, on aurait les 2 requêtes:
Code sql:
SELECT COUNT(*) AS nb FROM membres
Code sql:
SELECT COUNT(*) AS nb FROM connectes
Et pourtant, je vais vous dire, on peut sur ce genre de requêtes les grouper ensemble et dans pas mal de cas gagner du temps! (comme ici)
Syntaxe générale des unions
Code sql:
SELECT champs FROM table1
UNION
SELECT champs FROM table2
Donc comme vous voyez, rien de plus simple.
Les unions en pratique!
Voici pour notre exemple ce que la requête deviendrait:
Code sql:
SELECT COUNT(*) AS nb FROM membre
UNION
SELECT COUNT(*) AS nb FROM connectes
Et voilà c'est tout!
Ensuite, quand vous parcourez le tableaux de résultats, vous aurez dans cet exemple 2 résultats.
Le 1er résultat du tableau 'nb' sera le nombre de membres et le 2ème résultat du tableau 'nb' sera le nombre de connectés.
Les
noms de champs que vous sélectionnez dans vos unions doivent avoir les
mêmes noms et dans le même ordre sinon, vos unions ne marcheront pas!
Chapitre 3: Les fonctions SQL - Cours SQL
Nous allons maintenant apprendre des fonctions très connues en SQL.
Compter le nombre de résultats
COUNT() permet de compter le nombre de résultats retournés.
Code sql:
SELECT COUNT(*) AS nb FROM membres
Récupérera le nombre d'enregistrements dans la table 'membres'.
Récupérer la valeur maximale
Dans le cas où vous avez stocké des nombres et que vous voulez récupérer la valeur maximale, vous n'avez qu'à utiliser la fonction MAX()
Code sql:
SELECT MAX(champs) AS nb_max FROM table
Récupére la valeur maximale dans la table 'table' pour le champs 'champs'
Il est possible de récupérer la valeur maximale en faisant la recherche du nombre sur tout les champs:
Code sql:
SELECT MAX(*) AS nb_max FROM table
Récupérer la valeur minimale
Code sql:
SELECT MIN(champs) AS nb_min FROM table
Il est possible de récupérer la valeur minimale en faisant la recherche du nombre sur tout les champs:
Code sql:
SELECT MIN(*) AS nb_min FROM table
Récupérer que des résultats différents
Code sql:
SELECT DISTINCT champs FROM table
Tout les résultats seront différents et donc, les doublons seront enlevés.
Exemple: récupérer le nombre de visites uniques sur votre site:
Code sql:
SELECT COUNT(DISTINCT ip) AS nb_visites_uniques FROM connectes
La fonction CONCAT()
Pour concaténer 2 chaines de caractères, vous pouvez utiliser la fonction CONCAT().
Code sql:
SELECT CONCAT(champs1,champs2) AS chaine_concatene FROM table
chaine_concatene sera une chaine créé en combinant le champs1 et le champs2 (il n'y aura pas d'espace qui va se créer dans notre exemple)
donc si champs1 vaut: test1
et champs2 vaut: test2
chaine_concatene vaudra dans notre exemple: test1test2
Récupérer une moyenne
Pour récupérer la moyenne d'une colonne, il faut utiliser la fonction AVG() qui s'utilise comme suit:
Code sql:
SELECT AVG(col) AS moyenne FROM table
Chapitre 4: Les clauses SQL - Cours SQL
La clause LIMIT
Il peut parfoit être utile de limiter le nombre de résultats d'une requête.
Pour cela, la clause LIMIT pourra faire l'affaire.
Code sql:
SELECT * FROM table LIMIT PREMIER_ENTRE_A_AFFICHER, NB_RESULTATS_MAX_A_RETOURNER
Donc, si on veut retourner les 10 premiers résultats, il faudra écrire:
Code sql:
SELECT * FROM table LIMIT 0, 10
Attention: En SQL, on commence à partir de l'entrée 0 et pas 1 donc si vous mettez 1 à la place, vous aurez à partir du 2ème résultat.
Il est aussi autorisé d'omettre le 1er paramètre (PREMIER_ENTRE) quand on commence à partir du premier enregistrement.
Donc, pour récupérer les 10 premiers résultats, il est autorisé d'écrire:
Code sql:
SELECT * FROM table LIMIT 10
La clause ORDER BY
En SQL, il peut être utile de trier des résultats.
Voici la syntaxe de base:
Code sql:
SELECT * FROM table ORDER BY champ
Vous avez 2 possibilités encore:
- Trier par ordre croissant: ASC
- Trier par ordre décroissant: DESC
Donc pour récupérer par exemple la liste des 20 derniers membres inscrits dans l'ordre des plus récemment inscrits, on peut faire:
Code sql:
SELECT * FROM membre ORDER BY date_inscription DESC LIMIT 20
SOURCE : apprendre-informatique.com
0 commentaires:
Enregistrer un commentaire