La commande SELECT la plus simple a la syntaxe suivante :
SELECT *
FROM nom_table ;
Dans laquelle :
nom_table
est le nom de la table sur laquelle porte la sélection.
*
signifie que toutes les colonnes de la table sont
sélectionnées.
Par défaut toutes les lignes sont sélectionnées. On peut limiter la sélection à certaines colonnes, en indiquant une liste de
noms de colonnes à la place de l'astérisque.
SELECT nom_col1, nom_col2, ...
FROM nom_table ;
Exemple :
Donner le nom et la fonction de chaque employé.
La clause DISTINCT ajoutée derrière la commande SELECT permet d'éliminer les
duplications.
Exemple :
Quelles sont toutes les fonctions différentes.
La clause WHERE permet de spécifier quelles sont les lignes à sélectionner.
Elle est suivie d'un prédicat qui sera évalué pour chaque ligne de la table. Les lignes pour
lesquelles le prédicat est vrai seront sélectionnées.
La syntaxe est la suivante :
SELECT *
FROM nom_table
WHERE predicat ;
Un prédicat n'est ni plus ni moins que la façon dont on exprime une propriété. Les prédicats, qu'ils
soient simples ou composés, sont constitués à partir d'expressions que l'on compare entre elles.
Les expressions peuvent être de trois types : numérique,
chaîne de caractères
ou date. A chacun de ces types correspond un format de constante :
Constante numérique
nombre contenant éventuellement un signe, un point décimal et une puissance de dix. Ex : -10, 2.5, 1.2 E-10
Constante chaîne de caractères
une chaîne de caractères entre apostrophes. Ex :'MARTIN' (Attention, une lettre en majuscules n'est pas considérée
comme égale à la même lettre en minuscule).
Constante date
une chaîne de caractères entre apostrophes au format suivant
: jour-mois-année où le jour est sur deux chiffres, le mois est
désigné par les trois premières lettres de son nom en anglais, l'année est sur deux chiffres. Ex : '01-FEB-85'
On peut, en SQL, exprimer des expressions plus complexes en utilisant des opérateurs et des
fonctions étudiés dans le chapitre Expressions et fonctions.
Un prédicat simple est le résultat de la comparaison de deux expressions au
moyen d'un opérateur de comparaison qui peut être :
= égale
!= différent
< inférieur
<= inférieur ou égal
> supérieur
>= supérieur ou égal
Les trois types d'expressions peuvent être comparés au moyen de ces opérateurs :
Pour les types date, la relation d'ordre est l'ordre chronologique.
Pour les types caractère, la relation d'ordre est l'ordre alphabétique.
Il faut ajouter à ces opérateurs arithmétiques classiques les opérateurs
suivants :
expr1 BETWEEN expr2 AND expr3
vrai si expr1 est compris entre expr2 et expr3, bornes incluses
expr1 IN (expr2, expr3, ...)
vrai si expr1 est égale à l'une des expressions de la liste entre parenthèses
expr LIKE chaine
où chaine est une chaîne de caractères pouvant contenir l'un des caractères
jokers :
_ remplace exactement 1 caractère
% remplace une chaîne de caractères de longueur quelconque,
y compris de longueur nulle.
Exemple :
Quels sont les employés dont la commission est supérieure au salaire?
Exemple :
Quels sont les employés gagnant entre 20000 et 25000?
Exemple :
Quels sont les employés commerciaux ou ingénieurs?
Exemple :
Quels sont les employés dont le nom commence par M?
Les opérateurs logiques AND (et)
et OR (ou inclusif) peuvent être utilisés
pour combiner entre eux plusieurs prédicats. L'opérateur NOT placé devant
un prédicat en inverse le sens.
L'opérateur AND est prioritaire par rapport à l'opérateur
OR.
Des parenthèses peuvent être utilisées pour imposer une priorité dans
l'évaluation du
prédicat, ou simplement pour rendre plus claire l'expression logique.
Exemple :
Quels sont les employés du département 30 ayant un salaire supérieur à 25000?
Exemple :
Quels sont les employés directeurs, ou commerciaux et travaillant dans le département 10?
La requête précédente donnerait le même résultat sans les parenthèses, résultat différent
de celui du SELECT suivant.
Exemple :
Quels sont les employés directeurs ou commerciaux, et travaillant dans le département 10?
Pour sql, une valeur NULL est une valeur non définie. Il est possible d'ajouter
une ligne à une table sans spécifier de valeur pour les colonnes non obligatoires
: ces colonnes absentes auront la valeur NULL.
Par exemple les employés dont la rémunération ne prend pas en compte de
commission auront une valeur NULL,
c'est-à-dire indéfinie, comme commission.
L'opérateur IS NULL permet de tester la valeur NULL : le prédicat
expr IS NULL est vrai si l'expression a
la valeur NULL (c'est-à-dire si elle est indéfinie).
Exemple :
Quels sont les employés dont la commission a la valeur NULL?
L'opérateur IS NOT NULL permet de construire un prédicat vrai si la valeur n'est pas NULL (et donc le prédicat
expr IS NOT NULL est vrai si expr est définie)
Remarques
La valeur NULL est différente de la valeur zéro qui, elle, qui est une valeur
bien définie.
Le prédicat expr = NULL est toujours faux,
et ne permet donc pas de tester si l'expression a la valeur NULL.
Une expression de la forme NULL + val donne NULL comme résultat
quelle que puisse être la valeur de val.
Les colonnes constituant le résultat d'un SELECT peuvent être renommées dans
le SELECT, ceci est utile en particulier lorsque la colonne résultat est une
expression. Pour cela, il suffit de faire suivre l'expression définissant la
colonne d'un nom, selon les règles suivantes :
le nom (30 charactères maximum) est inséré derrière l'expression
définissant la colonne, séparé de cette dernière par un espace.
si le nom contient des séparateurs (espace, caractère spécial), ou
s'il est identique à un mot clé de SQL (ex : DATE), il doit être mis
entre guillemets "".
Ce nom est celui sous lequel la colonne sera connue des interfaces externes.
Sous SQLPLUS, par exemple, il constituera le titre par défaut de la
colonne, et servira de référence pour définir un format pour la colonne.