Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Filtrer les données avec MySQL

Article posté le 22-01-2015 dans la catégorie SQL

Dans la lignée des rappels et conseils pour l'utilisation d'un SGBD et particulièrement de MySQL, voici maintenant un article sur les filtres de requêtes.

Une chose importante : il est important de faire des tests et de jouer sur la granularité des requêtes dans la mesure où la rapidité ne sera pas la même selon la construction de cette dernière.

Par exemple une grosse requête peut être mieux que 10.000 petites requêtes, mais 4 ou 5 requêtes moyennes peuvent être mieux qu'une seule grosse requête. Pensez donc à essayer d'optimiser vos requêtes!

A- Les opérateurs de comparaisons

Opérateur Signification
= égal
< inférieur
<= inférieur ou égal
> supérieur
>= supérieur ou égal
<> ou != différent
<=> égal (valable aussi pour NULL)

B- Les critères logiques (combinaison des critères)

Opérateur Signification
AND ET
OR OU
XOR OU EXCLUSIF
NOT NON

Rappels :

C- Le cas de NULL

Pour filtrer des résultats avec un champ NULL (donc pas de valeur) vous pouvez utiliser ceci :

D- Faire des tris

1) Order BY

Permet de classer les résultats dans un certain ordre, par exemple alphabétique ou numérique. Il suffit de préciser la colonne de filtre. 

Notez que l'on peut filtrer sur plusieurs colonnes, mais le tri se fera d'abord sur la première colonne spécifiée, puis sur la seconde...

ORDER BY peut être compléter par les mots-clés ASC ou DESC (tri ascendant ou descendant).

2) DISTINCT

Avec un SELECT, il permet de filtrer les doublons, ne retournant que des colonnes uniques. A noter que l'on peut compléter le DISTINCT par un nom de colonne afin de ne retourner, par exemple que le noms des membres du personnels sans doublon :

SELECT DISTINCT nom FROM personnel

3) LIMIT

Permet de limiter la quantité de résultats retournés. Par exemple, je veux toutes les voitures dont la couleur n'est pas spécifiée, mais que 10 résultats.

SELECT * FROM voitures WHERE couleur IS NULL LIMIT 10

Il peut être complété par le mot-clef OFFSET, qui sert à préciser à partir de quelle ligne ont lit les résultats, utile par exemple dans le cas de la pagination d'une liste de résultats (exemple, afficher la page 2 des résultats d'une recherche).

E- Le cas des chaînes de caractères

Vous pouvez utiliser les opérateurs 'LIKE' ou '=', avec ou sans sensibilité à la casse. 

1) Sensibilité à la casse

Rechercher des enregistrements qui contiennent "Toto", sans sensibilité :

... WHERE nom LIKE '%Toto%'

Avec sensibilité :

... WHERE nom LIKE BINARY '%Toto%'

La différence entre 'LIKE' et '=' se situe au niveau de la possibilité de chercher l'occurence juste dans un morceau (voir plus bas), c'est le cas de 'LIKE", alors que '=' lui cherche exactement la même occurence.

2) Les différentes possibilités de recherche pour LIKE

 

 

 


Tweet
comments powered by Disqus