Chapitre 2. SQL

Table des matières
Le modèle relationnel
Formalisation du modèle de données relationnel
Opérations dans le modèle de données relationnel
Le langage SQL

Ce chapitre fait partie de la Master's Thesis de Stefan Simkovics : Enhancement of the ANSI SQL Implementation of PostgreSQL 23 novembre 1998, Department of Information Systems, Vienna University of Technology .

SQL est devenu le plus populaire langage de requête pour bases relationnelles. Le nom "SQL" est une abréviation de Structured Query Language (Langage de requête structuré). Donald Chamberlain et d'autres personnes chercheurs employés par IBM définirent en 1974 le langage SEQUEL Structured English Query Language. Ce langage fut implémenté pour la première fois en 1974-75 sur un prototype IBM appelé SEQUEL-XRM. En 1976-77 une version révisée de SEQUEL appelée SEQUEL/2 fut définie et le nom changé en SQL.

Un nouveau prototype appelé System R fut developpé par IBM en 1977. Il implémentait un large sous-ensemble de SEQUEL/2 (maintenant SQL) et le langage connu nombre de modifications durant ce projet. System R fut installé sur un certain nombre de sites : deux chez IBM même et les autres chez certains de leurs clients. IBM commença le développement de produits commerciaux qui implémentent le langage SQL basé sur System R.

Dans les années qui suivirent IBM et d'autres éditeurs annoncèrent des produits SQL comme : SQL/DS (IBM), DB2 (IBM), ORACLE (Oracle Corp.), DG/SQL (Data General Corp.), and SYBASE (Sybase Inc.).

SQL est maintenant devenu un standard car l'American National Standards Institute (ANSI) demanda en 1982 à son comité chargé des bases de données (X3H2) de développer un langage standard de requête aux serveurs de bases relationnelles. Il fut ratifié en 1986 et provient essentiellement du SQL IBM. En 1987 ce standard ANSI fut aussi accepté en tant standard international par l'ISO (International Organization for Standardization). Cette première version du standard SQL est souvent appelée "SQL/86". Il fut étendu en 1989 et le nouveau standard est souvent, de façon informelle, appelé "SQL/89". Un standard nommé database Language Embedded SQL (ESQL) fut avalisé au même moment.

Les comités ISO et ANSI ont travaillé pendant des années sur la définition d'une version étendue du standard appelé informellement SQL2 ou SQL/92. Cette version devint un standard ratifié - "International Standard ISO/IEC 9075:1992, Database Language SQL" - fin 1992. SQL/92 est la version évoquée quand on parle de « SQL standard ». L'ouvrage A Guide to the SQL Standard (C. J. Date and Hugh Darwen, ISBN: 0-201-96426-0, 1997, Addison-Wesley) le décrit dans le détail. Au moment de la rédaction de ce document, un nouveau standard nommé de façon informelle SQL3 est en développement. Il est prévu pour faire de SQL un langage complet, c'est-à-dire que toutes les requêtes calculables (ex. les requêtes récursives) seront possibles. C'est une tâche difficile et son achèvement ne peut pas être attendu avant fin 1999.

Le modèle relationnel

Comme mentionné ci-dessus SQL est un langage relationnel. Ce qui veut dire qu'il est basé sur le modèle relationnel publié pour la première fois par E.F. Codd en 1970. Nous donnerons une description du modèle relationnel plus avant ("le modèle de données relationnel"), mais présenterons tout d'abord un aperçu plus intuitif.

Une base de données relationnelle est une base perçue par ses utilisateurs comme un ensemble de tables. Une table en un ensemble de lignes et de colonnes où chaque ligne représente un enregistrement et chaque colonne représente un attribut des enregistrements contenus dans la table. Voici un exemple de base comprenant 3 tables :

Exemple 2-1. La base SUPPLIERS et PARTS

   SUPPLIER   SNO |  SNAME  |  CITY      SELLS   SNO | PNO
             -----+---------+--------           -----+-----
               1  |  Smith  | London              1  |  1
               2  |  Jones  | Paris               1  |  2
               3  |  Adams  | Vienna              2  |  4
               4  |  Blake  | Rome                3  |  1
                                                  3  |  3
                                                  4  |  2
   PART       PNO |  PNAME  |  PRICE              4  |  3 
             -----+---------+---------            4  |  4
               1  |  Screw  |   10
               2  |  Nut    |    8
               3  |  Bolt   |   15
               4  |  Cam    |   25
     

Les tables PART et SUPPLIER peuvent être considérées comme des entités et SELLS comme une relation entre une pièce particulière et un fournisseur particulier.