Le langage SQL

Objectif

  • Découvrir les possibilités du langage SQL.

Mise en situation

Le modèle relationnel a été inventé par E.F. Codd (Directeur de recherche du centre IBM de San José) en 1970, suite à quoi de nombreux langages ont fait leur apparition :

  • IBM Sequel (Structured English Query Language) en 1977 ;

  • IBM Sequel/2 ;

  • IBM System/R ;

  • IBM DB2 ;

Ce sont ces langages qui ont donné naissance au standard SQL, normalisé en 1986 au États-Unis par l'ANSI[1] pour donner SQL/86 (puis au niveau international par l'ISO[2] en 1987).

DéfinitionSQL

SQL[3] (pour langage de requêtes structuré) est un langage déclaratif destiné à la manipulation de bases de données au sein des SGBD[4] et plus particulièrement des SGBDR[5].

Sous-ensembles de SQL : LDD, LCD, LMD, LCT

SQL est un langage déclaratif, il n'est donc un langage de programmation complet, mais plutôt une interface standard pour accéder aux bases de données. Il est composé de quatre sous ensembles :

  • Le Langage de Définition de Données (LDD[6], ou en anglais DDL, Data Definition Language) pour créer et supprimer des objets dans la base de données (tables, contraintes d'intégrité, vues, etc.).

    Exemple de commandes : CREATE DROP ALTER

  • Le Langage de Contrôle de Données (LCD[7], ou en anglais DCL, Data Control Language) pour gérer les droits sur les objets de la base (création des utilisateurs et affectation de leurs droits).

    Exemple de commandes : GRANT REVOKE

  • Le Langage de Manipulation de Données (LMD[8], ou en anglais DML, Data Manipulation Language) pour la recherche, l'insertion, la mise à jour et la suppression de données. Le LMD est basé sur les opérateurs relationnels, auxquels sont ajoutés des fonctions de calcul d'agrégats et des instructions pour réaliser les opérations d'insertion, mise à jour et suppression.

    Exemple de commandes : INSERT UPDATE DELETE SELECT

  • Le Langage de Contrôle de Transaction (LCT, ou en anglais TCL, Transaction Control Language) pour la gestion des transactions (validation ou annulation de modifications de données dans la BD).

    Exemple de commandes : COMMIT ROLLBACK

ConseilLe SQL, c'est du code informatique, il faut le faire fonctionner

Le code SQL est fait pour être testé. Cela peut être fait simplement grâce à des interfaces en ligne comme :

ConseilAlimenter vos bases de données

Une base de données sans données, c'est au mieux une base, mais pas une base de données. Ce n'est pas suffisant pour être testé.

Pour tester une base de données et voir si elle fonctionne, il faut l'alimenter avec des données, pour vérifier qu'elle permet effectivement de faire ce que l'on souhaite.

ConseilUtiliser une référence en ligne

  • Utiliser une référence correspondant à son SGBDR.

  • Dans le doute PostgreSQL est un des SGBDR les plus proches du standard et dont la documentation est très complète : https://docs.postgresql.fr.

ComplémentVersions de SQL

  • SQL-86 (ou SQL-87) : Version d'origine

  • SQL-89 (ou SQL-1) : Améliorations mineures

  • SQL-92 (ou SQL-2) : Extensions fonctionnelles majeures (types de données, opérations relationnelles, instruction LDD, transactions, etc.

  • SQL-99 (ou SQL-3) : Introduction du PSM[10] (couche procédurale sous forme de procédure stockées) et du RO[11]

  • SQL-2003 : Extensions XML[12]

  • SQL-2006 : Améliorations mineures (pour XML notamment)

  • SQL-2008 : Améliorations mineures (pour le RO notamment)

Les SGBD acceptent ou non certaines fonctions en fonction leur niveau d'implémentation de SQL. Certains SGBD ont implémenté des fonctions avant leur standardisation SQL, en conséquence elles peuvent différer du standard.

FondamentalRéférence SQL : SQL-99 complete, really