| Fiche technique | |
|---|---|
| Type de produit : | Langage de programmation |
| Auteur : | Donald D. Chamberlin, Raymond F. Boyce |
| Date de publication : | 1974 |
Introduction
Le SQL, abréviation de Structured Query Language («langage de requêtes structuré»), est aujourd'hui le langage de programmation le plus répandu pour interroger, manipuler et administrer les bases de données relationnelles. Depuis plusieurs décennies, il constitue un standard incontournable dans le développement d'applications, la gestion de l'information et l'administration de systèmes informatiques. Sa popularité s'explique par sa simplicité d'utilisation, sa syntaxe relativement uniforme et sa capacité à traiter rapidement de très grandes quantités de données. Il est utilisé aussi bien par les petites entreprises que par les grandes organisations, les administrations publiques et les services en ligne. La majorité des systèmes de gestion de bases de données relationnelles (SGBDR) prennent en charge SQL, notamment Access, DB2, Filemaker, H2, Hypersonic SQL (HSQLDB), Informix, InterBase, MySQL, Oracle DataBase SQL, SQL Server et Sybase. Malgré cette domination, SQL n'est pas le seul langage consacré aux bases de données. D'autres approches existent, comme la famille dBase (Clipper, xBase, FoxPro, Visual dBase, Visual FoxPro), le Cypher Query Language utilisé avec Neo4j pour les bases de données orientées graphes, ainsi que les technologies NoSQL et NewSQL, développées pour répondre à des besoins particuliers de performance, de distribution ou de traitement de données massives.
Historique
Le langage SQL trouve ses origines dans les travaux de recherche menés au début des années 1970 sur les bases de données relationnelles, inspirés des travaux d'Edgar F. Codd. Les premiers langages expérimentaux, notamment SEQUEL, QUEL et QBE (Query By Example), ont servi de fondement à son développement. La première version de SQL fut conçue en 1974 avant d'évoluer rapidement au fil des années grâce aux travaux d'IBM et de plusieurs fabricants de bases de données. En 1986, le langage fut officiellement normalisé par l'ANSI sous le nom de SQL-86, puis amélioré par de nombreuses révisions successives qui ont ajouté de nouvelles fonctionnalités, telles que les procédures stockées, les déclencheurs (triggers), les vues, les transactions, les fonctions analytiques et la gestion des objets. La première implémentation commerciale fut proposée par Relational Software, Inc., société qui deviendra plus tard Oracle Corporation. Aujourd'hui, SQL continue d'évoluer grâce aux nouvelles normes internationales et demeure le langage de référence pour les bases de données relationnelles modernes.
Avantage et inconvénient
Les principaux avantages du langage SQL résident dans sa simplicité, sa puissance et sa grande portabilité entre les différents systèmes de gestion de bases de données. Quelques instructions suffisent souvent pour sélectionner, ajouter, modifier ou supprimer des données de façon efficace. SQL peut être intégré facilement à de nombreux langages de programmation tels que ASP.NET, C#, ColdFusion, Java (JSP), PHP, Python, Perl, Delphi, Visual Basic ou encore C++, ce qui en fait un excellent complément aux applications Web, aux logiciels de bureau et aux services réseau. Grâce à son caractère déclaratif, le programmeur décrit les données recherchées plutôt que la manière de les obtenir, laissant ainsi le moteur de base de données optimiser automatiquement les requêtes. Cette approche facilite le développement, améliore les performances et simplifie la maintenance des applications.
En revanche, SQL présente également certains inconvénients. Une requête mal conçue peut entraîner des conséquences importantes, particulièrement lorsqu'elle modifie ou supprime des données. Par exemple, une instruction UPDATE ou DELETE exécutée sans une clause WHERE suffisamment précise peut affecter l'ensemble des enregistrements d'une table en quelques secondes. De même, une requête incorrecte peut provoquer des pertes de données difficiles à récupérer si aucune sauvegarde récente n'est disponible. Pour cette raison, il est fortement recommandé d'utiliser la clé primaire ou un identifiant unique lors des opérations de modification, de tester les requêtes sur un environnement de développement avant leur exécution en production et, lorsque cela est possible, d'encadrer les modifications importantes dans des transactions permettant une annulation (ROLLBACK) en cas d'erreur. L'utilisation de bonnes pratiques de développement et de sauvegardes régulières permet ainsi de limiter considérablement les risques liés à la manipulation des données.
Les inconvénients du langage de programmation c'est qu'une mauvaise requête «UPDATE» peut détruire énormément d'informations rapidement ! Si vous changer plein d'informations sans avoir utilisé un «WHERE» précis, vous risquez de changer des données que vous n'auriez pas dû ! Idéalement, on devrait toujours utiliser la clef primaire pour modifier l'information, mais ce n'est pas toujours possible.
Liste des normes
Voici les normes majeurs du langage de programmation SQL :
| Normes | Année |
|---|---|
| SQL-86 | 1986 |
| SQL-89 | 1989 |
| SQL-92 (SQL2) | 1992 |
| SQL:1999 (SQL3) | 1999 |
| SQL:2003 | 2003 |
| SQL:2006 | 2006 |
| SQL:2008 | 2008 |
| SQL:2011 | 2011 |
| SQL:2016 | 2016 |
| SQL:2019 | 2019 |
| ... | ... |
Remarque
- Sécurité et nomenclature : Si on vous a demandé de changer la nomenclature des noms de tables sous prétexte d'une faille de sécurité dans un site PHP, ColdFusion ou autre, il s'agit généralement d'une mauvaise pratique, car si votre «hacker» se rend jusqu'au nom de la base de données, c'est que votre site est carrément mal codé et que vous avez déjà énormément de problèmes critiques à corriger d'abord. J'ai déjà constaté ce genre de recommandation pour des CMS comme WordPress et ses franchement s'attaquer au problème à l'envers. Ce n'est pas normal de protéger un site Web à ce niveau, ce genre d'idée relève davantage de l'improvisation de dernière minute plutôt que d'une vision d'un architecte.
Code source
Voici des exemples de code source d'utilitaires pour manipuler le SQL :
| Lien | Langage de programmation | Description | Projet | Syntaxe |
|---|---|---|---|---|
| CSV2SQL.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier .CSV en format SQL. | Corail | CSV2SQL |
| csv2sql.php | PHP | Cette commande permet de convertir un fichier .CSV en format SQL. | Corail-DarkSlateBlue | csv2sql |
| DBF2SQL.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier .DBF (dBASE III) en format SQL. | Corail | DBF2SQL |
| SQL2CSV.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier .SQL en format CSV. | Corail | SQL2CSV |
| SQL2DBF.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier SQL en DBF. | Corail | SQL2DBF |
| SQL2HTML.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier SQL en HTML. | Corail | SQL2HTML |
| SQL2JSON.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier SQL en JSON. | Corail | SQL2JSON |
| SQL2XML.PAS | Free Pascal, Turbo Pascal | Cette commande permet de convertir un fichier SQL en XML. | Corail | SQL2XML |