4.1 LIMITE
Si vous vous attendez à ce que votre requête SQL renvoie trop de données, vous pouvez limiter le nombre maximum à l'avance. Après tout, les tables peuvent contenir des milliers voire des millions de lignes.
SQL permet de limiter très facilement le nombre de lignes dans le résultat d'une requête à l'aide de LIMIT
. Ce mot-clé est utilisé à la toute fin de la requête SQL et ressemble à ceci :
LIMIT quantity
Écrivons une requête sur la table des produits, qui contient une liste des produits de notre magasin. Mais puisque nous avons un magasin très prospère et que nous vendons beaucoup de produits, nous voulons obtenir uniquement les 10 premières lignes de la réponse. Voici à quoi ressemblerait cette demande :
SELECT * FROM product
LIMIT 10
Et nous obtenons le résultat de requête suivant :
identifiant | nom | marque | prix | compter |
---|---|---|---|---|
1 | Tableau | Ikéa | 20.00 | 15 |
2 | Chaise | Ikéa | 5,00 | 45 |
3 | Canapé | Ikéa | 80,00 | dix |
4 | Lit | Ikéa | 75,00 | dix |
5 | Placard | Bosch | 125,00 | 15 |
6 | Étagère | Étagère | 25.00 | 114 |
7 | la télé | LG | 350,00 | 4 |
8 | Lampe | LG | 15h00 | 100 |
9 | La commode | Ikéa | 99,00 | dix |
dix | Plaque | Bosch | 199,00 | dix |
Maintenant, nous allons demander uniquement les 5 premières lignes. Voici à quoi ressemblerait cette demande :
SELECT * FROM product
LIMIT 5
Nous obtenons le résultat de requête suivant :
identifiant | nom | marque | prix | compter |
---|---|---|---|---|
1 | Tableau | Ikéa | 20.00 | 15 |
2 | Chaise | Ikéa | 5,00 | 45 |
3 | Canapé | Ikéa | 80,00 | dix |
4 | Lit | Ikéa | 75,00 | dix |
5 | Placard | Bosch | 125,00 | 15 |
4.2 DÉCALAGE
La dernière fois, nous avons appris à limiter le nombre de lignes dans la réponse du serveur. Et maintenant, au lieu de milliers de lignes de la table des produits, nous pouvons obtenir les 10 premières lignes et les afficher à l'utilisateur. C'est parfaitement. Mais comment afficher les 10 secondes lignes ? Et le troisième ?
Si nous écrivons LIMIT 20
, ou LIMIT 30
, le serveur ne retournera-t-il pas respectivement 20 et 30 lignes ?
C'est pour ce cas que SQL a un mot-clé spécial OFFSET
avec lequel vous pouvez demander au serveur de sauter N lignes dans sa réponse. Ce mot-clé est utilisé à la toute fin de la requête SQL (après LIMIT
) et ressemble à :
OFFSET quantity
Écrivons une requête sur la table product et essayons d'obtenir les enregistrements 11 à 15. En d'autres termes, nous demandons au serveur de nous renvoyer 5 lignes, mais en ignorant d'abord les 10 premières lignes de la réponse. Voici à quoi ressemblerait cette demande :
SELECT * FROM product
LIMIT 5
OFFSET 10
Nous obtenons le résultat de requête suivant :
identifiant | nom | marque | prix | compter |
---|---|---|---|---|
onze | Fauteuil | Bosch | 44.00 | 8 |
12 | pot de fleur | Fleur intelligente | 99,00 | 9 |
13 | Rester | Ikéa | 100,00 | dix |
Le serveur n'a renvoyé que 3 lignes, ce qui signifie qu'il y avait 13 lignes au total dans notre table. Le serveur a sauté les 10 premiers et renvoyé les 5 suivants.
4.3 SÉLECTIONNER DISTINCT
Un autre mot-clé utile est DISTINCT
. Il est utilisé lorsqu'il y a des enregistrements en double dans la table et que nous voulons supprimer les doublons.
D'où viennent les doublons dans notre tableau ? Il n'y a peut-être pas de doublons dans la table, mais à la suite de la requête, c'est facile. Écrivons une requête qui renverra les marques de tous les produits que nous vendons. Voici à quoi ressemblerait cette demande :
SELECT brand FROM product
Nous obtenons le résultat de requête suivant :
marque |
---|
Ikéa |
Ikéa |
Ikéa |
Ikéa |
Bosch |
Bosch |
LG |
LG |
Ikéa |
Bosch |
Bosch |
Fleur intelligente |
Ikéa |
Il est facile de voir qu'il y a des lignes en double dans ce tableau. C'est pour s'assurer qu'il n'y a pas de doublons et que vous devez utiliser le mot-clé DISTINCT
. Voici à quoi ressemblera la requête corrigée :
SELECT DISTINCT brand
FROM product
Nous obtenons le résultat de requête suivant :
marque |
---|
Ikéa |
Bosch |
LG |
Fleur intelligente |
Tellement mieux. N'est-ce pas? ;)
4.4 COMMANDER PAR
Et enfin nous sommes arrivés au tri . Pour trier les résultats d'une requête, vous devez utiliser le mot-clé ORDER BY
. Techniquement, ce sont deux mots, mais l'essence n'est pas importante. Deux mots, un opérateur.
Il doit être écrit après le mot clé WHERE
, mais avant LIMIT
et OFFSET
. Si vous écrivez ORDER BY
après LIMIT
, le serveur SQL vous renverra simplement une erreur.
En général, cet opérateur ressemble à ceci :
ORDER BY column order
Où colonne est le nom de la colonne dans le tableau/résultat du tri. Et l'ordre est l'ordre de tri.
L'ordre de tri peut être de trois types :
ASC
(de Croissant) - croissant ;DESC
(de Descendant) - descendant ;- Non spécifié - sera utilisé
ASC
Écrivons une requête qui renverra une liste de produits triés par prix dans l'ordre croissant. Voici à quoi ressemblerait cette demande :
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Nous obtenons le résultat de requête suivant :
identifiant | nom | marque | prix | compter |
---|---|---|---|---|
2 | Chaise | Ikéa | 5,00 | 45 |
8 | Lampe | LG | 15h00 | 100 |
1 | Tableau | Ikéa | 20.00 | 15 |
6 | Étagère | Bosch | 25.00 | 114 |
onze | Fauteuil | Bosch | 44.00 | 8 |
4 | Lit | Ikéa | 75,00 | dix |
3 | Canapé | Ikéa | 80,00 | dix |
12 | pot de fleur | Fleur intelligente | 99,00 | 9 |
9 | La commode | Ikéa | 99,00 | dix |
13 | Rester | Ikéa | 100,00 | dix |
Nous obtiendrons le même résultat si nous ne spécifions pas l'ordre de tri - nous sauterons le mot ASC
.
4.5 ORDER BY sur plusieurs colonnes
L'opérateur ORDER BY
permet de trier le résultat sur plusieurs colonnes. Cela peut être très utile lorsque la première colonne contient beaucoup d'éléments en double. La forme générale de cet opérateur est la suivante :
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
En d'autres termes, si après le tri par la première colonne vous avez plusieurs valeurs identiques à proximité, alors elles sont triées par la deuxième colonne, et ainsi de suite.
Écrivons une requête qui triera nos produits par marque, et pour les produits de la même marque - par ordre décroissant de leur numéro. Voici à quoi ressemblerait cette demande :
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Nous obtenons le résultat de requête suivant :
identifiant | nom | marque | prix | compter |
---|---|---|---|---|
6 | Étagère | Bosch | 25.00 | 114 |
5 | Placard | Bosch | 125,00 | 15 |
dix | Plaque | Bosch | 199,00 | dix |
onze | Fauteuil | Bosch | 44.00 | 8 |
2 | Chaise | Ikéa | 5,00 | 45 |
1 | Tableau | Ikéa | 20.00 | 15 |
9 | La commode | Ikéa | 99,00 | dix |
13 | Rester | Ikéa | 100,00 | dix |
4 | Lit | Ikéa | 75,00 | dix |
3 | Canapé | Ikéa | 80,00 | dix |
8 | Lampe | LG | 15h00 | 100 |
7 | la télé | LG | 350,00 | 4 |
12 | pot de fleur | Fleur intelligente | 99,00 | 9 |
Regardez attentivement le tableau - ses lignes sont triées par nom de marque (ordre alphabétique) et les lignes avec le même nom de marque sont triées par numéro de produit dans l'ordre décroissant (dernière colonne).
GO TO FULL VERSION