les bases du langage SQL

Février 2011


Précédent

Table des matières

Suivant


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 *
FROM reg2001_s;

Ceci est vraiment la base du SQL: l'ensemble de la table est affichée

SELECT pop2001, regione
FROM reg2001_s;

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,
  pop2001 AS "population (2001)"
FROM reg2001_s;

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 :



SELECT COD_REG, REGIONE, POP2001
FROM reg2001_s
ORDER BY regione;

SQL vous permet d'ordonner facilement les lignes de votre résultat.

SELECT COD_REG, REGIONE, POP2001
FROM reg2001_s
ORDER BY POP2001 DESC;

Vous pouvez ordonner les lignes par valeurs ASCendantes ou DESCendantes: par défaut, les résultats sont toujours triés par valeurs ASCendantes.



SELECT COD_PRO, PROVINCIA, SIGLA
FROM prov2001_s
WHERE COD_REG = 9;

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
FROM com2001_s
WHERE COD_PRO = 48;

Idem: avec cette fois ci la liste des Local Councils de Florence.

SELECT PRO_COM, NOME_COM, POP2001
FROM com2001_s
WHERE COD_REG = 9 AND POP2001 > 50000
ORDER BY POP2001 DESC;

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
FROM com2001_s
WHERE nome_com = 'ROMA';

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
FROM com2001_s
WHERE nome_com = 'L''AQUILA';

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
FROM com2001_s
WHERE nome_com LIKE 'roma';

Vous pouvez utiliser l'opérateur d'évaluation approximative LIKE pour rendre la comparaison texte insensible à la casse.

SELECT PRO_COM, NOME_COM, POP2001
FROM com2001_s
WHERE nome_com LIKE '%maria%';

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
FROM com2001_s
WHERE nome_com IN ('ROMA', 'MILANO', 'NAPOLI');

Parfois, il est utile d'utiliser une liste de valeurs, comme ci-dessus.

SELECT PRO_COM, NOME_COM, POP2001
FROM com2001_s
WHERE POP2001 BETWEEN 1990 AND 2010;

Moins utilisé, mais parfois utile, un critère de comparaison sur une plage de valeur.



SELECT PROVINCIA, SIGLA, POP2001
FROM prov2001_s
WHERE COD_REG IN (9, 10, 11, 12)
  AND SIGLA NOT IN ('LI', 'PI')
  AND (POP2001 BETWEEN 300000 AND 500000
    OR POP2001 > 750000);

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:

SELECT PROVINCIA, SIGLA, POP2001
FROM prov2001_s
WHERE COD_REG IN (9, 10, 11, 12)
  AND SIGLA NOT IN ('LI', 'PI')
  AND POP2001 BETWEEN 300000 AND 500000
  OR POP2001 > 750000;

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 *
FROM com2001_s
LIMIT 10;

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 *
FROM com2001_s
LIMIT 10 OFFSET 1000;

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.
Il y a très peu de mots clés, la syntaxe est logique et prévisible, et les requêtes ont une structure se rapprochant beaucoup de la langue anglaise (autant que possible).
Maintenant, vous êtes supposé être capable de créer des requêtes SQL simples par vos propres moyens


Précédent

Table des matières

Suivant


Author: Alessandro Furieri a.furieri@lqt.it
Traduced from English by RIVIERE Romain

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
GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.