2
Expressions pour la valeur NULL
La valeur NULL
Renvoie de la première expression non nulle
ex : SELECT coalesce (note,0) FROM presenceModule ;
(Attention : sans l’utilisation de ‘coalesce’, on ne voit pas les
valeurs manquantes)
<expr> IS NULL
<expr> IS NOT NULL
COALESCE(<expr-1>,<expr-2>,…)
Expressions pour chaînes de caractères
Chaîne de caractères
Comparaisons :
Possibilité d’utiliser des caractères spéciaux :
_ apparié avec un caractère quelconque
% apparié avec un ou plusieurs caractères
<expr-1>||<expr-2>
upper(<nom-attr>),lower(<nom-attr>)
substring
overlay
char_length(<str>)
trim(<nom-attr>) -- supprime les espaces du début
<expr> LIKE <modèle>
Expressions pour les dates
Date, heure
Opération sur les dates
Extraction des champs de dates
CURRENT_DATE, CURRENT_TIMESTAMP (à la seconde près)
now()
date ‘2009-09-19’ + integer ‘7’
date ‘2009-09-19’ + interval ‘1 hour’
date ‘2009-09-19’ + time ‘23 hours’
extract(year from <expr-date>)
date_part(‘hour’, timestamp <expr-date>)
DAYOFMONTH(<expr>), DAYOFYEAR(<expr>),
WEEKDAY(<expr>), DATE(<expr-date-heure>),
TIME(<expr-date-heure>)
Requêtes sur plusieurs tables
Il est possible de faire une requête sur plusieurs tables (lien
clé primaire / étrangère)
2 méthodes :
•Sous-requêtes (subquery)
•Jointure
En général :
Les sous-requêtes sont préférables pour comparer des
agrégations à d’autres valeurs.
Les jointures sont idéales pour afficher des résultats provenant
de plusieurs tables.
3. Requêtes sur plusieurs tables
Méthode 1 : Sous-requêtes
Création d’une requête SELECT dans la clause WHERE
SELECT …
FROM …
WHERE <champ-i>
<comparaison> | IN | NOT IN
(
SELECT <champ1>, <champ2>, … FROM …
WHERE …
)
ORDER BY …
;
Méthode 2 : Jointure interne
Ajout d’une condition de jointure dans la clause WHERE :
La condition de jointure doit être du type :
Table1.champ-i =Table2.champ-j
Résultat
Table1 Table2
=
champ-i
SELECT <champ1>, <champ2>, …
FROM <nom-table-1>, <nom-table-2>, …
WHERE <condition-jointure>
ORDER BY <champ1>, <champ2>, …;
champ-j