Auteur | Message |
---|---|
Administrateur
![]() |
Je connaissais une source pour un brouillon de la norme SQL1992, mais sans savoir si cette norme est pertinente. J’ai posé la question quelques part, et voici la réponse :
Simon a écrit : Given what you wrote you should definitely read SQL1992. It is the core standard for SQL and you will find some ways in which SQLite is not SQL1992. However most SQL implementations implement most things in SQL1992. SQL92 est donc la version SQL de référence, et j’indique alors la source que je connais : sql1992.txt (andrew.cmu.edu) Ce n’est qu’un brouillon, mais il n’est même plus possible d’acheter la version officielle, qui n’est plus disponnible à l’ISO : ISO/IEC 9075:1992 (iso.org) ISO a écrit : Status: Withdrawn Il faudra alors se contenter de l’ébauche. Un petit plus, avec un document sur la normalisation des tables : A Simple Guide to Five Normal Forms in Relational Database Theory (bkent.net), William Kent, Septembre 1982. Ne pas s’arrêter à la date, c’est un formalisme, c’est toujours valable. Ce n’est pas un standard, c’est un formalisme, d’ailleurs pas nécessairement lié à SQL, car lui pré‑existant. Cette normalisation est de plus en usage, pas seulement avec les bases de données, elle s’applique aussi à la modélisation des relations entre les données, dans d’autres domaines, comme les structures et les conteneurs dans les logiciels. |
Administrateur
![]() |
Hibou a écrit : […] Alors surprise, cependant que le document du standard SQL92 n’est plus disponible, au moins certaines parties du standard SQL 2011, sont disponibles sans charges (ça doit être récent). Je ne parle pas de brouillons, mais de documents téléchargeables sur le site de l’ISO. Je les mentionne en rappelant quand‑même le bémol plus haut : SQL1992 reste quand‑même la référence, avec laquelle il y a déjà quelques divergences, qui sont encore plus importantes avec les versions ultérieures du standard, qui n’est le plus souvent que partiellement implémenté, ou alors d’une manière non‑standard. Sans compter que la version de 1992, semble beaucoup plus accessible à la compréhension ! Retour à SQL2011 … La licence à laquelle il faut adhérer pour télécharger les documents, interdit la redistribution. Ces documents sont mis à disposition pour un usage strictement privé. Il reste possible de les imprimer, mais toujours pour seulement pour un usage privé. Ne ré‑hébergé pas ces documents, c’est interdit, il ne faut les faire connaitre qu’à travers ces liens d’origine. |
Administrateur
![]() |
Et un ancien livre publié chez O’Reilly, sur SQL99, qui contrairement à ce que son titre indique, ne couvre pas tout SQL, mais sa partie principale : SQL-99 Complete, Really (woqutech.com). En version HTML, ce n’est pas du PDF.
— Édit 2017‑11‑20 — Le document initialement sur mariadb.com n’y est plus disponible mais se trouve maintenant sur woqutech.com. |
Administrateur
![]() |
Utile quand on ne sait plus où en est avec les contraintes de nommage (« puis‑je nommer telle table ou telle colonne ainsi ou est‑ce un mot réservé ? »), une liste des mots réservés par versions de SQL, en pensant bien que divers systèmes de base de données, ont leurs propres mots réservés en plus : SQL Reserved Words Overview (developer.mimer.se).
|
Administrateur
![]() |
Comme mémo, l’incontournable représentation des jointures SQL avec une représentation ensembliste, celle des diagrammes de Venn : Visual Representation of SQL Joins (codeproject.com), C.L. Moffatt, 2009.
|
Administrateur
![]() |
Un court historique des versions de SQL : SQL history (cs.colostate.edu). Résumé encore plus brièvement :
[1] Ce premier langage ne correspondait qu’au DML, le langage de manipulation de données. [2] Mais SQL reste non‑strictement typé, il ne s’agit que d’indications de types. |
Administrateur
![]() |
Les “Common Table Expressions”, CTE, n’existaient pas en SQL‑92, elles ont été introduites avec SQL:1999. C’est en tous les cas ce que semble sous‑entendre cette page de documentation de SQLite, tout à la fin : SQL As Understood By SQLite: WITH clause (sqlite.org).
sqlite.org a écrit :
The SQL:1999 spec requires that the RECURSIVE keyword follow WITH in any WITH clause that includes a recursive common table expression. However, for compatibility with SqlServer and Oracle, SQLite does not enforce this rule. |
Administrateur
![]() |
Pas un document faisant autorité, mais un tableau précieux aide‑mémoire, sur la granularité des contraintes d’intégrité dans les bases de données : Deferrable SQL Constraints in Depth (begriffs.com). Voir le premier tableau peu après la table des matières.
|
Administrateur
![]() |
Hibou a écrit : Les “Common Table Expressions”, CTE, n’existaient pas en SQL‑92, elles ont été introduites avec SQL:1999. […] Le brouillon final du standard SQL:1999, alias SQL3 (à ne pas confondre avec le moteur de base de données SQlite3), est disponible ici : ISO/IEC 9075-2:1999 (pdx.edu) [PDF]. Le document dit « Partie 2 », mais pourtant tout semble y être. Comme dit précédemment, la version officielle n’est plus disponible, même pas à la vente, alors ne reste que les brouillons finaux. Un document plus court, résumant des différences entre SQL92 et SQL:1999 : SQL:1999, formerly known as SQL3 (uchile.cl) [PDF]. |
Administrateur
![]() |
Hibou a écrit : […] Le document dit « Partie 2 », mais pourtant tout semble y être. […] Oui, l’essentiel y est. Le standard SQL:1999, est en trois parties :
La partie 1 est un préalable à la partie 2, mais la partie 2 peut être consultée sans avoir accès à la partie 1. La partie 3 est en pratique de peu d’intérêt, comme la plupart des librairies logicielles ont leur propre API. La partie 3 intéresserait les développeurs de librairies logicielles, mais il semble exister au moins un standard similaire défini par l’Open Group ; alors soit le standard ISO n’est pas universel, soit il existe d’autre source que l’ISO pour cette troisième partie qui reste accessoire en pratique. Donc avec le PDF SQL:1999 Part 2 et le fichier texte SQL92 pour lequel un lien est donné dans le premier message, il y a largement l’essentiel. |