Les nouveautés de la norme SQL:2008
Date de publication : 2008-05-06
Par
Frédéric Brouard (SQL pro)
La nouvelle norme SQL portera le nom de SQL:2008... Ce qui veut dire qu'elle devrait être publiée par l'ISO dans le courant de cette année. Voyons quelles en sont les nouveautés...
I. Intro
II. SQL:2008
II-A. Nouveautés
II-B. Modifications
II-C. Syntaxes
II-D. Exemples
III. Conclusions
I. Intro
II. SQL:2008
II-A. Nouveautés
La fonction :
TRIM_ARRAY ( tableau, n )
|
... qui permet d'extraire un sous tableau.
Une clause de limitation du nombre de ligne d'une requête qui ravira les afficionados de MySQL : OFFSET / FETCH.
De nouvelles fonctions de fenêtrage : ntile, lead, lag, first value, last value, nth value.
L'ordre TRUNCATE TABLE avec option pour la valeur de redémarrage de la colonne identity.
II-B. Modifications
Quelques amélioration mineures ont été apportées sur les éléments suivants : tableau, multiset, types distincs, curseurs et mécanismes d'auto incréments.
II-C. Syntaxes
| Syntaxe des nouveautés SQL:2008 |
NTILE ( <number of tiles> )
<number of tiles> :=
{ <simple value specification> | <dynamic parameter specification> }
{ LEAD | LAG } ( <extent> [ , <offset> [ , <default expression> ] ] ) [ <null treatment> ]
<extent> : =
<value expression>
<offset> : =
<exact numeric>
<default expression> :=
<value expression>
<null treatment> :=
{ RESPECT NULLS | IGNORE NULLS }
{ FIRST_VALUE | LAST_VALUE } ( <value expression> ) [ <null treatment> ]
NTH_VALUE ( <value expression> , <nth row> ) [ <from first or last> ] [ <null treatment> ]
<nth row> .: =
{ <simple value specification> | <dynamic parameter specification> }
<from first or last> :=
{ FROM FIRST | FROM LAST }
OFFSET <offset row count> { ROW | ROWS }
FETCH { FIRST | NEXT } [ <fetch first row count> ] { ROW | ROWS } ONLY
<offset row count> :=
<simple value specification>
<fetch first row count> :=
<simple value specification>
|
II-D. Exemples
| Exemples des nouveautés SQL:2008 |
SELECT *
FROM T_CLIENT_CLI
ORDER BY 1
OFFSET 25 FETCH NEXT 10 ROWS
SELECT CMN_DEPARTEMENT, CMN_NUM_DEPARTEMENT,
NTILE(10) OVER(PARTITION BY CMN_DEPARTEMENT ORDER BY CMN_NOM) AS GROUPE_DEPARTEMENT
FROM T_COMMUNE_CMN
SELECT CMN_NON_DEPARTEMENT, CMN_NOM, ROW_NUMBER(),
LEAD(CMN_NUM_DEPARTEMENT, 1, 0, IGNORE NULLS) OVER (ORDER BY CMN_NUM_DEPARTEMENT) AS PRECEDENT,
LAG(CMN_NUM_DEPARTEMENT, 1, 0, IGNORE NULLS) OVER (ORDER BY CMN_NUM_DEPARTEMENT) AS SUIVANT
SELECT CMN_DEPARTEMENT, CMN_NUM_DEPARTEMENT,
FIRST_VALUE(CMN_NOM) OVER(PARTITION BY CMN_DEPARTEMENT ORDER BY CMN_DEMOGRAPHIE DESC) AS VILLE_PLUS_PEUPLEE
FROM T_COMMUNE_CMN
|
III. Conclusions
On voit à l'évidence que la nouvelle et future norme SQL:2008 n'apporte rien de bien nouveau à l'essentiel du langage.
Il s'agit d'une version mineure, dans l'esprit du relationnel/objet, qui corrige certains défauts et des petits manques des versions antérieures (SQL:1999 et SQL:2003).


Copyright © 2008 Frédéric Brouard. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.