Developpez.com

Club des développeurs et IT pro
Plus de 4 millions de visiteurs uniques par mois

Les nouveautés de la norme SQL:2008

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...

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Intro

SQLpro

II. SQL:2008

II-A. Nouveautés

La fonction :

 
Sélectionnez
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
Sélectionnez
-- paquets de lignes
NTILE ( <number of tiles> )

   <number of tiles> :=
      { <simple value specification> | <dynamic parameter specification> }

-- valeur précédente, suivante
{ LEAD | LAG } ( <extent> [ , <offset> [ , <default expression> ] ] ) [ <null treatment> ]
	
   <extent> : =
      <value expression>
   <offset> : =
      <exact numeric>
   <default expression> :=
      <value expression>
   <null treatment> :=
      { RESPECT NULLS | IGNORE NULLS }

-- première, dernière valeur
{ FIRST_VALUE | LAST_VALUE } ( <value expression> ) [ <null treatment> ]

-- nieme valeur
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 }

-- retourner les lignes à partir de...
OFFSET <offset row count> { ROW | ROWS } 

-- retourner n lignes
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
Sélectionnez
-- après la 25e ligne, prendre les 10 lignes suivantes dans l'ordre de la clause ORDER BY.
SELECT *
FROM   T_CLIENT_CLI
ORDER  BY 1
OFFSET 25 FETCH NEXT 10 ROWS

-- groupez en 10 paquets, pour chaque département, les noms des communes de chaque département
SELECT CMN_DEPARTEMENT, CMN_NUM_DEPARTEMENT,
       NTILE(10) OVER(PARTITION BY CMN_DEPARTEMENT ORDER BY CMN_NOM) AS GROUPE_DEPARTEMENT
FROM   T_COMMUNE_CMN

-- liste des communes par départements, avec  de département suivant et précédent
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 

-- obtenir, pour chaque département, la commune la plus importante en terme de démographie
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).

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.