Database-SQL-RDBMS HOW-TO pour Linux
Al Dev (Alavoor Vasudevan)
[email protected]
v13.0,23 Octobre 1999, (version fran�aise 28 Octobre 1999)
Ce document est un "guide pratique" pour la mise en place rapide d'un
moteur de Base de Donn�es SQL et des outils frontaux sur un syst�me
Unix. Il traite �galement du langage standard International ANSI/ISO
SQL et passe en revue les m�rites/avantages d'un moteur de Base de
Donn�es d�velopp� dans le cadre mondial de l'environnement de
d�veloppement ouvert d'internet. Ce document explique COMMENT mettre
en place une Base de Donn�es Relationnelle SQL Objet de la nouvelle
g�n�ration "PostgreSQL" sur votre syst�me unix qui pourra �tre
utilis�e comme Base de Donn�es Serveur d'Application ou Serveur Web.
PostgreSQL impl�mente un sous-ensemble des normes Internationales ISO
et ANSI SQL 1998,92,89. Ce document donne aussi des informations sur
les programmes d'interface � la base de donn�es tels que interfaces
utilisateur graphiques (GUI), outils RAD (D�veloppement Rapide
d'Application ), interfa�age des langages de programmation ("C",
"C++", Java, Perl), pilotes ODBC, JDBC ainsi que sur les outils et
programmes interfa�age d'une Base de Donn�es Web . L'information
donn�e ici est valable pour toutes autres plates-formes unix et autres
Bases de Donn�es. Cette information sera tr�s utile aux nouveaux util�
isateurs des Bases de Donn�es, de PostgreSQL et du langage SQL. Ce
document comporte aussi un didacticiel SQL et les sp�cifications de la
syntaxe SQL qui devrait �tre tr�s utile aux d�butants. Les gens
exp�riment�s trouveront dans ce document un guide de r�f�rence tr�s
pratique. Pour les �tudiants, l'information donn�e ici leur permettra
d'obtenir le code source du Syst�me de Gestion de Base de Donn�es
Relationnel (SGBDR) PostgreSQL � partir duquel ils pourront �tudier
comment un moteur de SGBDR SQL est �crit.
______________________________________________________________________
Table des mati�res
1. Introduction
2. Autres Formats de ce Document
3. Les lois de la Physique s'appliquent au logiciel !
4. Qu'est-ce que PostgreSQL ?
5. O� le trouver?
6. PostgreSQL � grands pas
6.1 Installation et tests
6.2 Maximum RPM
6.3 Test de PyGreSQL - Interface Python
6.4 Test de Perl - Interface Perl
6.5 Test des interfaces libpq, libpq++
6.6 Test des interfaces Java
6.7 Test des interfaces ecpg
6.8 Test des exemples SQL - Types and fonctions d�finis par l'utilisateur
6.9 Test des interfaces Tcl/Tk
6.10 Test des interfaces ODBC
6.11 Test des interfaces de la feuille de travail Motif MPSQL
6.12 V�rification
7. PostgreSQL Supporte des Base de Donn�es extr�mement grandes > 200 Gigas
8. PostgreSQL est-il fiable?
9. Outil GUI frontal pour PostgreSQL (Interface Utilisateur Graphique)
10. Pilotes d'interface pour PostgreSQL
10.1 ODBC Pilotes pour PostgreSQL
10.2 Pilotes UDBC pour PostgreSQL
10.3 Pilotes JDBC pour PostgreSQL
10.4 Java pour PostgreSQL
11. Pilote d'interface de SGBD Perl (Database Interface DBI) pour PostgreSQL
11.1 interface Perl 5 pour PostgreSQL
11.2 DBI Interface de Base de Donn�es Perl
11.2.1 Qu'est-ce que DBI ?
11.2.2 Pilote DBI pour PostgreSQL DBD-Pg-0.89
11.2.3 Support technique sur DBI
11.2.4 Qu'est-ce que c'est que DBI, DBperl, Oraperl and *perl?
11.2.5 Sp�cifications DBI
11.2.6 Probl�mes de compilation ou "Il �choue aux tests"
11.2.7 DBI est-il support� sur les plates-formes Windows 95 / NT ?
11.2.8 Qu'est-ce que DBM? Et pourquoi dois-je utiliser DBI � sa place?
11.2.9 Est-ce que < ins�rez une fonctionnalit� ici > est support� par DBI?
11.2.10 Est-ce que DBI est d'une quelconque utilit� pour la programmation CGI?
11.2.11 Comment puis-je obtenir un temps de connexion plus rapide avec DBD::Oracle et CGI CGI?
11.2.12 Comment puis-je obtenir une connexion persistante avec DBI et CGI?
11.2.13 "Quand je lance un script perl de la ligne de commande, �a marche, mais, quand je le lance sous httpd, �a �choue!" Pourquoi?
11.2.14 Puis-je faire de l'ex�cution en parall�le avec DBI?
11.2.15 Comment puis-je invoquer des proc�dures enregistr�es avec DBI?
11.2.16 Comment puis-je r�cup�rer les valeurs de retour de proc�dures enregistr�es avec DBI?
11.2.17 Comment puis-je cr�er ou supprimer une base de donn�es avec DBI?
11.2.18 Comment les valeurs NULL sont-elles prises en compte par DBI?
11.2.19 Qu'est-ce que c'est que ces histoires de m�thodes func?
11.2.20 Assistance et formation payante
12. Outils de Gestion PostgreSQL
12.1 PGACCESS - Un GUI pour la gestion de PostgreSQL
12.2 Outil Windows interactif de g�n�ration de requ�te pour PostgreSQL
12.3 Outil interactif de g�n�ration de requ�te pour PostgreSQL - ISQL
12.4 MPMGR - Un outil de gestion de Base de Donn�es pour PostgresSQL
13. Mise en place de plusieurs machines PostgreSQL avec un seul moniteur
14. Outils et Applications pour PostgreSQL
14.1 PostgreSQL 4GL pour les applications de bases de donn�es web - Le syst�me de d�veloppement AppGEN
14.2 WWW Web interface pour PostgresSQL - DBENGINE
15. Module Apache Webserver pour PostgreSQL - NeoSoft NeoWebScript
15.1 HEITML, extension, c�t� serveur de HTML et langage 4GL pour PostgreSQL
15.2 Serveur Web America On-line AOL pour PostgreSQL
15.3 Outil Syst�me de suivi de Probl�me/Projet pour PostgreSQL
15.4 Conversion de fichiers dbase dbf en fichiers PostgreSQL
16. Outil de Conception/Impl�mentation pour SGBD Web pour PostgreSQL - EARPW
16.1 EARP, c'est quoi ?
16.2 Implantation
16.3 Ce dont vous avez besoin pour faire fonctionner EARP
16.4 Comment fonctionne-t-il?
16.5 O� puis-je le trouver?
17. PHP Pr�-processeur Hypertexte - Langage de script c�t� serveur, avec HTML int�gr�, pour PostgreSQL
17.1 Fonctionnalit�s principales
17.2 Cr�dits
17.3 PHP 3 - Bref Historique
17.4 Bon, que puis-je faire avec PHP/FI?
17.5 Un simple exemple
17.6 Redirection CGI
17.6.1 Notes Apache 1.0.x
17.6.2 HTTPD Netscape
17.6.3 HTTPD NCSA
17.7 Lancer PHP/FI � partir de la ligne de commande
18. Interface Python pour PostgreSQL
18.1 O� le trouver PyGres ?
18.2 Information et support
19. Passerelle entre PostgreSQL et WWW - WDB-P95
19.1 Le serveur PostgresSQL, pgperl, et httpd doivent-ils r�sider sur le m�me h�te?
20. Interfaces au langage "C", "C++", ESQL/C et Op�rateurs sur les bits pour PostgreSQL
20.1 Interface "C"
20.2 "C++" interface
20.3 ESQL/C
20.4 Op�rateurs sur les bits pour PostgreSQL
21. Les Codes Kanji Japonais pour PostgreSQL
22. Portage de PostgreSQL pour Windows 95/Windows NT
23. Mailing Lists
23.1 Obtenir un compte e-mail Gratuit
23.2 Liste de Diffusion Anglaise
23.3 Archive des listes de diffusion
23.4 Liste de Diffusion Espagnole
24. Livres et Documentations
24.1 Guides utilisateur et Manuels
24.2 Documentation en ligne
24.3 Documents de R�f�rence: Ouvrages de r�f�rence utiles :
24.4 Documents de Sp�cifications ANSI/ISO SQL - SQL 1992, SQL 1998
24.5 Syntaxe de l'ANSI/ISO SQL 1992
24.6 Syntaxe de l'ANSI/ISO SQL 1998
24.7 Didacticiel SQL pour les d�butants
24.8 Extension Temporelle � SQL92
24.9 Partie 0 - Acquisition des Documents ISO/ANSI SQL
24.10 Partie 1 - Etat Actuel de l'ISO/ANSI SQL
24.11 Partie 2 - Fondements ISO/ANSI SQL
24.12 Partie 3 - Interface d'Appel SQL ISO/ANSI
24.13 Partie 4 - Modules M�moris�s Persistants ISO/ANSI SQL
24.14 Partie 5 - ISO/ANSI SQL/Liens
24.15 Partie 6 - Interface de Sp�cialisation (SQL/XA) ISO/ANSI SQL XA)
24.16 Partie 7 - ISO/ANSI SQL Temporel
24.16.1 INTRODUCTION
24.16.2 �TUDE DE CAS - ENREGISTREMENT DE L'INFORMATION COURANTE
24.16.3 �TUDE DE CAS - ENREGISTREMENT DE L'INFORMATION HISTORIQUE
24.16.4 �TUDE DE CAS - PROJECTION
24.16.5 �TUDE DE CAS - JOINTURE
24.16.6 �TUDE DE CAS - AGR�GATS
24.16.7 R�SUM�
24.17 Partie 8 - SQL MULTIMEDIA ISO/ANSI (SQL/MM)
25. Support Technique pour PostgreSQL
26. Aspects �conomiques et Commerciaux
27. Liste des autre Bases de Donn�es
28. Indications pour la recherche sur le World Wide Web Internet
29. Conclusion
30. FAQ - Questions sur PostgreSQL
31. Notice de Copyright
32. Appendice A - Syntaxe de l' ANSI/ISO SQL 1992
33. Appendice B - Tutoriel SQL � l'usage des d�butants
33.1 Didacticiel pour PostgreSQL
33.2 Pointeurs URL Internet
34. Appendix C - Instructions pour une installation rapide de Linux
______________________________________________________________________
11.. IInnttrroodduuccttiioonn
Le but de ce document est de fournir une liste de pointeurs/URL
d�taill�e de fa�on � mettre rapidement en oeuvre PostgreSQL et de
mettre en avant l'int�r�t des syst�mes � Code Source Ouvert tel que
PostgreSQL, Linux.
Tout syst�me informatique au monde a besoin d'une base de donn�es pour
stocker/retrouver les informations. La premi�re raison pour laquelle
on utilise un ordinateur est de stocker, retrouver et traiter
l'information et de faire cela tr�s rapidement, et donc, de faire
�conomiser du temps. En m�me temps, le syst�me doit �tre simple,
robuste, rapide, fiable, �conomique et d'utilisation ais�e. La Base
de Donn�es constitue une PPAARRTTIIEE VVIITTAALLEE DDUU SSYYSSTT��MMEE des plus importantes
car elle contient les donn�es indispensables de toute compagnie au
monde. Les syst�mes de gestion de base de donn�es les plus courants
sont bas�s sur les sp�cifications ISO (International Standard
Organisation) SQL lesquelles sont �galement bas�es sur les normes
am�ricaines ANSI SQL. Les sp�cifications les plus courantes
g�n�ralement utilis�es sont l'ISO/ANSI SQL 1992. La prochaine norme,
encore en cours de d�veloppement est la SQL 1998/99 aussi appel�e
SQL-3. Les syst�mes de gestion de bases de donn�es les plus r�pandus
tels que Oracle, Sybase et Informix s'appuient sur ces standards ou
essaient de les impl�menter.
Il y a plus de 20 vari�t�s, commerciales/internet, de syst�mes de
gestion de base de donn�es actuellement utilis�s dans le monde et
beaucoup plus dans un futur proche. En l'absence d'une norme telle que
l'ANSI/ISO SQL, il serait tr�s difficile pour l'utilisateur de
d�velopper une application une fois pour toutes et de l'utiliser avec
tous les syst�mes de gestion de bases de donn�es. L'utilisateur veut
d�velopper son application une fois pour toutes en utilisant les
normes ISO SQL, ODBC, JDBC afin qu'elle puisse �tre d�ploy�e sur une
grande vari�t� de syst�mes de gestion de base de donn�es a travers le
monde.
PostgreSQL est la Base de Donn�e LIBRE la plus populaire au monde qui
impl�mente la plupart des normes ISO SQL, ANSI SQL/98, SQL/92 et ANSI
SQL/89 RDBMS. PostgreSQL est une base de donn�es relationnelle Objet
de la nouvelle g�n�ration et les futures normes ANSI SQL tels que le
SQL 1998 (SQL-3) et au-del� traiteront de mani�re croissante de bases
de donn�es Objet et de types de donn�es Objet. PostgreSQL est le seul
SGBD (RDBMS - Relational Data Base Management System) au monde qui
supporte les bases de donn�es Objet et SQL. Ce document vous explique
comment installer le syst�me de gestion de base de donn�es, comment
mettre en place la base de donn�es Web, la base de donn�es application
, les frontaux GUIs et les programmes interfa�age. On ne saurait trop
RECOMMANDER d'�crire vos applications bases de donn�es 100 %
compatibles avec les normes ISO/ANSI SQL, ODBC, JDBC ceci rendant
votre application portable sur de multiples SGBD (Syst�mes de gestion
de Bases de Donn�es) tels que PostgreSQL, Oracle, Sybase, Informix
etc.
La haute qualit�, et un large ensemble de possibilit�s de PostgreSQL
viennent du fait que ce syst�me est d�velopp� suivant le principe du
�Mod�le de d�veloppement � Code Source Ouvert�. Les mod�les � Code
Source Ouvert sont ceux ou la totalit� du code source est fournie et
ou le d�veloppement se fait � travers l'internet par une tr�s vaste
communaut� de cerveaux humains en r�seau. La tendance future des
d�veloppement logiciels r�side dans ce que l'on appelle les "super
autoroutes de l'information" qui s'�tendent � travers le monde entier.
Dans les ann�es � venir, la croissance d'internet va �tre explosive et
de ce fait favorisera l'adoption de PostgreSQL par la communaut� des
utilisateurs de bases de donn�es.
Par l'application des principes de la statistique, des math�matiques
et de la science � la qualit� des logiciels, on obtient la meilleure
qualit� des logiciels '� Code Source Ouvert' tel que PostgreSQL en
mettant le code source des programmes � la disposition d'un grand
nombre de cerveaux humains interconnect�s par les super-autoroutes de
l'information. Plus le nombre de cerveaux au travail sera grand,
meilleure sera la qualit� du logiciel produit. Le mod�le "� Code
Source Ouvert" �vite aussi de RR��IINNVVEENNTTEERR LLAA RROOUUEE, supprime LLAA
DDUUPPLLIICCAATTIIOONN DDUU TTRRAAVVAAIILLtout en �tant particuli�rement �conomique, en
diminuant les d�lais de distribution et en suivant les lois
�conomiques modernes d'optimisation des ressources nationales et
globales. Une fois qu'un logiciel a �t� r�alis� par d'autres, vous
NN''AAVVEEZZ PPAASS � recommencer le travail. Vous ne perdrez pas un temps
pr�cieux sur quelque chose qui a d�j� �t� CCOORRRREECCTTEEMMEENNTT r�alis�. Votre
temps est extr�mement pr�cieux et il faut l'utiliser de mani�re
efficace, car vous ne disposez que de 8 heures par jour pour
travailler!!. Dans un futur proche, � l'aube du 21-i�me si�cle, la
mani�re de se procurer un logiciel va changer. Les utilisateurs
accorderont en premier lieu leur pr�f�rence aux logiciels ouverts tel
PostgreSQL, Linux etc...
En achetant des binaires vous n'obtenez pas la v�ritable propri�t� du
logiciel et ce n'est pas juste. Acheter un logiciel _p_e_u_t devenir une
attitude archa�que. On a seulement besoin d'acheter un bon mat�riel,
il vaut mieux d�penser de l'argent en mat�riel et trouver le logiciel
sur internet. Le point important, c'est que llee ggrrooss dduu ttrraavvaaiill est
effectu� par le mat�riel. Le mat�riel est le cheval de bataille et le
logiciel est l� pour le piloter. Le mat�riel est tellement plus
compliqu� que seulement 6 pays sur 180 au monde ont d�montr� leur
capacit� � concevoir et � fabriquer les composants d'ordinateurs. La
conception et la fabrication de composants d'ordinateurs est une
technologie avanc�e. C'est un processus tr�s complexe, requ�rant de
tr�s larges investissements en usine et en machines de production
ma�trisant la technologie des 0.18 micron. Des milliards de
transistors/circuits sont implant�s sur une petite puce de silicium.
Des compagnies telles que Applied Material, AMD, Intel, Cyrix,
Hitachi, Ibm et autres ont d�pens� d'importantes quantit�s d'hommes-
ans de travail pour ma�triser des hautes technologies telles que la
Micro-�lectronique et la Nano-�lectronique (Micro signifie millioni�me
de m�tre et Nano signifie milliardi�me de m�tre). La technologie
actuelle utilise la micro-�lectronique � 0.35 microns avec des
conducteurs en aluminium, celle de 0.25 microns utilise des
conducteurs de cuivre. Dans un futur proche, la technologie des 0.10
microns avec conducteurs de cuivre et m�me la nano-�lectronique sera
utilis�es pour les circuits int�gr�s d'ordinateurs. Les conducteurs
en aluminium seront d�tr�n�s par ceux en cuivre sur les puces
d'ordinateurs, car le cuivre est meilleur conducteur d'�lectrons. En
photo-lithographie, l'extr�me ultraviolet, les rayons X ou les
techniques de faisceau d'electrons seront utilis�es pour graver des
circuits de taille inf�rieure � 0.15 microns. Dans environ 20 ans,
les circuits en silicium seront remplac�es par des ordinateurs
mol�culaires et des circuits biologiques qui seront des millions de
fois plus rapides que les circuits en silicium. Les mol�cules sont
des groupes d'atomes, et les atomes sont de minuscules particules
constituant la mati�re premi�re premi�re de tout ce qui nous entoure.
Les ordinateurs mol�culaires utiliseront les mol�cules en tant
qu'interrupteurs �lectroniques ultra rapides. Lorsque l'interrupteur
est ferm� (ON), on obtient la valeur 1 et quand il est ouvert (OFF),
la valeur 0. Tous les programmes d'ordinateurs au monde utilisent
l'alg�bre binaire (nombres 0 et 1). Le tableau ci-dessous montre les
progr�s et les tendances futures des puces d'ordinateurs.
Progr�s dans les capacit�s des puces dans le futur
**************************************************
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Item/Ann�e | 1997 | 1999 | 2001 | 2003 | 2012 | 2020 |
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Technologie (micron) | 0.25 | 0.18 | 0.15 | 0.13 | 0.05 |< 0.00001|
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Taille de la puce(mm) | 200 | 300 | 300 | 300 | 45 | Mol/bio |
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Tension mini. de fonctionnement| 1.8-2.5| 1.5-1.8| 1.2-1.5| 1.2-1.5|0.5-0.6| < 0.001 |
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Puissance dissip�e maximum | 70 | 90 | 110 | 130 | 175 | 600 |
+--------------------------------+--------+--------+--------+--------+-------+---------+
| fr�quence de fonct. puce (MHz)| 750 | 1250 | 1500 | 2100 | 10000 | > 50 000|
+--------------------------------+--------+--------+--------+--------+-------+---------+
| Capacit� m�moire DRAM | 256 MB | 1 GB | 2 GB | 4 GB | 256 GB| > 1000GB|
+--------------------------------+--------+--------+--------+--------+-------+---------+
Comme on peut le voir c'est le mat�riel qui est important et de haute
technologie, le logiciel est une technologie moins difficile �
ma�triser. Donc la fabrication de mat�riel est vitale pour l'�conomie
nationale!. Des compagnies comme Compaq, Dell, Sun Microsystems, HP,
IBM qui fabriquent des ordinateurs contribuent de fa�on importante �
l'�conomie U.S. aujourd'hui et dans le futur!!
D'un autre c�t�, chaque pays au monde d�veloppe/produit du logiciel.
En fait, n'importe qui dans le monde, avec un petit PC �conomique,
peut cr�er un syst�me serveur de base de donn�es Oracle. Mais cela
lui prendra environ 10 ans (Le serveur de base de donn�es Oracle
correspond � plus de 10 hommes-ans de travail). Un homme-an correspond
au travail d'un homme � temps plein pendant une ann�e. Si 10 personnes
travaillent pendant un an cela correspond � 10 hommes-ans.
Les SGBD tels que Oracle, Informix, Sybase, IBM DB2 (Unix) sont �crits
en langage "C" et les binaires cr��s par compilation de ces sources
sont fournis aux clients. Les SGBD Oracle, Sybase, Informix sont des
programmes "C" � 100 %!!.
Puisqu'une masse importante de travail a �t� effectu�e sur PostgreSQL
au cours des 14 derni�res ann�es, cela n'aurait aucun sens de recr�er
ex-nihilo un autre syst�me de gestion de base de donn�es satisfaisant
aux normes ANSI/ISO SQL. Il est bien plus int�ressant de prendre le
code existant de PostgreSQL, de commencer � l'utiliser, de l'am�liorer
et d'y ajouter les fonctionnalit�s manquantes.
PostgreSQL n'est pas seulement un SGBD libre mais aussi un "Produit
Internet" de bonne qualit�.
On peut pr�dire que la demande de produits "Fabriqu� sur Internet" va
cro�tre exponentiellement. Ces produits �tant de haute qualit�, de
faible co�t et ayant une base d'utilisateurs et de d�veloppeurs
extr�mement large. Les pays qui n'utilisent pas les produits
"Fabriqu� sur Internet" seront les oubli�s de "la R�volution mondiale
Internet" et resteront loin derri�re les autres pays. La raison
provient de ce "qu'Internet" lui-m�me est la PPLLUUSS GGRRAANNDDEE compagnie de
logiciels!
22.. AAuuttrreess FFoorrmmaattss ddee ccee DDooccuummeenntt
Ce document est publi� en 10 formats diff�rents qui sont - DVI,
Postscript, Latex, LyX, GNU-info, HTML, RTF(Rich Text Format), Texte
simple, Pages de manuel Unix et SGML.
� Vous pouvez obtenir ce document HOWTO en tant que fichier tar dans
les formats HTML, DVI, Postscript ou SGML de -
<
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/>
� Le format texte simple se trouve dans:
<
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO>
� Des traductions dans d'autres langues telles que le Fran�ais,
l'Allemand, l'Espagnol, le Chinois se trouvent dans
<
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO> Toute aide que vous
pourriez apporter pour le traduire dans d'autres langues sera la
bienvenue.
Ce document est r�dig� � l'aide d'un outil appel� "SGML tool" que
l'on peut obtenir de - <
http://www.xs4all.nl/~cg/sgmltools/> Pour
compiler le texte source, vous utilisez des commandes telles que :
� sgml2html databasehowto.sgml (pour g�n�rer un fichier html)
� sgml2rtf databasehowto.sgml (pour g�n�rer un fichier RTF)
� sgml2latex databasehowto.sgml (pour g�n�rer un fichier latex)
Ce document se trouve � -
� <
http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html>
Vous pouvez �galement le trouver sur les sites miroirs suivants -
� <
http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html>
� <
http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html>
� <
http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.html>
� <
http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.html>
� Vous pouvez trouver d'autres sites miroirs proches de chez vous (au
sens d'adresse r�seau) � <
http://sunsite.unc.edu/LDP/hmirrors.html>
choisissez un site et allez dans le r�pertoire
/LDP/HOWTO/PostgreSQL-HOWTO.html
Pour visualiser le document au format dvi, utilisez le programme xdvi.
Le programme xdvi se trouve dans le paquetage tetex-xdvi*.rpm de
Redhat Linux que l'on trouve en choisissant les menus : Panneau de
contr�le | Applications | Publication | TeX. Pour lire le document,
tapez la commande -
xdvi -geometry 80x90 howto.dvi
man xdvi
Et redimensionnez l'�cran � l'aide du mulot. Consultez la page de
manuel concernant xdvi. Pour naviguer dans le document, utilisez les
touches Fl�ches, Page pr�c�dente ,Page suivante. Vous pouvez aussi
utiliser les lettres 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' pour vous
d�placer vers le haut, vers le bas, au centre, vers la page
pr�c�dente, Pour d�sactiver le menu expert, tapez 'x'.
Vous pouvez lire le fichier postscript en utilisant le programme 'gv'
(ghostview) ou Le programme ghostscript se trouve dans le paquetage
ghostscript*.rpm et le programme gv dans le paquetage gv*.rpm de Linux
Redhat que l'on peut trouver en choisissant les menus : Panneau de
contr�le | Applications | Graphique. Le programme gv est beaucoup
plus convivial que ghostscript. Les programmes ghostscript et gv sont
disponibles sous d'autres plates-formes telles que OS/2, Windows 95 et
NT, vous pouvez donc visualiser ce document sur ces plates-formes.
Pour lire le document postscript tapez la commande -
gv howto.ps
AATTTTEENNTTIIOONN:: ce document est volumineux, le nombre total de pages
(postscript) imprim�es est approximativement de 134.
Vous pouvez lire ce document en format HTML en utilisant Netscape
Navigator, Microsoft Internet explorer, Redhat Baron Web browser ou
n'importe lequel des 10 butineurs web.
Vous pouvez le lire en format latex de sortie de LyX en utilisant LyX,
frontal X-Window pour latex.
33.. LLeess llooiiss ddee llaa PPhhyyssiiqquuee ss''aapppplliiqquueenntt aauu llooggiicciieell !!
Dans ce chapitre, on montrera comment la science joue un r�le
important dans la cr�ation de nombreux objets comme le logiciel, cet
univers, la masse, les atomes, les �nergies et m�me vous-m�me !. Ce
chapitre montre �galement pourquoi il est important d'avoir des
connaissances en science AVANT de commencer � en utiliser les
produits. Tout en fait partie - par exemple PostgreSQL, le temps, la
masse, l'�nergie, les plan�tes, le soleil, la lune, les �toiles, les
super-amas, les humains etc... sont des objets cr��s par la science.
Ce chapitre montre �galement comment les lois de la science et les
statistiques t�moignent en faveur de syst�mes � code source ouvert
comme PostgreSQL et Linux. La vitesse d'internet s'accroissant de
jour en jour, et internet devenant de PLUS EN PLUS fiable, les
syst�mes � code source ouvert gagnent rapidement de l'audience. Et,
si les r�gles de la statistique et les lois de la physique sont
correctes, les syst�mes � code source ferm�s sont appel�s �
DISPARA�TRE de cette plan�te.
Les paragraphes ci-dessous montreront - "combien la science est vaste,
combien elle est importante pour les hommes et quel est son impact sur
des projets logiciels comme PostgreSQL, Linux".
Le d�veloppement d'un projet tel que PostgreSQL requiert des
ressources telles que de l'�nergie et du temps, de ce fait, PostgreSQL
est un produit d'�nergie et de temps. Puisque l'�nergie et le temps
ne peuvent d'expliquer que par la science, il y a une corr�lation
directe entre la physique et les projets tels que PostgreSQL, Linux.
Les lois des sciences (Physique) s'appliquent partout, toujours, �
tout ce que vous faites et m�me aux projets logiciels. La physique
est en action pendant que vous parlez (ondes sonores), marchez
(frottement entre le sol et vos pieds), lisez un livre ou �crivez un
logiciel. Diff�rentes branches des sciences, telles que la physique,
la chimie, etc... se rejoignent toutes dans un vaste ensemble, les
math�matiques (�galement nomm�es Reine des Sciences).
Et tout, dans ce monde, a des racines profondes dans les
math�matiques, y compris PostgreSQL. PostgreSQL utilise �L'alg�bre
moderne� qui constitue une petite branche des math�matiques. L'alg�bre
moderne concerne la �Th�orie des ensembles �, �l'alg�bre
relationnelle�, la science des Groupes, des Anneaux, les Collections,
Ensembles, Unions, Intersections, Exclusions,Domaines, Listes, etc...
Un logiciel tel que PostgreSQL existe aujourd'hui gr�ce � l'�nergie et
au temps. C'est l'�nergie qui a cr�� ce monde, les cerveaux humains
et beaucoup d'autres choses!. Et, la masse et l'�nergie sont UNE et
la MM��MMEE entit�!. Il y a 100 ans, le fait que la masse et l'�nergie
soient la m�me chose n'�tait pas connu des gens !
Les cellules des cerveaux humains consomment de l'�nergie en
travaillant (� la cr�ation d'un logiciel), transformant de l'�nergie
chimique en chaleur. M�me pendant la lecture de ce paragraphe, les
cellules de votre cerveau consomment du carburant et utilisent de
l'�nergie. Donc INTERROMPEZ IMM�DIATEMENT VOTRE LECTURE!
L'�nergie r�sultant de l'activit� des neurones (cellules du cerveau)
peut �tre mesur�e en laboratoire. Par exemple, il y a de nombreux
instruments comme le "d�tecteur de mensonge" et autres instruments
m�dicaux qui peuvent mesurer l'activit� du cerveau. Tout cela sous-
entend que le cerveau humain est une machine thermodynamique. Et comme
le cerveau humain est une machine thermodynamique, les lois de la
thermodynamique d'appliquent au cerveau et, par cons�quent, la
thermodynamique a des effets indirects sur les logiciels comme
PostgreSQL.
Suivant la science, il est impossible de construire tout syst�me ou
th�orie (y compris un syst�me logiciel de gestion de base de donn�es)
qui soit parfait � 100 % et sans erreur. C'est comme poursuivre un
mirage, nous ne pourrons JJAAMMAAIISS atteindre l'objectif d'obtenir la
perfection dans un syst�me ou une th�orie. Les �quations/discussions
math�matiques d�taill�es pour prouver qu'un "syst�me parfait" (de m�me
pour prouver qu'un "syst�me imparfait") est impossible sont des sujets
avanc�s et hors sujet dans ce document. Et une telle �tude
math�matique implique la prise en compte d'un nombre infini de
dimensions (ainsi que les dimensions primaires) que l'on trouve dans
la nature. Malheureusement, les humains ne peuvent voir et
conceptualiser que 4 dimensions alors que les math�matiques peuvent
facilement en explorer beaucoup d'autres. Les autres dimensions sont
""iinnffiinniimmeenntt pplluuss ppeettiitteess"" que les atomes, et les atomes eux-m�mes sont
si minuscules que les yeux humains ne peuvent pas les voir ! Pour
analyser et expliquer la naissance et la mort de notre univers, les
math�matiques constituent un outil tr�s puissant. Notre univers, si
vous le regardez � partir d'un autre univers poss�de pratiquement une
ttaaiillllee nnuullllee et vice versa. Ce qui signifie que notre univers n'est
pas visible (n'existe pas) pour les gens d'un autre univers ! Et vice
versa ! Th�oriquement, il est possible de sortir de notre univers et
de voyager sur des distances immenses (milliard d'ann�es lumi�re) en
un temps nul et de rentrer en un point diff�rent de l'espace-temps !.
La distance entre notre univers et les autres univers est en r�alit�
nulle !.
Bien qu'il y ait un nombre infini de dimensions, celles-ci peuvent
�tre d�duites/g�n�r�es � partir d'un nombre restreint de dimensions
PRIMAIRES. C'est-�-dire qu'un nombre infini de dimensions peut se
combiner et se ramener aux dimensions primaires. Les dimensions
primaires absorbent simplement les autres dimensions sans �tre
d�truites. Les math�maticiens utilisent ces dimensions primaires pour
comprendre la naissance et la mort des univers. L'univers o� vous
vivez actuellement a commenc� � exister lors d'un BBIIGG BBAANNGG, caus� par
les interactions de particules atomiques d'autres dimensions, qui
s'est produit il y a des milliards d'ann�es (environ 20 milliards
d'ann�es). Juste avant le big bang il y avait un petit point o� la
longueur, la largeur, la hauteur et le temps �taient NULS (
c'est-�-dire que notre univers N'EXISTAIT PAS !!) alors que d'autres
univers et les dimensions primaires existaient. Le temps lui-m�me
n'existait PAS l� et les atomes, les �toiles, les plan�tes et les
galaxies n'existaient PAS! Les atomes qui sont � l'int�rieur de notre
corps n'existaient PAS !!. Tellement de choses se sont pass�es AVANT
qu le temps n'existe !
Le big bang et donc la naissance de notre univers r�sulte de quelques
atomes de dimensions primaires. QQUUEELLQQUU''UUNN, (quelque chose ?), a caus�
le fracassement de quelques atomes minuscules d'autres dimensions pour
cr�er notre univers, et de nouvelles dimensions de temps, de longueur,
de largeur et de hauteur �taient n�es !. Nous voyons l'effet d'une
quelconque main dans se processus. Ce processus nn''eesstt ppaass
ppaarrffaaiitteemmeenntt ccoommpprriiss par les hommes. Ceux-ci essaient de g�n�rer un
autre univers en laboratoire en simulant le big bang (Un acc�l�rateur
tr�s puissant est en construction en Europe, un autre, en cours de
construction � Dallas, aux USA, a �t� arr�t� par le congr�s US pour
cause de coupes budg�taires). Il y a des atomes dans d'autres
dimensions exactement comme nous avons des atomes dans notre univers.
Th�oriquement, on peut cr�er/g�n�rer un nombre infini d'univers !. Ce
processus est r�versible, ce qui veut dire que notre univers peut
compl�tement s'effondrer sur lui-m�me et dispara�tre en quelques
atomes d'autres dimensions !. C'est une analogie similaire � la fa�on
dont VOUS �tes n�s � partir de de deux cellules minuscules qui se sont
FRACASS�ES l'une contre l'autre pour cr�er une cellule unique. Cette
toute petite cellule s'est divis�e et multipli�e en 6 billions de
cellules pour devenir cet �tre humain de 1.80 m�tre (que vous �tes !).
Il y a une ressemblance entre les �tres humains et les univers qui
naissent puis meurent, un peu comme les humains.
Puisqu'un �tat PARFAIT (comme IMPARFAIT) est impossible, des univers
comme le n�tre sont n�s et plus tard mourront selon un processus
cyclique. MAIS il ne peut pas y avoir de mort PARFAITE, seules des
transformations sont permises par la science !. Actuellement notre
univers est en expansion � un rythme formidable, il n'est pas statique
mais tr�s dynamique. Cet univers continuera son expansion jusqu'� ce
que quelque chose interf�re pour entra�ner son effondrement par
l'application de pressions ayant des dimensions externes qui
l'annihileront !!. Il y a deux possibilit�s : suppression de masse de
l'univers via les trous noirs (processus lent), ou ajout de masse �
l'univers via les trous blancs (processus rapide d'un big crunch). Des
millions d'univers peuvent exister mais seuls tr�s peu d'univers
peuvent �tre b�tis � partir des dimensions primaires. Vous n'�tes pas
constitu�s uniquement d'atomes de cet univers mais aussi d'atomes
d'autres dimensions !. Dans les trous noirs les atomes et les
particules de notre univers sont engloutis et enti�rement transform�s
et convertis en particules d'autres dimensions !. Au centre d'un trou
noir, le temps est nul comme le sont la longueur, la largeur et la
hauteur !. Et le trou noir constitue la porte d'ENTR�E/SORTIE pour
d'autres univers. Ces portes d'entr�e/sortie peuvent s'ouvrir
n'importe o�, m�me � l'int�rieur de votre corps !
Il peut y avoir un nombre infini de couleurs, de langages
informatiques, d'architectures de circuits d'ordinateurs et de
th�ories, mais il NE PEUT PAS y avoir LA PERFECTION pour UN(E) SEUL(E)
couleur, langage informatique, architecture ou syst�me ! Vous ne
pouvez obtenir qu'une couleur (longueur d'onde, qu'un syst�me, qu'une
base de donn�es ou une th�orie PRESQUE PARFAITE ! La nature est comme
un kal�idoscope.
En combinant les �nergies de millions de personnes � travers le monde
via internet il est possible d'obtenir un syst�me PPRREESSQQUUEE PPAARRFFAAIITT (y
compris un syst�me logiciel de gestion de base de donn�es). Prise
individuellement, l'�nergie de chacun est microscopique, mais en
mettant en r�seau un tr�s grand nombre de personnes, l'�nergie totale
sera �norme, et elle peut �tre canalis�e pour cr�er un syst�me presque
parfait. Les �tres humains sont des cr�atures � l'�nergie et aux
ressources finies, port�s � faire des erreurs allant de la plus
triviale � la plus profonde. Puisque notre propension � faire des
erreurs varie largement en fonction de qualifications particuli�res,
d'exp�rience particuli�re et des humeurs du moment, la d�couverte et
l'�limination des erreurs logicielles dues � des erreur humaines
ordinaires peut �tre largement facilit�e en concentrant un grand
nombre d'esprits humains � ce probl�me.
Il est tr�s clair qu'internet peut mettre en r�seau un grand nombre de
personnes, ce qui implique qu'internet poss�de beaucoup d'�nergie et
de temps qui peuvent cr�er des produits logiciels de bien meilleure
qualit�, en un temps plus court, que des compagnies commerciales. M�me
de grandes compagnies comme Microsoft, IBM ne peuvent pas s'affranchir
des lois de la physique mais finalement SSEE PPLLIIEERR aux lois de la
science !
Aujourd'hui, il y a beaucoup trop de syst�mes de base de donn�es
relationnelles SQL RDBMS dans le monde se r�f�rant � une sp�cification
ANSI/ISO SQL unique. LL''hhuummaanniitt�� nnee ddooiitt ppaass ppeerrddrree ssoonn tteemmppss �� ccrr��eerr
ddee ttrroopp nnoommbbrreeuuxx ppaaqquueettaaggeess llooggiicciieellss SSIIMMIILLAAIIRREESS OOUU IIDDEENNTTIIQQUUEESS alors
qu'il y a trop d'autres sujets en sciences qui m�riteraient
l'attention.
En conclusion, � cause des lois de la science, les syst�mes � "code
source ouvert" comme PostgreSQL, Linux seront toujours meilleurs que
les syst�mes � "code source ferm�", et il est possible de prouver
cette affirmation scientifiquement.
44.. QQuu''eesstt--ccee qquuee PPoossttggrreeSSQQLL ??
PostgreSQL Version 6.5.2 est un SGBD libre, son code source complet
est fourni. De plus, c'est un SGBD Relationnel-Objet pratiquement
conforme (de plus en plus conforme) aux normes ANSI SQL1998,92,89. Il
fonctionne sur diverses plates-formes mat�rielles sous diff�rents
Syst�mes d'Exploitation.
Quelquefois des corrections urgentes d'erreurs sont diffus�es apr�s la diffusion
d'une r�vision de PostgreSQL. Vous pouvez appliquer ces rustines optionnelles
selon les besoins de votre application. Effectuez les �tapes suivantes pour
appliquer ces rustines -
cd /usr/src/postgresql6.5.2
man patch
patch -p0 < patchfile
make clean
make
Les fichiers de mise � jour se trouvent dans
� Rustines PostgreSQL : <
ftp://ftp.postgresql.org/pub/patches>
L'objectif ultime et le but final de PostgreSQL est de devenir
compatible � 100 % � la norme ANSI/ISO SQL ainsi que de devenir le
num�ro UN mondial des syst�mes de gestion de Base de Donn�es ouverts
g�n�riques. PostgreSQL guidera, conduira, contr�lera, suivra et
dictera le futur de l'ANSI/ISO SQL. C'est-�-dire, l'impl�mentation et
les id�es appara�tront en premier dans PostgreSQL puis, plus tard,
seront incorpor�s dans l'ANSI/ISO SQL. PostgreSQL repr�sente "l'�tat
de l'art" de la technologie des bases de donn�es.
Le serveur Informix Universal (diffus� en 1997) est bas� sur une
version pr�c�dente de PostgreSQL car Informix a achet� Illustra Inc.
et l'a int�gr�e � Informix. La base de donn�es Illustra �tait
compl�tement bas�e sur Postgres (version pr�c�dente de PostgreSQL).
PostgreSQL est une am�lioration du SGBD POSTGRES, prototype de
recherche de SGBD de la prochaine g�n�ration. PostgreSQL, tout en
conservant le puissant mod�le de donn�es et la richesse des types de
donn�es de POSTGRES, remplace le langage de requ�te PostQuel par un
sous-ensemble �tendu de SQL.
Le d�veloppement de PostgreSQL est r�alis� par une �quipe de
d�veloppeurs Internet qui sont tous inscrits � la liste de diffusion
"PostgreSQL d�veloppement mailing list". Son coordinateur actuel est
Marc G. Fournier
�
[email protected]
Cette �quipe est maintenant responsable des d�veloppements actuels
et futurs de PostgreSQL. Naturellement, l'utilisateur de la base de
donn�es est lui-m�me d�veloppeur de PostgreSQL!. La charge de
d�veloppement est r�partie au sein d'un grand nombre d'utilisateurs
finaux de bases de donn�es sur internet.
Les auteurs de PostgreSQL 1.01 sont Andrew Yu et Jolly Chen. De
nombreux autres ont contribu� au portage, aux tests, � la mise au
point et a l'am�lioration du code. Le code original Postgres, duquel
PostgreSQL est issu, est le r�sultat de l'effort de nombreux �tudiants
de troisi�me cycle, de deuxi�me cycle et d'enseignants sous la
direction du Professeur Michael Stonebraker de l'universit� de
Californie, Berkeley.
Le nom original du logiciel � Berkeley �tait Postgres. Lors de l'ajout
des fonctionnalit�s SQL en 1995, il fut renomm� Postgres95. Ce nom fut
chang� � la fin de 1996 en PostgreSQL.
Des millions d'exemplaires du SGBD PostgreSQL sont install�s comme
serveurs, serveurs Web et serveurs d'application. Ce SGBD est tr�s
avanc�, c'est un SGBD Relationnel-Objet (ORDBMS).
PostgreSQL peut stocker plus de types de donn�es que les types
traditionnels entier, caract�res, etc. - L'utilisateur peut cr�er des
types, des fonctions, de l'h�ritage de type etc. PostgreSQL fonctionne
sur Solaris, SunOS, HPUX, AIX, Linux, Irix, Digital Unix, BSDi,
NetBSD, FreeBSD, SCO unix, NEXTSTEP, Unixware et toutes sortes d'unix.
Un portage pour Windows 95/NT est en cours de r�alisation.
� Titre : PostgreSQL SQL RDBMS Database (Syst�me de Gestion
de Base de Donn�es Relationnelle Objet)
� Version actuelle : 6.5.2
� Age : PostgreSQL a 14 ans. En d�veloppement depuis 1985
� Auteurs : D�velopp� par des millions
d'universit�s/compagnies sur internet au cours de ces 14 derni�res
ANN�ES
PostgreSQL et les �l�ments qui s'y rapportent dans ce document sont
couverts par le COPYRIGHT de l'Universit� de Californie, Berkeley.
55.. OO�� llee ttrroouuvveerr??
On peut acheter le CDROM Linux Redhat 5.0, le CDROM Linux Debian ou le
CDROM Linux Slackware qui contiennent d�j� postgresql sous forme de
paquetage (a la fois en code source et en binaires) au :
� site Web Linux System Labs : <
http://www.lsl.com/> (7 U.S.
dollars)
� site Web Cheap Bytes Inc : <
http://www.cheapbytes.com/> (7 U.S.
dollars)
� site Web Principal Debian : <
http://www.debian.org/vendors.html>
L'organisation PostgreSQL vend un 'CDROM PostgreSQL' qui contient le
code source complet et les binaires pour de nombreux syst�mes
d'exploitation Unix, ainsi que la documentation compl�te.
� CDROM PostgreSQL au site Web principal � :
<
http://www.postgresql.org> 30 (U.S. dollars)
Distributions uniquement en binaire de PostgreSQL :
� On peut ex�cuter PostgreSQL sans compiler le source. R�cup�rer les
binaires pour Intel-Linux de l'url
<
ftp://www.redhat.com/pub/contrib/i386/> le fichier se nomme
postgresql-6.5.2.i386.rpm. Son format est de type paquetage redhat
'rpm'. Il contient � la fois le source et les binaires de
PostgreSQL.
� Sites binaires pour Solaris, HPUX, AIX, IRIX, Linux :
<
ftp://ftp.postgresql.org/pub/bindist> Si vous faites une
compilation pour n'importe laquelle des plates-formes envoyer le
binaire � ce site, cela peut �tre utile aux autres.
� site ftp : r�cup�rer les binaires pour Intel-Linux de
<
ftp://ftp.redhat.com/pub/contrib/i386/> le fichier se nomme
postgresql-6.5.2.i386.rpm. Son format est de type paquetage redhat
'rpm'. Il contient � la fois le source et les binaires de
PostgreSQL.
Sites WWW Web :
� Site Web primaire : <
http://www.postgresql.org/>
� Site Web secondaire : <
http://logical.thought.net/postgres95/>
� <
http://www.itm.tu-clausthal.de/mirrors/postgres95/>
� <
http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>
� <
http://xenium.pdi.net/PostgreSQL/>
� <
http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>
Les sites ftp sont indiqu�s ci-dessous :-
� Primaire FTP : <
ftp://ftp.postgresql.org/pub>
� Secondaire FTP : <
ftp://ftp.chicks.net/pub/postgresql>
� <
ftp://ftp.emsi.priv.at/pub/postgres/>
� <
ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95>
� <
ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL>
� <
ftp://ftp.jaist.ac.jp/pub/dbms/postgres95>
� <
ftp://ftp.luga.or.at/pub/postgres95>
� <
ftp://postgres95.vnet.net:/pub/postgres95>
� <
ftp://ftpza.co.za/mirrors/postgres>
� <
ftp://sunsite.auc.dk/pub/databases/postgresql>
� <
ftp://ftp.task.gda.pl/pub/software/postgresql>
� <
ftp://xenium.pdi.net/pub/PostgreSQL>
Le code source de PostgreSQL est aussi disponible sur tous les sites
miroirs de sunsite.unc (soit environ 1000 sites autour du globe). Il
se trouve dans la distribution Linux Red Hat dans le fichier
/pub/contrib/i386/postgresql.rpm.
� Pour obtenir la liste des sites miroirs aller � l'url
<
ftp://sunsite.unc.edu>
66.. PPoossttggrreeSSQQLL �� ggrraannddss ppaass
Ce chapitre est destin� � vous aider � installer et � faire tourner la
base de donn�es tr�s rapidement, en moins de 10 minutes.
66..11.. IInnssttaallllaattiioonn eett tteessttss
�tapes rapides pour installer, tester, v�rifier et faire tourner
PostgreSQL Connectez-vous en tant qu'utilisateur _r_o_o_t.
______________________________________________________________________
# rpm -qpl postgre*.rpm (pour consulter la liste des fichiers. Pour la documentation 'man rpm')
# rpm -qpi postgre*.rpm (pour prendre connaissance des informations concernant le paquetage)
# cat /etc/passwd | grep postgres
______________________________________________________________________
Note: Si vous voyez un utilisateur 'postgres', vous pouvez avoir �
faire une sauvegarde et un nettoyage du r�pertoire postgres et � sup�
primer l'utilisateur unix 'postgres', une autre solution consiste �
renommer l'utilisateur unix 'postgres' en quelque chose du genre
'postgres2'. L'installation doit �tre effectu�e dans un "r�pertoire
propre".
______________________________________________________________________
# rpm -i postgre*.rpm (Doit installer tous les paquetages clients, devel, data
et main pour que pgaccess puisse fonctionner )
# chkconfig --add postgresql (pour lancer pg durant le d�marrage, voir 'man
chkconfig')
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload (pour
python)
# /etc/rc.d/init.d/postgresql start (pour lancer postgres)
# su - postgres
bash$ createdb mydatabase (ceci va cr�er une base de donn�es de nom :
(pour lire la documentation 'man createdb')
bash$ psql mydatabase (pour lire la documentation 'man psql')
..... dans psql utilisez les fl�ches haut/bas ou \s pour visualiser l'historique
bash$ export DISPLAY=<hostname>:0.0; pgaccess mydatabase; (consulter 'man
pgaccess')
______________________________________________________________________
D�s maintenant, vous pouvez commencer � taper des commandes SQL pour
pgaccess ou psql !!
______________________________________________________________________
bash$ cd /usr/doc/postgresql*
______________________________________________________________________
Arriv� l�, lisez toutes les FAQ, les manuels du programmeur et de
l'administrateur ainsi que les documents de prise en main (tutorials)
existants.
Pour obtenir des informations compl�mentaires concernant PostgreSQL,
consultez <
http://www.postgresql.org>
66..22.. MMaaxxiimmuumm RRPPMM
T�l�chargez le livre 'Maximum RPM' � l' <
http://www.RPM.org>. le nom
du fichier est maximum-rpm.ps.gz Lisez-le sous Linux en utilisant la
commande gv -
______________________________________________________________________
# gv maximum-rpm.ps.gz
______________________________________________________________________
66..33.. TTeesstt ddee PPyyGGrreeSSQQLL -- IInntteerrffaaccee PPyytthhoonn
______________________________________________________________________
bash$ cd /usr/lib/pgsql/python
bash$ createdb thilo
bash$ psql thilo
thilo=> create table test (aa char(30), bb char(30) );
bash$ /usr/bin/python
>>> import _pg
>>> db = _pg.connect('thilo', 'localhost')
>>> db.query("INSERT INTO test VALUES ('ping', 'pong')")
>>> db.query("SELECT * FROM test")
eins|zwei
----+----
ping|pong
(1 row)
>>>CTRL+D
bash$
..... Wow! Cela a l'air de fonctionner - maintenant, installons-le proprement
bash$ su - root
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload
______________________________________________________________________
66..44.. TTeesstt ddee PPeerrll -- IInntteerrffaaccee PPeerrll
______________________________________________________________________
bash$ cd /usr/doc/postgresql-6.5.2/examples/perl5
______________________________________________________________________
Note: La variable globale @INC doit inclure le module Pg.pm dans le
r�pertoire site_perl donc utilisez l'option -I ci-dessous
______________________________________________________________________
bash$ perl -I/usr/lib/perl5/site_perl/5.004/i386-linux-thread ./example.newstyle
______________________________________________________________________
.... Re_Wow! Vous avez fait tourner un perl qui acc�de � la base de
donn�es PostgreSQL!!
Prenez connaissance des fichiers d'exemples pour l'utilisation de
l'interface perl.
66..55.. TTeesstt ddeess iinntteerrffaacceess lliibbppqq,, lliibbppqq++++
______________________________________________________________________
bash$ cd /usr/doc/postgresql-6.5.2/examples/libpq++
bash$ su root --> to change ownership of examples
# chown -R postgres /usr/doc/postgresql-6.5.2/examples
# exit
bash$ g++ testlibpq0.cc -I/usr/include/pgsql -I/usr/include/pgsql/libpq++
-lpq++ -lpq -lcrypt
bash$ ./a.out (Note: Ignore Error messages if you get any - as below)
> create table foo (aa int, bb char(4));
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> insert into foo values ('4535', 'vasu');
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> select * from foo;
aa |bb |
-----|-----|
4535 |vasu |
Query returned 1 row.
>
>CTRL+D
bash$
______________________________________________________________________
.... Hourra!! Vous venez de faire tourner les interfaces directes de
C/C++ � la base de donn�es PostgreSQL!!
66..66.. TTeesstt ddeess iinntteerrffaacceess JJaavvaa
Pour pouvoir effectuer ceci vous DEVEZ installer le paquetage
jdk-*glibc*.rpm (paquetage Java RPM)
______________________________________________________________________
bash$ cd /usr/doc/postgresql-6.5.2/examples/jdbc
bash$ echo $CLASSPATH
--> Devrait afficher CLASSPATH=/usr/lib/jdk-1.1.6/lib/classes.zip
bash$ export CLASSPATH=$CLASSPATH:.:/usr/lib/pgsql/postgresql.jar
Editer tout le fichier psql.java et enlevez le symbole de commentaire de la ligne 'package'.
bash$ javac psql.java
bash$ java psql jdbc:postgresql:template1 postgres < password>[1] select * from pg_tables;
tablename tableowner hasindexes hasrules
pg_type postgres true false false
pg_attribute postgres true false false
[2]
CTRL+C
bash$
______________________________________________________________________
.... Re_Hourra!! Vous venez de faire tourner les interfaces directes
de Java � la base de donn�es PostgreSQL!!
66..77.. TTeesstt ddeess iinntteerrffaacceess eeccppgg
______________________________________________________________________
bash$ cd /usr/doc/postgresql-6.5.2/examples/ecpg
bash$ ecpg test1.pgc -I/usr/include/pgsql
bash$ cc test1.c -I/usr/include/pgsql -lecpg -lpq -lcrypt
bash$ createdb mm
bash$ ./a.out
______________________________________________________________________
.... Wow!! vous venez de faire tourner le "C"-SQL / base de donn�es
PostgreSQL" int�gr�!!
66..88.. TTeesstt ddeess eexxeemmpplleess SSQQLL -- TTyyppeess aanndd ffoonnccttiioonnss dd��ffiinniiss ppaarr ll''uuttiill��
iissaatteeuurr
______________________________________________________________________
bash$ cd /usr/doc/postgresql-6.5.2/examples/sql
Under-development..
______________________________________________________________________
66..99.. TTeesstt ddeess iinntteerrffaacceess TTccll//TTkk
Il y a un exemple d'interfaces Tcl/Tk dans le programme pgaccess.
Lire le fichier /usr/bin/pgaccess � l'aide d'un �diteur de texte -
______________________________________________________________________
bash$ view /usr/bin/pgaccess
bash$ export DISPLAY=<hostname of your machine>:0.0
bash$ createdb mydb
bash$ pgaccess mydb
______________________________________________________________________
66..1100.. TTeesstt ddeess iinntteerrffaacceess OODDBBCC
1. Procurez-vous le pilote win32 pgsql odbc �
<
http://www.insightdist.com/psqlodbc/> 2. Voir �galement
/usr/lib/libpsqlodbc.a
66..1111.. TTeesstt ddeess iinntteerrffaacceess ddee llaa ffeeuuiillllee ddee ttrraavvaaiill MMoottiiff MMPPSSQQLL
Procurez-vous les RPMs aupr�s de <
http://www.mutinybaysoftware.com>
66..1122.. VV��rriiffiiccaattiioonn
Pour v�rifier le parfait fonctionnement de PostgreSQL, faites tourner
le paquetage de test de R�gression :- Connectez-vous en tant que root
-
______________________________________________________________________
# rpm -i postgresql*.src.rpm
# cd /usr/src/redhat/SPECS
# more postgresql*.spec (pour savoir quels sont les paquetage RPM que
vous devez installer)
# rpm -bp postgresql*.spec (.. ce qui va pr�parer le paquetage)
Le test de r�gression a besoin des Makefiles et de quelques fichiers en-t�te
comme *fmgr*.h
qui peuvent �tre construits par -
# rpm --short-circuit -bc postgresql*.spec ( .. utilisez "short circuit" pour
forcer les choses!)
Interrompre la construction en pressant les touches CTRL+C quand vous voyez
'make -C common SUBSYS.o'
� ce moment l�, la configuratioin est r�ussie, tous les "makefiles" et tous les fichiers en-t�te (headers) ont �t� cr��s.
Il n'y a rien de plus � faire.
# cd /usr/src/redhat/BUILD
# chown -R postgres postgresql*
# su - postgres
bash$ cd /usr/src/redhat/BUILD/postgresql-6.5.2/src/test/regress
bash$ more README
bash$ make clean; make all runtest
bash$ more regress.out
______________________________________________________________________
77.. PPoossttggrreeSSQQLL SSuuppppoorrttee ddeess BBaassee ddee DDoonnnn��eess eexxttrr��mmeemmeenntt ggrraannddeess >> 220000
GGiiggaass
Les performances des machines � cpu 32-bit d�croissent rapidement
quand la taille de la base de donn�es d�passe 5 GigaBytes. Vous pouvez
faire tourner des bases de donn�es de 30 gigas avec un cpu 32-bit cpu
mais cela ne sera pas tr�s performant. Les machines � CPU 32 bits
imposent une limitation de 2 GB de m�moire RAM, de 2 GB pour le
syst�me de fichier et d'autres limitations dues au syst�me
d'exploitation.
Si vous avez besoin d'utiliser des bases de donn�es extr�mement
grandes, il est fortement recommand� d'utiliser des machines 64-bit
telles que : Digital Alpha cpu, Sun Ultra-sparc 64-bit cpu, Silicon
graphics 64-bit cpu, Intel Merced IA-64 cpu, machines HPUX 64bit ,
machines IBM 64-bit. Si l'on compile PostgreSQL avec un cpu 64-bit il
pourra supporter d'�normes bases de Donn�es et de grosses requ�tes.
Les performances de PostgreSQL pour des interrogations sur de grandes
tables et de grandes bases de donn�es sera plus rapide de plusieurs
ordres de grandeurs que sur des machines � cpu 32-bit . L'avantage des
machines 64-bit est qu'elles disposent d'un grand espace d'adressage
m�moire et que le syst�me d'exploitation peut g�rer de tr�s grands
syst�mes de fichiers. Cela permet des meilleures performances avec de
grandes bases de donn�es, plus de m�moire centrale (RAM), plus de
possibilit�s etc...
88.. PPoossttggrreeSSQQLL eesstt--iill ffiiaabbllee??
Le paquetage de "Test de R�gression" permet de s'assurer de son bon
fonctionnement. Il est inclus (src/test/regress) dans la distribution
et permet � l'ordinateur d'effectuer la v�rification des op�rations
SQL standard ainsi que des capacit�s de PostgreSQL. Le paquetage de
test contient d�j� des centaines de programmes SQL de test.
L'avantage de ce test effectu� par l'ordinateur vient du fait que
celui-ci peut effectuer plusieurs millions de test SQL tr�s
rapidement. La vitesse de l'ordinateur est un milliard de fois plus
rapide que celle de l'esprit humain! Il est donc pertinent d'utiliser
la puissance de calcul de l'ordinateur pour valider un logiciel plut�t
celle de l'esprit humain.
Si c'est n�cessaire, vous pouvez en ajouter beaucoup d'autres. Dans ce
cas penser � envoyer ces tests au site PostgreSQL primaire si vous
pensez que cela peut �tre utile aux autres. Le paquetage de Test de
R�gression permet d'asseoir la confiance des utilisateurs en
PostgreSQL et facilite le d�ploiement rapide de PostgreSQL sur des
syst�mes en production sans inqui�tude majeure.
Le paquetage "Test de R�gression" peut �tre consid�r� comme un
document technique ""TTRR��SS SSOOLLIIDDEE"" reconnu mutuellement par les
d�veloppeurs et par les utilisateurs finaux. Les d�veloppeurs de
PostgreSQL utilisent de fa�on intensive ce paquetage durant la p�riode
de d�veloppement et �galement avant de mettre le logiciel � la
disposition des utilisateurs pour en assurer la parfaite qualit�.
99.. OOuuttiill GGUUII ffrroonnttaall ppoouurr PPoossttggrreeSSQQLL ((IInntteerrffaaccee UUttiilliissaatteeuurr
GGrraapphhiiqquuee))
Le navigateur Web deviendra, dans le futur, l'interface utilisateur
graphique le (GUI) le plus populaire. La plus grande partie du code
doit �tre �crite en utilisant le langage de scripts de serveurs Web
PHP/Zend (et en le compilant) ``'' combin� avec un peu de JavaScript
du c�t� du client web. Il est recommand� de migrer vos applications
existantes sous Windows 95/NT vers PHP/Zend.
Les meilleurs outils sont :
� PHP et Zend (script et compilateur) ``''
� X-Designer supporte C++, Java et MFC <
http://www.ist.co.uk/xd>
� Qt pour Windows95 et Unix � <
http://www.troll.no> et
<
ftp://ftp.troll.no>
� Code Crusader se trouve sur le cdrom linux, logiciel libre bas� sur
Code Warrior de MetroWorks
<
http://www.kaze.stetson.edu/cdevel/code_crusader/about.html>
� Code Warrior de MetroWorks <
http://www.metrowerks.com>
� GNU Prof C++ IDE de Cygnus <
http://www.cygnus.com>
� Borland C++ Builder pour Linux <
http://www.inprise.com>
� Borland Java JBuilder pour Linux <
http://www.inprise.com>
Les langages, par ordre de pr�f�rence sont :
1. Le langage de script serveur Web PHP avec Javascript pour le
client.
2. Le langage de script Perl en utilisant Perl-Qt ou Perl-Tk ``''
3. Le langage C++ Omnipr�sent avec QtEZ, QT, Lesstiff ou Motif.
4. Java mais les programmes obtenus sont tr�s lents.
D'autres outils sont disponibles : PostgreSQL poss�de une
biblioth�que d'interface Tcl/Tk dans la distribution nomm�e 'pgTcl'.
Il existe un Environnement de D�veloppement Int�gr� (EDI ou IDE pour
integrated development environment) pour Tcl/Tk nomm� SpecTcl.
� L'outil Lesstiff Motif
<
ftp://ftp.redhat.com/pub/contrib/i386/lesstiff*.rpm>
� Vibe Java/C++ se trouve �t
<
http://www.LinuxMall.com/products/00487.html>
� JccWarrior <
ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm>
� Tcl/Tk <
http://www.scriptics.com>
� Une extension orient�e objet de Tcl appel�e INCR se trouve �
<
http://www.tcltk.com>
� Le site Visual TCL <
http://www.neuron.com>
� Le rpm Visual TCL de Redhat �
<
ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm>
� <
http://sunscript.sun.com/>
� <
http://sunscript.sun.com/TclTkCore/>
� <
ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z>
� FreeBuilder <
ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm>
� SpecTCL <
ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm>
� Kanchenjunga Java RAD Tool pour PostgreSQL
<
http://www.man.ac.uk/~whaley/kj/kanch.html>
� L'Applixware Tool <
http://www.redhat.com>
� XWPE X Windows Programming Environment
<
http://www.rpi.edu/~payned/xwpe/>
<
ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm>
� XWB X Windows Work Bench
<
ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm>
� NEdit <
ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm>
Vous pouvez �galement utiliser Borland C++ Builder, Delphi, Borland
JBuilder, PowerBuilder sous Windows95 pour connecter PostgreSQL
sous unix � travers des pilotes ODBC/JDBC.
1100.. PPiillootteess dd''iinntteerrffaaccee ppoouurr PPoossttggrreeSSQQLL
1100..11.. OODDBBCC PPiillootteess ppoouurr PPoossttggrreeSSQQLL
ODBC signifie 'Open DataBase Connectivity'. C'est une norme r�pandue
pour acc�der aux informations des bases de donn�es de diff�rents
vendeurs. Le fonctionnement des applications �crites en utilisant les
pilotes ODBC est garanti quelle que soient les bases de donn�es
utilis�es PostgreSQL, Oracle, Sybase, Informix etc..
� PostODBC <
http://www.insightdist.com/psqlodbc> est d�j� inclus dans
les distributions. Consultez le site web principal
<
http://www.postgresql.org>. Il est inclus dans ce CDROM
PostgreSQL.
� <
http://www.openlinksw.com> Open Link Software Corporation
distribue des ODBC pour PostgreSQL et d'autres bases de donn�es.
Open Link dispose aussi d'ODBC gratuits (quantit� limit�e) v�rifier
aupr�s d'eux.
� Insight ODBC pour PostgreSQL <
http://www.insightdist.com/psqlodbc>
C'est le site officiel PostODBC.
Il existe aussi un projet appel� FreeODBC Pack Package . Il n'y a pas
de version PostgreSQL, peut-�tre pouvez vous y participer.
� <
http://www.ids.net/~bjepson/freeODBC/> c'est une version gratuite
d'ODBC.
1100..22.. PPiillootteess UUDDBBCC ppoouurr PPoossttggrreeSSQQLL
UDBC est une version statique de pilote de gestionnaire et de DLL
d'ODBC ind�pendant, pour int�grer le support de la connectivit� base
de donn�es directement au niveau des applications.
� <
http://www.openlinksw.com> Open Link Software Corporation vends
UDBC pour PostgreSQL et autres SGBD. Open Link dispose aussi
d'UDBC gratuits (quantit� limit�e) v�rifier aupr�s d'eux.
1100..33.. PPiillootteess JJDDBBCC ppoouurr PPoossttggrreeSSQQLL
JDBC signifie 'Java DataBase Connectivity'. Java est un langage de
d�veloppement ind�pendant de la plate-forme d'utilisation d�velopp�
par Sun Microsystems. Les programmeurs Java sont encourag�s � �crire
leurs applications en utilisant JDBC pour faciliter la portabilit�
entre diff�rentes plates-formes telles que PostgreSQL, Oracle,
informix, etc. Si vous �crivez des applications Java applications vous
pouvez obtenir les pilotes JDBC pour PostgreSQL � partir des sites
suivants :
Le pilote JDBC est inclus dans la distribution PostgreSQL.
� <
http://www.demon.co.uk/finder/postgres/index.html> Sun's Java
connectivity to PostgreSQL
� <
ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz>
� <
http://www.openlinksw.com> Open Link Software Corporation vends
JDBC pour PostgreSQL et autres SGBD. Open Link dispose aussi
d'JDBC gratuits (quantit� limit�e) v�rifier aupr�s d'eux.
� Site JDBC UK <
http://www.retep.org.uk/postgres>
� Site JDBC FAQ <
http://eagle.eku.edu/tools/jdbc/faq.html>
Le site JDBC, le guide et les FAQ sont situ�s � -
� JDBC HOME <
http://splash.javasoft.com/jdbc>
� JDBC guide
<
http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc>
� JDBC FAQ <
http://javanese.yoyoweb.com/JDBC/FAQ.txt>
1100..44.. JJaavvaa ppoouurr PPoossttggrreeSSQQLL
Ces classes pour PostgreSQL seront tr�s utiles au programmeur JAVA.
� <
ftp://ftp.redhat.com/pub/contrib/i386> et regardez postgresql-
jdbc-*.rpm
� <
http://www.blackdown.org>
1111.. PPiilloottee dd''iinntteerrffaaccee ddee SSGGBBDD PPeerrll ((DDaattaabbaassee IInntteerrffaaccee DDBBII)) ppoouurr
PPoossttggrreeSSQQLL
1111..11.. iinntteerrffaaccee PPeerrll 55 ppoouurr PPoossttggrreeSSQQLL
PERL est l'acronyme de 'Practical Extraction and Report Language'.
Perl est disponible pour tous les syst�mes d'exploitation et toutes
les plates-formes mat�rielles au monde. Vous pouvez utiliser Perl sous
Windows95/NT, Apple Macintosh iMac, toutes les vari�t�s d'Unix
(Solaris, HPUX, AIX, Linux, Irix, SCO etc..), ordinateur central MVS,
ordinateur de bureau OS/2, OS/400, Amdahl UTS et beaucoup d'autres.
Perl tourne MM��MMEE sur de nombreux mat�riels et syst�mes d'exploitations
peu courants/g�n�ralement inconnus!! Aussi, ne soyez pas surpris si
vous voyez perl tourner sur un syst�me d'exploitation tr�s rarement
utilis�.
Cette interface est incluse dans la distribution de PostgreSQL. On la
trouve dans le r�pertoire src/pgsql_perl5.
� Contact pour Pgsql_perl5 par email :
[email protected]
� On la trouve aussi dans -
<
ftp://ftp.kciLink.com/pub/PostgresPerl-1.3.tar.gz>
� Page d'accueil Perl : <
http://www.perl.com/perl/index.html>
� Tutoriel Perl, pour un titre de tutoriel, consultez :
<
http://reference.perl.com/>
� La FAQ Perl est � :
http://www.yahoo.com/Computers\_and\_Internet/Programming\_Languages/Perl/
� Perl GUI Interfaces Utilisateurs Perl-Qt rpm :
<
ftp://ftp.redhat.com/pub/contrib/i386> et cherchez
PerlQt-1.06-1.i386.rpm
� Perl GUI Interfaces Utilisateurs Perl-Qt :
<
http://www.accessone.com/~jql/perlqt.html>
� Perl GUI Interfaces Utilisateurs Perl-XForms :
<
ftp://ftp.redhat.com/pub/contrib/i386> et cherchez
Xforms4Perl-0.8.4-1.i386.rpm
� Perl GUI Interfaces Utilisateurs Perl-Tk :
<
ftp://ftp.redhat.com/pub/contrib/i386>
� Perl GUI kits : <
http://reference.perl.com/query.cgi?ui>
� Interfaces de Base de Donn�es Perl :
<
http://reference.perl.com/query.cgi?database>
� Traducteur de Perl en "C" : <
http://www.perl.com/CPAN-
local/modules/by-module/B/> et cherchez Compiler-a3.tar.gz
� Traducteur de Bourne shell en Perl :
<
http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz>
� awk en perl "a2p" et sed en perl "s2p" sont inclus dans la
distribution PERl.
� Consultez �galement le forum PERL � comp.lang.perl.*
1111..22.. DDBBII IInntteerrffaaccee ddee BBaassee ddee DDoonnnn��eess PPeerrll
1111..22..11.. QQuu''eesstt--ccee qquuee DDBBII ??
L'interface de SGBD Perl (Perl Database Interface - DBI) est une
interface logicielle d'acc�s � un SGBD (Application Programming
Interface - API) pour le langage PERL. Les sp�cifications de l'API DBI
perl d�finissent un ensemble de fonctions, de variables et de
conventions d'acc�s � un SGBD coh�rent et ind�pendant du SGBD utilis�.
Les informations concernant cette section DBI ont �t� prises dans la
"DBI FAQ" dont l'auteur est Alligator Descartes et sont reproduites
ici avec sa permission.
� Alligator Descartes Hermetica peut �tre contact� �
[email protected]
1111..22..22.. PPiilloottee DDBBII ppoouurr PPoossttggrreeSSQQLL DDBBDD--PPgg--00..8899
Vous pouvez obtenir DBD-Pg-0.89.tar.gz de l'un des sites indiqu�s ci-
dessous :
� DBD-Pg-0.89 : <
http://www.perl.com/CPAN/modules/by-module/DBD/>
� Comprehensive Perl Archive Network CPAN <
http://www.perl.com/CPAN>
� Liste des pilotes DBI et pages sur les modules DBI
<
http://www.hermetica.com/technologia/perl/DBI>
� L'information sur DBI se trouve � <
http://www.fugue.com/dbi/>
� Site ftp primaire <
ftp://ftp.demon.co.uk/pub/perl/db>
� Liens divers sur DBI <
http://www-ccs.cs.umass.edu/db.html>
� Liens divers sur DBI
<
http://www.odmg.org/odmg93/updates_dbarry.html>
� Liens divers sur DBI <
http://www.jcc.com/sql_stnd.html>
� Base de Donn�es PostgreSQL <
http://www.postgresql.org>
CONTRAINTES :
� - Construire, tester et installer Perl 5 (au moins 5.002)
� - Construire, tester et installer le module DBI (au moins 0.89)
� - Construire, tester et installer PostgreSQL (au moins 6.2)
1111..22..33.. SSuuppppoorrtt tteecchhnniiqquuee ssuurr DDBBII
Veuillez envoyer vos commentaires et vos comptes-rendus d'erreurs �
�
[email protected]
Pensez � inclure la sortie de perl -v, et perl -V, la version de
PostgreSQL, la version de DBD-Pg, et la version de DBI dans votre
compte-rendu d'erreur.
1111..22..44.. QQuu''eesstt--ccee qquuee cc''eesstt qquuee DDBBII,, DDBBppeerrll,, OOrraappeerrll aanndd **ppeerrll??
Pour citer Tim Bunce, l'architecte et l'auteur de DBI :
``DBI est une interface logicielle d'acc�s aux bases de donn�es
(Application Programming Interface -API) pour le langage Perl. Les
sp�cifications DBI API d�finissent un ensemble de fonctions, de
variables et de conventions coh�rents d'interfa�age � une base de
donn�es ind�pendant de la base de donn�es utilis�e.''
En langage simple, l'interface DBI permet aux utilisateurs d'acc�der
de mani�re transparente � de multiples base de donn�es. Ainsi, Si vous
vous connectez � une base de donn�es Oracle, Informix, mSQL, Sybase ou
n'importe quelle autre, vous n'avez pas besoin de conna�tre les
m�canismes sous-jacents de la couche 3GL. L'API d�finie par DBI
fonctionnera sur tous ces types de bases de donn�es.
On obtient un b�n�fice du m�me ordre en ayant la possibilit� de se
connecter � deux bases de donn�es de diff�rents fournisseurs � l'aide
du m�me script perl, i.e., je veux lire des donn�es d'une base de
donn�es Oracle et les ins�rer dans une Informix � partir du m�me
programme. La couche logicielle DBI permet de le r�aliser simplement
et efficacement.
DBperl est le nom ancien des sp�cifications de l'interface. Il est
utilis� maintenant pour d�signer les modules perl4 d'interfa�age des
bases de donn�es tels que oraperl, isqlperl, ingperl et autres. Ces
interfaces n'ont pas d'API standard et ne sont g�n�ralement pas
support�s.
Voici une liste des modules DBperl, de leur �quivalent DBI
correspondants et du support d'information. Notez que les auteurs
cit�s ici ne maintiennent g�n�ralement pas le module DBI de la base de
donn�es. Les adresses E-mail n'ont pas �t� v�rifi�es et ne doivent
�tre utilis�es que pour les questions concernant les modules perl4
list�s ci-dessous. Les questions sur les pilotes DBI doivent �tre
directement adress�es aux listes de diffusion des utilisateurs DBI.
Nom du module SGBD requis Auteur DBI
----------- ----------------- ------ ---
Sybperl Sybase Michael Peppler DBD::Sybase
<
[email protected]>
Oraperl Oracle 6 & 7 Kevin Stock DBD::Oracle
<
[email protected]>
Ingperl Ingres Tim Bunce & DBD::Ingres
Ted Lemon
<
[email protected]>
Interperl Interbase Buzz Moschetti DBD::Interbase
<
[email protected]>
Uniperl Unify 5.0 Rick Wargo None
<
[email protected]>
Pgperl Postgres Igor Metz DBD::Pg
<
[email protected]>
Btreeperl NDBM John Conover SDBM?
<
[email protected]>
Ctreeperl C-Tree John Conover None
<
[email protected]>
Cisamperl Informix C-ISAM Mathias Koerber None
<
[email protected]>
Duaperl X.500 Directory Eric Douglas None
User Agent
Cependant, certains modules DBI poss�dent des couches logicielles
d'�mulation. Ainsi DBD::Oracle est livr� avec une couche d'�mulation
Oraperl, ce qui permet d'ex�cuter d'anciens scripts oraperl sans modi�
fication. La couche logicielle d'�mulation traduit les appels oraperl
API en appels DBI et les ex�cute.
Voici une table des couches d'�mulation :
Module Couche d'�mulation �tat
------ --------------- ------
DBD::Oracle Oraperl Compl�te
DBD::Informix Isqlperl En cours de d�veloppement
DBD::Sybase Sybperl Fonctionnelle? ( N�cessite une
v�rification)
DBD::mSQL Msqlperl En version exp�rimentale avec
DBD::mSQL-0.61
L'�mulation Msqlperl est un cas particulier. Msqlperl est un pilote
perl5 pour les bases de donn�es mSQL , mais il ne se conforme pas aux
sp�cifications DBI. On d�sapprouve son utilisation en faveur de
DBD::mSQL. On peut t�l�-charger Msqlperl � partir du site CPAN via :
� <
http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl>
1111..22..55.. SSpp��cciiffiiccaattiioonnss DDBBII
Il existe quelques sources d'information sur DBI. Sp�cifications DBI
� <
http://www.hermetica.com/technologia/perl/DBI/doc/dbispec>
On trouve deux sp�cifications disponibles � cette adresse: la
nouvelle sp�cification Draft (�dition provisoire) DBI qui est un
document en �volution rapide � mesure que l'�quipe de d�veloppement
s'approche d'une version stable de l'interface, et l'ancienne
sp�cification historique DBperl � partir de laquelle l'interface
DBI actuelle a �volu�.
Il faut consid�rer ce dernier document comme ne pr�sentant qu'un
int�r�t historique et ne pas l'utiliser en tant que manuel de
programmation ou document de r�f�rence. Il demeure cependant une
source d'informations tr�s utile.
Documentation POD (Plain Old Documentation) Les PODs sont des morceaux
de documentation g�n�ralement noy�s � l'int�rieur des programmes perl
qui documentent le code "sur place". Ce sont des ressources tr�s
utiles pour les programmeurs et les utilisateurs des modules. Les PODs
pour DBI et pour les pilotes deviennent monnaie courante et la
documentation pour les modules contenant ces PODs peut �tre lue avec
les commandes suivantes.
La Sp�cification DBI Les PODs pour la sp�cification DBI peut �tre lue
avec la commande :
perldoc DBI
Oraperl Les utilisateurs de la couche d'�mulation fournie avec
DBD::Oracle, peuvent s'informer sur la mani�re de programmer en
utilisant l'interface Oraperl en tapant:
perldoc Oraperl
Ce qui permettra d'obtenir une copie � jour de la page de manuel
originale �crite par Kevin Stock pour perl4. L'API oraperl y est
enti�rement list�e et d�crite.
DBD::mSQL Les utilisateurs du module DBD::mSQL peuvent lire des
informations sur quelques fonctions priv�es et bizarreries de ce
pilote en tapant :
perldoc DBD::mSQL
Foire Aux Questions (FAQ) Ce document, la Foire Aux Questions, est
aussi disponible en tant que documentation POD! Vous pouvez le lire
sur votre propre syst�me en tapant :
perldoc DBI::FAQ
Ceci peut �tre plus pratique pour ceux qui ne sont pas connect�s �
l'Internet ou le sont d'une mani�re peu pratique.
Les POD en g�n�ral On peut lire des informations sur la mani�re
d'�crire des PODs, ainsi que sur la philosophie des PODs en g�n�ral en
tapant :
perldoc perlpod
Les utilisateurs ayant le module Tk install� seront peut-�tre
int�ress�s d'apprendre qu'il existe un lecteur de POD bas� sur Tk
nomm� tkpod. Il formate les POD de mani�re pratique et lisible.
Discussions, Cancans et Observations
� <
http://www.hermetica.com/technologia/perl/DBI/tidbits>
Il y a , de temps en temps, une s�rie de discussions de la part de
certaines personnes, dans les listes de diffusion sur DBI.
``DBI -- L'interface de SGBD en perl5'' C'est un article �crit par
Alligator Descartes et Tim Bunce sur la structure de DBI. Il a �t�
publi� dans le num�ro 5 de ``The Perl Journal''. Il est extr�mement
bon. Allez acheter ce magazine. En fait, achetez les tous. Le site
WWW de ``The Perl Journal'' est :
� <
http://www.tpj.com>
``DBperl'' Cet article, publi� dans l'�dition de novembre 1996 du
``Dr. Dobbs Journal'' traitait de DBperl.
``The Perl5 Database Interface'' Cette r�f�rence est celle d'un livre
� �crire par Alligator Descartes publi� par O'Reilly et Associ�s.
Listes de diffusion Il y a trois listes de diffusion pour DBI g�r�es
par Ted Lemon. On peut s'inscrire � toutes et r�silier cette
inscription � travers le World Wide Web � :
� Listes de diffusion <
http://www.fugue.com/dbi>
Les listes o� les utilisateurs peuvent participer sont:
ddbbii--aannnnoouunnccee Cette liste de diffusion est r�serv�e uniquement aux
annonces. Si vous n'arrivez pas � utiliser le formulaire sur la page
WWW indiqu�e ci-dessus, inscrivez-vous � cette liste de la mani�re
suivante :
� Email:
[email protected]
avec le mot 'subscribe' dans le corps du message.
ddbbii--ddeevv Cette liste de diffusion est � l'usage des d�veloppeurs pour
discuter des id�es et des concepts de l'interface DBI, API et des
m�canismes des pilotes. Seulement utiles pour les d�veloppeurs et les
personnes int�ress�es. Trafic faible. Si vous n'arrivez pas �
utiliser le formulaire sur la page WWW indiqu�e ci-dessus, inscrivez-
vous � cette liste de la mani�re suivante :
� Email:
[email protected]
avec 'subscribe' dans le corps du message.
ddbbii--uusseerrss Cette liste de diffusion est un lieu de discussion g�n�rale
utilis�e pour les rapports d'erreurs, la discussion sur diff�rents
probl�mes et des demandes de renseignement d'int�r�t g�n�ral. Si vous
n'arrivez pas � utiliser le formulaire sur la page WWW indiqu�e ci-
dessus, inscrivez-vous � cette liste de la mani�re suivante :
� Email:
[email protected]
avec 'subscribe' dans le corps du message.
Archives des Listes de Diffusion
� Archive des listes de diffusion US
<
http://outside.organic.com/mail-archives/dbi-users/>
� Archive des listes de diffusion Europ�ennes <
http://www.rosat.mpe-
garching.mpg.de/mailing-lists/PerlDB-Interest>
1111..22..66.. PPrroobbll��mmeess ddee ccoommppiillaattiioonn oouu ""IIll ��cchhoouuee aauuxx tteessttss""
Si vous avez un vidage m�moire, essayez le module Devel::CoreStack
pour g�n�rer une trace de la pile du vidage m�moire. On peut trouver
Devel::CoreStack � :
� <
http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack>
Envoyez un courrier �lectronique sur la Liste dbi-users contenant la
trace de la pile, les versions des modules, la version de perl, les
situations de test, la version du syst�me d'exploitation et toutes
autres informations pertinentes. Plus vous fournirez d'informations
plus vite les d�veloppeurs pourront r�soudre les probl�mes. Si vous ne
nous envoyez rien, n'attendez rien en retour.
1111..22..77.. DDBBII eesstt--iill ssuuppppoorrtt�� ssuurr lleess ppllaatteess--ffoorrmmeess WWiinnddoowwss 9955 // NNTT ??
Les portages de DBI et de DBD::Oracle pour Win32 ports font maintenant
partie int�grante de DBI, donc, la r�cup�ration d'une version de DBI
sup�rieure � 0.81 doit donner satisfaction. Vous pouvez acc�der aux
bases de donn�es Microsoft Access et SQL-Server � partir de DBI via
ODBC. Une "couche d'�mulation" DBI exp�rimentale est fournie avec
DBI-0.79 (et suivants ) pour le module Win32::ODBC. Son nom est
DBI::W32ODBC. Vous aurez besoin du module Win32::ODBC.
� Win32 DBI <
http://www.hermetica.com/technologia/perl/DBI/win32>
� Win32 ODBC <
http://www.roth.net>
1111..22..88.. QQuu''eesstt--ccee qquuee DDBBMM?? EEtt ppoouurrqquuooii ddooiiss--jjee uuttiilliisseerr DDBBII �� ssaa
ppllaaccee??
A l'origine UNIX �tait bienheureux avec sa "Base de Donn�es" rustique
reposant sur des fichiers, nomm�e syst�me dbm. Avec dbm vous
enregistrez les donn�es dans des fichiers et les retrouvez rapidement.
Cependant, il souffre de s�rieux inconv�nients.
Verrouillage des fichiers
Les syst�mes dbm ne permettent par un verrouillage particuli�rement
robuste des fichiers, de m�me qu'il n'y a pas de possibilit� de
corriger les probl�mes survenants lors d'�critures [ dans la base de
donn�es ] simultan�es.
Structures de Donn�es Arbitraires
Les syst�mes dbm permettent seulement une simple structure de donn�es
fixe: paires cl�-valeur. Cette valeur peut �tre un objet complexe, tel
qu'une structure [ C ], mais la cl� doit �tre unique. Ce fut une
grande limitation dans l'utilit� des syst�mes dbm.
Cependant, les syst�mes dbm continuent d'offrir des fonctions utiles
pour les utilisateurs ayant des ensembles de donn�es simples et des
ressources limit�es, puisqu'ils sont rapides, robustes et extr�mement
bien test�s. Les modules Perl pour acc�der aux syst�mes dbm font
maintenant partie int�grante de la distribution Perl via le module
AnyDBM_File.''
Pour r�sumer, DBM est une solution parfaitement satisfaisante pour les
bases de donn�es essentiellement en lecture seule, ou pour des
ensembles de donn�es simples et r�duits. Toutefois, pour des ensembles
de donn�es plus importants, sans mentionner un verrouillage des
transactions robuste, on recommandera aux utilisateurs de pr�f�rer
DBI.
1111..22..99.. EEsstt--ccee qquuee << iinnss��rreezz uunnee ffoonnccttiioonnnnaalliitt�� iiccii >> eesstt ssuuppppoorrtt��
ppaarr DDBBII??
Si l'on suppose que la fonctionnalit� en question n'est pas, en
standard, sp�cifique d'un SGBD, alors la r�ponse sera non.
DBI repr�sente un API qui doit fonctionner avec la plupart des SGBD,
et n'a pas de fonctionnalit� sp�cifique � un SGDB particulier.
Cependant, les auteurs d'un pilote peuvent, s'ils le d�sirent, ajouter
une fonctionnalit� sp�cifique � un SGBD � travers les m�thodes func
d�finies dans l'API DBI. Les d�veloppeurs de Scripts doivent noter que
l'utilisation de cette fonctionnalit� au travers de ces m�thodes func
a de bonnes chances d'en sacrifier la portabilit� entre les diff�rents
SGBD.
1111..22..1100.. EEsstt--ccee qquuee DDBBII eesstt dd''uunnee qquueellccoonnqquuee uuttiilliitt�� ppoouurr llaa pprrooggrraamm��
mmaattiioonn CCGGII??
En un mot, oui! DBI est extr�mement utile pour la programmation CGI!
En fait, la programmation CGI est une des deux principales utilisation
de DBI.
DBI conf�re aux programmeurs CGI la possibilit� d'offrir des base de
donn�es WWW � leurs utilisateurs, ce qui donne � ces utilisateurs la
possibilit� d'utiliser de grandes quantit�s de donn�es bien
organis�es. DBI donne aussi la possibilit� , si un site re�oit un
trafic trop important pour les performances du serveur, d'am�liorer ce
serveur de base de donn�es de fa�on transparente, sans modifier les
scripts CGI.
1111..22..1111.. CCoommmmeenntt ppuuiiss--jjee oobbtteenniirr uunn tteemmppss ddee ccoonnnneexxiioonn pplluuss rraappiiddee
aavveecc DDBBDD::::OOrraaccllee eett CCGGII CCGGII??
Le serveur httpd Apache maintient un ensemble de processus fils httpd
pour servir les requ�tes clients.
En utilisant le module mod_perl Apache de Doug MacEachern,
l'interpr�teur perl est inclus dans le processus fils httpd. Les
modules CGI, DBI, et vos autres modules favoris peuvent �tre charg�s
au lancement de chaque processus fils. Ces modules ne seront pas
recharg�s � moins d'�tre modifi�s sur disque.
Pour de plus amples informations sur Apache, consultez le site WWW du
Projet Apache � :
� Site WWW du Projet Apache <
http://www.apache.org>
� Module Mod_perl <
http://www.perl.com/cgi-
bin/cpan_mod?module=mod_perl>
1111..22..1122.. CCoommmmeenntt ppuuiiss--jjee oobbtteenniirr uunnee ccoonnnneexxiioonn ppeerrssiissttaannttee aavveecc DDBBII
eett CCGGII??
En utilisant le module Apache::DBI de Edmund Mergl, les connexions �
la base de donn�es sont enregistr�es dans une table avec chacun des
processus httpd fils. Si votre application utilise une base de donn�es
simple utilisateur, cette connexion peut �tre lanc�e avec chaque
processus fils. Actuellement, les connexions � la base de donn�es ne
peuvent pas �tre partag�es entre processus httpd fils. Apache::DBI
peut �tre t�l�-charg� de CPAN via :
� <
http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI>
1111..22..1133.. ""QQuuaanndd jjee llaannccee uunn ssccrriipptt ppeerrll ddee llaa lliiggnnee ddee ccoommmmaannddee,, ��aa
mmaarrcchhee,, mmaaiiss,, qquuaanndd jjee llee llaannccee ssoouuss hhttttppdd,, ��aa ��cchhoouuee!!"" PPoouurrqquuooii??
Fondamentalement, il y a une bonne chance que cela provienne du fait
que l'utilisateur � partir duquel vous avez lanc� la ligne de commande
a un ensemble de variables d'environnement correctement configur�, ce
sont, dans le cas de DBD::Oracle, des variables telles que
$ORACLE_HOME, $ORACLE_SID ou TWO_TASK. Le processus httpd s'ex�cute
habituellement sous un utilisateur id ne correspondant pas � un
utilisateur, ce qui implique qu'il n'y a pas d'environnement
configur�. Tous scripts essayant de s'ex�cuter dans ces circonstances
�choueront. Pour r�soudre ce probl�me, initialisez l'environnement de
votre base de donn�es dans un bloc BEGIN ( ) en t�te de votre script.
Ceci devrait r�soudre votre probl�me. De m�me, vous devriez regarder
votre fichier registre d'erreurs pour y trouver des indices, ainsi que
les guides "Idiot's Guide To Solving Perl / CGI Problems" et "Perl
CGIProgramming FAQ" pour avoir des informations compl�mentaires. Il
est peu probable que ce probl�me concerne DBI. Lisez ces DEUX
documents tr�s soigneusement !
� Idiot's Guide to Solving Perl / CGI problems
<
http://www.perl.com/perl/faq/index.html>
1111..22..1144.. PPuuiiss--jjee ffaaiirree ddee ll''eexx��ccuuttiioonn eenn ppaarraallll��llee aavveecc DDBBII??
A la date de ce document, non. perl ne permet pas l'ex�cution en
parall�le. Cependant, l'ex�cution en parall�le doit faire partie de la
distribution perl de base � compter de la version 5.005, ce qui sous-
entend que le support de l'ex�cution en parall�le pour DBI devrait
suivre rapidement. Pour quelques exemples de code OCI pour Oracle
ayant des instructions SELECT avec ex�cution en parall�le, voir :
� <
http://www.hermetica.com/technologia/oracle/oci/orathreads.tar.gz>
1111..22..1155.. CCoommmmeenntt ppuuiiss--jjee iinnvvooqquueerr ddeess pprroocc��dduurreess eennrreeggiissttrr��eess aavveecc
DDBBII??
En supposant que vous avez cr�� une proc�dure enregistr�e �
l'int�rieur de la base de donn�es cible, e.g., une base de donn�es
Oracle, vous pouvez utiliser $ dbh-> do pour ex�cuter imm�diatement
cette proc�dure. Par exemple,
$ dbh-> do( "BEGIN someProcedure END" );
1111..22..1166.. CCoommmmeenntt ppuuiiss--jjee rr��ccuupp��rreerr lleess vvaalleeuurrss ddee rreettoouurr ddee
pprroocc��dduurreess eennrreeggiissttrr��eess aavveecc DDBBII??
N'oubliez pas d'effectuer un test d'erreur, strict!
$sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" );
$sth->bind_param(1, $a);
$sth->bind_param_inout(2, \$path, 2000);
$sth->bind_param_inout(3, \$success, 2000);
$sth->execute;
1111..22..1177.. CCoommmmeenntt ppuuiiss--jjee ccrr��eerr oouu ssuupppprriimmeerr uunnee bbaassee ddee ddoonnnn��eess aavveecc
DDBBII??
La cr�ation et la suppression de bases de donn�es sont des concepts
qui sont beaucoup trop abstraits pour �tre support�s par DBI. Par
exemple, Oracle ne supporte pas le concept de d�truire une base de
donn�es du tout ! Ainsi, dans Oracle, le serveur de base de donn�es
est essentiellement la base de donn�es elle-m�me alors que dans mSQL,
le processus serveur s'ex�cute tranquillement sans aucune base de
donn�es cr��e. C'est un probl�me trop h�t�rog�ne pour s'y attaquer.
Quelques pilotes, cependant, supportent la cr�ation et la suppression
de bases de donn�es � travers des m�thodes func priv�es. Il vous faut
regarder dans la documentation des pilotes que vous utilisez pour
v�rifier s'ils supportent de tels m�canismes.
1111..22..1188.. CCoommmmeenntt lleess vvaalleeuurrss NNUULLLL ssoonntt--eelllleess pprriisseess eenn ccoommppttee ppaarr
DDBBII??
Les valeurs NULL dans DBI sont trait�es comme la valeur undef. Des
NULLs peuvent �tre ins�r�s dans les bases de donn�es en tant que NULL,
par exemple :
$rv =
$dbh->do( "INSERT INTO table VALUES( NULL )" );
mais lors d'une interrogation, les NULLs devront �tre test�s comme des
undef. C'est une norme pour tous les pilotes.
1111..22..1199.. QQuu''eesstt--ccee qquuee cc''eesstt qquuee cceess hhiissttooiirreess ddee mm��tthhooddeess ffuunncc??
Une m�thode func est d�finie � l'int�rieur de DBI comme �tant un point
d'entr�e pour une fonctionnalit� d'une base de donn�es sp�cifique, eg,
la possibilit� de cr�er ou supprimer des bases de donn�es.
L'invocation de ces m�thodes sp�cifiques aux pilotes est simple. Par
exemple, pour invoquer une m�thode createDatabase qui n'a qu'un seul
argument, on �crira :
$rv = $dbh->func( 'argument', 'createDatabase' );
Les d�veloppeurs de logiciels doivent cependant noter que ces m�thodes
func ne sont pas portables entre SGBD.
1111..22..2200.. AAssssiissttaannccee eett ffoorrmmaattiioonn ppaayyaannttee
L'interface aux SGBD Perl5 est un logiciel LIBRE. IL EST DISTRIBUE
SANS GARANTIE D'AUCUNE SORTE. Cependant, quelques organisations
fournissent soit une assistance technique soit des programmes de
formation pour DBI.
PPEERRLL CCLLIINNIICC :: La soci�t� "Perl Clinic" peut offrir des contrats
d'assistance payants pour Perl, DBI, DBD::Oracle et Oraperl. Cette
assistance est fournie par la compagnie o� travaille Tim Bunce, auteur
de DBI. Pour de plus amples informations concernant leurs services,
consultez :
� <
http://www.perl.co.uk/tpc>
1122.. OOuuttiillss ddee GGeessttiioonn PPoossttggrreeSSQQLL
1122..11.. PPGGAACCCCEESSSS -- UUnn GGUUII ppoouurr llaa ggeessttiioonn ddee PPoossttggrreeSSQQLL
PgAccess est une interface Tcl/Tk � PostgreSQL. Il est d�j� inclus
dans la distribution de PostgreSQL. Pour une copie plus r�cente, vous
pouvez acc�der au site web :
� <
http://www.flex.ro/pgaccess>
� Si vous avez des commentaires, des suggestions pour des
am�liorations, n'h�sitez pas � envoyer un courrier �lectronique � :
[email protected]
Fonctionnalit�s de PgAccess
Fen�tres de PgAccess : Fen�tre principale, cr�ateur de tables, vue de
table (interrogation), cr�ateur visuel d'interrogation .
Tables
� - Ouverture de tables pour la visualisation, 200 enregistrements
maximum ( modifiable dans le menu des pr�f�rences )
� - re-dimensionnement d'une colonne en tirant la ligne verticale de
la grille ( plus pratique � r�aliser � l'int�rieur m�me de la table
que dans l'en-t�te)
� - texte encadr� dans les cellules - disposition enregistr�e pour
chacune des tables)
� - importation/exportation vers des fichiers externes (SDF,CSV)
� - possibilit� de filtres (filtre de saisie, tel que (prix>3.14)
� - possibilit�s de tri (saisie manuelle de(s) champ(s) � trier)
� - �dition en ligne
� - assistant g�n�rateur de table am�lior�
� - �dition de champ am�lior�e
Requ�tes
� - d�finition, �dition et enregistrement de "requ�tes d�finies par
l'utilisateur"
� - enregistrement de requ�tes en tant que vues
� - ex�cution des requ�tes
� - visualisation des r�sultats de requ�tes de type select
� - suppression et changement de nom de requ�te
� - cr�ateur visuel de requ�tes avec possibilit�s de
"glisser/d�poser". Pour tous ceux d'entre vous qui ont l'extension
pour Netscape Navigator de Tcl/Tk install�e, vous pouvez le voir au
travail en cliquant ici
S�quences
� - d�finition de s�quences, ainsi que leurs suppression et
inspection Fonctions
� - d�finition, inspection et suppression de fonctions en langage SQL
Les futures impl�mentations disposeront
� - de la conception des tables (ajout de nouveaux champs, changement
de nom, etc.)
� - de la d�finition de fonction
� - d'un g�n�rateur de rapport
� - d'un langage de script de base
Si vous avez des commentaires, ou des suggestions d'am�lioration,
envoyez un courrier �lectronique � :
�
[email protected]
Informations concernant libgtcl
Vous aurez �galement besoin de la biblioth�que d'interface de
PostgreSQL � Tcl, disponible comme module Tcl/Tk chargeable. Son nom
est libpgtcl et le source est situ� dans le r�pertoire PostgreSQL
/src/interfaces/libpgtcl. Pr�cis�ment, vous aurez besoin d'une
biblioth�que libpgtcl qui soit "chargeable" � partir de Tcl/Tk. Ce
qui est techniquement diff�rent d'un fichier objet chargeable
PostgreSQL ordinaire, car libpgtcl est constitu�e d'un ensemble de
fichiers objets. Sous Linux, on l'appelle libpgtcl.so. Vous pouvez
t�l�-charger � partir d'ici une version d�j� compil�e pour les
syst�mes Linux i386. La seule chose � faire est de copier libpgtcl.so
dans le r�pertoire biblioth�que syst�me (/usr/lib) et c'est tout. Une
solution possible est de supprimer dans le source la ligne contenant
load libpgtcl.so et de charger pgaccess.tcl non pas avec wish, mais
avec pgwish (ou wishpg) le wish qui a �t� li� avec la biblioth�que
libpgtcl.
1122..22.. OOuuttiill WWiinnddoowwss iinntteerraaccttiiff ddee gg��nn��rraattiioonn ddee rreeqquu��ttee ppoouurr PPoosstt��
ggrreeSSQQLL
("Windows Interactive Query Tool" WISQL ou MPSQL) MPSQL offre une
interface SQL graphique � PostgresSQL. MPSQL est identique � la
feuille de programmation SQL d'Oracle et au serveur de requ�te SQL de
Microsoft WISQL! Il dispose d'un GUI agr�able et d'un historique des
commandes. Vous pouvez utiliser le coup�/coll� ainsi que d'autres
fonctionnalit�s sympathiques pour accro�tre votre productivit�.
� <
http://www.troubador.com/~keidav/index.html>
� Email :
[email protected]
� <
http://www.ucolick.org/~de/> dans le fichier tcl_syb/wisql.html
� <
http://www.troubador.com/~keidav/index.html>
� Email :
[email protected]
1122..33.. OOuuttiill iinntteerraaccttiiff ddee gg��nn��rraattiioonn ddee rreeqquu��ttee ppoouurr PPoossttggrreeSSQQLL --
IISSQQLL
ISQL est destin� aux terminaux fonctionnants en mode ligne de
commande. C'est inclus dans la distribution et nomm� PSQL. Il est
tr�s similaire � Sybase ISQL, et � Oracle SQLplus. A l'invite unix
tapez la commande 'psql' qui en retour vous affichera le caract�re
d'attente de commande: psql> .
Tapez /h pour obtenir de l'aide sur les commandes utilisables.
C'est tr�s convivial et d'utilisation facile. C'est aussi tr�s utile
pour �crire des scripts pour les interpr�teurs de commandes.
1122..44.. MMPPMMGGRR -- UUnn oouuttiill ddee ggeessttiioonn ddee BBaassee ddee DDoonnnn��eess ppoouurr PPoossttggrreessSSQQLL
MPMGR fournira un outil graphique de gestion de Base de Donn�es pour
PostgresSQL. Vous pouvez le trouver �
� <
http://www.mutinybaysoftware.com/>
� Email:
[email protected]
� <
http://www.troubador.com/~keidav/index.html>
� Email:
[email protected]
� <
http://www.troubador.com/~keidav/index.html>
� <
http://www.ucolick.org/~de> dans le fichier tcl_syb/wisql.html
� WISQL for PostgreSQL <
http://www.ucolick.org/~de/Tcl/pictures>
� Email:
[email protected]
1133.. MMiissee eenn ppllaaccee ddee pplluussiieeuurrss mmaacchhiinneess PPoossttggrreeSSQQLL aavveecc uunn sseeuull mmoonnii��
tteeuurr
Vous pouvez empiler plusieurs cpu et les connecter � un unique
moniteur en utilisant un commutateur KVM (Keyboard, Video, Monitor)
pour choisir la connexion avec une unit� centrale particuli�re. Ce qui
�conomise de l'espace et �vite l'utilisation de plusieurs �crans,
claviers et mulots (�conomisant environ de 100 � 500 US dollars par
ensemble) et �vite aussi pas mal de pagaille.
En utilisant ce commutateur, vous pouvez empiler plusieurs serveurs
PostgreSQL (d�veloppement, test, production), serveurs Web, serveurs
ftp, serveurs Intranet, serveur de Courrier, serveurs de Nouvelles,
sur une �tag�re. Le bo�tier commutateur peut �tre �galement utilis�
pour contr�ler des machines Windows 95/NT ou OS/2.
Veuillez consulter ces sites :
� DataComm Warehouse Inc.au 1-800-328-2261. Ils fournissent toutes
sortes de mat�riels informatique <
http://www.warehouse.com> Un
commutateur manuel 4-ports KVM (PS/2) vaut environ $89.99.
R�f�rence de l'article : DDS1354
� Network Technologies Inc
<
http://www.networktechinc.com/servswt.html> (120 dollars/PC 8
ports) qui propose des commutateurs de serveurs 'Server Switches'
et des commutateurs uniquement vid�o
� Scene Double Inc, England
<
http://www.scene.demon.co.uk/qswitch.htm>
� Cybex corporation <
http://www.cybex.com>
� Raritan Inc <
http://www.raritan.com>
� RealStar Solutions Inc <
http://www.real-star.com/kvm.htm>
� Belkin Inc <
http://www.belkin.com>
� DataComm Warehouse Inc Appels 24 heures sur 24, 7 jours sur 7 au
1-800-328-2261 Ils fournissent toutes sortes de mat�riels
d'ordinateur <
http://www.warehouse.com>
� Better Box Communications Ltd.
<
http://www.betterbox.com/info.html>
� Allez chez votre marchand de mat�riel le plus proche et demandez un
commutateur de serveur "Server Switch" �galement connu sous le nom
"KVM Auto Commutateurs".
Utilisez le moteur de recherche yahoo pour trouver d'autres compagnies
en utilisant la cl� de recherche 'Server Switches' ou "KVM Switches".
Pour avoir de meilleures performances, on recommande instamment
d'avoir une machine unix pour chaque processus serveur PostgreSQL.
Aucun autre programme/traitement ne doit tourner sur cette machine.
Consultez la page Affaires de votre journal local pour trouver des
vendeurs de machines intel nues, avec un moniteur monochrome de 13"
(moniteur particuli�rement �conomique). Les vendeurs locaux vendent
uniquement du mat�riel SSAANNSS un quelconque Microsoft Windows/DOS (ce
qui vous fait �conomiser environ $ 150). Vous n'avez pas besoin d'un
moniteur couleur pour un serveur de base de donn�es puisque vous
pouvez en effectuer l'administration � distance � partir d'une station
de travail PC couleur. Procurez-vous le cdrom Linux � l'adresse ci-
dessous -
� Site Web Linux System Labs : <
http://www.lsl.com/> 7 (U.S.
dollars)
� Site Web Cheap Bytes Inc : <
http://www.cheapbytes.com/> 7 (U.S.
dollars)
Assurez-vous que le mat�riel que vous achetez est support� par le
Linux Redhat. V�rifiez sur le site ftp de Redhat le mat�riel
recommand� tels que les coupleurs SCSI, les cartes video avant
d'acheter. Pour seulement $ 600 vous obtiendrez une machine intel
puissante avec un Linux Redhat faisant tourner PostgreSQL.
Utilisez odbc/jdbc/perl/tcl pour vous connecter � PostgreSQL �
partir de Windows95, OS/2, Unix Motif ou de butineurs web (e.g.
Redbaron, Opera, Netscape, 20 autres). (Les butineurs web sont en
train de rapidement devenir le client standard).
En suivant ce conseil, vous pouvez contr�ler de nombreux syst�mes �
l'aide de seulement un clavier et un moniteur!
On trouvera ci-dessous un eexxttrraaiitt dduu ccaattaalloogguuee ddee nneettwwoorrkktteecchhnniicc IInncc
Commandez maintenant, appelez le 800-742-8324 (appel gratuit � partir
des USA)
Pour recevoir notre catalogue, veuillez envoyer votre adresse par
courrier �lectronique � :
[email protected]
PILOTEZ PLUSIEURS PC's avec un seul clavier, �cran et mulot Ces
commutateurs �lectroniques permettent de piloter jusqu'� 64 PC's avec
un unique clavier, �cran et mulot. Son microprocesseur interne simule
la pr�sence constante du clavier, de l'�cran et du mulot pour chacun
des PC's connect�s.
Fonctionnalit�s et Applications
� Clavier, face avant ou commande � distance
� utilisation de connecteurs de mulots 9 broches D S�rie ou 6 broches
miniDIN
� utilisation de connecteurs de clavier 5 broches DIN ou 6 broches
miniDIN
� r�solution vid�o 1600x1200 sans d�gradation
� Utilisation de c�bles standards
� Bo�tier pour bureau ou pour montage en rack
Sp�cifications - Clavier
� Tous les connecteurs dont femelles
� 5 broches DIN ou 6 broches miniDIN
� Permettent un Re-d�marrage (boot) mat�riel ou logiciel de tous les
PC's � chaque instant
Contr�les - Boutons en face avant
� Le toucher d'un bouton permet la connexion au PC correspondant
� L'appui sur un bouton pendant plus de 0.5 secondes entra�ne le
fonctionnement dans les modes SCAN, BROADCAST ou COMMAND
� Les LEDs en face avant indiquent le mode d'op�ration du clavier
� L'appui sur CTRL+* entra�ne le fonctionnement en mode COMMAND
� Les modes SCAN, BROADCAST ou COMMAND sont disponibles
Mulot
* 9 broches D s�rie
� o Le commutateur NTI �mule le mulot Microsoft s�rie pour tous les
PC's
� o 9 broches D m�le pour mulot
� o 9 broches D femelle pour PC's
* 6 broches miniDIN
� o Le commutateur NTI �mule le mulot IBM PS/2 pour tous les PC's
� o Tous les connecteurs sont femelles
Par c�ble, � distance
� Optionnel--doit �tre acquis s�par�ment
� Fonctionnement identique � celui "Boutons en face avant"
Moniteur (�cran) - VGA
� Bande passante 150 MHz
� R�solution 1600X1200 sans d�gradation
� Tous les connecteurs sont des connecteurs femelles
1144.. OOuuttiillss eett AApppplliiccaattiioonnss ppoouurr PPoossttggrreeSSQQLL
1144..11.. LLee ssyysstt��mmee ddee dd��vveellooppppeemmeenntt AAppppGGEENN PPoossttggrreeSSQQLL 44GGLL ppoouurr lleess
aapppplliiccaattiioonnss ddee bbaasseess ddee ddoonnnn��eess wweebb --
AppGEN peut �tre t�l�-charg� de
� <
http://www.man.ac.uk/~whaley/ag/appgen.html>
� <
ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN>.
AppGEN est un langage de haut niveau de la quatri�me g�n�ration
ainsi qu'un g�n�rateur d'application pour produire des applications
destin�es au World Wide Web (WWW). Ces applications sont
typiquement utilis�es � travers l'internet ou dans le cadre d'un
r�seau intranet d'entreprise. Les applications AppGEN sont
implant�es en scripts C respectants la norme Common Gateway
Interface (CGI) utilis� par la plupart des serveurs Web.
Pour utiliser AppGEN il vous faudra disposer de :-
PostgresSQL, syst�me de gestion de base de donn�es relationnel
Un serveur web compatible CGI tel que HTTPD du NCSA
D'un compilateur ANSI C tel que GCC
AppGEN est constitu� des ex�cutables Unix (Linux) suivants :-
� defgen, qui produit une application cadre, de base, � partir de la
structure logique des donn�es. Ces applications sont capables
d'ajouter, de mettre � jour, de supprimer et de rechercher les
enregistrements d'une base de donn�es tout en conservant
automatiquement l'int�grit� r�f�rentielle de cette base.
� appgen, le compilateur AppGEN qui compile le code source appgen en
code source C CGI ex�cutable et en documents format�s HTML pr�ts
pour leur d�ploiement sur un serveur web.
� dbf2sql, un utilitaire de conversion de fichiers .dbf compatibles
dBase III en scripts SQL ex�cutables. Ce qui permet de migrer les
donn�es stock�es dans la plupart des bases de donn�es DOS/Windows
vers un serveur SQL tel que PostgresSQL.
� De plus, AppGEN comprend un ensemble de documents HTML , de
fichiers GIF et d'applets Java qui sont utilis�s, � l'ex�cution,
par le syst�me. Et, naturellement, comme pour tout bon logiciel, la
totalit� du code source est fournie.
L'auteur, Andrew Whaley, peut �tre contact� �
�
[email protected]
1144..22.. WWWWWW WWeebb iinntteerrffaaccee ppoouurr PPoossttggrreessSSQQLL -- DDBBEENNGGIINNEE
dbengine est une interface Web "plug 'n play" pour Postgres95 cr��e
par Ingo Ciechowski. Il est � :
� <
http://www.cis-computer.com/dbengine/ >
AA pprrooppooss ddee DDBBEENNGGIINNEE :: dbengine est une interface entre le WWW et
Postgres95 qui permet un acc�s simple � n'importe quelle base de
donn�es existante en seulement quelques minutes.
PHP 3 offre une sorte de langage Perl dans vos documents, mais pas le
vrai Perl alors que AppGen et wdb-p95 n�cessite la cr�ation d'un
fichier de configuration pour chacune de vos bases de donn�es -- c'est
un peu comme si vous deviez apprendre un nouveau m�ta-langage avant de
pouvoir commencer � travailler.
A la diff�rence des autres outils, vous n'avez pas � apprendre un
langage de programmation particulier ou un langage de script pour
commencer � utiliser dbengine. De plus, il n'y a pas � cr�er de
fichier de configuration pour chaque base de donn�es, et vous n'avez
donc pas besoin de vous familiariser avec sa structure. Cependant -
au cas o� vous voudriez profiter de toutes les possibilit�s de
dbengine, ce serait une bonne id�e de conna�tre le langage Perl.
Le syst�me tout entier peut �tre configur� � l'aide de simples
manipulations d'une base de donn�es compl�mentaire qui contient les
informations de d�tail sur la mani�re de visualiser vos acc�s � la
base de donn�es. Vous pouvez m�me sp�cifier des Champs Virtuels qui
sont calcul�s en temps r�el avant d'�tre affich�s � l'�cran.
LLiicceennccee ::
dbengine est un logiciel libre selon les m�mes conditions que Perl.
Lisez sa licence si vous n'�tes pas s�r de ce que vous pouvez ou ne
pouvez pas faire. La derni�re ligne indique que c'est une version
plus gentille et plus mod�r�e que celle de la licence GNU -- une de
celle qui n'affecte pas votre travail si vous extrayez des parties de
dbengine ou du paquetage pour l'inclure dans un produit commercial!
1155.. MMoodduullee AAppaacchhee WWeebbsseerrvveerr ppoouurr PPoossttggrreeSSQQLL -- NNeeooSSoofftt NNeeooWWeebbSSccrriipptt
Apache est un serveur Web bien connu. On trouvera un module
d'interface de PostgreSQL pour le serveur Web Apache � -
� <
http://www.neosoft.com/neowebscript/>
NeoWebScript est un langage de programmation qui permet d'inclure
des programmes simples ou compliqu�s dans des fichiers HTML.
Quand une page HTML contenant un script NeoWebScript est appel�e, le
serveur Web ayant le NeoWebScript activ�, ex�cute le(s) script(s)
inclus, produisant une page Web dont le contenu, personnalis�, a �t�
cr�� par le programme.
NeoWebScript est un moyen rapide, s�re, facile � apprendre de cr�er
des programmes interactifs puissants directement en code HTML dans des
pages Web. Avec NeoWebScript, les compteurs, les formulaires de
courrier �lectronique, murs � graffitis, livres d'or et suivi des
visiteurs sont ais�s, m�me pour un programmeur d�butant. Regardez
comment NeoWebScript se d�fend bien par rapport � PERL et JavaScript.
Au cas o� vous souhaiteriez installer NeoWebScript sur votre serveur
web, votre webmestre doit lire notre "FAQ Sysop" pour se lancer. Le
document "Th�orie de fonctionnement" explique comment NeoWebScript
fonctionne, celui d'Installation est un guide pas � pas des op�rations
� effectuer. Le guide de Gestion traite de la mani�re de configurer et
de faire fonctionner le serveur, celui de Tests permet de v�rifier le
fonctionnement correct de NeoWebScript, enfin, celui de Maintenance
traite des probl�mes de serveur.
Il n'y a aucuns frais pour l'utilisation de NeoWebScript-2.2 que ce
soit pour votre ISP, votre intranet, ou votre extranet. Vous pourrez
voir un licence compl�te quand vous vous enregistrerez pour
t�l�-charger le logiciel, mais il en co�te $ 99 si vous d�sirez
l'inclure dans votre propre produit ou l'utiliser dans un serveur
commercial (eg. SSL).
NeoWebScript est un module pour le serveur web Apache qui vous permet
d'inclure , en tant que langage de script, pour vos pages web, le
langage de programmation Tcl/Tk . Il a �t� invent� par Karl
Lehenbauer, Directeur Technique chez NeoSoft, et document�, renforc�
et �tendu par les programmeurs de NeoSoft et par des r�dacteurs
techniques.
Le serveur Apache est le serveur web le plus populaire au monde,
totalisant 68 % des sites interrog�s.
Tcl/Tk est un langage de script puissant, libre et multi-plateformes
d�velopp� par le Dr. John Ousterhout. Selon ses propres termes :
"Tcl/Tk permet aux d�veloppeurs de logiciels de r�aliser un travail
dix fois plus rapidement qu'avec des outils bas�s sur C ou C++. C'est
aussi un grand langage de synth�se permettant de faire travailler
ensemble des applications existantes en les rendant plus graphiques et
orient�es Internet."
Karl Lehenbauer, Fondateur et Directeur Technique de NeoSoft, a
particip� au d�veloppement de Tcl/Tk d�s le tout d�but. Avec Mark
Diehkans, ils sont les auteurs de Tcl �tendu (Extended Tcl), connu
�galement sous le nom de TclX ou NeoSoft Tcl, qui constitue un
ensemble puissant d'extensions au langage. Beaucoup des commandes
courantes essentielles de Tcl proviennent de Tcl �tendu, et furent
introduites dans le langage par le Dr. Ousterhout.
NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA
1155..11.. HHEEIITTMMLL,, eexxtteennssiioonn,, cc��tt�� sseerrvveeuurr ddee HHTTMMLL eett llaannggaaggee 44GGLL ppoouurr
PPoossttggrreeSSQQLL
Heitml est un autre outil d'interfa�age de postgres avec le monde du
world wide web. Pour plus de d�tails contacter
Helmut Emmelmann H.E.I. Informationssyteme GmbH
Wimpfenerstrasse 23 Tel. 49-621-795141
68259 Mannheim Germany Fax. 49-621-795161
� E-mail Mr.Helmut Emmelmann at
[email protected]
� Heitml site web principal <
http://www.heitml.com>
� Heitml site web secondaire <
http://www.h-e-i.deom>
Heitml est � la fois une extension, c�t� serveur, de HTML et un
langage de la quatri�me g�n�ration (4GL). Avec lui, on peut �crire des
applications web dans un style HTML et en utilisant de nouvelles
balises de style HTML.
heitml (prononc� "H-ail"-TML) est une extension de HTML et un langage
de quatri�me g�n�ration complet permettant aux Applications utilisant
le web d'interagir avec des donn�es stock�es dans des bases de donn�es
SQL, sans m�riter l'�criture de scripts CGI complexes.
heitml �tend HTML c�t� serveur, convertissant de mani�re dynamique les
fichiers ".hei" au format HTML et ainsi, les rendant compatibles avec
n'importe quel butineur web. Il englobe la syntaxe simple et famili�re
de HTML et apporte un large assortiment de Balises et de Biblioth�ques
pr�-d�velopp�es pour prendre en charge les t�ches qui auparavant
n�cessitaient CGI. De m�me que XML, heitml permet l'utilisation de
balises d�finies par l'utilisateur. Avec heitml les marqueurs d�finis
par l'utilisateur peuvent �tre traduits en HTML et envoy�s � un
butineur.
heitml est destin� � la fois aux concepteurs HTML et aux programmeurs
professionnels. Les concepteurs HTML peuvent utiliser les Balises
heitml pour fabriquer des pages web dynamiques, des acc�s aux bases de
donn�es SQL ou cr�er des applications web compl�tes. On peut cr�er des
Compteurs, des bases de donn�es d'inscriptions, des formulaires de
recherche, des formulaires de courrier �lectronique ou des menus
hi�rarchis�s en utilisant simplement des Balises de style HTML
pr�-d�velopp�es que l'on trouve dans les nombreuses Biblioth�ques de
Composants.
Pour les programmeurs, heitml inclut un langage de quatri�me
g�n�ration complet en HTML
(e.g. <if>, <while>, et <let> Balises),
plus un �valuateur d'expression puissant pour les types de donn�es
entiers, r�els, bool�ens cha�ne de caract�res et tuple. Les tuples ont
une r�f�rence s�mantique comme dans les langages orient�s objets mod�
ernes et sont stock�s sur un tas. Les variables heitml y compris
toutes les structures de donn�es complexes stock�es sur le tas conser�
vent leur valeur de page en page par l'utilisation du Mode Session. Il
vous est possible de d�finir vos propres balises ou vos balises
d'environnement et m�me de red�finir les balises HTML.
Avec heitml il devient possible de
- - - d�velopper des Sites Web de mani�re structur�e et modulaire,
tout en r�duisant de fa�on drastique la surcharge due � la
maintenance.
- - - d�velopper des Sites Web intelligents et interactifs, dont le
contenu s'adapte dynamiquement aux besoins de l'utilisateur.
- - - de visualiser le contenu de bases de donn�es SQL sans autre
programmation que l'utilisation de notre biblioth�que de Balises
pr�-d�finies "dba".
- - - de d�velopper des applications de bases de donn�es complexes et
de Catalogue d'Achat en utilisant les Variables Session
heitml tourne sous Linux avec n'importe quel Serveur Web utilisant
l'interface CGI, et il est particuli�rement rapide (mis � part la
surcharge due � CGI) avec le Serveur Web APACHE (version 1.1.1, 1.1.3,
ou 1.2.4) en utilisant l'API apache. Actuellement MSQL (Version 1 et
2), PostgreSQL (Version 6), mysql, et les bases de donn�es yard sont
support�s. heitml tourne sous Linux, BSDi, Solaris et SunOS, de m�me
que sous Windows NT avec CGI, ISAPI et ODBC et Windows 95.
heitml (sous linux) est libre pour la recherche, et pour une
utilisation priv�e et non commerciale. Les Sites Web commerciaux
doivent payer une licence. La version totalement op�rationnelle de
heitml est disponible pour une p�riode d'essai et peut �tre
t�l�-charg� librement. (Notez, cependant, que chaque page Web ".hei"
que vous d�velopperez affichera un message indiquant qu'il s'agit
d'une version � usage non commerciale. Apr�s enregistrement, vous
recevrez une cl� pour effacer ce message sans avoir � r�installer le
programme.)
Les nouvelles fonctionnalit�s de la version 1.2 sont
- - - Biblioth�que de Composants pour des Formulaires de Recherche
dans un Base de Donn�es, menus hi�rarchis�s d'ouverture et de
fermeture, formulaires de courrier �lectronique
- - - Le Mode Session a �t� re-con�u et am�lior� pour conserver toutes
les variables (y compris le tas tout entier) au travers des
diff�rentes pages. Cela signifie que les donn�es, de n'importe quelle
taille sont conserv�es � l'int�rieur d'une session. Ceci offre
l'opportunit� d'un champ plus large pour cr�er de nouvelles
applications, e.g. stockage complet des r�sultats d'une interrogation
dans la m�moire de la session.
- - - Les instructions d'installation, la documentation et les
biblioth�ques d'exemples ont �t� augment�es de mani�re significative,
un cours d'auto-formation a �t� ajout�
- - - Des balises pour ex�cuter des commandes shell et pour envoyer
des courriers �lectronique ont �t� ajout�es
- - - Le support du formatage d'impression et de la mise au point.
heitml affiche votre code source en couleurs dans votre butineur et
signale les erreurs de fa�on intuitive. En cas d'erreur � l'ex�cution,
toutes les structures de donn�es internes sont affich�es dans le
butineur en indiquant et pr�servant leurs positions dans le code
source original.
- - - Diverses nouvelles variables serveur et fonctions int�gr�es ont
�t� ajout�es
- - - En mode production, heitml collecte maintenant des informations
compl�tes sur les erreurs survenues lors de l'acc�s, par des
utilisateurs, � votre site.
Voici ce que dit la page d'accueil de heitml -
heitml (prononcer "H-ail"-TML) �tend et augmente de fa�on
significative les fonctionnalit�s de HTML gr�ce aux balises
d�finissables et aux possibilit�s compl�tes de programmation. Ce qui
permet de cr�er simplement des applications au contenu dynamique et
orient�es bases de donn�es dans le monde HTML, sans CGI et sans
scripts externes ou langages de programmation. Cela signifie que
vous, en tant qu'auteur HTML, vous pouvez inclure des applications
dans vos pages web, simplement, en utilisant quelques nouvelles
balises sans CGI et sans programmation. D'un autre c�t�, comme
utilisateur avanc� ou comme programmeur vous pouvez cr�er et
programmer de puissantes biblioth�ques de balises. Cette approche
rend heitml souhaitable � la fois pour les utilisateurs nouveaux de
HTML et pour les programmeurs professionnels. heitml tourne sur le
serveur web et g�n�re dynamiquement du HTML, aussi heitml est
compatible avec les normes internet et avec n'importe quel butineur
web. Il permet un acc�s total aux bases de donn�es tout en �vitant �
l'utilisateur toute la complexit� inutile de CGI. heitml a �t�
d�velopp� selon les plus r�cents crit�res en mati�re de construction
de compilateurs et de syst�mes transactionnels.
Les pages heitml sont d�velopp�es exactement de la m�me fa�on que les
pages HTML, � l'aide d'un �diteur de texte ou d'un �diteur HTML, et
plac�es comme d'habitude sur le serveur web. Cependant, maintenant,
les pages peuvent contenir des balises heitml dynamiques et des acc�s
� des biblioth�ques de balises. Vous pouvez utiliser ces balises pour
acc�der � une base de donn�es, pour cr�er un contenu dynamique, pour
envoyer des courriers �lectronique, et m�me pour cr�er de puissantes
applications telles que les bases de donn�es d'inscriptions ou de
syst�mes d'achats.
Les nouveaux venus � HTML et les programmeurs professionnels seront
stup�faits de la vitesse et de la facilit�s avec lesquelles il peuvent
concevoir des applications passionnantes telle que notre Livre d'Or
Interactif sans n�cessiter la complexit� et l'apprentissage difficiles
des scripts CGI, simplement en utilisant les outils fournis dans notre
biblioth�que dba.
heitml est accompagn� d'un large �ventail de biblioth�ques de balises,
pour cr�er des livres d'or, des applications de maintenance de bases
de donn�es, des formulaires puissants de courrier �lectronique ou de
structuration de votre site web � l'aide de menus hi�rarchiques. Ces
outils sont pr�ts � �tre utilis�s, il suffit simplement d'ajouter les
balises correspondantes � votre site web.
En tant que programmeur exp�riment�, vous pouvez pleinement utiliser
l'architecture dynamique persistante de tuple d'heitml : heitml n'est
pas simplement un langage de script � typage dynamique, avec
�valuateur d'expression, proc�dures r�cursives et capacit�s de passage
de param�tres �tendues, mais il apporte aussi des possibilit�s de
tuples persistants dynamiques pour conserver automatiquement des
donn�es de session de n'importe quelle taille.
1155..22.. SSeerrvveeuurr WWeebb AAmmeerriiccaa OOnn--lliinnee AAOOLL ppoouurr PPoossttggrreeSSQQLL
Le serveur web commercial gratuit, AOLserver version 2.3 supporte des
connexions � la base de donn�es PostgreSQL version 6.2.1 et
ult�rieure. Pour des informations compl�mentaires consultez
� AOL Web Server <
http://www.aolserver.com>
1155..33.. OOuuttiill SSyysstt��mmee ddee ssuuiivvii ddee PPrroobbll��mmee//PPrroojjeett ppoouurr PPoossttggrreeSSQQLL
Se trouve � l'url :
� <
http://www.homeport.org/~shevett/pts/>
1155..44.. CCoonnvveerrssiioonn ddee ffiicchhiieerrss ddbbaassee ddbbff eenn ffiicchhiieerrss PPoossttggrreeSSQQLL
Le programme dbf2msql fonctionne parfaitement avec mSQL et PostgreSQL.
Vous pouvez le trouver �
� <
ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/>
� <
ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz>
Ce programme a �t� �crit par Maarten Boekhold, Faculty of Electrical
Engineering TU Delft, NL Computer Architecture and Digital Technique
section
�
[email protected]
Vous pouvez �galement utiliser une m�thode python pour lire des
fichiers dbf et les charger dans une base de donn�es postgres.
� Voir <
http://www.python.org>
1166.. OOuuttiill ddee CCoonncceeppttiioonn//IImmppll��mmeennttaattiioonn ppoouurr SSGGBBDD WWeebb ppoouurr PPoossttggrreeSSQQLL
-- EEAARRPPWW
� <
http://www.oswego.edu/Earp>
� <
ftp://ftp.oswego.edu> in the directory 'pub/unix/earp'.
1166..11.. EEAARRPP,, cc''eesstt qquuooii ??
Le "Programme de R�ponse Facilement Ajustable" ("Easily Adjustable
Response Program" - EARP) cr�� par David Dougherty. EARP est un outil
de Conception/Impl�mentation pour Base De Donn�es Web, r�alis� au-
dessus du syst�me de gestion de base de donn�es PostgresSQL. Ses
fonctionnalit�s comprennent:
� Un syst�me de conception visuel.
� Une interface d'envoi de courrier �lectronique. (pouvant prendre en
charge le courrier entrant et sortant)
� Un M�canisme de S�curit� am�lior�.
� Un pilote cgi.
1166..22.. IImmppllaannttaattiioonn
L'implantation principale de EARP consiste en un binaire CGI qui
s'ex�cute sous le d�mon http pour fournir l'acc�s au serveur de base
de donn�es. Tous les outils de conception sont int�gr�s dans le
pilote, aucune conception ne se fait sur le web. Les outils eux-m�mes
requi�rent un navigateur graphique, la compatibilit� des objets con�us
avec ces outils est ind�pendante de l'implantation, elle ne d�pend
uniquement que des pr�f�rences de conception individuelles.
1166..33.. CCee ddoonntt vvoouuss aavveezz bbeessooiinn ppoouurr ffaaiirree ffoonnccttiioonnnneerr EEAARRPP
EARP est sens� fonctionner sur une grande vari�t� de plates-formes
avec peu de modifications sinon pas du tout. Les plates-formes pour
lesquelles le fonctionnement est connu sont les suivantes :
� Solaris 2.5
� Linux 1.2.13+
� GNU C++
� PostgreSQL (Version 1.01 / 1.02 )
� netsite server
� NCSA httpd
� GNU C++
� PostgreSQL (Version 1.01 / 1.02 )
� NCSA httpd
� Apache httpd
La version actuelle (1.3) de Earp a �t� con�ue au-dessus de la
version de libpq livr�e avec PostgreSQL v1.01/1.02. Si vous
utilisez une version plus r�cente de Postgres, vous devez vous
attendre � ce que le programme n�cessite quelques modifications
pour fonctionner correctement. Dans la version de d�veloppement
(Earp 2.0), la prise en charge de libpq est en cours de prise en
compte en tant que module.
1166..44.. CCoommmmeenntt ffoonnccttiioonnnnee--tt--iill??
Une des fonctionnalit�s principales de EARP est d'utiliser une
approche orient�e objet pour produire des pages html qui s'interfacent
� la base de donn�es. La plupart des pages sont constitu�es de
plusieurs objets. Chaque objet est produit par une sorte d'outil et
re�oit un nom, les objets sont alors li�s ensembles et appel�s en
s�quence par l'outil de gestion de pages. Les objets sont �galement
r�utilisables � l'int�rieur de plusieurs pages. Il existe des outils
de base pour HTML, pour les Requ�tes, pour la saisie dans des
formulaires, le formatage variable des requ�tes et des objets en
entr�e, ainsi que pour lier des objets pour en former de nouveaux. On
trouve �galement des outils plus avanc�s tels que l'outil de courrier
�lectronique et l'outil de cr�ation de requ�tes en parall�le.
La gestion perfectionn�e de la s�curit� est une des autres
fonctionnalit�s de EARP. L'acc�s aux diff�rentes zones du syst�me
EARP peut �tre limit� par une grande vari�t� de moyens. Pour faciliter
cette s�curit� perfectionn�e, EARP effectue des contr�les � chaque
connexion au syst�me, et d�termine � quels "ids" et "groups"
appartient l'agent qui se connecte. Les acc�s aux zones sont d�finis
s�par�ment, et la combinaison des deux permet de d�cider si l'acc�s �
une certaine zone de Earp est autoris�. De plus , tout ce qui est
requis pour r�aliser les fonctionnalit�s de s�curit� se trouve dans un
serveur http qui effectue une authentification de l'utilisateur
minimale (ou meilleure).
1166..55.. OO�� ppuuiiss--jjee llee ttrroouuvveerr??
EARP est disponible via un ftp anonyme � :
� <
ftp://ftp.oswego.edu> in the directory 'pub/unix/earp'.
1177.. PPHHPP PPrr��--pprroocceesssseeuurr HHyyppeerrtteexxttee -- LLaannggaaggee ddee ssccrriipptt cc��tt�� sseerrvveeuurr,,
aavveecc HHTTMMLL iinntt��ggrr��,, ppoouurr PPoossttggrreeSSQQLL
L'outil d'interfa�age WWW se trouve � :
� <
http://www.php.net>
� <
http://www.vex.net/php>
PHP poss�de �galement un compilateur appel� Zend qui am�liore
grandement les performances. En premier lieu, pendant le
d�veloppement, les tests et la mise au point, vous �crivez votre
application en utilisant le langage de script PHP. Une fois que le
projet est pr�t � �tre d�ploy�, vous utilisez le compilateur Zend
pour compiler le script PHP et cr�er un ex�cutable qui tournera
tr�s rapidement.
PHP 3 est l'ancien nom des Pages d'accueil professionelles et le
nouveau nom est Pr�-Processeur Hypertexte PHP
� Des sites miroirs existent dans de nombreux pays � l'adresse
www.COUNTRYCODE.php.org
� <
http://www.fe.de.php.net>
� <
http://www.sk.php.net>
� <
http://php.iquest.net/>
Pour les questions envoyer un courrier �lectronique � :
�
[email protected]
PHP 3 est un langage de script c�t� serveur, avec langage HTML
int�gr�. Il vous permet d'�crire des scripts simples directement
dans vos fichiers .HTML � la mani�re JavaScript, sauf que, � la
diff�rence de JavaScript, PHP 3 n'est pas d�pendant du butineur
utilis�. JavaScript est un langage, c�t� client, avec HTML int�gr�
alors que PHP 3 est un langage c�t� serveur. PHP 3 est similaire,
dans son concept, au produit LiveWire Pro pour Netscape. Si vous en
avez les moyens, vous utilisez le serveur du commerce Netscape et
l'un des syst�mes d'exploitation support�s, et vous jetterez
probablement un oeil sur LiveWire Pro. Si vous pr�f�rez un logiciel
libre, �voluant rapidement, qui est disponible avec la totalit� de
son code source, vous appr�cierez probablement PHP 3.
1177..11.. FFoonnccttiioonnnnaalliitt��ss pprriinncciippaalleess
Support de CGI Standard, FastCGI et du module Apache. Comme programme
CGI standard, PHP 3 peut �tre install� sur n'importe quelle machine
Unix sur laquelle tourne n'importe quel serveur web Unix. Avec le
support de la nouvelle norme FastCGI, PHP 3 peut trouver avantage des
gains de vitesse apport�s par ce m�canisme. Comme module Apache, PHP 3
devient une alternative extr�mement puissante et brillante � la
programmation CGI.
� Enregistrement des acc�s Avec les possibilit�s d'enregistrement des
acc�s de PHP 3, les utilisateurs peuvent entretenir leur propre
compteur d'acc�s et l'enregistrer. Il n'utilise en aucune fa�on les
fichiers de d'enregistrement des connexions du syst�me central, et
il permet un suivi des acc�s en temps r�el. Le Script du
Visualisateur de Connexions fournit un r�sum� rapide des acc�s � un
ensemble de pages poss�d�es par un utilisateur individuel. De plus,
le paquetage peut �tre configur� pour g�n�rer un pied de page, sur
chaque page, qui montre l'information sur les acc�s. Regardez au
bas de cette page pour en avoir un exemple.
� Contr�le d'acc�s Un �cran de configuration int�gr�, bas� sur le
web, permet la configuration du contr�le des acc�s. Il est possible
de cr�er des r�gles d'acc�s pour toutes ou quelques unes des pages
web poss�d�es par une certaine personne qui met diverses
restrictions sur qui peut voir ces pages et comment elles seront
vues. Les pages peuvent �tre prot�g�es par un mot de passe,
compl�tement interdites, � connexion d�sactiv�e et l'acc�s bas� sur
le domaine du client, le butineur, l'adresse de courrier
�lectronique ou m�me le document auquel on se r�f�re.
� Support de Postgres Postgres est un SGBDR (RDBMS) avanc� libre. PHP
3 supporte les requ�tes Postgres95 et PostgreSQL SQL incluses
directement dans les fichiers .html.
� RFC-1867 Support du t�l�-chargement de fichier Le t�l�-chargement
de fichier est une nouvelle fonctionnalit� de Netscape 2.0. Il
permet aux utilisateurs de t�l�-charger des fichiers vers le
serveur web. PHP 3 r�alise le d�codage Mime r�el pour faire ce
travail et fournit aussi le cadre additionnel pour faire quelque
chose d'utile avec le fichier t�l�-charg� une fois que celui-ci a
�t� re�u.
� Contr�le d'authentification bas� sur HTTP PHP 3 peut �tre utilis�
pour cr�er des m�canismes d'authentification personnalis�s bas�s
sur HTTP pour le serveur web Apache.
� Variables, Tableaux, Tableaux associatifs PHP 3 supporte des
variables typ�es, des tableaux et m�me des tableaux associatifs �
la Perl. Ils peuvent �tre pass�s d'une page web � l'autre en
utilisant les m�thodes GET ou POST.
� Conditions, Boucles Tant que (While) PHP 3 poss�de un langage de
script aux fonctionnalit�s compl�tes de style C. Vous disposez des
instructions de tests conditionnels if/then/elseif/else/endif ainsi
que des boucles while et des instructions switch/case pour
contr�ler l'ordre logique et la mani�re dont les pages html doivent
�tre affich�es.
� Expressions R�guli�res �tendues Les expressions r�guli�res sont
tr�s utilis�es pour le filtrage, le remplacement de s�quences et
les manipulations g�n�rales de cha�nes de caract�res. PHP 3
supporte toutes les op�rations communes sur les expressions
r�guli�res.
� Contr�le de l'En-t�te HTTP brute La possibilit� d'envoyer � partir
de pages web des en-t�tes HTTP brutes personnalis�es en fonction
d'une condition est essentielle pour cr�er un site web de haut
niveau. Un usage fr�quent est l'envoi d'un emplacement: en-t�te URL
pour Rediriger le client appelant vers une autre URL. Il peut
aussi �tre utilis� pour stopper le stockage ou manipuler la
derni�re mise � jour de l'en-t�te de pages.
� Cr�ation d'images KIF � la vol�e PHP 3 prend en compte la
biblioth�que d'image GD de Thomas Boutell ce qui offre la
possibilit� de g�n�rer des images GIF � la vol�e.
� Prise en charge du mode s�curit� ("Safe Mode") ISP PHP 3 prend en
charge un "Mode de S�curit�" exceptionnel qui permet d'avoir de
multiples utilisateurs ex�cutant des scripts PHP en toute s�curit�
sur le m�me serveur.
� C'est Libre! Pour finir, et c'est un point essentiel. Le paquetage
est enti�rement libre. Il est sous les conditions de la licence
GPL qui vous permet d'utiliser ce logiciel pour n'importe quel
objectif, commercial ou autre. Reportez-vous au document de la
Licence Publique GNU pour des renseignements d�taill�s.
1177..22.. CCrr��ddiittss
* De grandes parties de ce code ont �t� d�velopp�es � et pour
l'universit� de Toronto. De grands Mercis � Lee Oattes du D�partement
de D�veloppement des R�seaux � l'universit� pour ses critiques
constructives permanentes.
* Le code de prise en charge de Postgres95 a �t� �crit par Adam
Sussman
�
[email protected]
* d'autres, innombrables, ont particip� aux tests et � la mise au
point du paquetage.
1177..33.. PPHHPP 33 -- BBrreeff HHiissttoorriiqquuee
PHP a commenc� sa vie comme simple petite enveloppe cgi �crite en
Perl. Son utilisation en dehors d'un usage priv� n'avait jamais �t�
envisag�e. Le nom de ce premier paquetage �tait "Personal Home Page
Tools" (Outils pour Page d'Acceuil Personnelle"), qui devint plus tard
"Kit de Construction d'une Page d'Acceuil".
Un outil pour inclure facilement des requ�tes SQL dans des pages web a
�t� �crit. C'�tait fondamentalement un autre petit programme enveloppe
CGI qui analysait les requ�tes SQL et facilitait la cr�ation de
formulaires et de tables bas�s sur ces requ�tes. Cet outil fut appel�
FI "Interpr�teur de Formulaire" (Form Interpreter).
La version 2.0 PHP/FI est une r��criture compl�te de ces deux
paquetages combin�s pour former un simple programme. il a maintenant
�volu� au point de devenir un simple langage de programmation int�gr�
dans les fichiers HTML. L'acronyme original, PHP, lui est rest�. Il
n'est plus r�ellement appropri�. PHP/FI est aujourd'hui plus utilis�
pour mettre en place des sites web entiers que pour de petites pages
d'accueil personnelles. Quel que soit son nom, il �limine le besoin de
recourir � de nombreux petits programmes cgi Perl en permettant
d'ins�rer de simples scripts directement dans vos fichiers HTML. Ceci
am�liore les performances globales de vos pages web puisque la
surcharge due au lancement de processus Perl successifs a �t�
�limin�e. La gestion de larges sites web a �galement �t� facilit�e en
pla�ant tous les composants d'une page web dans un fichier html
unique. En incluant le support de diff�rentes bases de donn�es, il
devient trivial de d�velopper des pages web mettant en oeuvre des
bases de donn�es. Nombreux sont ceux qui trouvent que cette
int�gration est plus facile � g�rer que d'essayer de cr�er des
fichiers HTML et CGI s�par�s.
Tout au long de cette documentation, toute r�f�rence � PHP, FI ou
PHP/FI traite de la m�me chose. La diff�rence entre PHP et FI est
seulement conceptuelle. Les deux sont construits � partir de la m�me
distribution du code source. Maintenant, PHP/FI a �t� renomm� PHP 3.
1177..44.. BBoonn,, qquuee ppuuiiss--jjee ffaaiirree aavveecc PPHHPP//FFII??
La premi�re chose que vous allez noter, si vous faites tourner une
page par l'interm�diaire de PHP/FI, c'est qu'il ajoute un pied de page
vous informant du nombre d'acc�s � votre page (si vous incluez le
support des connexions d'acc�s dans votre binaire). C'est seulement un
tout petit exemple de ce que PHP/FI peut faire pour vous. Il joue
�galement le r�le tr�s important d'interpr�teur de formulaire cgi,
d'o� la partie FI de son nom. Par exemple si vous cr�ez un formulaire
dans l'une de vos pages web, vous avez besoin de quelque chose pour
traiter l'information contenue dans ce formulaire. M�me si vous
d�sirez simplement passer l'information � une autre page web, vous
aurez besoin d'un programme cgi pour le faire. PHP/FI facilite
grandement le processus de prise en charge des donn�es du formulaire
pour en faire quelque chose.
1177..55.. UUnn ssiimmppllee eexxeemmppllee
Supposons que vous ayez le formulaire :
<FORM ACTION="/cgi-bin/php.cgi/~userid/display.html" METHOD=POST>
<INPUT TYPE="text" name="name">
<INPUT TYPE="text" name="age">
<INPUT TYPE="submit">
<FORM>
Votre fichier display.html doit contenir quelque chose du genre :
< ?echo "Hi $ name, vous avez $ age ans!<p>" >
C'est aussi simple que cela! PHP/FI cr�e automatiquement une variable
pour chaque champ de saisie de votre formulaire. Vous pouvez alors
utiliser ces variables dans le fichier ACTION URL.
L'�tape suivante, apr�s avoir vu comment utiliser ces variables, est
de commencer � jouer avec quelques balises de gestion du d�roulement
logique de vos pages. Par exemple, si vous voulez afficher diff�rents
messages d�pendants de des informations entr�es par l'utilisateur,
vous pouvez utiliser la logique si/alors (if/else). Dans notre exemple
ci-dessus, on peut afficher diff�rentes choses d�pendant de l'�ge
entr� par l'utilisateur en modifiant notre fichier display.html en :
<?
if($age>50);
echo "Hi $name, vous �tes un fossile!<p>";
elseif($age>30);
echo "Hi $name, vous �tes tr�s vieux!<p>";
else;
echo "Hi $name.";
endif;
>
PHP/FI fournit un langage de script tr�s puissant qui peut faire
beaucoup plus que ce qui est expos� dans l'exemple ci-dessus. Regardez
la section sur le langage de Script PHP/FI pour des informations
compl�mentaires.
Vous pouvez �galement utiliser PHP/FI pour configurer qui a le droit
d'acc�der � vos pages. Ceci est effectu� en utilisant l'�cran de
configuration inclus. Par son interm�diaire , vous pourrez, par
exemple, sp�cifier que seulement les gens appartenant � un certain
domaine seront autoris�s � voir vos pages, vous pouvez �galement cr�er
une r�gle prot�geant certaines pages par un mot de passe. Voir la
section Contr�le d'Acc�s pour plus de d�tails.
PHP/FI est �galement capable de recevoir des fichiers t�l�-charg�s par
n'importe quel butineur conforme � la norme RFC-1867. Cette
fonctionnalit� permet aux gens de t�l�-charger �galement des fichiers
de texte ou binaire. Avec le contr�le de PHP/FI et les fonctions
logiques, vous disposez d'un contr�le total sur qui est autoris� �
t�l�-charger un fichier et sur ce que l'on peut faire de ce fichier
une fois t�l�-charg�. Voir la section T�l�-chargement de fichier pour
de plus amples d�tails.
PHP/FI supporte le paquetage Postgres95. Il supporte les requ�tes SQL
incluses dans vos fichiers .HTML. Consultez la section Support
Postgres95 pour plus d'informations.
PHP/FI supporte �galement le paquetage du SGBD mysql. Il supporte les
requ�tes SQL incluses dans vos fichiers .HTML. Consultez la section
Support mysql pour plus d'informations.
1177..66.. RReeddiirreeccttiioonn CCGGII
1177..66..11.. NNootteess AAppaacchhee 11..00..xx
Une bonne mani�re de faire tourner PHP/FI est d'utiliser un module de
redirection cgi avec le serveur Apache. Veuillez noter que vous n'avez
pas � vous soucier des modules de redirection si vous utilisez la
version module Apache de PHP/FI. Deux de ces modules de redirection
sont disponibles. L'un est d�velopp� par Dave Andersen
�
[email protected]
et est disponible �
�
ftp://ftp.aros.net/pub/util/apache/mod\_cgi\_redirect.c
et l'autre est inclus avec Apache et est appel� mod_actions.c. Ces
deux modules sont extr�mement similaires. Ils diff�rent tr�s
l�g�rement dans leur utilisation. Les deux ont �t� test�s et
fonctionnent avec PHP/FI.
Regardez dans la documentation Apache la mani�re d'ajouter un module.
En g�n�ral vous ajoutez le nom de module dans un fichier appel�
Configuration. La ligne � ajouter si vous voulez utiliser le module
mod_actions est :
Module action_module mod_actions.o
Si vous envisagez d'utiliser le module mod_cgi_redirect.c ajoutez
cette ligne :
Module cgi_redirect_module mod_cgi_redirect.o
Puis compilez votre httpd et installez-le. Pour configurer la redirec�
tion cgi il vous faudra soit cr�er un nouveau type mime dans votre
fichier mime.types soit utiliser la commande AddType dans votre
fichier srm.conf pour ajouter le type mime. Le type mime � ajouter
doit �tre quelque chose comme :
application/x-httpd-php phtml
Si vous vous appr�tez � utiliser le module mod_actions.c il vous fau�
dra ajouter la ligne suivante dans votre fichier srm.conf:
Action application/x-httpd-php /cgi-bin/php.cgi
Si vous vous appr�tez � utiliser mod_cgi_redirect.c vous devrez
ajouter cette ligne � srm.conf :
CgiRedirect application/x-httpd-php /cgi-bin/php.cgi
N'essayez pas d'utiliser en m�me temps mod_actions.c et mod_cgi_redi�
rect.c .
Une fois que vous avez l'un de ces modules de redirection cgi install�
et configur� correctement, vous pouvez sp�cifier que vous voulez qu'un
fichier soit filtr� par php/fi en mettant simplement l'extension
.phtml au fichier. De plus, si vous ajoutez index.phtml � votre ligne
de configuration DirectoryIndex dans votre fichier srm.conf alors la
page de plus haut niveau d'un r�pertoire sera automatiquement filtr�e
par php si vous appelez votre fichier index index.phtml.
1177..66..22.. HHTTTTPPDD NNeettssccaappee
Vous pouvez rediriger automatiquement les requ�tes pour des fichiers
ayant une extension donn�e de fa�on � ce qu'ils soient pris en compte
par PHP/FI en utilisant le module de Redirection du Serveur CGI
Netscape. Ce module est disponible dans le Fichier Archives de la
Page d'Accueil de PHP/FI. Le fichier LISEZ_MOI (README) dans le
paquetage explique clairement comment le configurer pour l'utiliser
avec PHP/FI.
1177..66..33.. HHTTTTPPDD NNCCSSAA
Actuellement NCSA ne supporte pas les modules, donc, pour effectuer
une redirection cgi avec ce serveur, il vous faudra modifier le code
source de votre serveur. Une rustine pour faire cela avec NCSA 1.5 est
disponible dans le fichier archives de PHP/FI.
1177..77.. LLaanncceerr PPHHPP//FFII �� ppaarrttiirr ddee llaa lliiggnnee ddee ccoommmmaannddee
Si vous fabriquez la version CGI de PHP/FI, vous pouvez l'utiliser
simplement � partir de la ligne de commande, en tapant: php.cgi
nom_de_fichier o� nom_de_fichier est le fichier que vous voulez
filtrer. Vous pouvez �galement cr�er des scripts PHP/FI autonomes en
faisant ressembler la premi�re ligne de votre script � quelque chose
comme :
#!/usr/local/bin/php.cgi -q
L'option "-q" supprime l'impression des en-t�tes HTTP. Vous pouvez
vous passer de cette option si vous le d�sirez.
1188.. IInntteerrffaaccee PPyytthhoonn ppoouurr PPoossttggrreeSSQQLL
Python est un langage de script, interpr�t� et orient� objet. Il est
simple � utiliser (syntaxe l�g�re, instructions simples et sans
d�tours ). Il poss�de de nombreuses extensions pour b�tir des
interfaces utilisateurs ( GUI ), pour s'interfacer au WWW, etc. Un
butineur de web intelligent ( � la HotJava ), est actuellement en
cours de d�veloppement (novembre 1995), et cela devrait ouvrir de
nombreuses portes aux programmeurs. Le copyrightde Python est d�tenu
par Stichting S Mathematisch Centrum, Amsterdam, Pays-Bas, et est
librement distribuable Il supporte le chargement dynamique d'objets,
de classes, de modules et d'exceptions. L'ajout d'interfaces � de
nouvelles biblioth�ques syst�me, � l'aide de code C est ais�, rendant
Python facile � utiliser en cas de personnalisation. Python est un
langage de script de tr�s haut niveau poss�dant une interface X. Le
paquetage Python est distribu� dans les cdroms Linux, et il comprend
la plupart des modules Python standards, ainsi que des modules
d'interfa�age � l'ensemble de widgets Tix pour Tk.
PyGresSQL est un module Python qui s'interface � une base de donn�es
PostgreSQL. Il int�gre la biblioth�que de requ�tes de PostgreSQL pour
permettre l'utilisation ais�e des possibilit�s de PostgreSQL � partir
d'un script Python. PyGreSQL a �t� �crit par D'Arcy J.M. Cain et
Pascal Andre.
� Nouveau site de PyGreSQL <
http://www.druid.net/pygresql/>
� Maintenu par D'Arcy � <
http://www.druid.net/~darcy/>
� L'ancien site est �
<
ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.README >
� D'Arcy J.M. Cain
[email protected]
� Pascal Andre
[email protected]
� Pascal Andre
[email protected]
1188..11.. OO�� llee ttrroouuvveerr PPyyGGrreess ??
Les sites d'accueil des diff�rents paquetages sont :
� Python
<
ftp://ftp.python.org:/pub/www.python.org/1.5/python1.5b2.tar.gz>
� PyGreSQL <
ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>
� Old site
<
ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0b.tar.gz
>
Vous devriez cependant essayer de trouver un site miroir proche de
votre propre site. Consultez les sources d'information pour trouver
ces sites. PyGres95 devrait se trouver dans les r�pertoires
contrib des sites Python et PostgresSQL.
1188..22.. IInnffoorrmmaattiioonn eett ssuuppppoorrtt
Si vous avez besoin d'informations concernant ces paquetages veuillez
consulter leurs sites web:
� Python : <
http://www.python.org/>
� PostgreSQL :
<
http://epoch.cs.berkeley.edu:8000/postgres95/index.html>
� PyGreSQL <
ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>
� Ancien site PyGreSQL :
<
http://www.via.ecp.fr/via/products/pygres.html>
Pour un support :
� Liste de diffusion de PyGreSQL. Vous pouvez vous abonner en
envoyant un courrier �lectronique �
[email protected] en mettant la
ligne "subscribe pygresql name@domain" dans le corps du message et
en rempla�ant "name@domain" par votre propre adresse �lectronique.
� Forum de discussion pour Python : newsgroup comp.lang.python
� PyGreSQL : contacter Andre �
[email protected] pour les comptes-
rendus d'erreurs, id�es, remarques
1199.. PPaasssseerreellllee eennttrree PPoossttggrreeSSQQLL eett WWWWWW -- WWDDBB--PP9955
WDB-P95 - Une interface Web interface aux bases de donn�es PostgresSQL
a �t� cr��e par J. Douglas Dunlop. C'est � :
� La nouvelle WDB de J Rowe se trouve �
<
http://www.lava.net/beowulf/programming/wdb>
� La nouvelle version de WWW-WDB est �
<
http://www.eol.ists.ca/~dunlop/wdb-p95/>
� Pour les questions ou pour s'abonner � une liste de diffusion
contacter :
[email protected]
C'est une version modifi�e de wdb-1.3a2 qui fournit une passerelle
WWW � PostgresSQL. Cette version n�cessite �galement un Butineur
capable de prendre en compte les Tables HTML pour avoir une sortie
tabul�e. Ceci n'est pas requis pour le wdb original et on peut
facilement y revenir.
Vous pouvez essayer ma Bande CASI et ma Requ�te d'Image. Vous pouvez
jeter un coup d'oeil au Fichier de D�finition de Formulaire (FDF) qui
est utilis� pour cr�er la Bande CASI et �galement la Requ�te d'Image,
qui comprends une jointure (JOIN) de 2 tables.
Cette version contient tous les fichiers n�cessaires pour installer et
faire tourner WDB-P95 en tant qu'interface � vos bases de donn�es
PostgresSQL. Le portage de ce syst�me pour une autre base de donn�es
devrait �tre relativement facile - � condition qu'elle supporte le SQL
standard et poss�de une interface Perl.
1199..11.. LLee sseerrvveeuurr PPoossttggrreessSSQQLL,, ppggppeerrll,, eett hhttttppdd ddooiivveenntt--iillss rr��ssiiddeerr
ssuurr llee mm��mmee hh��ttee??
Non - Le serveur PostgresSQL n'a pas � �tre sur le m�me h�te. Comme
WDB-P95 est appel� par le d�mon http, ils doivent r�sider sur le m�me
h�te. - Et comme WDB-P95 a �t� �crit pour utiliser Pg.pm - pgperl doit
�tre sur le m�me h�te �galement. Pgperl a �t� �crit en utilisant la
biblioth�que libpq, donc, il sera capable d'acc�der � n'importe quel
serveur Postgres95 n'importe o� sur le r�seau, juste comme n'importe
quel autre client PostgresSQL. Comme illustr� ci-dessous
{WWW Client (Netscape)} => {HTTP Server (NCSA's http) + WDB-P95 +
pgperl + libpq}=> {PostgresSQL server}
Les parenth�ses () repr�sentent les machines.
Chaque machine peut �tre d'un type diff�rent : NT, SUN, HP, ... mais
il faut que vous ayez la biblioth�que d'interface libpq pour le type
de machine sur lequel vous envisagez d'utiliser WDB-P95, puisqu'il
vous faut compiler pgperl. (Le syst�me a �t� con�u pour utiliser les
tables HTML donc un client WWW r�cent est meilleur)
2200.. IInntteerrffaacceess aauu llaannggaaggee ""CC"",, ""CC++++"",, EESSQQLL//CC eett OOpp��rraatteeuurrss ssuurr lleess
bbiittss ppoouurr PPoossttggrreeSSQQLL
2200..11.. IInntteerrffaaccee ""CC""
Elle est incluse dans la distribution et s'appelle 'libpq'. Elle est
similaire aux biblioth�ques OCI Oracle, DB-lib Sybase, ou CLI
Informix.
2200..22.. ""CC++++"" iinntteerrffaaccee
Elle est incluse dans la distribution et est nomm�e 'libpq++'.
2200..33.. EESSQQLL//CC
C'est un pr�-compilateur C int�gr� pour PostgreSQL ESQL/C comme Pro*C
d'Oracle, et ESQL/C d'Informix. ESQL/C pour PostgreSQL est une
interface de programmation d'application SQL (API) qui permet au
programmeur C de cr�er des applications personnalis�es avec des
possibilit�s de gestion de base de donn�es. ESQL/C pour PostgreSQL
vous permet d'utiliser un langage de troisi�me g�n�ration avec lequel
vous �tes familiaris� tout en profitant des avantages d'un Langage de
Requ�tes Structur� (SQL).
ESQL/C est compos� des �l�ments logiciels suivants:
� Les biblioth�ques ESQL/C de fonctions C fournissent les acc�s au
serveur de base de donn�es.
� Les fichiers d'en-t�te ESQL/C apportent les d�finitions des
structures de donn�es, les constantes et les macros utiles dans un
programme ESQL/C.
� Le pr�-processeur ESQL/C, qui est un pr�-processeur de code source,
transforme un fichier C contenant des instructions SQL en fichier
ex�cutable.
Il se trouve � :
� ESQL/C pour PostgreSQL est d�j� inclus dans la distribution.
� Site principal <
ftp://ftp.lysator.liu.se/pub/linus>
� Email :
[email protected]
2200..44.. OOpp��rraatteeuurrss ssuurr lleess bbiittss ppoouurr PPoossttggrreeSSQQLL
Les op�rateurs sur les bits ont �t� �crits par Nicolas Moldavsky
�
[email protected]
Ce sont des fonctions "C" qui implantent les op�rateurs bit-par-bit
(AND, OR, XOR, bit complement) dans pgsql. Si quelqu'un d�sire les
utiliser, il peut les r�cup�rer par ftp anonyme de
� <
ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz>
De plus, il y a un "Makefile" pour Linux.
2211.. LLeess CCooddeess KKaannjjii JJaappoonnaaiiss ppoouurr PPoossttggrreeSSQQLL
Sont tr�s utiles pour les Japonais. On les trouvera au site suivant :
� <
ftp://ftp.sra.co.jp/pub/cmd/postgres/>
2222.. PPoorrttaaggee ddee PPoossttggrreeSSQQLL ppoouurr WWiinnddoowwss 9955//WWiinnddoowwss NNTT
Un portage pour Windows 95/Windows NT est en cours de r�alisation. Ce
portage de fait en utilisant gcc, gmake pour Win NT/95. Le programme
gnu-win32 est utilis� pour compiler le code source sous win32. GNU
gcc est disponible pour win32. Consultez ce site -
� <
http://www.cygnus.com/misc/gnu-win32>
R�cup�rez-y le fichier cdk.exe (fichier auto-extractible pour gnu-
win32)
Le portage peut �galement �tre r�alis� en utilisant l'outil
"Emulateur Unix sous NT" (Unix-Emulator on NT) suivant de
� <
http://www.softway.com>
2233.. MMaaiilliinngg LLiissttss
2233..11.. OObbtteenniirr uunn ccoommppttee ee--mmaaiill GGrraattuuiitt
Regardez les offres gratuites - obtenez des comptes e-mail gratuit
chez
� Yahoo <
http://www.yahoo.com> cliquer sur e-mail
� Lycos <
http://www.lycos.com> cliquer sur nouveaux comptes e-mail
� hotmail <
http://www.hotmail.com> cliquer sur nouveaux comptes e-
mail
Inscrivez vous � la liste de diffusion PostgreSQL et Yahoo dispose
de la fonctionnalit� compl�mentaire de cr�ation d'un classeur
s�par� pour les courriers �lectroniques PostgreSQL e-mails, ainsi
votre e-mail habituel ne sera pas pollu�. S�lectionnez le menu
Email- > Options- > Filters et prenez un classeur s�par� pour e-
mail. Avec ce compte e-mail vous pouvez acc�der au courrier de
n'importe o� dans le monde � partir du moment o� vous avez acc�s �
une page web.
Si vous disposez d'un autre e-mail, vous pouvez utiliser les "Filtres
de Courrier" pour recevoir automatiquement les courriers PostgreSQL
dans un dossier s�par�. De cette fa�on, vous �viterez de voir votre
courrier pollu�.
2233..22.. LLiissttee ddee DDiiffffuussiioonn AAnnggllaaiissee
Regardez les Titres des Listes de Diffusion sur la page web principale
� :
� <
http://www.postgresql.org/>
� Envoyez vos questions par courrier �lectronique �: pgsql-
[email protected]
� D�veloppeurs
[email protected]
� Questions sp�cifiques � un portage
[email protected]
� Questions concernant la documentation
[email protected]
Vous recevrez une r�ponse, par courrier �lectronique, dans la
journ�e qui suit!!
Vous pouvez �galement vous inscrire aux listes de diffusion. Pour
vous inscrire ou vous radier d'une liste, envoyez un courrier �
�
[email protected]
�
[email protected]
�
[email protected]
�
[email protected]
Le corps du message doit uniquement contenir la simple ligne
subscribe
(ou)
unsubscribe
2233..33.. AArrcchhiivvee ddeess lliisstteess ddee ddiiffffuussiioonn
Il y a aussi des listes de diffusion qui sont archiv�es au format html
� l'endroit suivant -
� Liste accessible par dates via MHonarc sur le WWW �
<
http://www.postgresql.org/mhonarc/pgsql-questions>
� <
ftp://ftp.postgresql.org> dans le r�pertoire /pub/majordomo
2233..44.. LLiissttee ddee DDiiffffuussiioonn EEssppaaggnnoollee
Il y a maintenant une liste "non officielle" pour postgreSQL en
Espagnol. Consultez �galement la section 'Compte gratuit pour
Organiser vos e-mails PostgreSQL e-mails' ci-dessus. Pour souscrire,
l'utilisateur doit envoyer un message � :
�
[email protected]
Le corps du message doit contenir la simple ligne :
inscripcion pgsql-ayuda
2244.. LLiivvrreess eett DDooccuummeennttaattiioonnss
2244..11.. GGuuiiddeess uuttiilliissaatteeuurr eett MMaannuueellss
On trouve dans la distribution PostgreSQL aux formats postscript, HTML
et pages de manuel unix les documents suivants. Si vous avez acc�s �
l'internet, vous pouvez trouver les documents indiqu�s ci-dessous �
<
http://www.postgresql.org/docs>
� Le 'Guide Utilisateur' pour PostgreSQL,
� Le 'Guide de R�alisation' d�taillant la constitution interne de
PostgreSQL.
� Les manuels "en ligne".
� Le manuels en ligne au format HTML.
� �galement les manuels au format Postscript pour faire des �ditions
papier.
2244..22.. DDooccuummeennttaattiioonn eenn lliiggnnee
� Liste et description des types de donn�es et des op�rateurs par
d�faut
Fait partie des commandes PSQL de la version 6.5.2.
� Liste des mots-cl�s SQL support�s
Il y a un script dans le r�pertoire /tools qui fait cela
� Liste des instructions support�es -
Utilisez la commande psql \h
� Concepts de base des bases de donn�es relationnelles sous
PostgreSQL (en impl�mentation) et des tonnes d'exemples en ligne
(requ�tes) -
Consultez les tests de r�gression dans src/test. L�, vous y trouver les
r�pertoires regress/sql et suite/*.sql.
� Didacticiel pour PostgreSQL.
Les scripts du didacticiel SQL sont dans le r�pertoire src/tutorial
Voir �galement "Didacticiel SQL pour les d�butants" dans l'appendice B
de ce document ``''
2244..33.. DDooccuummeennttss ddee RR��ff��rreennccee:: OOuuvvrraaggeess ddee rr��ff��rreennccee uuttiilleess ::
� "Understanding the New SQL: A Complete Guide" (Comprendre le
Nouveau SQL: Un Guide Complet)- par Jim Melton et Alan R.Simon
Morgan Kaufman Publisher. C'est un des meilleurs livres sur SQL. Il
concerne SQL92.
� "A Guide to THE SQL STANDARD" (Un Guide du STANDARD SQL) - par
C.J.Date
Addison-Wesley Publishing company. C'est �galement un bon livre. Tr�s
populaire en ce qui concerne SQL.
� SQL - The Standard Handbook, (Le Manuel Standard) November 1992
Stephen Cannan and Gerard Otten
McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England
� SQL Instant Reference, (R�f�rence Imm�diate SQL) 1993
Martin Gruber, Technical Editor: Joe Celko
SYBEX Inc. 2021 Challenger Drive Alameda, CA 94501
� C.J.Date, "An introduction to Database Systems" (Une introduction
aux Syst�mes de Bases de Donn�es) (6th Edition), Addison-Wesley,
1995, ISBN 0-201-82458-2
Ce livre est la Bible des Syst�mes de Gestion de Bases de Donn�es.
Le livre d�taille la normalisation, SQL, la r�cup�ration, la concurrence,
la s�curit�, l'int�grit�, les extensions au mod�le relationnel original,
des sujets actuels tels que les syst�mes client/serveur et le(s) mod�le(s)
Orient�(s) Objet. De nombreuses r�f�rences sont donn�es pour des lectures
compl�mentaires. Recommand� pour la plupart des utilisateurs.
� Stefan Stanczyk, "Theory and Practice of Relational Databases",
(Th�orie et pratique des bases de Donn�es Relationnelles) UCL Press
Ltd, 1990, ISBN 1-857-28232-9
Ce livre d�taille la th�orie des bases de donn�es relationnelles, l'alg�bre
relationnelle, le calcul et la normalisation. Mais il ne couvre pas les sujets
du mode r�el et les exemples sont un peu simplistes. Recommand� pour la plupart
des utilisateurs.
� "The Practical SQL Handbook" (Le Manuel Pratique de SQL) Third
Edition, Addison Wesley Developers Press ISBN 0-201-44787-8
Recommand� pour la plupart des utilisateurs.
� Michael Stonebraker, "Readings in Database Systems" (lectures sur
les Syst�mes de Bases de Donn�es), Morgan Kaufmann, 1988, ISBN
0-934613-65-6
Ce livre est un recueil de papiers, sur les bases de donn�es, qui ont �t�
publi�s sur plusieurs ann�es. Il n'est pas pour l'utilisateur occasionnel
mais, c'est r�ellement une r�f�rence pour les �tudiants en classes sup�rieures
(troisi�me cycle) ou pour les d�veloppeurs de syst�mes de bases de donn�es.
� C.J.Date, "Relational Database - Selected Readings" (Bases de
Donn�es Relationnelles - Morceaux choisis), Addison-Wesley, 1986,
ISBN 0-201-14196-5
Ce livre est un recueil de papiers, sur les bases de donn�es, qui ont �t�
publi�s sur plusieurs ann�es. Il n'est pas pour l'utilisateur occasionnel
mais c'est r�ellement une r�f�rence pour les �tudiants en classes
sup�rieures (troisi�me cycle) ou pour les d�veloppeurs de syst�mes de
bases de donn�es.
� Nick Ryan and Dan Smith, "Database Systems Engineering",
(Ing�nierie de Syst�mes de Bases de Donn�es), International Thomson
Computer Press, 1995, ISBN 1-85032-115-9
Ce livre traite des d�tails des m�thodes d'acc�s, et des technique de stockage.
� Bipin C. Desai, "An introduction to Database Systems", (Une
introduction aux syst�mes de bases de donn�es) West Publishing Co.,
1990, ISBN 0-314-66771-7
Il n'est pas pour l'utilisateur occasionnel mais c'est r�ellement une
r�f�rence pour les �tudiants en classes sup�rieures (troisi�me cycle)
ou pour les d�veloppeurs de syst�mes de bases de donn�es.
� Joe Celko "INSTANT SQL Programming" (Programmation SQL IMMEDIATE)
Wrox Press Ltd.
Unit 16, 20 James Road, Tyseley
Birmingham, B11 2BA, England
1995
� Michael Gorman "Database Management Systems: Understanding and
Applying Database" (Syst�mes de Gestion de Bases de Donn�es :
comprendre et appliquer les bases de donn�es)
Technology
QED and John Wiley
1991
� Michael Gorman "Enterprise Database for a Client/Server
Environment" (Base de Donn�es d'Entreprise pour un Environnement
Client/Serveur) QED and John Wiley
Pr�sente les exigences de construction d'applications de base de donn�es
client/server par l'interm�diaire de m�ta-mod�les d'entrep�t et l'utilisation
de la norme SQL ANSI 1993
Des centaines d'autres titres concernant SQL sont disponibles!
V�rifiez-le dans une librairie.
2244..44.. DDooccuummeennttss ddee SSpp��cciiffiiccaattiioonnss AANNSSII//IISSOO SSQQLL -- SSQQLL 11999922,, SSQQLL 11999988
Les documents de Sp�cifications ANSI/ISO SQL sont situ�s � l'endroit
indiqu� ci-dessous.
� <
http://www.naiua.org/std-orgs.html>
� <
http://www.ansi.org/docs> et cliquez sur le fichier cat_c.html
puis rechercher "Database SQL"
� Standard SQL92 <
http://www.jcc.com> et cliquez sur le fichier
sql_stnd.html
� Sp�cifications ANSI/ISO SQL
<
http://www.contrib.andrew.cmu.edu/~shadow/sql.html> Vous trouverez
la R�f�rence SQL ici.
2244..55.. SSyynnttaaxxee ddee ll''AANNSSII//IISSOO SSQQLL 11999922
Voir l'Appendice A de ce document ``''
2244..66.. SSyynnttaaxxee ddee ll''AANNSSII//IISSOO SSQQLL 11999988
Les sp�cifications de SQL 1998 (SQL 3) sont encore en cours de
d�veloppement. Voir le paragraphe 'Electronic Access to the SQL3
Working Draft' de ce document document � ``''
2244..77.. DDiiddaaccttiicciieell SSQQLL ppoouurr lleess dd��bbuuttaannttss
Voir l'Appendice B de ce document ``''
2244..88.. EExxtteennssiioonn TTeemmppoorreellllee �� SSQQLL9922
� Document pour l'Extension Temporelle � SQL-92
<
ftp://FTP.cs.arizona.edu/tsql/tsql2/>
� Sp�cification SQL-3 Temporelle
<
ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/>
Ce r�pertoire contient les sp�cifications pour une extension
temporelle au langage SQL-92 standard. Ce nouveau langage est appel�
TSQL2.
Les sp�cifications du langage pr�sent�es ici correspondent � la
version finale du langage.
La correspondance doit �tre adress�e au bureau du Comit� de Conception
du Langage TSQL2, Richard T.Snodgrass, Department of Computer Science,
University of Arizona, Tucson, AZ 85721,
�
[email protected]
Les affiliations et les adresses �lectroniques des membres du
Comit� de Conception du langage TSQL2 peuvent �tre trouv�es, dans
un chapitre s�par�, � la fin des sp�cifications du langage.
Le contenu du r�pertoire est le suivant :
spec.dvi,.ps Sp�cifications du langage TSQL2, publi� en Septembre,
1994
bookspec.ps Sp�cifications du langage TSQL2, telles qu'elles
apparaissent dans le livre sur TSQL2, publi� en Septembre, 1995 (voir
ci-dessous).
sql3 proposition de modification soumise au comit�s ANSI et
ISO SQL3.
Un ensemble de commentaires, associ�s aux sp�cifications du langage,
parle des d�cisions de conception, fournit des exemples, et traite de
la fa�on dont le langage peut �tre implant�. Ces commentaires sont, �
l'origine, des propositions faites au Comit� de Conception du Langage
TSQL2. Ils poursuivent actuellement un objectif diff�rent: fournir des
exemples de syntaxe, expliquer les nombreuses d�cisions prises durant
la conception du langage, et comparer TSQL2 aux nombreuses autres
propositions de langage faites au cours des quinze derni�res ann�es.
Il faut insister sur le fait que ces commentaires ne font pas partie
int�grante des sp�cifications du langage TSQL2 en lui-m�me, mais
plut�t qu'elles le compl�tent et constituent un apport. Le mot de la
fin est donn� par les sp�cifications de TSQL2 proprement dit.
Les commentaires, ainsi que les sp�cifications du langage, plusieurs
index, et d'autres �l�ments de support ont �t� publi�s dans un livre :
Snodgrass, R.T., �diteur, The TSQL2 Temporal Query Language, (Le
Langage de Requ�tes Temporel TSQL2) Kluwer Academic Publishers, 1995,
674+xxiv pages.
Les commentaires d'�valuation sont donn�s sous forme abr�g�e dans le
livre; La totalit� des commentaires est fournie dans le fichier
eval.ps situ� dans ce r�pertoire
Le fichier tl2tsql2.pl est un programme prolog qui traduit la logique
temporelle autoris�e en TSQL2. Ce programme a �t� �crit par Michael
Boehlen
�
[email protected]
On peut le contacter pour obtenir un papier qui d�crit cette
traduction. C'est une version tout � fait ancienne du programme.
Les nouvelles versions sont disponibles �
� <
http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software>
(the TimeDB and Tiger systems).
2244..99.. PPaarrttiiee 00 -- AAccqquuiissiittiioonn ddeess DDooccuummeennttss IISSOO//AANNSSII SSQQLL
Ce document vous explique comment acqu�rir (l�galement) une copie de
la norme SQL-92 et comment acqu�rir une copie du Brouillon de Travail
du SQL3 "actuel".
La norme ANSI est prot�g�e par un copyright de l'ANSI, et la norme ISO
par un copyright de l'ISO.
Il y a deux (2) normes SQL courantes, une publication ANSI et une
publication ISO. Les deux normes sont identiques mot-pour-mot except�
pour quelques sujets triviaux tel que le titre du document, les en-
t�te de page, la phrase "International Standard" au lieu de "American
Standard", et ainsi de suite.
Achat du Standard SQL-92
La norme ISO, ISO/IEC 9075:1992, Information Technology - Database
Languages - SQL, est actuellement (Mars, 1993) disponible et en stock
� l'ANSI :
American National Standards Institute
1430 Broadway
New York, NY 10018 (USA)
Phone (sales): +1.212.642.4900
au prix de US$ 230.00. La version ANSI, ANSI X3.135-1992, American
National Standard for Information Systems - Database Language SQL,
n'�tait pas disponible en stock au moment de la r�daction, mais il
devrait l'�tre entre fin Mars et d�but Mai, 1993). Il devrait co�ter
US$ 225.00.
Si vous achetez l'un ou l'autre document � l'ANSI, il y aura un
suppl�ment de 7% pour le traitement (soit environ US$ 9.10). Les frais
d'envoi � l'�tranger accro�tront sans doute le co�t. ANSI exige des
soci�t�s un document de commande �crit pour chaque commande; d'un
autre c�t�, vous pouvez envoyer un ch�que tir� sur une banque US en
dollars US, qu'ils encaisseront avant d'exp�dier votre commande. (Il y
a une exception : si votre organisation est membre de l'ANSI, alors
l'ANSI enverra les documents et une facture � votre compagnie.)
La norme ISO est aussi disponible en dehors des �tats-Unis � partir de
repr�sentations nationales locales (entit�s de standardisation du
pays) qui sont membres soit de l'ISO (International Organization for
Standardization) soit de l'IEC (International Electrotechnical
Commission). Des copies de la liste des repr�sentations nationales,
avec leurs adresses, sont disponibles de l'ANSI ou d'autres entit�s
nationales. Ils sont aussi disponibles � l'ISO :
International Organization for Standardization
Central Secretariat
1, rue de Varembi
CH-1211 Gen�ve 20
Switzerland
Si vous pr�f�rez commander la norme d'une fa�on plus facile et plus
rapide, il vous faudra payer pour ce privil�ge. Vous pouvez commander
le ISO/IEC 9075:1992, Information Technology - Database Languages -
SQL, � :
Global Engineering Documents
2805 McGaw Ave
Irvine, CA 92714 (USA)
USA
T�l�phone (accessible de partout): +1.714.261.1455
T�l�phone (uniquement aux USA): (800)854-7179
pour un prix de US$ 308.00. Je ne sais pas si le port est compris ou
non, mais je parierais que l'envoi international (au moins) sera en
suppl�ment. Ils peuvent vous envoyer un document tr�s rapidement et
acceptent m�me les "plus grandes cartes de cr�dit". Global n'a pas
encore la version ANSI pas plus qu'un prix ou qu'une date pr�visible
de disponibilit� (bien que je l'attende dans les quelques semaines
suivant la publication par l' ANSI et � un prix aux alentours de US$
300.00).
Achat d'une copie du Document de Travail SQL3
Vous pouvez acheter une copie du document de travail SQL3 au
secr�tariat de l'ANSI X3, CBEMA (Computer and Business Equipment
Manufacturers Association). Leur objectif est d'avoir la "plus
r�cente" version du document de travail de SQL3 disponible et de la
vendre pour environ US$ 60.00 � US$ 65.00. Vous pouvez contacter
CBEMA �:
CBEMA, X3 Secretariat
Attn: Lynn Barra
1250 Eye St.
Suite 200
Washington, DC 20005 (USA)
Lynn Barra peut aussi �tre contact�e par t�l�phone au +1.202.626.5738
pour une demande de copie, bien qu'un courrier soit probablement plus
courtois.
Acc�s �lectronique au Document de Travail SQL3
La plus r�cente version (� la date de r�daction) du document de
travail SQL3 (� la fois ANSI et ISO, et de toutes ses parties) est
disponible par "ftp anonyme" ou par "ftpmail" sur:
gatekeeper.dec.com
dans
/pub/standards/sql/
Dans ce r�pertoire , il y a de nombreux fichiers. Ce sont des
fichiers PostScript et "texte ordinaire" (pas tr�s bien format�s, mais
lisibles sur un �cran sans logiciel sp�cifique).
En g�n�ral, vous pouvez trouver des fichiers avec des noms tels que :
sql-bindings-mar94.ps
sql-bindings-mar94.txt
sql-cli-mar94.ps
sql-cli-mar94.txt
sql-foundation-mar94.ps
sql-foundation-mar94.txt
sql-framework-mar94.ps
sql-framework-mar94.txt
sql-psm-mar94.ps
sql-psm-mar94.txt
A mesure que de nouvelles versions des documents sont produites le
"mar94" changera pour indiquer la nouvelle date de publication (e.g.,
"aug94" est la date attendue de la prochaine publication suivant
"mar94").
De plus, pour les lecteurs ne pouvant pas obtenir une liste de
r�pertoire par FTP, nous avons ajout� un fichier ayant pour nom :
ls
dans le m�me r�pertoire. Ce fichier (surprise!) contient une liste du
r�pertoire.
R�cup�rer les Fichiers Directement par Ftp
Voici un exemple sur la fa�on d'utiliser FTP. Sp�cifiquement, il
montre comment se connecter � gatekeeper.dec.com, aller au r�pertoire
o� le document de base est gard� et � transf�rer ce document sur votre
machine. Notez que votre machine doit pouvoir acc�der � l'internet
pour faire cela. Le nom de connexion est 'ftp' et le mot de passe est
votre adresse e-mail (on appelle quelquefois cela 'ftp anonyme'). La
commande 'type binaire' est utilis�e pour s'assurer qu'aucuns bits ne
seront supprim�s du (des) fichier(s) re�u(s). La commande 'get'
r�cup�re un fichier � la fois. Les commentaires dans le script ci-
dessous sont plac�s entre les signes < ... >, < comme ceci > .
% ftp gatekeeper.dec.com
Connected to gatekeeper.dec.com.
220- *** /etc/motd.ftp ***
Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
<...il en va ainsi pendant un certain temps...>
220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready.
Name (gatekeeper.dec.com:<votre nom de connexion ici>): ftp <anonyme fonctionne �galement>
331 Guest login ok, send ident as password.
Password: <entrez votre adresse e-mail ici>
230 Guest login ok, access restrictions apply.
Remote system type is UNIX. <ou autre>
Using binary mode to transfer files.
ftp> cd pub/standards/sql
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 9529
-r--r--r-- 1 root system 357782 Feb 25 10:18 x3h2-93-081.ps
-r--r--r-- 1 root system 158782 Feb 25 10:19 x3h2-93-081.txt
-r--r--r-- 1 root system 195202 Feb 25 10:20 x3h2-93-082.ps
-r--r--r-- 1 root system 90900 Feb 25 10:20 x3h2-93-082.txt
-r--r--r-- 1 root system 5856284 Feb 25 09:55 x3h2-93-091.ps
-r--r--r-- 1 root system 3043687 Feb 25 09:57 x3h2-93-091.txt
226 Transfer complete.
ftp> type binary
200 Type set to I.
ftp> get x3h2-93-082.txt
200 PORT command successful.
150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes).
226 Transfer complete.
90900 bytes received in 0.53 seconds (166.11 Kbytes/s)
ftp> quit
% <le fichier est maintenant dans votre r�pertoire sous le nom x3h2-93-082.txt>
R�cup�ration de Fichiers Sans Faire un ftp Direct
Digital Equipment Corporation, comme plusieurs autres compagnies,
fournit un service de ftp par courrier �lectronique. La r�ponse peut
prendre plusieurs jours, mais cela fournit un service �quivalent � ftp
pour ceux qui n'ont pas un acc�s direct au ftp par Internet.
L'adresse du serveur est:
[email protected]
Le script suivant r�cup�rera la derni�re version PostScript du
document SQL3 :
reply
[email protected]
connect gatekeeper.dec.com anonymous
binary
compress
Le script suivant r�cup�rera la derni�re version PostScript du docu�
ment SQL3 :
reply
[email protected]
connect gatekeeper.dec.com anonymous
binary
compress
uuencode
chdir /pub/standards/sql
get x3h2-93-091.ps
quit
La premi�re ligne du script commande au serveur de vous retourner les
fichiers demand�s; vous devrez remplacer "joe.programmer@imaginary-
corp.com" par votre adresse Internet. Le fichier x3h2-93-091.ps, dans
cet exemple, est retourn� sous forme de 34 messages e-mail s�par�s,
"compress�s" et "uuencod�s". Si votre environnement ne dispose pas des
outils pour reconstruire de tels fichiers, alors, il vous faudra
r�cup�rer le fichier sous forme de texte pur en utilisant le script
suivant:
reply
[email protected]
connect gatekeeper.dec.com anonymous
chdir /pub/standards/sql
get x3h2-93-091.ps
quit
Mais, attention, le fichier .ps vous sera probablement envoy� en plus
de 70 morceaux!
Pour r�cup�rer un fichier particulier, autre que x3h2-93-091.ps,
remplacez simplement "x3h2-93-091.ps" par le nom du fichier d�sir�.
Pour obtenir la liste de tous les fichiers disponibles dans un
r�pertoire, remplacez "get x3h2-93-091.ps" par "dir".
2244..1100.. PPaarrttiiee 11 -- EEttaatt AAccttuueell ddee ll''IISSOO//AANNSSII SSQQLL
Ce chapitre constitue une source d'information � propos du processus
de normalisation de SQL et de son �tat actuel.
�tat Actuel
Le d�veloppement pour am�liorer SQL afin d'en faire un langage complet
pour la d�finition et la gestion d'objets persistants et complexes.
Ceci comprend : les hi�rarchies de g�n�ralisation et de
sp�cialisation, l'h�ritage multiple, les types de donn�es d�finies par
l'utilisateur, les d�clencheurs et les assertions, le support des
syst�mes � base de connaissances, les requ�tes r�cursives, et des
outils compl�mentaires d'administration de donn�es. Cela inclue
�galement la sp�cification des types de donn�es abstraits (ADTs), des
identificateurs d'objets, des m�thodes, de l'h�ritage, du
polymorphisme, de l'encapsulation et de tous les autres moyens
normalement associ�s � la gestion d'objets.
A l'automne 1996, plusieurs parties de SQL3 ont �t� soumises � un vote
de l'ISO CD. Ce sont SQL/Framework, SQL/Foundation et SQL/Bindings.
Ce vote �choua (comme pr�vu) avec environ 900 commentaires. Fin
Janvier, un comit� de r�daction traita un grand nombre de solutions
aux probl�mes qui furent soit incluses avec les commentaires du vote
ou soumises en tant que documents s�par�s. Depuis le comit� de
r�daction DBL n'a pas pu traiter tous les commentaires et sa dur�e a
�t� augment�e. La fin du comit� de r�daction est pr�vue pour la fin
Juillet 1997, � Londres.
A la suite du comit� de r�daction de Juillet, on attend qu'un vote
final du CD soit demand� pour ces parties de SQL. Le processus du CD
Final prendra environ 6 mois et un comit� de r�daction du DBL, apr�s
lesquels il y aura un vote IS et un tr�s rapide vote IS.
Les proc�dures ISO ont chang� depuis SQL/92, et les comit�s SQL
travaillent encore selon les r�gles du processus.
Si tout va bien, ces parties du SQL3 deviendront une norme officielle
ISO/IEC en fin 1998, mais le programme est tr�s serr�.
En 1993, les comit�s de d�veloppement ANSI et ISO ont d�cid� de
d'�clater le d�veloppement futur de SQL en une norme multi-parties.
Ces parties sont :
� Partie 1: Structure Description non technique de la mani�re dont le
document doit �tre structur�.
� Partie 2: Base Sp�cifications de base, incluant toutes les
nouvelles fonctionnalit�s ADT.
� Partie 3: SQL/CLI Interface du niveau appel (Call Level Interface).
� Partie 4: SQL/PSM Sp�cifications des proc�dures enregistr�es
� Partie 5: SQL/Bindings SQL Dynamique et SQL Embedded SQL liens
venant de SQL-92.
� Partie 6: SQL/XA Une sp�cialisation de l'interface populaire XA
d�velopp�e par X/Open
� Partie 7:SQL/Temporal Ajoute les capacit�s li�es au temps � la
norme SQL.
Aux USA, la totalit� de SQL3 est en cours de traitement � la fois
comme projet ("D") national et comme projet ISO. La fin de SQL3 est
attendue pour courant 1999.
Le SQL/CLI et le SQL/PSM sont en cours de traitement aussi rapidement
que possible comme addenda � SQL-92. Aux USA, ils sont trait�s
uniquement comme projet International. SQL/CLI a �t� termin� en 1995.
SQL/PSM devrait �tre termin� fin 1996.
En plus du travail sur SQL3, quelques projets additionnels sont
poursuivis :
� SQL/MM Un effort en cours pour d�finir une norme multi-media
utilisant les possibilit�s de SQL3 ADT.
� Acc�s aux donn�es � distance (RDA)
Comit�s et Processus de Standardisation
Il y a effectivement de nombreux comit�s de normalisation de par le
monde. Il y a un groupe international de normalisation SQL faisant
partie de l'ISO. Un certain nombre de pays on des comit�s qui se
consacrent � SQL. Ces pays (habituellement) envoient des repr�sentants
aux r�unions ISO/IEC JTC1/SC 21/WG3 DBL. Les pays qui participent
activement au processus de normalisation ISO SQL sont :
� Australie
� Br�sil
� Canada
� France
� Allemagne
� Japon
� Cor�e
� Pays-Bas
� Angleterre
� �tats-Unis
Validation NIST
Les impl�mentations SQL sont valid�es (aux �tats-Unis) par le National
Institute of Standards and Testing (NIST). Le NIST poss�de une suite
de tests de validation pour le niveau de base SQL-92. Les d�tails
exacts des exigences de la validation NIST sont d�finis comme un
Federal Information Processing Standard (FIPS). Les exigences
actuelles pour SQL sont d�finies dans le document FIPS 127-2. Les
versions Postscript et Texte de ce document peuvent �tre obtenues au
NIST. La Liste des Produits Valid�s � jour peut �galement �tre obtenue
au NIST.
Publications et Articles sur le Standard SQL
Il y a deux versions de la norme SQL. Les deux sont disponibles �
l'ANSI:
� ISO/IEC 9075:1992, "Information Technology --- Database Languages
--- SQL"
� ANSI X3.135-1992, "Database Language SQL"
Les deux versions de la norme SQL sont identiques sauf la page de
garde et les r�f�rences aux autres normes. Les deux versions sont
disponibles au :
American National Standards Institute
1430 Broadway
New York, NY 10018
USA
T�l�phone (ventes): +1.212.642.4900
En suppl�ment � la norme SQL-92, il y a maintenant un Technical Corri�
gendum (correction d'erreurs) :
* Technical Corrigendum 1:1994 to ISO/IEC 9075:1992
Le TC 1 doit aussi �tre disponible � l'ANSI. Il n'y a qu'une version
du TC 1 -- qui s'applique � la fois aux versions ISO et ANSI de
SQL-92.
En suppl�ment � ces normes, plusieurs livres ont �t� �crits sur la
norme SQL 1992. Ces livrent donnent une description bien plus lisible
de la norme que celle donn�e par le norme elle-m�me.
Standards connexes
Un certain nombre d'autres normes pr�sentent de l'int�r�t pour la
communaut� SQL. Cette section contient des pointeurs donnant des
informations sur ces efforts. Ces pointeurs seront plus nombreux �
mesure que des informations compl�mentaires seront disponibles sur le
web.
� SQL Environnements (FIPS 193) - (Environnements SQL)
� Next Generation Repository Systems (X3H4) - (Syst�mes D�positaires
de la Prochaine G�n�ration) Une version des Nouvelles appelant �
une participation au "D�veloppement des Standards pour les Syst�mes
D�positaires de la Prochaine G�n�ration."
2244..1111.. PPaarrttiiee 22 -- FFoonnddeemmeennttss IISSOO//AANNSSII SSQQLL
Une partie importante de l'effort pour SQL3 r�side dans le document de
base SQL :
� Capacit�s de Base SQL/PSM (venant de SQL/PSM-92)
� Nouveaux types de donn�es
� D�clencheurs
� Sous-tables
� Types de Donn�es Abstraits (ADT)
� Capacit�s Orient�es Objets
Il y a plusieurs pr�-requis pour les capacit�s orient�es objets :
� Capacit� de pouvoir d�finir des op�rations complexes
� Stockage des op�rations complexes dans la base de donn�es
� Appels de Proc�dures Externes � Quelques op�rations peuvent ne pas
exister dans SQL ou peuvent n�cessiter des interactions externes
Ces capacit�s sont d�finies comme faisant partie de SQL/PSM
Une grande quantit� de travail est en cours de r�alisation pour
affiner le mod�le objet SQL-3 et l'aligner sur le mod�le objet propos�
par l'ODMG. Cet effort est d�crit dans les papiers X3H2 et ISO DBL :
Accommoder SQL3 et ODMG. Une mise � jour r�cente sur le Fusionneur
SQL3/OQL est �galement disponible.
Planification de SQL3
Le travail sur SQL3 se poursuit normalement, mais la publication de la
norme finale se situe encore � un horizon de plusieurs ann�es.
� Le vote International pour passer du Brouillon de Travail au
Brouillon du Comit� (CD) aura lieu � l'automne 1996.
� On s'attend � ce que le vote g�n�re de nombreux commentaires
� Un second vote sera probablement n�cessaire
� Le vote pour le Brouillon du Standard International devrait avoir
lieu � la mi-1998
� Le Standard International doit �tre termin� � la mi-1999.
Le programme de la version ANSI sera similaire.
2244..1122.. PPaarrttiiee 33 -- IInntteerrffaaccee dd''AAppppeell SSQQLL IISSOO//AANNSSII
SQL/CLI est une interface de programmation d'appel pour les bases de
donn�es SQL. Il est con�u pour acc�der aux bases de donn�es � partir
d'applications ferm�es. CLI a, � l'origine, �t� cr�� par un sous-
comit� du groupe SQL Access (SAG). Les sp�cifications de SAG/CLI ont
�t� publi�es, en 1992, en tant que sp�cifications Microsoft Open
DataBase Connectivity (ODBC) en 1992. En 1993, le SAG a soumis le CLI
aux comit�s ANSI et ISO SQL. (Le groupe "SQL Access Group" a
maintenant �t� fusionn� avec le consortium X/Open.)
SQL/CLI fournit une norme internationale pour :
� Un CLI d�pendant de l'impl�mentation pour acc�der aux bases de
donn�es SQL
� Des outils Client-serveur pour acc�der facilement � une base de
donn�es au moyen de Biblioth�ques de Lien Dynamique
� Supporter et encourager un riche ensemble d'outils Client-serveur
Planification de SQL/CLI
Le processus de normalisation de SQL/CLI se poursuit � une vitesse
aveuglante.
� SQL/CLI est un addendum � la norme SQL de 1992 (SQL-92)
� Achev� comme norme ISO en 1995
� ISO/IEC 9075-3:1995 Information technology -- Database languages --
SQL -- Partie 3: Call-Level Interface (SQL/CLI)
� L'effort actuel porte sur l'ajout des fonctionnalit�s SQL3 �
SQL/CLI
2244..1133.. PPaarrttiiee 44 -- MMoodduulleess MM��mmoorriiss��ss PPeerrssiissttaannttss IISSOO//AANNSSII SSQQLL
SQL/PSM �tend SQL en ajoutant :
� Des extensions de langage proc�dural
� Des proc�dures m�moris�es multi-instructions
� Des appels de proc�dures et de fonctions externes
SQL/PSM apporte, en plus du fait d'�tre un bon outil de d�veloppement
d'application, une base pour des fonctionnalit�s orient�es objet dans
SQL3.
Proc�dures m�moris�es et multi-instructions
Multi-instructions et proc�dures m�moris�es offrent une grande vari�t�
d'avantages dans un environnement client/serveur :
� Performance - Puisqu'une proc�dure m�moris�e peut effectuer de
multiples instructions SQL, les interactions sur le r�seau, avec le
client, sont r�duites.
� S�curit� - On peut donner � un utilisateur le droit d'appeler une
proc�dure m�moris�e qui met � jour une table ou un ensemble de
tables mais lui refuser le droit de mettre � jour les tables
directement
� Code partag� - Le code d'une proc�dure m�moris�e n'a pas � �tre
r��crit ni re-test� pour chaque outil d'un client qui acc�de � la
base de donn�es.
� Contr�le - Fournit un point unique de d�finition et de contr�le
dans la logique de l'application.
Extensions de Langage Proc�dural
Le langage proc�dural ajoute la puissance d'un langage de
programmation traditionnel � SQL gr�ce � des instructions de contr�le
de flot et � d'autres constructions utilis�es en programmation.
Instructions de contr�le de flot
� If-then-else (si-alors-sinon)
� Instructions de boucle
� Prise en compte de erreurs
� Instruction de choix multiple (Case)
� Blocks (Begin-End blocks)
Les extensions de langage proc�dural comprennent d'autres
constructions des langages de programmation :
� D�claration des variables
� Instructions d'affectation de valeur
� Lecture de diagnostiques sur les processus et l'�tat
De plus, toutes les instructions SQL traditionnelles peuvent �tre
inclues dans de proc�dures multi-instructions.
Appels de Fonctions et de Proc�dures externes
Une fonctionnalit� souvent mentionn�e dans la liste des souhaits pour
de nombreuses base de donn�es et produits et qui est impl�ment�e dans
quelques-uns, est la capacit� de pouvoir augmenter les fonctionnalit�s
du logiciel de base de donn�es d'origine par des appels � des
proc�dures externes �crites par les utilisateurs.
� Cela permet � un site ou a une application en particulier d'ajouter
leurs propres fonctions base de donn�es
� Peuvent �tre utilis�es tout au long des applications bases de
donn�es
Le b�n�fice de cette capacit� est de donner acc�s, pour la base de
donn�es (et, par l�, aux applications base de donn�es), � un riche
ensemble de proc�dures et de fonctions trop nombreuses pour �tre
d�finies par un comit� de normalisation.
Planification de SQL/PSM
SQL/PSM �volue rapidement :
� SQL/PSM est un addendum � SQL-92
� Un vote international pour faire passer SQL/PSM de Brouillon de
Norme Internationale � Norme Internationale s'est achev� en fin
janvier 1996.
� Une r�union de travail en mai 1996 n'a pas apport� de solution �
tous les commentaires
� La poursuite de la r�union de travail du PSM est programm�e du 30
septembre au 4 octobre 1996
� Le programme est serr�, mais il y a des chances que le PSM le
publie en 1996.
� Sa d�signation officielle sera : ISO/IEC DIS 9075-4:199?
Information technology -- Database languages -- SQL -- Partie 4:
SQL Persistent Stored Modules (SQL/PSM)
� L'ajout du support de SQL/PSM dans les fonctionnalit�s de SQL3 est
en bonne voie.
2244..1144.. PPaarrttiiee 55 -- IISSOO//AANNSSII SSQQLL//LLiieennss
Pour en faciliter l'acc�s, la description des liens avec le langage de
programmation a �t� mise dans un document s�par�. La version actuelle
consiste simplement en un extrait concernant les liens dynamiques et
int�gr�s de SQL-92.
Un certain nombre de sujets concernant les liens avec le langage de
programmation restent en suspens.
Pour les langage de programmation traditionnels, il existe des
transformations pour les types de donn�es de SQL-92. Cependant, des
transformations doivent �tre d�finis entre les objets SQL et les
variables des langages de programmation.
Pour les langages orient�s objets, la transformation doit �tre d�finie
pour les types de donn�es courants SQL et entre le mod�le objet SQL et
le mod�le objet du langage orient� objet.
Le mod�le objet doit se stabiliser avant de r�soudre ces probl�mes.
Les liens avec le langage feront partie int�grante de SQL3.
2244..1155.. PPaarrttiiee 66 -- IInntteerrffaaccee ddee SSpp��cciiaalliissaattiioonn ((SSQQLL//XXAA)) IISSOO//AANNSSII SSQQLL
XXAA))
Cette sp�cification devrait normaliser l'interface de programmation
d'application (API) entre un Gestionnaire de Transaction global et le
Gestionnaire de Ressources SQL. Il devrait normaliser les appels de
fonction, en s'appuyant sur la s�mantique de l'ISO/IEC 10026,
"Distributed Transaction Processing", qu'un Gestionnaire de Ressources
SQL devrait supporter pour la validation en deux phases. Le document
de base est d�riv� d'une publication de l'X/Open, avec sa permission,
qui sp�cifie explicitement les param�tres d'entr�e, de sortie et la
s�mantique, en termes de types de donn�es SQL, pour les fonctions
suivantes : xa_close, xa_commit, xa_complete, xa_end, xa_forget,
xa_open, xa_prepare, xa_recover, xa_rollback, et xa_start.
ISO essaye actuellement de coller aux sp�cifications XA de l'X/Open.
Ce processus de suivi, au plus pr�s, consiste � adopter les
sp�cifications de l'industrie sans changements. Le vote pour l'XA �
l'ISO SC21, JTC 1 a d�but� le 27 avril 1995 et se termine le 27
octobre 1995. Si les sp�cifications XA sont approuv�es par 75% des
votants, et par 2/3 des membres participants de JTC 1, cela deviendra
une Norme Internationale. Si le vote est approuv�, SQL/XA pourrait
devenir une norme en 1996.
2244..1166.. PPaarrttiiee 77 -- IISSOO//AANNSSII SSQQLL TTeemmppoorreell
Le SQL Temporel traite des donn�es en relation avec le temps.
Conceptuellement, cela consiste � dire qu'il est utile d'aller
chercher des donn�es pour d�couvrir l'allure qu'elles avaient � un
certain moment. L'origine du SQL Temporel r�side dans un papier de
d�cembre 1994 de Rick Snodgrass qui en d�crivait les concepts.
X3 Annonce l'Approbation d'un Nouveau Projet, ISO/IEC 9075 Partie 7 :
SQL/Temporel est un communiqu� de presse concernant le SQL/Temporel.
----------------------------------------------------------------------------
SQL Temporel
************
Rick Snodgrass (Pr�sident du comit� TSQL2)
31-Dec-1994
Plusieurs personnes se sont pos� la question de la n�cessit� de la
prise en charge de la gestion du temps dans SQL3 (comme cela a �t�
propos� par DBL RIO-75, demandant qu'une nouvelle partie de SQL prenne
en charge les bases de donn�es temporelles). Le sentiment est que les
types de donn�es abstraits (ADT) sont suffisants pour g�rer les ques�
tions de temps. Dans ce papier, je d�montre, par des exemples con�
crets, que l'utilisation de colonnes typ�es, avec des types de donn�es
abstraits, est inadapt�e pour des requ�tes temporelles. En partic�
ulier, beaucoup de requ�tes temporelles courantes sont soit difficiles
� simuler en SQL, soit n�cessitent d'int�grer SQL dans un langage
proc�dural. Des solutions alternatives sont expos�es dans TSQL2, une
extension temporelle � SQL-92.
2244..1166..11.. IINNTTRROODDUUCCTTIIOONN
La prise en charge d'un instant de validit� va au-del� de celle de
types de donn�es temporels abstraits (ADT temporel). Avec ce dernier,
on sp�cifie qu'une colonne sera celle consacr�e au domaine temporel,
tel que la DATE ou un INTERVALLE (je donnerai des exemples bient�t).
Avec un instant de validit�, les lignes d'une table varient en
fonction du temps, refl�tant les modifications de la r�alit�. Le
timbre dateur associ� � une ligne d'une table � instant de validit�
est interpr�t� par le langage d'interrogation comme l'instant o� la
combinaison des valeurs dans les colonnes d'une ligne �tait valide.
Ce timbre dateur implicite permet d'exprimer des requ�tes de mani�re
simple et intuitive.
2244..1166..22.. ��TTUUDDEE DDEE CCAASS -- EENNRREEGGIISSTTRREEMMEENNTT DDEE LL''IINNFFOORRMMAATTIIOONN CCOOUURRAANNTTEE
Le bureau du personnel (BP) salari� de l'universit� de l'Arizona
poss�de un certain nombre d'informations, dans une base de donn�es,
dont le nom de chaque employ�, son salaire actuel ainsi que son titre.
On peut repr�senter cela dans une simple table.
Employee(Name, Salary, Title)
�tant donn� cette table, retrouver le salaire d'un employ� est une
op�ration ais�e.
SELECT Salary
FROM Employee
WHERE Name = 'Bob'
Maintenant, le BP souhaite enregistrer les dates de naissance. Pour ce
faire, on ajoute une colonne � la table, ce qui donne le sch�ma suiv�
ant.
Employee(Name, Salary, Title, DateofBirth DATE)
Retrouver la date de naissance d'un employ� est analogue � retrouver
son salaire.
SELECT DateofBirth
FROM Employee
WHERE Name = 'Bob'
2244..1166..33.. ��TTUUDDEE DDEE CCAASS -- EENNRREEGGIISSTTRREEMMEENNTT DDEE LL''IINNFFOORRMMAATTIIOONN HHIISSTTOORRIIQQUUEE
Le BP souhaite informatiser l'historique de l'emploi. Pour ce faire,
ils ajoutent deux colonnes, l'une pour indiquer quand l'information
contenue dans le ligne est devenue valide, l'autre indiquant la fin de
validit� de cette information.
Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)
Pour le mod�le de donn�es, ces nouvelles colonnes sont identiques � la
date de naissance. Cependant, leur pr�sence � des cons�quences �
grande �chelle.
2244..1166..44.. ��TTUUDDEE DDEE CCAASS -- PPRROOJJEECCTTIIOONN
Pour trouver le salaire actuel d'un salari�, les choses sont plus
difficiles.
SELECT Salary
FROM Employee
WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop
Cette requ�te est plus compliqu�e que la pr�c�dente. Le coupable se
situe, de toute �vidence, dans ces deux nouvelles colonnes. Le BP veut
fournir � chaque employ� l'historique de leur salaire. Pour chaque
personne, sp�cifiquement, il est n�cessaire de d�terminer les inter�
valles correspondants � chacun des salaires. Malheureusement, cela
n'est pas possible en SQL. Un employ� peut avoir un nombre arbitraire
de changements de titre entre deux changements de salaire.
Name Salary Title DateofBirth Start Stop
---- ------ ----- ----------- ----- ----
Bob 60000 Assistant Provost 1945-04-09 1993-01-01 1993-05-30
Bob 70000 Assistant Provost 1945-04-09 1993-06-01 1993-09-30
Bob 70000 Provost 1945-04-09 1993-10-01 1994-01-31
Bob 70000 Professor 1945-04-09 1994-02-01 1994-12-31
Figure 1
Notez qu'il y a trois lignes pour lesquelles le salaire de Bob reste
constant � $ 70,000. De l�, le r�sultat sera de deux lignes pour Bob.
Name Salary Start Stop
---- ------ ----- ----
Bob 60000 1993-01-01 1993-05-30
Bob 70000 1993-06-01 1994-12-31
Une alternative est de donner � l'utilisateur une �dition des informa�
tions Salaire et Titre, et de laisser l'utilisateur d�terminer quand
son salaire a chang�. Cette alternative n'est ni tr�s attirante ni
tr�s r�aliste. Une seconde alternative est d'utiliser SQL autant que
possible.
CREATE TABLE Temp(Salary, Start, Stop)
AS SELECT Salary, Start, Stop
FROM Employee;
r�p�ter
UPDATE Temp T1
SET (T1.Stop) = (SELECT MAX(T2.Stop)
FROM Temp AS T2
WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start
AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)
WHERE EXISTS (SELECT *
FROM Temp AS T2
WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start
AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop)
jusqu'� ce qu'aucune ligne ne soit mise � jour;
DELETE FROM Temp T1
WHERE EXISTS (SELECT *
FROM Temp AS T2
WHERE T1.Salary = T2.Salary
AND ((T1.Start > T2.Start AND T1.Stop <= T2.Stop)
OR (T1.Start >= T2.Start AND T1.Stop < T2.Stop))
La boucle trouve des intervalles qui se chevauchent ou sont adjacents
et, doivent donc �tre fusionn�s. La boucle est ex�cut�e log N fois
dans le pire des cas, o� N est le nombre de lignes dans une cha�ne de
lignes de valeur �quivalente qui se chevauchent ou sont adjacentes. Le
lecteur peut simuler cette requ�te sur la table de l'exemple pour se
convaincre de sa v�rit�.
Une troisi�me alternative consiste � utiliser SQL uniquement pour
ouvrir un curseur sur la table. Une liste cha�n�e de p�riodes est
entretenue, chacune avec un salaire. La liste cha�n�e doit �tre
initialis�e vide.
DECLARE emp_cursor CURSOR FOR
SELECT Salary, Title, Start, Stop
FROM Employee;
OPEN emp_cursor;
boucle:
FETCH emp_cursor INTO :salary, :start, :stop;
si pas-de-donn�es est retourn� alors aller � fin;
trouver la position dans la liste cha�n�e pour ins�rer cette information;
aller � boucle;
fin:
CLOSE emp_cursor;
R�p�ter tout au long de la liste cha�n�e, �dition des dates et des
salaires
La liste cha�n�e peut ne pas �tre n�cessaire au cas o� le curseur est
ORDER BY Start.
Dans tous les cas, la requ�te, tout ce qu'il y a de naturelle, est
tout � fait difficile � exprimer en utilisant les possibilit�s
offertes par SQL-92. La requ�te est triviale en TSQL2.
SELECT Salary
FROM Employee
2244..1166..55.. ��TTUUDDEE DDEE CCAASS -- JJOOIINNTTUURREE
Une approche plus drastique consiste � �viter le probl�me d'extraction
de l'historique du salaire en r�organisant le sch�ma pour s�parer les
informations de salaire, de titre, et de date de naissance (dans ce
qui suit, nous ignorerons la date de naissance pour raison de
simplicit�).
Employee1 (Name, Salary, Start DATE, Stop DATE)
Employee2 (Name, Title, Start DATE, Stop DATE)
La table Employee1 est la suivante.
Name Salary Start Stop
---- ------ ----- ----
Bob 60000 1993-01-01 1993-05-30
Bob 70000 1993-06-01 1993-12-31
Voici un exemple de la table Employee2.
Name Title Start Stop
---- ------ ----- ----
Bob Assistant Provost 1993-01-01 1993-09-30
Bob Provost 1993-10-01 1994-01-31
Bob Professor 1994-02-01 1994-12-31
Avec cette modification, aller chercher l'information de salaire d'un
employ� devient maintenant facile.
SELECT Salary, Start, Stop
FROM Employee1
WHERE Name = 'Bob'
Mais qu'en est-il si le BP veut une table des salaires, des inter�
valles de titre (c'est-�-dire, supposons que le BP veuille qu'une
table soit calcul�e dans la forme de la Figure 1)? Une alternative est
d'�diter les deux tables, et de laisser l'utilisateur en calculer les
combinaisons. Une seconde alternative est d'utiliser enti�rement SQL.
Malheureusement, cette requ�te doit faire une �tude de cas sur la
mani�re dont chaque ligne de Employee1 se chevauche avec chaque ligne
de Employee2; il y a quatre cas possibles.
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
AND Employee2.Start <= Employee1.Start AND Employee1.Stop < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
AND Employee1.Start >= Employee2.Start AND Employee2.Stop < Employee1.Stop
AND Employee1.Start < Employee2.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee1.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
AND Employee2.Start > Employee1.Start AND Employee1.Stop < Employee2.Stop
AND Employee2.Start < Employee1.Stop
UNION
SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee2.Stop
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
AND Employee2.Start > Employee1.Start AND Employee2.Stop < Employee1.Stop
Prendre en compte, d'une fa�on correcte, tous les cas constitue une
t�che qui rel�ve du challenge. En TSQL2, r�aliser une jointure tem�
porelle correspond simplement � ce que l'on peut esp�rer.
SELECT Employee1.Name, Salary, Dept
FROM Employee1, Employee2
WHERE Employee1.Name = Employee2.Name
2244..1166..66.. ��TTUUDDEE DDEE CCAASS -- AAGGRR��GGAATTSS
Maintenant, on demande au BP quel est le salaire maximum ? Avant
d'ajouter les donn�es de temps, c'�tait facile.
SELECT MAX(Salary)
FROM Employee
Maintenant que l'historique du salaire est enregistr�, nous obtien�
drons quelque chose comme l'historique du salaire maximum � travers le
temps. Le probl�me est que, naturellement, SQL ne fournit pas
d'agr�gats temporels. Le moyen simple de r�aliser cela consiste �
�diter l'information, et � chercher, � la main, le maximum. Une alter�
native consiste � �tre plus astucieux et � convertir l'instantan� de
la requ�te agr�g�e en une requ�te non agr�g�e, puis � convertir le
r�sultat en requ�te temporelle. La requ�te non agr�g�e retrouve les
salaires pour lesquels un salaire plus �lev� n'existe pas.
SELECT Salary
FROM Employee AS E1
WHERE NOT EXISTS (SELECT *
FROM Employee AS E2
WHERE E2.Salary > E1.Salary)
Convertir cette requ�te en une requ�te temporelle est loin d'�tre
�vident. Ce qui suit constitue une approche possible.
CREATE TABLE Temp (Salary, Start, Stop)
AS SELECT Salary, Start, Stop
FROM Employee;
INSERT INTO Temp
SELECT T.Salary, T.Start, E.Start
FROM Temp AS T, Employee AS E
WHERE E.Start >= T.Start AND E.Start < T.Stop AND E.Salary > T.Salary;
INSERT INTO Temp
SELECT T.Salary, T.Stop, E.Stop
FROM Temp AS T, Employee AS E
WHERE E.Stop > T.Start AND E.Stop <= T.Stop AND E.Salary > T.Salary;
DELETE FROM Temp T
WHERE EXISTS (SELECT *
FROM Employee AS E
WHERE ((T.Start => E.Start AND T.Start < E.Stop)
OR (E.Start >= T.Start AND E.Start < T.Stop))
AND E.Salary > T.Salary;
Cette approche cr�e une table auxiliaire. Nous ajoutons � cette table
la p�riode inf�rieure soustraite d'une p�riode et la partie sup�rieure
soustraite d'une p�riode. Nous supprimons alors toutes les p�riodes
qui se chevauchent avec une ligne d�finie dans la sous-requ�te, de ce
fait r�alisant le NOT EXISTS(n'existe pas). Finalement nous g�n�rons �
partir de la table auxiliaire les p�riodes maximales, de la m�me fa�on
que l'information de salaire avait �t� calcul�e ci-dessus. Comme on
peut l'imaginer, un tel code SQLest extr�mement inefficace �
l'ex�cution, compte tenu des requ�tes complexes imbriqu�es contenant
des pr�dicats d'in�galit�.
Une troisi�me alternative consiste � utiliser le moins possible SQL,
et plut�t de calculer le maximum d�sir� dans un langage h�te en
utilisant des curseurs.
La requ�te en TSQL2 est de nouveau simple et intuitive.
SELECT MAX(Salary)
FROM Employee
2244..1166..77.. RR��SSUUMM��
Dans la plupart des applications de base de donn�es on manipule des
donn�es qui changent en fonction du temps. La prise en compte de
l'instant de validit� est absente de SQL. Beaucoup de requ�tes
temporelles ordinaires sont difficiles � simuler en SQL, ou requi�rent
du SQL int�gr� dans un langage proc�dural, ceci �tant d� au manque de
support des tables avec instant de validit� dans son mod�le de donn�es
et dans la structure des requ�tes.
Ailleurs, nous avons montr� que l'ajout du support de l'instant de
validit� ne requiert que peu de modifications dans l'impl�mentation
des SGDB, peut radicalement simplifier un certain nombre de requ�tes
et en permettre d'autres, et peut, plus tard, permettre des
optimisations dans les structures de m�moires, les m�thodes
d'indexation et les strat�gies d'optimisation qui peuvent entra�ner
des am�liorations notables dans les performances.
Avec une nouvelle partie de SQL3 supportant les informations qui
varient avec le temps, permettant une meilleure gestion des donn�es
temporelles par SQL3, nous pouvons commencer � apporter une r�ponse �
de telles application.
----------------------------------------------------------------------------
Comit� de Normalisation Accr�dit�* X3, Technologie de L'Information
COMMUNIQUE
Doc. No.: PR/96-0002
Reply to: Barbara Bennett at
[email protected]
X3 Annonce l'approbation d'un Nouveau Projet, ISO/IEC
9075 Partie 7: SQL/Temporal
Washington D.C., Janvier 1996
----------------------------------------------------------------------------
-- Le Comit� de Normalisation Accr�dit� X3, Technologie de l'Informa�
tion, annonce l'approbation d'un nouveau projet concernant le support
de SQL/Temporel , ISO/IEC 9075 Partie 7, le travail devant �tre
r�alis� au sein du Comit� Technique X3H2, Bases de Donn�es. Cette
proposition de norme concerne un nouvelle partie de la norme naissante
SQL3, e.g., Partie 7, SQL Temporel, et sp�cifie les extensions au lan�
gage SQL pour g�rer le stockage, l'extraction et la manipulation des
donn�es temporelles dans un environnement de base de donn�es SQL.
La prochaine r�union du comit� X3H2 est planifi� pour la p�riode du 11
au 14 Mars 1996 dans le Kansas.
Les questions concernant ce projet doivent �tre envoy�es au pr�sident
de X3H2 :
Chairman of X3H2,
Dr. Donald R. Deutsch,
Sybase, Inc., Suite 800,
6550 Rock Spring
Drive, Bethesda, MD 20817.
Email:
[email protected].
Un appel initial pour de possibles brevets ou autres sujets pertinents
(copyrights, trademarks) est sur le point d'�tre �mis. Soumettez, s'il
vous pla�t, les informations � ce propos au secr�tariat de X3 � :
X3 Secretariat
1250 Eye Street
NW, Suite 200,
Washington DC 20005.
Email:
[email protected]
FAX: (202)638-4922.
2244..1177.. PPaarrttiiee 88 -- SSQQLL MMUULLTTIIMMEEDDIIAA IISSOO//AANNSSII ((SSQQLL//MMMM))
Un nouveau projet international de normalisation ISO/IEC pour le
d�veloppement d'une biblioth�que de classe SQL pour les applications
multi-media a �t� approuv� d�but 1993. Cette nouvelle activit� de
normalisation, appel�e SQL Multi-media (SQL/MM), sp�cifiera les
paquetages de d�finition de types de donn�es abstraites SQL (ADT) en
utilisant les fonctions fournies dans les sp�cifications SQL3
naissantes pour ADT. SQL/MM a pour objectif de normaliser des
biblioth�ques de classes pour la science et l'ing�nierie, le
traitement des textes et des documents, ainsi que des m�thodes pour la
gestion d'objets multi-media tels que les images, les sons, les
animations, la musique et la vid�o. Il fournira vraisemblablement un
lien entre le langage SQL et les objets multi-media d�finis par les
autres entit�s de normalisation du JTC1 (e.g. SC18 pour les documents,
SC24 pour les images, et SC29 pour les photographies et les images
anim�es).
Le Plan du Projet pour SQL/MM pr�voit que ce sera une norme multi-
parties dont le nombre de parties pourra �voluer. La partie 1
consistera en un cadre sp�cifiant comment les autres parties doivent
�tre architectur�. Chacune de ces autres parties sera consacr�e � un
paquetage d'application SQL sp�cifique. En ao�t 1994, la structure
existante �tait la suivante :
� Partie 1: Cadre - Description non technique de la mani�re dont le
document est structur�.
� Partie 2: M�thodes pour le Texte et ADT (types de donn�es
abstraits) pour le traitement des textes. Environ 45 pages.
� Partie 3: M�thodes Spatiales et ADT pour la gestion des donn�es
spatiales Environ 200 pages avec l'active contribution d'experts en
Donn�es Spatiales de 3 entit�s nationales.
� Partie 4: M�thode � Usage G�n�ral et ADT pour les nombres
complexes, et des fonctionnalit�s incluant la trigonom�trie et les
fonctions exponentielles les vecteurs, les ensembles etc.
Actuellement environ 90 pages.
On assiste � des efforts de normalisation dans le domaine des
informations Spatiales et G�ographiques :
� ANSI X3L1 - Syst�mes d'Information G�ographique. Mark Ashworth de
Unisys est charg� de la liaison entre X3L1 et ANSI X3H2. Il est
�galement le r�dacteur des parties 1, 3, and 4 du brouillon de
SQL/MM.
� ISO TC 211 - Information g�ographique/G�omatique.
2255.. SSuuppppoorrtt TTeecchhnniiqquuee ppoouurr PPoossttggrreeSSQQLL
Si vous avez des questions techniques ou si vous rencontrez des
probl�mes vous pouvez envoyer un courrier �lectronique � :
�
[email protected]
et vous recevrez par courrier �lectronique une r�ponse dans la
journ�e qui suit. Comme le nombre de produits internet est tr�s
large, et que les utilisateurs aident les autres utilisateurs,
internet est capable d'apporter facilement un support technique �
des millions d'utilisateurs. Le support par Email est de loin
beaucoup plus adapt� que celui effectu� par t�l�phone car on peut
r�cup�rer les messages d'erreur, les sorties de programme etc... et
les transmettre facilement dans les listes de diffusion ou les
forums.
Dans un futur proche, l'organisation PostgreSQL vendra un support
technique aux petites et grandes compagnies, les revenus de cette
activit� serviront � entretenir plusieurs sites miroirs (web et ftp)
partout dans le monde. Ces revenus pourront aussi servir � cr�er une
documentation imprim�e, des guides, des livres pour aider les clients.
Les profits seront �galement utilis�s � construire des
immeubles/salles de classe et � offrir des cours techniques sur
l'administration et la gestion des bases de donn�es et � organiser des
conf�rences annuelles pour les utilisateurs. Ceci devrait aider
l'organisation PostgreSQL � se d�brouiller toute seule.
Vous pouvez aussi vous faire aider par des soci�t�s de conseil
professionnelles telles que Anderson, WGS (Work Group Solutions). Pour
de l'aide, puisqu'ils ont une tr�s bonne expertise en "C", "C++"
(PostgreSQL est �crit en "C"), contactez les � -
� Work Group Solutions <
http://www.wgs.com>
� Anderson Consulting <
http://www.ac.com>
2266.. AAssppeeccttss ��ccoonnoommiiqquueess eett CCoommmmeerrcciiaauuxx
Les bases de donn�es commerciales paient de nombreuses taxes telles
que des taxes f�d�rales, d'�tat, sur les ventes, sur les salari�s, la
s�curit� sociale, les taxes pour les soins m�dicaux, des indemnit�s
pour les employ�s, des co�ts de marketing et de publicit�. Tous ces
co�ts ne sont pas destin�s directement au d�veloppement de la base de
donn�e. Quand vous achetez une base de donn�es commerciale une partie
du montant est destin� aux taxes, aux d�penses de recherche et
d�veloppement ( R&D ). Donc la valeur r�elle pour la base de donn�es
est beaucoup plus faible.
De plus les bases de donn�es commerciales doivent payer pour leurs
immeubles/biens et pour l'achat de machines Unix, leur installation et
leur maintenance. Tous ces co�ts sont r�percut�s sur les clients.
PostgreSQL poss�de l'avantage, sur les bases de donn�es commerciales,
de ne pas supporter de taxes puisque d�velopp�e sur l'internet. Un
tr�s grand nombre de personnes contribuent � son d�veloppement. Par
exemple, cas hypoth�tique, s'il y a un million de compagnies aux U.S.A
et que chacune contribue pour environ $ 10 (en valeur de logiciel pour
PostgreSQL) alors, chaque compagnie recevra dix millions de dollars!!
C'est cela la
GGRRAANNDDEE MMAAGGIIEE du d�veloppement sur internet.
Actuellement, le code source de PostgreSQL est constitu� d'environ 200
000 lignes de code "C" et "C++". Si le co�t de chaque ligne de code
"C" est �valu� � $ 10, alors le co�t total de PostgreSQL, tel qu'il
est aujourd'hui est de $ 2 000 000 (deux millions de dollars!!).
De nombreuses compagnies ont d�j� d�velopp� de grandes quantit�s de
code "C", "C++" maison. Donc, en prenant le code source de PostgreSQL
et en collaborant avec les autres compagnies sur internet, cela leur
b�n�ficierait beaucoup en leur faisant �conomiser du temps et des
efforts.
2277.. LLiissttee ddeess aauuttrree BBaasseess ddee DDoonnnn��eess
On trouvera ci-dessous la liste des autres bases de donn�es SQL pour
Unix, Linux.
� Cliquez et allez � Applications->databases.
<
http://www.caldera.com/tech-ref/linuxapps/linapps.html>
� Cliquez et allez � Applications->databases.
<
http://www.xnet.com/~blatura/linapps.shtml>
� Ressources pour Bases de Donn�es <
http://linas.org/linux/db.html>
� Liste des Bases de Donn�es libres
<
http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html>
� Liste des SGBDR de Browne <
http://www.hex.net/~cbbrowne/rdbms.html>
�crit par Christopher B. Browne
[email protected]
� Liste des SGBDR de SAL <
http://SAL.KachinaTech.COM/H/1/>
� Liste des SGBD Orient�s Objets de SAL
<
http://SAL.KachinaTech.COM/H/2/>
� Liste des Utilitaires et d'Autres SGDB de SAL
<
http://SAL.KachinaTech.COM/H/3/>
� Index des Logiciels de Base de Donn�es Publics de l'ACM SIGMOD
<
http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/>
2288.. IInnddiiccaattiioonnss ppoouurr llaa rreecchheerrcchhee ssuurr llee WWoorrlldd WWiiddee WWeebb IInntteerrnneett
Internet est immense, rec�le un tr�s grand nombre de logiciels et un
oc�an d'informations. Il s'accro�t � la vitesse de 500% par an. On
estime le nombre de sites Web � environ 90 million dans le monde
entier!
Utilisez des moteurs de recherche tels que "Yahoo", "Netscape",
"Lycos" etc. pour trouver une information. Allez sur Yahoo, et cliquez
sur recherche. Utilisez les options de filtrage pour affiner vos
crit�res de recherche. La m�thode de recherche par d�faut consiste en
une "recherche intelligente" qui est plus g�n�rale et donne toutes les
possibilit�s. Cliquez sur "Options" et s�lectionnez la recherche par
"EXACT phrase" , par "AND" , par "OR" , etc... De cette mani�re vous
trouverez l'information que vous cherchez beaucoup plus rapidement.
Dans le menu de recherche, il y a �galement des boutons pour une
recherche dans Usenet, dans les sites Web et les sites Yahoo.
2299.. CCoonncclluussiioonn
Apr�s avoir cherch� toutes les bases de donn�es disponibles qui soient
libres et dont le code source soit disponible, j'ai trouv� que SEUL
PostgreSQL, le SGBDR (Relationnel Objet)SQL libre, est le PLUS mature
et le plus largement utilis� au monde. PostgreSQL est tr�s attractif
en ce que beaucoup de travail a d�j� �t� effectu� et qu'il poss�de des
pilotes ODBC et JDBC permettant d'�crire des applications
ind�pendantes des bases de donn�es. Les applications �crites en
PostgreSQL qui utilisent les pilotes ODBC, JDBC sont facilement
portables sur d'autres syst�mes tels que Oracle, Sybase et Informix et
vice versa.
Vous pouvez vous demander "Mais pourquoi PostgreSQL ?" La r�ponse �
cela est que puisqu'il faut pas mal de temps pour d�velopper un
syst�me de gestion de base de donn�es ex nihilo, il est plus
raisonnable d'en utiliser un qui satisfasse aux conditions suivantes -
Un syst�me de gestion de base de donn�es
� Dont le code source soit disponible, ce doit �tre un syst�me �
"code source ouvert"
� Qui ne n�cessite pas de licence, qui n'a pas de doits de propri�t�
� Qui puisse �tre distribu� sur internet
� Qui a n�cessit� plusieurs ann�es de d�veloppement.
� Qui satisfasse des standards tels que ISO/ANSI SQL 92 (and SQL 89)
� Qui puisse r�pondre aux besoins futurs telles que SQL 3 (SQL 98)
� Qui poss�de des fonctionnalit�s avanc�es
Et, justement, il appert que c'est 'PostgreSQL' qui r�pond � tous
ces crit�res et que c'est un logiciel appropri� dans ce cas.
3300.. FFAAQQ -- QQuueessttiioonnss ssuurr PPoossttggrreeSSQQLL
Veuillez vous r�f�rer � la derni�re version de la FAQ pour les
questions g�n�rales, celles concernant Linux et Irix � :
� <
http://www.postgresql.org/docs/faq-english.shtml>
3311.. NNoottiiccee ddee CCooppyyrriigghhtt
Copyright (c) 1997 Al Dev (Alavoor Vasudevan). Tous droits r�serv�s.
AUCUNE RESPONSABILIT� NE SAURAIT �TRE RETENUE POUR DES DOMMAGES
CONS�CUTIFS A L'UTILISATION DE TOUT OU PARTIE DE CE DOCUMENT. En aucun
cas l'auteur ou le traducteur de ce document ne pourra �tre tenu pour
responsable vis-�-vis de de qui que ce soit pour tous dommages quels
qu'ils soient (y compris et sans limitation, sp�cial, fortuit,
cons�cutif, blessures directes ou indirectes pour les personnes,
pertes financi�res dues au manque � gagner, � l'interruption
d'activit�, pertes d'informations commerciales ou toutes autres
pertes financi�res) r�sultant de l'utilisation de ce document.
L'auteur et le traducteur n'offrent aucunes garanties sur
l'ad�quation, l'utilit� ou la valeur marchande de ce document. Les
marques, les compagnies et les noms de produits mentionn�s dans ce
document sont des marques de fabrique ou des marques d�pos�es de leurs
propri�taires respectifs. Veuillez vous r�f�rer aux notices de
copyright individuelles des marques, compagnies et produits mentionn�s
dans ce document. Il est de votre responsabilit� de lire et de
comprendre les notices de copyright des
organisations/compagnies/produits/auteurs mentionn�s dans ce document
avant d'utiliser leurs informations respectives.
AAFF.. AAppppeennddiiccee AA -- SSyynnttaaxxee ddee ll'' AANNSSII//IISSOO SSQQLL 11999922
Ce fichier contient la grammaire en BNF du langage, arborescence
explor�e d'abord en profondeur, r�alis�e le 27-AO�T-1992 11:03:41.64.
La version sp�cifique de BNF donn�e ici est :
ANSI et SQL2-seulement.
<SQL terminal character> ::=
<SQL language character>
| <SQL embedded language character>
<SQL language character> ::=
<simple Latin letter>
| <digit>
| <SQL special character>
<simple Latin letter> ::=
<simple Latin upper case letter>
| <simple Latin lower case letter>
<simple Latin upper case letter> ::=
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O
| P | Q | R | S | T | U | V | W | X | Y | Z
<simple Latin lower case letter> ::=
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o
| p | q | r | s | t | u | v | w | x | y | z
<digit> ::=
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<SQL special character> ::=
<space>
| <double quote>
| <percent>
| <ampersand>
| <quote>
| <left paren>
| <right paren>
| <asterisk>
| <plus sign>
| <comma>
| <minus sign>
| <period>
| <solidus>
| <colon>
| <semicolon>
| <less than operator>
| <equals operator>
| <greater than operator>
| <question mark>
| <underscore>
| <vertical bar>
<space> ::= !! <EMPHASIS>(space character in character set in use)
<double quote> ::= "
<percent> ::= %
<ampersand> ::= &
<quote> ::= '
<left paren> ::= (
<right paren> ::= )
<asterisk> ::= *
<plus sign> ::= +
<comma> ::= ,
<minus sign> ::= -
<period> ::= .
<solidus> ::= /
<colon> ::= :
<semicolon> ::= ;
<less than operator> ::= <
<equals operator> ::= =
<greater than operator> ::= >
<question mark> ::= ?
<underscore> ::= _
<vertical bar> ::= |
<SQL embedded language character> ::=
<left bracket>
| <right bracket>
<left bracket> ::= [
<right bracket> ::= ]
<token> ::=
<nondelimiter token>
| <delimiter token>
<nondelimiter token> ::=
<regular identifier>
| <key word>
| <unsigned numeric literal>
| <national character string literal>
| <bit string literal>
| <hex string literal>
<regular identifier> ::= <identifier body>
<identifier body> ::=
<identifier start> [ ( <underscore> | <identifier part> )... ]
<identifier start> ::= <EMPHASIS>(!! See the Syntax Rules)
<identifier part> ::=
<identifier start>
| <digit>
<key word> ::=
<reserved word>
| <non-reserved word>
<reserved word> ::=
ABSOLUTE | ACTION | ADD | ALL
| ALLOCATE | ALTER | AND
| ANY | ARE
| AS | ASC
| ASSERTION | AT
| AUTHORIZATION | AVG
| BEGIN | BETWEEN | BIT | BIT_LENGTH
| BOTH | BY
| CASCADE | CASCADED | CASE | CAST
| CATALOG
| CHAR | CHARACTER | CHAR_LENGTH
| CHARACTER_LENGTH | CHECK | CLOSE | COALESCE
| COLLATE | COLLATION
| COLUMN | COMMIT
| CONNECT
| CONNECTION | CONSTRAINT
| CONSTRAINTS | CONTINUE
| CONVERT | CORRESPONDING | COUNT | CREATE | CROSS
| CURRENT
| CURRENT_DATE | CURRENT_TIME
| CURRENT_TIMESTAMP | CURRENT_USER | CURSOR
| DATE | DAY | DEALLOCATE | DEC
| DECIMAL | DECLARE | DEFAULT | DEFERRABLE
| DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR
| DIAGNOSTICS
| DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
| ELSE | END | END-EXEC | ESCAPE
| EXCEPT | EXCEPTION
| EXEC | EXECUTE | EXISTS
| EXTERNAL | EXTRACT
| FALSE | FETCH | FIRST | FLOAT | FOR
| FOREIGN | FOUND | FROM | FULL
| GET | GLOBAL | GO | GOTO
| GRANT | GROUP
| HAVING | HOUR
| IDENTITY | IMMEDIATE | IN | INDICATOR
| INITIALLY | INNER | INPUT
| INSENSITIVE | INSERT | INT | INTEGER | INTERSECT
| INTERVAL | INTO | IS
| ISOLATION
| JOIN
| KEY
| LANGUAGE | LAST | LEADING | LEFT
| LEVEL | LIKE | LOCAL | LOWER
| MATCH | MAX | MIN | MINUTE | MODULE
| MONTH
| NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO
| NOT | NULL
| NULLIF | NUMERIC
| OCTET_LENGTH | OF
| ON | ONLY | OPEN | OPTION | OR
| ORDER | OUTER
| OUTPUT | OVERLAPS
| PAD | PARTIAL | POSITION | PRECISION | PREPARE
| PRESERVE | PRIMARY
| PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
| READ | REAL | REFERENCES | RELATIVE | RESTRICT
| REVOKE | RIGHT
| ROLLBACK | ROWS
| SCHEMA | SCROLL | SECOND | SECTION
| SELECT
| SESSION | SESSION_USER | SET
| SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE
| SQLERROR | SQLSTATE
| SUBSTRING | SUM | SYSTEM_USER
| TABLE | TEMPORARY
| THEN | TIME | TIMESTAMP
| TIMEZONE_HOUR | TIMEZONE_MINUTE
| TO | TRAILING | TRANSACTION
| TRANSLATE | TRANSLATION | TRIM | TRUE
| UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE
| USER | USING
| VALUE | VALUES | VARCHAR | VARYING | VIEW
| WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
| YEAR
| ZONE
<non-reserved word> ::=
ADA
| C | CATALOG_NAME
| CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
| CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG
| COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION
| COMMITTED
| CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME
| CONSTRAINT_SCHEMA | CURSOR_NAME
| DATA | DATETIME_INTERVAL_CODE
| DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION
| FORTRAN
| LENGTH
| MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS
| NAME | NULLABLE | NUMBER
| PASCAL | PLI
| REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE
| ROW_COUNT
| SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN
| TABLE_NAME | TYPE
| UNCOMMITTED | UNNAMED
<unsigned numeric literal> ::=
<exact numeric literal>
| <approximate numeric literal>
<exact numeric literal> ::=
<unsigned integer> [ <period> [ <unsigned integer> ] ]
| <period> <unsigned integer>
<unsigned integer> ::= <digit>...
<approximate numeric literal> ::= <mantissa> E <exponent>
<mantissa> ::= <exact numeric literal>
<exponent> ::= <signed integer>
<signed integer> ::= [ <sign> ] <unsigned integer>
<sign> ::= <plus sign> | <minus sign>
<national character string literal> ::=
N <quote> [ <character representation>... ] <quote>
[ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]
<character representation> ::=
<nonquote character>
| <quote symbol>
<nonquote character> ::= !! <EMPHASIS>(See the Syntax Rules.)
<quote symbol> ::= <quote><quote>
<separator> ::= ( <comment> | <space> | <newline> )...
<comment> ::=
<comment introducer> [ <comment character>... ] <newline>
<comment introducer> ::= <minus sign><minus sign>[<minus sign>...]
<comment character> ::=
<nonquote character>
| <quote>
<newline> ::= !! <EMPHASIS>(implementation-defined end-of-line indicator)
<bit string literal> ::=
B <quote> [ <bit>... ] <quote>
[ ( <separator>... <quote> [ <bit>... ] <quote> )... ]
<bit> ::= 0 | 1
<hex string literal> ::=
X <quote> [ <hexit>... ] <quote>
[ ( <separator>... <quote> [ <hexit>... ] <quote> )... ]
<hexit> ::= <digit> | A | B | C | D | E | F | a | b | c | d | e | f
<delimiter token> ::=
<character string literal>
| <date string>
| <time string>
| <timestamp string>
| <interval string>
| <delimited identifier>
| <SQL special character>
| <not equals operator>
| <greater than or equals operator>
| <less than or equals operator>
| <concatenation operator>
| <double period>
| <left bracket>
| <right bracket>
<character string literal> ::=
[ <introducer><character set specification> ]
<quote> [ <character representation>... ] <quote>
[ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]
<introducer> ::= <underscore>
<character set specification> ::=
<standard character repertoire name>
| <implementation-defined character repertoire name>
| <user-defined character repertoire name>
| <standard universal character form-of-use name>
| <implementation-defined universal character form-of-use name>
<standard character repertoire name> ::= <character set name>
<character set name> ::= [ <schema name> <period> ]
<SQL language identifier>
<schema name> ::=
[ <catalog name> <period> ] <unqualified schema name>
<catalog name> ::= <identifier>
<identifier> ::=
[ <introducer><character set specification> ] <actual identifier>
<actual identifier> ::=
<regular identifier>
| <delimited identifier>
<delimited identifier> ::=
<double quote> <delimited identifier body> <double quote>
<delimited identifier body> ::= <delimited identifier part>...
<delimited identifier part> ::=
<nondoublequote character>
| <doublequote symbol>
<nondoublequote character> ::= <EMPHASIS>(!! See the Syntax Rules)
<doublequote symbol> ::= <double quote><double quote>
<unqualified schema name> ::= <identifier>
<SQL language identifier> ::=
<SQL language identifier start>
[ ( <underscore> | <SQL language identifier part> )... ]
<SQL language identifier start> ::= <simple Latin letter>
<SQL language identifier part> ::=
<simple Latin letter>
| <digit>
<implementation-defined character repertoire name> ::=
<character set name>
<user-defined character repertoire name> ::= <character set name>
<standard universal character form-of-use name> ::=
<character set name>
<implementation-defined universal character form-of-use name> ::=
<character set name>
<date string> ::=
<quote> <date value> <quote>
<date value> ::=
<years value> <minus sign> <months value>
<minus sign> <days value>
<years value> ::= <datetime value>
<datetime value> ::= <unsigned integer>
<months value> ::= <datetime value>
<days value> ::= <datetime value>
<time string> ::=
<quote> <time value> [ <time zone interval> ] <quote>
<time value> ::=
<hours value> <colon> <minutes value> <colon> <seconds value>
<hours value> ::= <datetime value>
<minutes value> ::= <datetime value>
<seconds value> ::=
<seconds integer value> [ <period> [ <seconds fraction> ] ]
<seconds integer value> ::= <unsigned integer>
<seconds fraction> ::= <unsigned integer>
<time zone interval> ::=
<sign> <hours value> <colon> <minutes value>
<timestamp string> ::=
<quote> <date value> <space> <time value>
[ <time zone interval> ] <quote>
<interval string> ::=
<quote> ( <year-month literal> | <day-time literal> ) <quote>
<year-month literal> ::=
<years value>
| [ <years value> <minus sign> ] <months value>
<day-time literal> ::=
<day-time interval>
| <time interval>
<day-time interval> ::=
<days value>
[ <space> <hours value> [ <colon> <minutes value>
[ <colon> <seconds value> ] ] ]
<time interval> ::=
<hours value> [ <colon> <minutes value> [ <colon> <seconds value> ] ]
| <minutes value> [ <colon> <seconds value> ]
| <seconds value>
<not equals operator> ::= <>
<greater than or equals operator> ::= >=
<less than or equals operator> ::= <=
<concatenation operator> ::= ||
<double period> ::= ..
<module> ::=
<module name clause>
<language clause>
<module authorization clause>
[ <temporary table declaration>... ]
<module contents>...
<module name clause> ::=
MODULE [ <module name> ]
[ <module character set specification> ]
<module name> ::= <identifier>
<module character set specification> ::=
NAMES ARE <character set specification>
<language clause> ::=
LANGUAGE <language name>
<language name> ::=
ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI
<module authorization clause> ::=
SCHEMA <schema name>
| AUTHORIZATION <module authorization identifier>
| SCHEMA <schema name>
AUTHORIZATION <module authorization identifier>
<module authorization identifier> ::=
<authorization identifier>
<authorization identifier> ::= <identifier>
<temporary table declaration> ::=
DECLARE LOCAL TEMPORARY TABLE
<qualified local table name>
<table element list>
[ ON COMMIT ( PRESERVE | DELETE ) ROWS ]
<qualified local table name> ::=
MODULE <period> <local table name>
<local table name> ::= <qualified identifier>
<qualified identifier> ::= <identifier>
<table element list> ::=
<left paren> <table element> [ ( <comma> <table element> )... ] <right paren>
<table element> ::=
<column definition>
| <table constraint definition>
<column definition> ::=
<column name> ( <data type> | <domain name> )
[ <default clause> ]
[ <column constraint definition>... ]
[ <collate clause> ]
<column name> ::= <identifier>
<data type> ::=
<character string type>
[ CHARACTER SET <character set specification> ]
| <national character string type>
| <bit string type>
| <numeric type>
| <datetime type>
| <interval type>
<character string type> ::=
CHARACTER [ <left paren> <length> <right paren> ]
| CHAR [ <left paren> <length> <right paren> ]
| CHARACTER VARYING <left paren> <length> <right paren>
| CHAR VARYING <left paren> <length> <right paren>
| VARCHAR <left paren> <length> <right paren>
<length> ::= <unsigned integer>
<national character string type> ::=
NATIONAL CHARACTER [ <left paren> <length> <right paren> ]
| NATIONAL CHAR [ <left paren> <length> <right paren> ]
| NCHAR [ <left paren> <length> <right paren> ]
| NATIONAL CHARACTER VARYING <left paren> <length> <right paren>
| NATIONAL CHAR VARYING <left paren> <length> <right paren>
| NCHAR VARYING <left paren> <length> <right paren>
<bit string type> ::=
BIT [ <left paren> <length> <right paren> ]
| BIT VARYING <left paren> <length> <right paren>
<numeric type> ::=
<exact numeric type>
| <approximate numeric type>
<exact numeric type> ::=
NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| INTEGER
| INT
| SMALLINT
<precision> ::= <unsigned integer>
<scale> ::= <unsigned integer>
<approximate numeric type> ::=
FLOAT [ <left paren> <precision> <right paren> ]
| REAL
| DOUBLE PRECISION
<datetime type> ::=
DATE
| TIME [ <left paren> <time precision> <right paren> ]
[ WITH TIME ZONE ]
| TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
[ WITH TIME ZONE ]
<time precision> ::= <time fractional seconds precision>
<time fractional seconds precision> ::= <unsigned integer>
<timestamp precision> ::= <time fractional seconds precision>
<interval type> ::= INTERVAL <interval qualifier>
<interval qualifier> ::=
<start field> TO <end field>
| <single datetime field>
<start field> ::=
<non-second datetime field>
[ <left paren> <interval leading field precision> <right paren> ]
<non-second datetime field> ::= YEAR | MONTH | DAY | HOUR
| MINUTE
<interval leading field precision> ::= <unsigned integer>
<end field> ::=
<non-second datetime field>
| SECOND [ <left paren> <interval fractional seconds precision> <right paren> ]
<interval fractional seconds precision> ::= <unsigned integer>
<single datetime field> ::=
<non-second datetime field>
[ <left paren> <interval leading field precision> <right paren> ]
| SECOND [ <left paren> <interval leading field precision>
[ <comma> <interval fractional seconds precision> ] <right paren> ]
<domain name> ::= <qualified name>
<qualified name> ::=
[ <schema name> <period> ] <qualified identifier>
<default clause> ::=
DEFAULT <default option>
<default option> ::=
<literal>
| <datetime value function>
| USER
| CURRENT_USER
| SESSION_USER
| SYSTEM_USER
| NULL
<literal> ::=
<signed numeric literal>
| <general literal>
<signed numeric literal> ::=
[ <sign> ] <unsigned numeric literal>
<general literal> ::=
<character string literal>
| <national character string literal>
| <bit string literal>
| <hex string literal>
| <datetime literal>
| <interval literal>
<datetime literal> ::=
<date literal>
| <time literal>
| <timestamp literal>
<date literal> ::=
DATE <date string>
<time literal> ::=
TIME <time string>
<timestamp literal> ::=
TIMESTAMP <timestamp string>
<interval literal> ::=
INTERVAL [ <sign> ] <interval string> <interval qualifier>
<datetime value function> ::=
<current date value function>
| <current time value function>
| <current timestamp value function>
<current date value function> ::= CURRENT_DATE
<current time value function> ::=
CURRENT_TIME [ <left paren> <time precision> <right paren> ]
<current timestamp value function> ::=
CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
<column constraint definition> ::=
[ <constraint name definition> ]
<column constraint>
[ <constraint attributes> ]
<constraint name definition> ::= CONSTRAINT <constraint name>
<constraint name> ::= <qualified name>
<column constraint> ::=
NOT NULL
| <unique specification>
| <references specification>
| <check constraint definition>
<unique specification> ::=
UNIQUE | PRIMARY KEY
<references specification> ::=
REFERENCES <referenced table and columns>
[ MATCH <match type> ]
[ <referential triggered action> ]
<referenced table and columns> ::=
<table name> [ <left paren> <reference column list> <right paren> ]
<table name> ::=
<qualified name>
| <qualified local table name>
<reference column list> ::= <column name list>
<column name list> ::=
<column name> [ ( <comma> <column name> )... ]
<match type> ::=
FULL
| PARTIAL
<referential triggered action> ::=
<update rule> [ <delete rule> ]
| <delete rule> [ <update rule> ]
<update rule> ::= ON UPDATE <referential action>
<referential action> ::=
CASCADE
| SET NULL
| SET DEFAULT
| NO ACTION
<delete rule> ::= ON DELETE <referential action>
<check constraint definition> ::=
CHECK
<left paren> <search condition> <right paren>
<search condition> ::=
<boolean term>
| <search condition> OR <boolean term>
<boolean term> ::=
<boolean factor>
| <boolean term> AND <boolean factor>
<boolean factor> ::=
[ NOT ] <boolean test>
<boolean test> ::=
<boolean primary> [ IS [ NOT ]
<truth value> ]
<boolean primary> ::=
<predicate>
| <left paren> <search condition> <right paren>
<predicate> ::=
<comparison predicate>
| <between predicate>
| <in predicate>
| <like predicate>
| <null predicate>
| <quantified comparison predicate>
| <exists predicate>
| <unique predicate>
| <match predicate>
| <overlaps predicate>
<comparison predicate> ::=
<row value constructor> <comp op>
<row value constructor>
<row value constructor> ::=
<row value constructor element>
| <left paren> <row value constructor list> <right paren>
| <row subquery>
<row value constructor element> ::=
<value expression>
| <null specification>
| <default specification>
<value expression> ::=
<numeric value expression>
| <string value expression>
| <datetime value expression>
| <interval value expression>
<numeric value expression> ::=
<term>
| <numeric value expression> <plus sign> <term>
| <numeric value expression> <minus sign> <term>
<term> ::=
<factor>
| <term> <asterisk> <factor>
| <term> <solidus> <factor>
<factor> ::=
[ <sign> ] <numeric primary>
<numeric primary> ::=
<value expression primary>
| <numeric value function>
<value expression primary> ::=
<unsigned value specification>
| <column reference>
| <set function specification>
| <scalar subquery>
| <case expression>
| <left paren> <value expression> <right paren>
| <cast specification>
<unsigned value specification> ::=
<unsigned literal>
| <general value specification>
<unsigned literal> ::=
<unsigned numeric literal>
| <general literal>
<general value specification> ::=
<parameter specification>
| <dynamic parameter specification>
| <variable specification>
| USER
| CURRENT_USER
| SESSION_USER
| SYSTEM_USER
| VALUE
<parameter specification> ::=
<parameter name> [ <indicator parameter> ]
<parameter name> ::= <colon> <identifier>
<indicator parameter> ::=
[ INDICATOR ] <parameter name>
<dynamic parameter specification> ::= <question mark>
<variable specification> ::=
<embedded variable name> [ <indicator variable> ]
<embedded variable name> ::=
<colon><host identifier>
<host identifier> ::=
<Ada host identifier>
| <C host identifier>
| <COBOL host identifier>
| <Fortran host identifier>
| <MUMPS host identifier>
| <Pascal host identifier>
| <PL/I host identifier>
<Ada host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<C host identifier> ::=
!! <EMPHASIS>(See the Syntax Rules.)
<COBOL host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<Fortran host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<MUMPS host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<Pascal host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<PL/I host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)
<indicator variable> ::=
[ INDICATOR ] <embedded variable name>
<column reference> ::= [ <qualifier> <period> ] <column name>
<qualifier> ::=
<table name>
| <correlation name>
<correlation name> ::= <identifier>
<set function specification> ::=
COUNT <left paren> <asterisk> <right paren>
| <general set function>
<general set function> ::=
<set function type>
<left paren> [ <set quantifier> ] <value expression> <right paren>
<set function type> ::=
AVG | MAX | MIN | SUM | COUNT
<set quantifier> ::= DISTINCT | ALL
<scalar subquery> ::= <subquery>
<subquery> ::= <left paren> <query expression> <right paren>
<query expression> ::=
<non-join query expression>
| <joined table>
<non-join query expression> ::=
<non-join query term>
| <query expression> UNION [ ALL ]
[ <corresponding spec> ] <query term>
| <query expression> EXCEPT [ ALL ]
[ <corresponding spec> ] <query term>
<non-join query term> ::=
<non-join query primary>
| <query term> INTERSECT [ ALL ]
[ <corresponding spec> ] <query primary>
<non-join query primary> ::=
<simple table>
| <left paren> <non-join query expression> <right paren>
<simple table> ::=
<query specification>
| <table value constructor>
| <explicit table>
<query specification> ::=
SELECT [ <set quantifier> ] <select list> <table expression>
<select list> ::=
<asterisk>
| <select sublist> [ ( <comma> <select sublist> )... ]
<select sublist> ::=
<derived column>
| <qualifier> <period> <asterisk>
<derived column> ::= <value expression> [ <as clause> ]
<as clause> ::= [ AS ] <column name>
<table expression> ::=
<from clause>
[ <where clause> ]
[ <group by clause> ]
[ <having clause> ]
<from clause> ::= FROM <table reference>
[ ( <comma> <table reference> )... ]
<table reference> ::=
<table name> [ [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ] ]
| <derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
| <joined table>
<derived column list> ::= <column name list>
<derived table> ::= <table subquery>
<table subquery> ::= <subquery>
<joined table> ::=
<cross join>
| <qualified join>
| <left paren> <joined table> <right paren>
<cross join> ::=
<table reference> CROSS JOIN <table reference>
<qualified join> ::=
<table reference> [ NATURAL ] [ <join type> ] JOIN
<table reference> [ <join specification> ]
<join type> ::=
INNER
| <outer join type> [ OUTER ]
| UNION
<outer join type> ::=
LEFT
| RIGHT
| FULL
<join specification> ::=
<join condition>
| <named columns join>
<join condition> ::= ON <search condition>
<named columns join> ::=
USING <left paren> <join column list> <right paren>
<join column list> ::= <column name list>
<where clause> ::= WHERE <search condition>
<group by clause> ::=
GROUP BY <grouping column reference list>
<grouping column reference list> ::=
<grouping column reference>
[ ( <comma> <grouping column reference> )... ]
<grouping column reference> ::=
<column reference> [ <collate clause> ]
<collate clause> ::= COLLATE <collation name>
<collation name> ::= <qualified name>
<having clause> ::= HAVING <search condition>
<table value constructor> ::=
VALUES <table value constructor list>
<table value constructor list> ::=
<row value constructor> [ ( <comma> <row value constructor> )... ]
<explicit table> ::= TABLE <table name>
<query term> ::=
<non-join query term>
| <joined table>
<corresponding spec> ::=
CORRESPONDING [ BY <left paren> <corresponding column list> <right paren> ]
<corresponding column list> ::= <column name list>
<query primary> ::=
<non-join query primary>
| <joined table>
<case expression> ::=
<case abbreviation>
| <case specification>
<case abbreviation> ::=
NULLIF <left paren> <value expression> <comma>
<value expression> <right paren>
| COALESCE <left paren> <value expression>
( <comma> <value expression> )... <right paren>
<case specification> ::=
<simple case>
| <searched case>
<simple case> ::=
CASE <case operand>
<simple when clause>...
[ <else clause> ]
END
<case operand> ::= <value expression>
<simple when clause> ::= WHEN <when operand> THEN <result>
<when operand> ::= <value expression>
<result> ::= <result expression> | NULL
<result expression> ::= <value expression>
<else clause> ::= ELSE <result>
<searched case> ::=
CASE
<searched when clause>...
[ <else clause> ]
END
<searched when clause> ::= WHEN <search condition> THEN <result>
<cast specification> ::=
CAST <left paren> <cast operand> AS
<cast target> <right paren>
<cast operand> ::=
<value expression>
| NULL
<cast target> ::=
<domain name>
| <data type>
<numeric value function> ::=
<position expression>
| <extract expression>
| <length expression>
<position expression> ::=
POSITION <left paren> <character value expression>
IN <character value expression> <right paren>
<character value expression> ::=
<concatenation>
| <character factor>
<concatenation> ::=
<character value expression> <concatenation operator>
<character factor>
<character factor> ::=
<character primary> [ <collate clause> ]
<character primary> ::=
<value expression primary>
| <string value function>
<string value function> ::=
<character value function>
| <bit value function>
<character value function> ::=
<character substring function>
| <fold>
| <form-of-use conversion>
| <character translation>
| <trim function>
<character substring function> ::=
SUBSTRING <left paren> <character value expression> FROM <start position>
[ FOR <string length> ] <right paren>
<start position> ::= <numeric value expression>
<string length> ::= <numeric value expression>
<fold> ::= ( UPPER | LOWER )
<left paren> <character value expression> <right paren>
<form-of-use conversion> ::=
CONVERT <left paren> <character value expression>
USING <form-of-use conversion name> <right paren>
<form-of-use conversion name> ::= <qualified name>
<character translation> ::=
TRANSLATE <left paren> <character value expression>
USING <translation name> <right paren>
<translation name> ::= <qualified name>
<trim function> ::=
TRIM <left paren> <trim operands> <right paren>
<trim operands> ::=
[ [ <trim specification> ] [ <trim character> ] FROM ] <trim source>
<trim specification> ::=
LEADING
| TRAILING
| BOTH
<trim character> ::= <character value expression>
<trim source> ::= <character value expression>
<bit value function> ::=
<bit substring function>
<bit substring function> ::=
SUBSTRING <left paren> <bit value expression> FROM <start position>
[ FOR <string length> ] <right paren>
<bit value expression> ::=
<bit concatenation>
| <bit factor>
<bit concatenation> ::=
<bit value expression> <concatenation operator> <bit factor>
<bit factor> ::= <bit primary>
<bit primary> ::=
<value expression primary>
| <string value function>
<extract expression> ::=
EXTRACT <left paren> <extract field>
FROM <extract source> <right paren>
<extract field> ::=
<datetime field>
| <time zone field>
<datetime field> ::=
<non-second datetime field>
| SECOND
<time zone field> ::=
TIMEZONE_HOUR
| TIMEZONE_MINUTE
<extract source> ::=
<datetime value expression>
| <interval value expression>
<datetime value expression> ::=
<datetime term>
| <interval value expression> <plus sign> <datetime term>
| <datetime value expression> <plus sign> <interval term>
| <datetime value expression> <minus sign> <interval term>
<interval term> ::=
<interval factor>
| <interval term 2> <asterisk> <factor>
| <interval term 2> <solidus> <factor>
| <term> <asterisk> <interval factor>
<interval factor> ::=
[ <sign> ] <interval primary>
<interval primary> ::=
<value expression primary> [ <interval qualifier> ]
<interval term 2> ::= <interval term>
<interval value expression> ::=
<interval term>
| <interval value expression 1> <plus sign> <interval term 1>
| <interval value expression 1> <minus sign> <interval term 1>
| <left paren> <datetime value expression> <minus sign>
<datetime term> <right paren> <interval qualifier>
<interval value expression 1> ::= <interval value expression>
<interval term 1> ::= <interval term>
<datetime term> ::=
<datetime factor>
<datetime factor> ::=
<datetime primary> [ <time zone> ]
<datetime primary> ::=
<value expression primary>
| <datetime value function>
<time zone> ::=
AT <time zone specifier>
<time zone specifier> ::=
LOCAL
| TIME ZONE <interval value expression>
<length expression> ::=
<char length expression>
| <octet length expression>
| <bit length expression>
<char length expression> ::=
( CHAR_LENGTH | CHARACTER_LENGTH )
<left paren> <string value expression> <right paren>
<string value expression> ::=
<character value expression>
| <bit value expression>
<octet length expression> ::=
OCTET_LENGTH <left paren> <string value expression> <right paren>
<bit length expression> ::=
BIT_LENGTH <left paren> <string value expression> <right paren>
<null specification> ::=
NULL
<default specification> ::=
DEFAULT
<row value constructor list> ::=
<row value constructor element>
[ ( <comma> <row value constructor element> )... ]
<row subquery> ::= <subquery>
<comp op> ::=
<equals operator>
| <not equals operator>
| <less than operator>
| <greater than operator>
| <less than or equals operator>
| <greater than or equals operator>
<between predicate> ::=
<row value constructor> [ NOT ] BETWEEN
<row value constructor> AND <row value constructor>
<in predicate> ::=
<row value constructor>
[ NOT ] IN <in predicate value>
<in predicate value> ::=
<table subquery>
| <left paren> <in value list> <right paren>
<in value list> ::=
<value expression> ( <comma> <value expression> )...
<like predicate> ::=
<match value> [ NOT ] LIKE <pattern>
[ ESCAPE <escape character> ]
<match value> ::= <character value expression>
<pattern> ::= <character value expression>
<escape character> ::= <character value expression>
<null predicate> ::= <row value constructor>
IS [ NOT ] NULL
<quantified comparison predicate> ::=
<row value constructor> <comp op> <quantifier> <table subquery>
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
<exists predicate> ::= EXISTS <table subquery>
<unique predicate> ::= UNIQUE <table subquery>
<match predicate> ::=
<row value constructor> MATCH [ UNIQUE ]
[ PARTIAL | FULL ] <table subquery>
<overlaps predicate> ::=
<row value constructor 1> OVERLAPS <row value constructor 2>
<row value constructor 1> ::= <row value constructor>
<row value constructor 2> ::= <row value constructor>
<truth value> ::=
TRUE
| FALSE
| UNKNOWN
<constraint attributes> ::=
<constraint check time> [ [ NOT ] DEFERRABLE ]
| [ NOT ] DEFERRABLE [ <constraint check time> ]
<constraint check time> ::=
INITIALLY DEFERRED
| INITIALLY IMMEDIATE
<table constraint definition> ::=
[ <constraint name definition> ]
<table constraint> [ <constraint attributes> ]
<table constraint> ::=
<unique constraint definition>
| <referential constraint definition>
| <check constraint definition>
<unique constraint definition> ::=
<unique specification> even in SQL3)
<unique specification>
<left paren> <unique column list> <right paren>
<unique column list> ::= <column name list>
<referential constraint definition> ::=
FOREIGN KEY
<left paren> <referencing columns> <right paren>
<references specification>
<referencing columns> ::=
<reference column list>
<module contents> ::=
<declare cursor>
| <dynamic declare cursor>
| <procedure>
<declare cursor> ::=
DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR <cursor specification>
<cursor name> ::= <identifier>
<cursor specification> ::=
<query expression> [ <order by clause> ]
[ <updatability clause> ]
<order by clause> ::=
ORDER BY <sort specification list>
<sort specification list> ::=
<sort specification> [ ( <comma> <sort specification> )... ]
<sort specification> ::=
<sort key> [ <collate clause> ] [ <ordering specification> ]
<sort key> ::=
<column name>
| <unsigned integer>
<ordering specification> ::= ASC | DESC
<updatability clause> ::=
FOR
( READ ONLY |
UPDATE [ OF <column name list> ] )
<dynamic declare cursor> ::=
DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR <statement name>
<statement name> ::= <identifier>
<procedure> ::=
PROCEDURE <procedure name>
<parameter declaration list> <semicolon>
<SQL procedure statement> <semicolon>
<procedure name> ::= <identifier>
<parameter declaration list> ::=
<left paren> <parameter declaration>
[ ( <comma> <parameter declaration> )... ] <right paren>
| <parameter declaration>...
<parameter declaration> ::=
<parameter name> <data type>
| <status parameter>
<status parameter> ::=
SQLCODE | SQLSTATE
<SQL procedure statement> ::=
<SQL schema statement>
| <SQL data statement>
| <SQL transaction statement>
| <SQL connection statement>
| <SQL session statement>
| <SQL dynamic statement>
| <SQL diagnostics statement>
<SQL schema statement> ::=
<SQL schema definition statement>
| <SQL schema manipulation statement>
<SQL schema definition statement> ::=
<schema definition>
| <table definition>
| <view definition>
| <grant statement>
| <domain definition>
| <character set definition>
| <collation definition>
| <translation definition>
| <assertion definition>
<schema definition> ::=
CREATE SCHEMA <schema name clause>
[ <schema character set specification> ]
[ <schema element>... ]
<schema name clause> ::=
<schema name>
| AUTHORIZATION <schema authorization identifier>
| <schema name> AUTHORIZATION
<schema authorization identifier>
<schema authorization identifier> ::=
<authorization identifier>
<schema character set specification> ::=
DEFAULT CHARACTER
SET <character set specification>
<schema element> ::=
<domain definition>
| <table definition>
| <view definition>
| <grant statement>
| <assertion definition>
| <character set definition>
| <collation definition>
| <translation definition>
<domain definition> ::=
CREATE DOMAIN <domain name>
[ AS ] <data type>
[ <default clause> ]
[ <domain constraint>... ]
[ <collate clause> ]
<domain constraint> ::=
[ <constraint name definition> ]
<check constraint definition> [ <constraint attributes> ]
<table definition> ::=
CREATE [ ( GLOBAL | LOCAL ) TEMPORARY ] TABLE
<table name>
<table element list>
[ ON COMMIT ( DELETE | PRESERVE ) ROWS ]
<view definition> ::=
CREATE VIEW <table name> [ <left paren> <view column list>
<right paren> ]
AS <query expression>
[ WITH [ <levels clause> ] CHECK OPTION ]
<view column list> ::= <column name list>
<levels clause> ::=
CASCADED | LOCAL
<grant statement> ::=
GRANT <privileges> ON <object name>
TO <grantee> [ ( <comma> <grantee> )... ]
[ WITH GRANT OPTION ]
<privileges> ::=
ALL PRIVILEGES
| <action list>
<action list> ::= <action> [ ( <comma> <action> )... ]
<action> ::=
SELECT
| DELETE
| INSERT [ <left paren> <privilege column list> <right paren> ]
| UPDATE [ <left paren> <privilege column list> <right paren> ]
| REFERENCES [ <left paren> <privilege column list> <right paren> ]
| USAGE
<privilege column list> ::= <column name list>
<object name> ::=
[ TABLE ] <table name>
| DOMAIN <domain name>
| COLLATION <collation name>
| CHARACTER SET <character set name>
| TRANSLATION <translation name>
<grantee> ::=
PUBLIC
| <authorization identifier>
<assertion definition> ::=
CREATE ASSERTION <constraint name> <assertion check>
[ <constraint attributes> ]
<assertion check> ::=
CHECK
<left paren> <search condition> <right paren>
<character set definition> ::=
CREATE CHARACTER SET <character set name>
[ AS ]
<character set source>
[ <collate clause> | <limited collation definition> ]
<character set source> ::=
GET <existing character set name>
<existing character set name> ::=
<standard character repertoire name>
| <implementation-defined character repertoire name>
| <schema character set name>
<schema character set name> ::= <character set name>
<limited collation definition> ::=
COLLATION FROM <collation source>
<collation source> ::=
<collating sequence definition>
| <translation collation>
<collating sequence definition> ::=
<external collation>
| <schema collation name>
| DESC <left paren> <collation name> <right paren>
| DEFAULT
<external collation> ::=
EXTERNAL <left paren> <quote> <external collation name> <quote> <right paren>
<external collation name> ::=
<standard collation name>
| <implementation-defined collation name>
<standard collation name> ::= <collation name>
<implementation-defined collation name> ::= <collation name>
<schema collation name> ::= <collation name>
<translation collation> ::=
TRANSLATION <translation name>
[ THEN COLLATION <collation name> ]
<collation definition> ::=
CREATE COLLATION <collation name> FOR
<character set specification>
FROM <collation source>
[ <pad attribute> ]
<pad attribute> ::=
NO PAD
| PAD SPACE
<translation definition> ::=
CREATE TRANSLATION <translation name>
FOR <source character set specification>
TO <target character set specification>
FROM <translation source>
<source character set specification> ::= <character set specification>
<target character set specification> ::= <character set specification>
<translation source> ::=
<translation specification>
<translation specification> ::=
<external translation>
| IDENTITY
| <schema translation name>
<external translation> ::=
EXTERNAL <left paren> <quote> <external translation name> <quote> <right paren>
<external translation name> ::=
<standard translation name>
| <implementation-defined translation name>
<standard translation name> ::= <translation name>
<implementation-defined translation name> ::= <translation name>
<schema translation name> ::= <translation name>
<SQL schema manipulation statement> ::=
<drop schema statement>
| <alter table statement>
| <drop table statement>
| <drop view statement>
| <revoke statement>
| <alter domain statement>
| <drop domain statement>
| <drop character set statement>
| <drop collation statement>
| <drop translation statement>
| <drop assertion statement>
<drop schema statement> ::=
DROP SCHEMA <schema name> <drop behavior>
<drop behavior> ::= CASCADE | RESTRICT
<alter table statement> ::=
ALTER TABLE <table name> <alter table action>
<alter table action> ::=
<add column definition>
| <alter column definition>
| <drop column definition>
| <add table constraint definition>
| <drop table constraint definition>
<add column definition> ::=
ADD [ COLUMN ] <column definition>
<alter column definition> ::=
ALTER [ COLUMN ] <column name> <alter column action>
<alter column action> ::=
<set column default clause>
| <drop column default clause>
<set column default clause> ::=
SET <default clause>
<drop column default clause> ::=
DROP DEFAULT
<drop column definition> ::=
DROP [ COLUMN ] <column name> <drop behavior>
<add table constraint definition> ::=
ADD <table constraint definition>
<drop table constraint definition> ::=
DROP CONSTRAINT <constraint name> <drop behavior>
<drop table statement> ::=
DROP TABLE <table name> <drop behavior>
<drop view statement> ::=
DROP VIEW <table name> <drop behavior>
<revoke statement> ::=
REVOKE [ GRANT OPTION FOR ]
<privileges>
ON <object name>
FROM <grantee> [ ( <comma> <grantee> )... ] <drop behavior>
<alter domain statement> ::=
ALTER DOMAIN <domain name> <alter domain action>
<alter domain action> ::=
<set domain default clause>
| <drop domain default clause>
| <add domain constraint definition>
| <drop domain constraint definition>
<set domain default clause> ::= SET <default clause>
<drop domain default clause> ::= DROP DEFAULT
<add domain constraint definition> ::=
ADD <domain constraint>
<drop domain constraint definition> ::=
DROP CONSTRAINT <constraint name>
<drop domain statement> ::=
DROP DOMAIN <domain name> <drop behavior>
<drop character set statement> ::=
DROP CHARACTER SET <character set name>
<drop collation statement> ::=
DROP COLLATION <collation name>
<drop translation statement> ::=
DROP TRANSLATION <translation name>
<drop assertion statement> ::=
DROP ASSERTION <constraint name>
<SQL data statement> ::=
<open statement>
| <fetch statement>
| <close statement>
| <select statement: single row>
| <SQL data change statement>
<open statement> ::=
OPEN <cursor name>
<fetch statement> ::=
FETCH [ [ <fetch orientation> ] FROM ]
<cursor name> INTO <fetch target list>
<fetch orientation> ::=
NEXT
| PRIOR
| FIRST
| LAST
| ( ABSOLUTE | RELATIVE ) <simple value specification>
<simple value specification> ::=
<parameter name>
| <embedded variable name>
| <literal>
<fetch target list> ::=
<target specification> [ ( <comma> <target specification> )... ]
<target specification> ::=
<parameter specification>
| <variable specification>
<close statement> ::=
CLOSE <cursor name>
<select statement: single row> ::=
SELECT [ <set quantifier> ] <select list>
INTO <select target list>
<table expression>
<select target list> ::=
<target specification> [ ( <comma> <target specification> )... ]
<SQL data change statement> ::=
<delete statement: positioned>
| <delete statement: searched>
| <insert statement>
| <update statement: positioned>
| <update statement: searched>
<delete statement: positioned> ::=
DELETE FROM <table name>
WHERE CURRENT OF <cursor name>
<delete statement: searched> ::=
DELETE FROM <table name>
[ WHERE <search condition> ]
<insert statement> ::=
INSERT INTO <table name>
<insert columns and source>
<insert columns and source> ::=
[ <left paren> <insert column list> <right paren> ]
<query expression>
| DEFAULT VALUES
<insert column list> ::= <column name list>
<update statement: positioned> ::=
UPDATE <table name>
SET <set clause list>
WHERE CURRENT OF <cursor name>
<set clause list> ::=
<set clause> [ ( <comma> <set clause> )... ]
<set clause> ::=
<object column> <equals operator> <update source>
<object column> ::= <column name>
<update source> ::=
<value expression>
| <null specification>
| DEFAULT
<update statement: searched> ::=
UPDATE <table name>
SET <set clause list>
[ WHERE <search condition> ]
<SQL transaction statement> ::=
<set transaction statement>
| <set constraints mode statement>
| <commit statement>
| <rollback statement>
<set transaction statement> ::=
SET TRANSACTION <transaction mode>
[ ( <comma> <transaction mode> )... ]
<transaction mode> ::=
<isolation level>
| <transaction access mode>
| <diagnostics size>
<isolation level> ::=
ISOLATION LEVEL <level of isolation>
<level of isolation> ::=
READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE
<transaction access mode> ::=
READ ONLY
| READ WRITE
<diagnostics size> ::=
DIAGNOSTICS SIZE <number of conditions>
<number of conditions> ::= <simple value specification>
<set constraints mode statement> ::=
SET CONSTRAINTS <constraint name list>
( DEFERRED | IMMEDIATE )
<constraint name list> ::=
ALL
| <constraint name> [ ( <comma> <constraint name> )... ]
<commit statement> ::=
COMMIT [ WORK ]
<rollback statement> ::=
ROLLBACK [ WORK ]
<SQL connection statement> ::=
<connect statement>
| <set connection statement>
| <disconnect statement>
<connect statement> ::=
CONNECT TO <connection target>
<connection target> ::=
<SQL-server name>
[ AS <connection name> ]
correspondence with Tony Gordon)
[ USER <user name> ]
| DEFAULT
<SQL-server name> ::= <simple value specification>
<connection name> ::= <simple value specification>
<user name> ::= <simple value specification>
<set connection statement> ::=
SET CONNECTION <connection object>
<connection object> ::=
DEFAULT
| <connection name>
<disconnect statement> ::=
DISCONNECT <disconnect object>
<disconnect object> ::=
<connection object>
| ALL
| CURRENT
<SQL session statement> ::=
<set catalog statement>
| <set schema statement>
| <set names statement>
| <set session authorization identifier statement>
| <set local time zone statement>
<set catalog statement> ::=
SET CATALOG <value specification>
<value specification> ::=
<literal>
| <general value specification>
<set schema statement> ::=
SET SCHEMA <value specification>
<set names statement> ::=
SET NAMES <value specification>
<set session authorization identifier statement> ::=
SET SESSION AUTHORIZATION
<value specification>
<set local time zone statement> ::=
SET TIME ZONE
<set time zone value>
<set time zone value> ::=
<interval value expression>
| LOCAL
<SQL dynamic statement> ::=
<system descriptor statement>
| <prepare statement>
| <deallocate prepared statement>
| <describe statement>
| <execute statement>
| <execute immediate statement>
| <SQL dynamic data statement>
<system descriptor statement> ::=
<allocate descriptor statement>
| <deallocate descriptor statement>
| <set descriptor statement>
| <get descriptor statement>
<allocate descriptor statement> ::=
ALLOCATE DESCRIPTOR <descriptor name>
[ WITH MAX <occurrences> ]
<descriptor name> ::=
[ <scope option> ] <simple value specification>
<scope option> ::=
GLOBAL
| LOCAL
<occurrences> ::= <simple value specification>
<deallocate descriptor statement> ::=
DEALLOCATE DESCRIPTOR <descriptor name>
<set descriptor statement> ::=
SET DESCRIPTOR <descriptor name>
<set descriptor information>
<set descriptor information> ::=
<set count>
| VALUE <item number>
<set item information> [ ( <comma> <set item information> )... ]
<set count> ::=
COUNT <equals operator> <simple value specification 1>
<simple value specification 1> ::= <simple value specification>
<item number> ::= <simple value specification>
<set item information> ::=
<descriptor item name> <equals operator> <simple value specification 2>
<descriptor item name> ::=
TYPE
| LENGTH
| OCTET_LENGTH
| RETURNED_LENGTH
| RETURNED_OCTET_LENGTH
| PRECISION
| SCALE
| DATETIME_INTERVAL_CODE
| DATETIME_INTERVAL_PRECISION
| NULLABLE
| INDICATOR
| DATA
| NAME
| UNNAMED
| COLLATION_CATALOG
| COLLATION_SCHEMA
| COLLATION_NAME
| CHARACTER_SET_CATALOG
| CHARACTER_SET_SCHEMA
| CHARACTER_SET_NAME
<simple value specification 2> ::= <simple value specification>
<item number> ::= <simple value specification>
<get descriptor statement> ::=
GET DESCRIPTOR <descriptor name> <get descriptor information>
<get descriptor information> ::=
<get count>
| VALUE <item number>
<get item information> [ ( <comma> <get item information> )... ]
<get count> ::=
<simple target specification 1> <equals operator>
COUNT
<simple target specification 1> ::= <simple target specification>
<simple target specification> ::=
<parameter name>
| <embedded variable name>
<get item information> ::=
<simple target specification 2> <equals operator> <descriptor item name>>
<simple target specification 2> ::= <simple target specification>
<prepare statement> ::=
PREPARE <SQL statement name> FROM <SQL statement variable>
<SQL statement name> ::=
<statement name>
| <extended statement name>
<extended statement name> ::=
[ <scope option> ] <simple value specification>
<SQL statement variable> ::= <simple value specification>
<deallocate prepared statement> ::=
DEALLOCATE PREPARE <SQL statement name>
<describe statement> ::=
<describe input statement>
| <describe output statement>
<describe input statement> ::=
DESCRIBE INPUT <SQL statement name> <using descriptor>
<using descriptor> ::=
( USING | INTO ) SQL DESCRIPTOR <descriptor name>
<describe output statement> ::=
DESCRIBE [ OUTPUT ] <SQL statement name> <using descriptor>
<execute statement> ::=
EXECUTE <SQL statement name>
[ <result using clause> ]
[ <parameter using clause> ]
<result using clause> ::= <using clause>
<using clause> ::=
<using arguments>
| <using descriptor>
<using arguments> ::=
( USING | INTO ) <argument> [ ( <comma> <argument> )... ]
<argument> ::= <target specification>
<parameter using clause> ::= <using clause>
<execute immediate statement> ::=
EXECUTE IMMEDIATE <SQL statement variable>
<SQL dynamic data statement> ::=
<allocate cursor statement>
| <dynamic open statement>
| <dynamic fetch statement>
| <dynamic close statement>
| <dynamic delete statement: positioned>
| <dynamic update statement: positioned>
<allocate cursor statement> ::=
ALLOCATE <extended cursor name> [ INSENSITIVE ]
[ SCROLL ] CURSOR
FOR <extended statement name>
<extended cursor name> ::=
[ <scope option> ] <simple value specification>
<dynamic open statement> ::=
OPEN <dynamic cursor name> [ <using clause> ]
<dynamic cursor name> ::=
<cursor name>
| <extended cursor name>
<dynamic fetch statement> ::=
FETCH [ [ <fetch orientation> ] FROM ] <dynamic cursor name>
<using clause>
<dynamic close statement> ::=
CLOSE <dynamic cursor name>
<dynamic delete statement: positioned> ::=
DELETE FROM <table name>
WHERE CURRENT OF
<dynamic cursor name>
<dynamic update statement: positioned> ::=
UPDATE <table name>
SET <set clause>
[ ( <comma> <set clause> )... ]
WHERE CURRENT OF
<dynamic cursor name>
<SQL diagnostics statement> ::=
<get diagnostics statement>
<get diagnostics statement> ::=
GET DIAGNOSTICS <sql diagnostics information>
<sql diagnostics information> ::=
<statement information>
| <condition information>
<statement information> ::=
<statement information item> [ ( <comma> <statement information item> )... ]
<statement information item> ::=
<simple target specification> <equals operator> <statement information item name>
<statement information item name> ::=
NUMBER
| MORE
| COMMAND_FUNCTION
| DYNAMIC_FUNCTION
| ROW_COUNT
<condition information> ::=
EXCEPTION <condition number>
<condition information item> [ ( <comma> <condition information item> )... ]
<condition number> ::= <simple value specification>
<condition information item> ::=
<simple target specification> <equals operator> <condition information item name>
<condition information item name> ::=
CONDITION_NUMBER
| RETURNED_SQLSTATE
| CLASS_ORIGIN
| SUBCLASS_ORIGIN
| SERVER_NAME
| CONNECTION_NAME
| CONSTRAINT_CATALOG
| CONSTRAINT_SCHEMA
| CONSTRAINT_NAME
| CATALOG_NAME
| SCHEMA_NAME
| TABLE_NAME
| COLUMN_NAME
| CURSOR_NAME
| MESSAGE_TEXT
| MESSAGE_LENGTH
| MESSAGE_OCTET_LENGTH
<embedded SQL host program> ::=
<embedded SQL Ada program>
| <embedded SQL C program>
| <embedded SQL COBOL program>
| <embedded SQL Fortran program>
| <embedded SQL MUMPS program>
| <embedded SQL Pascal program>
| <embedded SQL PL/I program>
<embedded SQL Ada program> ::= !! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL C program> ::=
!! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL COBOL program> ::= !! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL Fortran program> ::=
!! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL MUMPS program> ::= !! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL Pascal program> ::=
!! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL PL/I program> ::= !! <EMPHASIS>(See the Syntax Rules.)
<embedded SQL declare section> ::=
<embedded SQL begin declare>
[ <embedded character set declaration> ]
[ <host variable definition>... ]
<embedded SQL end declare>
| <embedded SQL MUMPS declare>
<embedded SQL begin declare> ::=
<SQL prefix> BEGIN DECLARE SECTION
[ <SQL terminator> ]
<SQL prefix> ::=
EXEC SQL
| <ampersand>SQL<left paren>
<SQL terminator> ::=
END-EXEC
| <semicolon>
| <right paren>
<embedded character set declaration> ::=
SQL NAMES ARE <character set specification>
<host variable definition> ::=
<Ada variable definition>
| <C variable definition>
| <COBOL variable definition>
| <Fortran variable definition>
| <MUMPS variable definition>
| <Pascal variable definition>
| <PL/I variable definition>
<Ada variable definition> ::=
<Ada host identifier> [ ( <comma> <Ada host identifier> )... ] :
<Ada type specification> [ <Ada initial value> ]
<Ada type specification> ::=
<Ada qualified type specification>
| <Ada unqualified type specification>
<Ada qualified type specification> ::=
SQL_STANDARD.CHAR [ CHARACTER SET
[ IS ] <character set specification> ]
<left paren> 1 <double period> <length> <right paren>
| SQL_STANDARD.BIT
<left paren> 1 <double period> <length> <right paren>
| SQL_STANDARD.SMALLINT
| SQL_STANDARD.INT
| SQL_STANDARD.REAL
| SQL_STANDARD.DOUBLE_PRECISION
| SQL_STANDARD.SQLCODE_TYPE
| SQL_STANDARD.SQLSTATE_TYPE
| SQL_STANDARD.INDICATOR_TYPE
<Ada unqualified type specification> ::=
CHAR
<left paren> 1 <double period> <length> <right paren>
| BIT
<left paren> 1 <double period> <length> <right paren>
| SMALLINT
| INT
| REAL
| DOUBLE_PRECISION
| SQLCODE_TYPE
| SQLSTATE_TYPE
| INDICATOR_TYPE
<Ada initial value> ::=
<Ada assignment operator> <character representation>...
<Ada assignment operator> ::= <colon><equals operator>
<C variable definition> ::=
[ <C storage class> ]
[ <C class modifier> ]
<C variable specification>
<semicolon>
<C storage class> ::=
auto
| extern
| static
<C class modifier> ::= const | volatile
<C variable specification> ::=
<C numeric variable>
| <C character variable>
| <C derived variable>
<C numeric variable> ::=
( long | short | float | double )
<C host identifier> [ <C initial value> ]
[ ( <comma> <C host identifier> [ <C initial value> ] )... ]
<C initial value> ::=
<equals operator> <character representation>...
<C character variable> ::=
char [ CHARACTER SET
[ IS ] <character set specification> ]
<C host identifier>
<C array specification> [ <C initial value> ]
[ ( <comma> <C host identifier>
<C array specification>
[ <C initial value> ] )... ]
<C array specification> ::=
<left bracket> <length> <right bracket>
<C derived variable> ::=
<C VARCHAR variable>
| <C bit variable>
<C VARCHAR variable> ::=
VARCHAR [ CHARACTER SET [ IS ]
<character set specification> ]
<C host identifier>
<C array specification> [ <C initial value> ]
[ ( <comma> <C host identifier>
<C array specification>
[ <C initial value> ] )... ]
<C bit variable> ::=
BIT <C host identifier>
<C array specification> [ <C initial value> ]
[ ( <comma> <C host identifier>
<C array specification>
[ <C initial value> ] )... ]
<COBOL variable definition> ::=
(01|77) <COBOL host identifier> <COBOL type specification>
[ <character representation>... ] <period>
<COBOL type specification> ::=
<COBOL character type>
| <COBOL bit type>
| <COBOL numeric type>
| <COBOL integer type>
<COBOL character type> ::=
[ CHARACTER SET [ IS ]
<character set specification> ]
( PIC | PICTURE ) [ IS ] ( X [ <left paren> <length> <right paren> ] )...
<COBOL bit type> ::=
( PIC | PICTURE ) [ IS ]
( B [ <left paren> <length> <right paren> ] )...
<COBOL numeric type> ::=
( PIC | PICTURE ) [ IS ]
S <COBOL nines specification>
[ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE
<COBOL nines specification> ::=
<COBOL nines> [ V [ <COBOL nines> ] ]
| V <COBOL nines>
<COBOL nines> ::= ( 9 [ <left paren> <length> <right paren> ] )...
<COBOL integer type> ::=
<COBOL computational integer>
| <COBOL binary integer>
<COBOL computational integer> ::=
( PIC | PICTURE ) [ IS ] S<COBOL nines>
[ USAGE [ IS ] ] ( COMP | COMPUTATIONAL )
<COBOL binary integer> ::=
( PIC | PICTURE ) [ IS ] S<COBOL nines>
[ USAGE [ IS ] ] BINARY
<Fortran variable definition> ::=
<Fortran type specification>
<Fortran host identifier>
[ ( <comma> <Fortran host identifier> )... ]
<Fortran type specification> ::=
CHARACTER [ <asterisk> <length> ]
[ CHARACTER SET [ IS ]
<character set specification> ]
| BIT [ <asterisk> <length> ]
| INTEGER
| REAL
| DOUBLE PRECISION
<MUMPS variable definition> ::=
( <MUMPS numeric variable> | <MUMPS character variable> )
<semicolon>
<MUMPS numeric variable> ::=
<MUMPS type specification>
<MUMPS host identifier> [ ( <comma> <MUMPS host identifier> )... ]
<MUMPS type specification> ::=
INT
| DEC
[ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
| REAL
<MUMPS character variable> ::=
VARCHAR <MUMPS host identifier> <MUMPS length specification>
[ ( <comma> <MUMPS host identifier> <MUMPS length specification> )... ]
<MUMPS length specification> ::=
<left paren> <length> <right paren>
<Pascal variable definition> ::=
<Pascal host identifier> [ ( <comma> <Pascal host identifier> )... ] <colon>
<Pascal type specification> <semicolon>
<Pascal type specification> ::=
PACKED ARRAY
<left bracket> 1 <double period> <length> <right bracket>
OF CHAR
[ CHARACTER SET [ IS ]
<character set specification> ]
| PACKED ARRAY
<left bracket> 1 <double period> <length> <right bracket>
OF BIT
| INTEGER
| REAL
| CHAR [ CHARACTER SET
[ IS ] <character set specification> ]
| BIT
<PL/I variable definition> ::=
(DCL | DECLARE)
( <PL/I host identifier>
| <left paren> <PL/I host identifier>
[ ( <comma> <PL/I host identifier> )... ] <right paren> )
<PL/I type specification>
[ <character representation>... ] <semicolon>
<PL/I type specification> ::=
( CHAR | CHARACTER ) [ VARYING ]
<left paren><length><right paren>
[ CHARACTER SET
[ IS ] <character set specification> ]
| BIT [ VARYING ] <left paren><length><right paren>
| <PL/I type fixed decimal> <left paren> <precision>
[ <comma> <scale> ] <right paren>
| <PL/I type fixed binary> [ <left paren> <precision> <right paren> ]
| <PL/I type float binary> <left paren> <precision> <right paren>
<PL/I type fixed decimal> ::=
( DEC | DECIMAL ) FIXED
| FIXED ( DEC | DECIMAL )
<PL/I type fixed binary> ::=
( BIN | BINARY ) FIXED
| FIXED ( BIN | BINARY )
<PL/I type float binary> ::=
( BIN | BINARY ) FLOAT
| FLOAT ( BIN | BINARY )
<embedded SQL end declare> ::=
<SQL prefix> END DECLARE SECTION
[ <SQL terminator> ]
<embedded SQL MUMPS declare> ::=
<SQL prefix>
BEGIN DECLARE SECTION
[ <embedded character set declaration> ]
[ <host variable definition>... ]
END DECLARE SECTION
<SQL terminator>
<embedded SQL statement> ::=
<SQL prefix>
<statement or declaration>
[ <SQL terminator> ]
<statement or declaration> ::=
<declare cursor>
| <dynamic declare cursor>
| <temporary table declaration>
| <embedded exception declaration>
| <SQL procedure statement>
<embedded exception declaration> ::=
WHENEVER <condition> <condition action>
<condition> ::=
SQLERROR | NOT FOUND
<condition action> ::=
CONTINUE | <go to>
<go to> ::=
( GOTO | GO TO ) <goto target>
<goto target> ::=
<host label identifier>
| <unsigned integer>
| <host PL/I label variable>
<host label identifier> ::= !!<EMPHASIS>(See the Syntax Rules.)
<host PL/I label variable> ::= !!<EMPHASIS>(See the Syntax Rules.)
<preparable statement> ::=
<preparable SQL data statement>
| <preparable SQL schema statement>
| <preparable SQL transaction statement>
| <preparable SQL session statement>
| <preparable implementation-defined statement>
<preparable SQL data statement> ::=
<delete statement: searched>
| <dynamic single row select statement>
| <insert statement>
| <dynamic select statement>
| <update statement: searched>
| <preparable dynamic delete statement: positioned>
| <preparable dynamic update statement: positioned>
<dynamic single row select statement> ::= <query specification>
<dynamic select statement> ::= <cursor specification>
<preparable dynamic delete statement: positioned> ::=
DELETE [ FROM <table name> ]
WHERE CURRENT OF <cursor name>
<preparable dynamic update statement: positioned> ::=
UPDATE [ <table name> ]
SET <set clause list>
WHERE CURRENT OF <cursor name>
<preparable SQL schema statement> ::=
<SQL schema statement>
<preparable SQL transaction statement> ::=
<SQL transaction statement>
<preparable SQL session statement> ::=
<SQL session statement>
<preparable implementation-defined statement> ::=
!! <EMPHASIS>(See the Syntax Rules.)
<direct SQL statement> ::=
<directly executable statement> <semicolon>
<directly executable statement> ::=
<direct SQL data statement>
| <SQL schema statement>
| <SQL transaction statement>
| <SQL connection statement>
| <SQL session statement>
| <direct implementation-defined statement>
<direct SQL data statement> ::=
<delete statement: searched>
| <direct select statement: multiple rows>
| <insert statement>
| <update statement: searched>
| <temporary table declaration>
<direct select statement: multiple rows> ::=
<query expression> [ <order by clause> ]
<direct implementation-defined statement> ::=
!!<EMPHASIS>(See the Syntax Rules)
<SQL object identifier> ::=
<SQL provenance> <SQL variant>
<SQL provenance> ::= <arc1> <arc2> <arc3>
<arc1> ::= iso | 1 | iso <left paren> 1 <right paren>
<arc2> ::= standard | 0 | standard <left paren> 0 <right paren>
<arc3> ::= 9075
<SQL variant> ::= <SQL edition> <SQL conformance>
<SQL edition> ::= <1987> | <1989> | <1992>
<1987> ::= 0 | edition1987 <left paren> 0 <right paren>
<1989> ::= <1989 base> <1989 package>
<1989 base> ::= 1 | edition1989 <left paren> 1 <right paren>
<1989 package> ::= <integrity no> | <integrity yes>
<integrity no> ::= 0 | IntegrityNo <left paren> 0 <right paren>
<integrity yes> ::= 1 | IntegrityYes <left paren> 1 <right paren>
<1992> ::= 2 | edition1992 <left paren> 2 <right paren>
<SQL conformance> ::= <low> | <intermediate> | <high>
<low> ::= 0 | Low <left paren> 0 <right paren>
<intermediate> ::= 1 | Intermediate <left paren> 1 <right paren>
<high> ::= 2 | High <left paren> 2 <right paren>
AAGG.. AAppppeennddiiccee BB -- TTuuttoorriieell SSQQLL �� ll''uussaaggee ddeess dd��bbuuttaannttss
AAGG..11.. DDiiddaaccttiicciieell ppoouurr PPoossttggrreeSSQQLL
Le didacticiel SQL est inclus dans la distribution de PostgreSQL. Les
scripts du didacticiel SQL se trouvent dans le r�pertoire src/tutorial
AAGG..22.. PPooiinntteeuurrss UURRLL IInntteerrnneett
On peut trouver le didacticiel SQL pour d�butants �
� <
http://w3.one.net/~jhoffman/sqltut.htm>
Pour les commentaires ou suggestions, envoyer un courrier
�lectronique �
�
[email protected]
John Hoffman sugg�re de visiter les sites suivants :
� R�f�rence SQL <
http://www.contrib.andrew.cmu.edu/~shadow/sql.html>
� Demandez SQL Pro <
http://www.inquiry.com/techtips/thesqlpro/>
� Sites utiles pour les BD relationnelles SQL Pro
<
http://www.inquiry.com/techtips/thesqlpro/usefulsites.html>
� Le site du programmeur
<
http://infoweb.magi.com/~steve/develop.html>
� Sites <
http://info.itu.ch/special/wwwfiles> Go here and see file
comp_db.html
� Ingr�dients DB <
http://www.compapp.dcu.ie/databases/f017.html>
� Web Authoring <
http://www.stars.com/Tutorial/CGI/>
� Dictionnaire informatique <
http://wfn-shop.princeton.edu/cgi-
bin/foldoc>
� DBMS Lab/Links <
http://www-ccs.cs.umass.edu/db.html>
� FAQ SQL
<
http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ> Et l�,
consultez le fichier SQL_TOC.html
� Bases de donn�es SQL
<
http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html>
� Page de conception de la base de donn�e RIT
<
http://www.it.rit.edu/~wjs/IT/199602/icsa720/icsa720postings.html>
� Site de renvoi sur les Bases de Donn�es
<
http://www.pcslink.com/~ej/dbweb.html>
� Didacticiels de programmation sur le Web
<
http://www.eng.uc.edu/~jtilley/tutorial.html>
� Ressources de d�veloppement
<
http://www.ndev.com/ndc2/support/resources.htp>
� Liste de requ�te <
http://ashok.pair.com/sql.htm>
� Diverses IMAGES SQL
<
http://jazz.external.hp.com/training/sqltables/main.html>
� Liste de ressources Internet
<
http://www.eit.com/web/netservices.html>
AAHH.. AAppppeennddiixx CC -- IInnssttrruuccttiioonnss ppoouurr uunnee iinnssttaallllaattiioonn rraappiiddee ddee LLiinnuuxx
Si vous envisagez d'utiliser PostgreSQL sous Linux, et avez besoin
d'aide dans l'installation de Linux, consultez les pointeurs donn�s
dans cette annexe. Ils couvrent les sujets suivants :
� Fonctionnalit�s saillantes de Linux - Pourquoi Linux constitue un
meilleur serveur de donn�es que Windows 95/NT
� Instructions pour une installation rapide de Linux en 10 minutes
� Liste des analogies Microsoft-Linux
� �tapes rapides pour recompiler le noyau Linux
� Site principal � <
http://members.spree.com/technology/aldev/>
� Site miroir <
http://aldev.8m.com>
� Site miroir <
http://aldev.webjump.com>
� Site miroir <
http://homepages.infoseek.com/~aldev1/index.html>
� Site miroir <
http://www3.bcity.com/aldev/>