
    Linux  Database-SQL-RDBMS HOWTO  (PostgreSQL pƮwt)
                                       
@̡JAl Dev (Alavoor Vasudevan) [1]alavoor@yahoo.com
Ķ̡JFd [2]a9504480@graduate.hku.hk

   Gss@~@GA41.0 
     _________________________________________________________________
   
   O@Цpb Unix tΧֱaإߤ@ SQL Ʈw
   (Database Engine) Ϋeݤu㪺uΫnvC]QװڼзǪ
   ANSI/ISO SQL yαQbpu}񦡶}ov ("open
   development" environment) }o SQL ƮwuICOpb
   Unix tΤإ PostgreSQL oӬJiΧ@ε{ƮwA
   (Application Database Server)ASiΧ@UƮwA (Web
   Database Server) s@NpƮwCPostgreSQL չ᪺
    ISO / ANSI SQL зǡC]Ʈw{ApeݹϹ
   Bε{t}o (Rapid Application Development) uBODBCBJDBC
   Xʵ{BCBC++BJavaBPerl {yMWƮwuCo̴Ѫ
   ƾAΩҦ Unix / Windows NT xΨLƮwAƮwBSQL y
   PostgreSQL sD`ΡCo]@ SQL ɤޡA SQL ykA
   Ǫ̫D`ΡCg窺ήa|ıooO@ΪѦҸơCǥͨӻ
   AoBѪƷ|Ḻo PostgresSQL pƮw{XAqӾ
   ߦpsg@Ӫp SQL ƮwC
     _________________________________________________________________
   
1. ި

     * 1.1 ql (Quantum) qXXqlzǫܦ
       
2. zw߾AΩqnI

3. PostgreSQL OH

     * 3.1 ե֮
       
4. ӸnHPostgreSQL ٬O MySQLH

     * 4.1 PostgreSQL  OracleBIBM DB2BMS SQL server MLII
     * 4.2 MySQL MLЪ RDBMSes
       
5. Bo ?

6. PostgreSQL ֳtw˫ 

     * 6.1 w˩M
     * 6.2 PostgreSQL RPMs
     * 6.3 Maximum RPM
     * 6.4 Ҥl RPM 
     * 6.5  PyGreSQLXPython  
     * 6.6  PerlXPerl  
     * 6.7  libpq, libpq++  
     * 6.8  Java  
     * 6.9  ecpg  
     * 6.10  SQL ҤlXۭqƫAM 
     * 6.11  Tcl/TK 
     * 6.12  ODBC 
     * 6.13  MPSQL Motif-worksheet 
     * 6.14 T{
     * 6.15 氣
       
7. ֳt}l

     * 7.1 ƮwإߡBBW
     * 7.2 إߩMΤ
     * 7.3 إߩMs
     * 7.4 إߡBsM
     * 7.5 إߡBsM椤
     * 7.6 ܥثeƮw
     * 7.7 ƥP٭Ʈw 
     * 7.8 ƮwOw
     * 7.9 uWDU
     * 7.10 إ߿Eo (Triggers) Mx{ (Stored Procedures)
     * 7.11 PostgreSQL 
       
8. PostgreSQL 䴩WL 200 Gig WŸƮw

     * 8.1 BzX32 줸 64 줸
     * 8.2 hBz
     * 8.3 ƻs (Replication) A
       
9. ̤۫H PostgreSQLHRegression ծM󬰥Τإ߫H

10. ƮwOw 

     * 10.1 Τ{
     * 10.2 ̾ڥDs
     * 10.3 {Ҥk 
     * 10.4 s
     * 10.5 g SSH Ow TCP/IP s
     * 10.6 Kerberos {
       
11. PostgreSQL e GUI u]ϹϥΪ̬ɭ^

12. PostgreSQL Xʵ{

     * 12.1 PostgreSQL  ODBC Xʵ{
     * 12.2 PostgreSQL  UDBC Xʵ{
     * 12.3 PostgreSQL  JDBC Xʵ{
     * 12.4 PostgreSQL  Java
       
13. PostgreSQL  Perl Ʈw (Database Interface, DBI) 

     * 13.1 PostgreSQL  PERL 
     * 13.2 Perl Ʈw DBI
     * 13.3  Perl 
       
14. PostgreSQL ޲zu

     * 14.1 PGACCESS - ޲z PostgreSQL  GUI u
     * 14.2 PostgreSQL ϫdߤu GtkSQL 
     * 14.3  PostgreSQL ʦdߤu]WISQL  MPSQL^
     * 14.4 W PSQL  PostgreSQL ʦdߤu]ISQL^
     * 14.5 MPMGRXPostgreSQL Ʈw޲zu
     * 14.6 PgAdminBPhpPgAdmin u
     * 14.7 PgBash - SQL shell u
     * 14.8 PostgreSQL  Webmin u
       
15. PostgreSQL ΪBz

16. uϥΤ@ܾ (monitor) ӳ]whx PostgreSQL q

17. PostgreSQL Uε{A

     * 17.1 PERL Uε{A 
     * 17.2 PHP Uε{A 
     * 17.3 Lutris Corp "Enhydra Enterprise" (Java) 
     * 17.4 Zope]Python^ 
     * 17.5 OpenACS]Tcl y^
     * 17.6 C++, CORBA Uε{A 
     * 17.7 Uε{Aؿ 
       
18. PostgreSQL ε{Mu

     * 18.1 PostgreSQL  4GL UƮw{XAppGEN }ot
     * 18.2 PostgreSQL pXDBENGINE
     * 18.3 PostgreSQL  Apache AҲաXNeoSoft NeoWebScript
     * 18.4 HTML Aݩ HEITML M@ PostgreSQL  4GL y
     * 18.5 PostgreSQL  America On-line AOL UA
     * 18.6 PostgreSQL  / plܨtε{u
     * 18.7  dbase  dbf ഫ PostgreSQL
     * 18.8 Ln MDB Ʈwഫ PostgreSQL
     * 18.9 Zeos Ȥ
     * 18.10 Java  Report Writer
       
19. Ʈw]puXY (Entity Relation Tool) u

20. PostgreSQL pƮw]p/uXEARP

     * 20.1 EARP OH
     * 20.2 I
     * 20.3 pu@H
     * 20.4 Bo EARPH
       
21. PHP Hypertext PreProcessorXPostgreSQL A html OJROZy

     * 21.1 DnS
     * 21.2 PHPX²v
     * 21.3 Aگ PHP H
     * 21.4 @²檺Ҥl
     * 21.5 CGI V (Redirection)
     * 21.6 bO PHP
     * 21.7 PHPGem M
       
22. PostgreSQL  Python 

     * 22.1 po PyGresH
     * 22.2 ƩM䴩
     * 22.3  Python 
       
23. PostgreSQL MUh (gateway) X WDB-P95

     * 23.1  wdb-p95
     * 23.2 PostgreSQL ABpgperl M httpd O_ݦbP@qH
       
24. "C", "C++", ESQL/C yM PostgreSQL vB⤸ (Bitwise Operators)

     * 24.1 "C" 
     * 24.2 "C++" 
     * 24.3 ESQL/C
     * 24.4 PostgreSQL v줸B⤸
       
25. PostgreSQL 尲WX (Kanji Code)

26.  PostgreSQL  95 /  NT

     * 26.1 NT @
     * 26.2 w Cygwin M
     * 26.3 ]w Bash 
     * 26.4 w Andy Piper u
     * 26.5 w Ludovic Lange  Cygwin32 IPC M
     * 26.6 w PostgreSQL 
       
27. qH׾

     * 27.1 PostgreSQL qlf
     * 27.2 ^qH׾
     * 27.3 qH׾¦sw
     * 27.4 ZqH׾
       
28. MѦҮ

     * 28.1 ΤީM
     * 28.2 uW
     * 28.3 ΪѦҮ
     * 28.4 ANSI/ISO SQL WXSQL 1992, SQL 1998
     * 28.5 ANSI/ISO SQL 1992 yk
     * 28.6 ANSI/ISO SQL 1998 yk
     * 28.7 Ǫ SQL ɤ
     * 28.8 SQL92 ɺA (Temporal Extension)
     * 28.9 ĹsXo ISO/ANSI SQL  
     * 28.10 Ĥ@XISO/ANSI SQL ep
     * 28.11 ĤGXISO/ANSI SQL  (ISO/ANSI SQL Foundation)
     * 28.12 ĤTXISO/ANSI SQL IsŤ (Call Level Interface)
     * 28.13 ĥ|X ISO/ANSI SQL [xsҲ (Persistent Stored
       Modules)
     * 28.14 ĤX ISO/ANSI SQL/X (Bindings)
     * 28.15 ĤXISO/ANSI SQL XA M ]SQL/XA^
     * 28.16 ĤCXɺA ISO/ANSI SQL 
     * 28.17 ĤKXISO/ANSI SQL hC (SQL/MM)
       
29. PostgreSQL ޳N䴩

     * 29.1 ӷ~䴩
       
30. g٩Mӷ~譱

31. LƮwW

32. UjM

33. 

34. FAQX PostgreSQL D

35. 󪺨L榡

36. vMv

Appendix

37. ҡXANSI/ISO SQL 1992 yk 

38. AXǪ SQL ɤ 

     * 38.1 PostgreSQL ɤ
     * 38.2 p URL 
     * 38.3 uW SQL 
       
39. XLinux ֳtw˫ 

40. BXw Midgard 

     * 40.1  Midgard PHP A
     * 40.2 Ow OpenSSL 
     _________________________________________________________________
   
1. ި

   󪺥DnؼЬOѤ@ֱa]w PostgreSQL  URL ԺɦWA
   MҶ}lXtΡAp PostgreSQLBLinux nBC
   
   @ɤWC@qݭn@ӸƮwӦsơCAϥιqDnzѬOΨ
   xsB ŪMBzơAӥB̭nܧ֧u@AqӸ`٧AɶCPɡA
   tΥ²B BֳtBiaBg٩MΡCƮwO̭ntΡA ]
   xsF@ɤWC@qơC@WC@u~ݭn@ӸƮw
   tΡC SܡAqTBTBȦBŤqu~঳ĹB@C ̬y
   檺Ʈwtγqڼзǲ´ (International Standard Organisation,
   ISO) WM ANSI SQL]^зǡC~ɱ`Ϊ̷sWO ISO/ANSI SQL
   1992CU@ӼзǬO SQL 1998/99ASW SQL-3Aob}oCy檺Ʈw
   Ap OracleASybase M Informix OھڳoǼзǡAιչIoǼзǡC
   
   Sp ANSI/ISO SQL зǡAΤn@إߤ@MAΩҦƮwtΪ
   γn|D`xC ȤƱ@Lϥ ISO SQLAODBCAJDBC oi@
   nӦb@WҦƮwtΡC
   
   @WۥѦӤ䴩 ISO SQLBANSI SQL/98BSQL/92 M ANSI SQL/89 p
   w (RDBMS) A̬y檺O PostgreSQLCPostgreSQL Os@Np
   ƮwA HŦX ISO/ANSI  SQL зǬؼСCKO RDBMS 
   APostgreSQL Oߤ@Pɤ䴩ƮwM SQL C|iDApw
   oƮwB pإߺWƮwBγnƮwBeݹϹM{C
   ڱjPĳAҼgƮwn󥲶ʤʲŦX ISO/ANSI SQLBODBCBJDBC 
   зǡAoˡAϱoA{ಾӨ줣PƮwAp PostgreSQLBOracleB
   SybaseBInformix C
   
   Aiq PostgreSQL o̰ΫD`״I\A]̱qu}lX
   }oҦv (Open Source Code development model)C}lXҦ|A
   㪺{XA }oL{bpWѦjqHiC ثeͶ
   Ӥjn}ou@|b@ɳq檺ҿסuTtv
   (Information Super-Highway) WiCӼƦ~Ap|zʦaA o
   ˷|P~ɧhϥ PostgreSQLC
   
   ǧέpǡBƾǩMǪzΩnAڭ̥u|b@Ӧp
   PostgreSQL A{X}񵹸gTtsôb@_jqYt
   UA ~o̰nCҿ׶sqC }lXҦ]i
   Фu@AD`g١A `ٵoGɶΦXŦuưaMay귽{Ng
   wߡCunHgnF@ӳnA AKݭnAӤ@CA|_Qɶ
   O󦭤wnu@C @o@oAAnnnQΡA]H@ѥuKp
   u@Ibڭ̽Jܤ@@ɡA ڭ̨oһݳn󪺤kN|ܡCCHĤ@
   ܳN|Op PostgreSQLBLinux }lXtΡC
   
   ʶRi檺n󤣥NA֦nC{XOöQ겣AGɨõL
   C ʶRni|vCAuݭnRnwA bwWӱqp
   WonOȱoCIOu@qjqwC w~Ou]ʪǡA
   nuO@eCqw󪺽{רϱoyu 6 Ӱa{X]pΥͲ
   qMw󪺯OCoO@إiޡAL{D`A KA]t
   ΥͲ 0.18]Ʀܤp 0.18^L̬ުejC b@pWK
   ƥHʸUpbMqb@_CApplied MaterialBAMDB^SBCyrix
   BߡBIBM ΨLuqOjqH-~ (man-years) bޡAp]pB
   Lql (Micro-electronics) ίǹql (Nano-electronics) sWCL̥N
   ʸU@ (10^-6)AǦ̥NQ@ (10^-9)C{Lql޳N
   A0.35 L̪ϥξT@A0.25 L̪ϥλɡC b[NӡAλɪ
   0.10 Ļ޳NAƭPǹql޳NN|ΩqC ]ɾɹqOjA
   TN|Q^OCbk (photolithography) L{A W~
   uBX-guιql|QΩk (etch) Sxjp (feature size) p
   0.15 L̪qCGQ~AN|Qlq (molecular computers)
   Mͪ (bio chips) NC̪tױN|񪿤ּƤQIlO@
   lC ӷLplզAb@WҨҦC lq|Ϊ誺l
   ӷW֪ql}C} (ON) N 1B (OFF) N 0C@WҦq
   {OھڤGơ]Ʀr 1 M 0^B@C
   
   UCX޳NiBΥӵoiͶաC
   
                                 ӴOii
                                 ******************
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| /~                | 1997    | 1999    | 2001    | 2003    | 2012   | 2
020    | 2030    |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| Sxjp]L̡^         | 0.25    | 0.18    | 0.15    | 0.13    | 0.05   |<
0.00001|  l   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| jp]̡^         | 200     | 300     | 300     | 300     | 450    |
/l|  ql   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| ̧CBq             | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| <
 0.001 |  p   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| ̤j\v             | 70      | 90      | 110     | 130     | 175    | 6
00     |  p   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| BWv (MHz)           | 750     | 1,250   | 1,500   | 2,100   | 10,000 | >
 50,000|  -----  +
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| DRAM eq                | 256 MB  | 1 GB    | 2 GB    | 4 GB    | 256 GB | >
 1000GB|  -----  |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+

   pAҨAw~nMݭnޡAnhݭnHAҥΪ޴N²
   C
   
   t@譱A@WCa|oinCƹWA @W@Ӿ֦@Cq
   HisgnC
   
    OracleAInformixASybaseAIBM DB2 (Unix) ƮwAO "C" yg
   A GɫhOνsĶ͡Ao˫Ki⵹ΤFCOracleBSybase
   BInformix ƮwOʤʪ C {II
   
   Q|~ӡAH̤wb PostgreSQL WFܦhu@AqYгyt@ӲŦX
   ANSI/ISO SQL ƮwtΨäXű`zCb PostgreSQL {W[W
   \αN[jA ߨϥΡAܤjnBC
   
   ڦpAup~vݨDN|HƯż (exponentially) WA]
   iô@sBCejƶqϥΪ̤ζ}oHC ϥΡup
   ~va|LouypRvӳQLajjC oO]
   pNO@W̤jun󤽥qvA]OjnuoqvI
   
1.1 ql (Quantum) qXXqlzǫܦ

   pAbeuӴOiivҨAbj 2030 ~APostgreSQL @
   Ʈwtη|bqlqBCqlqھڭlɤlSʡAp (spin) 
   VӲͪACҦpAbVW (spin is up) ɡA@ٲɤliQݧ@@
   AVUɥiQݧ@sClM֤ߥiX{| (superposition) 
   AAϱo@BsM䶡ƭȥiPɪFCyۤzZlA ql
   (qubit) ib@_AO̥i@ӾӹB@A ϱoDuʭp
   (nonlinear computational) O{NWŹqII blhAql
   zǦUzѭlɤl{C
   
2. zw߾AΩqnI

   o|ǦbPƪApnBtzBlBqƦܧAۤvгyL{
   tp󭫭nC]|ǪѦbϥάǪ~eD`nC
   
   w߬OXuAiΤ@Ӿ~IIvow߾AΩҦFX 
   ƮwtΡBqtΡB@~tΡBtzƦܧAIYOA AnotΧ
   㪺{XMơCFѤHMH餺lB@D`nA]
   PostgreSQLBLn 95 OHyC
   
   гyOܭn@BCϥάǪ󪺤HDp󲣥͡CoƦܾAΩq
   tΩM PostgreSQLCjhƤHSǪѡA]DpLn
   NT/95BOracleB HMtztΦp󲣥͡CܦhHDгytzML
   n NT/95 M̤OCtΥH²檺զئXXdd
   UUӦtzͤFA CӦtzOddUUӶWP (super-cluster) զA
   CӶWPγOddUUӬPt (galaxy) զACӬPtOddUUڬP
   (star) զAڬPtΤP (planet)AӦPOƥHQpl
   C]@ɾvA ubjLצ@ӤHгyF@ӦtzAb{N|AS
   o͡C @WְaճгytzC^гytzO@󷥬iޡA
   񬵤sqMTAyƪ}aluiohC {N֪ZJӤpSjl
   Auݤ@ӳoǮּuJӥvYiϦayI ZܤƵLaIIbjL
   ԳNιL֪ZMLjODZZI BSDR]Z (Albert
   Eienstein)]@ӤGQ@ 00 ~NǮa^֪ZiϤjH]oɡA
   SH۫HLC ɤ]SH۫HHOiгytzC
   
   LnEnOH C MզXygAuΨ 1 M 0Cڭ̩Ҧo
   tzOѨLŶɤۦӾAXlզXӦC]쪺Ʀb
   lenoͤF^ HOѨɤۦӦXAӭMզXӦII 
   ]쪺ƦbӭMenoͤF^HǤFtzSʡC AҦbtz
   HeäsbXXtzläsbAƦܮɶsbI tzbjz
   X͡A}lXië򦨪Cܲ{btzbXiII Hb@ӦW
   BrahmatzгyFAҦbtzC ѬOoӦtzII Brahma
   bAͬtzϥͤewgRWFѤII L{MAXͪg
   LthISӦ۪Ѥ]Ang@Ӥp 'C' {]Si
   I]ĶJճo@qQA󤣪Ķ~ŦXNA japG
   DAШӨqC^
   
   ¤@ڭ̪tz|W]@nT^A䤤Ҧl|M
   I
   
   HbOiгytzCiHгytz`ƬOLjA iHгy@~
   tΪ`Ƥ]OLjIIƥHʸUptzA iTjCLƶqt
   zMLܤƪhl (multi-dimensional atoms) Y򦨬ƭӰ򥻺tz
   (primary-dimensional-universe)C D`iƾǤ]ozסC
   
   ǩMέpǩwߤ}lXAp PostgreSQL M LinuxCpt׻P
   ѼWA]VӶViaA}lXʶq (momentum) |tW[Ct~Ap
   GέpǤάǩwߥTܡA Ḩ`NǩMLH}lǲ߬ǡA
   {𦭷|b@WC
   
   oi PostgreSQL opݭnqMɶ귽A]APostgreSQL OqM
   ɶ~CqMɶubǤWAҥHzǩM PostgreSQLBLinux
   nM׬OpCǡ]z^w߾AΩɶŶA
   A Ʀܳn}oC
   
   zǧYϦbAܡ]ni^BB]aM}O^B ݮѩMsgn
   ɳoͧ@ΡC@WҦǳӮکƾǡA]A PostgreSQLCPostgreSQL
   ϥΤFƾǪ@ӤpK{NNơ(Modern Algebra)C{NNƳBzX
   ס(Set Theory)BYNơ(Relational Algebra)Bs (Groups)B
   (Rings)B (Collections)B (Sets)BpX (Unions)B
   (Intersections)Bƥ (Exclusions)B (Domains)BC (Lists) C
   
   PostgreSQL o~ҥHsbAKO]qMɶC ӽqMqOP@
   ƪIۦPƹb@ʦ~eHҪI YϦbɤ@H]D
   pO̤jnuoqv M@W̤jun󤽥qvC
   
   ӭMbu@]sg{^ɷ|ӯqAӦۭƾǯƬqμ
   C YϦbA\ŪoqrɡAAӭMK|ӿUƤΨϥΤpqqC]N
   OA HO@xOǤW (thermodynamic heat engine)C]o
   A OǪwߤ]AΩHA]NavT PostgreSQL @nC
   
   @WiLCBqyB]pMzסAi঳@اC
   B qyB]pMtΡIAүo쪺uOGC]i^BtΡB
   ƮwβzסIj۵MN@ӸUᵩXLƪŶA LŶɤl
   ܤơḀXpƪŶAϤMC
   
   @WƦʸUqX_ӡAϱoإߤ@ӪGt ]]AƮw
   n^ܱoiCtxAyۺjqHⶰX_ӡA L̪`q
   |D`ejAӥBiإߤ@ӪGtΡC
   
   qOJ (Joules)AdJթΤAɶHΤpɶqסC\v
   (power) OqHɶAO˩ΤdˡC
     _________________________________________________________________
   
        CHq = y J
ΥHqӻ
        CHq = y J
qMqഫ]ƬO E = m * c * cA'c' Ot 'm' OqC
        ɶ = 8 pɡ]oO@ӱ`ơA]@H@ѥu 8 pɡ^
        \v = q / ɶ
             = (y / (8 * 60 * 60)) 
        @ɪ`\v = n * (y / (8 * 60 * 60)) 
n = ѻPp`HơC
     _________________________________________________________________
   
   qHW{AܩW[ 'n' |jTﵽ~Cn Vj\v]Vj]Τd
   ˪ܡ^C AiHQph֯q]HdJխp^ M\v]Hd
   p^M` Linux M PostgreSQL @tΡI
   
   ܩVApisôܦhHA]NOpjqqMɶA iΤn
   quɶͧ󰪽nCYϬOLnBIBM jq]iHܪ
   zwߡAӥ|Vzwߧ뭰C
   
   ׬OJ]ǪwߡA}lXtΡA PostgreSQLBLinux |Գ
   ʳlXtΡAM|񥦭uCoOǮھڪC HO
   гyӦhЪn󲣫~C
   
3. PostgreSQL OH

   PostgreSQL O@ӦۥѪƮwAA㪺{XAO@ӥH ANSI SQL
   1998, 92, 89 W欰ؼЪpƮwtΡAibPw󥭥xMާ@
   tΤBC PostgreSQL ̲ץتOʤʲŦX ANSI/ISO SQL Φ@
   Ĥ@}qθƮwC
   
   ѡAPostgreSQL O@W̥itΡCOHҲOAܦhӷ~Ʈwb
   B SʩMOU譱lWIIPostgreSQL OayWܦhaX@
   GAO@өMڤӪů (International Space Station) ۦMסCb
   ƤQ~APostgreSQL |ǪΪƮwtΡA]O@Ӷ}lXt
   C
   
   PostgreSQL I᪺򥻷QkOXun@ӼҲժ{gnFA ANO
   sg@Aޥud@II
   
   Informix Universal server]1997 ~X^¦O PostgreSQL ª
   A] Informix ʤF Illustra Inc. ξX InformixCIllustra Ʈw
   Oھ Postgres]PostgreSQL e^gC
   
   PostgreSQL O POSTGRES Ʈw޲ztΪ}A@ӷs@N DBMS s
    (prototype)CbOd POSTGRES jjƼҫ״IƫAPɡA
   H@XRF SQL lӨN PostQuel d߻yC
   
   PostgreSQL OѤ@sѥ[ PostgreSQL }oqH׾ªp}oHi檺C
   ثeժ̬ Marc G. FournierC
     * [3]scrappy@postgreSQL.org
       
   o|tdҦ PostgreSQL oiu@CMAƮwΤۤv]O
   PostgreSQL }oHIo}oL{ObpWjqƮwήaC
   
   PostgreSQL 1.01 @̬O Andrew Yu M Jolly ChenCPostgreSQL e
   Postgres {XAOܦhjǲ~͡Bͤε{]pb University
   of CaliforniaABerkeley  Michael Stonebraker бªɤU~C
   
   wƥHʸUM PostgreSQL Qw˧@ƮwAA WƮwAM
   {ƮwACO@ӫܥipƮw ]ORDBMS^C
   
   PostgreSQL ib SolorisBSunOSBHPUXBAIXBLinuxBIrixBDigital Unix
   BBSDiB NetBSDBFreeBSDBSCO UnixBNEXTSTEPBUnixware ΩҦL
   Unix CӨ 95/NT u@wH Cygnus cygwin32 M󧹦C
   
   ҭz PostgreSQL M University of California, Berkeley
   vO@C
   
3.1 ե֮

   PostgreSQL ²J
   
     * DءJ PostgreSQL SQL RDBMS Ʈw]pƮw޲ztΡ^
     * ثeJ7.0.1
     * ~֡J PostgreSQL QC 1985 ~}l}o
     * @̡J Q~ӤpWƥHʸUpjǩMq
       
   PostgreSQL ե֮Ѧb [4]http://www.greatbridge.com C
   
4. ӸnHPostgreSQL ٬O MySQLH

4.1 PostgreSQL  OracleBIBM DB2BMS SQL server MLII

   PostgreSQL b{BtסBXi (scalability) M iH (reliability)
   U譱зǴդ Oracle 8]M 8i^BIBM DB2BMS SQL server
   BSybaseB Interbase M MySQLI
   
    [5]http://www.aldev.8m.com  [6]http://aldev.webjump.com \ŪǴ
   յGC
   
   ]ĶJӴյGA֤HXáAаѾ\
   [7]http://www.devshed.com/BrainDump/MySQL_Benchmarks/^
   
4.2 MySQL MLЪ RDBMSes

   MySQL Ot@Ӷ}lX SQL AA䴩 (Transaction)C
   AΩD`pƮwAӤ䴩i SQL \CPostgreSQL hO@ӥ~
   ŪƮwA䴩MXGҦ SQL cCPostgreSQL ӷ~ƮwAp
   OracleBSybase M Informix iohCPostgreSQL 䴩D`iw
    (locking mechanism) Mܦhbӷ~Ʈw䤣쪺i\II
   
   b[NӡAMySQL }oN|A] MySQL ]H ANSI SQL ؼСAO@
   ӭЪ~Cڭ̭n̥iM}lX SQL AAө߱ҦL
   A]ڭ̨Sܦhɶ]ӹIh RDBMS^IƹWAAsuI@Ӧp
   PostgreSQL jl SQL Aɶ]SCҦ MySQL Ϊ̳|ಾ
   PostgreSQLCӥBAMySQL O@ӡӷ~(quasi-commercial) ~AM
   PostgreSQL PA̶}lXALݱvOCJͷAͫGCF
   PostgreSQLANݦAt@ SQL ƮwtΤFC
   
   p MySQL @в~ϱoήaLҾAqA귽C @ӡG
   tӬOW@LGtΡA @WC@ӤHu@IIЪ~h
   QA]Aȱo귽C owbӷ~Ʈwo͡Ap OracleBSybase
   BInformix MLn SQL serverCo˷|ϱoΪ̤AӥB~ݮeC
   oQ SQL AlXAIII
   
   AݭnWʭӸƮwtΡAAuݭn@ӳ̦nƮwAANO
   PostgreSQLC
   
   ĵiJھڤ@p ANSI SQL WAH̥iyXLӸƮwtΡII
   
   MySQL S PostgreSQL 䴩\pUX
     *  (Transactions)
     * x{ (Stored Procedures)
     * Eo (Triggers)]updateAinsert M delete^
     * ɦVƮw (Object oriented databases)
     * it (Locking systems)AbhΤBhҤUæ޲z
       (concurrency management)C
     * ld (Sub-queries)
     * Aݴ (Server-side cursors)
     * dߧ֨ (Query caching)
     * Ʈw (Locking of databases)
     * ns䴩]JOINBUNIONBMINUSBINTERSECTBouter join^
     * ܦhL\XXhӼơC
       
   MySQL ib [8]http://www.tcx.se C
   
   ]ĶJMySQL wH GPL oC^
   
5. Bo ?

   AiqHUaʶR Redhat Linux СBDebian Linux Щ Slackware
   Linux СAq PostgreSQL M]lXMGX^J
     * Linux System Labs }J [9]http://www.lsl.com/ ]7 ^
     * CheapBytes Inc }J [10]http://www.cheapbytes.com/ ]7 ^
     * Debian D}J [11]http://www.debian.org/vendors.html
       
   PostgreSQL ´]桥PostgreSQL CDROMAt㪺lXA\h Unix
   ާ@tΪiɤΧ㪺C
     * qDo PostgreSQL СJ [12]http://www.postgresql.org 30]
       ^
       
   PostgreSQL utGɪo檩 (distribution)J
     * PostgreSQL RPMs @HO Lamer OwenAb [13]lamar.owen@wgcr.org
       C
     * PostgreSQL  RPM MG RPM
       [14]http://www.ramifordistat.net/postgresC
     * PostgreSQL  RPM MG RPM [15]http://www.postgresql.org CI
       Latest NewsM Redhat RPMsC
     * PostgreSQL  RPM MG RPM
       [16]http://www.redhat.com/pub/contrib/i386/ Cftp xb
       [17]ftp://ftp.redhat.com/pub/contrib/i386/
     * Solaris, HPUX, AIX, IRIX, Linux GɯxJ
       [18]ftp://ftp.postgresql.org/pub/bindist
       
   UJ
     * DJ [19]http://www.postgresql.org/
     * J [20]http://logical.thought.net/postgres95/
     * [21]http://www.itm.tu-clausthal.de/mirrors/postgres95/
     * [22]http://s2k-ftp.cs.berkeley.edu:8000/postgres95/
     * [23]http://xenium.pdi.net/PostgreSQL/
     * [24]http://s2k-ftp.cs.berkeley.edu:8000/postgres95/
       
   HU ftp J
     * D FTP: [25]ftp://ftp.postgresql.org/pub
     *  FTP: [26]ftp://ftp.chicks.net/pub/postgresql
     * [27]ftp://ftp.emsi.priv.at/pub/postgres/
     * [28]ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95
     * [29]ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL
     * [30]ftp://ftp.jaist.ac.jp/pub/dbms/postgres95
     * [31]ftp://ftp.luga.or.at/pub/postgres95
     * [32]ftp://postgres95.vnet.net:/pub/postgres95
     * [33]ftp://ftpza.co.za/mirrors/postgres
     * [34]ftp://sunsite.auc.dk/pub/databases/postgresql
     * [35]ftp://ftp.task.gda.pl/pub/software/postgresql
     * [36]ftp://xenium.pdi.net/pub/PostgreSQL
       
   PostgreSQL {X]iq sunsite unc Mgo]yj@d
   ^COb Redhat Linux o檩 (distribution) 
   /pub/contrib/i386/postgresql.rpm ɤC
     * nDMgAШ [37]ftp://sunsite.unc.edu
       
6. PostgreSQL ֳtw˫

   o`|Abp󤭤ֳtw˩MҰʳoƮwC
   
6.1 w˩M

   wˡBաBT{M PostgreSQL BJ H root ñJ
     _________________________________________________________________
   
# cd /mnt/cdrom/RedHat/RPMS
# man rpm
# ls postgre*.rpm
# rpm -qpl postgre*.rpm | less ][ɮצW^
# rpm -qpi postgre*.rpm ][ݮMơ^
# cat /etc/passwd | grep postgres
     _________________________________________________________________
   
   `NJpGAݨ@ӡpostgresϥΪ̡AAinƥMM postgres 
   aؿ  postgres MRoWΪ̡AΧLWpostgres2Cwˮ
   ݭnbbC
     _________________________________________________________________
   
:
# rpm -i postgre*.rpm ]w˩ҦMAYȤݡB}oBƩMDMӨ
pgaccess `u@^
# man chkconfig
# chkconfig --add postgresql  ]ΨӦb}ɶ}l pgC^
# /etc/rc.d/init.d/postgresql start ]Ұ postgresql^
# man xhost
# xhost +  ] pgaccess ϥܸ˸m^
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
KKb psql iW / UbCӽsvO \s

bash$ export DISPLAY=<DW>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
     _________________________________________________________________
   
   {bAiHb pgaccess  psql tUFU SQL OFII
     _________________________________________________________________
   
bash$ cd /usr/doc/postgresql*
     _________________________________________________________________
   
   b\ŪҦ FAQAϥΪ̡B{]pB޲zUMޡC
   
6.2 PostgreSQL RPMs

   ~AЬ [38]http://www.ramifordistat.net/postgres  "Installation
   Steps"C
   
   PostgreSQL RPM  Lamar Owen @A [39]lamar.owen@wgcr.org b
   [40]http://www.postgresql.org ih PostgreSQL ơC
   
6.3 Maximum RPM

    RedHat RPM M޲zH޲z PostgreSQL wˡCb
   [41]http://www.RPM.org UMaximum RPM@ѡAMɦW
   maximum-rpm.ps.gzC b Linux ϥ gv O\ŪX
     _________________________________________________________________
   
# gv maximum-rpm.ps.gz
     _________________________________________________________________
   
   @ rpm2deb i RPM Mഫ Debian Linux M
   
6.4 Ҥl RPM

    PostgreSQL UؤݭnҤlCqHUaw PostgreSQL Ҥlؿ
   X
     * Linux  - postgresql-*examples.rpm
     * postgresql-*examples.rpm [42]http://www.aldev.8m.com 
       [43]http://aldev.webjump.com
     * PostgreSQL {X postgresql*.src.rpmAb examplesBtesting 
       tutorial ؿMC
       
6.5  PyGreSQLXPython 

   w examples MAаѾ\ [44]Ҥl RPMAX
     _________________________________________________________________
   
bash$ cd /usr/lib/pgsql/python
bash$ createdb thilo
bash$ psql thilo
thilo=> create table test (aa char(30), bb char(30) );
thilo=> \q
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$
KKnFX{bw˥
bash$ su - root
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload
     _________________________________________________________________
   
6.6  PerlXPerl 

   w examples MAаѾ\ [45]Ҥl RPMAX
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/perl5
bash$ perl ./example.pl
     _________________________________________________________________
   
   `NJpGHWOѤFаpJܼ @INC nb]A site_perl 
    Pg.pm ҲաAҥHnpUϥ -I ﶵC
     _________________________________________________________________
   
bash$ perl -I/usr/lib/perl5/site_perl/5.004/i386-linux-thread ./example.pl
     _________________________________________________________________
   
   KKA perl wbs PostgreSQL ƮwII
   
   nϥ perl AаѾ\ example.pl ɡC
   
6.7  libpq, libpq++ 

   w examples MAаѾ\ [46]Ҥl RPMAX
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/libpq
bash$ gcc testlibpq.c -I/usr/include/pgsql -lpq
bash$ export PATH=$PATH:.
bash$ a.out

bash$ cd /var/lib/pgsql/examples/libpq++
bash$ g++ testlibpq0.cc -I/usr/include/pgsql -I/usr/include/pgsql/libpq++
-lpq++ -lpq -lcrypt
bash$ ./a.out ]`NJz|~TXpU^
> 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$
     _________________________________________________________________
   
   KKA C/C++ Ӧs PostgreSQL ƮwII
   
6.8  Java 

   w examples MAаѾ\ [47]Ҥl RPM Mw˥HUFC
     * q [48]ftp://ftp.redhat.com/pub/contrib/i386 
       [49]http://www.blackdown.org o JDK jdk-*glibc*.rpm
     * q [50]ftp://ftp.redhat.com/pub/contrib/i386 o
       postgresql-jdbc-*.rpm
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/jdbc
bash$ echo $CLASSPATH
 -->  CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib:
/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar

 jdbc*.jar XnTC
*.jar ɭnb /usr/lib/pgsql M  /usr/libjdk*/lib ؿC

bash$ export CLASSPATH=/usr/lib/pgsql/jdbc7.0-1.2.jar:.:/home/java/jdk1.2.2/lib
:/usr/lib/pgsql:/usr/lib/pgsql/classes.zip:/usr/lib/pgsql/pg.jar

sҦ psql.java ɡA⡥packageܬסC
bash$ javac psql.java
bash$ java psql jdbc:postgresql:template1 postgres < password >[1] select * fro
m pg_tables;
tablename       tableowner      hasindexes      hasrules
pg_type postgres        true    false   false
pg_attribute    postgres        true    false   false
[2]
CTRL+C
bash$
     _________________________________________________________________
   
   KKA Java Ӧs PostgreSQL ƮwI
   
6.9  ecpg 

   w examples MAаѾ\ [51]Ҥl RPMAX
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/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
     _________________________________________________________________
   
   KKAδOJ SQL Ӧs PostgreSQL ƮwI
   
6.10  SQL ҤlXۭqƫAM

   w examples MAаѾ\ [52]Ҥl RPMAX
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/sql
gnK
     _________________________________________________________________
   
6.11  Tcl/TK 

   Tck/Tk ҤlO pgaccess {C ϥΤ@Ӥrs边\Ū
   /usr/bin/pgaccess ɮסX
     _________________________________________________________________
   
bash$ view /usr/bin/pgaccess
bash$ export DISPLAY=<AqDW>:0.0
bash$ createdb mydb
bash$ pgaccess mydb
     _________________________________________________________________
   
6.12  ODBC 

    1. b [53]http://www.insightdist.com/psqlodbc/ o win32 pgsql odbc
       Xʵ{
    2. t~аѾ\ /usr/lib/libpsqlodbc.a
       
6.13  MPSQL Motif-worksheet 

   b [54]http://www.mutinybaysoftware.com o RPMC
   
6.14 T{

   nT{ PostgreSQL ~A Regression ծMJ H root ñJ
     _________________________________________________________________
   
# rpm -i postgresql*test.rpm
\Ū README ɩΦw˷{Aw regress ؿ
# rpm -i postgresql*.src.rpm
# cd /usr/src/redhat/SPECS
# more postgresql*.spec ]Hݻݭnw˭ RPM M^
# rpm -bp postgresql*.spec ]Ko˷|ǳƸӮM^

Regression ջݭn Makefiles M *fmgr*.h YɡAiΥHUO
͡X
# rpm --short-circuit -bc postgresql*.spec ]|I^
ݨ졥make -C common  SUBSYS.o CTRL-C פu@Coɭ configure
wg\AҦ Makefiles MYɤ]w͡CAAݭn~UhC
# cd /usr/src/redhat/BUILD
# chown -R postgres postgresql*
# su - postgres
bash$ cd /usr/src/redhat/BUILD/postgresql-6.5.3/src/test/regress
bash$ more README
bash$ make clean; make all runtest
bash$ more regress.out
     _________________________________________________________________
   
6.15 氣

   ɰOɷ|bDnX PostgreSQL DnX{CAi̾ڦۤv
   ݭnAۦi׸ɡCиqHUBJJ  postgresql {Xؿ
   
                # rpm -i postgresql*.src.rpm
                # cd /usr/src/postgresql6.5.3
                # man patch
                # patch -p0 < patchfile
                # make clean
                # make

   OɬOb
     * PostgreSQL OɡJ [55]ftp://ftp.postgresql.org/pub/patches
       
7. ֳt}l

   аѦ [56]ֳtw˫ޤ@C
   
7.1 ƮwإߡBBW

   AiϥΨϥΪ̤͵ GUIAWpgaccessӫإߩMƮwA]iΫ
   OCpsqluC
     _________________________________________________________________
   
pAH root nJAܨΪ̡postgresJ
# xhost + ] pgaccess ϥܸ˸m^
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
Kb psql W / UbCӽsvΥ \s

bash$ export DISPLAY=<DW>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
     _________________________________________________________________
   
   A{biHb psql  pgaccess tUF SQL OC
   
   nƮwܡJ
     _________________________________________________________________
   
bash$ man dropdb
bash$ man destroydb  ]bª pgsql ϥΡ^
bash$ dropdb <ƮwW>
     _________________________________________________________________
   
   ]iHb@ SQL sΥHUO@ӸƮwJ
     _________________________________________________________________
   
> drop database <ƮwW>
     _________________________________________________________________
   
   nƮwW١AаѾ\ [57]ƥM٭@`
   
7.2 إߩMΤ

   nإ߷sΤAH unix ΤᡥpostresñJAAi²Ϊ GUI u
   pgaccessӼWΤC
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <ƮwW>
     _________________________________________________________________
   
   UserstabAA Object|New  Object|Delete
   
   A]iΫOROZ (script)CWcreateuserROZҰ psqlC
     _________________________________________________________________
   
bash$ man createuser
bash$ createuser <ΤW>
bash$ createuser -h host -p port -i userid <ΤW>
     _________________________________________________________________
   
   n@ postgres ΤAϥΩROZdestroyuserC
     _________________________________________________________________
   
bash$ man dropuser
bash$ man destroyuser ]bª pgsql ϥΡ^
bash$ destroyuser
     _________________________________________________________________
   
7.3 إߩMs

   ثeS²檺iΨӳ]wΤsաCAnۦb pg_group 椤J
   sCpJ
     _________________________________________________________________
   
bash$ su - postgres
bash$ psql <ƮwW>
Kb psql W / UbCӽsvΥ \s

psql=> insert into pg_group (groname, grosysid, grolist)
psql=> values ('posthackers', '1234', '{5443, 8261}' );
INSERT 58224
psql=> grant insert on foo to group posthackers;
CHANGE
psql=>
     _________________________________________________________________
   
   pg_group 쬰J groname sզW١CoW٥rμƦrAi
   uμIŸC
   
   grosysid sեNXCoO@ int4ACӸsճnW@LGC
   
   grolist ݩ󦹸sժ pg_user NXWCO@ int4[]C
   
   nRsաJ
     _________________________________________________________________
   
bash$ su - postgres
bash$ psql <ƮwW>
Kb psql W / UbCӽsvΥ \s


psql=> delete from pg_group where groname = 'posthackers';
     _________________________________________________________________
   
7.4 إߡBsM

   AiϥΨϥΪ̤͵ GUIAWpgaccessAΫOCpsqluӫإ
   BsMƮwC
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <ƮwW>
     _________________________________________________________________
   
    Table | New | Design sC
     _________________________________________________________________
   
bash$ man psql
bash$ psql <ƮwW>
Kb psql W / UbCӽsvΥ \s
     _________________________________________________________________
   
   b psql ܤUAJзǪ SQL OApcreate tableBalter table
   Ρdrop tableӳBzC
   
7.5 إߡBsM椤

   AiϥΨϥΪ̤͵ GUIAWpgaccessAΫOCpsqluӫإ
   B sMƮw椤C
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <ƮwW>
     _________________________________________________________________
   
    Table | < @Ӫ > | Open sC
     _________________________________________________________________
   
bash$ man psql
bash$ psql <ƮwW>
Kb psql W / UbCӽsvΥ \s
     _________________________________________________________________
   
   b psql ܤUAJзǪ SQL OApinsert into table_nameB
   update table_nameΡdelete from table_nameӳBzC
   
7.6 ܥثeƮw

   AiϥΨϥΪ̤͵ GUIAWpgaccessAΫOCpsqluӧ
   ثeƮwC
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <ƮwW>
     _________________________________________________________________
   
    Database | Open sC
     _________________________________________________________________
   
bash$ man psql
bash$ psql <ƮwW>
Kb psql W / UbCӽsvΥ \s

psql=> connect <ƮwW> <user>
     _________________________________________________________________
   
7.7 ƥP٭Ʈw

   PostgreSQL ѤFӤuӳƥAtΡJpg_dump ƥ@ӸƮw
   Apg_dumpall @LƥҦƮwC
     _________________________________________________________________
   
bash$ su - postgres
bash$ man pd_dump
bash$ pd_dump <ƮwW> > database_name.pgdump
     _________________________________________________________________
   
   ٭hJ
     _________________________________________________________________
   
bash$ cat database_name.pgdump | psql <ƮwW>
     _________________________________________________________________
   
   oަҥiΩhƮwάƮwWC
   
   ĵiJCӸƮwnwɳƥC] PostgreSQL ۦ޲zbɮרtΤ
   ɮסAҥHnʿtγƥӧ@ƮwƥC SHOҨɮצb٭
   |B@ӥiΦӤ@PAC
   
   ƥjƮwJ] PostreSQL e\jLtΪ̤jɮ׮eqA@Ӫ
   X@ɮ׷|DA ]Ҳͪɮץi|WXtΪC]
   pg_dump |g stdoutAAiϥμзǪ unix uӸѨMoi઺DJ
   
   ϥYFXJ
     _________________________________________________________________
   
bash$ pg_dump <ƮwW> | gzip > filename.dump.gz
     _________________________________________________________________
   
   ΥHUksJJ
     _________________________________________________________________
   
bash$ createdb <ƮwW>
bash$ gunzip -c filename.dump.gz | psql <ƮwW>
     _________________________________________________________________
   
   
     _________________________________________________________________
   
bash$ cat filename.dump.gz | gunzip | psql <ƮwW>
     _________________________________________________________________
   
   ϥ splitJ
     _________________________________________________________________
   
bash$ pg_dump <ƮwW> | split -b 1m - filename.dump.
     _________________________________________________________________
   
   `NJHWOAb filename.dump ᦳ@I (.)IIAiΥHUks
   JJ
     _________________________________________________________________
   
bash$ man createdb
bash$ createdb <ƮwW>
bash$ cat filename.dump.* | pgsql <ƮwW>
     _________________________________________________________________
   
   MAɮצW١]filename^M pg_dump XeLݩMƮwWٰtXC
   ~A٭FƮwisWC ]okAΩ󬰸ƮwWC
   
   nҦ PostgreSQL XAϥ pg_dumpall
     _________________________________________________________________
   
bash$ man pg_dumpall
bash$ pg_dumpall -o > db.out
nsJJ
bash$ psql -e template1 < db.out
     _________________________________________________________________
   
7.8 ƮwOw

   аѾ\ [58]PostgreSQL Ow@`C
   
7.9 uWDU

   AD PostgreSQL uWDU]IA]|A`٫ܦhɶAA
   toơC
   
   аѾ\POAp createdbBcreateuser uW man pagesC
     _________________________________________________________________
   
bash$ man createdb
     _________________________________________________________________
   
   ]аѾ\ psql uWDUTAb psql J \h
     _________________________________________________________________
   
bash$ psql mydatabase
psql> \h
ܡJb psql W / UbCӽsvΥ \s
     _________________________________________________________________
   
7.10 إ߿Eo (Triggers) Mx{ (Stored Procedures)

   nإ߿EoΤx{ǡAbAϥΪƮw桥createlangROZӦw
   plpgsqlCpGAQw]ϥΥA⥦w˦btemplate1A ]Hإ
   ƮwO template1 ˫~CѾ\createlangΦ
   /usr/doc/postgresql-7.0.2/user/index.html  User GuideC
     _________________________________________________________________
   
bash$ man createlang
bash$ createdb mydb
bash$ export PGLIB=/usr/lib/pgsql
bash$ createlang plpgsql mydb
bash$ createlang plpgsql template1
     _________________________________________________________________
   
   ]аѦ [59]Ҥl RPM EoMx{ǪҤlCExamples RPM 䤤@
   ҤlJ
     _________________________________________________________________
   
create function tg_pfield_au() returns opaque as '
begin
    if new.name != old.name then
        update PSlot set pfname = new.name where pfname = old.name;
    end if;
    return new;
end;
' language 'plpgsql';

create trigger tg_pfield_au after update
    on PField for each row execute procedure tg_pfield_au();
     _________________________________________________________________
   
   t@ӿEo{XҤlJ
     _________________________________________________________________
   
create trigger check_fkeys_pkey_exist
        before insert or update on fkeys
        for each row
        execute procedure
        check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');
     _________________________________________________________________
   
   Aw TEST MX postgresql-test-7.0.2-2.rpm M\Ūb
   /usr/lib/pgsql/test/regress/sql  SQL ROZҤlC
   
   nܸƮwEoWX
     _________________________________________________________________
   
bash$ psql mydb
psql=> \?
psql=> \dS
psql=> \d pg_trigger
psql=> select tgname from pg_trigger order by tgname;
     _________________________________________________________________
   
   nܸƮwƩMx{ǪWX
     _________________________________________________________________
   
bash$ psql mydb
psql=> \?
psql=> \dS
psql=> \d pg_proc
psql=> select proname, prosrc from pg_proc order by proname;
psql=> \df
     _________________________________________________________________
   
7.11 PostgreSQL 

   LDAаѾ\ PostgreSQL ѡA̪ƤQ
   CPostgreSQL wbM󤤡Cо\ŪUser's GuideBProgrammer's
   GuideBAdministrator's GuideMLѡC
   
8. PostgreSQL 䴩WL 200 Gig WŸƮw

   wܦhjqN PostgreSQL ΩjƮwCbѥHUަҡJ
   
8.1 BzX32 줸 64 줸

   32 줸BzqbƮwWL 5 GigaByte ɪ{|tUCAi 32
   줸Bz 30 gig ƮwA{|UC32 줸̦h 2 GB
   OB2 GB ɮרtΤξާ@tΨL譱Cϥ SGIBIBMB HP 
   Linux SsɮרtΩ ext3-fs Ӧb 32 줸W䴩jL 2 GB ɮפj
   pC
   
   ﷥jƮwӻAڱjPĳAϥ 64 줸BzAp Digital Alpha
   BSun Ultra-sparc 64 줸BzBSGI 64 줸BzBIntel Mercel IA-64
   BzBHPUX 64 줸qBIBM 64 줸qCϥ 64 줸BzӽsĶ
   PostgreSQLANiHBzjƮwάdߡCdߤjMƮwt
   | 32 줸qּƭC64 줸quIOAܤjOЦ}
   (memory addressing space) Mާ@tΥiBzܤjɮרtΡBjƮw
   ѸΪ{B 䴩hOBOjKK
   
   ]ĶJ2.4  Linux ֤ߤw} 2 GB ɮפjpAä䴩̦h 64 GB
   OC^
   
8.2 hBz

   nϥΤjƮơAA̦nϥΤ 4B16  32 ٳBz SMP qCt
   @譱AA]iϥ 4  5 BzqAӧAƮw
   (partition)  4  5 Ӥ}ƮwACӦb@qBCCӳBz
   Ht ]100MBits^AHӺdsCҦpAAƮwGʭӪA
   Ai⥦̤|ӸƮwACӦQӪCoˡAAu@t 4
   }qCoO@Ӥ|BzqKyסC AiϥΡƮwd
   ߡBbϰϥ NFSBŪ桥CREATE VIEWӧou@CCӳB
   ziuvҦƮwAY 200 ӪCbӡAPostgreSQL |
   Ʈwdߡ]wgb TODO W^AbNX 7.1 X{CҦpA
   ϥΥN aBb @W٧@Ʈwd߷|XX
     _________________________________________________________________
   
select a.col1, a.col2, b.col4, b.col7
from
    database1.my_tablea a, database2.my_tableb b
where
    a.col1 = b.col3 and
    a.col4 = b.col9;

update my_tablea
set
    col1 =  b.col2
from
    database1.my_tablea a, database2.my_tableb b
where
    a.col4 = b.col9;
     _________________________________________________________________
   
8.3 ƻs (Replication) A

   j~/ӷ~qӳ]ƻsA PostgreSQL Inc @ӷ~cCAi
   νƻsAӴѭЪƤΰץio (availability)CƻsAO@
   Bi~A]ݭnC
   
9. ̤۫H PostgreSQLHRegression ծM󬰥Τإ߫H

   uzǩwߡvAڭ̥iHǦa PostgreSQL O_u̱q
   ISO/ANSI SQL Wu@CK PostgreSQLARegression ծM
   ]src/test/regress^w]tbo檩 (distribution) A e\Aq
   ҼзǪ SQL ާ@ PostgreSQL OC ծM󤤤w]tFƦʭ
   SQL յ{C
   
   Aιqt PostgreSQLAӤOΤHC qiHHdU
   ܼƥHtרӶi Regression աC{NqibܵuɶƤQ
    SQL աCb[NӡAq|HּƥHC]A ϥιqӴ
   չq{OXzC
   
   pݭnAA]iۦW[աCpGA{|ApήaUA A
   ]i⥦W PostgreSQL DCRegression ծMUΤإ߹
   PostgreSQL HߤΫHA]UͲtΨt] PostgreSQLC
   
   Regression ծMiQ}oHP̲ץΤᶡۤPN@D`O
   ޳NCPostgreSQL b}oL{αXn󤧫esxϥ Regression 
   ծMӫOҽC
   
   PostgreSQL Oiy Regression ծM󪽱ϬMXӡCpG@إ\B
   ykίSʦb Regression դsbANQ䴩AҦLSCX
   PostgreSQL Niण䴩IIAiHۦҤΥ[J Regression ծM󤤡C
   
10. ƮwOw

   ƮwOwDݦbhӤPhQJ
     * Ʈwɮ׫O@CƮwҦɮ׳a postgres WťΤH~Τ
       ŪC
     * ڹw]ȡAqΤsƮwAuzL UNIX y
       (socket)AO TCP/IP yCAݥH -i ﶵҰʤ~e\D
       sC
     * ȤsiH IP a}M / ΥΪ̦W٥[HAuݭק $PG_DATA 
       pg_hba.conf ɡC
     * iy~M{ҫȤsC
     * C Postgres Τ᳣@ӨϥΪ̦W٩Mܩʦa֦@ӱKXC w]
       OΤSvgJOۤvإߪƮwC
     * ΤiQstsդA_s@ӪiHsկSvӭC
       
10.1 Τ{

   {ҬOݦAM postmaster TOnDsƪΤO_THL{
   CҦҰ Postgres Ϊ̳P{ҬOݦAM postmaster pg_user 
   OAHTwL̦vQu@C ӥΪ̯uꨭOu@HhӤP
   kJ
     * bϥΪ shell J bϥΪ shell ҰʪݦAOUΪ̪]
       ġ^ϥΪ̥N (effective user-id)A@@ setuid Ӥƨ
       postgresC ĨϥΪѧO|QΧ@s¦CASL{Ҥu
       @C
     * ӦۺJ pG Postgres tΥHBAHis
       postmaster { (process) p TCP CƮw޲zݳ]w
       $PGDATA ؿ pg_hda.conf ɡAӫwPDsPƮwɩҥ
       {ҨtΡC аѾ\ pg_hba.conf(5) ]man 5 pg_hba.conf^ HFѤP
       {ҨtΡCMAھڥDӶi{Ҧb Unix ]O@L}CMߪ
       JI̤]iH˦ۤvҥΪDCoǫOwDb Postgres d
       C
       
10.2 ̾ڥDs

   ̾ڥDsY PostgreSQL ΩMwȤisƮwML̦pT
   {L{CCӸƮw@ӦW pg_hba.conf ɮסAb
   $PGDATA ؿA֯sƮwCCӦsƮwΤ᳣nb
   pg_hba.conf C_hҦӦ۸ӫȤ᪺s|H"User
   authemtication failed" ~TQڡC
   
   аѾ\ pg_hba.conf(5)  man page]man 5 pg_hba.conf^C
   
   pg_hba.conf ɪ򥻮榡O@լA@@ӡCŦΥH hash r]#^}
   lhz|C@ӬѤ@ǥΪŮM /  Tab }զC
   
   qȤӪsig Unix yΤpy]Y TCP/IP^CӦ Unix y
   sΥHU榡OJ
     _________________________________________________________________
   
local database authentication method
     _________________________________________________________________
   
   
   
   database wΩӸƮwCall NAΩҦƮwC
   
   authentication method wΤbϥ Unix yɥΨӻ{ҪkCP
   keԭzC
   
   ӦۤpysΥHU榡OJ
     _________________________________________________________________
   
host database TCP/IP-address TCP/IP-mask authentication method
     _________________________________________________________________
   
   TCP/IP a}| ޿W and'ed w TCP/IP nMȤ᪺ TCP/IP a}Cp
   ̬۵Ao|ΩoӳsCpG@ӳsŦXWL@ӬA ɮפ
   Ĥ@Ӭ|QϥΡC TCP/IP a}٬O TCP/IP nOHIQiƮ
    (dotted decimal notation) FCpG@ӳsMҦ
   Areject {ҤkN|QϥΡC]Ѿ\ [60]{Ҥk^
   
10.3 {Ҥk

   Unix M TCP/IP y䴩HU{ҤkJ
     * trust Lae\sC
     * reject LaڵsC
     * crypt ݫȤݥΪ̪KXC|g[K]ϥ crypt(3)^MP
       pg_shadow 檺KXCpGKX۲šAKe\sC
     * password ݫȤݥΪ̪KXC|˶ǰeMP pg_shadow 檺KX
       CpGKX۲šAKe\sC@ӿܩʪKXɥib password 
       rX{Co˱KXt|γoɮסAӤO pg_shadow ɮסCаѾ\
       pg_passwdC
       
   HU{Ҥku TCP/IP y䴩J
     * krb4  Kerberos V4 ӻ{ҥΤC
     * krb5  Kerberos V4 ӻ{ҥΤC
     * ident ΫȤݪ ident Aӻ{ҥΤ]RFC 1413^Cb ident 
       r٥iܩʦa@ӬMgA ident ΤWٹ Postgres Τ
       W١CYxsb $PGDATA/pg_ident.conf ɤC
       
   o̦@ǨҤlJ
     _________________________________________________________________
   
# HҦӦ Unix ysC
local   trust
# HҦoqg TCP/IP ӪsC
host    all 127.0.0.1   255.255.255.255     trust
# ڭ̰QoqC
host    all 192.168.0.10    255.255.255.0       reject
# oq[KAҥHڭ̭n¤rKXC
host    all 192.168.0.3 255.255.255.0       password
# osqLnѥ[KFKXC
host    all 192.168.0.0 255.255.255.0       crypt
     _________________________________________________________________
   
10.4 s

   Postgres ѤFLήasۤvƪC
     * ƮwWťήa (Database superusers) ƮwWťήa]Y
       pg_user.usesuper ]w諸ήa^۰ʳqLHUⶵ~Ҧs
       Jpg_user.usecatupd S]w諸ܤʧstΥؿARt
       ؿ]έק復 (schema)^hä\C
     * sSv (Access Privilege) sSvOΨӭŪBgM]wO
       (class) WhvOA SQL grant/revoke(1) ӨMwC
     * OMק έק{sOcApקBAM
       ޡAuODHC pWҭzAoʧ@\ΩtΥؿC
       
10.5 g SSH Ow TCP/IP s

   Ai ssh ӥ[KȤM Postgres AsCoTܡAo
   iΦ@ӫOwsC
   
   ssh 󴣨ѤFj}lɻݭnơCаѾ\
   [61]http://www.heimhardt.de/htdocs/ssh.html H[`FѡCvBuݨ
   BC
   
   g ssh Φ@OwqDJ vBuݨBC
     * ͤ@ݹqqDApUJ
         _____________________________________________________________
       
ssh -L 3333:wit.mcs.anl.gov:5432 postgres@wit.mcs.anl.gov
         _____________________________________________________________
       
     * -L Ѽƫ᪺Ĥ@ӼƦrA33333AOAoqD𸹡CĤGӼƦrA
       5432AOt@誺IXݪ𸹡CӰƤW٩Φa}ݩA
       C ssh ̫@ӰѼƤήaۦܬO_[WΤW٤]OC S
       W٪ܡAssh |ըϥεnJȤݹqΤW١C AiΥA
       qΤW١A@wnΩM PostgreSQL C
     * A{bw}lF@ ssh ɬqAAiAҥΪq Postgres Ȥs
       Ae@Bҩw𸹡CpAϥ psqlAAnt@ӤA]eҥΪ
       @ӤwQ ssh ڡC
         _____________________________________________________________
       
psql -h localhost -p 3333 -d mpw
         _____________________________________________________________
       
     * `NAn -h ѼƨϱoAȤ TCP yӤO Unix yCpGA
       5432 @qDIAih𪺰ѼơC
       
10.6 Kerberos {

   Kerberos O@ӷ~ɼзǪOw{ҨtΡAAΩgLκtΡC
   
   po Kerberos {ҨtΨäHP Postgres GCP Kerberos
   hHiѿܪn󪺧Φۧ@~tμtӱoC~A{Xo檩
   (distribution) i MIT Project Athena oC
     _________________________________________________________________
   
`NJYϧAϼtӴѤF KerberosAAiQ MIT
A]@ǼtӪQGNaHPM MIT X@C
     _________________________________________________________________
   
    Kerberos dߥiAtө MIT Project AthenaC`N FAQLs]`
   ݰDWAFrequently-Asked Questions Lists) |QwɱH Kerberos q
   H׾¡]HHhq\^AM USENET sDաC
   
   wˡJ w Kerberos b Kerberos Installation Notes wԲӻCnT
   wAX (key file)]srvtab  keytab^iQ postgres ΤŪCy
   ]w src/Makefile.global ɪ KRBVERS ܼơAPostgres ΨȤ{isĶ
   ϥ MIT Kerberos qTwĥ|ΤCA]i Postgres 
   禡wBYɩMۤvAXɪmCsĶA Postgres nn
   O@ Kerberos AȡCаѾ\ Kerberos Operations Notes M manual
   pages HonOAȪԱC
   
   ާ@J wˤAPostgres bU譱p@ Kerberos AȹB@CnD{
   ҪϥΤkAаѾ\ PostgreSQL User's Guide  postmaster M psql 
   `C
   
   b Kerberos Ĥ (hooks)AΤMAȩRW@FHU]]]аѾ\
   HU^C
     * Τ᪺DnW (principal namesAanames) Ĥ@ӳ]t Unix
       / Postgres ΤW١C
     * Postgres AȰ]ӳAAȦW٩MDW١C̦pPĥ|
        ]YhҦW^C
     _________________________________________________________________
   
                JKerberos ѼƨҤl
 ------------------------------------------------------
 Ѽ       Ҥl
 ------------------------------------------------------
 user       frew@S2K.ORG
 user       aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG
 host       postgres_dbms/ucbvax@S2K.ORG
 ------------------------------------------------------
     _________________________________________________________________
   
11. PostgreSQL e GUI u]ϹϥΪ̬ɭ^

   sbӱN|̬y檺e GUICĳAҦuǡv
   95/NT {gbW檺{C
   
   AnϥκWε{Ap [62]Enhydra ]ϥ Java^ [63]Zope ]
    Python^ [64]OpenACS C
   
   ̨κWROZ (script) sg]νsĶ^yO [65]PHP+Zend sĶCPHP
   \QjlA] PerlBJavaBC++ M Javascript \൲X@ػy
   AӥBiҦ@~tΡXUnixes M NT/95 C
   
   ƦWHw{׬ĄΤu㬰
     * Enhydra b [66]Enhydra [W Borland Java JBuilder Linux 
       [67]http://www.inprise.com
     * Zope b [68]Zope
     * OpenACS b [69]OpenACS
     * PHP ROZM Zend sĶ [70]PHP+Zend sĶ
     * X-Designer 䴩 C++, Java M MFC [71]http://www.ist.co.uk/xd
     * Windows95 M Unix  QT b [72]http://www.troll.no M
       [73]ftp://ftp.troll.no
     * Code Crusader b Linux cdrom Aھ MetroWorks Code Warrior g
       KOn
       [74]http://www.kaze.stetson.edu/cdevel/code_crusader/about.html
     * MetroWorks  Code Warrior [75]http://www.metrowerks.com
     * GNU Prof C++ IDEAӦ [76](Redhat) Cygnus
       [77]http://www.cygnus.com
     * Borland C++ Builder Linux  [78]http://www.inprise.com
     * Borland Java JBuilder Linux  [79]http://www.inprise.com
       
   H̨άyܡX
    1. JavaA{oܺCAӥBnvOCC++  Java ֤II
    2. Python]jjɦVROZy^C
    3. PHP UAROZ[W HTMLBDHTMLBJavascript ȤݩROZ
       Java-AppletC
    4. Perl ROZyϥ Perl-Qt  Perl-Tk [80]Perl Ʈw
    5. Omnipresent M Omnipotent y C++ (GNU g++)J
          + Fast CGI]H C++ g^[W Javascript/Java-Applet @e
            ݤ
          + GNU C++ [ QtEZ  QT
          + GNU C++ [ Lesstif  MotifC
       
   ٦LuXPostgreSQL o檩 (distribution) @ӦWpgTcl
    Tcl/Tk {wCTcl/Tk @ӦW SpecTcl X}oҡC
   
     * Lesstif Motif u
       [81]ftp://ftp.redhat.com/pub/contrib/i386/lesstif*.rpm
     * Vibe Java/C++ b [82]http://www.LinuxMall.com/products/00487.html
     * JccWarrior [83]ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm
     * Tcl/Tk [84]http://www.scriptics.com
     * W INCR  Tcl ɦV [85]http://www.tcltk.com
     * Visual TCL  [86]http://www.neuron.com
     * Visual TCL Redhat rpm b
       [87]ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm
     * [88]http://sunscript.sun.com/
     * [89]http://sunscript.sun.com/TclTkCore/
     * [90]ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z
     * Java FreeBuilder
       [91]ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm
     * SpecTCL [92]ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm
     * PostgreSQL  Java RAD u Kanchenjunga
       [93]http://www.man.ac.uk/~whaley/kj/kanch.html
     * Applixware u [94]http://www.redhat.com ]ĶJRedhat w
       Applix ~C^
     * XWPE X Window Programming Environment
       [95]http://www.identicalsoftware.com/xwpe/ 
       [96]ftp://ftp.rpi.edu/~payned/xwpe
       [97]ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm
     * XWB X Window Work Bench
       [98]ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm
     * NEdit [99]ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm
       
   A]ib 95 ϥ Borland C++ BuilderBDelphiBBorland JBuilderB
   PowerBuilder g ODBC/JDBC Xʵ{s unix q PostgreSQLC
   
12. PostgreSQL Xʵ{

12.1 PostgreSQL  ODBC Xʵ{

   ODBC NѷLnwOpen DataBase ConnectivityC OqPtӪ
   PƮwsƪy椶Cϥ ODBC Xʵ{gnOҥiΩ
   PƮwAp PostgreSQLBOracleBSybase M Informix C
   
     * [100]PostODBC wg]Abo檩CаѾ\D
       [101]http://www.postgresql.orgC w]Ab PostgreSQL ФC
     * b [102]http://www.iodbc.org }lX ODBC MסC
     * [103]http://www.openlinksw.com Open Link Software Corporation 
       PostgreSQL MLƮw ODBC Xʵ{Co]eXKO ODBC (WB
       ^C
     * Insight  PostgreSQL ODBC
       [104]http://www.insightdist.com/psqlodbc oO PostODBC xC
     * FreeODBC M [105]http://www.ids.net/~bjepson/freeODBC/CoO@
       KO ODBCC
     * PostgreSQL  ODBC 32 Explorer [106]http://members.nbci.com/anhr
       
12.2 PostgreSQL  UDBC Xʵ{

   UDBC O@ؿWߩXʵ{޲z (driver managers) M DLL 䴩RA
   ODBC AΨӪƮwsOOJγn󤤡C
     * [107]http://www.openlinksw.com Open Link Software Corporation X
       PostgreSQL MLƮw UDBC Xʵ{COpen Link ]eXKO
       UDBC (WB^C
       
12.3 PostgreSQL  JDBC Xʵ{

   JDBC NJava DataBase ConnectivityCJava O@ت@ (Sun
   Microsystems) Ҷ}oWߩ󥭥x{yCJava {]pvQyϥ
   JDBC ӼgƮw{AHWj{bPƮwAp PostgreSQLBOracle
   BInformix ӯOCpGAg Java {AAibHUo
   PostgreSQL  JDBC Xʵ{C
   
   JDBC Xʵ{w]Ab PostgreSQL o檩 postgresql-jdbc*.rpm M
   C
   
     * [108]http://www.demon.co.uk/finder/postgres/index.html @ Java 
       PostgreSQL s
     * [109]ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz
     * [110]http://www.openlinksw.com Open Link Software Corporation X
       PostgreSQL MLƮw JDBC Xʵ{COpen Link ]eXKO
       JDBC (WB^C
     * JDBC ^ [111]http://www.retep.org.uk/postgres
     * JDBC FAQ  [112]http://eagle.eku.edu/tools/jdbc/faq.html
       
   JDBC BɤީM FAQ bJ
     * JDBC HOME [113]http://splash.javasoft.com/jdbc
     * JDBC ɤ
       [114]http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc
     * JDBC FAQ [115]http://javanese.yoyoweb.com/JDBC/FAQ.txt
       
   аѦ [116] Java  @`C
   
12.4 PostgreSQL  Java

   Java {]pv|ıooǹL̫ܦΡC
     * [117]ftp://ftp.redhat.com/pub/contrib/i386 
       postgresql-jdbc-*.rpm
     * [118]http://www.blackdown.org
       
   аѦ [119] Java  @`C
   
13. PostgreSQL  Perl Ʈw (Database Interface, DBI)

13.1 PostgreSQL  PERL 

   PERL OPractical Exptraction and Report Language²gC @WҦn
   w󥭥xiϥ PerlCAҦb 95/NTBīG iMacBҦ Unix
   ]SolarisBHPUXBAIXBLinuxBIrixBSCO ^Bjq MVSBୱ
   OS/2BOS/400BAmdahl UTS MLܦhqCPerl ƦܥibܦhyM
   Hާ@tΩMwIIҥHAbݨ Perl b@Өuާ@tΤW
   ɡAjpǡCAiHQ Perl ϥΪ̩M}oHƶqCMC
   yۦAPerl wܪةRAӦbӼƤd~jDIPerl t
    Java ֤QAɬƦܤC֡CJava O@ӫD`tΡAJ
   ASĶAϱoD`wCBíwMiaC Perl h²BֳtA
   OɦVC
   
   PostgreSQL  Perl w]Ab PostgreSQL wˮM󤤡CаѬ
   src/pgsql_perl5 ؿC
     * Pgsql_perl5 qlpa}J [120]E.Mergl@bawue.de
     * Perl  [121]http://www.perl.com/perl/index.html
     * Perl ɤޡAЦb [122]http://reference.perl.com/ Ѭݾɤޥؿ
     * Perl FAQ b
       [123]http://www.yahoo.com/Computers_and_Internet/Programming_Langu
       ages/Perl/
     * q [124]http://www.perl.com/CPAN/modules/by-module/CPAN oҦ
       Perl ҲդAU/usr/bin/cpanBman CPANMƥHdpҲ
       [125]http://www.perl.com/CPAN-local/modules/by-moduleC
     * Perl GUI ϥΪ̤ Perl-Qt rpmJ
       [126]ftp://ftp.redhat.com/pub/contrib/i386 ]Ь
       PerlQt-1.06-1.i386.rpm
     * Perl GUI ϥΪ̤ Perl-QtJ
       [127]http://www.accessone.com/~jql/perlqt.html
     * Perl GUI ϥΪ̤ Perl-XFormsJ
       [128]ftp://ftp.redhat.com/pub/contrib/i386AM
       Xforms4Perl-0.8.4-1.i386.rpm
     * Perl GUI ϥΪ̤ Perl-TkJ
       [129]ftp://ftp.redhat.com/pub/contrib/i386
     * Perl GUI kitsJ [130]http://reference.perl.com/query.cgi?ui
     * Perl ƮwJ
       [131]http://reference.perl.com/query.cgi?database
     * Perl  "C" ½ĶuJ
       [132]http://www.perl.com/CPAN-local/modules/by-module/B/ M
       Compiler-a3.tar.gz
     *  Perl sĶiɡCPerl2Exe O@ӥi perl ROZରi
       OCuC [133]http://www.indigostar.com/perl2exe.htm
     * Bourne shell  Perl ½ĶuJ
       [134]http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.g
       z
     * awk ର perl  a2p M sed ର perl  s2p w]Ab PERL GC
     * ]Ь comp.lang.perl.*  PERL sD
       
13.2 Perl Ʈw DBI

   DBIH
  
   Perl Ʈw]DBI^O Perl y@ӸƮwsε{]API^
   CPerl DBI API WwqF@ըơBܼƩMDҡAHѤ@Ӥ@PӿWߩ
   کҥθƮwC ƮwXʵ{]Perl DBI^o_H@wƶqӷ~
   ƮwwзǡA ҥHAuݪܤ֤uҫKiq Oracle  PostgreSQL
   C
   
  PostgreSQL  DBD Xʵ{
  
   bAw DBD PostgreSQL ]Xʵ{^eAAnw DBIAqHUao
   DBI Xʵ{J
     * q [135]http://www.perl.com/CPAN/modules/by-module/CPAN oҦ
       Perl ҲդA/usr/bin/cpanBman CPANMƥHdpҲ
       [136]http://www.perl.com/CPAN-local/modules/by-moduleC
     * DBI Ҳ [137]http://www.perl.com/CPAN-local/modules/by-module/DBI
     * DBI Ҳ [138]http://www.symbolstone.org/technology/perl/DBI
     * DBI FAQ
       [139]http://www.symbolstone.org/technology/perl/DBI/doc/faq.html
     * Perl DBI ѦҤ
       [140]http://www.symbolstone.org/technology/perl/DBI
     * DBI qH׾ [141]http://www.fugue.com/dbi
     * Perl ƮwѦҤ
       [142]http://www.perl.com/reference/query.cgi?section=database
     * U DBI rpm ]`NJiOª^
       [143]http://rpmfind.net/linux/rpm2html/search.php?query=DBI
       
   bo DBD-Pg
     * q [144]http://www.perl.com/CPAN/modules/by-module/CPAN oҦ
       Perl ҲդA/usr/bin/cpanBman CPANMƥHdpҲ
       [145]http://www.perl.com/CPAN-local/modules/by-moduleC
     * DBD Ҳ [146]http://www.perl.com/CPAN-local/modules/by-module/DBD
       A DBD-pg ɩ [147]DBDC
     * Comprehensive Perl Archive Network CPAN
       [148]http://www.perl.com/CPAN boBDatabase]b Search l
       W^A GosC
     * wsĶF NT/2000 Mib
       [149]http://www.edmund-mergl.de/export/DBD-Pg.zip o
     * U DBD rpm ]`NJiOª^
       [150]http://rpmfind.net/linux/rpm2html/search.php?query=DBD
     * Perl Ҳա]ƥHdp^
       [151]http://www.perl.com/CPAN-local/modules/by-moduleC
       
  DBI ޳N䴩
  
     * бNNο~isP perl -v M perl -V XBPostgreSQL 
       BDBD-pg BDBI H [152]E.Mergl@bawue.de
       
  DBI 
  
   o̦@ DBI ƨӷC
   
   POD J POD OOJ perl {ΥHY{X@qA
   ΥH{]pvMҲժήaѦΪơCDBI MXʵ{ POD V
   VyAn\ŪAШϥΥHUOC
     _________________________________________________________________
   
DBI W檺 PO iΥHUO\Ū
        $ perldoc DBI

ϥεX DBD::Oracle  Oraperl hHiΥHUO\Ūp Oraperl
sg{J
        $ perldoc Oraperl

DBD::mSQL ҲժήaiyHUO\Ū@ǸXʵ{Wa (private
functions) MS\઺ơJ
        $ perldoc DBD::mSQL

POD 󤤤]]t`DCn\ŪܽпJJ
        $ perldoc DBI::FAQ

POD @ơXp󼶼g PODAξ骺 POD ǡAiyHUO\ŪJ
        $ perldoc perlpod
     _________________________________________________________________
   
   wˤF Tk Ҳժήai|@ӦW tkpodAϥ Tk  POD \Ū
   C| POD sƨ@ӤKΥi\ŪΦC
   
   ]Ьݬ
     * Ӧ DBI qH׾ª
       [153]http://www.symbolstone.org/technology/perl/DBI/tidbits
     * DBI Perl Journal  [154]http://www.tpj.com
     * DBperlo峹b@EE~Q@몺Dr. Dobbs JournaloC
     * The Perl5 Database InterfaceA@ Alligator Descartes gA
        O'Reilly and Associates XѡC
       
   ήaiѥ[qH׾¬J
     * qH׾ [155]http://www.fugue.com/dbi
     * dbi-announce ql [156]dbi-announce-request@fugue.com H
       'subscribe' 夺e
     * dbi-dev }oHM Email: [157]dbi-dev-request@fugue.com H
       'subscribe' 夺e
     * dbi-users @Q Email: [158]dbi-users-request@fugue.com H
       'subscribe' 夺e
     * qHsw
       [159]http://outside.organic.com/mail-archives/dbi-users/
     * ڬwqHsw
       [160]http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Int
       erest
       
   95/NT S DBI 䴩H
  
   DBI M DBD::Oracle  Win32 w DBI зǳC]A DBI
   0.81 ӷ|`B@CzL ODBCAAiHsLn Access M
   SQL-Server ƮwCb DBI-0.79]ΥH^@ Win32::ODBC DBI hC
   W DBI::W32ODBCCAݭnϥ Win32::odbc ҲաC
     * Win32 DBI [161]http://www.symbolstone.org/technology/perl/DBI
     * Win32 ODBC [162]http://www.roth.net
     * Ln SQL server  Perl 
       [163]http://www.algonet.se/~sommar/mssql
       
  ӷ~䴩ΰVm
  
   PERL CLINIC : Perl Clinic HXΦ PerlBDBIBDBD::Oracle M
   Oraperl Ѱӷ~䴩CoǤ䴩O DBI @ Tim Bunce u@qѪ
   CԱAЬݡJ
     * 䴩 [164]http://www.perlclinic.com
     * 䴩 [165]http://www.perldirect.com
     * V [166]http://www.westlake.com/training
       
13.3  Perl 

   аѾ\ [167] PerlXPostgreSQL @`
   
14. PostgreSQL ޲zu

14.1 PGACCESS - ޲z PostgreSQL  GUI u

   PgAccess O PostgreSQL  Tcl/Tk Cwg]Ab PostgreSQL oM
   󤤡CAiQqoXSsJ
     * [168]http://www.flex.ro/pgaccess
     * pNB}ĳAqlJ [169]teo@flex.ro
       
   pgaccess Ϊk
     _________________________________________________________________
   
# man xhost
# xhost +
# su - postgres
bash$ man pgaccess
bash$ export DISPLAY=<DW>:0.0
bash$ pgaccess mydatabase
     _________________________________________________________________
   
   PgAccess S
   
   PgAccess XMain window, Table builder, Table(query) view, Visual
   query builder.
   
   Tables
     * }Ҫ (tables) d\A̦hGʭӬ]ib perferences ^
     * y즲u (grid line) jp]bCŶ (table space) i
       bCؿ (table header) n^
     * 椤۰ʴXCӪ檺tmWxs
     * פJ/ץXLɮ׮榡]SDFBCSV^
     * Lo\]Jp price>3.14 Lo^
     * Ƨǥ\]ۦJݱƧǪ^
     * Ys
     * }F沣ͧUz (table generator assistant)
     * }Fs
       
   Queries
     * wqBsMxsήawqdߡ(user defined queries)
     * dxs@[ (views)
     * dߪ
     * [ select ΦdߵG
     * RMdߦW
     * 즲MU\઺ Visual query builderCpGAw Netscape
       Navigator  Tcl/Tk AAibݨ쥦u@J ]ĶJbHI
       ^
       
   ǦC (sequence)
     * wqBRMˬdǦC
       
    (Function)
     * ϥ SQL ywqBˬdMR
       
   Nٷ|HUi
     * ]p]W[BW^
     * Ʃwq
     * i;
     * 򥻪ROZsg\
       
    LIBGTCL 
   
   A|Ψ PostgreSQL  Tcl {w libpgtclAҿת Tcl/Tk i
   JҲաClibpgtcl MlX PostgreSQL  /src/interfaces/libpgtcl
   ؿCSwӻAAݭn@ӥib Tcl/TkJ libpgtcl {wC޳NW
   ӻAMq PostgreSQL iJتɨäۦPA] libpgtcl O@
   ت (object files) XCoɮצb Linux W libpgtcl.soCAibH
   W}U@Ӭ Linux i386 tιwsĶFCuݧoɮ׫t
   ε{wؿ]/usr/lib^ YiCpA䤤@ӸѨMkORlX
   J libpgtcl.so @yMϥ pgwish] wishpg^ӸJ
   pgaccess.tclAӫD wishA]o wish w쵲 libpgtcl 禡wC
   
   pGAbsĶ pgaccess ؿɹJ crypt not found DAШϥ
   -lcryptC
   
14.2 PostgreSQL ϫdߤu GtkSQL

   GtkSQL O@ӹϫdߤu] PostgreSQL  psql^CH GNU GPL o
   Cϥ Gtk+ 1.2.3 M PostgreSQL 6.3 }oӦC
   
   GtkSQL D [170]http://gtksql.sourceforge.netC
   
   DnS]AJ
    1. h SQL Ȧs
    2. SQL rBW٩M۰ʧ
    3. ²ܪwq
    4. PostgreSQL M MySQL 䴩]ӥBe[WLƮw^
       
   GtkSQL ثe v. 0.3CAib
   [171]https://sourceforge.net/project/?form_grp=533 UlXC
   
14.3  PostgreSQL ʦdߤu]WISQL  MPSQL^

   MPSQL ѵϥΪ̤@ӹϹ SQL  PostgreSQLCMPSQL P Oracle 
   SQL Worksheet ηLn SQL Server dߤu WISQL C@Ӻ}G
   GUI MOOCA]iHŤUζKWC٦LUͲO\C
     * [172]http://www.troubador.com/~keidav/index.html
     * qlJ [173]keidav@whidbey.com
     * [174]http://www.ucolick.org/~de/ b tcl_syb/wisql.html ɤ
     * [175]http://www.troubador.com/~keidav/index.html
     * qlJ [176]de@ucolick.org
       
14.4 W PSQL  PostgreSQL ʦdߤu]ISQL^

   ISQL OѤrO׺ݾϥΪCow]Abo檩AW psqlCM
   Sybase ISQLBOracle SQLplus QۦCb Unix OܿJpsql|X
   { psql> ܡC
   
bash# su - postgres
bash$ man psql
bash$ psql mydatabase
 \h H\ŪODUT

   D`ϥΪ̤͵MΡC ib~ةROZ (shell script) ϥΡC
   
14.5 MPMGRXPostgreSQL Ʈw޲zu

   MPMGR  PostgreSQL OѤ@ӹϹ޲zCAibHUa쥦J
     * [177]http://www.mutinybaysoftware.com/
     * Email: [178]keidav@mutinybaysoftware.com
     * [179]http://www.troubador.com/~keidav/index.html
     * qlJ [180]keidav@whidbey.com
     * [181]http://www.ucolick.org/~de in file tcl_syb/wisql.html
     * PostgreSQL  WISQL [182]http://www.ucolick.org/~de/Tcl/pictures
     * qlJ [183]de@ucolick.org
       
14.6 PgAdminBPhpPgAdmin u

     *  95/NT  PgAdmin u  95/NT  PostgreSQL Ʈw]pu
       [184]http://www.pgadmin.freeserve.co.uk
     * WB@޲zuXPostgreSQL Ϊ PhpPgAdmin b
       [185]http://www.phpwizard.net/projects/phpPgAdmin
       
14.7 PgBash - SQL shell u

   PgBash \ psqlCӥBAPgBash ϥ bash N (alias)BơB
   vsгyX@Fʾާ@ҡAѦΪ\C
   
   PgBash Db
   [186]http://www.psn.co.jp/PostgreSQL/pgbash/index-e.html
   
   PgBash O@ӥ]A PostgreSQL SQLΡOJ SQL ("direct SQL"
   or the "embedded SQL")  shellAy} bash]ثe̷s 2.03
   ^shell ӨӡCPgBash iΧ@nJ shellBsub-shell]q shell Ұʪ
   shell) M shell {C
   
   bA SQL ⵲GXзǿXOCӴOJ SQL ⴣ
   XӪG]w shell ܼƪOC̫hAg shell ROZ (script) y
   BzC
   
   SQL yy]HƧ@r^Q@@ shell OBzAڭ̥iH
   SQL yyåΩ޹D (pipeline)BVMIu@ﶵC~Aϥ exec_sql
   OAڭ̥iΤPﶵӰ SQL yyCڰ SQL ҤlpUC
     _________________________________________________________________
   
prompt> /usr/local/bin/pgbash                KKҰ pgbash
pgbash> connect to db2@xxx.com user sakaida; KKsƮw
pgbash> select * from test limit 100; | more KKϥκ޹D
pgbash> select * from test; > /tmp/sel.dat & KKϥΧVMIu@
pgbash> addr='Osaka'
pgbash> insert into test values(
>  111,'name',                               KKiH
> '$addr'                                    KKϥ shell ܼ
> );
pgbash> connect to db3@yyy.com user postgres;
pgbash> set connection db2;                  KKثeƮwאּ db2
pgbash> select * from test;                  KK db2  test 
pgbash> exec_sql -d db3 "select * from test3"KKs db3
pgbash> ls
pgbash> begin;
pgbash> declare cur cursor for select * from test;
pgbash> fetch in cur into :AA,:BB;           KK]w shell ܼ
pgbash> echo "AA=$AA, BB=$BB"
pgbash> end;
pgbash> fc fetch                             KKsvM
pgbash> !echo                                KKA echo
pgbash> disconnect all                       KKҦs
pgbash> exit                                 KK pgbash
     _________________________________________________________________
   
14.8 PostgreSQL  Webmin u

   webmin u]zLiHOOwӺ޲z Unix q^̷s]0.82 
   ^@ PostgreSQL ҲաCAiϥγoҲըӷsWΤBsաBƮwB
   A]id\C
   
   Aib [187]http://www.webmin.com/webmin  webminC
   
15. PostgreSQL ΪBz

   Ѿ\ [188]http://metalab.unc.edu/LDP/HOWTO/CPU-Design-HOWTO.html H
   oiΩ PostgreSQL BzWA]|ѦBz
   C
   
   HUBz (CPUs)]32 줸M 64 줸^i PostgreSQLC̳B
   LinuxC
     * BzDOJGoogle jM CPU 
       Computers>Hardware>Components>Microprocessors
       [189]http://directory.google.com/Top/Computers/Hardware/Components
       /Microprocessors
       
   HU GNU/GPL }lXBzWJ
     * }lXBzXGoogle jM "Computers>Hardware>Open Source"
       [190]http://directory.google.com/Top/Computers/Hardware/Open_Sourc
       e
     * OpenRISC 1000 Free 32-bit Bz IP ֤ߡAPM_ ARM M MIPS v
       A [191]http://www.opencores.org/cores/or1k
     * OpenRISC 2000  [192]http://www.opencores.org
     * ڬwӪ`p ESA-32bit M ESA-64bit BzLEONSparc
       [193]http://www.estec.esa.nl/wsmwww/leon
     * GNU/GPL Freedom 64-bit F-CPU [194]http://www.f-cpu.org 
       [195]http://f-cpu.tux.org Mgx [196]http://www.f-cpu.de
     * STM 32 줸AVW¶q (2-way superscalar) RISC Bz
       [197]http://www.asahi-net.or.jp/~uf8e-itu
     * H Verilog  VRML gKOLBzM DSP IP ֤
       [198]http://www.cmosexod.com
     * i϶}o[֪KOw֤
       [199]http://www.scrap.de/html/opencore.htm
     * Opencores orgX}lXBۥ IP core
       [200]http://www.opencores.org
     * Linux }wMKO EDA t [201]http://opencollector.org
     * ARM Bz [202]http://www.arm.com/Documentation
     * Cogent Bz [203]http://www.cogcomp.com
       
   HUӷ~BzWJ
     * Xù E2k 64-bit CPU]ܧ֪BzIII^ J
       [204]http://www.elbrus.ru/roadmap/e2k.html Elbrus wM@Lt
       εX@C
     * TP (Samsung) 64 줸BzAӦ DEC AlphaC
       [205]http://www.samsungsemi.com Alpha-64bit Bzb
       [206]http://www.alpha-processor.com TPMꪺ Compaq X@}o
       Alpha BzC
     * ^S (Intel) IA 64 [207]http://developer.intel.com/design/ia-64
     * F (Transmeta) crusoe BzAM[NӪF 64 줸Bz
       C [208]http://www.transmeta.com
     * Sun Ultra-sparc 64 줸Bz [209]http://www.sun.com 
       [210]http://www.sunmicrosystems.com
     * MIPS@RISC Bz [211]http://www.mips.com
     * SGI Graphics MIPS Architecture Bz
       [212]http://www.sgi.com/processors
     * IDT MIPS Architecture Bz [213]http://www.idt.com
     * IBM Power PC]ùԡ^
       [214]http://www.motorola.com/SPS/PowerPC/index.html
     * ùԴOJBzCھ PowerPCBM-COREBColdFireBM68k 
       M68HC ֤ [215]http://www.mot-sps.com
     * M68k  M68K ֤ [216]http://www.mot-sps.com
     *  SuperH 64-bit RISC Bz SH7750 [217]http://www.hitachi.com
       pG@R@UӡACӥu|QC
     * Fujitsu 64-bit Bz [218]http://www.fujitsu.com
     * HAL (California) Super-Sparc 64-bit Bz [219]http://www.hal.com
       ]M Sun  sparc cۮeC
     * Pyramid Technologies  Seimens Pyramid Bz
     * Intel X86 tC 32-bit BzAbˡBɴC
     * AMDs X86 tC 32-bit BzAK-6BAthlon C
     * National's Cyrix X86 Bz 32-bit CPUs Cyrix C
     * La]xWBA饻^LBzHHЧiDڡKK
       
   LnBzX
     * ܥ|pɥyBzsD
       [220]http://www.newsnow.co.uk/cgi/NewsNow/NewsLink.htm?Theme=Proce
       ssors
     * qcڦ [221]http://www.cs.wisc.edu/~arch/www
     * ARM Bz [222]http://www.arm.com/Documentation
     * jBz [223]http://www.cs.uregina.ca/~bayko/cpu.html
     * Microdesign 귽 [224]http://www.mdronline.com
       
16. uϥΤ@ܾ (monitor) ӳ]whx PostgreSQL q

   pGAQw󪺿ܾAAiϥ VNC (Vitual Network Computing)
   ޳NAӦ۹qT~H AT & TC VNC O GPL AO@ӦۥѳnCy VNCA
   Aib@ӨSܾq PostgreSQL {AӦbݹqܾ
   ܥXӡIILAǹqH Ethernet dsCVNC ib
   [225]http://www.uk.research.att.com/vnc C]ĶJVNC Oϥ
   TCP/IPAzפWun IP a}KibݹqsA@wn EthernetCL
   tץiܺCC^
   
   Ai|_hxqDΥuΤ@ܾAӥΤ@ KWM]LBvBܾ
   ^ (Keyborad, Video, Monitor) ]ĶJM O_ƹH^ܾӿܩ
   ιqC o`٦aAֲVáA]`ܾBLMƹ]C`
   100  500 ^C
   
   yۿܾAAi|hx PostgreSQL A]}oBաBͲ^Bp
   AB ftp ABpABqlABsDAb@ӤjdCo
   ܾ]i 95/NT M OS/2 qC
   
   ЬdݤUC}J
     * DataComm Warehouse IncAq 1-800-328-2261CL̴ѩҦ~تq
       w [226]http://www.warehouse.com 4  KVM ܾ (PS/2) j
       $89.99C Part No. DDS1354
     * Network Technologies Inc
       [227]http://www.networktechinc.com/servswt.html (120 /PC 8 )
       M椤]A 'Server Switches' M 'Video only switches'
     * Scene Double Inc, ^
       [228]http://www.scene.demon.co.uk/qswitch.htm
     * Cybex corporation [229]http://www.cybex.com
     * Raritan Inc [230]http://www.raritan.com
     * RealStar Solutions Inc [231]http://www.real-star.com/kvm.htm
     * Belkin Inc [232]http://www.belkin.com
     * Better Box Communications Ltd.
       [233]http://www.betterbox.com/info.html
     * 񪺵wӾQdߡServer Switchκ١KVM Auto SwitchesC
       
   b yahoo jMXhServer SwitchesΡKVM Switchesq
   C
   
   C PostgreSQL ƮwA̦nΤ@MΪ unix qAHWj{C
   L{/{nboqWC \ŪAҦa誺ӷ~X
   ǰӾQ Intel qM 13 Tù]QGyù^CAuݭnw
   AӤݷLn / DOSCƮwAݭnmܾA]Aib@
   m⪺ӤHqW޲zC
   
   AibWөRªqwCAibW椤nC
     * WөP [234]http://www.egghead.com
     * Wө [235]http://www.buy.com
     *  [236]http://www.ubid.com
       
   bHUao RedHat]ΨLo檩^Linux СJ
     * Linux System Labs }J [237]http://www.lsl.com/ 7 
     * Cheap Bytes Inc }J [238]http://www.cheapbytes.com/ 7 
       
   TOAʶRwQ RedHat Linux 䴩CʶReb RedHat  ftp X
   ˪wAp SCSI tMܥdCΤjʬKio@xjl
   Intel qA RedHat Linux Ӱ PostgreSQLCq 95BOS/2BUnix
   MotifBs]p RedbaronBOperaBNetscape ΨLܦhӡ^g
   odbc/jdbc/perl/tcl ӳs PostgreSQLC]stзǪ GUI Ȥ
   (client)C^
   
   ϥ KWM ܾAAiuΤ@ܾM@LӱhxDC
   
17. PostgreSQL Uε{A

   ε{AiM PostgreSQL X@A}lX٬Oӷ~C 
   W}lXUε{AH Perl ¦ SmartWorkerBWIRM
   B VelocigenBEnhydra]Java^M Zope]Python^Aӷ~h IBM
   WebsphereBBEA WeblogicC
   
   ĳAϥΫOwUAp Apache + mod_ssl + OpenSSLCb
   [239]http://www.c2.net/products/sh3 Ѿ\ Redhat StrongHold OwA
   ơC
   
   Uε{AiHҤ䴩{yC AϥΤ@ӥHA̳w
   y¦Uε{AC
   
   Uε{ApUJ
     * H PERL y¦
     * H PHP y¦]M PERL ۦA]I Java^
     * H Python y¦]ɦVROZy^
     * H Java y¦]Sun Microsystems Java^
     * H Tcl y¦]Tcl/TKX٬TickleROZy
     * H C++ y¦]C++ M CORBA^
       
17.1 PERL Uε{A

   MCyۦAPerl ywܪةRAӥB Perl bӤ@qܪɶ
   |QsxΡIbYǾާ@WAPerl  Java ֤T] Java bYǾާ@W]
    Perl ֡^C Java O@ӫD`tΡAJASĶA
   oD`wCBíwMiaC Perl h²BֳtAOɦVC
   
   ~APerl {iasĶAHi@B}{Cϥ Perl2Exe oӫOC
   uӧ perl ROZରi
   [240]http://www.indigostar.com/perl2exe.htmC
   
   PERL iϥΥHUUε{A
     * Mason [241]http://www.masonhq.com O@ӥ\jlAH Perl ¦
       }oMǰeCϥ MasonAAibA HTML OJ Perl XAS
       iۦ@ɡBiΪإߺC
     * BingoX [242]http://opensource.cnation.com/projects/BingoX O@Ӷ}
       lXBɦVUά[cA mod_perl sgAHjT֫
       ߤjʺABƮwXʪMε{һݮɶC
       SmartWorkder O Perl OXAe\AUε{u
       ε{A ӤO HTML ˥HNOJ{XC SmartWorker
       [243]http://www.smartworker.org
     * Apache-Perl Xp mod_perl ϱoH Perl g Apache Ҳզi
       CӥBAOJA[Ķ (persistent interpreter) קKF
       Ұʥ~Ķ·ЩM Perl ҰʮɶC Ѿ\
       [244]http://perl.apache.org M
       [245]http://modperl.sourcegarden.org  mod_perl_garden pC
     * Apache::ASP [246]http://www.apache-asp.org  Active Server Pages
       Ө Apache UAAϥ Perl @DROZy
       CApache::ASP e\}oHгy]A`޲z (session management) \
       MOJ Perl XʺAWε{Ct~A ٦ܦhjl\
       A]A XML tablibsBXSLT { (XSLT rendering)B٦b쥻 ASP
       API sƥC
     * WIRM]Web Interface Repository Manager^O@ӥH Perl ¦
       {AAѤ@Ӱs{ҥH}oWTt (web
       information systems)CWIRM ]A@ӪpƮwM@MΧ@ı
       (visualizing)BXMR (heterogeneous) hCƪ Perl 
       CWIRM ѤuhCƮw͹鷺eӷP[
       (context-sensitive views)A ϶}oHiHֳt}obeMF覡
       APήaAC Ѿ\ [247]http://www.wirm.org
     * EmbPerl [248]http://perl.apache.org/embperl Aib HTML 󤤴O
       J Perl {XCϥ Perl ܧAiϥΤ@غߪwsyAb WWW 
       wsxQΡCA]iμƥHʭpgn Perl ҲաX]A DBIXӦs
       VӶVhƮwtΡC
     * ePerl [249]http://www.engelschall.com/sw/eperl Ķ@ӥ[WF Perl
       5 { ASCII ɡAuBz Perl 5 {XӤz| ASCII ƾڡCi
       ΤPkB@J@@ӿWߪ Unix oΧ Perl 5 ҲվX@
       ɮײͤu@Ai@@رjlUAROZyA ӲͰ
       A HTML C
     * XPP [250]http://opensource.cnation.com/projects/XPP NXPP
       Parses PerlΡXPML Page ParserAO@ӧֳtݦĪ HTML R
       AiRW XPML ʺA HTML OJF perlM HTML 
       C
     * GamlaX@ӥH Perl ¦ RAD Mε{ACgamla pت
       Oгy@ε{ֳt}o]RAD^uM@ӥH Perl ¦U
       ε{ACҦ Gamla pͪ{X|b (public
       domain) C Gamla b [251]http://gamla.iglu.org.il
     * AxKit [252]http://www.axkit.org O@ Apache]M mod_perl^M XML
       ε{ACYɧ XML ഫ榡Ap HTMLBWAP ί¤
       rC ഫL{iϥ W3C зǧަҡAΦۦ]p{XCAxKit ]ϥ
       m Perl ĶӴѦӱjlަҧ@ XML ഫΡC AxKit j
       ժO⤺eMFk}CAxKit ޽u (pipelining) ޥe\e
       Pqഫi{榡Ae\xHP覡ݨƾڡC
       AxKit e\]pO]pAe}o̯º鬰eu@A
       Ӻ޲z]bjɨүC
       
   Perl ӷ~UA
     * Zelerate AllCommerce
       [253]http://www.zelerate.org/html/eng/home.shtml O@Ӱӷ~BeB
       ȤMY޲ztΡCoӰ{Biipε{H Perl g
       AΥΤF@ӫݸƮwC
     * VelociGen A XMLBƮwΧYɰe쪺ʺAeAtשMRA HTML @
       ˡXF CGI QAӧAݭקAε{CVelociGen ]ǦA
        XML ҡBN~O@ (crash protection) MhqtšA
       }o²C VelociGen ia[J󥭥xWUAA
       WjA{M[֥HʺAeDɪCVelociGen iP
       BzjqnDA Java Servlets ֤QΤ Cold Fusion ֥|C
       Velocigen [254]http://www.binevolve.com/velocigen
       
17.2 PHP Uε{A

   PHP iΥHUUε{A
     * Midgard PHP Uε{AH PHP ROZy¦A PHP 
       淥ֳtX Java ֡CMidgrad D
       [255]http://www.midgard-project.orgCPHP i Zend sĶ[uƾsĶ
       [256]http://www.zend.comCPHP oܧ֡Aӳtפ Java ֤ܤQ
       C Ѿ\ [257]Midgard w M PHP HOWTO
       [258]http://www.linuxdoc.org/HOWTO/PHP-HOWTO.html
     * Ariadne [259]http://www.muze.nl/software/ariadne O@ӸUΨt
       ΡC ]t@ӧ㪺[cA PHP Pa}oM޲zUε{C
       otΨϥΤ@ӼҲդƪ覡AҦϥΩHC ok
       tΤu@Υ[Ws\aӷjۥѡAӥBݭssgLC
       
17.3 Lutris Corp "Enhydra Enterprise" (Java)

   Enhydra 䴩 PostgreSQL ƮwC
   
   Enhydra O@ӷy檺 Java/XML/J2EE Uε{AA Lutris
   Corporation }oCOy̦n Java/XML Uε{AC䴩
   EJBBServletsBJSPBJNDIBJDBCBJTABCORBABXMLC/RocksBDODS MڤơC
   wܦhڬ Fortune 500 qΡCFrench Telecom @q
   U EnhydraCHʤʯ¥ Java gAi [260]http://www.enhydra.org
   oCEnhydra O@Ӷ}lXMסA Hӷ~Φ Lutris Corp 
   M䴩CаѾ\ [261]http://www.lutris.comC
   
   b [262]PostgreSQL with Enhydra \Ūp]w PostgreSQL M Enhydra 
   ɡA]аѾ\ [263]Setup database with Enhydra HFѦp Enhydra ]w
   ƮwC
   
   Ai Borland  JBuilder M Enhydra X@CJBuilder b
   [264]http://www.inprise.com C
   
   ]Щ
   [265]http://www.linuxdoc.org/HOWTO/Enterprise-Java-for-Linux-HOWTO.htm
   l Ѿ\ Enterprise Java HOWTOC
   
17.4 Zope]Python^

   Python y檺u¡vɦVROZyCZope O@ӸU
   {AAѤF PostgreSQL CZope ib [266]http://www.zope.org
   o Python ib [267]http://www.python.org C
   
17.5 OpenACS]Tcl y^

   OpenACS (Open ArsDigita Community System) [268]http://openacs.org O@
   ӥΨӫإߥiXiBsD (community-oriented) ε{iu
   cC̾a AOLserverA@Ӻ / ε{AAM PostgreSQLA@ӯu
   ŦX ACID  RDBMSC̬OөM}lXvUKOӰ誺~C
   
   ACS  ArsDigita sgA [269]http://www.arsdigita.comA̪ ACS
   (ArsDigita Community System) պɶqWߩƮwAM쥻H Oracle
   ¦]] Open ACS nɶi沾ӡ^C
   
   ]аѾ\ [270]http://www.appserver-zone.comC
   
17.6 C++, CORBA Uε{A

     * PortalSphere Uε{AH C++ gAb Unix]M Linux^
       ̰tשMíw׹BCPortalSphere Yaq CORBA зǡAJ䴩
       Ǫ HTTP qTwM IIOP IIwAHѶWtDqsC M
       ۦWƮwXAoǯS PortalSphere ֦p{qA ӥBWa
       ֦bpW䴩ɨƥ󪺯OC PortalSphere i HTTP/CGI ֤@
       ʭCsjۦWƮwAiiܤ䴩WL@UӥΤs
       C  [271]http://www.portalsphere.com/overview.html F
       PortalSphereC
     * FlashPoint C++BCBPERL Uε{ApثeOb@Ӧhy
       (multi-thread) Ҥ䴩tWε{AȡB䴩h˪}oyA
       ]A C M C++BM䴩bܦh䥦ҤUH檺nu{覡CiM
       Apache @_uAGAݭnAƦܥiNCѾ\
       [272]http://www.bouldersoftware.com/products/flashpoint MU
       [273]FlashPoint Redhat RPM MC
     * "C Server Pages" [274]http://cserverpages.20m.com O@ӦĲvMi
       iε{AAH C++gAϥ֦BzH C++ gA
       MOJFʺA˪OCAiΧAw覡AΨسΡC Ai
        C++ إߦۤvӷ~CAiHOW ORB  CORBA 
       C
       
17.7 Uε{Aؿ

   Ѿ\ [275]Uε{A ؿA@C
   
18. PostgreSQL ε{Mu

18.1 PostgreSQL  4GL UƮw{XAppGEN }ot

   AppGEN ibU
     * [276]http://www.man.ac.uk/~whaley/ag/appgen.html
     * [277]ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN.
       
   AppGEN O@ذĥ|N{yMε{; (application
   generator)AΥHͥHU¦{Coǵ{@bpΤq
   pϥΡC AppGen {HXG Common Gateway Interface (CGI) зǪ C R
   OZ (C scripts) gAjpAi䴩C
   
   nϥ AppGenAAݭnJ
   
   PostgreSQLApƮwt
   
   䴩 CGI pAAp NCSA  HTTPD
   
   @ ANSI C sĶAp GCC
   
   AppGEN ]AHU Unix ]Linux^ i{J
   
     * defgenA|ھ޿Ƶcͤ@Ӱ¦˪O{C oǵ{i[J
       BsBRMMƮwASi۰ʫOѦҾX
       (referential integrity)C
     * appgenAAppGEN sĶ{C| AppGEN {XsĶi CGI
       檺 C lXΥiYɦbWϥ HTML 榡C
     * dbf2sqlA dBase III ۮe .dbf ഫi檺 SQL ROZu
       {Coϱojxsb DOS/ƮwM󪺸ƥiӨ@ SQL
       AAp PostgreSQLC
     * ~AAppGEN F@Ƿ|bϥΪ HTML BGIF ɩM Java
       p{CMApҦnnA]]A㪺{XC
       
   @ Andrew Whaley iHHU~|ĲJ
     * [278]andrew@arthur.smuht.nwest.nhs.uk
       
18.2 PostgreSQL pXDBENGINE

   dbengine O Ingo Ciechowski Ҽg@HYΪ PostgreSQL p
   Cb
     * [279]http://www.cis-computer.com/software/dbengine/ 
       
    DBENGINEJ dbengine OpP Postgres95 AuݪƤ
   A Kis{sƮwC
   
   PHP Ab󤤽sg Perl yAOu PerlAAppGEN M
   WDB-P95 ݭnAC@ӸƮwإ߳]w (configuration files)XXť_
   A AGnǤ@sy (meta language) ~ҥΡC
   
   MLu㤣PAAݭnǥSO{ΩROZyӨϥ dbengineC]
   |CӸƮw]wɪpAҥHAݭn߳oǷscC LAp
   GAQΨ dbengine \Aǲ Perl |O@ӦnDNC
   
   ӨtΥiyBz@Ӫ[Ʈw]wnA |]tpzѧAƮw
   sơCAƦܥiHw갲 (virtual fields)AΥHbܦbù
   e@XYɭpC
   
18.3 PostgreSQL  Apache AҲաXNeoSoft NeoWebScript

   Apache O@ӦWpAC@ PostgreSQL  Apache Ҳզ
   X
     * [280]http://www.neosoft.com/neowebscript/
       
   NeoWebScript O@{e\A⤣P{ת{OJ HTML ɵ{yC
   
   HnD@ӥ]t NeoWebScript  HTML ɡA NeoWebScript 
   AKOJFROZ (script)Aͤ@ӧtۭqeC
   
   NeoWebScript Ob HTML Xsg\jjB A¦ʵ{
   @ӤkAtBwBǡCy NeoWebScriptAYϹsӻAp
    (counter)Bql (email forms)BȡBñWï (guest books)BX
   ܱo²CЬݬ NeoWebScript ۤvBPERL M JavaScript @X
   C
   
   pGAQbApAw NeoWebScriptA A޲zb}le
   \ŪL̪ Sysop FAQCmTheory of Operationsn| NeoWebScript p
   B@AmInstallationn|vBCmManagementn ]wMA
   ƩyAmTestnATw NeoWebScript B@`AmTroubleshootingnM
   ADC
   
   bۤv ISPBpΥ~pϥ NeoWebScript OΥKA A|bnOU
   ɱo짹ӡCLA pGAQ⥦OJۤv~Φbӷ~A]
   p SSL^ϥΡA` 99 C
   
   NeoWebScript O@Ӯe\AbOJ Tcl/Tk y@ROZu㪺
   Apache ҲաC Karl LehenbauerANeoSoft  Chief Technical Officer
   oAå Neosoft {]pvM޳NZsgB}Υ[j\C
   
   Apache O@W̬y檺pAAgլdQKڥPϥΡC
   
   Tcl/Tk O Dr. John Ousterhout }o@رjlBۥѡB󥭥xROZy
   C LLTck/Tke\n}oHϥΥH C  C++ ¦u֤Q
   u@C ]O@ذjy (glue language)Aϱo{s{@
   Pu@B ϹƩMiΩpC
   
   NeoSoft пH Chief Technical OfficerAKarl Lehenbauer b}lɫKw
   ѻP Tcl/Tk }oCL]M Mark Diehkans @_Ч@F Extended TclASW
   TclX  NeoSoft TclAoػy\Cܦh Tcl ֤߫OӦ
   Extended TclAӥ Dr. Ousterhout [J֤߻yC
   
   NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA
   
18.4 HTML Aݩ HEITML M@ PostgreSQL  4GL y

   heitml Ot@ postgres PUCԱAбĲ
   

          Helmut Emmelmann H.E.I. Informationssyteme GmbH
          Wimpfenerstrasse 23 Tel. 49-621-795141
          68259 Mannheim Germany Fax. 49-621-795161

     * Mr.Helmut Emmelmann qla} [281]emmel@h-e-i.de
     * Heitml D [282]http://www.heitml.com
     * Heitml  [283]http://www.h-e-i.deom
       
   Heitml PɬO HTML AݩM@ 4GL yCsgHiH
   HTML  HTML ҽsg{C
   
   Heitml] "Hi"-TML^O HTML Τ@ӥĥ|NyA e\H
   p¦{Q SQL ƮwơAӤݨϥν CGI RO
   ZC
   
   Heitml bAݩ HTMLAʺAa⡧.heiഫ HTML 榡A ϥP
   sݮeC]AjaxBΪ HTML ykA δѤjqw}oF
   ҩM{wH CGI i檺u@C XML Aheitml e\ϥΪ
   ۩wҡCy heitmlAϥΪ̦۩wҥi½Ķ HTML ζǰesC
   
   Heitml PɥH HTML ]p̩MM~{]pvؼСCHTML ]pviϥ
   heitml Ҩӫإ߰ʺAAs SQL ƮwAΫإߧ㪺Uε{
   CpƾB nOƮw (registration databases)BjMBql
   Bh (hierachical menus) iPayۦbjq禡w
   (Component Libraries) wت HTML Ҳ͡C
   
   {]pvӻAheitml b HTML OJF㪺ĥ|N{yA
   

(p <if>, <while>, M <let> )A

   MtơBơBLȡBrM (tuple) FjlBOC 
   ժѦһyk (reference semantics) NɦVyAxsb|
   CHeitml ܼơA]AҦb|ƵcAb Session Mode ib
   PC A]iHۭqҩҼ (environment tags)AƦܭs
   wq HTML ҡC
   
   heitml ϱoHUƱi
   
   XXH㵲cμҲդ (structured and modular) 覡}oAjTC
   @xZC
   
   XX}ozΤʪAeiʺAaAΪ̩һݡC
   
   XXLݳ]p{Ki SQL ƮweAAuݭnϥιw wq
   dbatCҡC
   
   XXϥ Session Variables }oƮwΥؿʪ{C
   
   Heitml ig CGI b Linux pAAӦb Apache i
   ϥ apache API ϱotׯSO֡]קKF CGI u@^CثeA䴩
   mSQL]Ĥ@ΤG^BPostgreSQL]Ĥ^BmySQLB the yard databases
   Cheitml ib LinuxBBSDiBSolaris M SunOS AHΦb NT [W
   CGI M ISAPIBODBCB 95 ϥΡC
   
   heitml]Linux ^sBDӷ~ʩMӤHγ~OKOCӷ~ݪX
   vOC ]եδӥ\৹㪺եΪiKOUC]Ln`NACӧA}
   o.hei |LX@ӰTXODӥΪCnOA|@
   XA ϧAioTӵLݭswˡC^
   
   heitml]Hi-TML^yۥiۦwqҩM㪺{]pOjT
   μWj HTML \CoϰʺAeMƮw{ib HTML @ɤX{A
   ݭn CGI Υ~Zε{yC]NOA@ HTML @̥ibOJ
   ε{C ouݭnϥηsҡAӤ CGI ε{]pCt@譱A i
   ϥΪ̩ε{]pviгyγ]pjlҮwCokϱo heitml  HTML
   sMM~{]pv@ɾAΡCheitml bUAWΰʺAa
   HTMLAҥH heitml MpзǭݮeA]MsݮeC @譱Ϊ
   ѧ㪺Ʈws\At@譱ϥΪ̵Lݲz|󤣥n CGI 
   Cheitml OھڦsĶcyM (transaction) tΪ̷ssG
   }oC
   
   heitml }oL{M HTML @ˡAOϥΤrs边 HTML s边A]
   p`abUAWCLAsi]AʺA heitml ҩMϥ
   ҮwCAiϥγoǼҦsƮwBͰʺAeBHXqlA ƦܥiH}
   ojlε{ApnOƮw (registration database) MʪtΡC
   
   HTML sMM~{]pv@˷|t²a]pε{A
   pڭ̪ñWïAӤݨϥνǪ CGI ROZYCou@u
   ϥ dba ҮwuKiC
   
   heitml ]APҮwAΥHñWïBƮw@{B i
   dߪBjlqlκh (hierarchic menu)CoǤu
   wiϥΡAAuݦbW[WҡC
   
   @@Ӧg窺{]pvAAiϥ heitml [ʺAլ[c
   (persistent dynamic tuple architecture)Jheitml OʺAA
   (dynamic typing)B\઺FpBjƩM״IѼƶǻS⪺R
   ZyA ]yʺAլ[c۰ʫOjp session ơC
   
18.5 PostgreSQL  America On-line AOL UA

   AOLserver 2.3 O@ӧKOӷ~UAAis PostgreSQLC
   ԱAЬ
     * AOL UAD [284]http://www.aolserver.com
     * Philip Greenspun  AOLserver 
       [285]http://photo.net/wtr/aolserver/introduction-1.html
       
   AOLserver O@ӧֳtAhyBz (multithreaded)A䴩 Tcl UA
   C󦹡A٬O@ӥ䴩ƮwU}oxC
   
   ϥ AOLserverAAi (pooled)  PostgreSQL]ML RDBMS^sA
   ѤP (threads) ɡCAOLserver  Tcl M C APIAAi}ojl
   ʺACҦoǪF賣b 1995 ~}lCH APL (AOLserver Public
   License)  GPL vA]OۥѪnC
   
   ӻATcl API ̦ΡCAOLserver @ձjl Tcl IsAҦp
   ns_sendmail]ΨӵoXql^Bns_httpget]ΨӨ^@ URL^
   Bns_schedule]H cron \AΥHƩw{bSwɶ^CA]
   i Tcl API ӻXi AOLserver \CC@ AOLserver A
   i֦pa Tcl ROZ禡wA AOLserver Aåiӵ
   AϥαoC
   
   AiΤTؤk AOLserver }oJ
     *  HMTL
     * .tcl XXYi ns_write IsӶǦ^ HTML  tcl {C
     * .adp XXAOL Dynamic PagesCAH HTML }oAAi <% %>
        <%= %> ӴOJ Tcl XAM PHP  ASP ۦC
       
   M AOLserver O@ӰjpAA֦u}[cA ~b
   󥦳sƮwOCAOLserver ֦ۤvƮwHh (abstraction
   layer)AAݭק{ӳs줣P RDBMSCo RDBMS sO
   (pooled)B (persistent) AѤΪɡC oe\ܧ֪sM
   ĹBθ귽C
   
   AOLserver ֦ҦDn RDBMS Xʵ{JPostgreSQLBOracleBSybaseB
   InformixBIllustraBSolidBInterbase M MySQLC
   
18.6 PostgreSQL  / plܨtε{u

   b
     * [286]http://www.homeport.org/~shevett/pts/
       
18.7  dbase  dbf ഫ PostgreSQL

   dbf2msql {M mSQL  PostgreSQL X@r֡CAibHU
     * [287]ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/
     * [288]ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz
       
   o{ Faculty of Electrical Engineering TU Delft, NL Computer
   Architecture and Digital Technique section  Maarten Boekhold gC
     * [289]M.Boekhold@et.tudelft.nl
       
   A]iϥ python k (method) bŪJ dbf ɤθJ postgres Ʈw
   C
     * See [290]http://www.python.org
       
18.8 Ln MDB Ʈwഫ PostgreSQL

   p MDB Tools O@ը禡wM{AΩLn Access Ʈw
   ]mdb ɡ^ץXܦhΤ᪺ƮwAp OracleBSybaseBDB2BInformix
   BMySQLBPostgreSQL C
     * q [291]http://mdbtools.sourceforge.net o MDB Tools
     * qH׾
       [292]http://lists.sourceforge.net/mailman/listinfo/mdbtools-dev
       
18.9 Zeos Ȥ

   ZeosO@ӥΨӶ}oM޲zƮwε{n󲣫~AΩ}lX
   SQL AXMySQLBPostgreSQL M InterBase
   [293]http://www.zeos.dn.ua/eng/index.html
   
18.10 Java  Report Writer

   Generic Report Writer O@ӥؿXʪisgCOX
   (drag-and-drop) CiΩ PostgreSQLBMySQL M AccessC]ܥii
   ΩLA Type 4 JDBC version 1 Xʵ{ƮwCb
   [294]http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWr
   iter/grwhome.htmlC
   
19. Ʈw]puXY (Entity Relation Tool) u

   "DeZign for databases" (
   [295]http://www.heraut.demon.nl/dezign/index.html) O@ӨϥιY
   Ʈw}ouCHΦ䴩MYƦCA æ۰ʬjy
   沣͸Ʈw (schema)C
   
   DeZign for databasesb]pɨϥΦ۰ʥ~ಾ (automatic foregin
   key migration ?)A\q@Wd䴩޿Mƾڵ (data level)C
   hܳ]w]A/D/s~䪺ݩ/s~䪺ݩʡCDeZign for
   databases ]䴩wq (domain)]Τ۩wƫA^C
   
   DeZign ͪiiN]pH²ƤFΦ椩PŪ޲zhC
   Auݫ@UƹKiͳiBƦr (datadictionaries) MƮwC 
   䴩HUƮwJOracleBInterbaseBIBM DB2BSybaseBLn Access
   (95/97/2000)BLn SQL ServerBParadoxBdBaseBInformixBSQL-Anywhere
   BMySQL M PostgreSQLC
   
   HerautDeZign for databasesb] [296]http://www.heraut.demon.nl^C
   
20. PostgreSQL pƮw]p/uXEARP

     * [297]http://www.oswego.edu/Earp
     * [298]ftp://ftp.oswego.edu pub/unix/earpؿC
       
20.1 EARP OH

   O David Dougherty Easily Adjustable Response ProgramCEARP O@
   ӧQ PostgreSQL ƮwttWƮw]p/IuC\]AJ
   
     * @ӵıƪ]ptΡC
     * @ sendmail C]ioql^
     * @ӼWjFOwC
     * @ cgi Xʵ{C
       
20.2 I

   EARP DnI@Ӧb http ʱ{ (daemon) U檺 CGI GɨӦs
   ƮwACҦ]pu㳣إߦbXʵ{AbWA ASaݭn@
   X]pCǤu㥻ݭn@Ӥ䴩ϹsA ҳ]pXӪWߩs
   gkAӬOھڭӤHncC
   
20.3 pu@H

   EARP 䤤@ӥDnSOϥΪɦVkӲͥΥHsƮw
   html Cj]thӪCCӪ󳣥HYǤu㲣ͤΨo@ӦW
   rA oǪ|Qu (page tool) H@ӥiIs (callable
   sequence) sb@_CibLΡC HTMLBdߡBŪϥ
   ̿JB idߩMJ榡 (Extendable Formatting of Query
   and Input objects)B{sL󪺰򥻤uҦѡC i
   u]AqluMhydߤuC
   
   EARP t@ӯSOiOwChؤks EARP tΪPC
   FiOwAEARP ˬdC@ӳsA HTwCӳsH (ids)
   θs (groups)CPsWߩwqA ̲תզXMwG_s
   EARP @ӯSwC~A IoǫOwSuݤ@Ӥ䴩򥻡]ΧΡ^
   ϥΪ̻{ (user authentication)  http AC
   
20.4 Bo EARPH

   EARP iyΦW (anonymous) ftp oJ
     * [299]ftp://ftp.oswego.edu  'pub/unix/earp' ؿC
       
21. PHP Hypertext PreProcessorXPostgreSQL A html OJROZy

   UuJ
     * [300]http://www.php.net
     * [301]http://www.vex.net/php
       
   PHP ]@ӦW Zend sĶAijTﵽ{CAb}oBթM
   ɨϥ PHP ROZyCǳƦnϥήɨϥ Zend sĶͥit
   檺ɡC
   
   e Professional Home Pages]PHP^Ӳ{b٬ PHP Hypertext
   Pre-Processor
     * ܦhwMgxAW www.COUNTRYCODE.php.net
     * [302]http://www.fe.de.php.net
     * [303]http://www.sk.php.net
     * [304]http://php.iquest.net/
     * DiqlJ [305]rasmus@lerdorf.on.ca
       
   PHP O@ӦA html OJROZyCAbA .HTML ɤ[J²
   ROZA JavaScript CLAM JavaScript PAPHP Wߩs
   CJavaScript O@ثȤݪ html OJROZyA PHP OAݻy
   CPHP M Netscape  LiveWire Pro ~ۦCpGAwֳtsS
   ]A{XۥѳnAAj|w PHP 3C
   
     * 䴩 PostgreSQL {X Adam Sussman g
       [306]asussman@vidya.com
       
21.1 DnS

     * зǪ CGIAFastCGI M Apache Ҳդ䴩X @@ӼзǪ CGI {
       APHP ib Unix pA Unix qWwˡC[W
       s FastCGI зǪ䴩APHP iqotפWﵽC@@ Apache
       ҲաA PHP ܦ CGI {~@ӱjlΧ֦p{qܡC
     * sO (Access Logging)X y PHP s\AΪ̥iۦ@
       RƦr (hit counting) Χ@XCQΨtΤɡA
       ӥBYɺʹsL{CLog Viewer Script ѤFӧOΪ֦̾
       sKnC~A MiQ]wbCͤ@ܦsƪ}C
       N@ӨҤlC
     * s (Access Control)X @ӥHU¦س]weBz
       ]wC Ϊ̥iHYH֦ҦέӧOإ߳WhA֤H
       L˾\ŪC ھڥΪ̪BsBqla}Ʀܨӷ
       (referring document)AiHKXO@BݤBT
       (logging disabled) MLơC
     * PostgreSQL 䴩X Postgres O@ӥiۥ RDBMSCQ PHPAΪ̥i
       b .HTML ɤOJ PostgreSQL uSQL dߡvC
     * RFC-1867 ɮפWǤ䴩X ɮפWǬO Netscape 2.0 s\CΪ
       ɮפWǨUAC ϱooƦi]AOڪ Mime ѽX
       PHP ѡAiB~ج[A bWǪɮ׫ᰵǦΪơC
     * HTTP ¦{ұX PHP iΨӦb Apache UAإߦ۩w
       H HTTP ¦{ҾC
     * ܼơBC}BpC} (Associative Arrays)X PHP 䴩ܼƧκABC}
       BƦܦp Perl 몺pC}C̥iy GET  POST kbǻC
     * 󦡡BWhile jX PHP 䴩@ C \ROZyCAi
        if/then/elseif/else/endif 󦡡Bwhile jM switch/case ԭz
       ӫާA html ܪ޿yVC
     * WFX WF`QΩ˦ǰtB˦ (pattern
       substitutions) M@몺rBzCPHP 䴩Ҧ`ΪWFB@C
     * l HTTP YX ni氪]pAϺζǰe۩w HTTP
       YOOC @ӺD`ΪkOǰe@ Location: URL Yӧ
       ȤݶǰeL URLC]iΩ֨γBzWlast
       updateYC
     * Y GIF Ϲ͡X PHP 䴩 Thomas Boutell  GD Ϲ禡wAϥ
       iYɲ GIF ϹC
     * ISPwҦ䴩X PHP 䴩@ӿWwҦ(Safe Mode)A
       obP@AWhӥΤϥ PHP ROZ]SwDC
     * s PHP [JFܦhs\AаѾ\D
       [307]http://www.php.net
     * OۥѪI ̫@ӥnSʡCoMOۥѪCH GNU/GPL
       vAAiتϥγonA]Aӷ~γ~CԱAаѬ
       GNU General Public License C
       
21.2 PHPX²v

   X{ɡAPHP O@ӥH Perl gp²檺 cgi ]˾ (wrapper)CoM
   ̥W Personal Home Page ToolsAܬ Personal Home Page
   Construction KitC
   
   t@uOg²ƦbOJ SQL dߪu@C򥻤WOt@ CGI
   ]˾AR (parsed) SQL dߤ²ƫإ߮ھڳoǬdߪMCu
   @C ouW FI (Form Interpreter)C
   
   PHP/FI 2.0 goMANXӬ@CiƦܥi²qyO
   J HTML ɤCyۧ²檺ROZOJ HTML ɤAjqp
   Perl cgi {ݭnCo˷|[֧AA] fork h Perl xZwg
   C ]²ƤF޲zju@A]AiҦb@
   html ɤC[WhظƮw䴩AiϥθƮw}oܱo²C 
   hHıoOJdߤOإ HTML M CGI ²ohC
   
   PHP/FI wW PHPC
   
21.3 Aگ PHP H

   pGAϥ PHPAA|`N쥦b[WoQsLh֦
   ]pGAbbsĶɿF access logging^CouO PHP Ұ@pC
   t@ӭnO@@Ӫ檽Ķ cgi { (form interpreter cgi)A
   o]NOW FI NCҦpApGAb@ӺإߤF@ӪA A
   n@ӵ{ӳBzWơCYϧAuQƶǰet@AA]ݭn
   cgi {UCPHP ϱooMBz檺ƷeC
   
21.4 @²檺Ҥl

   ]A@iJ
   
<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>

   A display.html Ki]AFJ
   
< ?echo "Hi $ name, you are $ age years old!<p>" >

   NOo²IPHP ۰ʬCӪJ첣ͤ@ܼơCAKib
   ACTION URL ɤϥγoܼơC
   
   bAXpϥܼƤ᪺BJNObեΤ@޿y{ҡCҦpA
   pGAQھڥΪ̿JܤPTAAiϥ if/else ޿CbWҤlA
   ڭ̥i display.htmlAϱoPF|ھڥΤJܥXӡJ
   
<?
    if($age>50);
        echo "Hi $name, you are ancient!<p>";
    elseif($age>30);
        echo "Hi $name, you are very old!<p>";
    else;
        echo "Hi $name.";
    endif;
>

   PHP Ѥ@ثD`jlROZyAవ쪺ƤHW²檺ҤlhܦhC
   ԱA аѾ\ PHP Script Language `C
   
   A]iϥ PHP ӳ]wHݨACoiϥΤ@Ӥت]we
   C ҦpAyۥAiwuYǺ쪺HiݨAA Ϋإߤ@
   WhӥαKXO@YǺCԱAаѾ\ Access Control `C
   
   PHP ]O̷ RFC-1867 WwsWǪɮסC oSϥΪ
   WǤrΤGɡCy PHP sM޿\A Aia\
   WǤΤWǫᰵCԱAаѾ\ File Upload `C
   
   PHP 䴩 PostgreSQL ƮwMC䴩b .HTML ɤOJ SQL dߡC
   
   PHP ]䴩 mysql ƮwMC䴩b .HTML ɤOJ SQL dߡC
   
21.5 CGI V (Redirection)

  Apache 1.0.x Kn
  
   ϥ Apache A cgi VҲլO PHP @ӦnkC Ъ`NAL
   ߧVҲաApGAϥ PHP  Apache Ҳժ (Apache module
   version)CӳoVҲաC@ӬO Dave Andersen }oJ
     * [308]angio@aros.net
       
   ibHUa
     * [309]ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c
       
   t@Ӥw]Ab Apache AW mod_actions.cCoǼҲշۦA uOb
   ΪkWֳ\tOCӳչLAM PHP QX@C
   
   d Apache p[J@ӼҲաC@ӻAAҲզW٥[@
   W Configuration ɮפCpGAϥ mod_actions ҲաAAn[@y
   OJ
   
   Module action_module mod_actions.o
   
   pGAϥ mod_cgi_redirect ҲաA[WHU@yJ
   
   Module cgi_redirect_module mod_cgi_redirect.o
   
   ssĶA httpd Φw˥Cn]w cgi VAݭnbA mime.types 
   إ߷s mime AΦbA srm.conf ɤϥ AddType Oӥ[W
   mime Cҥ[W mime J
   
     application/x-httpd-php phtml

   pGAϥ mod_actions.c ҲաAAݦb srm.conf ɤ[WHU@J
   
     Action application/x-httpd-php /cgi-bin/php.cgi

   pGAϥ mod_cgi_redirect.c ҲաAAݦb srm.conf ɤ[WHU@J
   
     CgiRedirect application/x-httpd-php /cgi-bin/php.cgi

   nPɨϥ mod_actions.c M mod_cgi_redirect.cC
   
   wˤΥT]wFo cgi VҲիAAuݧ⩵ɦWw .phtmlA Ki
   Hwoɮץ PHP RC~ApGAb srm.conf ɪ DirectoryIndex ]
   w[W index.phtmlA̤WhK|۰ʥ php RApGA index
   ɦW index.phtmlC
   
  Netscape HTTPD
  
   Aiy Netscape Server CGI Redirection Ҳըӫw۰ʧYǩɦW
   ɮתnDV PHPCoҲեib PHP  File Archieves CM
    README TaFp]wӥΩ PHPC
   
  NCSA HTTPD
  
   ثeANCSA ä䴩ҲաAҥHAnϥ cgi VܡAAnקA
   lXC @ӹ NCSA 1.5 ou@Oɦbb PHP ɮצswC
   
21.6 bO PHP

   pGAإߤF CGI  PHPAAuݦbOJ php.cgi filenameA
   filename OAQRɮסCAiإ߿Wߪ PHP ROZAuݧROZ
   (script) Ĥ@gJ
   
    #!/usr/local/bin/php.cgi -q

   -qLX HTTP YCwܡAAiγoܡC
   
21.7 PHPGem M

   PHPGem O@ PHP ROZAΥH[tsgϥΪ檺 PHP ROZCiΩ
   P SQL AAp PostgreSQLBMySQLBmSQLBODBC M AdabasC AJ
   쪺yzMѼơ]W١B쪺 on/off searching (?) ^A
   PHPGem Xt@ӨϥΨǪ檺 PHP ROZ]˵/[/ק/R/Фe
   Mj^C PHPGem iϥΦhh_ (multi-level nested tables, ??)
   CPHPGem e\AwCӪCCHsCPHPGem ]䴩vC
   
   PHPGem b [310]http://sptl.org/phpgem C
   
22. PostgreSQL  Python 

   Python O@ӪĶɦVROZyCϥ²]ykB ²檽
   yl^AܦhΩإ GUI BUC @Ӧzs
   ] HotJava^b}o]@EE~Q@^A o|{]p
   ܦh|CPython vHiS Stichting S
   Mathematisch CentrumAiۥѴGC]ABO (classes)BҲաBM
   ҥ~ (exceptions) ʺAJCϥ C yӱN䤶[JstΨ禡wO
   u@A Python bۦ]wɮeϥΡCPython O@Ӿ֦ X 
   ROZyCb Linux Ф Python M]Ajз Python ҲաA
   HΥΧ@ Tk  Tix widget ҲաC
   
   PyGreSQL O@ӥΧ@ PostgreSQL ƮwCOJF PostgreSQL dߨ
   wAϱob Python Zϥαjl PostgreSQL SʤQ²CPyGreSQL
    D'Arcy J.M. Cain M Pascal Andre gC
     * PyGreSQL s [311]http://www.druid.net/pygresql/
     * D'Arcy Һ@ [312]http://www.druid.net/~darcy/
     * ºb
       [313]ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.REA
       DME 
     * D'Arcy J.M. Cain [314]darcy@druid.net
     * Pascal Andre [315]andre@chimay.via.ecp.fr
     * Pascal Andre [316]andre@via.ecp.fr
       
22.1 po PyGresH

   PM󪺥DbJ
     * Python
       [317]ftp://ftp.python.org:/pub/www.python.org/1.5/python1.5b2.tar.
       gz
     * PyGreSQL [318]ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz
     * º
       [319]ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0
       b.tar.gz 
       
   LצpAAմM̱AMgxCаѾ\ƨӷӧoǯx
   CPygreSQL ]|b Python M PostgreSQL x contrib ؿC
   
22.2 ƩM䴩

   pGAݭnoǮM󪺸ơAЬdݥHUJ
     * PythonJ [320]http://www.python.org/
     * PostgreSQLJ
       [321]http://epoch.cs.berkeley.edu:8000/postgres95/index.html
     * PyGreSQL [322]ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz
     * PyGreSQL ºJ
       [323]http://www.via.ecp.fr/via/products/pygres.html
       
   䴩J
     * PyGreSQL qH׾¡Cnѥ[ܡAAiqlܡJ
       [324]majordomo@vex.net b夤gsubscribe pygresql name@domain
       A⡧name@domain אּAۤvqla}C
     * Python sDաJ newsgroup comp.lang.python
     * PyGreSQL : pγiBNB`AЧ Andre
       [325]andre@via.ecp.fr
       
22.3  Python 

   аѦ [326] PythonXPostgreSQL  @`C
   
23. PostgreSQL MUh (gateway) X WDB-P95

23.1  wdb-p95

   WDB-P95 - @ӥ J. Douglas Dunlop }o PostgreSQL ƮwU
   bJ
     * J Rowe s WDB b
       [327]http://www.lava.net/beowulf/programming/wdb
     * s WWW-WDB b [328]http://www.eol.ists.ca/~dunlop/wdb-p95/
     * DηQ[JqH׾ [329]dunlop@eol.ists.ca
       
   oO@ӭקF wdb-1.3a2AѤ@ PostgreSQL UhC o
   ]ݭnBz HTML 檺sC쥻 wdb LnDAn٭]C
   
   Ai CASI Tape M Image QueryCAiݬݨ Form Definition File
   (FDF)A]Ω󲣥 CASI Tape M Image QueryA]tFӦCp
   (join)C
   
   o]tҦݭnΩw˩MH WDB-P95  PostgreSQL ɮסCn
   otβӨLƮwᬰ²XpG䴩зǪ SQL M֦ Perl 
   C
   
23.2 PostgreSQL ABpgperl M httpd O_ݦbP@qH

   _XPostgreSQL ݦbP@qC] WDB-P95  httpd ʱ{ (daemon) I
   sA̭nbP@qCS] WDB-P95 ϥ Pg.pmApgperl ]nbP@q
   C Pgperl OH libpq 禡wgAҥHisW PostgreSQL 
   AANpL PostgreSQL ȤCpUҭzJ
   
   (UȤ (Netscape)) => (HTTP A (NCSA's http) + WDB-P95 +
   pgperl + libpq)=> (PostgreSQL A)
   
   A () NqC
   
   CqiOPJNTBSUNBHPKKAݭnbA WDB-P95 q
    libpq 禡wA]AnΥӽsĶ pgperlC]otγ]p|ϥ
   HTML AҥH̦n@s񪺸UȤݡC^
   
24. "C", "C++", ESQL/C yM PostgreSQL vB⤸ (Bitwise Operators)

24.1 "C" 

   w]tbo檩AWlibpqCM Oracle OCIBSybase DB-lib
   BInformix CLI 禡wۦC
   
24.2 "C++" 

   w]tbo檩AWlibpq++C аѦ [330] libpq,
   libpq++  @`C
   
24.3 ESQL/C

   PostgreSQL ESQL/C 'Embedded C Pre-compiler'  Oracle Pro*C
   BInformix ESQL/CCPostgreSQL ESQL/C O@ SQL ε{ (API)A
   C {]pvۦ]pi֦޲zƮwOε{CPostgreSQL
   ESQL/C e\AϥΧAҼxĤTNqyӤSQΨ쵲cƬd߻y
   (SQL) uIC
   
   ESQL/C ]tHUnJ
     * ESQL/C 禡wѨƮwAsO C 禡C
     * ESQL/C Yɴѹ ESQL/C {ΪƵcB`ƩMwqC
     * ESQL/C wBzA@ӧ]t SQL yl C ഫiɪ{w
       BzC ]ĶJtOJ SQL  C ɮഫзǪ C ɮסA
       åi gcc sĶiɡCt~APostgreSQL  SQL OJ SQL wB
       zW ecpgC^
       
   b
     * PostgreSQL  ESQL/C w]tbo檩C
     * D [331]ftp://ftp.lysator.liu.se/pub/linus
     * qlJ [332]linus@epact.se
       
   аѦ [333] ecpg  @`C
   
   nϥ Vim ms边sgecpgɡ]*.pgc^AAno˰J
     _________________________________________________________________
   
bash$ su - postgres
bash$ mkdir $HOME/vim
إߤ@ӦW$HOME/vim/myfilestypes.vimɮסAHUƦ

    " myfiletypefile
        au! BufRead,BufNewFile *.pgc    set filetype=esqlc
     _________________________________________________________________
   
   AӦ@ $HOME/.gvimrc ɡC_hЦۤvsy@ӡAаѦҦb
   [334]http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html  Vim HOWTO 
   C
   
   b $HOME/.gvimrc [WHU@
     _________________________________________________________________
   
let myfiletypefile = "~/vim/myfiletypes.vim"
     _________________________________________________________________
   
   {bpGA
     _________________________________________________________________
   
bash$ gvim sample.pgc
     _________________________________________________________________
   
   sɮסAAio̻ykX (syntax highlight) CC
   
24.4 PostgreSQL v줸B⤸

   v줸B⤸ Nicolas Moldavsky g
     * [335]nico@overnet.com.ar
       
   v줸B]ANDBORBXORB줸ɼ (bitwise complement)^ pgsql
   C禡CigΦW FTP oJ
     * [336]ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz
       
   ]AF Linux  MakefileC
   
25. PostgreSQL 尲WX (Kanji Code)

   bHU}J
     * [337]ftp://ftp.sra.co.jp/pub/cmd/postgres/
       
26.  PostgreSQL  95 /  NT

    NT  PostgreSQL GɥibHUaJ
     *  NT PostgreSQL G [338]http://www.askesis.nl
     * [339]http://www.postgresql.org
       
   UiɡANAñqĤQTB}lq [340]w PostgreSQLC
   
   pGAQssĶ{XAиqHUܡCӨ NT nϥ Cygnus
   cygwin32 MA]A NT/95  gccBgmakeC
     * Cygwin 32 Mb [341]http://www.cygnus.com/misc/gnu-win32 
       
   즹o cdk.exe ɡ]gnu-win32 ۧڸɡ^ ]ĶJuwW
    cygwinA} [342]http://sourceware.cygnus.comC^
   
26.1 NT @

   PostgreSQL NT @̬X
     * Daniel Horak [343]horak@mmp.plzen-city.cz
     * Joost Kraaijeveld [344]JKraaijeveld@askesis.nl
     * Kevin Lo [345]kevlo@FreeBSD.org
     * NT b
       [346]http://www.freebsd.org/~kevlo/postgres/portNT.html
       
26.2 w Cygwin M

    1. U
       [347]ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/f
       ull.exe
    2.  full.exeAw˨ c:\Unix\Root ؿC
    3.  CygwinAJmount --helpH\ŪCAi -f ﶵjW
       C桧umount / " Mmount c:\Unix\Root /
       
26.3 ]w Bash 

   w Cygwin MAжiHUu@H]wu@ҡJ
   
   1. w Vi s边VimCаѾ\
   [348]http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
   
   2. cygwin bash wwO@Ӥܥ|A⬰¦⪺Cn]w bash 
   MjpA}l->x->MS DOS DxA⩳]w¦A jp
   אּCQC
   
   ]Ρ^kDCAܤeC
   
   3. s c:\cygnus\cywinb20  cygnus.bat M@HU]wX
     _________________________________________________________________
   
set HOME=c:\cygnus\cygwinb20
bash --login
     _________________________________________________________________
   
   νs  /.bash_profile [WoX
     _________________________________________________________________
   
set -o vi
PATH=$PATH:/usr/local/bin:/usr/bin
export PATH
     _________________________________________________________________
   
   4. nҥΫOCvsAJX
   
   bash$ set -o vi
   
   ϥ lBkBjBhAAi vi OsOCvCAiЩMק蠟eO
   AH`٥rɶC
   
   5. AiΥHUOWϺо / ؿX
     _________________________________________________________________
   
bash$ umount /
bash$ mount "c:\cygnus"  /
bash$ mount "c:\cygnus\cygwin-b20\postgres" /usr/local/pgsql
     _________________________________________________________________
   
   6. ΥHUO\ŪuWDUTX
     _________________________________________________________________
   
bash$ mount --help
bash$ ls --help
     _________________________________________________________________
   
26.4 w Andy Piper u

    1.  [349]ftp://ftp.xemacs.org/pub/xemacs/aux/ U
       cygwin-b20-local.tar.bz2  c:/Unix/Root ؿC
    2. cd c:/Unix/Root; bunzip2 cygwin-b20-local.tar.bz2
    3. tar -xvf cygwin-b20-local.tar
    4. cd /local/bin; sh check_cygwin_setup.sh
    5. ĥ|BAA|ݨHUTJ
         _____________________________________________________________
       
You don't have /bin would you like to mount cygwin as /bin?"
[ y/n ]
nALDhyC
         _____________________________________________________________
       
    6. mount c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/bin
       /bin
    7. cd c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32; mkdir
       libexec share man etc sbin info
    8. cp -R /local/{ bin,libexec,share,man,etc,sbin,info,include }
       
26.5 w Ludovic Lange  Cygwin32 IPC M

    1.  [350]http://www.multione.capgemini.fr/tools/pack_ipc U
       cygwin32_ipc-1.03.tgz  c:/Unix/Root ؿC
    2. tar -zxvf cygwin32_ipc-1.03.tgz
    3. cd cygwin32_ipc-1.03/src and run 'make'
    4. mkdir -p c:/usr/local/{bin,include,lib,include/sys}
         _____________________________________________________________
       
cp /cygwin32_ipc-1.03/bin/* c:/usr/local/bin
cp /cygwin32_ipc-1.03/include/sys/* c:/usr/local/include/sys
cp /cygwin32_ipc-1.03/lib/* c:/usr/local/lib
cp c:/usr/local/bin/* /bin
cp c:/Unix/Root/cygwin-b20/H-i586-cygwin32/bin/* /bin
         _____________________________________________________________
       
    5. mount c:/usr/local/bin /usr/local/bin
         _____________________________________________________________
       
mount c:/usr/local/include /usr/local/include
mount c:/usr/local/lib /usr/local/lib
cp /local/lib/* /usr/local/lib
         _____________________________________________________________
       
26.6 w PostgreSQL

    1. U̷s PostgreSQL {X
    2. Postgres Ҧɮ׷@GɡAҥH|J lf/cf DAڭ̭nĤG
       ܤBJ
         _____________________________________________________________
       
mkdir -p c:/Postgres/{Source,Binary}
mkdir c:/Postgres/Binary/pgsql
mkdir -p /usr/src/pgsql
mkdir -p /usr/local/pgsql
         _____________________________________________________________
       
    3.  Postgres {X c:/Postgres/Source ؿA tar -zxvf
       postgresql-6.5.3.tar.gz
    4. mv postgresql-6.5.3 pgsql
    5. {bWUӥؿX
         _____________________________________________________________
       
mount -b c:/Postgres/Binary/pgsql /usr/local/pgsql
mount c:/Postgres/Source/pgsql /usr/src/pgsql
mount c:/Unix/Root/cygwin-b20/share /sw/cygwin-b20/share
         _____________________________________________________________
       
    6. mkdir -p /usr/local/pgsql/{bin,include,lib,data}
    7. cd /usr/src/pgsql/src/win32
    8. YɡX
         _____________________________________________________________
       
cp un.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include/sys
cp endian.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include
cp tcp.h c:/Unix/Root/cygwin-b20/H-i586-cygwin32/i586-cygwin32/include/netinet
         _____________________________________________________________
       
    9. ln -s /usr/local/lib /usr/src/pgsql/src/backend/libpostgres.a
   10. cd /usr/src/pgsql/src,  './configure'
   11. make > make.txt 2>&1
   12. make install > make.install.txt 2>&1
   13. cp /usr/local/pgsql/lib/pq.dll /usr/local/pgsql/bin
   14. b make install An bin M lib ؿrഫAHM
       cr/lf M eof FC
   15. b / ؿϥΥs边 .bashrc pUJ
         _____________________________________________________________
       
PATH=$PATH:/usr/local/pgsql/bin:/usr/local/bin
PGDATA=/usr/local/pgsql/data
PGLIB=/usr/local/pgsql/lib
LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib
export LD_LIBRARY_PATH PATH PGDATA PGLIB
         _____________________________________________________________
       
   16. source /.bashrc,  'initdb --username=xxxx' n`NƮwt
       ֦HiHO root/administratorC
   17. s /usr/local/pgsql/data/pg_hba.conf ɡApJ
         _____________________________________________________________
       
host        all     163.17.11.109   255.255.255.0   trust
         _____________________________________________________________
       
   18. ipc-daemon.exe&
   19. postmaster -i&
   20.  ' psql -h host_name template1'
       
27. qH׾

27.1 PostgreSQL qlf

   HUaoKOql
     * b Yahoo [351]http://www.yahoo.com  e-mail
     * In Lycos [352]http://www.lycos.com  new e-mail accounts
     * In hotmail [353]http://www.hotmail.com  new e-mail accounts
       
   q\ PostgreSQL qH׾¡A Yahoo @Ӫ[SAi PostgreSQL ql
   إ߿WߪؿAKPZçALqlCܿؿ Email- > Options- >
   Filters δz seperate folder for emailC Aiγoӹqlfb@ɥ
   a覬oqlAunAWC
   
   pGALqlAAiΡMail FiltersӦ۰ʧ PostgreSQL lW
   ߪؿAHKVáC
   
27.2 ^qH׾

   аѾ\D Mailing Lists ءJ
     * [354]http://www.postgresql.org/
     * DqlܡJ [355]pgsql-questions@postgresql.org
     * }oH [356]pgsql-hackers@postgresql.org
     * ӪD [357]pgsql-ports@postgresql.org
     * D [358]pgsql-docs@postgresql.org
       
   A|b@餧qql쵪שΦ^СC
   
   A]iq\qT׾¡Cnq\ΰq\Aql
     * [359]pgsql-questions-request@postgresql.org
     * [360]pgsql-hackers-request@postgresql.org
     * [361]pgsql-ports-request@postgresql.org
     * [362]pgsql-docs-request@postgresql.org
       
   Tui@
   
   subscribe
   
   ]Ρ^
   
   unsubscribe
   
27.3 qH׾¦sw

   qH׾¤]H html 榡swbHUaJ
     * g MHonarc Ag WWW Cؿ
       [363]http://www.postgresql.org/mhonarc/pgsql-questions
     * [364]ftp://ftp.postgresql.org ؿ /pub/majordomo
       
   PostgreSQL D]@ӱM pgsql Dӳ]jMC
   
27.4 ZqH׾

   ثe@ӡuDxvZ PostgreSQL qH׾¡Cnq\ܡAΪ̻
   qlܡJ
     * [365]majordomo@tlali.iztacala.unam.mx
       
   Tui@
   
   inscripcion pgsql-ayuda
   
28. MѦҮ

28.1 ΤީM

   PostgreSQL o檩w]AHUU postscriptBHTML 榡 M unix
   man-pagesC̦b /usr/doc/postgresql* ؿCpGAWA AibH
   UaUCJ [366]http://www.postgresql.org/docs
   
     * "Installation Guide"
     * "User Guide" for PostgreSQL
     * "Implementation Guide" Բӻ PostgreSQL ƮwB@
     * uW
     * HTML 榡uW
     * Postscript 榡uWѡAΥHCL
       
28.2 uW

     * ظƫAMB⤸WMѻ
       
A O_ PSQL O@

     * 䴩 SQL rW
       
b{ /tools ؿ@өROZ (script)

     * 䴩yyW
       
ϥ psql \h O

     * PostgreSQL 򥻪pƮw]Ik^MƭӽuWҤl]d
       ^
       
 src/test  regression աAаѾ\ <ref name="Ҥl RPM"
id="Examples RPM">CA| regress/sql M suite/*.sql ؿC

     * PostgreSQL 
       
SQL ɽZb src/tutorial ؿ

       ]аѾ\A [367]A Ǫ SQL ɡC
       
28.3 ΪѦҮ

     * "Understanding the New SQL: A Complete Guide" - Jim Melton M Alan
       R.Simon 
       
Morgan Kaufman Publisher O䤤@̦n SQL ѡCoѥH SQL92 ǡC

     * "A Guide to THE SQL STANDARD" - C.J.Date 
       

Addison-Wesley Publishing company ]O@nѡC SQL W@C

     * SQL - The Standard Handbook, @EEG~Q@
       
Stephen Cannan M Gerard Otten
McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England

     * SQL Instant Reference, 1993
       
Martin Gruber, Technical Editor: Joe Celko
SYBEX Inc.  2021 Challenger Drive Alameda, CA 94501

     * C.J.Date, "An introduction to Database Systems" (Ĥ),
       Addison-Wesley, 1995, ISBN 0-201-82458-2
       
oOƮw޲ztΪtgCoѸԲӻW (normalization)BSQLB_
(recovery)Bæ (concurrency)BOwBX (integrity)B
쥻pҦB{DpDqtΩMɦVҦC
]]AjqѦҸƥHѲ`JsCVjΤˡC

     * Stefan Stanczyk, "Theory and Practice of Relational Databases",
       UCL Press Ltd, 1990, ISBN 1-857-28232-9
       
oѸԲӻpƮwBYN (relational algebra)BYt (calculus)
MWƪzסC]t{@ɪDMҤlCVjΤˡC

     * "The Practical SQL Handbook" ĤTA Addison Wesley Developers
       Press ISBN 0-201-44787-8
       
VjΤˡC

     * Michael Stonebraker, "Readings in Database Systems", Morgan
       Kaufmann, 1988, ISBN 0-934613-65-6
       
oOLhƦ~Ʈwפ嶰CO@Ϊ̬ݡAӬOiǥ͡]s͡^
θƮw}oHC

     * C.J.Date, "Relational Database - Selected Readings",
       Addison-Wesley, 1986, ISBN 0-201-14196-5
       
oOLhƦ~Ʈwפ嶰CO@Ϊ̬ݡAӬOiǥ͡]s͡^
θƮw}oHC

     * Nick Ryan M Dan Smith, "Database Systems Engineering",
       International Thomson Computer Press, 1995, ISBN 1-85032-115-9
       
oѲ`JskMxsަҡC

     * Bipin C. Desai, "An introduction to Database Systems", West
       Publishing Co., 1990, ISBN 0-314-66771-7
       
O@Ϊ̬ݡAӬOiǥ͡]s͡^θƮw}oHC

     * Joe Celko "INSTANT SQL Programming"
       
Wrox Press Ltd.
Unit 16, 20 James Road, Tyseley
Birmingham, B11 2BA, England
1995

     * Michael Gorman "Database Management Systems: Understanding and
       Applying Database"
       
Technology
QED and John Wiley
1991

     * Michael Gorman "Enterprise Database for a Client/Server
       Environment" QED and John Wiley
       
إ߸g repository metamodels DqƮwε{nDM ANSI
з SQL 1993 ΡC

   ٦ƥHʭp SQL ѡIѩݬݧaC
   
28.4 ANSI/ISO SQL WXSQL 1992, SQL 1998

   ANSI/ISO SQL WibUCJ
     * [368]http://www.naiua.org/std-orgs.html
     * [369]http://www.ansi.org/docs wɮ cat_c.html δM䡧Database
       SQLC
     * SQL92 з [370]http://www.jcc.com wɮ sql_stnd.htmlC
     * ANSI/ISO SQL W
       [371]http://www.contrib.andrew.cmu.edu/~shadow/sql.html A|b
        SQL ѦҸơC
       
28.5 ANSI/ISO SQL 1992 yk

   аѾ\󪺪 [372]
   
28.6 ANSI/ISO SQL 1998 yk

   SQL 1998 (SQL 3) W椴b}oCѬݥ󪺡ql~|o SQL3 ס
   [373]SQL 1998
   
28.7 Ǫ SQL ɤ

   ѬݥA [374]Appendix B
   
28.8 SQL92 ɺA (Temporal Extension)

     * SQL92 ɺA [375]ftp://FTP.cs.arizona.edu/tsql/tsql2/
     * Temporal SQL-3 W [376]ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/
       
   oؿ]A@ SQL-92 yW檺ɺACoطsyQW TSQL2C
   
   o̪yWOoy̲תC
   
   ip TSQL2 ]pe|DuJRichard T.Snodgrass, Department of
   Computer Science, University of Arizona, Tucson, AZ 85721,
     * [377]rts@cs.arizona.edu
       
   TSQL2 Language Design Committee qla}MJ|ԱibyW̫᪺
   @C
   
   oؿepUC
   
   spec.dvi,.ps TSQL2 yWA@EE|~EX
   
   bookspec.ps TSQL2 yWAepb TSQL2 ѯA@EE~Q X
   ]аѾ\U^
   
   sql3 浹 ANSI M ISO SQL3 we|׭qĳ
   
   MyW@_Ao٦F@Ǧ]pWMwסBѨҤlB M
   spoyCoǵ׭쥻O TSQL2 Language Design Committee 
   ĳC̲{bt@ӥγBJѦ TSQL2 cyҤlB ʳ]pɧ@X
   jqMwB TSQL2 MLhQ~HĳLjqyC jաAШ
   ץثeO TSQL2 yW檺@AӬO復ɥRMoiC oyW
   wO TSQL2 ̲רMwC
   
   oǵסA[WyWBƭӯީML䴩ơAwgѡJ
   
   Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer
   Academic Publishers, 1995, 674+xxiv C
   
   Ѥ@Ӹ`FA㪺bؿ eval.ps ѡC
   
   tl2tsql2.pl ɬO@ӧ򱵨ɺA޿ (temporal logic) ½Ķ TSQL2 
   prolog {Co{ Michael Boehlen gC
     * [378]boehlen@iesd.auc.dk
       
   UiĲLHo@o½ĶL{פCoOo{ªCs
   b
     * [379]http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software
       
   (the TimeDB and Tiger systems).
   
28.9 ĹsXo ISO/ANSI SQL 

   o峹p]Xka^o@ SQL-92 зǩM˨o@{ɪ
   SQL3 סC
   
   oзǪvҦA ANSI зǪH ANSIAISO зǪH ISOC
   
   {ɦ]2^ SQL зǡAO ANSI M ISO XCoзǨCӦr@
   Ҥ@ˡA F@Ǥp`ApDBBuyInternational Standard
   MAmerican StandardC
   
   ʶR SQL-92 з
   
   The ISO standard, ISO/IEC 9075:1992, Information Technology - Database
   Languages - SQLAثe]@EET~T^b ANSI sfΥioJ
   
     American National Standards Institute
     1430 Broadway
     New York, NY 10018 (USA)
     Phone (sales): +1.212.642.4900

    US$230.00CANSI AANSI X3.135-1992, American National Standard
   for Information Systems - Database Language SQLAثeõLsfA 
   ib@EET~TUܤWoCpO US$225.00C
   
   pGAq ANSI ʶR@AAݭn 7% O]Yj US$9.10^
   C~lH֩w|QCANSI nDҦڳH@qq檺ƦLA 
   ̧AiHH@iꪺȦ檺䲼AL̷|bFHAC ]ҥ~p
   JpGA´O ANSI q| (corporate member)AANSI |H
   AӦVqC^
   
   b~AISO зǤ]iq@ ISO (International Organization for
   Standardization)  IEC (International Electrotechnical Commission) |
   gc]aзǲ´^ʶRCcΨa}Wiq
   ANSI ΨLcoC̤]iq ISO oJ
   
     International Organization for Standardization
     Central Secretariat
     1, rue de Varembi
     CH-1211 Genhve 20
     Switzerland

   pGAQHKֱkqʳoзǡAAݭnXNCAiqHU´H
   US$308.00 q ISO/IEC 9075:1992, Information Technology - Database
   Languages - SQLJ
   
     Global Engineering Documents
     2805 McGaw Ave
     Irvine, CA 92714 (USA)
     USA
     Phone (works from anywhere): +1.714.261.1455
     Phone (only in the USA): (800)854-7179

   ڤDoO_]AfBOAڦp]_X^ڳfB|B~OC L̷|
   ֱaHAAƦܷ|DnHΥdCGlobal ٨S ANSI 
   AΥL̨SΦpɶ]ڹwp|b ANSI XƶgX{A
    US$300.00^C
   
   ʶR@ SQL3  (Working Draft)
   
   Aiq ANSI X3 Secretariat, CBEMA (Computer and Business Equipment
   Manufacturers Association) ʶR@ SQL3 תƦLCL̷NϽTOണ
   ѡ̪񡨪 SQL3 סAåH US$60.00  US$65.00 XCAiHHU
   ~|Ĳ CBEMAC
   
     CBEMA, X3 Secretariat
     Attn: Lynn Barra
     1250 Eye St.
     Suite 200
     Washington, DC 20005 (USA)

   Lynn Barra ]iHqܸX +1.202.626.5738 ĲHnD@ALlHG
   §C
   
   ql|o SQL3 
   
   ̷s]Hgɬǡ^ SQL3]ANSI M ISO^ס]MҦ^ ib
   HUxHanonymous ftpΡftpmailoJ
   
     gatekeeper.dec.com

  b

     /pub/standards/sql/

   oؿhɮסA]A PostScript ɩM¤rɡ]榡ܬ[A ib
   ùWLSOn\Ū^C
   
   @ӻAAiW٪ɮסJ
   
     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

   sAmar94|ܨӻsX]Ҧpaug94O
   pb mar94᪺^C
   
   t~AUq FTP oɮצW檺Ū̡Aڭ̦bؿmF@ӦW
   
     ls

   ɮסCoɮס]_I^]AFؿɮצWC
   
   q Ftp oɮ
   
   oOϥ FTP ҤlCSOps gatekeeper.dec.comA Fm
   oɮתؿAΧɮ׶ǰeAqCn`NqnW\C ñ
   JW٬OftpAKXhOAqla}]Yҿסanonymous ftp^CO
   type binaryOΨӽTO쪺ɮפS줸QIhCget@o@
   ɮסC bROZ (script) `ѷ|bA < YOp >C
   
  % ftp gatekeeper.dec.com
  Connected to gatekeeper.dec.com.
  220- *** /etc/motd.ftp ***
       Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
       <K@|K>
  220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready.
  Name (gatekeeper.dec.com:<AnJW>): ftp  <anonymous ]i>
  331 Guest login ok, send ident as password.
  Password: <JAqla}>
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.  <]Sҿ>
  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
  % <oɮפwAq x3h2-93-082.txt>

   S ftp 䴩pUoɮ
   
   Digital Equipment Corporation MƶLqۦA ftp email AȡC
   iݭnƤѤ~^AઽWHѤFP ftp AȡC
   Aa}J
   
   ftpmail@decwrl.dec.com
   
   HUROZ|o̷s SQL3  PostScript J
   
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
     uuencode
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit

   Ĥ@yOiDAnɮ׶ǵAAAݭn
   joe.programmer@imaginary-corp.comAqla}CoҤlɮ
   x3h2-93-091.ps |H uuencode F compress ɮ榡ATQ|ʹql^
   C pGAҨSѭɮתuAAݭnΤUCROZH¤rҦ
   oɮסJ
   
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit

   Ъ`NAo .ps ɤj|QWLCQӦ^СI
   
   no󤣬O x3h2-93-091.ps ɮסAuݧ⡧x3h2-93-091.ps AQ
   nɮתW١CnoҦɮתWA⡧x3h2-93-091.ps dir
   C
   
28.10 Ĥ@XISO/ANSI SQL ep

   oO SQL зǩMepƨӷC
   
   epJ
   
   ثebi}ou@AHi SQL pW㪺y (computationally
   complete language)AHiΩ[BCo]AJ@ƩMMƵ
    (generalization and specialization hierarchies)Bh~ (multiple
   inheritance)BۭqƧκABEo (triggers) MP_ (assertions)BѮw
   tΤ䴩 (support for knowledge based systems)Bjdߦ (recursive
   query expression) M[ƺ޲zuC]]AHƫA (ADTs)B
   ѧOr (object identifiers)Bk (methods)B~ (inheritance)Bh
   (polymorphism)B] (encapsulation)B MҦLPƺ޲z\
   ઺WC
   
   @EE~uASQL3 ƭӳiF@ ISO CD OW벼CoƳO
   SQL/FrameworkBSQL/Foundation M SQL/BindingsC@pҮơA 벼GOb
   EʭӵפUD_MC@U|F@ ISO DBL s|ĳ (editing
   meeting)ABzFjqbפΩΥt~檺DѨMkC ѩӦ|ĳ
   BzҦסA|ĳN|C s|ĳw@EEC~Cb۴C
   
   ڦpAbC몺s|ĳA|AX靈ǳ SQL i̫᪺
   CD 벼C̫ CD L{|jӤA| DBL s|ĳBDIS 벼M
   ֱ IS 벼C
   
   ISO {Ǧb SQL/92 ܤFAҥH SQL e|bNoL{ԱC
   
   pGƨƶQASQL3 oǳ|b 1998 ~x ISO/IEC зǡA
   LɶD`򭢡C
   
   b@EET~AANSI M ISO }oe|Mw⤧᪺ SQL oih
   ǡCoǳ]AJ
   
     * Part 1: Framework A non-technical description of how the document
       is structured.
     * Part 2: Foundation The core specification, including all of the
       new ADT features.
     * Part 3: SQL/CLI The Call Level Interface.
     * Part 4: SQL/PSM The stored procedures specification, including
       computational completeness.
     * Part 5: SQL/Bindings The Dynamic SQL and Embedded SQL bindings
       taken from SQL-92.
     * Part 6: SQL/XA An SQL specialization of the popular XA Interface
       developed by X/Open
     * Part 7:SQL/TemporalAdds time related capabilities to the SQL
       standards.
       
   bASQL3 Pɷ@ ANSI g (Domestic, "D") MשM ISO M׳B
   zCثepɶO@EEE~C
   
   SQL/CLI M SQL/PSM {H̰t׳BzAH@ SQL-92 ׭qCbA
   ̥uQ@ (International, "I") M׳BzC SQL/CLI b@EE~
   FCSQL/PSM ӷ|b 1996 ~qC
   
   F SQL3 ~A٦@Ǫ[pJ
   
     * SQL/MM An ongoing effort to define standard multi-media packages
       using the SQL3 ADT capabilities.
     * Remote Data Access (RDA)
       
   зǩe|ML{ (Standards Committee and Process)
   
   ƹWA@Wh SQL зǩe|CISO @O@Ӱ SQL зǤp
   ChӰaH SQL Ie|Coǰa]q`^XNѻP
   ISO/IEC JTC1/SC 21/WG3 DBL |ĳCDʰѻP ISO SQL зǨwaOJ
   
     * Dw
     * ڦ
     * [j
     * k
     * w
     * 饻
     * 
     * 
     * ^
     * 
       
   NIST T{ (NIST Validation)
   
   bASQL T{u@ National Institute of Standards and
   Training (NIST) iCNIST ثe@MJ (entry level) SQL-92 
   MCNIST T{nDԱQwq@ Federal Information Processing
   Standard (FIPS)Cثe SQL nDwq FIPS 127-2C
   Postscript MrҦiq NIST oCثeqL SQL T{~W]ib
   NIST oC
   
   з SQL ZM (Standard SQL Publications and Articles)
   
   SQL зǦӪCӳiq ANSI oJ
   
     * ISO/IEC 9075:1992, "Information Technology --- Database Languages
       --- SQL"
     * ANSI X3.135-1992, "Database Language SQL"
       
   ʭMLзǪѦҥ~ASQL зǪӪ@ˡC Ӫiq
   HUaoJ
   
     American National Standards Institute
     1430 Broadway
     New York, NY 10018
     USA
     Phone (sales): +1.212.642.4900

    SQL-92 зǥ~A{b٦@޳N~ (Technical Corrigendum) ]
   ^J
   
   * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992

   TC 1 ӥiq ANSI oCTC 1 u ISO XXAΩ ISO M ANSI 
    SQL-92C
   
   зǥ~A] 1992 SQL зǪѡCoǮѴѤ@ӤڼзǩzѪ
   yzC
   
   з
   
   SQL s]hӨLзǦCo`]A@ǦoǧVOwC h
   ƦbWX{AoӦW]|C
   
     * SQL Environments (FIPS 193)
     * Next Generation Repository Systems (X3H4) - @I~ѻP
       "Developing Standards for the Next Generation Repository Systems"
       sDZC
       
28.11 ĤGXISO/ANSI SQL  (ISO/ANSI SQL Foundation)

   SQL3 VO@ӭnb SQL 󤤡J
   
     * 򥻪 SQL/PSM O]Ӧ SQL/PSM-92^
     * sƫA
     * Eo (Triggers)
     * l (Subtables)
     * ⹳ƫA (Abstract Data Types, ADT)
     * ɦVO
       
   磌ɦVOƭӥMnDJ
   
     * wqB@O
     * B@xsbƮw
     * Is~{ǡAǤ SQL 쪺B@AλݭnM~q
       
   oǯOwwq SQL/PSM @
   
   {bjqu@һs SQL-3 ҫAϥM ODMG XҫݻCo
   VOb X3H2 M ISO DBL 峹yzLJe SQL3 M ODMGCb SQL3/OQL
   Merger ̪񪺧s]ioC
   
   SQL3 ɶ
   
    SQL3 u@biA̲׼з٦ݼƦ~~X{C
   
     * کʧ벼 SQL3 ¦q״ɬe (Committee Draft, CD) b
       @EEuiC
     * p벼|aӤjq
     * N|ݭnĤG CD 벼
     * Draft International Standard 벼hb|b 1998 ~i
     * ڼзǥib@EEE~
       
   ANSI зǪsƤ]thC
   
28.12 ĤTXISO/ANSI SQL IsŤ (Call Level Interface)

   SQL/CLI O@ع SQL ƮwIsŤC]p䴩]q
   (shrink-wrapped) ε{CCLI 쥻 SQL Access Group (SAG) @Ӥp
   թe|гyC SAG/CLI Wb 1992 ~HLn Open DataBase Connectivity
   (ODBC) W椽GC@EET~A SAG  CLI  ANSI M ISO SQL e|
   C(SQL Access Group {wX X/Open consortium C)
   
   SQL/CLI ѤFHUƶڼзǡJ
   
     * Wߩk CLI Ӧs SQL Ʈw
     * Dqu (Client-server tools) iyʺA쵲禡wsƮw
     * 䴩ιy״IDqu
       
   SQL/CLI ɶ
   
   зǪ}oL{ASQL/CLI HHt׳BzC
   
     * SQL/CLI O 1992 SQL зǡ]SQL-92^ɿ
     * @EE~A ISO з
     * ISO/IEC 9075-3:1995 Information technology -- Database languages
       -- SQL -- Part 3: Call-Level Interface (SQL/CLI)
     * ثe SQL/CLI VO[W SQL3 \
       
28.13 ĥ|X ISO/ANSI SQL [xsҲ (Persistent Stored Modules)

   SQL/PSM yHU\XR SQLJ
   
     * {ǻy (Procedural language) 
     * ƥy (Multi-statement) Mxs{
     * ~ƻP{ǩIs (External function and procedure calls)
       
   @Ȫε{}ouASQL/PSM  SQL3 ѤFɦVO
   ¦䴩C
   
   ƥyMs{
   
   ƥyMs{ǬDqҴѦhئnBJ
   
     * {Xѩ󤺦s{ǥihy SQL yyAPȤgqi֡C
     * OwXΪ̥iHvQgs{ǧs@өΦhӪASvsC
     * ɵ{XXݨCӦsƮwȤu㳣gMդs{Ǫ{X
       C
     * Xε{洣ѳ@wqMC
       
   {ǻy
   
   {ǻyyyVMLs{ޥ SQL [Wǲε{y\C
   
   yVyy
   
     * If-then-else
     * j鵲c (Looping constructs)
     * ҥ~Bz (Exception handling)
     * Case yy
     * Begin-End ϶
       
   {ǻy٥]ALs{ޥJ
   
     * ܼƫŧi
     * Set yyAΩ (assignment)
     * o{ (process) MA
       
   ~AҦǲ SQL yi]tbhy{ǤC
   
   ~ƻP{ǩIs
   
   @Ӹg`bjqƮw~ wish lists X{AӦ쪺SA O
   IsΪ̩ҼgAbƮwn~{ǡC
   
     * e\Yӹqε{[WۤvƮw
     * ibӸƮwε{ϥ
       
   o\઺nBOƮw]]]AƮwε{^ϥ״I{ǩM
   A ״IoѤ@Ӽзǲ´wXC
   
   SQL/PSM ɶ
   
   SQL/PSM oitJ
   
     * SQL/PSM O SQL-92 ɿ
     *  SQL/PSM qڼзǪܬڼзǪڧ벼b@EE~@
       맹C
     * @EE~몺s|ĳѨMҦ
     * PSM s|ĳwƩ@EE~ETQܤQ|}
     * wƺ򭢡A PSM ib@EE~X
     * xRJ ISO/IEC DIS 9075-4:199? Information technology --
       Database languages -- SQL -- Part 4: SQL Persistent Stored Modules
       (SQL/PSM)
     * { SQL3 [W SQL/PSM 䴩u@C
       
28.14 ĤX ISO/ANSI SQL/X (Bindings)

   KѦҡA{yXQXWߪCثeYO SQL-92 
   ʺAMOJX (dynamic and embedded bindings) `C
   
   {yXPDݸѨMC
   
   ǲε{yӻAƫAM SQL-92 iH۹CLA SQL M
   {yܼƤwqC
   
   磌ɦVyӻAثe SQL ƫABSQL ҫMɦV{y
   YwqC
   
   ҫݦb}oǤeíwUӡC
   
   yXɷ| SQL3 @C
   
28.15 ĤXISO/ANSI SQL XA M ]SQL/XA^

   oW|`޲z (global Transaction Manager) M SQL 귽޲z
   (SQL Resource Manager) ε{ (API) ѼзǡC|ھ
   ISO/IEC 10026 eABz (Distributed Transaction
   Processing^ зǤƨƩIsASQL 귽޲z|ΥH䴩GqTw
   (two-phase commit)C¦O۸g X/Open ǦӨӦۤ@ X/Open X
   AM xa_close, xa_commit, xa_complete, xa_end, xa_forget,
   xa_open, xa_prepare, xa_recover, xa_rollback M xa_start hӨơAH
   SQL ƫAJMXѼƪykC
   
   ISO ثeպɧְlW (fast-tract) X/Open XA WC oӹL{ʤʱ
   Τ@ӥثe~ɳWCH ISO SC21AJTC 1 Ū XA ɧְlW벼b@EE
   ~|GQC}lA@EE~QGQC鵲CpG XA Wg 75% 
   ƩM 2/3  JTC 1 p-members ǡA|@ӰڼзǡC pGgɧְlW
   벼ǡASQL/XA ib 1996 ~зǡC
   
28.16 ĤCXɺA ISO/ANSI SQL

   ɺA SQL BzMɶơC䷧Obd߸ƮɧQΥb@ӯSwɶ
   pC ɺA SQL O@ Rick Snodgrass b@EE|~QGҼgAyz
   oC
   
   X3 ŧGT{@ӷspAISO/IEC 9075 Part 7: SQL/Temporal O@
   SQL/Temporal sDZ
   
----------------------------------------------------------------------------
                                Temporal SQL
                                ************
Rick Snodgrass]TSQL2 e|Du^
31-Dec-1994

   HùL SQL 3 [ɶ䴩D]pb DBL R10-75 ĳAnD SQL
   sӳBzɶʪƮw^CIOHƧκA (ADT's) H䴩
   ɺAC boTʪءAڨϥΨҤlӽҾ֦HƧκA줣
   BzɺAdߡC SOӻAܦhɶʪdߤO SQL ANOݦb
   L{yϥδOJ SQLCLܦb TSQL2A@ӹ SQL-92 ɺA
   XFC
   
  ɨ
  
   Įɶ (Valid-time) 䴩WX@ӮɺA ADT OCϥΫ̡A @
   QwɺAAp DATE  INTERVAL]y|Ҥl^CyۦĮɶA
   檺CHۮɶܡA]{ܤFCpô@ӦĮɶ檺Y檺
   ɶWO (timestamp)A|Qd߻yzѬӦ椤UƭȪզXĪɶ
   C oӵLɶWOϱodߥiH²aFXӡC
   
  Ӯ׬sXxs{ɸ
  
   The University of Arizona  Office of Appointed Personnel bƮw
   ǸơA]AWrBثe~Mثe¾C oǥiΤ@²檺FX
   ӡC
   
        Employee(Name, Salary, Title)

   ϥγoӪM@ӹ~Q²C
   
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob'

   {b OAP QAOXͤCǡAb椤[F@AͥHU
   (schema)J
   
        Employee(Name, Salary, Title, DateofBirth DATE)

   M@WXͤӴM~C
   
        SELECT DateofBirth
        FROM Employee
        WHERE Name = 'Bob'

  Ӯ׬sXxsv
  
   OAP QvqơCAL̥[WA @Xܦ檺Ʀ
   }lġAt@XƦɥġC
   
   Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)
   
   HƼҫ (data model) AoǷsM DateofBirth @LOCLA
   ̪sbͦhصGC
   
  Ӯ׬sXM (Projection)
  
   nXثe~|xC
   
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop

   oydߤ񤧫eCܩOsWCOAP QoX~vU
   uC SOaAݭnXC@Wb@~S̪ɶCaA
   SQL వC@Wb~Sվ¾ΥihܧC
   
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

                                1

   n`NT Bob ~db $70,000CҥHAGӬO Bob C
   
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1994-12-31

   t@kO~M¾ŸƦLΪ̡AӥѥΪ̧XL~SܧC o
   kJlޡA礣ڡCt@kOɶqϥ SQLC
   
CREATE TABLE Temp(Salary, Start, Stop)
AS      SELECT Salary, Start, Stop
        FROM Employee;

   repeat
   
        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)
        until no rows updated;

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))

   j餤X|ά۾FӻݭnX֪ɬqCbapAj| log N 
   AN @s꭫|ά۾FP~ƶqCŪ̥iۦdߦbHWҤl
   A HҥTʡC
   
   ĤTؤkOϥ SQL }Ҥ@Ӵ (cursor)CC~޲z@ӦU
   q (linked list)Co}lɻݬťաC
   
DECLARE emp_cursor CURSOR FOR
        SELECT Salary, Title, Start, Stop
        FROM Employee;
OPEN emp_cursor;
loop:
        FETCH emp_cursor INTO :salary, :start, :stop;
        if no-data returned then goto finished;
        find position in linked list to insert this information;
        goto loop;
finished:
CLOSE emp_cursor;

   ЦALXM~C
   
   pGЬO ORDER BY StartAëDnC
   
   LצpA@y²檺d߬O SQL-92 \FXoتCϥ TSQL2
   ܳod߷|²C
   
        SELECT Salary
        FROM Employee

  רҬsXs (JOIN)
  
   @ӧEikOحA~B¾šBXͤƤ}A q׶}
   ~SvɹJ쪺DC]KpAڭ̥H᪺QפAҼ{Xͤ
   C^
   
        Employee1 (Name, Salary, Start DATE, Stop DATE)
        Employee2 (Name, Title, Start DATE, Stop DATE)

   Employee1 pUJ
   
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1993-12-31

   oO Employee2 C
   
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

   ܤAo~ܱo²C
   
        SELECT Salary, Start, Stop
        FROM Employee1
        WHERE Name = 'Bob'

   pG OAP Q@Ӫ椤]A~B¾쪺ɬq]Y OAP Q@ӹ 1 Φ
   ^H@ӤkOLXӪAΪ̧XզXCt@kO
    SQLCaAod߭nR Employee1 CM Employee2 |pA
   |إiX{C
   
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

   TXҦάO@Dԩʪu@Cϥ TSQL2Ai@ӨɺAs
   NpH̩ҴC
   
        SELECT Employee1.Name, Salary, Dept
        FROM Employee1, Employee2
        WHERE Employee1.Name = Employee2.Name

  Ӯ׬sXE (AGGREGATES)
  
   {b OAP Qݤγ̰~SOH[WɶeAo²C
   
        SELECT MAX(Salary)
        FROM Employee

   {b[WF~vAڭ̭nXPɶ̰~vCDMO SQL 
   ѨɺAEC²檺kOLXơAΤHX̤jȡC t@
   kOA@ӷɪ (snapshot) EdƬϥλEdߡA A
   ƬɺAECӤϥλEdߥΩXj󥦥ƭȪ~C
   
        SELECT Salary
        FROM Employee AS E1
        WHERE NOT EXISTS (SELECT *
                          FROM Employee AS E2
                          WHERE E2.Salary > E1.Salary)

   oӬdܬɺAdߨäLCHUO@ؤkC
   
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;

   okإ߻UCڭ̦boӪ椤[WӮɬq|WBU
   C ڭ̧ҦldߤXRA]vT NOT EXISTSC̫
   ̱qU椤X̪ɬqAeڭ̧X~TC pjaҮơAo
   ˪ SQL ylɮĲvD`CA]ǽ_dߡC
   
   ĤTӤkOɶq֥ SQLAӦbDWҥΪyδЧX̪vC
   
   ϥ TSQL2 A²檽C
   
        SELECT MAX(Salary)
        FROM Employee

  Kn
  
   jƮwε{ݭnBzHɶܪơCĮɶb SQL ä䴩
   CܦhɺAdߤOH SQL ANOݭn SQL OJ{ǻyA]
    SQL bƼҫMd߻ycʥF靈Įɶ䴩C
   
   t@譱Aڭ̥ܽdX[WĮɶ䴩ݭn DBMS I@X@ǧܡA 
   @ʦa²Ƥ@ǬdߡAèϨLdܱoiCNӤ]ixscB 
   k̨Τ (optimization)Cӳ̨ΤƪiɭP{jTɡC
   
   H SQL3 @ӷs䴩HɶܪơAڭ̥iH}BzoΡA
   } SQL3 BzɺAƪOC
   
----------------------------------------------------------------------------
           Accredited Standards Committee* X3, Information Technology
NEWS RELEASE

sJ       PR/96-0002

^СJ       Barbara Bennett at bbennett@itic.nw.dc.us

             X3 ŧG{i@ӳoM, ISO/IEC 9075 Part 7:  SQL/Temporal

Washington D.C., 1996 ~@
----------------------------------------------------------------------------

   -- Accredited Standards Committee X3, Information Technology ŧG{i@
   Ӧ SQL/Temporal 䴩sMסAISO/IEC 9075 Part 7Aç⦳u@椩
   Technical Committee X3H2, DatabaseCoӫĳзǭqNX{ SQL3
   зǪ@ӷsApĤC Temporal SQL  SQL @өAb SQL 
   ƮwҤ䴩sMBzɺAơCU X3H2 |ĳw@EE~TQ
   @ܤQ|bĴ (Kansas) |C
   
   pdߡAilHJ
   
        Chairman of X3H2,
        Dr. Donald R. Deutsch,
        Sybase, Inc., Suite 800,
        6550 Rock Spring
        Drive, Bethesda, MD  20817.
        Email: deutsch@sybase.com.

   {MDi઺MQMLƶ]vBӼС^Co⦳ƱHJ
   
        X3 Secretariat at
        1250 Eye Street
        NW, Suite 200,
        Washington DC  20005.
        Email: x3sec@itic.nw.dc.us
        FAX:  (202)638-4922.

28.17 ĤKXISO/ANSI SQL hC (SQL/MM)

   @ӬإߥΩhCε{ SQL 禡ws ISO/IEC ڼзǤƭp
   b@EET~ǶiCoӷsзǤƦʦW SQL Multimedia
   (SQL/MM)A|ί SQL3 W椤HƫA]ADT^WMؼЫw
   SQL ADT wqMC
   
   SQL/MM ؼЬзǤƬǩMu{BMBzB޲zhC骫ApvB
   nB ʵeB֩MƮwChƷ|X@إΩL JTC1 з
   ´]p SC18Bv SC24BӤMʧ@Ϲ SC29^wq
    SQL yX (binding)C
   
   SQL/MM M׭pX|@hзǡA]twƶqC Ĥ@
   |OLpئج[CLCӳ|M`@ӯSw SQL 
   {MCHU@EE|~Ksb SQL/MM J
   
     * Part 1: Framework A non-technical description of how the document
       is structured.
     * Part 2: Full Text Methods and ADTs for text data processing. About
       45 pages.
     * Part 3: Spatial Methods and ADTs for spatial data management.
       About 200 pages with active contributions from Spatial Data
       experts from 3 national bodies.
     * Part 4: General Purpose Methods and ADTs for complex numbers,
       Facilities include trig and exponential functions, vectors, sets,
       etc. Currently about 90 pages.
       
   hӦŶMazƪзǤƪu@bi椤J
   
     * ANSI X3L1 - Geographic Information Systems. Unisys  Mark
       Ashworth of Unisys O X3L1 M ANSI X3H2 pHC L]O SQL/MM
       ZĤ@BTM|sC
     * ISO TC 211 - Geographic information/Geomatics
       
29. PostgreSQL ޳N䴩

   pGA޳NWDJxAAiqlܡJ
     * [380]pgsql-questions@postgresql.org
     * sD [381]comp.databases.postgresql.general
     * sD [382]comp.databases.postgresql.hackers
     * sD [383]comp.databases.postgresql.doc
     * sD [384]comp.databases.postgresql.bugs
     * sD [385]linux.postgres
     * LqH׾ [386]http://www.postgresql.org
       
   ιwb@餺^СC]p~ΤdܼsAΤSUA
   piƥHʸUpΤᴣѧ޳N䴩Cql䴩qܤ䴩KohA
   ]AiŤUMKW~TB{XASiǰeqH׾ / sD
   աC
   
29.1 ӷ~䴩

   PostgreSQL ´]|VqX޳N䴩Aұoq|Ω@@ɦUah
   Mgx ]UM ftp^C]|ΨӦLsBީMyHUUȡCL
   } [387]http://www.postresql.orgC
   
   t@WGreat Bridge Corporationi PostgreSQL }oBPM
   䴩CL̪ [388]http://www.greatbridge.comCO@
   Landmark Communications corpMLꤽq]ߪ@qAMV@
   ɤj~jqMM䴩 PostgreSQLC
   
   A]ib RedhatBAndersonBWGS]Work Group Solutions^M~Uݦo
   UC AiLUA]L̦ܦn CBC++ Ma] PostgreSQL H C
   g^C
     * Redhat qXƮwUݳ [389]http://www.redhat.com
     * Work Group Solutions [390]http://www.wgs.com
     * Anderson Consulting [391]http://www.ac.com
       
30. g٩Mӷ~譱

   ӷ~Ʈwúܦh|ppB{BPBΡB|O١BOI|B 
   udO١BLU{u֧QBsMsiOC ҦoǶOγ
   Ʈw}oAΩﵽƮw~M޳NC AʶR@Ӱӷ~ƮwA
   @BO|ڡBs}oaC
   
   ӥBAӷ~ƮwݤIMʶR Unix A˩M@C ҦoǦ
   ΤC
   
   Mӷ~ƮwۤAPostgreSQL ֦Lݪ|uIA]Opsy
   C @jsH PostgreSQL }o@XmCҦpAH@Ӱ]ҤlA pG
   b꦳@ʸUqAӨCQ] PostgreSQL ӻWҭȡ^A
   CKo@dUIIoNOpWn}o]NC
   
   ثeAPostgreSQL {j 250,000  CBC++ {CpGC C {X
   ȤGAѾ PostgreSQL KȤQUI
   
   ܦhqw}ojq CBC++ {H@ۥΡC]AޤJ PostgreSQL {X
   MPpWLqX@|綠qaӤjqQqA`ٮɶMHOC
   
31. LƮwW

   HUCXL UnixBLinux  SQL ƮwC
     * IΨF Applications->databases.
       [392]http://www.caldera.com/tech-ref/linuxapps/linapps.html
     * IΨF Applications->databases.
       [393]http://www.xnet.com/~blatura/linapps.shtml
     * Ʈw귽 [394]http://linas.org/linux/db.html oO Linas
       Vepstas gC [395]linas@fc.net
     * ۥѸƮwW
       [396]http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html
     * Browne  RDBMS W [397]http://www.hex.net/~cbbrowne/rdbms.html
        Christopher B. Browne gC [398]cbbrowne@hex.net
     * SAL p RDBMS W [399]http://SAL.KachinaTech.COM/H/1/
     * SAL ɦV DBMS W [400]http://SAL.KachinaTech.COM/H/2/
     * SAL's uMLƮwW [401]http://SAL.KachinaTech.COM/H/3/
     * ACM SIGMOD ioƮwn
       [402]http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/
       
32. UjM

   pD`sA֦jqnMU観@ӸTvC b@ɥHC~ʤ
   Tʪt׼WCڦpAyj@dUӺI
   
   njMơAAݭnBBLycos jMCh춮AI searchC
   ϥιLoﶵ (filtering options) ӦAjMnDCw]jMʥO
   Intelligent searchAo@ƤΦCXҦiʡCIOptions
    EXACT phrasejMBANDjMBORjMC o˧Ai֧
   AQnTC~Ab search ؿUA radio buttons ΥHܷjMsD
   աBpζC
   
33. 

   bsLҦۥѩMio{XƮwAo{u PostgreSQL O@
   W̦B̦hHϥΩMۥ SQL RDMS]p^C
   
   PostgreSQL D`lޡA]ܦhu@wC ODBC M JDBC Xʵ{A
   y۳oǡAiHsgWߩƮwε{C ODBC  JDBC Xʵ{g
   PostgreSQL ε{ܮeӨLƮwAp OracleBSybase M
   InformixAϤMC
   
   Ai|ݡu PostgreSQLHv׬O]ѹs}lA }o@ӸƮw
   ӤjqɶAܤ@ӺHU󪺸ƮwtΦXG`ѡJ
   
   @
     * io{XXO}{Xt
     * S[vry (license string)BS֦vry]Ķ
       JPostgreSQL O GPLAëDLvĳCpGSvryAϥΥKHk
       FI^
     * ibpG
     * w}oh~
     *  ISO/ANSI SQL 92]M SQL 89^з
     * iӪݭnAp SQL 3]SQL 98^
     * ֦i\
       
   ƮwtΡAӥu PostgreSQL ҦoǱAbopUO@MA
   nC Ai|PostgreSQLO@өǦWCڪݪkOXWHo
   @ɷ|ûϥ PostgreSQLII
   
34. FAQX PostgreSQL D

   аѾ\@ʡBLinux M Irix ̷s FAQJ
     * [403]http://www.postgresql.org/docs/faq-english.shtml
       
35. 󪺨L榡

   HQ@ؤP榡XXXDVIBPostscriptBLaTeXBLyXBGNU-info
   BHTMLBRTF ]Rich Text Format^B¤rBUnix man pages M SGMLC
     * Aib
       [404]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/ o
       H HTMLBDVIBPostscript  SGML 榡g@ tar.gz ɡC ]Ķ
       Jsunsite.unc.edu wW metalab.unc.eduC^
     * ¤rɦbJ [405]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
     * Ly½ĶApkBwBZBB
       [406]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO ڹ½ĶL
       yULwC
       
   H@ӦWSGML-ToolsugAibHUaJ
   [407]http://www.sgmltools.org sĶ{A|oHUOJ
     * sgml2html databasehowto.sgml ] HTML ɡ^
     * sgml2rtf databasehowto.sgml ] RTF ɡ^
     * sgml2latex databasehowto.sgml ] LaTeX ɡ^
       
   LaTeX iഫ PHP ɡAuݨϥ sgml2latex]M dvips^
   Postscript XAΥ Acrobat distill] [408]http://www.adobe.com^Bz
   ӿXJ
     _________________________________________________________________
   
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
     _________________________________________________________________
   
   A]i Ghostscript O ps2pdfCps2pdf ѤF Adobe M Acrobat
   Distiller ~XGҦ\J PostScript ର Portable Document
   Format (PDF) ɡCps2pdf ϥΤF@ӲӤpROZ]妸ɡ^AҰ
   GhostscriptAD@ӦW pdfwrite SX]ơCnϥ ps2pdf
   Apdfwrite ]ƻݦbsĶ Ghostscript ɦb makefile wFԱаѾ\
   Ghostscript sĶC
   
   J
     * [409]http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html
       
   A]ibHUMgx쥻J
     * [410]http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html
     * [411]http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html
     * [412]http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.htm
       l
     * [413]http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.h
       tml
     * LbA]H}ӻ^xib
       [414]http://sunsite.unc.edu/LDP/hmirrors.html Aܤ@ӺM
        /LDP/HOWTO/PostgreSQL-HOWTO.html ؿC
       
   ]ĶJ󪺤ejXfib
   [415]http://www.linux.org.tw/CLDP/HOWTO/ CӭnͤAAݭn
   bg5sgmltoolsAib [416]http://www.linux.org.tw/CLDP/ C^
   
   n[ dvi 榡Aϥ xdvi {Cb Redhat Linux AAizL
   ControlPanel | Applications | Publishing | TeX s
   tetex-xdvi*.rpm MAY xdvi {C
   
   n\Ū dvi AOJ
   
        xdvi -geometry 80x90 howto.dvi
        man xdvi

   MϥηƹվjpCsɨϥνbYBPage UpBPage Down AA]i
    'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' rӲWBUBmBe
   ᭶C n expert menuA 'x'C
   
   Aiε{ 'gv' (ghostview)  'ghostscript' Ӿ\Ū postscript ɡCb
   RedHat Linux Aghostscript {Ob ghostscript*.rpm MAgv hb
   gv*.rpmCAizL ControlPanel | Applications | Graphics s쥦
   Cgv { ghostscript αohCghostscript M gv ]ibLxAp
   OS/2B 95  NT oAA]iboǥx\ŪC
   
     * b [417]http://www.cs.wisc.edu/~ghost o ghostscript  95
       BOS/2 ML@~tΪC
       
   n\Ū postscript AOX
   
                gv howto.ps
                ghostscript howto.ps

   `NJܪApGAQLXo postscript ɡAjݭn 113 C ]Ķ
   Jgv O ghostscript @ӫeݬɭAҥHYϧAu gvAA]nw
   ̡C~Ab OS/2 MèS gvAu GSViewA@өM gv \t
   h{CԱа [418]http://www.cs.wisc.edu/~ghostC^
   
   Aiϥ Netscape NavigatorAMicrosoft Internet ExplorerARedhat Baron
   Web Browser ΥLUsӾ\Ū HTML 榡C
   
   Ai LyXALaTeX @ X-Window eݤӾ\Ū LaTeX M LyX ɡC
   
36. vMv

   Copyright Al Dev (Alavoor Vasudevan) 1997-2000.
   
   Copyright policy is GNU/GPL as per LDP (Linux Documentation project).
   LDP is a GNU/GPL project. Additional restrictions are - you must
   retain the author's name, email address and this copyright notice on
   all the copies. If you make any changes or additions to this document
   then you should intimate all the authors of this document.
   
   NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall the
   author/authors of this document be liable for any damages whatsoever
   (including without limitation, special, incidental, consequential, or
   direct/indirect damages for personal injury, loss of business profits,
   business interruption, loss of business information, or any other
   pecuniary loss) arising out of the use of this document.
   
   Author/authors offers no warranties or guarantees on fitness,
   usability, merchantability of this document. Brands, companies and
   product names mentioned in this document are trademarks or registered
   trademarks of their respective holders. Please refer to individual
   copyright notices of brands, companies and products mentioned in this
   document. It is your responsibility to read and understand the
   copyright notices of the organisations/companies/products/authors
   mentioned in this document before using their respective information.
   
Appendix

37. ҡXANSI/ISO SQL 1992 yk

   oɮפ]Aoy BNF H`׬𪬼ұ (depth-first tree
   traversal)Ajb 27-AUG-1992 11:03:41.64 CoӯSwҥΪ
   BNF Ou ANSI M SQL2 C
   


<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>]ϥΤrҥΪťզr^

<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>]!! ѬݤkWh^

<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>]!! ѬݤkWh^

<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>]kwq楽ܡ^


<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>]!! ѬݤkWh^

<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 pa
ren>

<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 pare
n> ]

<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>]ѬݤkWh^

<C host identifier> ::=
    !! <EMPHASIS>]ѬݤkWh^

<COBOL host identifier> ::= !! <EMPHASIS>]ѬݤkWh^

<Fortran host identifier> ::= !! <EMPHASIS>]ѬݤkWh^

<MUMPS host identifier> ::= !! <EMPHASIS>]ѬݤkWh^

<Pascal host identifier> ::= !! <EMPHASIS>]ѬݤkWh^

<PL/I host identifier> ::= !! <EMPHASIS>]ѬݤkWh^

<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 pare
n>

<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 pa
ren>

<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>]ѬݤkWh^

<host PL/I label variable> ::= !!<EMPHASIS>]ѬݤkWh^

<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>

38. AXǪ SQL ɤ

38.1 PostgreSQL ɤ

   SQL ɤޤ]]tb PostgreSQL GCSQL ɤޤZb src/tutorial ؿ
   C
   
38.2 p URL 

   Ǫ̪ SQL ɤޥibHUa
     * Jim Hoffman  [419]http://w3.one.net/~jhoffman/sqltut.htm
     * Carnegie Mellon Univ [420]http://www.heinz.cmu.edu/project/dbms b
       technical->SQL_examples.htmlMLC
     * Concord Univ
       [421]http://www.cs.concordia.ca/Course_Notes/oracle/browser/node1.
       html
       
   NκHql
     * Jim Hoffman [422]jhoffman@one.net
       
   John Hoffman ]˥HU}J
     * SQL Reference
       [423]http://www.contrib.andrew.cmu.edu/~shadow/sql.html
     * Ask the SQL Pro [424]http://www.inquiry.com/techtips/thesqlpro/
     * SQL Pro's Relational DB Useful Sites
       [425]http://www.inquiry.com/techtips/thesqlpro/usefulsites.html
     * Programmer's Source
       [426]http://infoweb.magi.com/~steve/develop.html
     * DBMS Sites [427]http://info.itu.ch/special/wwwfiles 즹o
       compdb.html 
     * DB Ingredients [428]http://www.compapp.dcu.ie/databases/f017.html
     * Web Authoring [429]http://www.stars.com/Tutorial/CGI/
     * Computing Dictionary
       [430]http://wfn-shop.princeton.edu/cgi-bin/foldoc
     * DBMS Lab/Links [431]http://www-ccs.cs.umass.edu/db.html
     * SQL FAQ
       [432]http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ Go
       here and see file SQL_TOC.html
     * SQL Databases
       [433]http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html
     * RIT Database Design Page
       [434]http://www.it.rit.edu/~wjs/IT/199602/icsa720/icsa720postings.
       html
     * Database Jump Site [435]http://www.pcslink.com/~ej/dbweb.html
     * Programming Tutorials on the Web
       [436]http://www.eng.uc.edu/~jtilley/tutorial.html
     * Development Resources
       [437]http://www.ndev.com/ndc2/support/resources.htp
     * Query List [438]http://ashok.pair.com/sql.htm
     * IMAGE SQL Miscellaneous
       [439]http://jazz.external.hp.com/training/sqltables/main.html
     * Internet Resource List
       [440]http://www.eit.com/web/netservices.html
       
38.3 uW SQL 

   HUouW SQL 
     * SQL ǽҵ{ [441]http://sqlcourse.com
     * SQL iҵ{ [442]http://sqlcourse2.com
       
39. XLinux ֳtw˫

   pGApb Linux ϥ PostgreSQLAӦbw Linux ɻݭnUAаѦҦb
   oܪaC̥]tHUDDJ
     * Salient Features of Linux - Why Linux is better as a database
       server when compared with Windows 95/NT
     * 10 minutes Linux Quick Install Instructions
     * Microsoft-Linux Analogy List
     * Quick Steps to Recompile the Linux Kernel
       
     * D [443]http://www.aldev.8m.com
     * Mgx [444]http://aldev.webjump.com
     * Mgx [445]http://www.homepages.infoseek.com/~aldev1/index.html
     * Mgx [446]http://www3.bcity.com/aldev/
     * Mgx [447]http://www.members.spree.com/technology/aldev/
       
40. BXw Midgard

   Ӧ [448]http://www.midgard-project.org/download/binaries  RPMS ثe
   ]A PostgreSQL 䴩AҥHAnqlX tar.gz ɦwˡC
   
   U Midgard lX tar.gz ɡA\Ū INSTALL.REDHAT ɡX
     _________________________________________________________________
   
bash# cd midgard-lib-1.4beta6
bash# ./configure --prefix=/usr/local --with-mysql=/usr/local --includedir=/usr
/include/mysql --with-midgard=/usr/local --with-pgsql=/var/lib/pgsql --included
ir=/usr/include/pgsql
bash# make
bash# make install
bash# ldconfig -v | grep -i midga
YɡAH make install o˰K
bash# cp *.h /usr/local/include


bash# cd ../mod_midgard-1.4beta5c
bash# ./configure --prefix=/usr/local --with-mysql=/usr/local --includedir=/usr
/include/mysql --with-midgard=/usr --with-pgsql=/var/lib/pgsql --includedir=/us
r/include/pgsql
bash# make
bash# make install
# ק apache ]w /usr/KK
#modify apache line to correct /usr/.....
bash# vi /etc/httpd/conf/httpd.conf   ]Φb  /etc/apache/httpd.conf^
bash# /etc/init.d/apache restart
# AsҰ apacheIII

bash# cd ../midgard-php-1.4beta6
bash# ./configure '--with-apxs' '--with-mysql' '--with-pgsql' '--with-midgard'
--prefix=/usr/local --with-midgard=/usr/local

bash# gvim Makefile
b INCLUDE ܼƤ[W -I/usr/include/pgsqlC

]npUb $(APXS) O[W $(INCLUDE)X

libphp3.so: mod_php3.c libmodphp3-so.a  pcrelib/libpcre.a midgard/libphpmidgard
.a
    -@test -f ./mod_php3.c || test -L ./mod_php3.c || $(LN_S) $(srcdir)/mod_php
3.c ./mod_php3.c
    -@test -f ./mod_php3.c || test -h ./mod_php3.c || $(LN_S) $(srcdir)/mod_php
3.c ./mod_php3.c
    $(APXS) -c -o libphp3.so  -I$(srcdir) $(INCLUDE) -I. -I/usr/local/include -
I/usr/lib/glib/include  -Wl,'-rpath /usr/local/lib' ./mod_php3.c libmodphp3-so.
a
$(APXS_LDFLAGS)

bash# make
bash# make install
# ק apache ]w /usr/KK
# [WpUƦX
    LoadModule php4_module        modules/libphp4.so
            AddModule mod_php4.c
    LoadModule php4_module        lib/apache/libphp4.so

    <IfModule mod_php4.c>
        AddType application/x-httpd-php4 .php4
        AddType application/x-httpd-php4 .php
        AddType application/x-httpd-php4-source .phps
        AddType application/x-httpd-php .php
    </IfModule>

bash# vi /etc/httpd/conf/httpd.conf   ]Φb /etc/apache/httpd.conf^

bash# /etc/init.d/apache restart
# nsҰ apacheIII
     _________________________________________________________________
   
40.1  Midgard PHP A

   nզwˬO_\гo˰X bAڥؿإߤ@ɮסCڳq`٥
    info.phpAæb䶡[W@J
     _________________________________________________________________
   
<?phpinfo()?>
     _________________________________________________________________
   
   bAsJJhttp://localhost/info.php
   
   A|@}GpnACXA]wҦơC Aj|oɮשb
   bͲΪAAF}oɰM@ơA |ܤKC
   
40.2 Ow OpenSSL

   Ainb
   [449]ftp://ftp.deva.net/pub/sources/crypto/rsaref20.1996.tar.Z 
   RSA M˳nHҥ SSL [KC]Ьݬ Linux Ъ OpenSSL
   [450]http://www.openssl.orgC
   
   pGAQҰ SSL]ΧAJx^AUlX Apache-Midgard RPM M
    *.spec ɩMRh SSLAA RPMC

References

   1. mailto:alavoor@yahoo.com
   2. mailto:a9504480@graduate.hku.hk
   3. mailto:scrappy@postgreSQL.org
   4. http://www.greatbridge.com/
   5. http://www.aldev.8m.com/
   6. http://aldev.webjump.com/
   7. http://www.devshed.com/BrainDump/MySQL_Benchmarks/
   8. http://www.tcx.se/
   9. http://www.lsl.com/
  10. http://www.cheapbytes.com/
  11. http://www.debian.org/vendors.html
  12. http://www.postgresql.org/
  13. mailto:lamar.owen@wgcr.org
  14. http://www.ramifordistat.net/postgres
  15. http://www.postgresql.org/
  16. http://www.redhat.com/pub/contrib/i386/
  17. ftp://ftp.redhat.com/pub/contrib/i386/
  18. ftp://ftp.postgresql.org/pub/bindist
  19. http://www.postgresql.org/
  20. http://logical.thought.net/postgres95/
  21. http://www.itm.tu-clausthal.de/mirrors/postgres95/
  22. http://s2k-ftp.cs.berkeley.edu:8000/postgres95/
  23. http://xenium.pdi.net/PostgreSQL/
  24. http://s2k-ftp.cs.berkeley.edu:8000/postgres95/
  25. ftp://ftp.postgresql.org/pub
  26. ftp://ftp.chicks.net/pub/postgresql
  27. ftp://ftp.emsi.priv.at/pub/postgres/
  28. ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95
  29. ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL
  30. ftp://ftp.jaist.ac.jp/pub/dbms/postgres95
  31. ftp://ftp.luga.or.at/pub/postgres95
  32. ftp://postgres95.vnet.net/pub/postgres95
  33. ftp://ftpza.co.za/mirrors/postgres
  34. ftp://sunsite.auc.dk/pub/databases/postgresql
  35. ftp://ftp.task.gda.pl/pub/software/postgresql
  36. ftp://xenium.pdi.net/pub/PostgreSQL
  37. ftp://sunsite.unc.edu/
  38. http://www.ramifordistat.net/postgres
  39. mailto:lamar.owen@wgcr.org
  40. http://www.postgresql.org/
  41. http://www.RPM.org/
  42. http://www.aldev.8m.com/
  43. http://aldev.webjump.com/
  44. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  45. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  46. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  47. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  48. ftp://ftp.redhat.com/pub/contrib/i386
  49. http://www.blackdown.org/
  50. ftp://ftp.redhat.com/pub/contrib/i386
  51. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  52. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  53. http://www.insightdist.com/psqlodbc/
  54. http://www.mutinybaysoftware.com/
  55. ftp://ftp.postgresql.org/pub/patches
  56. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Quick-Installation
  57. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#backup_restore
  58. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#security
  59. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Examples RPM
  60. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#auth_method
  61. http://www.heimhardt.de/htdocs/ssh.html
  62. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Enhydra
  63. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Zope
  64. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#OpenACS
  65. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#PHP
  66. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Enhydra
  67. http://www.inprise.com/
  68. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Zope
  69. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#OpenACS
  70. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#PHP
  71. http://www.ist.co.uk/xd
  72. http://www.troll.no/
  73. ftp://ftp.troll.no/
  74. http://www.kaze.stetson.edu/cdevel/code_crusader/about.html
  75. http://www.metrowerks.com/
  76. http://www.redhat.com/
  77. http://www.cygnus.com/
  78. http://www.inprise.com/
  79. http://www.inprise.com/
  80. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Perl Database Interface
  81. ftp://ftp.redhat.com/pub/contrib/i386/lesstif*.rpm
  82. http://www.LinuxMall.com/products/00487.html
  83. ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm
  84. http://www.scriptics.com/
  85. http://www.tcltk.com/
  86. http://www.neuron.com/
  87. ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm
  88. http://sunscript.sun.com/
  89. http://sunscript.sun.com/TclTkCore/
  90. ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z
  91. ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm
  92. ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm
  93. http://www.man.ac.uk/~whaley/kj/kanch.html
  94. http://www.redhat.com/
  95. http://www.identicalsoftware.com/xwpe/
  96. ftp://ftp.rpi.edu/~payned/xwpe
  97. ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm
  98. ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm
  99. ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm
 100. http://www.insightdist.com/psqlodbc
 101. http://www.postgresql.org/
 102. http://www.iodbc.org/
 103. http://www.openlinksw.com/
 104. http://www.insightdist.com/psqlodbc
 105. http://www.ids.net/~bjepson/freeODBC/
 106. http://members.nbci.com/anhr
 107. http://www.openlinksw.com/
 108. http://www.demon.co.uk/finder/postgres/index.html
 109. ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz
 110. http://www.openlinksw.com/
 111. http://www.retep.org.uk/postgres
 112. http://eagle.eku.edu/tools/jdbc/faq.html
 113. http://splash.javasoft.com/jdbc
 114. http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc
 115. http://javanese.yoyoweb.com/JDBC/FAQ.txt
 116. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing Java
 117. ftp://ftp.redhat.com/pub/contrib/i386
 118. http://www.blackdown.org/
 119. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing Java
 120. mailto:E.Mergl@bawue.de
 121. http://www.perl.com/perl/index.html
 122. http://reference.perl.com/
 123. http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Perl/
 124. http://www.perl.com/CPAN/modules/by-module/CPAN
 125. http://www.perl.com/CPAN-local/modules/by-module
 126. ftp://ftp.redhat.com/pub/contrib/i386
 127. http://www.accessone.com/~jql/perlqt.html
 128. ftp://ftp.redhat.com/pub/contrib/i386
 129. ftp://ftp.redhat.com/pub/contrib/i386
 130. http://reference.perl.com/query.cgi?ui
 131. http://reference.perl.com/query.cgi?database
 132. http://www.perl.com/CPAN-local/modules/by-module/B/
 133. http://www.indigostar.com/perl2exe.htm
 134. http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz
 135. http://www.perl.com/CPAN/modules/by-module/CPAN
 136. http://www.perl.com/CPAN-local/modules/by-module
 137. http://www.perl.com/CPAN-local/modules/by-module/DBI
 138. http://www.symbolstone.org/technology/perl/DBI
 139. http://www.symbolstone.org/technology/perl/DBI/doc/faq.html
 140. http://www.symbolstone.org/technology/perl/DBI
 141. http://www.fugue.com/dbi
 142. http://www.perl.com/reference/query.cgi?section=database
 143. http://rpmfind.net/linux/rpm2html/search.php?query=DBI
 144. http://www.perl.com/CPAN/modules/by-module/CPAN
 145. http://www.perl.com/CPAN-local/modules/by-module
 146. http://www.perl.com/CPAN-local/modules/by-module/DBD
 147. http://www.perl.com/CPAN/modules/by-module/DBD
 148. http://www.perl.com/CPAN
 149. http://www.edmund-mergl.de/export/DBD-Pg.zip
 150. http://rpmfind.net/linux/rpm2html/search.php?query=DBD
 151. http://www.perl.com/CPAN-local/modules/by-module
 152. mailto:E.Mergl@bawue.de
 153. http://www.symbolstone.org/technology/perl/DBI/tidbits
 154. http://www.tpj.com/
 155. http://www.fugue.com/dbi
 156. mailto:dbi-announce-request@fugue.com
 157. mailto:dbi-dev-request@fugue.com
 158. mailto:dbi-users-request@fugue.com
 159. http://outside.organic.com/mail-archives/dbi-users/
 160. http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Interest
 161. http://www.symbolstone.org/technology/perl/DBI
 162. http://www.roth.net/
 163. http://www.algonet.se/~sommar/mssql
 164. http://www.perlclinic.com/
 165. http://www.perldirect.com/
 166. http://www.westlake.com/training
 167. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing Perl
 168. http://www.flex.ro/pgaccess
 169. mailto:teo@flex.ro
 170. http://gtksql.sourceforge.net/
 171. https://sourceforge.net/project/?form_grp=533
 172. http://www.troubador.com/~keidav/index.html
 173. mailto:keidav@whidbey.com
 174. http://www.ucolick.org/~de/
 175. http://www.troubador.com/~keidav/index.html
 176. mailto:de@ucolick.org
 177. http://www.mutinybaysoftware.com/
 178. mailto:keidav@mutinybaysoftware.com
 179. http://www.troubador.com/~keidav/index.html
 180. mailto:keidav@whidbey.com
 181. http://www.ucolick.org/~de
 182. http://www.ucolick.org/~de/Tcl/pictures
 183. mailto:de@ucolick.org
 184. http://www.pgadmin.freeserve.co.uk/
 185. http://www.phpwizard.net/projects/phpPgAdmin
 186. http://www.psn.co.jp/PostgreSQL/pgbash/index-e.html
 187. http://www.webmin.com/webmin
 188. http://metalab.unc.edu/LDP/HOWTO/CPU-Design-HOWTO.html
 189. http://directory.google.com/Top/Computers/Hardware/Components/Microprocessors
 190. http://directory.google.com/Top/Computers/Hardware/Open_Source
 191. http://www.opencores.org/cores/or1k
 192. http://www.opencores.org/
 193. http://www.estec.esa.nl/wsmwww/leon
 194. http://www.f-cpu.org/
 195. http://f-cpu.tux.org/
 196. http://www.f-cpu.de/
 197. http://www.asahi-net.or.jp/~uf8e-itu
 198. http://www.cmosexod.com/
 199. http://www.scrap.de/html/opencore.htm
 200. http://www.opencores.org/
 201. http://opencollector.org/
 202. http://www.arm.com/Documentation
 203. http://www.cogcomp.com/
 204. http://www.elbrus.ru/roadmap/e2k.html
 205. http://www.samsungsemi.com/
 206. http://www.alpha-processor.com/
 207. http://developer.intel.com/design/ia-64
 208. http://www.transmeta.com/
 209. http://www.sun.com/
 210. http://www.sunmicrosystems.com/
 211. http://www.mips.com/
 212. http://www.sgi.com/processors
 213. http://www.idt.com/
 214. http://www.motorola.com/SPS/PowerPC/index.html
 215. http://www.mot-sps.com/
 216. http://www.mot-sps.com/
 217. http://www.hitachi.com/
 218. http://www.fujitsu.com/
 219. http://www.hal.com/
 220. http://www.newsnow.co.uk/cgi/NewsNow/NewsLink.htm?Theme=Processors
 221. http://www.cs.wisc.edu/~arch/www
 222. http://www.arm.com/Documentation
 223. http://www.cs.uregina.ca/~bayko/cpu.html
 224. http://www.mdronline.com/
 225. http://www.uk.research.att.com/vnc
 226. http://www.warehouse.com/
 227. http://www.networktechinc.com/servswt.html
 228. http://www.scene.demon.co.uk/qswitch.htm
 229. http://www.cybex.com/
 230. http://www.raritan.com/
 231. http://www.real-star.com/kvm.htm
 232. http://www.belkin.com/
 233. http://www.betterbox.com/info.html
 234. http://www.egghead.com/
 235. http://www.buy.com/
 236. http://www.ubid.com/
 237. http://www.lsl.com/
 238. http://www.cheapbytes.com/
 239. http://www.c2.net/products/sh3
 240. http://www.indigostar.com/perl2exe.htm
 241. http://www.masonhq.com/
 242. http://opensource.cnation.com/projects/BingoX
 243. http://www.smartworker.org/
 244. http://perl.apache.org/
 245. http://modperl.sourcegarden.org/
 246. http://www.apache-asp.org/
 247. http://www.wirm.org/
 248. http://perl.apache.org/embperl
 249. http://www.engelschall.com/sw/eperl
 250. http://opensource.cnation.com/projects/XPP
 251. http://gamla.iglu.org.il/
 252. http://www.axkit.org/
 253. http://www.zelerate.org/html/eng/home.shtml
 254. http://www.binevolve.com/velocigen
 255. http://www.midgard-project.org/
 256. http://www.zend.com/
 257. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#midgardinstall
 258. http://www.linuxdoc.org/HOWTO/PHP-HOWTO.html
 259. http://www.muze.nl/software/ariadne
 260. http://www.enhydra.org/
 261. http://www.lutris.com/
 262. http://www.enhydra.org/software/documentation/enhydra/NewApp-DODS-Tutorial-PGSQL.html
 263. http://www.enhydra.org/software/documentation/enhydra/Enhydra-NewApp-DODS-Tutorial.htm
 264. http://www.inprise.com/
 265. http://www.linuxdoc.org/HOWTO/Enterprise-Java-for-Linux-HOWTO.html
 266. http://www.zope.org/
 267. http://www.python.org/
 268. http://openacs.org/
 269. http://www.arsdigita.com/
 270. http://www.appserver-zone.com/
 271. http://www.portalsphere.com/overview.html
 272. http://www.bouldersoftware.com/products/flashpoint
 273. http://www.bouldersoftware.com/products/flashpoint/download.html
 274. http://cserverpages.20m.com/
 275. http://198.85.71.76/html.html
 276. http://www.man.ac.uk/~whaley/ag/appgen.html
 277. ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN
 278. mailto:andrew@arthur.smuht.nwest.nhs.uk
 279. http://www.cis-computer.com/software/dbengine/
 280. http://www.neosoft.com/neowebscript/
 281. mailto:emmel@h-e-i.de
 282. http://www.heitml.com/
 283. http://www.h-e-i.deom/
 284. http://www.aolserver.com/
 285. http://photo.net/wtr/aolserver/introduction-1.html
 286. http://www.homeport.org/~shevett/pts/
 287. ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/
 288. ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz
 289. mailto:M.Boekhold@et.tudelft.nl
 290. http://www.python.org/
 291. http://mdbtools.sourceforge.net/
 292. http://lists.sourceforge.net/mailman/listinfo/mdbtools-dev
 293. http://www.zeos.dn.ua/eng/index.html
 294. http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWriter/grwhome.html
 295. http://www.heraut.demon.nl/dezign/index.html
 296. http://www.heraut.demon.nl/
 297. http://www.oswego.edu/Earp
 298. ftp://ftp.oswego.edu/
 299. ftp://ftp.oswego.edu/
 300. http://www.php.net/
 301. http://www.vex.net/php
 302. http://www.fe.de.php.net/
 303. http://www.sk.php.net/
 304. http://php.iquest.net/
 305. mailto:rasmus@lerdorf.on.ca
 306. mailto:asussman@vidya.com
 307. http://www.php.net/
 308. mailto:angio@aros.net
 309. ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c
 310. http://sptl.org/phpgem
 311. http://www.druid.net/pygresql/
 312. http://www.druid.net/~darcy/
 313. ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.README
 314. mailto:darcy@druid.net
 315. mailto:andre@chimay.via.ecp.fr
 316. mailto:andre@via.ecp.fr
 317. ftp://ftp.python.org/pub/www.python.org/1.5/python1.5b2.tar.gz
 318. ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz
 319. ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0b.tar.gz
 320. http://www.python.org/
 321. http://epoch.cs.berkeley.edu:8000/postgres95/index.html
 322. ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz
 323. http://www.via.ecp.fr/via/products/pygres.html
 324. mailto:majordomo@vex.net
 325. mailto:andre@via.ecp.fr
 326. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing PyGreSQL
 327. http://www.lava.net/beowulf/programming/wdb
 328. http://www.eol.ists.ca/~dunlop/wdb-p95/
 329. mailto:dunlop@eol.ists.ca
 330. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing libpq
 331. ftp://ftp.lysator.liu.se/pub/linus
 332. mailto:linus@epact.se
 333. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Testing ecpg
 334. http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
 335. mailto:nico@overnet.com.ar
 336. ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz
 337. ftp://ftp.sra.co.jp/pub/cmd/postgres/
 338. http://www.askesis.nl/
 339. http://www.postgresql.org/
 340. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#installpgsql
 341. http://www.cygnus.com/misc/gnu-win32
 342. http://sourceware.cygnus.com/
 343. mailto:horak@mmp.plzen-city.cz
 344. mailto:JKraaijeveld@askesis.nl
 345. mailto:kevlo@FreeBSD.org
 346. http://www.freebsd.org/~kevlo/postgres/portNT.html
 347. ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/full.exe
 348. http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
 349. ftp://ftp.xemacs.org/pub/xemacs/aux/
 350. http://www.multione.capgemini.fr/tools/pack_ipc
 351. http://www.yahoo.com/
 352. http://www.lycos.com/
 353. http://www.hotmail.com/
 354. http://www.postgresql.org/
 355. mailto:pgsql-questions@postgresql.org
 356. mailto:pgsql-hackers@postgresql.org
 357. mailto:pgsql-ports@postgresql.org
 358. mailto:pgsql-docs@postgresql.org
 359. mailto:pgsql-questions-request@postgresql.org
 360. mailto:pgsql-hackers-request@postgresql.org
 361. mailto:pgsql-ports-request@postgresql.org
 362. mailto:pgsql-docs-request@postgresql.org
 363. http://www.postgresql.org/mhonarc/pgsql-questions
 364. ftp://ftp.postgresql.org/
 365. mailto:majordomo@tlali.iztacala.unam.mx
 366. http://www.postgresql.org/docs
 367. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Appendix B
 368. http://www.naiua.org/std-orgs.html
 369. http://www.ansi.org/docs
 370. http://www.jcc.com/
 371. http://www.contrib.andrew.cmu.edu/~shadow/sql.html
 372. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Appendix A
 373. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#SQL 1998
 374. file://localhost/tmp/zh-sgmltools.5381/PostgreSQL-HOWTO.txt.html#Appendix B
 375. ftp://FTP.cs.arizona.edu/tsql/tsql2/
 376. ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/
 377. mailto:rts@cs.arizona.edu
 378. mailto:boehlen@iesd.auc.dk
 379. http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software
 380. mailto:pgsql-questions@postgresql.org
 381. file://localhost/tmp/zh-sgmltools.5381/comp.databases.postgresql.general
 382. file://localhost/tmp/zh-sgmltools.5381/comp.databases.postgresql.hackers
 383. file://localhost/tmp/zh-sgmltools.5381/comp.databases.postgresql.doc
 384. file://localhost/tmp/zh-sgmltools.5381/comp.databases.postgresql.bugs
 385. file://localhost/tmp/zh-sgmltools.5381/linux.postgres
 386. http://www.postgresql.org/
 387. http://www.postresql.org/
 388. http://www.greatbridge.com/
 389. http://www.redhat.com/
 390. http://www.wgs.com/
 391. http://www.ac.com/
 392. http://www.caldera.com/tech-ref/linuxapps/linapps.html
 393. http://www.xnet.com/~blatura/linapps.shtml
 394. http://linas.org/linux/db.html
 395. mailto:linas@fc.net
 396. http://cuiwww.unige.ch/~scg/FreeDB/FreeDB.list.html
 397. http://www.hex.net/~cbbrowne/rdbms.html
 398. mailto:cbbrowne@hex.net
 399. http://SAL.KachinaTech.COM/H/1/
 400. http://SAL.KachinaTech.COM/H/2/
 401. http://SAL.KachinaTech.COM/H/3/
 402. http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/
 403. http://www.postgresql.org/docs/faq-english.shtml
 404. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/
 405. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
 406. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
 407. http://www.sgmltools.org/
 408. http://www.adobe.com/
 409. http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html
 410. http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html
 411. http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html
 412. http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.html
 413. http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.html
 414. http://sunsite.unc.edu/LDP/hmirrors.html
 415. http://www.linux.org.tw/CLDP/HOWTO/
 416. http://www.linux.org.tw/CLDP/
 417. http://www.cs.wisc.edu/~ghost
 418. http://www.cs.wisc.edu/~ghost
 419. http://w3.one.net/~jhoffman/sqltut.htm
 420. http://www.heinz.cmu.edu/project/dbms
 421. http://www.cs.concordia.ca/Course_Notes/oracle/browser/node1.html
 422. mailto:jhoffman@one.net
 423. http://www.contrib.andrew.cmu.edu/~shadow/sql.html
 424. http://www.inquiry.com/techtips/thesqlpro/
 425. http://www.inquiry.com/techtips/thesqlpro/usefulsites.html
 426. http://infoweb.magi.com/~steve/develop.html
 427. http://info.itu.ch/special/wwwfiles
 428. http://www.compapp.dcu.ie/databases/f017.html
 429. http://www.stars.com/Tutorial/CGI/
 430. http://wfn-shop.princeton.edu/cgi-bin/foldoc
 431. http://www-ccs.cs.umass.edu/db.html
 432. http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ
 433. http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html
 434. http://www.it.rit.edu/~wjs/IT/199602/icsa720/icsa720postings.html
 435. http://www.pcslink.com/~ej/dbweb.html
 436. http://www.eng.uc.edu/~jtilley/tutorial.html
 437. http://www.ndev.com/ndc2/support/resources.htp
 438. http://ashok.pair.com/sql.htm
 439. http://jazz.external.hp.com/training/sqltables/main.html
 440. http://www.eit.com/web/netservices.html
 441. http://sqlcourse.com/
 442. http://sqlcourse2.com/
 443. http://www.aldev.8m.com/
 444. http://aldev.webjump.com/
 445. http://www.homepages.infoseek.com/~aldev1/index.html
 446. http://www3.bcity.com/aldev/
 447. http://www.members.spree.com/technology/aldev/
 448. http://www.midgard-project.org/download/binaries
 449. ftp://ftp.deva.net/pub/sources/crypto/rsaref20.1996.tar.Z
 450. http://www.openssl.org/
