Dbm (discuter | contributions) m (→ENGLISH VERSION) |
Dbm (discuter | contributions) m (→ENGLISH VERSION) |
||
(470 révisions intermédiaires par un utilisateur sont masquées) | |||
Ligne 1 : | Ligne 1 : | ||
− | |||
+ | <table style="width:90%"> | ||
+ | <tr> | ||
+ | <td><center><big><big>'''SQLfast: A database workbench'''</big></big></center></td> | ||
+ | <td><center><big><big>'''SQLfast : Un atelier de bases de données'''</big></big></center></td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td><center><big>'''[[#ENGLISH VERSION|English version]]'''</big></center></td> | ||
+ | <td><center><big>'''[[#VERSION FRANCAISE|Version française]]'''</big></center></td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == VERSION FRANCAISE == | ||
− | |||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> 1. | + | <big><b> 1. Je suis pressé !</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
− | |||
− | |||
− | Le langage SQLfast est une extension de SQL. Ses instructions comprennent, d'une part, les commandes | + | '''Téléchargements''' |
+ | |||
+ | :'''Attention''', dans certaines configurations, le navigateur ''Edge'' de Microsoft refuse de télécharger des fichiers ''zip''. Dans un tel cas, utiliser plutôt ''Firefox'' ou ''Chrome''. | ||
+ | |||
+ | :* <font color="red">'''<i>NOUVEAU</i>'''</font> '''Logiciel SQLfast v5.1''' (documentation en français) ['''<i>dernière maj 2023-06-04</i>'''] | ||
+ | ::[http://bit.ly/3V15zhk '''SQLfast-FR.zip'''] | ||
+ | <!-- --> | ||
+ | :* <font color="red">'''<i>NOUVEAU</i>'''</font> '''Module Python SQLpy v1.2''' ['''<i>dernière maj 2023-06-08</i>'''] | ||
+ | ::[https://bit.ly/3FVFI5P '''SQLpy.zip'''] | ||
+ | <!-- --> | ||
+ | :*'''Manuels''' | ||
+ | <!-- --> | ||
+ | ::*'''Guide d'installation de SQLfast''' (4 pages, en français) [''<i>dernière maj 2022-12-28</i>''] | ||
+ | :::[http://bit.ly/3FZ0yBq '''SQLfast_Installation_FR.pdf'''] | ||
+ | <!-- --> | ||
+ | ::* '''Manuel SQLfast : Database application programming''' (570 pages, en anglais) [''<i>dernière maj 2022-09-12</i>''] | ||
+ | :::[http://bit.ly/3Wm8IZT '''SQLfast-Manual.pdf'''] | ||
+ | <!-- --> | ||
+ | ::* '''Dictionnaire des commandes SQLfast''' (82 pages, en anglais) [''<i>dernière maj 2022-12-12</i>''] | ||
+ | :::[http://bit.ly/3uUvLPV '''SQLfast-Commands.pdf'''] | ||
+ | <!-- --> | ||
+ | :*'''Tutoriels''' | ||
+ | <!-- --> | ||
+ | ::*'''Premiers pas avec SQLfast - Niveau Basic''' (34 pages, en français) [''<i>dernière maj 2020-11-29</i>''] | ||
+ | :::[http://bit.ly/3uZdpxg '''Getting_started_BASIC_FR.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''Premiers pas avec SQLfast - Niveau Expert''' (20 pages, en français) [''<i>dernière maj 2020-11-20</i>''] | ||
+ | :::[http://bit.ly/3ja6UVE '''Getting_started_EXPERT_FR.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''Guide de survie SQLfast - Modèles typiques de scripts''' (60 pages, en français) [''<i>dernière maj 2022-11-20</i>''] | ||
+ | :::[http://bit.ly/3BBtz3F '''Survival_guide_FR.pdf'''] | ||
+ | <!-- --> | ||
+ | ::* <font color="red">'''<i>NOUVEAU</i>'''</font> '''Etudes de cas''' (en anglais) [''<i>dernière maj 2023-06-04</i>''] | ||
+ | :::[https://bit.ly/3x0fj2i '''SQLfast Case Studies'''] | ||
+ | <!-- --> | ||
+ | :*'''Compléments techniques''' | ||
+ | <!-- --> | ||
+ | ::*'''Comparaison du code SQLfast et des codes Java / Python''' (en français) [''<i>dernière maj 2017-11-08</i>''] | ||
+ | :::[http://bit.ly/3Pz3yaN '''Code_Comparison_FR.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''Onze bases de données temporelles de tailles diverses''' (matériaux complémentaires de l'étude de cas ''Temporal databases - Part 2''. [''<i>dernière maj 2019-08-01</i>''] | ||
+ | :::[https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/TDB-Large.zip '''TDB-Large.zip (93 Mo)'''] | ||
+ | |||
+ | |||
+ | '''Versions de SQLfast''' | ||
+ | *'''<font color="red">v5.1 (2023-06-04)</font>''' [[#SQLfast versions|description]] | ||
+ | *v5.0 (2022-12-12) [[#SQLfast versions|description]] | ||
+ | *v4.1 (2022-07-02) [[#SQLfast versions|description]] | ||
+ | *v4.0 (2020-12-04) [[#SQLfast versions|description]] | ||
+ | *v3.2 (2019-09-01) [[#SQLfast versions|description]] | ||
+ | *v3.1.1 (2019-05-22) [[#SQLfast versions|description]] | ||
+ | *v3.1 (2019-02-01) [[#SQLfast versions|description]] | ||
+ | *v3.0.1 (2018-12-04) [[#SQLfast versions|description]] | ||
+ | *v3.0 (2018-11-01) [[#SQLfast versions|description]] | ||
+ | *v2.1.3 (2018-03-02) [[#SQLfast versions|description]] | ||
+ | *v2.1.2 (2017-10-17) [[#SQLfast versions|description]] | ||
+ | *v2.1.1 (2017-10-06) [[#SQLfast versions|description]] | ||
+ | *v2.1 (2017-09-10) [[#SQLfast versions|description]] | ||
+ | *v2.0 (2017-04-01) [[#SQLfast versions|description]] | ||
+ | *v1.2.2 (2016-05-22) [[#SQLfast versions|description]] | ||
+ | *v1.2.1 (2016-05-09) [[#SQLfast versions|description]] | ||
+ | *v1.0.1 (2016-01-14) [[#SQLfast versions|description]] | ||
+ | *v1.0.0 (2015-12-18) [[#SQLfast versions|description]] | ||
+ | |||
+ | |||
+ | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
+ | <font face="Helvetica" color=white> | ||
+ | <big><b> 2. Qu'est-ce que SQLfast ?</b></big> | ||
+ | </font> | ||
+ | </td></tr></table> | ||
+ | |||
+ | '''SQLfast''' et '''SQLpy''' sont les principaux résultats techniques d'un projet didactique destiné à explorer et démontrer la puissance des concepts, des technologies et des méthodes relatives aux bases de données pour la résolution d'une grande variété de problèmes. Dans ce cadre, ces outils sont actuellement utilisés pour développer une série d'études de cas de natures variées destinées à évaluer la puissance de ces concepts ([https://bit.ly/3x0fj2i '''SQLfast Case Studies''']). | ||
+ | |||
+ | Le nom '''SQLfast''' désigne, | ||
+ | :*d'une part, un '''langage''' permettant de rédiger des scripts de manipulation de bases de données relationnelles, | ||
+ | :*et d'autre part, un '''environnement logiciel''' permettant à des utilisateurs tant novices qu'experts de développer, tester et exécuter des requêtes SQL, et plus généralement des scripts SQLfast de toute nature et de complexité quelconque. | ||
+ | Langage et logiciel SQLfast ont été conçus pour couvrir une large gamme de scénarios d'utilisation, depuis l'apprentissage (autonome ou supervisé) des bases de données et du langage SQL jusqu'au développement et à l'exploitation d'applications interactives complexes. Ils ciblent à la fois les utilisateurs débutants et professionnels. | ||
+ | |||
+ | Le '''langage SQLfast''' est une extension de SQL. Ses instructions comprennent, d'une part, les commandes SQL et d'autre part, des instructions d'échange de données avec l'utilisateur (boîtes de dialogue), des variables, des instructions de contrôle (if, for, while, procédures), des métadonnées ainsi que de riches bibliothèques de fonctions et d'interaction avec l'environnement. Un script peut être constitué d'une seule requête SQL mais des scripts complexes, tels que des gestionnaires de bibliothèques ou des générateurs de prototypes, peuvent comporter plusieurs milliers d'instructions. | ||
− | Le langage | + | Le '''langage SQLfast''' a été conçu dans un objectif de simplicité d'utilisation. A l'instar de son noyau, SQL, il offre une courbe d'apprentissage linéaire : un problème simple sera résolu en quelques lignes, dont la rédaction ne nécessite que quelques minutes d'apprentissage. |
− | Les arcanes des interactions avec les données (BD, fichiers, images) ainsi que | + | Les arcanes des interactions avec les données (BD, fichiers, images) ainsi que ceux des dialogues avec l'utilisateur sont entièrement cachés car gérés par le moteur SQLfast. |
− | + | La consultation des données d'une table nécessite '''1 instruction en SQLfast''' (''select * from CLIENT'') mais '''près de 40 instructions en Java/JDBC'''. De même, une boîte de saisie de données constituée de trois champs est définie en '''1 instruction SQLfast''' et exige '''plus de 100 instructions Python/Tkinter'''. Ou encore, le téléchargement d'un fichier est obtenu par '''1 instruction SQLfast''' mais par '''près de 100 instructions Python/urllib2'''. Un document ([http://bit.ly/3Pz3yaN Code_Comparison_FR.pdf]) compare le code SQLfast avec le code standard dans ces trois cas de figure. | |
SQLfast est un logiciel dit ''portable'', qui ne nécessite pas d'installation à proprement parler et qui ne modifie pas les paramètres du système sur lequel il fonctionne. Il peut notamment être installé, avec une collection de bases de données et de scripts, sur une clé USB transportable d'une machine à l'autre. | SQLfast est un logiciel dit ''portable'', qui ne nécessite pas d'installation à proprement parler et qui ne modifie pas les paramètres du système sur lequel il fonctionne. Il peut notamment être installé, avec une collection de bases de données et de scripts, sur une clé USB transportable d'une machine à l'autre. | ||
− | Le logiciel SQLfast offre une interface graphique | + | Le '''l'environnement logiciel SQLfast''' offre une interface graphique conviviale permettant aux utilisateurs novices d'apprendre et d'expérimenter le développement de requêtes SQL et plus généralement de scripts SQLfast. Il dispose d'une fonction d'aide programmable permettant la rédaction et l'intégration au logiciel de tutoriels personnalisés. Son interface se décline en deux variantes : |
− | *'' | + | *''Basic'' : familiarisation avec le concept de base de données, apprentissage du langage SQL, utilisation légère et occasionnelle d'une base de données. |
− | *'' | + | *''Expert'' : apprentissage de la programmation sur bases de données à l'aide du langage SQLfast, développement et exploitation d'applications interactives en SQLfast. |
− | + | ||
− | + | Une des particularités de SQLfast est son '''moteur de tutoriels'''. Un tutoriel (ou guide ou document d'aide) est un hypertexte multimédia écrit dans le langage ''SQLtuto'' (sorte de micro-HTML maîtrisable en quelques minutes). Ce document est ''actif'', c'est-à-dire que tout fragment de code (requête SQL, script SQLfast, dialogue, appel de procédure) peut être exécuté par un simple clic à partir du tutoriel dans lequel il apparaît. Il permet notamment de développer très facilement des systèmes de cours actifs complexes. | |
− | + | Le '''logiciel SQLfast''' est économe en ressources. Avec tous ses composants (y compris les bibliothèques graphiques, le SGBD, les guides et tutoriels, des bases de données de test, un jeu de scripts), il n'occupe guère plus de 30 Mo sur disque et tourne sans accroc sur des machines de faible puissance. Il est cependant évident que l'exécution de scripts complexes et l'exploitation intensive de grandes bases de données nécessitera des ressources plus importantes. | |
− | + | SQLfast est développé en Python, mais son utilisation ne nécessite pas la présence de l'environnement Python. Il inclut le SGBD ''SQLite3'' et la bibliothèque graphique standard ''Tkinter''. La version actuelle a été compilée pour les machines MS Windows 64 bits (de Vista à Win11). Elle fonctionne également sous Linux à l'aide de Wine (quelques ajustements relatifs aux ''paths'' par défaut et au codage des caractères peuvent s'avérer nécessaires). | |
+ | |||
+ | |||
+ | On trouvera plus de détails techniques dans la [https://bit.ly/3x0fj2i [page des outils ]] | ||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> | + | <big><b> 3. Installation et démarrage</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
− | + | Le ''package'' d'installation est une archive comprenant le logiciel SQLfast, un document décrivant son installation et deux petits manuels introductifs en français. | |
− | Le ''package'' d'installation | + | <!-- --> |
− | *'''SQLfast : le logiciel'''. | + | *'''SQLfast : le logiciel'''. L'archive contient un répertoire nommé (sans surprise !) ''SQLfast''. L'installation consiste à placer ce répertoire sur un support quelconque tel que le disque C ou D, simplement sur le bureau ou encore sur une clé USB. Dès que la copie est réalisée, SQLfast est prêt à fonctionner (exécuter ''SQLfast.exe''). Le logiciel comprend également sa propre documentation et une série de guides et tutoriels consacrés à l'utilisation de SQLfast, au langage SQL et à la programmation des bases de données. |
− | *'''SQLfast : Guide d'installation'''. Ce document fournit quelques conseils pour | + | <!-- --> |
− | *'''SQLfast : Premiers pas''' | + | *'''SQLfast : Guide d'installation'''. Ce document fournit quelques conseils pour l'installation du logiciel. |
+ | <!-- --> | ||
+ | *'''SQLfast : Premiers pas en SQLfast (niveau ''Basic'')''' et '''SQLfast : Premiers pas en SQLfast (niveau ''Expert'')'''. Ces documents aident l'utilisateur débutant à faire ses premiers pas en SQLfast''. | ||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> | + | <big><b> 4. Documentation sur SQLfast</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
− | + | Il existe deux sources principales de documentation concernant l'outil et les langages SQLfast : intégrée et externe : | |
− | Il existe deux sources principales de documentation concernant l'outil et | + | :*la documentation intégrée, accessible par la fonction d'aide du logiciel : '''bouton Help''' au niveau Basic et '''menu Help''' au niveau Expert. |
− | + | :*le manuel de SQLfast, sous forme d'un ouvrage au format ''pdf''. | |
− | : | + | |
− | :* | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Les documents d'aide de SQLfast sont disponibles en français et en anglais (du moins le seront-ils lorsque leur rédaction et leur traduction seront terminées). | + | *'''4.1 Bouton Help du logiciel SQLfast au niveau "Basic"'''. |
− | + | :Ce bouton ouvre un petit menu comportant, en plus de l'écran ''About SQLfast'', trois items. | |
+ | <!-- --> | ||
+ | :*'''Help > Getting started''' (''Premiers pas'' en français). Ce document décrit brièvement l'environnement offert par la fenêtre principale du logiciel SQLfast, ses fenêtres secondaires et leurs principales fonctions. Il introduit pas à pas l'utilisateur à la rédaction, l'exécution et la correction de requêtes SQL. Ce tutoriel a également été traduit en document pdf (voir section 1 ci-dessus; aussi inclus dans l'archive à télécharger). | ||
+ | <!-- --> | ||
+ | :*'''Help > SQLfast environment'''. Description détaillée de la fenêtre principale, de ses fenêtres secondaires et de leurs fonctions. | ||
+ | <!-- --> | ||
+ | :*'''Help > Tutorials'''. Portefeuille de tutoriels relatifs au langage SQL. Cette collection de documents est régulièrement étendue et mise à jour. Ces tutoriels dérivent du contenu de l'ouvrage ''Bases de données - Concepts, utilisation et développement, 5e édition, Dunod 2022''. Ces tutoriels sont constitués principalement d'exercices. Cependant, le chapitre introductif, ''Une brève introduction à SQL'', est recommandé aux débutants. | ||
+ | :Ces tutoriels sont ''actifs'' : les exemples de requêtes sont directement exécutables par un simple clic. | ||
+ | |||
+ | *'''4.2 Menu Help du logiciel SQLfast au niveau "Expert"'''. | ||
+ | :Ce bouton ouvre un menu comportant, en plus de l'écran ''About SQLfast'', quatre items. | ||
+ | <!-- --> | ||
+ | :*'''Help > Getting started''' (''Premiers pas'' en français). Ce document décrit brièvement l'environnement offert par la fenêtre principale du logiciel SQLfast, ses fenêtres secondaires et leurs principales fonctions. Il introduit pas à pas l'utilisateur à la création, à l'exécution, à la correction et au sauvetage d'un premier script. Ce tutoriel a également été traduit en document pdf (voir section 1 ci-dessus; aussi inclus dans l'archive à télécharger). | ||
+ | <!-- --> | ||
+ | :*'''Help > Survival guide''' (''Guide de survie'' en français). Collection d'une cinquantaine de modèles de scripts commentés permettant d'aborder en confiance la résolution de problèmes de toute nature, depuis la simple consultation d'une base de données jusqu'à la génération de code à partir des métadonnées d'une base de données. Ce document est également disponible au format pdf (voir section 1 ci-dessus). | ||
+ | <!-- --> | ||
+ | :*'''Help > SQLfast references'''. Documents de référence relatifs au logiciel et au langage SQLfast. | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast environment'''. Description détaillée de la fenêtre principale, de ses fenêtres secondaires et de leurs fonctions. | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast commands'''. Dictionnaire des principales instructions et paramètres du langage SQLfast, accompagnés d'une brève description et d'exemples. Ce document (en anglais) constitue une synthèse du document ''Dictionnaire des commandes et paramètres des langages SQLfast'' disponible sur le site de l'outil ([http://bit.ly/3uUvLPV '''SQLfast commands''']) | ||
+ | <!-- --> | ||
+ | ::*'''SQLtuto language'''. Description et exemples de ''SQLtuto'', le langage de rédaction de guides, de documents d'aide et de tutoriels. Ce langage permet à l'utilisateur de modifier les documents existants et de développer ses propres documents, notamment des tutoriels personnels. | ||
+ | <!-- --> | ||
+ | :*'''Help > Tutorials'''. Portefeuille de tutoriels actifs relatif au langage SQLfast. Cette collection de documents dérive de l'ouvrage ''Manuel de SQLfast'' (''Introduction to database programming''). | ||
+ | |||
+ | *'''4.3 Le manuel de SQLfast'''. Un manuel/tutoriel détaillé (en anglais), sous forme pdf, consacré à l'utilisation du langage et à la résolution de problèmes de nature variée est disponible en ligne [http://bit.ly/3Wm8IZT '''Ici''']. En outre, une série d'études de cas sont disponibles [https://bit.ly/3x0fj2i '''[ici]''']. | ||
+ | |||
+ | Les documents d'aide de SQLfast sont disponibles en français et en anglais (du moins le seront-ils lorsque leur rédaction et leur traduction seront terminées). | ||
+ | Les documents en français sont localisés dans le répertoire '''SQLfast/SQLfastHelp_FR'''. Les tutoriels intégrés sont localisés dans le sous-répertoire '''Lev0_Tutorials''' pour le mode ''Basic'' et '''Lev1_Tutorials''' pour le mode ''Expert'' au sein de ce répertoire. Ces documents peuvent être modifiés et complétés par l'utilisateur en fonction de ses besoins. | ||
− | |||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> | + | <big><b> 5. Le module SQLpy</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
+ | |||
+ | '''SQLpy''' est un module destiné à fournir aux '''programmeurs Python''' un moyen facile de développer rapidement de petites applications interactives et/ou orientées données tout en ignorant les arcanes des modules standard ''tkinter'' et ''sqlite3''. Il inclut une quarantaine des fonctions les plus puissantes du langage et de l'environnement SQLfast. SQLpy comprend trois parties : ''GUI'', ''Console'' et ''Base de données''. | ||
+ | |||
+ | *La partie '''GUI''' est une collection de fonctions de création de boîtes de dialogue composées des widgets les plus courants du module Python ''tkinter''. Elle comprend huit familles de boîtes : Infobox, Entrybox, Textbox, Picturebox, Listbox (deux variantes), Checkbox et Radiobox. La boîte Compositebox combine un nombre quelconque d'instances de ces types de base. Chaque boîte est créée par une seule invocation au module SQLpy équivalente à une centaine d'instructions Python/tkinter. | ||
+ | |||
+ | *La '''Console''' est une fenêtre persistante indépendante dans laquelle du texte peut être écrit (et lu) par le programme et par l'utilisateur. Elle est similaire à la console système Python, sauf qu'elle est entièrement contrôlée par le programme Python et par l'utilisateur. | ||
+ | |||
+ | *La partie '''Base de données''' fournit un accès simplifié aux ressources d'une base de données relationnelle (par exemple, pas de connexion, pas de curseurs). Outre les opérations élémentaires habituelles (CRUD), elle comprend quelques fonctions puissantes, telles que l'exportation du contenu d'une base de données, l'importation et l'analyse de données externes, le formatage du résultat des requêtes "select" (une collection extensible de 16 formats sont disponibles) et l'extraction de métadonnées. | ||
+ | |||
+ | La distribution comprend : | ||
+ | *le code source du module ''SQLpy.py'' | ||
+ | *son manuel utilisateur, largement illustré ('''SQLpy - User Manual.pdf''') | ||
+ | *un petit programme Python qui illustre l'utilisation des fonctions du module ('''SQLpy_Demonstrator.py''') | ||
+ | *comme illustration, une réécriture en ''Python/SQLpy'' de l'application développée dans l'étude cas '''Four hours to save the library'''. | ||
+ | |||
+ | La '''version 1.2''' de SQLpy comprend les extensions suivantes : | ||
+ | *l'installation préalable du module graphique PIL n'est plus nécessaire. En revanche, en cas d'absence, les types de fichiers sont réduits à ceux de ''tkinter'', soit ''gif'', ''pgm'' et ''ppm''. | ||
+ | *les boîtes composites (''CompositeBox'') peuvent désormais inclure plusieurs instances de ''SelectList2''. | ||
+ | |||
+ | Le module et sa documentation sont disponibles [https://bit.ly/3FVFI5P '''ici''']. | ||
+ | |||
+ | <br> | ||
+ | <br> | ||
+ | |||
+ | == ENGLISH VERSION == | ||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> | + | <big><b> 1. Fast track</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
+ | '''Download''' | ||
+ | |||
+ | :'''Warning''', in some configurations, the Microsoft ''Edge'' browser refuses to download ''zip'' files. In such case, use ''Firefox'' or ''Chrome'' instead. | ||
+ | |||
+ | ::* <font color="red">'''<i>NEW</i>'''</font> '''SQLfast 5.1''' (English documentation) [<i>last update 2023-06-04</i>] | ||
+ | :::[https://bit.ly/3BC97je '''SQLfast.zip'''] | ||
+ | <!-- --> | ||
+ | ::* <font color="red">'''<i>NEW</i>'''</font> '''SQLpy Python module v1.2''' [<i>last update 2022-12-16</i>] | ||
+ | :::[https://bit.ly/3FVFI5P '''SQLpy.zip'''] | ||
+ | <!-- --> | ||
+ | :*'''Manuals''' | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast installation guide''' (4 pages, English) [''<i>last update 2022-12-28</i>''] | ||
+ | :::[http://bit.ly/3Wrcl0Y '''SQLfast_Installation_EN.pdf'''] | ||
+ | <!-- --> | ||
+ | ::* <font color="red">'''<i>NEW</i>'''</font> '''SQLfast Manual: Database application programming''' (570 pages, English) [<font color="black">''<i>last update 2022-09-12</i>''] | ||
+ | :::[http://bit.ly/3Wm8IZT '''SQLfast-Manual.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''Dictionary of SQLfast commands''' (82 pages, English) [''<i>last update 2022-12-12</i>''] | ||
+ | :::[http://bit.ly/3uUvLPV '''SQLfast-Commands.pdf'''] | ||
+ | <!-- --> | ||
+ | :*'''Tutorials''' | ||
+ | <!-- --> | ||
+ | ::*'''Getting started with SQLfast - Basic Level''' (32 pages, English) [<font color="black">''<i>last update 2020-11-29</i>''</font>] | ||
+ | :::[http://bit.ly/3HNqGR4 '''Getting_started_BASIC_EN.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''Getting started with SQLfast - Expert Level''' (20 pages, English) [''<i>last update 2020-11-29</i>''] | ||
+ | :::[http://bit.ly/3HFwKLz '''Getting_started_EXPERT_EN.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast survival guide - Typical script models''' (60 pages, English) [''<i>last update 2022-11-20</i>''] | ||
+ | :::[http://bit.ly/3j953R4 '''Survival_guide_EN.pdf'''] | ||
+ | <!-- --> | ||
+ | ::* <font color="red">'''<i>NEW</i>'''</font> '''Case studies''' [''<i>last update 2023-06-04</i>''] | ||
+ | :::[https://bit.ly/3x0fj2i '''SQLfast Case Studies'''] | ||
+ | <!-- --> | ||
+ | :*'''Technical complements''' | ||
+ | <!-- --> | ||
+ | ::*'''Comparing SQLfast and Java / Python codes''' (9 pages, English) [''<i>last update 2017-11-08</i>''] | ||
+ | :::[http://bit.ly/3FCGGma '''Code_Comparison_EN.pdf'''] | ||
+ | <!-- --> | ||
+ | ::*''' Eleven temporal databases of various sizes''' (complement of case study ''Temporal databases - Part 2''. [''<i>last update 2019-08-01</i>''] | ||
+ | :::[https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/TDB-Large.zip '''TDB-Large.zip (93 Mo)'''] | ||
+ | |||
+ | '''SQLfast versions''' | ||
+ | *'''<font color="red">v5.1 (2023-06-04)</font>''' [[#SQLfast versions|description]] | ||
+ | *v5.0 (2022-12-12) [[#SQLfast versions|description]] | ||
+ | *v4.1 (2022-07-02) [[#SQLfast versions|description]] | ||
+ | *v4.0 (2020-12-04) [[#SQLfast versions|description]] | ||
+ | *v3.2 (2019-09-01) [[#SQLfast versions|description]] | ||
+ | *v3.1.1 (2019-05-22) [[#SQLfast versions|description]] | ||
+ | *v3.1 (2019-02-01) [[#SQLfast versions|description]] | ||
+ | *v3.0.1 (2018-12-04) [[#SQLfast versions|description]] | ||
+ | *v3.0 (2018-11-01) [[#SQLfast versions|description]] | ||
+ | *v2.1.3 (2018-03-02) [[#SQLfast versions|description]] | ||
+ | *v2.1.2 (2017-10-17) [[#SQLfast versions|description]] | ||
+ | *v2.1.1 (2017-10-06) [[#SQLfast versions|description]] | ||
+ | *v2.1 (2017-09-10) [[#SQLfast versions|description]] | ||
+ | *v2.0 (2017-04-01) [[#SQLfast versions|description]] | ||
+ | *v1.2.2 (2016-05-22) [[#SQLfast versions|description]] | ||
+ | *v1.2.1 (2016-05-09) [[#SQLfast versions|description]] | ||
+ | *v1.0.1 (2016-01-14) [[#SQLfast versions|description]] | ||
+ | *v1.0.0 (2015-12-18) [[#SQLfast versions|description]] | ||
+ | |||
+ | |||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
+ | <!-- -------------------------------- 2. What is SQLfast? ------------------------- --> | ||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
<table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
<font face="Helvetica" color=white> | <font face="Helvetica" color=white> | ||
− | <big><b> | + | <big><b> 2. What is SQLfast?</b></big> |
</font> | </font> | ||
</td></tr></table> | </td></tr></table> | ||
+ | '''SQLfast''' and '''SQLpy''' are the main technical outcomes of a didactic project intended to explore and demonstrate the power of database concepts, technologies and methods for general problem solving. These tools are currently being used to develop a series of (very) varied case studies designed to assess the power of these concepts ([https://bit.ly/3x0fj2i '''SQLfast Case Studies''']). | ||
− | + | The name SQLfast denotes, | |
+ | :*on the one hand, a '''programming language''' allowing the rapid and easy development of interactive, data-centered scripts, | ||
+ | :*and, on the other hand, a graphical, user-friendly '''software environment''' to develop, test and run SQL queries and, more generally, SQLfast scripts. | ||
+ | The language and its environment have been designed to encompass a wide range of usage scenarios, from database self-study by beginners to the development and exploitation of complex database applications such as library management and prototype generation. They target both novice and professional users. | ||
− | + | The core of the SQLfast language is '''SQL''', the universal language for database definition and manipulation. Any sequence of SQL statements is a valid SQLfast script, whatever its length. SQLfast also comprises statements that provide for graphical user interaction, text generation, file manipulation, bitmap and vector graphic images, decision, iteration, web access, metadata processing and much more. | |
− | + | The main design goal of the SQLfast language is '''simplicity'''. Just like its kernel, SQL, it exhibits a smooth learning curve: a simple problem can be solved by a simple script of 2-3 statements, the writing of which requires a few minutes of learning. The complexity of data interaction (DB, web, files, images, etc.) and that of GUI are fully hidden from the script writer. For instance, extracting and formatting data from the database requires '''about 40 Java/JDBC statements''' but only '''one SQLfast statement'''. A 3-field data entry dialogue box is built through '''more than 100 Python/Tkinter statements''' but requires '''one SQLfast statement''' only. In the same way, downloading a file from the web needs '''one SQLfast statement''', against '''more than 100 Python/urllib2 statements'''. | |
+ | [http://bit.ly/3FCGGma This document] compares the SQLfast code for these three examples with their equivalent standard code. | ||
+ | One of the distinctive features of SQLfast is its '''tutorial engine'''. A tutorial (or guide or help document) is a multimedia hypertext written in the ''SQLtuto'' language (think of it as a micro-HTML that can be learned in a few minutes). This document is ''active'', in that, any code fragment (SQL queries, SQLfast scripts, GUI, calling a procedure) can be executed from within the tutorial in which it appears. In particular, it allows the development of complex active course systems quite easily. | ||
+ | |||
+ | The SQLfast software is portable and its installation cannot be simpler: the folder ''SQLfast'' extracted from the ''.zip'' archive that contains its complete distribution, can be copied anywhere and is ready to run. In addition, SQLfast does not modify any system parameter. | ||
+ | |||
+ | To address the large range of usage it is intended for, SQLfast offers two interfaces: | ||
+ | |||
+ | *''Basic'': familiarisation with database concepts, direct graphical manipulation of data, learning SQL, analyzing data, query prototyping, solving small problems. | ||
+ | *''Expert'': learning database programming, developing and running small applications, solving more complex problems, developing and running complex (possibly standalone) applications. | ||
+ | |||
+ | The SQLfast software is both small (32 MB) and self-contained. Its standard distribution includes a graphical library, a RDBMS, a large, extendible, function library, sample databases, help files, tutorials and a large portfolio of example scripts, ranging from two-statement elementary scripts to one thousand statements interactive DB interface generator. | ||
+ | |||
+ | SQLfast has been developed in Python since 2012. The current distribution includes ''SQLite3'', which offers a rich version of SQL2/SQL3 (including recursive CTE and ''window'' function) and GUI library ''Tkinter''. The current version has been compiled for MS Windows 64 bits (from Vista to Win11). SQLfast runs smoothly on Linux under Wine (some parameters may need to be adapted, such as default ''paths'' and character coding). | ||
+ | |||
+ | For more technical detail, please consult the [https://bit.ly/3x0fj2i [tools page]] | ||
+ | |||
+ | |||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
+ | <!-- ------------------ 3. Installing SQLfast and Getting started ----------------- --> | ||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
+ | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
+ | <font face="Helvetica" color=white> | ||
+ | <big><b> 3. Installing SQLfast and Getting started</b></big> | ||
+ | </font> | ||
+ | </td></tr></table> | ||
+ | |||
+ | The distribution ''package'' is available as a 'zip' archive. It comprises the SQLfast software (including 80 guides and tutorials, sample databases and more than 300 scripts) and three small ''pdf'' documents: an ''Installation guide'' and the ''Getting started'' guides for the ''Basic'' and ''Expert'' levels. | ||
+ | |||
+ | *'''SQLfast software'''. This archive contains a folder named ''SQLfast''. The installation merely consists in extracting this folder and placing it anywhere in the computer. SQLfast is then ready to run: just double-clicking on ''SQLfast.exe'' file. The archive is available [https://bit.ly/3BC97je '''here''']. | ||
+ | *'''SQLfast installation guide'''. This (practically useless!) document provides some hints on how to prepare SQLfast for execution. It can also be found [http://bit.ly/3Wrcl0Y '''here''']. | ||
+ | *'''Getting started in SQLfast'''. How to start with SQLfast. It can also be found [http://bit.ly/3HNqGR4 '''here'''] for the ''Basic'' level and [http://bit.ly/3HFwKLz '''here'''] for the ''Expert'' level. | ||
+ | |||
+ | |||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
+ | <!-- ---------------------------- 4. SQLfast Documentation ------------------------ --> | ||
+ | <!-- -------------------------------------------------------------------------------- --> | ||
+ | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
+ | <font face="Helvetica" color=white> | ||
+ | <big><b> 4. SQLfast Documentation</b></big> | ||
+ | </font> | ||
+ | </td></tr></table> | ||
+ | |||
+ | There are two main sources of documentation describing the SQLfast software and languages: integrated and external. | ||
+ | :*the ''integrated documentation'' is accessed through button '''Help''' at the Basic level and through '''Help''' menu function at the '''Expert''' Level. | ||
+ | :*the ''external documentation'' comprises a series of ''pdf'' documents, the most useful of which are the ''SQLfast manual'' ('''SQL-Manual.pdf''') and the ''SQLfast command dictionary'' ('''SQLfast-Commands.pdf'''). | ||
+ | |||
+ | *'''4.1 Help button at the "Basic" Level'''. | ||
+ | :This button opens a short menu with three items, in addition to the ''Welcome'' screen ('''About SQLfast'''). | ||
+ | <!-- --> | ||
+ | :*'''Help > Getting started'''. This document describes the basic graphical environment and the main functions of SQLfast. Also available as a ''pdf'' document of the external documentation. | ||
+ | <!-- --> | ||
+ | :*'''Help > SQLfast environment'''. Detailed technical description of the windows of SQLfast and of their functions. Also available as a ''pdf'' document of the external documentation. | ||
+ | <!-- --> | ||
+ | :*'''Help > Tutorials'''. Portfolio of tutorials on the SQL language. Partly translated from the French reference book ''Bases de données - Concepts, utilisation et développement, 5th Edition, Dunod 2022''. These tutorials mainly comprise exercises. However, the introductory chapter, ''A short introduction to SQL'', is recommended for beginners. | ||
+ | :These tutorials are ''active'': the sample queries can be executed through a simple click. | ||
+ | |||
+ | *'''4.2 Help menu at the "Expert" Level'''. | ||
+ | :This button opens a menu with four items, in addition to the ''Welcome'' screen ('''About SQLfast'''). | ||
+ | <!-- --> | ||
+ | :*'''Help > Getting started'''. This document describes graphical environment and the main functions of SQLfast at the ''Expert'' level. It takes the user step-by-step through the creation, execution, correction and recording of their first. Also available as a ''pdf'' document of the external documentation.. | ||
+ | <!-- --> | ||
+ | :*'''Help > Survival guide'''. A collection of about fifty commented SQLfast programming models, from simple data querying to code generation based on metadata. Can be used, assembled and customized to develop real applications. Also available as a ''pdf'' document of the external documentation ([http://bit.ly/3j953R4 '''Survival_guide_EN.pdf''']) | ||
+ | <!-- --> | ||
+ | :*'''Help > SQLfast references'''. Portfolio of reference guides on the SQLfast software and languages. | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast environment'''. Detailed technical description of the windows of SQLfast and of their functions at the ''Expert'' Level. Also available as a ''pdf'' document of the external documentation. | ||
+ | <!-- --> | ||
+ | ::*'''SQLfast commands'''. Dictionary of the SQLfast statements, functions and parameters. This integrated document is a summary of the ''pdf'' document ''Dictionary of SQLfast commands and parameters'' ([http://bit.ly/3uUvLPV '''SQLfast commands''']) | ||
+ | <!-- --> | ||
+ | ::*'''SQLtuto language'''. Description of the tutorial description language. This language allows the users to modify and develop help documents, guides and tutorials for the SQLfast environment. | ||
+ | <!-- --> | ||
+ | :*'''Help > Tutorials'''. Portfolio of tutorials about SQL and the SQLfast language. These lessons are derived from the ''SQLfast Manual''. | ||
+ | |||
+ | *'''4.3 The SQLfast Manual'''. This pdf e-book is the complete manual and tutorial on the SQLfast language and on database programming. It is available [http://bit.ly/3Wm8IZT '''here''']. In addition, a series of case studies is available [https://bit.ly/3x0fj2i '''[here]''']. | ||
+ | |||
+ | Most integrated documents are available in ''English'' and in ''French''. The English documents are located in the directory '''SQLfast/SQLfastHelp_EN'''. The tutorials of the ''Basic'' and ''Expert'' levels are stored in subdirectories '''Lev0_Tutorials''' and '''Lev1_Tutorials''' respectively. The tutorials can be modified, deleted and added by the users. | ||
+ | |||
+ | |||
+ | <table><tr><td align=left valign=middle style="background-color:rgb(28,148,198);width:800px"> | ||
+ | <font face="Helvetica" color=white> | ||
+ | <big><b> 5. The SQLpy module</b></big> | ||
+ | </font> | ||
+ | </td></tr></table> | ||
+ | |||
+ | '''SQLpy''' is a module intended to provide '''Python programmers''' with a another way to rapidly and easily develop small interactive and data intensive applications while ignoring the intricacies of the ''tkinter'' and ''sqlite3'' standard modules. It includes about 40 of the most powerful functions of the '''SQLfast''' language and environment. SQLpy comprises three parts: ''GUI'', ''Console'' and ''Database''. | ||
+ | |||
+ | *The '''GUI''' part offers a collection of functions that create dialog boxes made up of the most common widgets of the ''tkinter'' Python module. It includes eight box families: Infobox, Entrybox, Textbox, Picturebox, Listbox (two variants), Checkbox and Radiobox. The Compositebox combines any number of instances of these basic types. Each box is created by a single Python statement (often equivalent to more than one hundred native Python/tkinter instructions). | ||
+ | |||
+ | *The '''Console''' is an independent window in which text can be written (and read) by the program and the user. It is somewhat similar to the Python system console except that it is entirely controlled by the Python program. | ||
+ | |||
+ | *The '''Database''' part provides a simplified access to the resources of a relational database (e.g., no connection, no cursors). Besides usual elementary operations (CRUD), it includes some powerful functions, such as exporting the content of a database, importing and analyzing external data, formatting the result set of "select" queries (an extendible collection of 16 formats, from tabular to LaTex, are available) and extracting metadata. | ||
+ | |||
+ | The distribution includes | ||
+ | *the code of the SQLpy module ('''SQLpy.py''') | ||
+ | *its user manual ('''SQLpy - User Manual.pdf''') | ||
+ | *a small Python program that illustrates the use of the SQLpy functions ('''SQLpy_Demonstrator.py''') | ||
+ | *as an illustration, a rewriting in ''Python/SQLpy'' of the SQLfast application associated with the case study ''Four days to save the library'' ('''Project_1_-_The_Library_(SQL).py'''). | ||
+ | |||
+ | The last version of SQLpy ('''SQLpy v1.2''') comprises the following extensions: | ||
+ | *the installation of the PIL module is no longer required (but then, handles only the limited bitmap formats of ''tkinter'': ''gif'', ''pgm'' and''ppm'') | ||
+ | *allows ''CompositeBox'' to include multiple instances of ''SelectList2'' elementary boxes (only one in version 1.1) | ||
+ | |||
+ | The module and its documentation are available [https://bit.ly/3FVFI5P '''here'''] | ||
+ | |||
+ | <br> | ||
+ | <br> | ||
+ | |||
+ | == SQLfast versions == | ||
+ | |||
+ | |||
+ | <!-- | ||
+ | --> | ||
+ | |||
+ | |||
+ | *'''v5.1 (2023-06-04)''' | ||
+ | |||
+ | :*''Case studies'' | ||
+ | ::*'''Classifying objects''': tutorial and applications of the FCA techniques (Formal Concept Analysis). | ||
+ | |||
+ | |||
+ | *'''v5.0 (2022-12-12)''' | ||
+ | |||
+ | :*''SQLfast functions for Python programmers'' | ||
+ | ::*'''SQLpy''' is a Python module that provides the Python programmer with nearly 40 of the most important SQLfast functions (including 12 high level GUI dialog boxes, 7 console management procedures and 17 database operations). | ||
+ | |||
+ | :*''SQLfast utilities'' | ||
+ | ::*UTIL-SELECT-parameters-standard-3: new, more eye-catching output format for select queries (same as UTIL-SELECT-parameters-standard-1 with continuous lines). | ||
+ | |||
+ | :*''SQLfast system'' | ||
+ | ::*the code of the GUI engine has been rewritten (now similar to that of ''SQLpy'') | ||
+ | |||
+ | :*''SQLfast functions (UDF)'' | ||
+ | ::*New ''optimistic'' execution mode for list processing UDF functions. The default coding mode of UDF functions is ''defensive'', the user being considering highly ''unreliable''. Their execution is (hopefully) secure but may be slow. With the ''optimistic'' coding, (almost) no arguments are validated nor converted. The execution of function is less secure but much faster (2 to 10 times). The execution mode is specified by system variable '''itemSpeed''': 0 = secure, 1 = fast. | ||
+ | ::*New UDF function '''translate''': transforms a character string through a '''character''' conversion dictionary (implementation of the SQL standard function, missing in SQLite). | ||
+ | ::*New UDF function '''itemTranslate''': extension of the '''translate''' function; transforms a character string through a '''substring''' conversion dictionary. | ||
+ | ::*New UDF function '''num2uni(N)''': given integer N, returns the unicode character of code-point N.. | ||
+ | |||
+ | :*''Guides and Help documents'' | ||
+ | ::The color rendering can be very different depending on the screen settings. It can now be customized by two new system variables: | ||
+ | ::*'''colorHelp''': document background color (default ''grey96'') | ||
+ | ::*'''colorHelpScript''': embedded script background color (default ''light yellow'') | ||
+ | |||
+ | :*''SQLfast GUI'' | ||
+ | ::*two new dialog boxes: '''selectList''' (multiselection in a single list box) and '''selectList2''' (same as selectList but with dual list boxes) | ||
+ | ::*'''askData''': the width of the entry fields is customizable for each box instance individually through local parameter '''/x''' | ||
+ | ::*'''showMessage''' (aka '''pause'''): the text style now is fully customizable thanks to three new '''infoFont''', '''infoWeight''' and '''infoWrap''' system variables | ||
+ | ::*'''showPicture''': can now handle a wider variety of image formats (like ''gif'', ''jpg'', ''tiff'', etc.) | ||
+ | ::*'''showDrawing''': the ''Print'' function stores the ''*ps'' files in the ''Files'' directory | ||
+ | ::*'''askData''' and '''selectList''', the constant separator symbol is customizable via the '''constSeparator''' system variable (useful when the constants include the separator) | ||
+ | ::*'''askCombo''' (composite boxes): in addition to layout operators '''|''' and '''||''', a new operator ('''|||''') removes the constraints of the former versions | ||
+ | |||
+ | :*''Show schema'' | ||
+ | ::*display of the ''Summary'' and ''Full schema'' of ''in-memory'' databases | ||
+ | ::*automatic generation of the DDL code of ''in-memory'' databases | ||
+ | |||
+ | :*''New active tutorials'' | ||
+ | ::*New tutorial on '''SQL Data Analytics''' (60 pages, more than 60 executable SQL examples). This tutorial derives from the new Chapter 10 of the reference book. Available in two versions, French and English. | ||
+ | ::*In the ''Basic interface'', English version: six new SQL tutorials (Cyclic structures, Data modification, Complements, SQL views, Recursive queries, OLAP). | ||
+ | |||
+ | <!--:*''Case studies'' | ||
+ | ::*'''Classifying objects''': tutorial and application of FCA (Formal Concept Analysis). | ||
+ | ::*'''Pandemy''': tutorial on agent-base modeling. Application to pandemy evolution. | ||
+ | :*''Import-Export function'' | ||
+ | ::*The execution of statement '''import''' on '''csv''' source files generates a lot of diagnosis messages on the output channel. It can be silenced through system variable '''csv-mute''' (0 = default, 1 = mute) | ||
+ | ::*New import format: ''filename.txt''. | ||
+ | --> | ||
+ | :*''and more ...'' | ||
+ | |||
+ | |||
+ | *'''v4.1 (2022-07-02)''' | ||
+ | :*''Tutorials'' | ||
+ | ::*New tutorial on Data Analytics (60 pages, more than 60 executable SQL examples) in two versions, French and English. This tutorial derives from the new Chapter 10 of the reference book. | ||
+ | ::*Nouveau tutoriel sur l'Analyse de données (60 pages, plus de 60 exemples SQL exécutables) en deux versions, française et anglaise. Ce tutoriel est basé sur le nouveau chapitre 10 de l'ouvrage de référence. | ||
+ | :*''System'' | ||
+ | ::*Last stable version of SQLite (v3.38.5) | ||
+ | |||
+ | |||
+ | *'''v4.0 (2020-12-05)''' | ||
+ | :*''The distribution'' | ||
+ | ::Available in two versions (''SQLfast-xx-EN.zip'' and ''SQLfast-xx-FR.zip''), depending on the default language of the documentation: | ||
+ | ::Disponible en deux versions (''SQLfast-xx-EN.zip'' et ''SQLfast-xx-FR.zip''), selon la langue par défaut de la documentation: | ||
+ | :::*English, when downloaded from the English section of this page, | ||
+ | :::*Française, si téléchargée à partir de la section française de cette page. | ||
+ | ::''Note'': these versions are identical except for the value of parameter '''helpDirectory''' in initialization file ''SQLfast.ini''. | ||
+ | :*''Case studies'' | ||
+ | ::*'''Active Databases''': tutorial and application (92 pages). Includes an experiment on ''program-less'' business application architecture and a discussion on trigger validation. | ||
+ | ::*'''Four hours to save the library''': this Case study has been translated into two executable tutorials, one as a narrative presentation of the case study and the other one devoted to the user of the application. Other case studies may be translated this way in the future. | ||
+ | |||
+ | :*''SQLfast Manual''. Two new chapters | ||
+ | ::*'''Chapter 23 - Aid to SQLfast script development''' (24 pages). Includes a discussion on how to generate execution traces and how to exploit them. | ||
+ | ::*'''Chapter 26 - Developing a tutorial''' (34 pages). Includes an in-depth description of ''embedded scripts''. | ||
+ | |||
+ | :*''SQLfast language'' | ||
+ | ::*New SQL object ''generated columns'' (columns the value of which is computed from other column values of the same row). | ||
+ | ::*New statement '''trace on/off''', to start/disable tracing | ||
+ | ::*New function '''webLib:disableCertficate''' to disable certificate verification | ||
+ | ::*New output format for ''select'' result sets, ''UTIL-SELECT-parameters-for-headers.sql'', to generate the column names only | ||
+ | |||
+ | :*''Show_Data subsystem'' | ||
+ | ::*Data windows now independent of (i.e., do not block any longer) the Main and Output windows. | ||
+ | ::*Insertion of a series of rows with selected value propagation. | ||
+ | ::*Data modification also allowed in Expert mode (algorithms rewritten to minimize access conflicts). | ||
+ | |||
+ | :*''SQLfast GUI'' | ||
+ | ::*Improved GUI in Main window, Show_Data, Show_Schema (notably, Entry and Message fields are resizable) | ||
+ | ::*Parameter '''charSize''' now effective (character size in Main and Output windows, useful for high definition screens) | ||
+ | ::*New item '''Help > Case studies''' to accommodate new case studies tutorials. | ||
+ | ::*Menu '''Script''' restructured: items redundant with buttons removed, new item '''Tracing'''. | ||
+ | |||
+ | :*''Dialog boxes'' | ||
+ | ::*Customized widget colors now allowed. | ||
+ | ::*Data fields, text fields and composite boxes now resizable | ||
+ | ::*Readability problems fixed in ''check'' and ''radio'' buttons against dark background (overwhelming another Tkinter idiosyncrasy!). | ||
+ | |||
+ | :*''Help/tutorial'' | ||
+ | ::*The tutorials of the ''Basic'' level now include a short introduction to SQL (both in English and in French) | ||
+ | ::*Insertion of ''jpeg/jpg'' images allowed in addition to the ''gif'' format. | ||
+ | ::*Size of large images can be controlled through '''tutoImageMaxSize''' system variable. | ||
+ | ::*New SQLtuto concept: ''embedded script''. | ||
+ | :::*An ''embedded script'' is an SQLfast procedure integrated to a tutorial document. Several attributes are associated with this script: ''Id'', ''name'', ''execute button'', ''legend''. All of these components can be hidden. An embedded script can call other scripts of the same document. This concept blurs the frontier between executable code and its documentation. It allows the creation of a tutorial that includes the code it describes. Many tutorials have been rewritten based on this feature. | ||
+ | :::* ''embedded scripts'' are controlled by four SQLtuto commands: <kbd>.script:</kbd>, <kbd>.endscript:</kbd>, <kbd>.loadscripts:</kbd>, <kbd>.scriptMaxHeight:</kbd> | ||
+ | :::*All the tutorials of the distribution have been rewritten to include embedded scripts. | ||
+ | |||
+ | :*''SQLfast functions (UDF)'' | ||
+ | ::*'''durationSeconds''': computes the interval between two timestamps, down to the millisecond. | ||
+ | ::*'''printMessage''': from an SQL query (notably within a trigger body), writes a text in the output window. | ||
+ | ::*'''writeFile''': from an SQL query (notably within a trigger body), creates a file and writes a text in it. | ||
+ | ::*'''writeTrace''': from an SQL query (notably within a trigger body), inserts the trace of the execution of an SQLfast statement in tracing database ''TRACING.db''. | ||
+ | ::*'''head''': returns the first word of a sentence. | ||
+ | ::*'''tail''': returns a sentence, minus its head. | ||
+ | |||
+ | :*''SQLfast system'' | ||
+ | ::*Tracing subsystem: stores in a tracing database (''TRACING.db'') the complete data on SQLfast statement execution. Includes the statements executed by triggers (through UDF function ''writeTrace''). | ||
+ | ::*Includes SQLite v3.33 (64 bits) | ||
+ | ::*Several instances of SQLfast are allowed to simultaneously run on the same database. | ||
+ | ::*New, much faster, implementation of ''SQL-for'' loops. Linear time instead of quadratic. | ||
+ | ::*New system variables: | ||
+ | :::*'''traceActive, traceSQL, traceAppend, loaderDebug''': control the tracing subsystem | ||
+ | :::*'''tutoImageMaxSize''': sets the maximum size of bitmap images in tutorials | ||
+ | :::*widget colors setting: ''colorMainFrame'', ''colorInfoBox'', ''colorGeneralMessage'', ''colorBoxFrame'', ''colorBoxMessage'', ''colorEntry'', ''colorEntryField'', ''colorEntryDisplay'', ''colorTextUpdate'', ''colorTextDisplay'', ''colorCheck'', ''colorRadi''o, ''colorButton''. | ||
+ | |||
+ | :*''bugs fixed'' | ||
+ | |||
+ | <!-- | ||
+ | :*''Case studies (Text and full applications)'' | ||
+ | ::*'''Blockchains''': tutorial (28 pages), application (11 modules) | ||
+ | ::*'''Temporal databases''': Part 1 and 2 (124 pages), application (27 modules) | ||
+ | |||
+ | :*''Main window menu'' | ||
+ | ::*new operation: ''General/Play SQLdraw'' (display an SQLdraw script) | ||
+ | |||
+ | :*''SQLfast language'' | ||
+ | ::*New system variables: '''clock''', '''dateclock''', '''DBMSversion''' | ||
+ | ::*'''print''' statement modified: now always writes in the output window, whatever the current output channel | ||
+ | ::*'''showDrawing''': new functions in the graphical interface: ''Pause'', ''Resume'', ''Next-step'' | ||
+ | ::*'''showPicture''': now displays ''gif'' and ''jpeg'' file | ||
+ | |||
+ | :*''SQLfast functions (UDF)'' | ||
+ | ::*'''durationDays''': number of days between two dates or timestamps | ||
+ | ::*'''toverlap''': check whether temporal closed-open intervals overlap | ||
+ | |||
+ | :*''System'' | ||
+ | ::*new library '''LTemp''': temporal engine implementing main operators for temporal databases processing (projection, reduction, outer join, aggregation, valued stable intervals, normalization, etc.) | ||
+ | ::*vector-graphics engine '''drawLib''': | ||
+ | :::*new command '''display''' <text>: displays a text in the message field of the interface | ||
+ | :::*new command '''delete''' <shape-name>: delete an arbitrary shape | ||
+ | :::*new command '''step''': defines a shape sequences | ||
+ | :::*commands '''rectangle''' and '''circle''' implemented | ||
+ | :::*engine rewritten: now displays about 20,000 large solid rectangles per second | ||
+ | ::*new system variables | ||
+ | :::*'''clock''': time in day in format 'hh:m:ss' | ||
+ | :::*'''dateclock''': date + time in format 'yyy-mm-dd hh:m:ss' | ||
+ | |||
+ | :*''Bug fixed in'': UDF setDCol, random_i(v1,v2), DBF import, CreateDB InMemory in Level 0, SQL update of dynamic columns, menu item General/Save as (no more crash for some non-Unicode text file), showText (now displays full first line), showPicture (no more crashes for very long file path), decoding dynaColumn parameter | ||
+ | --> | ||
+ | |||
+ | |||
+ | *'''v3.2 (2019-09-01)''' | ||
+ | :*''Case studies (Text and full applications)'' | ||
+ | ::*'''Blockchains''': tutorial (28 pages), application (11 modules) | ||
+ | ::*'''Temporal databases''': Parts 1 and 2 (124 pages), application (27 modules) | ||
+ | |||
+ | :*''Main window menu'' | ||
+ | ::*new operation: '''General > Play SQLdraw''' (display an SQLdraw script) | ||
+ | |||
+ | :*''SQLfast language'' | ||
+ | ::*New system variables: '''clock''', '''dateclock''', '''DBMSversion''' | ||
+ | ::*'''print''' statement modified: now always writes in the output window, whatever the current output channel | ||
+ | ::*'''showDrawing''': new functions in the graphical interface: ''Pause'', ''Resume'', ''Next-step'' | ||
+ | ::*'''showPicture''': now displays ''gif'' and ''jpeg'' file | ||
+ | |||
+ | :*''SQLfast functions (UDF)'' | ||
+ | ::*'''durationDays''': number of days between two dates or timestamps | ||
+ | ::*'''toverlap''': check whether temporal closed-open intervals overlap | ||
+ | |||
+ | :*''System'' | ||
+ | ::*new library '''LTemp''': temporal engine implementing main operators for temporal databases processing (projection, reduction, outer join, aggregation, valued stable intervals, normalization, etc.) | ||
+ | ::*vector-graphics engine '''drawLib''': | ||
+ | :::*new command '''display''' <text>: displays a text in the message field of the interface | ||
+ | :::*new command '''delete''' <shape-name>: delete an arbitrary shape | ||
+ | :::*new command '''step''': defines a shape sequences | ||
+ | :::*commands '''rectangle''' and '''circle''' implemented | ||
+ | :::*engine rewritten: now displays about 20,000 large solid rectangles per second | ||
+ | ::*new system variables | ||
+ | :::*'''clock''': time in day in format 'hh:m:ss' | ||
+ | :::*'''dateclock''': date + time in format 'yyy-mm-dd hh:m:ss' | ||
+ | |||
+ | :*''Bug fixed in'': UDF setDCol, random_i(v1,v2), DBF import, CreateDB InMemory in Level 0, SQL update of dynamic columns, menu item General/Save as (no more crash for some non-Unicode text file), showText (now displays full first line), showPicture (no more crashes for very long file path), decoding dynaColumn parameter | ||
+ | |||
+ | |||
+ | *'''v3.1.1 (2019-05-22)''' | ||
+ | :*''System'': | ||
+ | ::*bug fixed in '''drop view''' execution (incorrect processing of view metadata). | ||
+ | ::*bug fixed in '''import''' from '''dbf''' files (last field incorrectly decoded if variable-length numeric). | ||
+ | ::*bug fixed in '''createDB InMemory''' in ''Basic'' level. | ||
+ | |||
+ | |||
+ | *'''v3.1 (2019-01-31)''' | ||
+ | :*''Language'': | ||
+ | ::*Multidatabase scripts: secondary databases can be attached to the main database. | ||
+ | :::format: <kbd>generic attach 'D:/SQLfast/Databases/CLICOM.db' as CLI;</kbd> | ||
+ | :::usage: <kbd>select * from CLI.DETAIL;</kbd> | ||
+ | ::*New temporal system variables: clock (hh:mm:ss), dateclock (YYYY-MM-DD hh:mm:ss) | ||
+ | :*''Data dictionary'': | ||
+ | ::*''System tables'': three new system tables: SYS_CHECK (''check'' constraints), SYS_TRIGGER (the properties of triggers) and SYS_TRIGGER_COMP (the SQL statements of the body of triggers). | ||
+ | ::*''New properties'': key and constraint names, autoincrement columns. | ||
+ | :*''Generating the SQL-DDL schema'' | ||
+ | ::*''Expert level menu'': new menu item to force the rebuilding of the ''full schema'' of the current database. | ||
+ | ::*''Generation process'': now generates check constraints, views, triggers, key and constraint names. | ||
+ | :*''Case study and documentation'': new case study on Blockchains. | ||
+ | ::*''Documentation'': Principles of Blockchains and description of an experimental Blockchain toolkit (in English). Text: []. | ||
+ | ::*''Scripts'': The code of the toolkit is available in ''SQLfast/Scripts/Case-Studies/Case_BlockChain'' of the standard distribution. | ||
+ | :*''System'': upgraded to SQLite v.3.25.03. (includes, a.o., '''window''' function and an '''upsert''' variant of the '''insert''' query) | ||
+ | |||
+ | |||
+ | *'''v3.0.1 (2018-12-04)''' | ||
+ | :*''Cryptography'': cryptographic functions have been added to the LStr library: secure hashing (hash, miningHash), symmetric cryptography (generateSYMkey, encryptSYM, decryptSYM), asymmetric cryptography (generateRSAkeys, encryptRSA, decryptRSA); document ''SQLfast-commands.pdf'' updated. | ||
+ | :*''Blockchain application'' | ||
+ | ::*''Scripts'': a didactic '''Blockchain toolkit''' has been added in directory ''Scripts/BD-2018/Chapitre-10/Blockchain''. Dialogues in French. An English version is ongoing as an ''SQLfast Case Study''. | ||
+ | :*''Documentation'': the documentation of the Blockchain toolkit has been added to Appendix 10 of the reference book ([http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2018/Chapitres/Chapitre-10/JLH-A10-BD-non-relationnelles.pdf ''Chapitre 10, Annexe'']). In French. An English version is ongoing as an ''SQLfast Case Study''. | ||
+ | |||
+ | |||
+ | *'''v3.0 (2018-11-01)''' | ||
+ | :*''SQL extension'': | ||
+ | ::*''List processing'': complete module, including (multi-)set operators and predicates, joins (joining two lists) and list-based loop (<kbd>for e = [items A;B;C;D];</kbd>). This feature simplifies complex queries based on set-algebra and speed up their execution. | ||
+ | ::*''Dynamic columns'': the basis of NoSQL databases. An undeclared column is created as soon as it receives a value (through insert or update). For instance, the following sequence is valid: <kbd>create table T(A int, B int); insert into T(A,B,C) values (1,2,3); update T set D = 4 where E is null; select A,B,C,E,F from T;</kbd>. Metadata functions return the list of non null dynamic columns of a row or of a table. | ||
+ | :*''SQLfast functionalities'': | ||
+ | ::*''import statement'': CSV import is more robust: now copes with values including ''end-of-lines'' and with record comprising a variable number of fields. | ||
+ | ::*''Basic level'': in-memory databases can now be created. | ||
+ | :*''GUI'': | ||
+ | ::*''composite dialogue boxes'': now stretchable; their resizing is propagated to their elementary boxes. | ||
+ | ::*result sets of select queries and Show Data windows now correctly display text values including ''end-of-lines''. | ||
+ | :*''Show Schema'': | ||
+ | ::*''Summary schema'': now shows ''not null'' constraints. | ||
+ | ::*''Full schema'': when missing, the SQL-DDL code is automatically rebuilt. | ||
+ | :*''Documentation'': | ||
+ | ::*''Survival guide'': available in English (both *.help and *.pdf version) | ||
+ | ::*''Survival guide'': extended to list processing and dynamic columns | ||
+ | ::*''SQLfast manual (formerly SQLfast Tutorial)'': new Chapter 24 - ''Transient data: the SQLfast lists'' | ||
+ | ::*''SQLfast manual'': new Chapter 25 - ''Schema-less tables and dynamic columns'' | ||
+ | ::*''SQLfast manual'': Appendix - A basket of examples: new applications added (''Simulation of all (multi-)set operators'', ''Computing the powerset of a set'', ''The relational division'', ''Computing set inclusion relation'', etc.) | ||
+ | :*''System'': | ||
+ | ::*several bugs fixed and minor improvements. | ||
+ | |||
+ | |||
+ | *'''v2.1.3 (2018-03-02)''' | ||
+ | :*''UDF functions (for SQLfast and SQL)'': | ||
+ | ::*''list processing'': set-like operators ("itemUnion", "itemExcept", "itemInter") similar to SQL set operators "union", "except" and "intersect". Multiset-like operators ("itemUnionAll", "itemExceptAll", "itemInterAll") similar to SQL multiset operators "union all", "except all" and "intersect all". | ||
+ | ::*''list processing'': set-like predicates ("itemEqual", "itemInclude"). Multiset-like predicates ("itemEqualAll", "itemIncludeAll"). | ||
+ | :*''GUI'': | ||
+ | ::*''Error box more readable'': stretchable and in "courier' font | ||
+ | ::*''Stretchable dialogue boxes'': all the elementary boxes (showMessage, askData, askText, selectOne, selectMany, showData, showText, showPicture, showDrawing) now are stretchable. | ||
+ | <!--::*''Stretchable dialogue boxes'': composite boxes now are stretchable; their resizing is propagated to their elementary boxes.--> | ||
+ | :*''language'': | ||
+ | ::*"print" can be used instead of "write"; Christmas gift for Python programmers! | ||
+ | :*''system'': | ||
+ | ::*Some bugs fixed | ||
+ | |||
+ | |||
+ | *'''v2.1.2 (2017-10-17)''' | ||
+ | :*''UDF functions (for SQLfast and SQL)'': | ||
+ | ::*''Clarification of UDF architecture. "UserUDFlib_for_SQL.py" is the module in which new UDF to be used in SQL queries must be written by users. Similarly, new UDF for SQLfast statements ("if", "while", "compute") must now be written in module "UserUDFlib_for_SQLfast.py". The source and compiled versions of these modules are integrated to the distribution. NOTE: Chapters 10 and 22 of the tutorial are not updated yet. | ||
+ | |||
+ | |||
+ | *'''v2.1.1 (2017-10-06)''' | ||
+ | :*''New UDF functions (for SQLfast and SQL)'': | ||
+ | ::*''list processing'': itemSlice (extracting sublist) + itemSliceS; itemDelete (remove elements) + itemDeleteS; item and itemSlice now allow backward positions; itemSort, itemNSort,itemSortS and itemNSortS receive a new parameter to remove duplicates | ||
+ | :*''system'': | ||
+ | ::*Some minor bugs fixed | ||
+ | :*''Case studies'': | ||
+ | ::*New case study ''Interactive SQL interpreters'' available. Its scripts have been included in the distribution. | ||
+ | |||
+ | |||
+ | *'''v2.1 (2017-09-10)''' | ||
+ | :*''New UDF functions (for SQLfast and SQL)'': | ||
+ | ::*''list processing'': itemSort (sorting items), itemNSort (numeric sorting of items) + itemSortS, itemNSortS | ||
+ | :*''New external functions'': | ||
+ | ::*''pretty printing of select queries'': LStr:PrettyPrint | ||
+ | :*''SQLfast language'': | ||
+ | ::*''execApp'': arguments are passed by reference instead of by value (avoid "newline" problems) | ||
+ | ::*''exceptions in UDF'': specific exception messages now transmitted in clear | ||
+ | :*''GUI'': | ||
+ | ::*''data and text dialogue boxes'': now stretchable (except in askCombo) | ||
+ | ::*''background color in predefined values'': the ugly gray color is back! Now fixed. | ||
+ | :*''system'': | ||
+ | ::*New architecture of UDF functions. Built-in and user libraries are now distinct. | ||
+ | ::*Several bugs fixed | ||
+ | :*''Case studies'': | ||
+ | ::*The text of nine case studies have been rewritten and extended. Their scripts have been redeveloped and integrated in the distribution (new directory <i>SQLfast/Scripts/Case-Studies</i>). They are available as complete, standalone, applications, ready to run. | ||
+ | |||
+ | |||
+ | *'''v2.0 (2017-04-01)''' | ||
+ | :*''New functions (for SQLfast and SQL)'': | ||
+ | ::*''date/time processing'': normDate, datePattern, julianDate | ||
+ | ::*''types'': isDate, isNotDate, isInteger, isNotInteger, utf8Compliant, latinCompliant, hexCompliant, base64Compliant | ||
+ | ::*''string analysis and reduction'': startsWith, endsWith, countInst, deaccent, reduce, simplify, shrink | ||
+ | ::*''format'': thousandSep | ||
+ | ::*''path/url processing'': urlExists, normalizePath, lastPathNode, pathPrefix, nodeExtension, pureNodeName | ||
+ | ::*''structured text analysis'': ExtractTaggedString, NextSection | ||
+ | ::*''list processing'': itemLen, item, itemIndex | ||
+ | ::*''secure hashing (based on SHA256)'': hash (string digest), hashFile (file digest) | ||
+ | ::*''group_concat2'': full ''group_concat'' aggregate function, equivalent to MySQL version. For SQL only. | ||
+ | :*''New SQLfast statements:'': | ||
+ | ::*''web interaction'': webfileToFile, webpageToVariable | ||
+ | ::*''multi-variable assignment'': set | ||
+ | ::*''csv and dbf data exchange'': import | ||
+ | ::*''secure hashing'': hashFile (file digest), from small to very large files | ||
+ | :*''New SMTP functions'': | ||
+ | ::*''SQLfast'': openSMTPserver, sendMessage, closeSMTPserver, sendMessageImmediate | ||
+ | ::*''SQL'': sendMail | ||
+ | :*''New coding statements and functions'': | ||
+ | ::*''hash signature'': hash, hashFile | ||
+ | ::*''encode/decode'': b64encode, b64decode, b64encode<source>To<target>, b64decod<source>To<target>, char2hex, hex2char, HEXencode<source>To<target>, HEXdecode<source>To<target> | ||
+ | ::*''cryptography'': encrypt, decrypt | ||
+ | :*''Data windows'': improved readability through new background, update/delete through double-click, showing temporary tables and views, coping with binary data | ||
+ | :*''Miscellaneous'': | ||
+ | ::*Displaying binary data in result sets. | ||
+ | ::*GUI: name of standard buttons can be customized | ||
+ | ::*"About" box, more information and links, startup settings. | ||
+ | ::*Welcome screen = "About" box. | ||
+ | :*''system'': upgraded to Python 2.7.12 and SQLite 3.17. | ||
+ | |||
+ | |||
+ | *'''v1.2.2 (2016-05-22)''' | ||
+ | :*''system'': Bug fixed: the system path (where SQLfast directory is located) may now include non-ASCII characters. | ||
+ | |||
+ | |||
+ | *'''v1.2.1 (2016-05-09)''' | ||
+ | :*''Data windows'': Data windows in '''Show data''' receive a new button: '''Select'''. Allows row filtering. Four filter building modes are provided (smart, strict, SQL condition, SQL predicate). | ||
+ | :*''Data windows'': New sorting criterion: ''natural'' (= ''unsorted''). | ||
+ | :*''Schema window'': In addition to the standard '''Summary''' format, a new '''Full schema''' option is provided. It also shows data types and all integrity constraints. If missing, the Full schema can be regenerated through script '''SQL-DDL-generation.sql'''. | ||
+ | :*''SQLfast language'': New statements '''displayHelp''' and '''closeHelp'''. Allow help documents to be displayed/closed dynamically from within a script. | ||
+ | :*''SQLfast language'': Concise version of '''ask''', '''askData''', '''ask-u''', '''askData-u''', '''showData'''. We can now write: '''ask A,B,C''' instead of '''ask A,B,C = A|B|C'''; | ||
+ | :*''SQLfast language'': New SQL and SQLfast UDF functions: to provide ''approximate'' comparison ('''simplify''', '''shrink'''); to manipulate paths and urls ('''normalizePath''', '''lastPathNode''', '''pathPrefix''', '''nodeExtension''', '''pureNodeName'''); to align a string in a fixed frame ('''frame''') | ||
+ | :*''SQLfast language'': Web processing is now allowed through statements '''webpageToVariable''' (download the HTML code of a page) and '''webfileToFile''' (download a file). New '''LStr''' functions '''NextSection''' and '''ExtractTaggedString''' can be used to extract data from HTML code. | ||
+ | :*''SQLfast language'': New time processing functions: '''julianday''' or '''jd''' (convert a date-time value into julian day code), '''addToDate''' (add/subtract days to a date), '''nextDate''' (next date), '''prevDate''' (previous date). | ||
+ | :*''GUI'': All secondary windows (Help, Schema, Data) are now persistent and independent of Main and Output windows. | ||
+ | :*''GUI'': Menu function and button '''Save''' have been split into '''Save''' and '''Save as'''. | ||
+ | :*''GUI'': Useless buttons are now disabled (e.g., '''Show schema''' disabled when no database is opened). | ||
+ | :*''system'': Various bugs fixed. | ||
+ | |||
+ | |||
+ | *'''v1.0.1 (2016-01-14)''' | ||
+ | :*''Data windows'': Fixing horizontal synchronization of title and data text areas in wide data windows. | ||
+ | :*''Data windows'': Geometry parameters of data windows can now be set in '''SQLfast.ini''' and modified in user scripts: '''maxTableNbr''' (initial maximum number of tables opened), '''maxRowNbr''' (maximum number of rows extracted per table), '''WmaxRowWidth''' (max width of data area), '''WmaxRowNbr''' (max height of data area). | ||
+ | :*''SQLfast language'': SQLite detects DDL errors involving more than one table in DML queries only. Foreign key errors are now coped with in statement '''createDictionary'''. | ||
+ | |||
+ | |||
+ | *'''v1.0.0 (2015-12-18)''' | ||
+ | :*First public release. | ||
+ | |||
+ | |||
+ | |||
+ | <!-- | ||
+ | <big>Comparing DB access code</big> | ||
<table> | <table> | ||
<tr> | <tr> | ||
− | <td width=" | + | <td width="35%"> |
<b>SQLfast</b> | <b>SQLfast</b> | ||
</td> | </td> | ||
− | <td> | + | <td width="65%"> |
<b>Java/JDBC</b> | <b>Java/JDBC</b> | ||
</td> | </td> | ||
− | + | </tr> | |
<tr> | <tr> | ||
<td valign=top> | <td valign=top> | ||
− | <tt><b>openDB</b> | + | <tt><b>openDB</b> CLICOM.db;<br> |
− | < | + | <font color=blue><b>select</b> NCLI,NOM <b>from</b> CLIENT;</font></tt> |
</td> | </td> | ||
<td valign=top> | <td valign=top> | ||
Ligne 120 : | Ligne 805 : | ||
String user ="myLogin";<br> | String user ="myLogin";<br> | ||
String pw="myPassword";<br> | String pw="myPassword";<br> | ||
− | String querySelect = "select | + | String querySelect = "select NCLI,NOM from CLIENT"<br> |
String CiD;<br> | String CiD;<br> | ||
String Cnam;<br> | String Cnam;<br> | ||
Ligne 127 : | Ligne 812 : | ||
Statement stmt = conn.createStatement ();<br> | Statement stmt = conn.createStatement ();<br> | ||
ResultSet rs1 = stmt.executeQuery (query1);<br> | ResultSet rs1 = stmt.executeQuery (query1);<br> | ||
− | System.out.println(" | + | System.out.println("NCLI, NOM");<br> |
while (rs.next()) {<br> | while (rs.next()) {<br> | ||
− | + | CiD = rs.getString("CustID");<br> | |
− | + | Cnam = rs.getString("Name");<br> | |
− | + | System.out.println(CiD + ", " + Cnam);<br> | |
− | + | }<br> | |
rs.close();<br> | rs.close();<br> | ||
stmt.close();<br> | stmt.close();<br> | ||
conn.close();</tt> | conn.close();</tt> | ||
</td> | </td> | ||
− | (</tr> | + | </tr> |
+ | <tr valign=top> | ||
+ | <td valign=top> | ||
+ | +------+-----------+ | ||
+ | | NCLI | NOM | | ||
+ | +------+-----------+ | ||
+ | | B112 | HANSENNE | | ||
+ | | C123 | MERCIER | | ||
+ | | B332 | MONTI | | ||
+ | | F010 | TOUSSAINT | | ||
+ | | K111 | VANBIST | | ||
+ | | S127 | VANDERKA | | ||
+ | | B512 | GILLET | | ||
+ | | B062 | GOFFIN | | ||
+ | | C400 | FERARD | | ||
+ | | C003 | AVRON | | ||
+ | | K729 | NEUMAN | | ||
+ | | F011 | PONCELET | | ||
+ | | L422 | FRANCK | | ||
+ | | S712 | GUILLAUME | | ||
+ | | D063 | MERCIER | | ||
+ | | F400 | JACOB | | ||
+ | +------+-----------+ | ||
+ | </td valign=top> | ||
+ | <td> | ||
+ | NCLI, NOM | ||
+ | B112,MERCIER | ||
+ | B332,MONTI | ||
+ | F010,TOUSSAINT | ||
+ | K111,VANBIST | ||
+ | S127,VANDERKA | ||
+ | B512,GILLET | ||
+ | B062,GOFFIN | ||
+ | C400,FERARD | ||
+ | C003,AVRON | ||
+ | K729,NEUMAN | ||
+ | F011,PONCELET | ||
+ | L422,FRANCK| | ||
+ | S712,GUILLAUME | ||
+ | D063,MERCIER | ||
+ | F400,JACOB | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
+ | |||
+ | <big>Comparing GUI code</big> | ||
+ | |||
+ | |||
+ | <img src="http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/SQLfast/ThreeFieldBox.jpg"> | ||
+ | |||
+ | |||
+ | [[Image:src="http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/SQLfast/ThreeFieldBox.jpg]] | ||
+ | |||
+ | <table> | ||
+ | <tr> | ||
+ | <td width="45%"> | ||
+ | <b>SQLfast</b> | ||
+ | </td> | ||
+ | <td> | ||
+ | <b>Python/Tkinter</b> | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td valign=top> | ||
+ | <tt> | ||
+ | <b>set</b> oid = 30186;<br> | ||
+ | <b>set</b> pid = PA60;<br> | ||
+ | <b>set</b> q = 75;<br> | ||
+ | <font color=blue><b>ask-u</b> oid,pid,q = [/bSaisie données DETAIL]<br> | ||
+ | {COMMANDE}|IdCom:[!<b>select</b> NCOM <b>from</b> COMMANDE]<br> | ||
+ | ||{PRODUIT}|IdPro:|Quantité:[(1,2,5,10,20,50)];</font><br> | ||
+ | </tt> | ||
+ | </td> | ||
+ | <td valign=top> | ||
+ | <tt> | ||
+ | <b>from</b> Tkinter <b>import</b> *<br> | ||
+ | <b>import</b> ttk<br> | ||
+ | <b>import</b> sqlite3<br> | ||
+ | <br> | ||
+ | <b>def</b> setComboBoxColors():<br> | ||
+ | styl = ttk.Style()<br> | ||
+ | styl.map("TCombobox",fieldbackground = <br> | ||
+ | [('!readonly','!focus','white'),<br> | ||
+ | ('readonly', '!focus','white')] )<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>class</b> EntryBox():<br> | ||
+ | <br> | ||
+ | <b>def</b> __init__(self,parent,title):<br> | ||
+ | self.Parent = parent<br> | ||
+ | self.Parent.title(title)<br> | ||
+ | self.mainFr = Frame(parent,relief=FLAT,bd=1)<br> | ||
+ | self.initial_focus = self.body()<br> | ||
+ | self.mainFr.pack(padx=5,pady=5)<br> | ||
+ | self.buttonbox()<br> | ||
+ | self.Parent.protocol("WM_DELETE_WINDOW",self.cancel)<br> | ||
+ | self.Parent.mainloop()<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>def</b> body(self):<br> | ||
+ | M1 = Message(self.mainFr,text=Comment,<br> | ||
+ | font=('Helvetica',9,'bold'),anchor=W,<br> | ||
+ | justify=LEFT,relief=SUNKEN,bd=1,<br> | ||
+ | width=300)<br> | ||
+ | M1.grid(row=0,column=0,columnspan=4,padx=2,<br> | ||
+ | pady=2,ipadx=1,ipady=1,sticky=N+W+E)<br> | ||
+ | M2 = Message(self.mainFr,text="COMMANDE",font=("Helvetica",9,<br> | ||
+ | "bold"),anchor=W, justify=LEFT,<br> | ||
+ | bd=1,width=300)<br> | ||
+ | M2.grid(row=1,column=0,columnspan=2,pady=1,padx=3,sticky=W)<br> | ||
+ | Label(self.mainFr,text="IdCom:").grid(row=2,column=0,sticky=E)<br> | ||
+ | self.fr0v1 = StringVar()<br> | ||
+ | self.fr0e1 = ttk.Combobox(self.mainFr,width=15,<br> | ||
+ | height=20,state='readonly',<br> | ||
+ | textvariable=self.fr0v1)<br> | ||
+ | self.fr0e1.grid(row=2,column=1,<br> | ||
+ | pady=1,padx=3,sticky=W+E)<br> | ||
+ | self.fr0e1["values"] = vList1<br> | ||
+ | M3 = Message(self.mainFr,text="PRODUIT",<br> | ||
+ | font=("Helvetica",9,"bold"),anchor=W,<br> | ||
+ | justify=LEFT,bd=1,width=300)<br> | ||
+ | M3.grid(row=1,column=2,columnspan=2,pady=1,padx=3,sticky=W)<br> | ||
+ | Label(self.mainFr,text="IdPro:").grid(row=2,column=2,sticky=E)<br> | ||
+ | self.fr0e2 = Entry(self.mainFr,relief=SUNKEN,width=22)<br> | ||
+ | self.fr0e2.grid(row=2,column=3,<br> | ||
+ | pady=3,padx=3,sticky=W+E)<br> | ||
+ | Label(self.mainFr,text="Quantité:").grid(row=3,column=2,sticky=E)<br> | ||
+ | self.fr0v3 = StringVar()<br> | ||
+ | self.fr0e3 = ttk.Combobox(self.mainFr,width=15,<br> | ||
+ | height=20,textvariable=self.fr0v3)<br> | ||
+ | self.fr0e3.grid(row=3,column=3,<br> | ||
+ | pady=1,padx=3,sticky=W+E)<br> | ||
+ | self.fr0e3["values"] = vList2<br> | ||
+ | self.fr0v1.set(oid)<br> | ||
+ | self.fr0e2.insert(0,pid)<br> | ||
+ | self.fr0v3.set(q)<br> | ||
+ | self.Parent.bind("<Return>", self.ok)<br> | ||
+ | self.Parent.bind("<Escape>", self.cancel)<br> | ||
+ | setComboBoxColors()<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>def</b> buttonbox(self):<br> | ||
+ | buttonFr = Frame(self.Parent)<br> | ||
+ | Ok = Button(buttonFr,text="OK",relief=RAISED,<br> | ||
+ | overrelief=SUNKEN,width=10,command=self.ok)<br> | ||
+ | Ok.pack(side=LEFT, padx=5, pady=5)<br> | ||
+ | Can = Button(buttonFr,text="Cancel",relief=RAISED,<br> | ||
+ | overrelief=SUNKEN,width=10,command=self.cancel)<br> | ||
+ | Can.pack(side=LEFT,padx=5,pady=5)<br> | ||
+ | buttonFr.pack()<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>def</b> apply(self):<br> | ||
+ | ndx1 = self.fr0e1.current()<br> | ||
+ | if ndx1 > -1:<br> | ||
+ | actVal = vList1[ndx1]<br> | ||
+ | else:<br> | ||
+ | actVal = ""<br> | ||
+ | self.result.append(actVal)<br> | ||
+ | self.result.append(self.fr0e2.get())<br> | ||
+ | ndx3 = self.fr0e3.current()<br> | ||
+ | if ndx3 > -1:<br> | ||
+ | actVal = vList2[ndx3]<br> | ||
+ | else:<br> | ||
+ | actVal = self.fr0v3.get()<br> | ||
+ | self.result.append(actVal)<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>def</b> ok(self,event=None):<br> | ||
+ | self.result = ["OK"]<br> | ||
+ | self.apply()<br> | ||
+ | self.Parent.destroy()<br> | ||
+ | self.Parent.quit()<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <b>def</b> cancel(self,event=None):<br> | ||
+ | self.result = ["Cancel"]<br> | ||
+ | self.Parent.destroy()<br> | ||
+ | self.Parent.quit()<br> | ||
+ | return<br> | ||
+ | <br> | ||
+ | <br> | ||
+ | conn = sqlite3.connect('CLICOM.db')<br> | ||
+ | c = conn.cursor()<br> | ||
+ | c.execute('select NCOM from COMMANDE order by NCOM')<br> | ||
+ | vList1 = []<br> | ||
+ | for row in c:<br> | ||
+ | vList1.append(row[0])<br> | ||
+ | c.close()<br> | ||
+ | root = Tk()<br> | ||
+ | root.withdraw()<br> | ||
+ | Comment = 'Saisie données DETAIL'<br> | ||
+ | vList2 = [1,2,5,10,20,50]<br> | ||
+ | BoxTitle = "[ User data entry ]"<br> | ||
+ | oid = "30186"<br> | ||
+ | pid = "PA60"<br> | ||
+ | q = 75<br> | ||
+ | d = EntryBox(root,BoxTitle)<br> | ||
+ | DIALOGbutton = d.result[0]<br> | ||
+ | if DIALOGbutton == 'OK':<br> | ||
+ | oid = d.result[1]<br> | ||
+ | pid = d.result[2]<br> | ||
+ | q = int(d.result[3])<br> | ||
+ | print DIALOGbutton,oid,pid,q<br> | ||
+ | c.close()<br> | ||
+ | conn.close()<br> | ||
+ | </tt> | ||
+ | </td> | ||
+ | </tr> | ||
</table> | </table> | ||
+ | --> |
1. Je suis pressé ! |
Téléchargements
Versions de SQLfast
2. Qu'est-ce que SQLfast ? |
SQLfast et SQLpy sont les principaux résultats techniques d'un projet didactique destiné à explorer et démontrer la puissance des concepts, des technologies et des méthodes relatives aux bases de données pour la résolution d'une grande variété de problèmes. Dans ce cadre, ces outils sont actuellement utilisés pour développer une série d'études de cas de natures variées destinées à évaluer la puissance de ces concepts (SQLfast Case Studies).
Le nom SQLfast désigne,
Langage et logiciel SQLfast ont été conçus pour couvrir une large gamme de scénarios d'utilisation, depuis l'apprentissage (autonome ou supervisé) des bases de données et du langage SQL jusqu'au développement et à l'exploitation d'applications interactives complexes. Ils ciblent à la fois les utilisateurs débutants et professionnels.
Le langage SQLfast est une extension de SQL. Ses instructions comprennent, d'une part, les commandes SQL et d'autre part, des instructions d'échange de données avec l'utilisateur (boîtes de dialogue), des variables, des instructions de contrôle (if, for, while, procédures), des métadonnées ainsi que de riches bibliothèques de fonctions et d'interaction avec l'environnement. Un script peut être constitué d'une seule requête SQL mais des scripts complexes, tels que des gestionnaires de bibliothèques ou des générateurs de prototypes, peuvent comporter plusieurs milliers d'instructions.
Le langage SQLfast a été conçu dans un objectif de simplicité d'utilisation. A l'instar de son noyau, SQL, il offre une courbe d'apprentissage linéaire : un problème simple sera résolu en quelques lignes, dont la rédaction ne nécessite que quelques minutes d'apprentissage. Les arcanes des interactions avec les données (BD, fichiers, images) ainsi que ceux des dialogues avec l'utilisateur sont entièrement cachés car gérés par le moteur SQLfast. La consultation des données d'une table nécessite 1 instruction en SQLfast (select * from CLIENT) mais près de 40 instructions en Java/JDBC. De même, une boîte de saisie de données constituée de trois champs est définie en 1 instruction SQLfast et exige plus de 100 instructions Python/Tkinter. Ou encore, le téléchargement d'un fichier est obtenu par 1 instruction SQLfast mais par près de 100 instructions Python/urllib2. Un document (Code_Comparison_FR.pdf) compare le code SQLfast avec le code standard dans ces trois cas de figure.
SQLfast est un logiciel dit portable, qui ne nécessite pas d'installation à proprement parler et qui ne modifie pas les paramètres du système sur lequel il fonctionne. Il peut notamment être installé, avec une collection de bases de données et de scripts, sur une clé USB transportable d'une machine à l'autre.
Le l'environnement logiciel SQLfast offre une interface graphique conviviale permettant aux utilisateurs novices d'apprendre et d'expérimenter le développement de requêtes SQL et plus généralement de scripts SQLfast. Il dispose d'une fonction d'aide programmable permettant la rédaction et l'intégration au logiciel de tutoriels personnalisés. Son interface se décline en deux variantes :
Une des particularités de SQLfast est son moteur de tutoriels. Un tutoriel (ou guide ou document d'aide) est un hypertexte multimédia écrit dans le langage SQLtuto (sorte de micro-HTML maîtrisable en quelques minutes). Ce document est actif, c'est-à-dire que tout fragment de code (requête SQL, script SQLfast, dialogue, appel de procédure) peut être exécuté par un simple clic à partir du tutoriel dans lequel il apparaît. Il permet notamment de développer très facilement des systèmes de cours actifs complexes.
Le logiciel SQLfast est économe en ressources. Avec tous ses composants (y compris les bibliothèques graphiques, le SGBD, les guides et tutoriels, des bases de données de test, un jeu de scripts), il n'occupe guère plus de 30 Mo sur disque et tourne sans accroc sur des machines de faible puissance. Il est cependant évident que l'exécution de scripts complexes et l'exploitation intensive de grandes bases de données nécessitera des ressources plus importantes.
SQLfast est développé en Python, mais son utilisation ne nécessite pas la présence de l'environnement Python. Il inclut le SGBD SQLite3 et la bibliothèque graphique standard Tkinter. La version actuelle a été compilée pour les machines MS Windows 64 bits (de Vista à Win11). Elle fonctionne également sous Linux à l'aide de Wine (quelques ajustements relatifs aux paths par défaut et au codage des caractères peuvent s'avérer nécessaires).
On trouvera plus de détails techniques dans la [page des outils ]
3. Installation et démarrage |
Le package d'installation est une archive comprenant le logiciel SQLfast, un document décrivant son installation et deux petits manuels introductifs en français.
4. Documentation sur SQLfast |
Il existe deux sources principales de documentation concernant l'outil et les langages SQLfast : intégrée et externe :
Les documents d'aide de SQLfast sont disponibles en français et en anglais (du moins le seront-ils lorsque leur rédaction et leur traduction seront terminées). Les documents en français sont localisés dans le répertoire SQLfast/SQLfastHelp_FR. Les tutoriels intégrés sont localisés dans le sous-répertoire Lev0_Tutorials pour le mode Basic et Lev1_Tutorials pour le mode Expert au sein de ce répertoire. Ces documents peuvent être modifiés et complétés par l'utilisateur en fonction de ses besoins.
5. Le module SQLpy |
SQLpy est un module destiné à fournir aux programmeurs Python un moyen facile de développer rapidement de petites applications interactives et/ou orientées données tout en ignorant les arcanes des modules standard tkinter et sqlite3. Il inclut une quarantaine des fonctions les plus puissantes du langage et de l'environnement SQLfast. SQLpy comprend trois parties : GUI, Console et Base de données.
La distribution comprend :
La version 1.2 de SQLpy comprend les extensions suivantes :
Le module et sa documentation sont disponibles ici.
1. Fast track |
Download
SQLfast versions
2. What is SQLfast? |
SQLfast and SQLpy are the main technical outcomes of a didactic project intended to explore and demonstrate the power of database concepts, technologies and methods for general problem solving. These tools are currently being used to develop a series of (very) varied case studies designed to assess the power of these concepts (SQLfast Case Studies).
The name SQLfast denotes,
The language and its environment have been designed to encompass a wide range of usage scenarios, from database self-study by beginners to the development and exploitation of complex database applications such as library management and prototype generation. They target both novice and professional users.
The core of the SQLfast language is SQL, the universal language for database definition and manipulation. Any sequence of SQL statements is a valid SQLfast script, whatever its length. SQLfast also comprises statements that provide for graphical user interaction, text generation, file manipulation, bitmap and vector graphic images, decision, iteration, web access, metadata processing and much more.
The main design goal of the SQLfast language is simplicity. Just like its kernel, SQL, it exhibits a smooth learning curve: a simple problem can be solved by a simple script of 2-3 statements, the writing of which requires a few minutes of learning. The complexity of data interaction (DB, web, files, images, etc.) and that of GUI are fully hidden from the script writer. For instance, extracting and formatting data from the database requires about 40 Java/JDBC statements but only one SQLfast statement. A 3-field data entry dialogue box is built through more than 100 Python/Tkinter statements but requires one SQLfast statement only. In the same way, downloading a file from the web needs one SQLfast statement, against more than 100 Python/urllib2 statements. This document compares the SQLfast code for these three examples with their equivalent standard code.
One of the distinctive features of SQLfast is its tutorial engine. A tutorial (or guide or help document) is a multimedia hypertext written in the SQLtuto language (think of it as a micro-HTML that can be learned in a few minutes). This document is active, in that, any code fragment (SQL queries, SQLfast scripts, GUI, calling a procedure) can be executed from within the tutorial in which it appears. In particular, it allows the development of complex active course systems quite easily.
The SQLfast software is portable and its installation cannot be simpler: the folder SQLfast extracted from the .zip archive that contains its complete distribution, can be copied anywhere and is ready to run. In addition, SQLfast does not modify any system parameter.
To address the large range of usage it is intended for, SQLfast offers two interfaces:
The SQLfast software is both small (32 MB) and self-contained. Its standard distribution includes a graphical library, a RDBMS, a large, extendible, function library, sample databases, help files, tutorials and a large portfolio of example scripts, ranging from two-statement elementary scripts to one thousand statements interactive DB interface generator.
SQLfast has been developed in Python since 2012. The current distribution includes SQLite3, which offers a rich version of SQL2/SQL3 (including recursive CTE and window function) and GUI library Tkinter. The current version has been compiled for MS Windows 64 bits (from Vista to Win11). SQLfast runs smoothly on Linux under Wine (some parameters may need to be adapted, such as default paths and character coding).
For more technical detail, please consult the [tools page]
3. Installing SQLfast and Getting started |
The distribution package is available as a 'zip' archive. It comprises the SQLfast software (including 80 guides and tutorials, sample databases and more than 300 scripts) and three small pdf documents: an Installation guide and the Getting started guides for the Basic and Expert levels.
4. SQLfast Documentation |
There are two main sources of documentation describing the SQLfast software and languages: integrated and external.
Most integrated documents are available in English and in French. The English documents are located in the directory SQLfast/SQLfastHelp_EN. The tutorials of the Basic and Expert levels are stored in subdirectories Lev0_Tutorials and Lev1_Tutorials respectively. The tutorials can be modified, deleted and added by the users.
5. The SQLpy module |
SQLpy is a module intended to provide Python programmers with a another way to rapidly and easily develop small interactive and data intensive applications while ignoring the intricacies of the tkinter and sqlite3 standard modules. It includes about 40 of the most powerful functions of the SQLfast language and environment. SQLpy comprises three parts: GUI, Console and Database.
The distribution includes
The last version of SQLpy (SQLpy v1.2) comprises the following extensions:
The module and its documentation are available here