Langage de requête de données
Note
DQL pour Data Query Language est le sous-langage responsable de la lecture, ou de l'interrogation, des données d'une base de données.
En SQL, cela correspond principalment à la commande select qui permet de sélectionner et d'extraire des données spécifiques à partir d'une ou plusieurs tables.
La dénomination de ce type de commande est requête ou query en anglais
Source
Dans une commande select il convient de définir les colonnes que l'on veut obtenir ainsi que la source des données définie par le mot clé from
select firstName, LastName, City from customers;
Sélectionner les colonnes prénom (firstName), nom (lastName) et ville (City) de la table clients (customers).
Pour sélectionner toutes les colonnes il faut utiliser le caractère joker *.
Filtre
La clause where permet de spécifier une condition qui doit être satisfaite pour qu'une ligne soit incluse dans le résultat de la requête.
select FirstName, LastName, City
from customers
where Country = 'France';
| FirstName | LastName | City |
|---|---|---|
| Camille | Bernard | Paris |
| Dominique | Lefebvre | Paris |
| Marc | Dubois | Lyon |
| Wyatt | Girard | Bordeaux |
| Isabelle | Mercier | Dijon |
Opérateurs
| Opérateur | Description |
|---|---|
| = | égal |
| <> | différent |
| > | supérieur |
| >= | supérieur ou égal |
| < | inférieur |
| <= | inférieur ou égal |
entre
Détermine si une valeur se trouve entre deux limites inclusives. between peut être précédé du mot clé not pour inverser la condition.
where total between 10.0 and 20.0
quand le total est entre 10 et 20
dans
L'opérateur `in' détermine si une valeur est présente dans un ensemble de valeurs.
select FirstName, LastName, Country
from customers
where Country in ('France', 'Belgium', 'Germany');
Sélectionner les clients de France, Belgique ou Allemagne.
comme
détermine si une valeur correspond à tout ou partie d'une chaîne. souvent utilisé avec caractères génériques pour indiquer toute correspondance de chaîne de caractères avec zéro ou plusieurs caractères (%) ou une correspondance à caractère unique (_).
"products"."prod_name" like 'prod%'
Conditions multiples
Les conditions peuvent être combinées avec des opérateurs booléen AND et OR.
Tri
La commande ORDER BY dans une requête SELECT en SQL est utilisée pour trier les résultats retournés par la requête en fonction d'une ou plusieurs colonnes.
SELECT nom, prenom, age
FROM utilisateurs
ORDER BY age DESC, nom ASC;
Pagination
Si un nombre limite est donné, pas plus de ce nombre de lignes sera renvoyé (mais peut-être moins, si la requête elle-même génère moins de lignes).
OFFSET dit de sauter autant de lignes avant de commencer à renvoyer des lignes.
Si OFFSET et LIMIT apparaissent, les lignes OFFSET sont ignorées avant de commencer à compter les lignes LIMIT renvoyées.
Lors de l'utilisation de LIMIT, il est important d'utiliser une clause ORDER BY qui contraint les lignes de résultats dans un ordre unique. Sinon, vous obtiendrez un sous-ensemble imprévisible des lignes de la requête. Vous demandez peut-être les lignes du dixième au vingtième, mais du dixième au vingtième dans quel ordre ? L'ordre est inconnu, sauf si vous avez spécifié ORDER BY.
Agrégation
Regoupement
Les fonctions d'agrégation deviennent particulièrement puissantes lorsqu'elles sont utilisées avec GROUP BY, qui regroupe les lignes partageant une valeur commune dans une ou plusieurs colonnes avant d'appliquer l'agrégation.
SELECT departement, AVG(salaire)
FROM employes
GROUP BY departement;