les bases du langage SQL |
|
Février 2011 |
Les requêtes SQL suivantes sont
très simple et il est facile de vérifier sois même les résultats.
Essayez les en copiant-collant les requêtes présentées ci
dessous.
SELECT * |
Ceci est vraiment la base du SQL: l'ensemble de la table est affichée
SELECT pop2001,
regione |
Vous n'êtes pas obligés d'afficher toutes les colonnes: il suffit d'expliciter uniquement celles qui vous intéressent, dans l'ordre désiré.
SELECT Cod_rEg AS code,
REGIONE AS name, |
Vous pouvez définir un alias pour chaque colonne, afin
d'obtenir un résultat plus lisible.
Dans cet exemple, deux
points sont particulièrement importants :
En SQL, les noms de table et de colonne sont insensibles à la casse: REGIONE et regione font référence à la même colonne.
Il existe des caractères
interdits (comme les espaces, tirets,parenthèses,deux-points...
) pour les noms de table et de colonne.
Ils ne peuvent pas
porter des noms réservés (i.e. vous ne pouvez pas nommer
une colonne SELECT
ou FROM, car ce
sont des commandes SQL)
Cependant, vous pouvez
explicitement masquer tout nom interdit, afin qu'il
devienne légal.
Pour ce faire, il faut entourer le nom par des
guillemets doubles.
Vous pouvez aussi le faire pour chaque nom: c'est totalement inoffensif, mais non nécessaire.
si jamais (très rare, mais pas impossible) le nom
interdit contient déjà un (ou plus) guillemet double,
vous devrez insérer un nouveau guillemet double pour
chacun d'eux.
e.g.: A"Bc"D
doit être masqué ainsi: "A""Bc""D"
SELECT COD_REG, REGIONE,
POP2001 |
SQL vous permet d'ordonner facilement les lignes de votre résultat.
SELECT COD_REG, REGIONE,
POP2001 |
Vous pouvez ordonner les lignes par valeurs ASCendantes ou DESCendantes: par défaut, les résultats sont toujours triés par valeurs ASCendantes.
Ordre Ascendant pour les textes (A-Z): de la plus petite à la plus grande valeur numérique (et non ordre alphabétique)
Ordre Descendant pour les textes (A-Z): de la plus grande à la plus petite valeur numérique
SELECT COD_PRO,
PROVINCIA, SIGLA |
La clause WHERE permet de restreindre les résultats: seules les lignes satisfaisant à la clause WHERE vont être placées dans la liste des résultats: dans notre exemple, la liste des Counties appartenant à la Toscane sera sélectionnée.
SELECT PRO_COM,
NOME_COM, POP2001 |
Idem: avec cette fois ci la liste des Local Councils de Florence.
SELECT PRO_COM,
NOME_COM, POP2001 |
Il est possible d'utiliser différentes contraintes au sein d'une même clause WHERE: cette fois la liste des Local Councils les plus peuplés appartenant à la Toscane seront sélectionnés. Les résultats seront triés par ordre descendant.
SELECT PRO_COM,
NOME_COM, POP2001 |
Vous pouvez bien sûr utiliser du texte comme valeur de
comparaison: la chaîne de caractère doit être entourée de
guillemets.
[SQLite reconnaît également les double
guillemets pour le texte, mais je vous encourage à
utiliser les guillemets simples].
note: SQLite
est sensible à la casse pour les valeurs de comparaison de
type texte.
SELECT PRO_COM,
NOME_COM, POP2001 |
Quand un texte contient un apostrophe, il faut le
masquer.
Un nouveau guillemet simple est nécessaire
pour masquer chaque apostrophe dans la chaine de caractères:
e.g.: REGGIO
NELL'EMILIA doit être masqué comme ceci: 'REGGIO
NELL''EMILIA'
SELECT PRO_COM,
NOME_COM, POP2001 |
Vous pouvez utiliser l'opérateur d'évaluation approximative LIKE pour rendre la comparaison texte insensible à la casse.
SELECT PRO_COM,
NOME_COM, POP2001 |
Vous pouvez utiliser l'opérateur LIKE pour des comparaisons de texte partielles, en utilisant % comme un joker: cette requête sélectionne tous les Local Council contenant l'expression 'maria' dans son nom.
SELECT PRO_COM,
NOME_COM, POP2001 |
Parfois, il est utile d'utiliser une liste de valeurs, comme ci-dessus.
SELECT PRO_COM,
NOME_COM, POP2001 |
Moins utilisé, mais parfois utile, un critère de comparaison sur une plage de valeur.
SELECT PROVINCIA, SIGLA,
POP2001 |
Avec SQL il est possible de définir toute sorte de clauses WHERE:
il n'y a pas de limites imposées.
Cet aspect est
particulièrement intéressant, et permet d'envisager tous les
scénarios imaginables.
Juste une petite explication: la requête
précédente va:
inclure toutes les Counties du centre de l'Italie (Regions: Tuscany, Umbria, Marche et Lazio)
exclure les Counties Livorno et Pisa.
puis filtrer les Counties par leur population:
incluant celles ayant entre 300,000 et 500,000 habitants
incluant également celles ayant plus de 750,000 habitants
SELECT PROVINCIA, SIGLA,
POP2001 |
note: en SQL le connecteur
logique OR à la
priorité la plus faible.
Voyez par vous même: ne pas mettre les
parenthèses autour de la clause OR produit un résultat très
différent.
SELECT * |
Voici une dernière clause SELECT
intéressante: l'utilisation de LIMIT
permet de spécifier le nombre de lignes à extraire
(permet
d'obtenir un extrait d'une table, pour un simple contrôle visuel par
exemple).
SELECT * |
Ce n'est pas tout: SQL ne vous contraint pas à limiter le nombre de lignes à partir du début: vous placez le point de départ où vous le désirez avec l'utilisation combinée de OFFSET et LIMIT.
L'apprentissage du SQL n'est pas si difficile après
tout. |
|
Author: Alessandro Furieri a.furieri@lqt.it |
This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license. |
|
|
|
Permission is granted to copy, distribute and/or modify this
document under the terms of the |