Exemples
SELECT genus, species
FROM mammals
WHERE family = 'Felidae'
ORDER BY genus;
SELECT *
FROM persons
WHERE birthyear IN (1880, 1881)
OR birthyear BETWEEN 1891 AND 1898;
SELECT name, street, borough, phone
FROM schools s
WHERE EXISTS (SELECT * FROM pupils p WHERE p.school = s.id)
ORDER BY borough, street;
SELECT *
FROM employees
WHERE salary >= 10000 AND position <> 'Manager';
SELECT name
FROM wrestlers
WHERE region = 'Europe'
AND weight > ALL (SELECT weight FROM shot_putters
WHERE region = 'Africa');
SELECT id, name
FROM players
WHERE team_id = (SELECT id FROM teams
WHERE name = 'Buffaloes');
SELECT SUM (population)
FROM towns
WHERE name LIKE '%dam'
AND province CONTAINING 'land';
SELECT pass
FROM usertable
WHERE username = current_user;
L’exemple suivant montre ce qui peut se passer si la condition de recherche est calculée comme NULL
.
Supposons que vous ayez un tableau avec plusieurs noms d’enfants et le nombre de billes qu’ils possèdent.
CHILD | MARBLES |
---|---|
Anita |
23 |
Bob E. |
12 |
Chris |
<null> |
Deirdre |
1 |
Eve |
17 |
Fritz |
0 |
Gerry |
21 |
Hadassah |
<null> |
Isaac |
6 |
Tout d’abord, notez la différence entre NULL
et 0. On sait que Fritz n’a aucune bille, mais Chris et Hadassah ont un nombre inconnu de billes.
Maintenant, si vous entrez cette instruction SQL :
SELECT LIST(child) FROM marbletable WHERE marbles > 10
vous obtiendrez les noms Anita, Bob E., Eve et Gerry. Tous ces enfants ont plus de 10 billes.
Si vous niez l’expression :
SELECT LIST(child) FROM marbletable WHERE NOT marbles > 10
retournera Deirdre, Fritz et Isaac. Chris et Hadassah ne seront pas inclus dans l’échantillon, car on ne sait pas s’ils ont 10 billes ou moins. Si vous modifiez la dernière requête comme suit
SELECT LIST(child) FROM marbletable WHERE marbles <= 100
le résultat est le même, car l’expression NULL <= 10
donne UNKNOWN
. Ce n’est pas la même chose que TRUE
, donc Chris et Hadassah ne sont pas affichés. Si vous voulez que tous les enfants "pauvres" soient listés, modifiez la requête comme suit
SELECT LIST(child)
FROM marbletable
WHERE marbles <= 10 OR marbles IS NULL
Maintenant, la condition de recherche devient vraie pour Chris et Hadassah, parce que la condition "marbles is null
retourne TRUE`
dans ce cas.En fait, la condition de recherche ne peut être NULL
pour aucun d’entre eux.
Enfin, les deux exemples suivants de requêtes SELECT
avec des paramètres dans la condition de recherche.La manière dont les paramètres de la requête sont définis et la possibilité de le faire dépendent de l’application.Notez que les requêtes de ce type ne peuvent pas être exécutées immédiatement, elles doivent être préparées à l’avance.Une fois qu’une requête paramétrée a été préparée, l’utilisateur (ou le code appelant) peut substituer des valeurs de paramètres et l’exécuter à plusieurs reprises, en substituant de nouvelles valeurs de paramètres avant chaque appel.La manière dont les valeurs des paramètres sont saisies et le fait qu’elles soient ou non prétraitées dépendent de l’application.Dans les environnements GUI, l’utilisateur saisit généralement les valeurs des paramètres dans une ou plusieurs zones de texte et clique sur le bouton "Exécuter", "Run" ou "Refresh".
SELECT name, address, phone
FROM stores
WHERE city = ? AND class = ?
SELECT *
FROM pants
WHERE model = :model AND size = :size AND color = :col
La dernière requête ne peut pas être envoyée directement au moteur du serveur, l’application doit la convertir dans un autre format, en faisant correspondre les paramètres nommés aux paramètres de position.