C’est quoi le SQL ? – partie 2
<<< Article précédent : C’est quoi le SQL ?
SQL by phatplus from flaticon.com |
Dans cet article, des exemples, des exemples et encore des exemples.
L’objectif est que vous compreniez bien la subtilité et les possibilités des requêtes SQL. Commençons par la commande la plus utilisée : SELECT |
Nos premières requêtes SQL
Pour que tout soit plus simple à comprendre, nous allons étudier les principales instructions SQL avec des exemples.
J’ai fait un exemple avec 2 tables seulement.
Exemple :
Imaginons un magasin de bricolage. Pour gérer son stock de matériel celui-ci a besoin d’une liste des articles qu’il peut vendre et d’un inventaire de son stock pour savoir ce qu’il détient en magasin. A partir de ces informations, nous pouvons utiliser les 2 tables suivantes :
Une table contenant des articles :
Articles
id_Article | Designation |
1 | Clou |
2 | Vis 50 mm |
3 | Vis 100 mm |
4 | Agrafe |
5 | Cheville 7 mm |
6 | Colle |
Et une table contenant le stock, avec le détail de ce qu’elle a acheté auprès de son fournisseur et de ce qui reste encore en magasin
Mon_Stock
id_Article | nb_achete | nb_en_stock |
1 | 1000 | 200 |
2 | 300 | 0 |
2 | 500 | 100 |
4 | 2000 | 1800 |
3 | 500 | 0 |
On peut constater plusieurs choses :
- On a acheté plusieurs fois de l’article 2
- Il ne reste plus d’article 3 (stock =0)
- On n’a jamais acheté l’article 5 ni de 6.
- Il n’est pas facile de comprendre le stock car il ne fait référence qu’à des numéros d’article et pas à des noms d’articles.
C’est facile à voir directement car le stock est tout petit, mais imaginez maintenant la même chose avec des milliers d’articles et vous voyez tout l’intérêt des requêtes SQL qui vont pouvoir nous renseigner sur toutes informations.
Instruction SELECT
Partie 1 – Des requêtes simples
Exemple 1 :
A – Ce que je veux obtenir
Afficher la liste des tous les articles (que le stock soit vide ou pas)
B – La requête
select * from articles
On peut traduire la requête par : Sélectionne moi tous les champs de la table « Articles »
Le * veut dire tous les champs.
j’aurais pu choisir les champs un à un exemple : Select id_article, designation …
C – Le résultat
id_Article | Designation |
1 | Clou |
2 | Vis 50 mm |
3 | Vis 100 mm |
4 | Agrafe |
5 | Cheville 7 mm |
6 | Colle |
Exemple 2 :
A – Ce que je veux obtenir
La même chose mais triée par ordre alphabétique sur la désignation de l’article.
B – La requête
select * from articles order by designation
Vous l’avez compris, les mots réservés : « order by » indiquent qu’il faut trier le résultat.
(si vous aviez voulu trier dans l’autre sens, il suffit d’ajouter « DESC » à la fin du tri. On ajoute « ASC » pour tri ascendant et DESC pour tri descendant, comme ça :
select * from articles order by designation desc )
On peut mettre plusieurs champs dans le tri : on ajoute alors les champs séparés par des virgules comme par exemple :
… order by designation, id_article
C – Le résultat
id_Article | Designation |
4 | Agrafe |
5 | Cheville 7 mm |
1 | Clou |
6 | Colle |
3 | Vis 100 mm |
2 | Vis 50 mm |
Exemple 3 :
A – Ce que je veux obtenir
Je veux avoir la liste des articles dont le stock est vide.
B – La requête
select * from mon_stock where nb_en_stock is null
Le mot clé « where » va poser une ou plusieurs condition à l’affichage
on aurait pu mettre aussi : select * from mon_stock where nb_en_stock = 0
C – Le résultat
id_Article | nb_achete | nb_en_stock |
2 | 300 | 0 |
3 | 500 | 0 |
C’est pas vraiment ce que je voulais ! j’aurais avoir le nom des articles qui ont un stock à 0.
Pour cela, je vais devoir faire une jointure entre tables.
C’est ce que je vous propose de regarder dans C’est quoi une requête SQL partie 3 ?
Articles consacrés au SQL et aux bases de données :
C’est quoi le SQL ?
C’est quoi une base de données ?
Comment ça marche une base de données ?