SQL est un langage qui a été développé dans les années 60, sur les bases théoriques du Dr Codd, dans le but de dialoguer avec les grandes banques de données. Les premières versions utilisables ont été développées par IBM et Oracle (à l'époque Relational Software) dans les années 70. Il a été adopté comme une norme ISO en 1987, et depuis plusieurs révisions se sont succédées : SQL-89, SQL-92, SQL-99, SQL:2003 et SQL:2008. La version sous laquelle nous vivons actuellement est SQL:2011, adoptée en décemnbre 2011.
Il existe une différence notable entre les langages traditionnels (Fortran, Pascal, C, C++, Java) et SQL. Ces langages permettent de décrire des procédures de calcul et de traitement. On indique donc au processeur ce qu’il doit faire, et dans quel ordre. Ce que l'on indique au processeur, c'est donc
comment
un calcul ou un traitement doit être mené. On appelle ces langages des langages procéduraux, tout simplement parce qu'ils décrivent des procédures.
SQL est un langage non procédural. Une commande SQL n’explique pas comment les traitements doivent être menés, mais quel doit en être le résultat. La marche à suivre pour déterminer le bon résultat est à la charge du logiciel serveur, le programmeur SQL n’a a priori pas à s’en soucier. Il s’en soucie en fait, notamment pour des raisons d’optimisation et de temps de calcul. Les logiciels serveurs ont entre autres toute liberté pour utiliser toutes les procédures d'optimisation qu'ils veulent.
Malgré les efforts de standardisation, les différents acteurs du marché des bases de données ont développé leur propre SQL, et il reste des différences notables entre les serveurs disponibles sur le marché. Ces différences peuvent apparaître à trois niveaux :
-
Le serveur ne supporte pas certaines fonctionnalités, et les instructions SQL correspondantes n’ont pas été implémentées ;
-
Les types de données ne correspondent pas toujours en syntaxe d’un serveur à l’autre, ou certains serveurs supportent des types de données différents, ou encore ont leur propre syntaxe de déclaration (c'est notamment le cas pour les dates) ;
-
Certaines fonctions n’ont tout simplement pas la même syntaxe d'un serveur à l'autre.
Consulter la documentation du serveur que l’on utilise est donc toujours une précaution élémentaire à prendre avant de commencer un projet.