Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Forums FAQ Tutoriels SQL Livres Access DB2 Firebird InterBase MySQL Oracle PostGreSQL SQL-Server Sybase

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

               Version hors-ligne (Miroir)

I. Intro
II. SQL:2008
II-A. Nouveautés
II-B. Modifications
II-C. Syntaxes
II-D. Exemples
III. Conclusions


I. Intro

SQLpro

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



               Version hors-ligne (Miroir)

Valid XHTML 1.1!Valid CSS!

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.

Responsable bénévole de la rubrique SQL & SGBD : Frédéric Dubois (orafrance) - Contacter par EMail :
Vos questions techniques : forum d'entraide SQL & SGBD - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.