
    Linux  Database-SQL-RDBMS HOWTO ļ (PostgreSQL Ͽϵͳ)
                                       
ߡAl Dev (Alavoor Vasudevan) [1]alavoor@yahoo.com
ߡ￵ [2]a9504480@graduate.hku.hk

   һһ¶գ41.0 
     _________________________________________________________________
   
   ļһݽ Unix ϵͳݵؽһ SQL Ͽ
   (Database Engine) ǰ˹ߵġʵָϡҲ۹ʱ׼
   ANSI/ISO SQL Լ̽ڻСʽ ("open
   development" environment)  SQL Ͽŵ㡣ǹ
   Unix ϵͳн PostgreSQL ȿӦóʽϿŷ
   (Application Database Server)ֿάϿŷ (Web
   Database Server) һʽϿ⡣PostgreSQL ʵĹ
    ISO / ANSI SQL ׼ļҲṩϿĽʽǰͼ
   桢Ӧóʽٿ (Rapid Application Development) ߡODBCJDBC
   ʽCC++JavaPerl ʽԽϿ⹤ߡṩ
    Unix / Windows NT ƽ̨Ͽ⣬Ͽ⡢SQL Լ
   PostgreSQL ַǳáļҲһ SQL ĵ SQL ﷨
   Գѧ߷ǳáоüһһõĲοϡѧ˵
   ⴦ṩϻǵõ PostgresSQL ʽϿԴʽ룬Ӷѧ
   ϰαдһʽ SQL Ͽ⡣
     _________________________________________________________________
   
1. 

     * 1.1  (Quantum) ԡѧ
       
2. 춵

3. PostgreSQL ʲ᣿

     * 3.1 Ƥ
       
4. ĸϺãPostgreSQL  MySQL

     * 4.1 PostgreSQL  OracleIBM DB2MS SQL server 
     * 4.2 MySQL ظ RDBMSes
       
5. δȡ ?

6. PostgreSQL ٰװָ 

     * 6.1 װͲ
     * 6.2 PostgreSQL RPMs
     * 6.3 Maximum RPM
     * 6.4  RPM 
     * 6.5  PyGreSQLPython  
     * 6.6  PerlPerl  
     * 6.7  libpq, libpq++  
     * 6.8  Java  
     * 6.9  ecpg  
     * 6.10  SQL ӡԶ̬ͺ 
     * 6.11  Tcl/TK 
     * 6.12  ODBC 
     * 6.13  MPSQL Motif-worksheet 
     * 6.14 ȷ
     * 6.15 
       
7. ٿʼָ

     * 7.1 Ͽ⽨
     * 7.2 Ͷû
     * 7.3 ͶȺ
     * 7.4 ༭Ͷ
     * 7.5 ༭Ͷеļ¼
     * 7.6 ıĿǰϿ
     * 7.7 뻹ԭϿ 
     * 7.8 ϿⱣ
     * 7.9 
     * 7.10  (Triggers) ڴ (Stored Procedures)
     * 7.11 PostgreSQL ļ
       
8. PostgreSQL ֧Ԯ 200 Gig ĳϿ

     * 8.1 봦32 λԪ 64 λԪ
     * 8.2 ദ
     * 8.3  (Replication) ŷ
       
9. ƾʲ PostgreSQLRegression ׼Ϊû

10. ϿⱣ 

     * 10.1 û֤
     * 10.2 ƴȡ
     * 10.3 ֤ 
     * 10.4 ȡ
     * 10.5  SSH ı TCP/IP 
     * 10.6 Kerberos ֤
       
11. PostgreSQL ǰ GUI ߣͼʹ߽棩

12. PostgreSQL Ľʽ

     * 12.1 PostgreSQL  ODBC ʽ
     * 12.2 PostgreSQL  UDBC ʽ
     * 12.3 PostgreSQL  JDBC ʽ
     * 12.4 PostgreSQL  Java
       
13. PostgreSQL  Perl Ͽ (Database Interface, DBI) 

     * 13.1 PostgreSQL  PERL 
     * 13.2 Perl Ͽ DBI
     * 13.3  Perl 
       
14. PostgreSQL 

     * 14.1 PGACCESS -  PostgreSQL  GUI 
     * 14.2 PostgreSQL ͼͽѯ GtkSQL 
     * 14.3 Ӵе PostgreSQL ʽѯߣWISQL  MPSQL
     * 14.4 Ϊ PSQL  PostgreSQL ʽѯߣISQL
     * 14.5 MPMGRPostgreSQL Ͽ
     * 14.6 PgAdminPhpPgAdmin 
     * 14.7 PgBash - SQL shell 
     * 14.8 PostgreSQL  Webmin 
       
15. PostgreSQL õ봦

16. ֻʹһʾ (monitor) 趨̨ PostgreSQL 

17. PostgreSQL άӦóʽŷ

     * 17.1 PERL άӦóʽŷ 
     * 17.2 PHP άӦóʽŷ 
     * 17.3 Lutris Corp "Enhydra Enterprise" (Java) 
     * 17.4 ZopePython 
     * 17.5 OpenACSTcl ԣ
     * 17.6 C++, CORBA άӦóʽŷ 
     * 17.7 άӦóʽŷĿ¼ 
       
18. PostgreSQL Ӧóʽ͹

     * 18.1 PostgreSQL  4GL άϿʽAppGEN ϵͳ
     * 18.2 PostgreSQL ĻDBENGINE
     * 18.3 PostgreSQL  Apache ŷģNeoSoft NeoWebScript
     * 18.4 HTML ŷ HEITML һ PostgreSQL  4GL 
     * 18.5 PostgreSQL  America On-line AOL άŷ
     * 18.6 PostgreSQL  / ƻ׷ϵͳʽ
     * 18.7  dbase  dbf ת PostgreSQL
     * 18.8 ΢ MDB Ͽת PostgreSQL
     * 18.9 Zeos ͻ
     * 18.10 Java  Report Writer
       
19. Ͽƹߡʵϵͼ (Entity Relation Tool) 

20. PostgreSQL ĻϿ/ɹߡEARP

     * 20.1 EARP ʲ᣿
     * 20.2 ʩ
     * 20.3 ι
     * 20.4 δȡ EARP
       
21. PHP Hypertext PreProcessorPostgreSQL ŷ html Ƕ

     * 21.1 Ҫɫ
     * 21.2 PHPʷ
     * 21.3 ᣬ PHP ʲ᣿
     * 21.4 һ򵥵
     * 21.5 CGI  (Redirection)
     * 21.6 ִָ PHP
     * 21.7 PHPGem ׼
       
22. PostgreSQL  Python 

     * 22.1 ȡ PyGres
     * 22.2 Ϻ֧Ԯ
     * 22.3  Python 
       
23. PostgreSQL άբ· (gateway)  WDB-P95

     * 23.1 й wdb-p95
     * 23.2 PostgreSQL ŷpgperl  httpd Ƿͬһԣ
       
24. "C", "C++", ESQL/C Խ PostgreSQL λԪ (Bitwise Operators)

     * 24.1 "C" 
     * 24.2 "C++" 
     * 24.3 ESQL/C
     * 24.4 PostgreSQL λԪԪ
       
25. PostgreSQL ļ (Kanji Code)

26. ֲ PostgreSQL Ӵ 95 / Ӵ NT

     * 26.1 NT 
     * 26.2 װ Cygwin ׼
     * 26.3 趨 Bash Ӵ
     * 26.4 װ Andy Piper 
     * 26.5 װ Ludovic Lange  Cygwin32 IPC ׼
     * 26.6 װ PostgreSQL 
       
27. ̳ͨ

     * 27.1 PostgreSQL ĵʻ
     * 27.2 Ӣ̳ͨ
     * 27.3 ̳ͨ
     * 27.4 ̳ͨ
       
28. ļͲο

     * 28.1 ûָ˵
     * 28.2 ļ
     * 28.3 õĲο
     * 28.4 ANSI/ISO SQL ļSQL 1992, SQL 1998
     * 28.5 ANSI/ISO SQL 1992 ﷨
     * 28.6 ANSI/ISO SQL 1998 ﷨
     * 28.7 ѧ SQL 
     * 28.8 SQL92 ʱ̬ (Temporal Extension)
     * 28.9 㲿֡ȡ ISO/ANSI SQL ļ 
     * 28.10 һ֡ISO/ANSI SQL ǰ
     * 28.11 ڶ֡ISO/ANSI SQL  (ISO/ANSI SQL Foundation)
     * 28.12 ֡ISO/ANSI SQL м (Call Level Interface)
     * 28.13 Ĳ֡ ISO/ANSI SQL ־ôģ (Persistent Stored
       Modules)
     * 28.14 岿֡ ISO/ANSI SQL/ (Bindings)
     * 28.15 ֡ISO/ANSI SQL XA רŻ SQL/XA
     * 28.16 ߲֡ʱ̬ ISO/ANSI SQL 
     * 28.17 ڰ˲֡ISO/ANSI SQL ý (SQL/MM)
       
29. PostgreSQL ļ֧Ԯ

     * 29.1 ҵ֧Ԯ
       
30. úҵ

31. Ͽ

32. άѰʾ

33. 

34. FAQй PostgreSQL 

35. ļʽ

36. ȨȨ

Appendix

37. ¼סANSI/ISO SQL 1992 ﷨ 

38. ¼ҡѧ SQL  

     * 38.1 PostgreSQL 
     * 38.2  URL ָ
     * 38.3  SQL ָ
       
39. ¼Linux ٰװָ 

40. ¼װ Midgard 

     * 40.1  Midgard PHP ŷ
     * 40.2  OpenSSL 
     _________________________________________________________________
   
1. 

   ļҪĿṩһ춿ݵ趨 PostgreSQL  URL 꾡
   ᳫԭʼϵͳ PostgreSQLLinux ĺô
   
   ϵÿһԶҪһϿȡϡʹõҪ
   桢 ȡʹϣҪܿɹӶʡʱ䡣ͬʱ
   ϵͳ򵥡 ١ɿúáϿҪϵͳ 
   Ϊÿһ乫˾ĹؼϡϵÿһҵҪһϿ
   ϵͳ ûеĻѶСչ˾ȹҵЧ 
   еϿϵͳӹʱ׼֯ (International Standard Organisation,
   ISO) Ĺ ANSI SQL׼ҵ糣õ¹ ISO/ANSI SQL
   1992һ׼ SQL 1998/99 SQL-3ڿСеϿ
    OracleSybase  Informix ǸЩ׼ʵʩЩ׼
   
   û ANSI/ISO SQL ı׼ûҪһνһϿϵͳӦ
   ǳѡ ͻϣһιʹ ISO SQLODBCJDBC չһӦ
   еϿϵͳӦá
   
   ɶ֧Ԯ ISO SQLANSI SQL/98SQL/92  ANSI SQL/89 Ĺʽ
    (RDBMS) Уе PostgreSQLPostgreSQL һʽ
   Ͽ⣬ ȫ ISO/ANSI  SQL ׼ΪĿꡣѵ RDBMS 
   PostgreSQL Ψһͬʱ֧ԮϿ SQL ġļΰװ
   Ͽ⡢ νϿ⡢ӦϿ⡢ǰͼͽʽ
   ǿҽдϿٷְٷ ISO/ANSI SQLODBCJDBC 
   ׼ʹĳʽֲͬϿ⣬ PostgreSQLOracle
   SybaseInformix ȡ
   
   ɴ PostgreSQL õؼǳḻĹܣΪӡԭʼ
   ģʽ (Open Source Code development model)ԭʼģʽ
   Դʽ룬 ڻмֽС Ŀǰʾ
   δ󲿷ֵͨеνѶٹ·
   (Information Super-Highway) ϽСδ꣬ᱬըԵسɳ 
   ٳҵʹ PostgreSQL
   
   ͳѧѧͿѧԭӦأֻһ
   PostgreSQL 㣬ԭʽ뿪ŸѶٹ·ϵһĴͷԵϵͳ
   £ ܵõصν˼档 ԭʼģʽҲɷֹ
   ظǳã ʡʱ估ϷйŻҺ͵Դִ
   ɡֻҪдһ 㲻ҪһΡ㲻ѱʱ
   õĹ һһҪúãΪһֻаСʱ
   ̤إһʱ ȡķı䡣ÿ˵ĵһ
   ѡ񶼽 PostgreSQLLinux ȿԭʼϵͳ
   
   ִеӵԭʽʲԪ޼ֵ
    ܻΪʷֻҪõӲ ǮӲ϶ӻ
   ȡֵõġصǹĵӲ Ӳܶƥ
   ֻǱ޲Ӳĸӳ̶ʹȫֻ 6 ұֳƼ
   ԾƬӲһȽĿƼ̷ǳӣ ʽܼ賧
    0.18С 0.18΢׿ƼĻͶӴ һСƬƬϱ
   ԰Ƶİ뵼͵·һApplied MaterialAMDӢضCyrix
   IBM ˾Ѵ- (man-years) ڸ߿Ƽ羧Ƭơ
   ΢ (Micro-electronics) ɵ (Nano-electronics) оϡ΢״
   ֮һ (10^-6)״ʮڷ֮һ (10^-9)ֽ΢Ӽ
   0.35 ΢׵ʹ壬0.25 ΢׵ʹͭ ڲõĽͭ
   0.10 ΢׼ɵӼӦ춵ԾƬ Ϊͭǿ
   彫ᱻ̭ڿʴƬ (photolithography) ĹУ Ƶ
   ߡX-߻ᱻ춿ʴ (etch) С (feature size) С
   0.15 ΢׵ĵ·ʮ꣬Ƭᱻӵ (molecular computers)
   ﾧƬ (bio chips) ȡǵٶȽƬʮڱһ
   ԭӡ ΢Сԭ ӵԻʵķ
   ĵӿơ (ON)  1ر (OFF)  0е
   ʽǸݶԪ 1  0
   
   ±гƬĽδչơ
   
                                 δƬĽչ
                                 ******************
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| Ŀ/                | 1997    | 1999    | 2001    | 2003    | 2012   | 2
020    | 2030    |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| С΢ף         | 0.25    | 0.18    | 0.15    | 0.13    | 0.05   |<
0.00001|  ԭ   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| ƬСף         | 200     | 300     | 300     | 300     | 450    |
/|     |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| еѹ             | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| <
 0.001 |  С   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
|              | 70      | 90      | 110     | 130     | 175    | 6
00     |  С   |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| Ƶ (MHz)           | 750     | 1,250   | 1,500   | 2,100   | 10,000 | >
 50,000|  -----  +
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+
| DRAM                 | 256 MB  | 1 GB    | 2 GB    | 4 GB    | 256 GB | >
 1000GB|  -----  |
+--------------------------+---------+---------+---------+---------+--------+--
-------+---------+

   ӲҪҪ߿ƼҪ֣õĿƼͱȽϼ
   
   
   һ棬ÿҶᷢչʵϣ κһӵһͼ۵
   ˶ɱд
   
    OracleInformixSybaseIBM DB2 (Unix) Ͽ⣬ "C" д
   ɣ Ԫñ۸ûˡOracleSybase
   Informix Ͽǰٷְٵ C ʽ
   
   ʮ PostgreSQL ˺ܶ๤ͷһ
   ANSI/ISO SQL ϿϵͳϷ PostgreSQL ԴʽϼǷȱ
   Ĺܻ֮ǿ ֮ʹãкܴô
   
   ݹƣԡƷ󽫻ָ (exponentially) Ϊ
   άϵһȺءͼ۶Ӵʹ߼Ա ʹá
   ƷĹһⳡȫҴ롣 Ϊ
   ġ˾ҲǴ͵
   
1.1  (Quantum) ԡѧ

   ǰδƬĽչڴԼ 2030 ꣬PostgreSQL һ
   ϿϵͳӵСӵԸԭӵԣת (spin) 
   ״̬磬ת (spin is up) ʱһӿɱһ
   תʱɱ㡱ԭӺĿɳص (superposition) ״
   ̬ʹһֵͬʱԭӵת λ
   (qubit) ɷһǿɵһ ʹ÷Լ
   (nonlinear computational) ңңִԣ ԭӲ棬
   ѧԭӵı֡
   
2. 춵

   »˵ѧڲͬ桢ԭӡԼĴ
   аҪĽɫҲ˵Ϊοѧ֪ʶʹÿѧĲƷǰǳҪ
   
   ƽǡ㲻һĲƷⶨж 
   Ͽϵͳϵͳҵϵͳ壡˵ Ҫõϵͳ
   Դʽϡ˽ڵԭӵǳҪΪ
   PostgreSQL΢Ӵ 95 ȶġ
   
   ǺҪһʹÿѧ˱֪β춵
   ϵͳ PostgreSQL˶ûпѧ֪ʶ˲֪΢Ӵ
   NT/95Oracle ϵͳβܶ˲֪ʲᴴ΢
   Ӵ NT/95 ڲʲᡣӵϵͳԼ򵥵ɲֽɡǧǧ
   ˣ ÿ涼ǧǧ (super-cluster) ɣ
   ÿŶǧǧϵ (galaxy) ɣÿϵǧǧⷡ
   (star) ɣЩϵͳ (planet)ʮڼƵԭ
   ɡʷУ ֻڹӡһ˴һ棬ִû
    ϲٹҶԴ档һΪȽĿƼ
   ըй㵺ͳ飬ɿֲƻԭӵȽöࡣ ִϸСǿ
   ֻһЩ˵Ͷ̫ƽ󼴿ʹʧ ı仯ڹӡ
   սоùǿǷ أ˹̹ (Albert
   Eienstein)һʮ 00 Ŀѧң˵ʹ˼ʱ
   û ʱҲûɴ档
   
   ΢Ӵ֮ C дɣֻõ 1  0ס
   ռƶʺϵԭײɡȤ
   ײ֮ǰպ÷ˣ ƶʵϸײɣ 
   Ȥϸײ֮ǰպ÷ˣŴԡ ڵ
   ǰڡеԭӲڣʱ䶼ڣ ڴըʱ
   ʼŲɳֱţ һΪ
   Brahma洴ڵ档 ֪ʶ֮ĸ Brahma
   Ӥ浮֮ǰѾˡ֪ʶ֮ĸ ǹ̺ľ
   ࣡û֪ʶ֮ĸĵġ򡯣ҪдһС͵ 'C' ʽҲû
   밴ȫһ˵ʲᣬ֪ŷԭ⣬ ֪
   ֪ͨ
   
   гһǵϣһ֮ᣩеԭӻȫ
   ʧ
   
   ʵпܴġԴ޴ Դҵ
   ϵͳҲ޴󣡣԰Ƶ棬 ɷΪࡣ
   ޱ仯Ķάԭ (multi-dimensional atoms) Ϊά
   (primary-dimensional-universe) ǳȽѧҲ֧ۡ
   
   ѧͳѧֿ֧ԭʼ룬 PostgreSQL  Linuxٶ
   վҲԽԽɿԭʼĶ (momentum) Ѹӡ⣬
   ͳѧѧȷĻ Ǹעѧ͵֪˿ʼѧϰѧ
   ʽʽʧ
   
   չ PostgreSQL ƻҪʱԴˣPostgreSQL 
   ʱĲƷʱֻڿѧϽͣѧ PostgreSQLLinux
   ֮רֱӹġѧκʱռ䣬κ
   Ϊ 
   
   ѧʹ˵Уͽ֮Ħ ͱд
   ʱáпѧֲѧ PostgreSQLPostgreSQL
   ʹѧһСִ֦(Modern Algebra)ִ
   ۡ(Set Theory)ϵ(Relational Algebra)Ⱥ (Groups)
   (Rings)ռ (Collections) (Sets) (Unions)
   (Intersections)ų (Exclusions) (Domains) (Lists) ȵȡ
   
   PostgreSQL Ʒ֮ԴڣΪʱ䡣 ͬһ
   ͬʵһǰδΪ֪ ʹڽʱҲ֪
    ġ˾
   
   ϸڹдʽʱʳĻѧתΪܼ
   ܡ ʹĶʱϸȼϼʹСҲ
   ˵ һ̨ѧϵĻ (thermodynamic heat engine)Ϊ
    ѧĶҲԣҲͼӵӰ쵽 PostgreSQL һ
   
   ϿɫԡƬƺۣһɫ
    ԡƺϵͳܵõֻǽɫϵͳ
   ϿۣȻһͲάĿռ䣬 ռӵı
   ޱ仯ȫΪСĿռ䣬֮Ȼ
   
   ʹýһϵͳ Ͽ
   пܡѴּ ǵ
   ǳӴ󣬶ҿɼ춽һϵͳ
   
   ĵλǽ (Joules)ǧ򹫽ʱСʱȡ
   (power) ʱ䣬λ߻ǧߡ
     _________________________________________________________________
   
        ÿ˵ = y 
˵
        ÿ˵ = y 
֮ת E = m * c * c'c' ǹٶ 'm' 
        ʱ = 8 СʱһΪһһֻ 8 Сʱ
         =  / ʱ
             = (y / (8 * 60 * 60)) 
        ܹ = n * (y / (8 * 60 * 60)) 
n = ƻ
     _________________________________________________________________
   
   Ϸʽ 'n' ƲƷءn ԽҲԽǧ
   ߱ʾ ȫжǧ㣩 ͹ʣǧ
   㣩רע Linux  PostgreSQL һϵͳ
   
   򫣬ϵܶˣҲ˵дʱ䣬 ñ
   ˾̵ʱصʹ΢IBM ȴ˾ҲΥ
   ɣػͶ
   
   ǡΪѧĶɣԭʼ롯ϵͳ PostgreSQLLinux սʤ
   ԭʼ롯ϵͳͱػ졣пѧݵġ ಻Ӧ˷ʱ
   䴴̫ظƷ
   
3. PostgreSQL ʲ᣿

   PostgreSQL һɵϿ⣬ĳʽ룬һ ANSI SQL
   1998, 92, 89 ΪĿʽϿϵͳڲͬӲƽ̨Ͳ
   ϵͳС PostgreSQL Ŀǰٷְٷ ANSI/ISO SQL Ϊ
   һĿͨϿ⡣
   
   죬PostgreSQL Ƚϵͳ˲ǣܶҵϿ
   ء Ժ涼׷PostgreSQL ǵϺܶҵĺ
   һ͹̫վ (International Space Station) Ƶרδ
   ʮ꣬PostgreSQL ԻѵϿϵͳΪһԭʼϵͳ
   
   
   PostgreSQL Ļ뷨ǡֻҪһģĳʽдˣ ͲӦ˷ʱ
   дһΣĹֻǧ֮һ룡
   
   Informix Universal server1997 ƳĻ PostgreSQL ĽϾɰ汾
   Ϊ Informix չ Illustra Inc. ϵ InformixIllustra Ͽ
   Ǹ PostgresPostgreSQL ǰдɵġ
   
   PostgreSQL  POSTGRES Ͽϵͳĸ棬һһ DBMS оԭ
    (prototype)ڱ POSTGRES ǿģͼḻ̬ͬʱ
   һ˵ SQL Ӽȡ PostQuel ѯԡ
   
   PostgreSQL һȺμ PostgreSQL ̳ͨĻԱеġ
   ĿǰЭΪ Marc G. Fournier
     * [3]scrappy@postgreSQL.org
       
   Ḻ PostgreSQL չȻϿûԼҲ
   PostgreSQL ĿԱ⿪ǷɢڻϴϿüҵġ
   
   PostgreSQL 1.01  Andrew Yu  Jolly ChenPostgreSQL ǰ
   Postgres ĳʽ룬ǺܶѧҵʽԱ University
   of CaliforniaBerkeley  Michael Stonebraker ڵָµĲƷ
   
   ԰ PostgreSQL װϿŷ ϿŷӦ
   ʽϿŷһȽʽϿ ORDBMS
   
   PostgreSQL  SolorisSunOSHPUXAIXLinuxIrixDigital Unix
   BSDi NetBSDFreeBSDSCO UnixNEXTSTEPUnixware 
   Unix ִСֲӴ 95/NT Ĺ Cygnus cygwin32 ׼ɡ
   
    PostgreSQL й University of California, Berkeley
   İȨ
   
3.1 Ƥ

   PostgreSQL ϼ
   
     * Ŀ PostgreSQL SQL RDBMS Ͽ⣨Ͽϵͳ
     * Ŀǰ汾7.0.1
     *  PostgreSQL ʮꡣ 1985 꿪ʼ
     * ߡ ʮ԰ƵĴѧ͹˾
       
   PostgreSQL İƤ [4]http://www.greatbridge.com ҵ
   
4. ĸϺãPostgreSQL  MySQL

4.1 PostgreSQL  OracleIBM DB2MS SQL server 

   PostgreSQL ڱ֡ٶȡչ (scalability)   (reliability)
   ı׼д Oracle 8 8iIBM DB2MS SQL server
   Sybase Interbase  MySQL
   
    [5]http://www.aldev.8m.com  [6]http://aldev.webjump.com Ķ׼
   Խ
   
   밴йظòԽвɣ
   [7]http://www.devshed.com/BrainDump/MySQL_Benchmarks/
   
4.2 MySQL ظ RDBMSes

   MySQL һԭʼ SQL ŷ֧Ԯ (Transaction)
   춷ǳСϿ⣬֧ԮȽ SQL ܡPostgreSQL һҵ
   Ͽ⣬֧Ԯ׺ͼ SQL ṹPostgreSQL ҵϿ⣬
   OracleSybase  Informix ȽöࡣPostgreSQL ֧ԮǳȽ
    (locking mechanism) ͺܶҵϿҲȽܣ
   
   ڲýMySQL ĿֹͣΪ MySQL Ҳ ANSI SQL ΪĿ꣬һ
   ظĲƷҪȽͳĿԭʼ SQL ŷ׵
   ģΪûкܶʱ䣨Ը RDBMSʵϣֻԸһ
   PostgreSQL ǿ SQL ŷʱҲûС MySQL ߶תƵ
   PostgreSQLңMySQL һҵ(quasi-commercial) ĲƷ
   PostgreSQL ͬ߿ԭʼ룬Ȩѡ褣
   PostgreSQLͲһ SQL Ͽϵͳˡ
   
    MySQL һظƷʹüʴӣɢԴ һ
   ϵͳӦǶһ޶ϵͳ ÿһ˶ӦΪظĲƷ׶
   ˣֵ÷ɢԴ ҵϿⷢ OracleSybase
   Informix ΢ SQL serverʹ߷ѣҲƷݡ
   ȴ SQL ŷԭʼƣ
   
   㲻ҪϰٸϿϵͳֻҪһõϿŷ
   PostgreSQL
   
   øһ ANSI SQL Ĺǿ޸Ͽϵͳ
   
   MySQL ûж PostgreSQL ֧ԮĹ¡
     *  (Transactions)
     * ڴ (Stored Procedures)
     *  (Triggers)updateinsert  delete
     * Ͽ (Object oriented databases)
     * Ƚķϵͳ (Locking systems)ڶûཻ׻µĲй
       (concurrency management)
     * Ӳѯ (Sub-queries)
     * ŷα (Server-side cursors)
     * ѯȡ (Query caching)
     * Ͽ (Locking of databases)
     * Ϻõ֧ԮJOINUNIONMINUSINTERSECTouter join
     * ܶܡ಻ʤ
       
   MySQL  [8]http://www.tcx.se ҵ
   
   밴MySQL Ѹ GPL С
   
5. δȡ ?

   ɴµط Redhat Linux Debian Linux  Slackware
   Linux ҵ PostgreSQL ׼ԭʼͶԪ룩
     * Linux System Labs ַ [9]http://www.lsl.com/ 7 Ԫ
     * CheapBytes Inc ַ [10]http://www.cheapbytes.com/ 7 Ԫ
     * Debian ַ [11]http://www.debian.org/vendors.html
       
   PostgreSQL ֯ҲPostgreSQL CDROMںԭʼ룬 Unix
   ϵͳĿִеļ
     * ҳȡ PostgreSQL  [12]http://www.postgresql.org 30
       Ԫ
       
   PostgreSQL ֻԪķа汾 (distribution)
     * PostgreSQL RPMs ά Lamer Owen [13]lamar.owen@wgcr.org
       ҵ
     * PostgreSQL Դ RPM ͶԪ RPM
       [14]http://www.ramifordistat.net/postgres
     * PostgreSQL Դ RPM ͶԪ RPM [15]http://www.postgresql.org ѡ
       Latest News Redhat RPMs
     * PostgreSQL Դ RPM ͶԪ RPM
       [16]http://www.redhat.com/pub/contrib/i386/ ftp վ̨
       [17]ftp://ftp.redhat.com/pub/contrib/i386/
     * Solaris, HPUX, AIX, IRIX, Linux ĶԪվ̨
       [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/
       
   Ϊ ftp վ
     *  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 ԴʽҲɴ sunsite unc ӳվõȫдԼһǧ
    Redhat Linux а汾 (distribution) 
   /pub/contrib/i386/postgresql.rpm С
     * Ҫ֪ʲӳվ뵽 [37]ftp://sunsite.unc.edu
       
6. PostgreSQL ٰװָ

   ڻСڿٰװϿ⡣
   
6.1 װͲ

   װԡȷϺִ PostgreSQL Ĳ  root ǩ
     _________________________________________________________________
   
# cd /mnt/cdrom/RedHat/RPMS
# man rpm
# ls postgre*.rpm
# rpm -qpl postgre*.rpm | less ۿ
# rpm -qpi postgre*.rpm ۿ׼ϣ
# cat /etc/passwd | grep postgres
     _________________________________________________________________
   
   ע㿴һpostgresʹߣҪݺ postgres 
   Ŀ¼  postgres ɾߣΪpostgres2֮ࡣװʱ
   ҪǬǬ
     _________________________________________________________________
   
:
# rpm -i postgre*.rpm 밲װ׼ͻˡϺ׼ʹ
pgaccess 
# man chkconfig
# chkconfig --add postgresql  ڿʱʼ pg
# /etc/rc.d/init.d/postgresql start  postgresql
# man xhost
# xhost +   pgaccess ʹʾװã
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
 psql пɰ / ¼༭ʷ¼ \s

bash$ export DISPLAY=<>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
     _________________________________________________________________
   
    pgaccess  psql ´ SQL ָˣ
     _________________________________________________________________
   
bash$ cd /usr/doc/postgresql*
     _________________________________________________________________
   
   ڴĶ FAQʹߡʽԱֲָ
   
6.2 PostgreSQL RPMs

   ⣬뿴 [38]http://www.ramifordistat.net/postgres  "Installation
   Steps"
   
   PostgreSQL RPM  Lamar Owen άλ [39]lamar.owen@wgcr.org 
   [40]http://www.postgresql.org ҵ PostgreSQL ϡ
   
6.3 Maximum RPM

   ϰ RedHat RPM ׼ԱԹ PostgreSQL װ
   [41]http://www.RPM.org ءMaximum RPMһ飬Ѱ
   maximum-rpm.ps.gz  Linux ʹ gv ָĶ
     _________________________________________________________________
   
# gv maximum-rpm.ps.gz
     _________________________________________________________________
   
   һ rpm2deb ɰ RPM ׼תΪ Debian Linux ׼
   
6.4  RPM

    PostgreSQL ĸֽҪӡµطװ PostgreSQL Ŀ¼
   
     * Linux  - postgresql-*examples.rpm
     * postgresql-*examples.rpm [42]http://www.aldev.8m.com 
       [43]http://aldev.webjump.com
     * PostgreSQL ԭʽ postgresql*.src.rpm examplestesting 
       tutorial Ŀ¼Ѱҡ
       
6.5  PyGreSQLPython 

   װ examples ׼ [44] RPM֮
     _________________________________________________________________
   
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$
ˡʽװ
bash$ su - root
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload
     _________________________________________________________________
   
6.6  PerlPerl 

   װ examples ׼ [45] RPM֮
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/perl5
bash$ perl ./example.pl
     _________________________________________________________________
   
   עָʧȫ @INC Ҫڰ site_perl Ŀ
   ¼е Pg.pm ģ飬Ҫʹ -I ѡ
     _________________________________________________________________
   
bash$ perl -I/usr/lib/perl5/site_perl/5.004/i386-linux-thread ./example.pl
     _________________________________________________________________
   
    perl ڴȡ PostgreSQL Ͽ⣡
   
   Ҫʹ perl 棬 example.pl 
   
6.7  libpq, libpq++ 

   װ examples ׼ [46] RPM֮
     _________________________________________________________________
   
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 עòѶϢ£
> 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$
     _________________________________________________________________
   
   ֱ C/C++ ȡ PostgreSQL Ͽ⣡
   
6.8  Java 

   װ examples ׼ [47] RPM Ͱװ¶
     *  [48]ftp://ftp.redhat.com/pub/contrib/i386 
       [49]http://www.blackdown.org ȡ JDK jdk-*glibc*.rpm
     *  [50]ftp://ftp.redhat.com/pub/contrib/i386 ȡ
       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 İ汾Ҫȷ
*.jar Ҫ /usr/lib/pgsql   /usr/libjdk*/lib Ŀ¼С

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

༭ psql.java ѡpackageбΪۡ
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$
     _________________________________________________________________
   
   ֱ Java ȡ PostgreSQL Ͽ⣡
   
6.9  ecpg 

   װ examples ׼ [51] RPM֮
     _________________________________________________________________
   
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
     _________________________________________________________________
   
   ֱǶʽ SQL ȡ PostgreSQL Ͽ⣡
   
6.10  SQL ӡԶ̬ͺ

   װ examples ׼ [52] RPM֮
     _________________________________________________________________
   
root# chown -R postgres.postgres /var/lib/pgsql/examples
bash$ cd /var/lib/pgsql/examples/sql
δдá
     _________________________________________________________________
   
6.11  Tcl/TK 

   Tck/Tk  pgaccess ʽ ʹһֱ༭Ķ
   /usr/bin/pgaccess 
     _________________________________________________________________
   
bash$ view /usr/bin/pgaccess
bash$ export DISPLAY=<Ե>:0.0
bash$ createdb mydb
bash$ pgaccess mydb
     _________________________________________________________________
   
6.12  ODBC 

    1.  [53]http://www.insightdist.com/psqlodbc/ ȡ win32 pgsql odbc
       ʽ
    2.  /usr/lib/libpsqlodbc.a
       
6.13  MPSQL Motif-worksheet 

    [54]http://www.mutinybaysoftware.com ȡ RPM
   
6.14 ȷ

   Ҫȷ PostgreSQL ĸƷʣִ Regression ׼  root ǩ
     _________________________________________________________________
   
# rpm -i postgresql*test.rpm
Ķ README װԴʽ regress Ŀ¼
# rpm -i postgresql*.src.rpm
# cd /usr/src/redhat/SPECS
# more postgresql*.spec Բ쿴ҪװЩ RPM ׼
# rpm -bp postgresql*.spec ׼׼

Regression Ҫ Makefiles  *fmgr*.h ıͷָ

# rpm --short-circuit -bc postgresql*.spec ߽ݾ
make -C common  SUBSYS.oᰴ CTRL-C ֹʱ configure
Ѿɹ Makefiles ͱͷҲѲ㲻Ҫȥ
# 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 

   ʱǶҪƳ PostgreSQL Ҫ汾֮֡Լ
   Ҫн޲²  postgresql ʽĿ¼
   
                # rpm -i postgresql*.src.rpm
                # cd /usr/src/postgresql6.5.3
                # man patch
                # patch -p0 < patchfile
                # make clean
                # make

   Ƕ
     * PostgreSQL Ƕ [55]ftp://ftp.postgresql.org/pub/patches
       
7. ٿʼָ

   ο [56]ٰװָһ¡
   
7.1 Ͽ⽨

   ʹʹƵ GUIΪpgaccessͶϿ⣬Ҳָ
   Сpsqlߡ
     _________________________________________________________________
   
 root ݵ룬Ϊߡpostgres
# xhost +  pgaccess ʹʾװã
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
 psql  / ¼༭ʷ¼ \s

bash$ export DISPLAY=<>:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
     _________________________________________________________________
   
   ڿ psql  pgaccess ´ SQL ָ
   
   ҪϿĻ
     _________________________________________________________________
   
bash$ man dropdb
bash$ man destroydb  ڽϾɰ汾 pgsql ʹã
bash$ dropdb <Ͽ>
     _________________________________________________________________
   
   Ҳһ SQL ڼָһϿ
     _________________________________________________________________
   
> drop database <Ͽ>
     _________________________________________________________________
   
   ҪϿƣ [57]ݺͻԭһ
   
7.2 Ͷû

   Ҫû unix ûpostresǩ룬üõ GUI 
   pgaccessû
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <Ͽ>
     _________________________________________________________________
   
   ѡUserstabٻѡ Object|New  Object|Delete
   
   Ҳָ (script)Ϊcreateuser psql
     _________________________________________________________________
   
bash$ man createuser
bash$ createuser <û>
bash$ createuser -h host -p port -i userid <û>
     _________________________________________________________________
   
   Ҫһ postgres ûʹ塮destroyuser
     _________________________________________________________________
   
bash$ man dropuser
bash$ man destroyuser ڽϾɰ汾 pgsql ʹã
bash$ destroyuser
     _________________________________________________________________
   
7.3 ͶȺ

   Ŀǰûм򵥵Ľ趨ûȺ顣Ҫ pg_group в
   ¼¼
     _________________________________________________________________
   
bash$ su - postgres
bash$ psql <Ͽ>
 psql  / ¼༭ʷ¼ \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 еλΪ groname ȺơƱȫΪĸ֣
   е߻š
   
   grosysid Ⱥ롣һ int4ÿȺ鶼Ҫһ޶
   
   grolist 춴Ⱥ pg_user һ int4[]
   
   ҪɾȺ
     _________________________________________________________________
   
bash$ su - postgres
bash$ psql <Ͽ>
 psql  / ¼༭ʷ¼ \s


psql=> delete from pg_group where groname = 'posthackers';
     _________________________________________________________________
   
7.4 ༭Ͷ

   ʹʹƵ GUIΪpgaccessָСpsql
   ༭ͶϿ
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <Ͽ>
     _________________________________________________________________
   
   ѡ Table | New | Design ť
     _________________________________________________________________
   
bash$ man psql
bash$ psql <Ͽ>
 psql  / ¼༭ʷ¼ \s
     _________________________________________________________________
   
    psql ʾ£׼ SQL ָ确create tablealter table
   drop table
   
7.5 ༭Ͷеļ¼

   ʹʹƵ GUIΪpgaccessָСpsql
    ༭ͶϿеļ¼
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <Ͽ>
     _________________________________________________________________
   
   ѡ Table | < ѡһ > | Open ť
     _________________________________________________________________
   
bash$ man psql
bash$ psql <Ͽ>
 psql  / ¼༭ʷ¼ \s
     _________________________________________________________________
   
    psql ʾ£׼ SQL ָ确insert into table_name
   update table_namedelete from table_name
   
7.6 ıĿǰϿ

   ʹʹƵ GUIΪpgaccessָСpsqlı
   ĿǰϿ⡣
     _________________________________________________________________
   
bash$ man pgaccess
bash$ pgaccess <Ͽ>
     _________________________________________________________________
   
   ѡ Database | Open ť
     _________________________________________________________________
   
bash$ man psql
bash$ psql <Ͽ>
 psql  / ¼༭ʷ¼ \s

psql=> connect <Ͽ> <user>
     _________________________________________________________________
   
7.7 뻹ԭϿ

   PostgreSQL ṩϵͳpg_dump һϿ
   pg_dumpall һιϿ⡣
     _________________________________________________________________
   
bash$ su - postgres
bash$ man pd_dump
bash$ pd_dump <Ͽ> > database_name.pgdump
     _________________________________________________________________
   
   ԭ
     _________________________________________________________________
   
bash$ cat database_name.pgdump | psql <Ͽ>
     _________________________________________________________________
   
   ⼼춰ϿΪϿ
   
   ÿϿⶼҪʱݡΪ PostgreSQL йڵϵͳе
   ԲҪϵͳϿⱸݡ ûܱ֤Щڻԭ
   ᴦһöһµ״̬
   
   ݴϿΪ PostreSQL ϵͳ󵵰һ
   Ϊһ⣬ ΪĵܻᳬϵͳơΪ
   pg_dump д stdoutʹñ׼ unix ܵ
   
   ʹѹ˵
     _________________________________________________________________
   
bash$ pg_dump <Ͽ> | gzip > filename.dump.gz
     _________________________________________________________________
   
   ·
     _________________________________________________________________
   
bash$ createdb <Ͽ>
bash$ gunzip -c filename.dump.gz | psql <Ͽ>
     _________________________________________________________________
   
   
     _________________________________________________________________
   
bash$ cat filename.dump.gz | gunzip | psql <Ͽ>
     _________________________________________________________________
   
   ʹ split
     _________________________________________________________________
   
bash$ pg_dump <Ͽ> | split -b 1m - filename.dump.
     _________________________________________________________________
   
   עָУ filename.dump һ (.)·
   
     _________________________________________________________________
   
bash$ man createdb
bash$ createdb <Ͽ>
bash$ cat filename.dump.* | pgsql <Ͽ>
     _________________________________________________________________
   
   Ȼƣfilename pg_dump Ͽϡ
   ⣬ԭ˵Ͽκ ⷽΪϿ
   
   Ҫ PostgreSQL ʹ pg_dumpall
     _________________________________________________________________
   
bash$ man pg_dumpall
bash$ pg_dumpall -o > db.out
Ҫ
bash$ psql -e template1 < db.out
     _________________________________________________________________
   
7.8 ϿⱣ

    [58]PostgreSQL һڡ
   
7.9 

   ֪ PostgreSQL ʩΪΪʡܶʱ䣬
   ȡϡ
   
   Ĳָͬ createdbcreateuser ȵȵ man pages
     _________________________________________________________________
   
bash$ man createdb
     _________________________________________________________________
   
   Ҳ psql ѶϢ psql ʾ \h
     _________________________________________________________________
   
bash$ psql mydatabase
psql> \h
ʾ psql  / ¼༭ʷ¼ \s
     _________________________________________________________________
   
7.10  (Triggers) ڴ (Stored Procedures)

   ҪڴʹõϿִСcreatelangװ
   plpgsqlԤʹװڡtemplate1 ΪὨ
   Ͽⶼ template1 ķװƷġcreatelangҳλ
   /usr/doc/postgresql-7.0.2/user/index.html  User Guide
     _________________________________________________________________
   
bash$ man createlang
bash$ createdb mydb
bash$ export PGLIB=/usr/lib/pgsql
bash$ createlang plpgsql mydb
bash$ createlang plpgsql template1
     _________________________________________________________________
   
   Ҳο [59] RPM мڴӡExamples RPM еһ
   ӡ
     _________________________________________________________________
   
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();
     _________________________________________________________________
   
   һʽӡ
     _________________________________________________________________
   
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');
     _________________________________________________________________
   
   밲װ TEST ׼ postgresql-test-7.0.2-2.rpm Ķ
   /usr/lib/pgsql/test/regress/sql е SQL ӡ
   
   ҪʾϿм
     _________________________________________________________________
   
bash$ psql mydb
psql=> \?
psql=> \dS
psql=> \d pg_trigger
psql=> select tgname from pg_trigger order by tgname;
     _________________________________________________________________
   
   ҪʾϿкڴ
     _________________________________________________________________
   
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 ļ

   й⣬ PostgreSQL ˵飬ǵʮȫ
   PostgreSQL ļ׼СĶUser's GuideProgrammer's
   GuideAdministrator's Guide˵顣
   
8. PostgreSQL ֧Ԯ 200 Gig ĳϿ

   кܶ˾ PostgreSQL 춴͵Ͽ⡣ڴṩ¼
   
8.1 봦32 λԪ 64 λԪ

   32 λԪĵϿⳬ 5 GigaByte ʱֻѸ½ 32
   λԪִ 30 gig Ͽ⣬ֻ½32 λԪܵ 2 GB
   塢2 GB ϵͳϵͳơʹ SGIIBM HP Ϊ
   Linux Ƶĵϵͳ ext3-fs  32 λԪ֧Ԯ 2 GB ĵ
   С
   
   Լ͵Ͽ˵ǿҽʹ 64 λԪ Digital Alpha
   Sun Ultra-sparc 64 λԪSGI 64 λԪIntel Mercel IA-64
   HPUX 64 λԪԡIBM 64 λԪԡʹ 64 λԪĴ
   PostgreSQLͿԴ͵Ͽ⼰ѯѯͱϿٶ
    32 λԪĵԿ64 λԪԵŵкܴļλַ
   (memory addressing space) ͲϵͳɴܴĵϵͳΪϿ
   ṩϼѱ֡ ֧Ԯ塢ǿ
   
   밴2.4  Linux ͻ 2 GB Сƣ֧Ԯ 64 GB
   塣
   
8.2 ദ

   Ҫʹô͵ϣʹ 416  32 ⷴ SMP ԡ
   һ棬Ҳʹ 4  5 ԣϿָ
   (partition) Ϊ 4  5 ֿϿ⣬ÿһСÿ
   Ը 100MBits̫翨ӡ磬Ͽжٸ
   ɰǷΪĸϿ⣬ÿʮѹƽ 4
   ֿĵԡһĴԱ˵ķ ʹáϿĲ
   ѯʹ NFSΪΨCREATE VIEW⹤ÿ
   ɡϿ⣬ȫ 200 δPostgreSQL ֧
   ԮϿĲѯѾ TODO ڽƳ 7.1 ֡磬
   ʹô ab ĿϿѯơ
     _________________________________________________________________
   
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  (Replication) ŷ

   Ϊҵ/ҵ˾ĸŷ PostgreSQL Inc ҵʹ
   øŷṩظϼ߶ȿɵ (availability)ŷһ
   ӡȽĲƷҪǮ
   
9. ƾʲ PostgreSQLRegression ׼Ϊû

   ѧɡǿԿѧؼ֤ PostgreSQL Ƿ
   ISO/ANSI SQL Ϊ PostgreSQLRegression ׼
   src/test/regressѰڷа汾 (distribution) У ĵ
   ֤׼ SQL  PostgreSQL  ׼Ѱٸ
   SQL Գʽ
   
   ӦõԵĸ֤ PostgreSQLԡ Կǧ
   ڱٶ Regression ԡִԿںܶʱִʮ
   ڸ SQL ԡڲýԻԿױˣ ʹõ
   ԵԵıǺġ
   
   ҪҲӲԡΪ㻥üа 
   Ҳɰص PostgreSQL վRegression ׼û
   PostgreSQL ļΣҲϵͳѸ PostgreSQL
   
   Regression ׼ɱΪԱû໥ͬһݡǳ
   ļļPostgreSQL ڿ̼Ƴ֮ǰ㷺ʹ Regression 
   ׼֤ء
   
   PostgreSQL ɼ Regression ׼ֱӷӳһֹܡ
   ﷨ Regression дڣͱ֧Ԯûг
   PostgreSQL Ϳ֧ܲԮ֤ Regression ׼С
   
10. ϿⱣ

   ϿⱣڶͬ̽֡
     * Ͽ⵵Ͽе postgres ûû
       ȡ
     * ԤֵûӵϿŷֻ͸ UNIX 
       (socket) TCP/IP ŷ -i ѡǱ
       ӡ
     * ͻӿ IP ַ / Ƽƣֻ޸ $PG_DATA е
       pg_hba.conf 
     * ɼⲿ׼֤ͻӡ
     * ÿλ Postgres ûһʹƺѡԵӵһ롣 Ԥֵ
       ûûȨд벻ԼϿ⡣
     * ûɱ䵽ȺУܷȡһȺȨơ
       
10.1 û֤

   ֤ŷ postmaster ȷҪȡϵûǷȷΪ˵Ĺ
    Postgres ߶֤ŷ postmaster pg_user 
   ȽϣȷȨĹ ʵֵıԶͬ
   ɡ
     * ʹ shell С ʹ shell ֱŷߵģ
       Чʹߴ (effective user-id)֮һ setuid Ϊ
       postgres ЧʹʶŻᱻȡƵĻû֤
       
     *   Postgres ϵͳԷɢʽУκ˶ɴȡ
       postmaster г (process) Ļ TCP ϿԱ趨
       $PGDATA Ŀ¼е pg_hda.conf ָͬӲͬϿʱ
       ֤ϵͳ  pg_hba.conf(5) man 5 pg_hba.conf ˽ⲻͬ
       ֤ϵͳȻ֤ Unix ҲǺ֡оĵ
       ҲαװԼõЩⲻ Postgres Ŀơ
       Χ
       
10.2 ƴȡ

   ƴȡ PostgreSQL 춾ʲͻɴȡϿȷ
   ݵĹ̡ÿϿⶼһΪ pg_hba.conf ĵ
   $PGDATA Ŀ¼У˭ܴȡϿ⡣ÿȡϿûҪ
   pg_hba.conf Ӧļ¼ԸÿͻӶ"User
   authemtication failed" ѶϢܡ
   
    pg_hba.conf(5)  man pageman 5 pg_hba.conf
   
   pg_hba.conf Ļʽһ¼һһл hash ĸ#
   ʼᡣһ¼һЩÿո /  Tab ֿλɡ
   
   ӿͻӿɾ Unix  TCP/IP Unix 
   ¸ʽļ¼ơ
     _________________________________________________________________
   
local database authentication method
     _________________________________________________________________
   
   
   
   database ָ¼ĸϿ⡣all Ͽ⡣
   
   authentication method ָûʹ Unix ʱ֤ķͬ
   
   
   Ի¸ʽļ¼ơ
     _________________________________________________________________
   
host database TCP/IP-address TCP/IP-mask authentication method
     _________________________________________________________________
   
   TCP/IP ַ ߼ and'ed ָ TCP/IP ֺͿͻ TCP/IP ַ
   ȣ¼ӡһӷϳһ¼ е
   һ¼ᱻʹá TCP/IP ַ TCP/IP ֶԷֵʮ
   ʽ (dotted decimal notation) һӺм¼
   reject ֤ᱻʹá [60]֤
   
10.3 ֤

   Unix  TCP/IP ֧Ԯ֤
     * trust ӡ
     * reject ؾܾӡ
     * crypt ʿͻߵ롣ᾭܣʹ crypt(3)
       pg_shadow Ƚϡӡ
     * password ʿͻߵ롣ԭװͺ pg_shadow 
       ȽϡӡһѡԵ뵵 password 
       ֡Ի⵵ pg_shadow 
       pg_passwd
       
   ֻ֤ TCP/IP ֧Ԯ
     * krb4  Kerberos V4 ֤û
     * krb5  Kerberos V4 ֤û
     * ident ÿͻ˵ ident ŷ֤ûRFC 1413 ident ؼ
       ỹѡԵָһӳ䣬 ident ûƶӦ Postgres û
       ơӦĹϵ $PGDATA/pg_ident.conf С
       
   һЩӡ
     _________________________________________________________________
   
#  Unix ӡ
local   trust
# ⲿԾ TCP/IP ӡ
host    all 127.0.0.1   255.255.255.255     trust
# ⲿԡ
host    all 192.168.0.10    255.255.255.0       reject
# ⲿԲܣҪֵ롣
host    all 192.168.0.3 255.255.255.0       password
# ȺԵԱҪṩ˵롣
host    all 192.168.0.0 255.255.255.0       crypt
     _________________________________________________________________
   
10.4 ȡ

   Postgres ṩüҴȡԼϵĻơ
     * Ͽⳬü (Database superusers) Ͽⳬüң
       pg_user.usesuper 趨ΪԵüңԶ֮ͨдȡ
       pg_user.usecatupd û趨ΪԵĻ׼ֶϵͳĿ¼ݻϵͳ
       Ŀ¼޸ĸĿ (schema)׼
     * ȡȨ (Access Privilege) ȡȨƶд趨
       (class) Ȩ SQL grant/revoke(1) 
     * Ƴ޸ĸĿ ޸ִĽṹ޸ġ񣬺Ͷ
       ִֻС දϵͳĿ¼
       
10.5  SSH ı TCP/IP 

    ssh ܿͻ Postgres ŷӡȷĻ
   γһӡ
   
   ssh ļṩ˴󲿷ݿʼʱҪϡ
   [61]http://www.heimhardt.de/htdocs/ssh.html Լ˽⡣𲽽ֻ
   
   
    ssh γһͨ 𲽽ֻ
     * һ˵Եͨ¡
         _____________________________________________________________
       
ssh -L 3333:wit.mcs.anl.gov:5432 postgres@wit.mcs.anl.gov
         _____________________________________________________________
       
     * -L ĵһ֣33333ⷽͨĲšڶ֣
       5432һյ˵Ĳš֮ƻַŷ
        ssh һüѡǷϵûҲǡ û
       ƵĻssh ᳢ʹõͻ˵Եûơ κŷ
       ԽܵûƣһҪú PostgreSQL йصġ
     * ѿʼһ ssh ʱΣѿõĵԵ Postgres ͻ
       ǰһĲšʹ psqlҪһ棬Ϊ֮ǰõ
       һѱ ssh ռݡ
         _____________________________________________________________
       
psql -h localhost -p 3333 -d mpw
         _____________________________________________________________
       
     * עҪ -h ʹĿͻ TCP  Unix 
       5432 ͨյȥĲ
       
10.6 Kerberos ֤

   Kerberos һҵ׼ı֤ϵͳ춾ķɢʽϵͳ
   
   ȡ Kerberos ֤ϵͳͬ Postgres ɢͬ汾 Kerberos
   Կɹѡʽҵϵͳ̵õ⣬ԭʽķа汾
   (distribution)  MIT Project Athena õ
     _________________________________________________________________
   
עüʹʹṩ KerberosԿ MIT
棬ΪһЩ̵İ汾Ū²ܺ MIT 汾
     _________________________________________________________________
   
   й Kerberos Ĳѯύĳ̻ MIT Project Athenaע FAQLs
   Frequently-Asked Questions Lists) ᱻʱ Kerberos ͨ
   ̳ȥģ USENET 顣
   
   װ װ Kerberos  Kerberos Installation Notes ϸ˵Ҫȷ
   ŷ뵵 (key file)srvtab  keytabɱ postgres û
   趨 src/Makefile.global  KRBVERS Postgres ͻʽɱ
   Ϊʹ MIT Kerberos ͨѶЭĵĻ档Ҳɸı Postgres ҵ
   غʽ⡢ͷԼŷ뵵λáᣬ Postgres Ҫ
   Ϊһ Kerberos  Kerberos Operations Notes  manual
   pages ȡйصǼǷ顣
   
    װ֮ᣬPostgres ڸӦһ Kerberos Ҫ֪
   ֤ʹ÷ PostgreSQL User's Guide й postmaster  psql 
   ½ڡ
   
    Kerberos ҵ (hooks)ûͷ¼裨Ҳ
   ±񣩡
     * ûҪ (principal namesanames) һм躬 Unix
       / Postgres ûơ
     * Postgres ݣƺơͬİĸ
       ʽ ȥĲ֣
     _________________________________________________________________
   
                Kerberos 
 ------------------------------------------------------
        
 ------------------------------------------------------
 user       frew@S2K.ORG
 user       aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG
 host       postgres_dbms/ucbvax@S2K.ORG
 ------------------------------------------------------
     _________________________________________________________________
   
11. PostgreSQL ǰ GUI ߣͼʹ߽棩

   ҳδΪеǰ GUIС洫Ӵ
   95/NT ʽдΪִеĳʽ
   
   ҪʹӦóʽŷ [62]Enhydra ʹ Java [63]Zope ʹ
    Python [64]OpenACS 
   
    (script) д룩 [65]PHP+Zend PHP
   ʮǿΪ PerlJavaC++  Javascript Ĺܽϵһ
   УҿҵϵͳUnixes Ӵ NT/95 ִС
   
   ϲĳ̶ΪᣬѹΪ
     * Enhydra  [66]Enhydra  Borland Java JBuilder Linux 
       [67]http://www.inprise.com
     * Zope  [68]Zope
     * OpenACS  [69]OpenACS
     * PHP  Zend  [70]PHP+Zend 
     * X-Designer ֧Ԯ C++, Java  MFC [71]http://www.ist.co.uk/xd
     * Windows95  Unix  QT  [72]http://www.troll.no 
       [73]ftp://ftp.troll.no
     * Code Crusader  Linux cdrom У MetroWorks Code Warrior д
       
       [74]http://www.kaze.stetson.edu/cdevel/code_crusader/about.html
     * MetroWorks  Code Warrior [75]http://www.metrowerks.com
     * GNU Prof C++ IDE [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
       
   Ϊȵѡ
    1. JavaĳʽִеúҪȨѡC++  Java 屶
    2. Pythonǿԣ
    3. PHP άŷ HTMLDHTMLJavascript ͻ弰
       Java-Applet
    4. Perl ʹ Perl-Qt  Perl-Tk [80]Perl Ͽ
    5. Omnipresent  Omnipotent  C++ (GNU g++)
          + Fast CGI C++ дɣ Javascript/Java-Applet Ϊҳǰ
            ˽
          + GNU C++  QtEZ  QT
          + GNU C++  Lesstif  Motif
       
   ߡPostgreSQL а汾 (distribution) һΪpgTcl
    Tcl/Tk ʽ⡣Tcl/Tk һΪ SpecTcl ۺϿ
   
     * Lesstif Motif 
       [81]ftp://ftp.redhat.com/pub/contrib/i386/lesstif*.rpm
     * Vibe Java/C++  [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
     * Ϊ INCR  Tcl  [85]http://www.tcltk.com
     * Visual TCL վ [86]http://www.neuron.com
     * Visual TCL Redhat rpm 
       [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  Kanchenjunga
       [93]http://www.man.ac.uk/~whaley/kj/kanch.html
     * Applixware  [94]http://www.redhat.com 밴Redhat ͣ
       Applix Ʒ
     * 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
       
   ҲӴ 95 ʹ Borland C++ BuilderDelphiBorland JBuilder
   PowerBuilder  ODBC/JDBC ʽӵ unix Ե PostgreSQL
   
12. PostgreSQL Ľʽ

12.1 PostgreSQL  ODBC ʽ

   ODBC ΢ƶġOpen DataBase Connectivity ǴӲ̵ͬ
   ͬϿȡϵн档ʹ ODBC ʽдɵ֤춲
   ͬϿ⣬ PostgreSQLOracleSybase  Informix ȡ
   
     * [100]PostODBC Ѿڷа汾Сҳ
       [101]http://www.postgresql.org Ѱ PostgreSQL С
     *  [102]http://www.iodbc.org Ŀԭʼ ODBC ר
     * [103]http://www.openlinksw.com Open Link Software Corporation 
       PostgreSQL Ͽ ODBC ʽҲͳѵ ODBC (
       ޣ
     * Insight  PostgreSQL ODBC
       [104]http://www.insightdist.com/psqlodbc  PostODBC Ĺٷվ
     * FreeODBC ׼ [105]http://www.ids.net/~bjepson/freeODBC/һ
       ѵ ODBC
     * PostgreSQL  ODBC 32 Explorer [106]http://members.nbci.com/anhr
       
12.2 PostgreSQL  UDBC ʽ

   UDBC һֶʽԱ (driver managers)  DLL ֧Ԯľ̬
   ODBC 汾ֱӰϿǶ뵽ӦС
     * [107]http://www.openlinksw.com Open Link Software Corporation 
       PostgreSQL Ͽ UDBC ʽOpen Link Ҳͳѵ
       UDBC (ޣ
       
12.3 PostgreSQL  JDBC ʽ

   JDBC Java DataBase ConnectivityJava һ (Sun
   Microsystems) Ķƽ̨ĳʽԡJava ʽʦʹ
   JDBC ׫дϿʽǿʽڲͬϿ⣬ PostgreSQLOracle
   Informix ֲ֮д Java ʽվȡ
   PostgreSQL  JDBC ʽ
   
   JDBC ʽѰ PostgreSQL а汾 postgresql-jdbc*.rpm ׼
   
   
     * [108]http://www.demon.co.uk/finder/postgres/index.html  Java 
       PostgreSQL 
     * [109]ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz
     * [110]http://www.openlinksw.com Open Link Software Corporation 
       PostgreSQL Ͽ JDBC ʽOpen Link Ҳͳѵ
       JDBC (ޣ
     * JDBC Ӣվ [111]http://www.retep.org.uk/postgres
     * JDBC FAQ վ [112]http://eagle.eku.edu/tools/jdbc/faq.html
       
   JDBC ҳ FAQ ڡ
     * 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  һڡ
   
12.4 PostgreSQL  Java

   Java ʽʦЩǺá
     * [117]ftp://ftp.redhat.com/pub/contrib/i386 
       postgresql-jdbc-*.rpm
     * [118]http://www.blackdown.org
       
   ο [119] Java  һڡ
   
13. PostgreSQL  Perl Ͽ (Database Interface, DBI)

13.1 PostgreSQL  PERL 

   PERL ǡPractical Exptraction and Report Languageļд 
   Ӳƽ̨ʹ PerlӴ 95/NTƻ iMac Unix
   SolarisHPUXAIXLinuxIrixSCO ȵȣ͵ MVS
   OS/2OS/400Amdahl UTS ܶԡPerl ںܶ಻кͲΪ
   ֪ĲϵͳӲִУԣڿ Perl һĲϵͳִ
   ʱشС֡ Perl ʹߺͿԱ͡C
   ƣPerl кܳδǧԴPerl ִٶ
    Java ʮʱȡC졣Java һǳӵϵͳ
   ֱʹǳȶͲɿ Perl ࡢ٣
   
   
   PostgreSQL  Perl Ѱ PostgreSQL İװ׼Сο
   src/pgsql_perl5 Ŀ¼
     * Pgsql_perl5 ַ [120]E.Mergl@bawue.de
     * Perl ҳ [121]http://www.perl.com/perl/index.html
     * Perl  [122]http://reference.perl.com/ οĿ¼
     * Perl FAQ 
       [123]http://www.yahoo.com/Computers_and_Internet/Programming_Langu
       ages/Perl/
     *  [124]http://www.perl.com/CPAN/modules/by-module/CPAN ȡ
       Perl ģ֮ĸ¡/usr/bin/cpanman CPANǧƵģ
       [125]http://www.perl.com/CPAN-local/modules/by-module
     * Perl GUI ʹ߽ Perl-Qt rpm
       [126]ftp://ftp.redhat.com/pub/contrib/i386 Ҳ뿴
       PerlQt-1.06-1.i386.rpm
     * Perl GUI ʹ߽ Perl-Qt
       [127]http://www.accessone.com/~jql/perlqt.html
     * Perl GUI ʹ߽ Perl-XForms
       [128]ftp://ftp.redhat.com/pub/contrib/i386Ѱ
       Xforms4Perl-0.8.4-1.i386.rpm
     * Perl GUI ʹ߽ Perl-Tk
       [129]ftp://ftp.redhat.com/pub/contrib/i386
     * Perl GUI kits [130]http://reference.perl.com/query.cgi?ui
     * Perl Ͽ
       [131]http://reference.perl.com/query.cgi?database
     * Perl  "C" ķ빤ߡ
       [132]http://www.perl.com/CPAN-local/modules/by-module/B/ Ѱ
       Compiler-a3.tar.gz
     *  Perl ΪִеPerl2Exe һɰ perl תΪִе
       ĵָйߡ [133]http://www.indigostar.com/perl2exe.htm
     * Bourne shell  Perl ķ빤ߡ
       [134]http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.g
       z
     * awk תΪ perl  a2p  sed תΪ perl  s2p Ѱ PERL ɢС
     * Ҳ뿴 comp.lang.perl.* й PERL 
       
13.2 Perl Ͽ DBI

  ν DBI
  
   Perl Ͽ棨DBI Perl ԵһϿȡӦóʽ棨API
   Perl DBI API һ麯͹ṩһһ¶ʵ
   ϿĽ档 ϿʽPerl DBIķΪһҵ
   Ͽƶ׼ ֻ軨ٹɴ Oracle ת PostgreSQL
   
   
  PostgreSQL  DBD ʽ
  
   㰲װ DBD PostgreSQL ʽǰҪȰװ DBIµطȡ
   DBI ʽ
     * ȴ [135]http://www.perl.com/CPAN/modules/by-module/CPAN ȡ
       Perl ģ֮ĸ/usr/bin/cpanman CPANǧƵģ
       [136]http://www.perl.com/CPAN-local/modules/by-module
     * 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 ̳ͨ [141]http://www.fugue.com/dbi
     * Perl Ͽοļ
       [142]http://www.perl.com/reference/query.cgi?section=database
     *  DBI rpm עÿǾɰ棩
       [143]http://rpmfind.net/linux/rpm2html/search.php?query=DBI
       
   ڴȡ DBD-Pg
     * ȴ [144]http://www.perl.com/CPAN/modules/by-module/CPAN ȡ
       Perl ģ֮ĸ/usr/bin/cpanman CPANǧƵģ
       [145]http://www.perl.com/CPAN-local/modules/by-module
     * DBD ģ [146]http://www.perl.com/CPAN-local/modules/by-module/DBD
        DBD-pg  [147]DBD
     * Comprehensive Perl Archive Network CPAN
       [148]http://www.perl.com/CPAN ⴦ѡDatabase Search 
       Ϸ ѡGoť
     * Ԥȱ˵Ӵ NT/2000 ׼
       [149]http://www.edmund-mergl.de/export/DBD-Pg.zip õ
     *  DBD rpm עÿǾɰ棩
       [150]http://rpmfind.net/linux/rpm2html/search.php?query=DBD
     * Perl ģ飨ǧƣ
       [151]http://www.perl.com/CPAN-local/modules/by-module
       
  DBI ļ֧Ԯ
  
     * 뽫󱨸ͬ perl -v  perl -V PostgreSQL İ汾
       DBD-pg İ汾DBI İ汾 [152]E.Mergl@bawue.de
       
  DBI ļ
  
   һЩ DBI Դ
   
   POD ļ POD Ƕ뵽 perl ʽԡͳʽһļ
   ԸʽʦģüṩõϡDBI ʽ POD Խ
   ԽУҪĶйļʹָ
     _________________________________________________________________
   
DBI  PO ָĶ
        $ perldoc DBI

ʹýϵ DBD::Oracle  Oraperl ģ˿ָĶ Oraperl
дʽ
        $ perldoc Oraperl

DBD::mSQL ģüҿɼָĶһЩʽĶҺ (private
functions) 칦ܵϡ
        $ perldoc DBD::mSQL

POD ļҲ⡣ҪĶĻ
        $ perldoc DBI::FAQ

POD һϡ׫д POD POD ѧɼָĶ
        $ perldoc perlpod
     _________________________________________________________________
   
   װ Tk ģüҿܻһΪ tkpodʹ Tk  POD ĶȤ
    POD ŵһ㼰Ķʽ
   
   Ҳ뿴
     *  DBI ̳ͨ
       [153]http://www.symbolstone.org/technology/perl/DBI/tidbits
     * DBI Perl Journal ҳ [154]http://www.tpj.com
     * DBperlһžʮһµġDr. Dobbs Journal
     * The Perl5 Database Interfaceһ Alligator Descartes дɣ
        O'Reilly and Associates 顣
       
   üҿܲμӵ̳ͨΪ
     * ̳ͨ [155]http://www.fugue.com/dbi
     * dbi-announce  [156]dbi-announce-request@fugue.com 
       'subscribe' Ϊ
     * dbi-dev Աר Email: [157]dbi-dev-request@fugue.com 
       'subscribe' Ϊ
     * dbi-users һ Email: [158]dbi-users-request@fugue.com 
       'subscribe' Ϊ
     * ͨŴ
       [159]http://outside.organic.com/mail-archives/dbi-users/
     * ŷͨŴ
       [160]http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Int
       erest
       
  Ӵ 95/NT û DBI ֧Ԯ
  
   DBI  DBD::Oracle  Win32 汾ѳΪ DBI ı׼֡ˣ DBI
   0.81 ߵİ汾Ӧû͸ ODBCԴȡ΢ Access 
   SQL-Server Ͽ⡣ DBI-0.79ᣩһ Win32::ODBC DBI ģ㡣
   Ϊ DBI::W32ODBCҪʹ Win32::odbc ģ顣
     * Win32 DBI [161]http://www.symbolstone.org/technology/perl/DBI
     * Win32 ODBC [162]http://www.roth.net
     * ΢ SQL server  Perl 
       [163]http://www.algonet.se/~sommar/mssql
       
  ҵ֧Ԯѵ
  
   PERL CLINIC : Perl Clinic ԺԼʽΪ PerlDBIDBD::Oracle 
   Oraperl ṩҵ֧ԮЩ֧Ԯ DBI  Tim Bunce Ĺ˾ṩ
   ֪飬뿴
     * ֧Ԯ [164]http://www.perlclinic.com
     * ֧Ԯ [165]http://www.perldirect.com
     * ѵ [166]http://www.westlake.com/training
       
13.3  Perl 

    [167] PerlPostgreSQL һ
   
14. PostgreSQL 

14.1 PGACCESS -  PostgreSQL  GUI 

   PgAccess  PostgreSQL  Tcl/Tk 档Ѿ PostgreSQL ķ
   Сҳҳû°汾
     * [168]http://www.flex.ro/pgaccess
     * κĽ飬ʡ [169]teo@flex.ro
       
   pgaccess ÷
     _________________________________________________________________
   
# man xhost
# xhost +
# su - postgres
bash$ man pgaccess
bash$ export DISPLAY=<>:0.0
bash$ pgaccess mydatabase
     _________________________________________________________________
   
   PgAccess ɫ
   
   PgAccess ӴMain window, Table builder, Table(query) view, Visual
   query builder.
   
   Tables
     *  (tables) ģٸ¼ perferences ˵ģ
     * ҷֱ (grid line) Сбռ (table space) 
       бĿ¼ (table header) ã
     * ԶСÿö
     * /ʽSDFCSV
     * ˹ܣ price>3.14 Ĺ
     * ܣλ
     * ༭
     * ˵ı (table generator assistant)
     * ˵λ༭
       
   Queries
     * 塢༭ʹ桰üҶѯ(user defined queries)
     * ѲѯΪ (views)
     * ѯִ
     * ۿ select ʽĲѯ
     * ɾ͸Ĳѯ
     * ҷͷ¹ܵ Visual query builderаװ Netscape
       Navigator  Tcl/Tk ڴ˿ 밴ò֪ģ
       
       
    (sequence)
     * 塢ɾͼ
       
    (Function)
     * ʹ SQL Զ塢ɾ
       
   ¸Ľ
     * ƣλȵȣ
     * 
     * 
     * д
       
   й LIBGTCL 
   
   õ PostgreSQL  Tcl Ľʽ libpgtclν Tcl/Tk ɡ
   롯ģ顣libpgtcl ԭʼλ PostgreSQL  /src/interfaces/libpgtcl
   Ŀ¼ض˵Ҫһ Tcl/Tk롯 libpgtcl ʽ⡣
   ˵ͨ PostgreSQL ĿĵͬΪ libpgtcl һ
   Ŀĵ (object files) ļϡ⵵ Linux Ϊ libpgtcl.so
   ַһΪ Linux i386 ϵͳԤȱ˵İ汾ֻ⵵ϵ
   ͳʽĿ¼/usr/lib ɡѣһɾԭʼ
   й libpgtcl.so һʹ pgwish wishpg
   pgaccess.tcl wishΪ wish  libpgtcl ʽ⡣
   
   ڱ pgaccess Ŀ¼ʱ crypt not found ⣬ʹ
   -lcrypt
   
14.2 PostgreSQL ͼͽѯ GtkSQL

   GtkSQL һͼͽѯߣ PostgreSQL  psql GNU GPL 
   Сʹ Gtk+ 1.2.3  PostgreSQL 6.3 ɡ
   
   GtkSQL վΪ [170]http://gtksql.sourceforge.net
   
   Ҫɫ
    1.  SQL ݴ
    2. SQL ؼ֡ƺλԶ
    3. ʾ
    4. PostgreSQL  MySQL ֧Ԯ׼Ͽ⣩
       
   GtkSQL Ŀǰİ汾Ϊ v. 0.3
   [171]https://sourceforge.net/project/?form_grp=533 ԭʼ롣
   
14.3 Ӵе PostgreSQL ʽѯߣWISQL  MPSQL

   MPSQL ṩʹһͼ SQL  PostgreSQLMPSQL  Oracle 
   SQL Worksheet ΢ SQL Server Ĳѯ WISQL ơһƯ
   GUI ָ¼ҲԼ¼ϡĹܡ
     * [172]http://www.troubador.com/~keidav/index.html
     * ʡ [173]keidav@whidbey.com
     * [174]http://www.ucolick.org/~de/  tcl_syb/wisql.html 
     * [175]http://www.troubador.com/~keidav/index.html
     * ʡ [176]de@ucolick.org
       
14.4 Ϊ PSQL  PostgreSQL ʽѯߣISQL

   ISQL ǹָն˻ʹõġѰڷа汾УΪ psql
   Sybase ISQLOracle SQLplus ʮơ Unix ָʾ롮psql
    psql> ʾ
   
bash# su - postgres
bash$ man psql
bash$ psql mydatabase
 \h ĶָѶϢ

   ǳʹƺá  (shell script) ʹá
   
14.5 MPMGRPostgreSQL Ͽ

   MPMGR Ϊ PostgreSQL ǹһͼ档µطҵ
     * [177]http://www.mutinybaysoftware.com/
     * Email: [178]keidav@mutinybaysoftware.com
     * [179]http://www.troubador.com/~keidav/index.html
     * ʡ [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
     * ʡ [183]de@ucolick.org
       
14.6 PgAdminPhpPgAdmin 

     * Ӵ 95/NT  PgAdmin  Ӵ 95/NT  PostgreSQL Ͽƹ
       [184]http://www.pgadmin.freeserve.co.uk
     * ĹߡPostgreSQL õ PhpPgAdmin 
       [185]http://www.phpwizard.net/projects/phpPgAdmin
       
14.7 PgBash - SQL shell 

   PgBash Ĺ psqlңPgBash ʹ bash Ĵ (alias)
   ʷ༭һĻṩõĹܡ
   
   PgBash ҳ
   [186]http://www.psn.co.jp/PostgreSQL/pgbash/index-e.html
   
   PgBash һ PostgreSQLֱ SQLǶʽ SQL ("direct SQL"
   or the "embedded SQL")  shell bashĿǰ°Ϊ 2.03
   shell PgBash  shellsub-shell shell 
   shell)  shell ʽ
   
   ڴˣֱ SQL аѽֱ׼Ƕʽ SQL аȡ
   Ľ趨 shell پ shell  (script) 
   Դ
   
   SQL 䣨Է꣩һ shell ָǿִ
   SQL 䲢춹ܵ (pipeline)ͱѡ⣬ʹ exec_sql
   ָǿòͬѡִ SQL 䡣ʵִ SQL ¡
     _________________________________________________________________
   
prompt> /usr/local/bin/pgbash                 pgbash
pgbash> connect to db2@xxx.com user sakaida; ӵϿ
pgbash> select * from test limit 100; | more ʹùܵ
pgbash> select * from test; > /tmp/sel.dat & ʹøͱ
pgbash> addr='Osaka'
pgbash> insert into test values(
>  111,'name',                               Ի
> '$addr'                                    ʹ shell 
> );
pgbash> connect to db3@yyy.com user postgres;
pgbash> set connection db2;                  ĿǰϿΪ db2
pgbash> select * from test;                   db2  test ѡ
pgbash> exec_sql -d db3 "select * from test3"ӵ db3
pgbash> ls
pgbash> begin;
pgbash> declare cur cursor for select * from test;
pgbash> fetch in cur into :AA,:BB;           趨 shell 
pgbash> echo "AA=$AA, BB=$BB"
pgbash> end;
pgbash> fc fetch                             ༭ʷ¼ִ
pgbash> !echo                                ٴ echo
pgbash> disconnect all                       ر
pgbash> exit                                  pgbash
     _________________________________________________________________
   
14.8 PostgreSQL  Webmin 

   webmin ߣ͸Ǳҳ Unix ԣ°汾0.82 
   һ PostgreSQL ģ顣ʹģûȺ顢Ͽ⡢
   Ҳɲı
   
    [187]http://www.webmin.com/webmin ҵ webmin
   
15. PostgreSQL õ봦

   ļ [188]http://metalab.unc.edu/LDP/HOWTO/CPU-Design-HOWTO.html 
   õ PostgreSQL 봦Ҳṩй봦
   顣
   
   봦 (CPUs)32 λԪ 64 λԪִ PostgreSQLǶ
   Linux
     * վǡGoogle Ѱ CPU վ
       Computers>Hardware>Components>Microprocessors
       [189]http://directory.google.com/Top/Computers/Hardware/Components
       /Microprocessors
       
   Ϊ GNU/GPL ԭʼ봦
     * ԭʼ봦վGoogle Ѱ "Computers>Hardware>Open Source"
       [190]http://directory.google.com/Top/Computers/Hardware/Open_Sourc
       e
     * OpenRISC 1000 Free 32-bit  IP ģרϵ ARM  MIPS 
       λ [191]http://www.opencores.org/cores/or1k
     * OpenRISC 2000 λ [192]http://www.opencores.org
     * ŷ̫ ESA-32bit  ESA-64bit LEONSparc
       [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 ӳվ̨λ [196]http://www.f-cpu.de
     * STM 32 λԪ˫򳬴 (2-way superscalar) RISC 
       [197]http://www.asahi-net.or.jp/~uf8e-itu
     *  Verilog  VRML дɵ΢ DSP IP 
       [198]http://www.cmosexod.com
     * ʹӿӲ
       [199]http://www.scrap.de/html/opencore.htm
     * Opencores orgԭʼ롢 IP core
       [200]http://www.opencores.org
     * Linux Ӳ EDA ϵͳ [201]http://opencollector.org
     * ARM  [202]http://www.arm.com/Documentation
     * Cogent  [203]http://www.cogcomp.com
       
   Ϊҵ
     * ˹ E2k 64-bit CPUܿĴ վ
       [204]http://www.elbrus.ru/roadmap/e2k.html Elbrus Ѻ΢ϵ
       ͳΪ顣
     *  (Samsung) 64 λԪ DEC Alpha
       [205]http://www.samsungsemi.com Alpha-64bit 
       [206]http://www.alpha-processor.com Ǻ Compaq 
       Alpha 
     * Ӣض (Intel) IA 64 [207]http://developer.intel.com/design/ia-64
     * ȫ (Transmeta) crusoe Ͳýȫ 64 λԪ
        [208]http://www.transmeta.com
     * Sun Ultra-sparc 64 λԪ [209]http://www.sun.com 
       [210]http://www.sunmicrosystems.com
     * MIPSRISC  [211]http://www.mips.com
     * SGI Graphics MIPS Architecture 봦
       [212]http://www.sgi.com/processors
     * IDT MIPS Architecture 봦 [213]http://www.idt.com
     * IBM Power PCĦ
       [214]http://www.motorola.com/SPS/PowerPC/index.html
     * ĦǶʽ PowerPCM-COREColdFireM68k 
       M68HC  [215]http://www.mot-sps.com
     * M68k  M68K  [216]http://www.mot-sps.com
     *  SuperH 64-bit RISC  SH7750 [217]http://www.hitachi.com
       һһÿֻʮԪ
     * Fujitsu 64-bit  [218]http://www.fujitsu.com
     * HAL (California) Super-Sparc 64-bit  [219]http://www.hal.com
       Ҳ Sun  sparc ṹݡ
     * Pyramid Technologies  Seimens Pyramid 봦
     * Intel X86 ϵ 32-bit 봦ڡȵȡ
     * AMDs X86 ϵ 32-bit 봦K-6Athlon ȵȡ
     * National's Cyrix X86  32-bit CPUs Cyrix ȵȡ
     * ң̨塢ձ봦ҡ
       
   ҪĴվΪ
     * إСʱȫ
       [220]http://www.newsnow.co.uk/cgi/NewsNow/NewsLink.htm?Theme=Proce
       ssors
     * Խṹλ [221]http://www.cs.wisc.edu/~arch/www
     * ARM  [222]http://www.arm.com/Documentation
     * ΰĴ [223]http://www.cs.uregina.ca/~bayko/cpu.html
     * Microdesign Դ [224]http://www.mdronline.com
       
16. ֻʹһʾ (monitor) 趨̨ PostgreSQL 

   㲻뻨ǮӲѡʹ VNC (Vitual Network Computing)
   ԵѶҵ AT & T VNC  GPL ģһ VNC
   һûʾĵִ PostgreSQL ʽԶ˵Եʾ
   ʾЩԱ Ethernet 濨ӡVNC 
   [225]http://www.uk.research.att.com/vnc ҵ밴VNC ʹ
   TCP/IPֻҪ IP ַԶ˵ӣһҪ Ethernet
   ٶȿܺ
   
   ɵֻ̨һʾһ KWM̡Ӱʾ
    (Keyborad, Video, Monitor) 밴M ǷΪ󣿣ѡѡ
   õԡ ⲻʡطٻңҲʡʾ̺ͻÿֵ
   100  500 Ԫ
   
   ѡɵ߶̨ PostgreSQL ŷԡ
   ŷ ftp ŷŷŷŷһ
   ѡҲɿӴ 95/NT  OS/2 ԡ
   
   鿴ַ
     * DataComm Warehouse Inc绰 1-800-328-2261ṩƷֵĵ
       Ӳ [226]http://www.warehouse.com 4 ֶ KVM ѡ (PS/2) Լ
       $89.99 Part No. DDS1354
     * Network Technologies Inc
       [227]http://www.networktechinc.com/servswt.html (120 Ԫ/PC 8 )
       嵥а 'Server Switches'  '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
     * Ӳ̲ѯServer SwitchơKVM Auto Switches
       
    yahoo ѰҳСServer SwitchesKVM SwitchesĹ˾
   
   
   ÿ PostgreSQL Ͽŷһרõ unix ԣǿ֡
   ʽ/г̶ҪִС Ķסطıµҵҳ
   Щ Intel Ժ 13 ɫөĻʮ˵өĻֻҪӲ
   ΢Ӵ / DOSϿŷҪɫʾΪһ
   ɫĸ˵ңع
   
   ̵򵽵ĵӲҵõļǮ
     * ̵ [234]http://www.egghead.com
     * ̵ [235]http://www.buy.com
     *  [236]http://www.ubid.com
       
   µطȡ RedHatа汾Linux Ĺ
     * Linux System Labs ַ [237]http://www.lsl.com/ 7 Ԫ
     * Cheap Bytes Inc ַ [238]http://www.cheapbytes.com/ 7 Ԫ
       
   ȷ㹺Ӳ RedHat Linux ֧Ԯǰ RedHat  ftp վҳ
   Ӳ SCSI ʾôԼԪɵõһ̨ǿ
   Intel ԣ RedHat Linux ִ PostgreSQLӴ 95OS/2Unix
   Motif RedbaronOperaNetscape إ
   odbc/jdbc/perl/tcl  PostgreSQLѸٳΪ׼ GUI ͻ
   (client)
   
   ʹ KWM ѡֻһʾһƶ̨
   
17. PostgreSQL άӦóʽŷ

   ЩӦóʽŷɺ PostgreSQL ԭʼ뻹ҵ汾С 
   ĿԭʼάӦóʽŷ Perl Ϊ SmartWorkerWIRM
    VelocigenEnhydraJava ZopePythonҵ IBM
   WebsphereBEA Weblogic
   
   ʹñάŷ Apache + mod_ssl + OpenSSL
   [239]http://www.c2.net/products/sh3  Redhat StrongHold ŷ
   ϡ
   
   άӦóʽŷ֧ԮĳʽԷࡣ ʹһϲ
   ΪάӦóʽŷ
   
   άӦóʽŷķ¡
     *  PERL Ϊ
     *  PHP Ϊ PERL ƣҲе Java
     *  Python Ϊԣ
     *  Java ΪSun Microsystems Java
     *  Tcl ΪTcl/TKΪTickle
     *  C++ ΪC++  CORBA
       
17.1 PERL άӦóʽŷ

   ͡CƣPerl кܳ Perl δһκܳʱ仹
   ᱻ㷺ӦãĳЩϣPerl  Java  Java ĳЩҲ
    Perl 죩 Java һǳӵϵͳֱʹ
   ǳȶͲɿ Perl ࡢ٣
   
   ⣬Perl ʽ׵ر룬Խһ֡ʹ Perl2Exe ָ
    perl תΪִе
   [240]http://www.indigostar.com/perl2exe.htm
   
   PERL ʹάӦóʽŷ
     * Mason [241]http://www.masonhq.com һǿ Perl Ϊ
       ҳʹ档ʹ Mason HTML Ƕ Perl 룬
       ԹõԪҳ
     * BingoX [242]http://opensource.cnation.com/projects/BingoX һ
       ԭʼ롢άӦüܹ mod_perl дԴٽ
       Ͷ̬ϿվӦóʽʱ䡣
       SmartWorkder  Perl ļϣάӦóʽΪӦ
       óʽ  HTML Ƕʽ롣 SmartWorker
       [243]http://www.smartworker.org
     * Apache-Perl ϼƻ mod_perl ʹȫ Perl д Apache ģп
       ܡңǶ뵽ŷĳ־ֱ (persistent interpreter) 
       ⲿֱ鷳 Perl ʱ䡣 
       [244]http://perl.apache.org 
       [245]http://modperl.sourcegarden.org  mod_perl_garden ƻ
     * Apache::ASP [246]http://www.apache-asp.org  Active Server Pages
       ֲ Apache άŷʹ Perl Ϊ
       Apache::ASP Աڹ (session management) 
       ܺǶ Perl Ķ̬Ӧóʽ⣬ кܶǿ칦
        XML tablibsXSLT  (XSLT rendering)вԭ ASP
       API ¼
     * WIRMWeb Interface Repository Managerһ Perl ΪӦ
       ʽŷṩһ߽׵ı̻ԿѶϵͳ (web
       information systems)WIRM һʽϿһӾ
       (visualizing)Ϻͷ (heterogeneous) ýϵ Perl 
       档WIRM ṩýϿеľ
       (context-sensitive views) ʹԱԿٿݺͱ﷽ʽ
       Ӧͬü̬ҳ  [247]http://www.wirm.org
     * EmbPerl [248]http://perl.apache.org/embperl  HTML ļǶ
        Perl ʽ롣ʹ Perl ʾʹһ־Ƶԣ WWW 
       ѹ㷺áҲ԰ټдõĵ Perl ģ DBIȡ
       ԽԽϿϵͳ
     * ePerl [249]http://www.engelschall.com/sw/eperl ֱһ Perl
       5 ʽ ASCII ֻ Perl 5 ʽᴿ ASCII ݡ
       òͬΪһ Unix  Perl 5 ģϵһ
       ĵΪһǿάŷԣ 
       ̬ HTML ҳ
     * XPP [250]http://opensource.cnation.com/projects/XPP XPP
       Parses PerlXPML Page ParserһټЧ HTML 
       ɷΪ XPML ҳĶ̬ HTML ҳǶ˵ perl HTML ıǩ
       
     * Gamlaһ Perl Ϊ RAD Ӧóʽŷgamla ƻĿ
       ǴһӦóʽٿRADߺһ Perl ΪάӦ
       óʽŷ Gamla ƻԭʽ붼ڹ (public
       domain) ͷš Gamla  [251]http://gamla.iglu.org.il
     * AxKit [252]http://www.axkit.org һ Apache mod_perl XML
       Ӧóʽŷܼʱ XML תΪκθʽ HTMLWAP 
       ֡ ת̿ʹ W3C ׼Ƶĳʽ롣AxKit Ҳʹ
       õ Perl ֱṩȤǿļ XML ת֮á AxKit ǿ
       ǰݺͱ﷽ֿAxKit Ĺ (pipelining) 
       ֲͬ׶תΪɱֵĸʽƽ̨Բͬʽݡ
       AxKit ҳԱоվƣݿߴΪݹ
       վԱҲǿܡ
       
   Perl ҵάŷ
     * Zelerate AllCommerce
       [253]http://www.zelerate.org/html/eng/home.shtml һҵݡ
       ͻ͹ϵϵͳ߱֡չĻӦóʽ Perl д
       һϿ⡣
     * VelociGen  XMLϿʱ͵Ķ̬ݣٶȺ;̬ HTML һ
       ﵽ CGI ʮ㲻޸ӦóʽVelociGen Ҳŷ
        XML ǩⱣ (crash protection) ͶಿԼ为ƽ⣬ʹ
       򵥡 VelociGen ؼ뵽κƽ̨ϵκάŷ
       ǿŷıֺͼӿԶ̬վķӦVelociGen ͬʱ
       Ҫ󣬱 Java Servlets ʮ Cold Fusion ı
       Velocigen [254]http://www.binevolve.com/velocigen
       
17.2 PHP άӦóʽŷ

   PHP άӦóʽŷ
     * Midgard PHP άӦóʽŷ PHP Ϊ PHP ִ
       мΪ١ Java 졣Midgrad վΪ
       [255]http://www.midgard-project.orgPHP  Zend Ż
       [256]http://www.zend.comPHP ִеúܿ죬ٶȱ Java ʮ
         [257]Midgard װ  PHP HOWTO
       [258]http://www.linuxdoc.org/HOWTO/PHP-HOWTO.html
     * Ariadne [259]http://www.muze.nl/software/ariadne һάӦϵ
       ͳ һļܹ PHP ɵؿ͹άӦóʽ
       ϵͳʹһģ黯ķʽн׶ʹóĽ档 Ϊ
       ϵͳ¹ܴɣҲ±д֡
       
17.3 Lutris Corp "Enhydra Enterprise" (Java)

   Enhydra ֧Ԯ PostgreSQL Ͽ⡣
   
   Enhydra һΪе Java/XML/J2EE άӦóʽŷ Lutris
   Corporation ȫõ Java/XML άӦóʽŷ֧Ԯ
   EJBServletsJSPJNDIJDBCJTACORBAXMLC/RocksDODS ͹ʻ
   Ϊܶŷ Fortune 500 ˾̽áFrench Telecom һ๫˾ֱ
    Enhydra԰ٷְٴ Java дɣ [260]http://www.enhydra.org
   ȡáEnhydra һԭʼר ҵʽ Lutris Corp 
   ֧Ԯ [261]http://www.lutris.com
   
    [262]PostgreSQL with Enhydra Ķ趨 PostgreSQL  Enhydra ָ
   Ҳ [263]Setup database with Enhydra ˽Ϊ Enhydra 趨
   Ͽ⡣
   
    Borland  JBuilder  Enhydra JBuilder 
   [264]http://www.inprise.com ҵ
   
   Ҳ
   [265]http://www.linuxdoc.org/HOWTO/Enterprise-Java-for-Linux-HOWTO.htm
   l  Enterprise Java HOWTO
   
17.4 ZopePython

   Python ΪеġԡZope һάӦ
   ʽŷṩ PostgreSQL 档Zope  [266]http://www.zope.org
   õ Python  [267]http://www.python.org ҵ
   
17.5 OpenACSTcl ԣ

   OpenACS (Open ArsDigita Community System) [268]http://openacs.org һ
   չȺ (community-oriented) ҳӦóʽȽ
   䡣 AOLserverһҳ / Ӧóʽŷ PostgreSQLһ
    ACID  RDBMSͿԭʼȨµѶʵĲƷ
   
   ACS  ArsDigita д [269]http://www.arsdigita.comǵ ACS
   (ArsDigita Community System) ԾϿ⣬Ȼԭ Oracle
   Ϊ Open ACS Ҫʱֲ
   
   Ҳ [270]http://www.appserver-zone.com
   
17.6 C++, CORBA άӦóʽŷ

     * PortalSphere άӦóʽŷ C++ дɣ Unix LinuxΪ
       ٶȺȶСPortalSphere ϸ CORBA ׼֧Ԯ
       ׼ HTTP ͨѶЭ IIOP ԵЭṩٵӡ 
       ϿֱӽϣЩɫʹ PortalSphere 磬 Ҷ
       ӵڻ֧Ԯʵʱ¼ PortalSphere ɱ HTTP/CGI һ
       ٱֱӵ󲿷Ͽ⣬չ֧Ԯһû
         [271]http://www.portalsphere.com/overview.html ˽
       PortalSphere
     * FlashPoint C++CPERL άӦóʽŷƻĿǰһ
       (multi-thread) Ļ֧ԮӦóʽ֧ԮĿԣ
        C  C++֧Ԯںִܶе̷ʽɺ
       Apache һ𹤼ӺҪȡ
       [272]http://www.bouldersoftware.com/products/flashpoint 
       [273]FlashPoint Redhat RPM ׼
     * "C Server Pages" [274]http://cserverpages.20m.com һЧʺͿ
       չӦóʽŷ C++дɣʹӵд C++ дɵŷҳ
       Ƕ˶̬Ԫصϲķʽֶá 
        C++ Լҵҳгκ ORB  CORBA 
       
       
17.7 άӦóʽŷĿ¼

    [275]άӦóʽŷ Ŀ¼һݡҳ
   
18. PostgreSQL Ӧóʽ͹

18.1 PostgreSQL  4GL άϿʽAppGEN ϵͳ

   AppGEN ڴ
     * [276]http://www.man.ac.uk/~whaley/ag/appgen.html
     * [277]ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN.
       
   AppGEN һָ߽׵ĴʽԺӦóʽ (application
   generator)ԲάΪĳʽЩʽһڻ˾
   ʹá AppGen ʽԺϺ Common Gateway Interface (CGI) ׼ C 
    (C scripts) дɣ󲿷ֻŷ֧Ԯ
   
   Ҫʹ AppGenҪ
   
   PostgreSQLʽϿϵͳ
   
   ֧Ԯ CGI Ļŷ NCSA  HTTPD
   
   һ ANSI C  GCC
   
   AppGEN  Unix Linux ִгʽ
   
     * defgen߼Ͻṹһʽ Щʽɼ
       ¡ɾѰϿеļ¼ֿԶֲο
       (referential integrity)
     * appgenAppGEN ıʽ AppGEN ԴʽΪ CGI
       ִе C ԭʼ뼰ɼʱʹ HTML ʽļ
     * dbf2sql dBase III ݵ .dbf תΪִе SQL Ĺ
       ʽʹô󲿷ִ DOS/ӴϿ׼Ͽֲһ SQL
       ŷ PostgreSQL
     * ⣬AppGEN ռһЩִڼʹõ HTML ļGIF  Java
       СʽȻкõ㣬ҲԴʽ롣
       
    Andrew Whaley ;Ӵ
     * [278]andrew@arthur.smuht.nwest.nhs.uk
       
18.2 PostgreSQL ĻDBENGINE

   dbengine  Ingo Ciechowski дһ弴õ PostgreSQL 
   
     * [279]http://www.cis-computer.com/software/dbengine/ 
       
   й DBENGINE dbengine ǻ Postgres95 ֮Ľ棬ֻ軨
    ɴȡκִϿ⡣
   
   PHP ļбд Perl ԣ PerlAppGEN 
   WDB-P95 ҪΪÿһϿ⽨趨 (configuration files)
    ƺҪѧһµļ (meta language) á
   
   ߲ͬ㲻Ҫѧκرĳʽʹ dbengineҲ
   ÿϿⶼ趨㲻ҪϰЩ½ṹ 
   õ dbengine ܣѧϰ Perl һ⡣
   
   ϵͳɼһӵϿ趨ã йϿ
   ȡϡָ (virtual fields)ʾөĻ
   ֮ǰʱ㡣
   
18.3 PostgreSQL  Apache ŷģNeoSoft NeoWebScript

   Apache һĻŷһ PostgreSQL  Apache Ľģλ
   춡
     * [280]http://www.neosoft.com/neowebscript/
       
   NeoWebScript һѲͬӳ̶ȵĳʽǶ뵽 HTML ʽԡ
   
   Ҫһ NeoWebScript  HTML ҳʱ֧ NeoWebScript 
   ִǶ˵ (script)һԶݵҳ
   
   NeoWebScript ֱҳ HTML дǿ ŷΪĻ
   ʽһ١ȫѧ NeoWebScriptʹ˵
    (counter)ʱ (email forms)ǽֽǩ (guest books)ÿ
   ¼ü򵥡뿴 NeoWebScript ԼPERL  JavaScript ı
   ϡ
   
   Ļŷװ NeoWebScript Աڿʼǰ
   Ķǵ Sysop FAQTheory of Operations NeoWebScript 
   Installation˵Management 趨ִŷ
   ˣTestȷ NeoWebScript Troubleshooting
   йء
   
   Լ ISPʹ NeoWebScript ȫ⣬ ڵǼ
   ʱõȫִա Ƕ뵽ԼĲƷҵŷ
    SSLʹãֵ 99 Ԫ
   
   NeoWebScript һҳǶ Tcl/Tk Ϊ幤ߵ
   Apache ģ顣 Karl LehenbauerNeoSoft  Chief Technical Officer
    Neosoft ĳʽʦͼ׫Աдļǿܡ
   
   Apache еĻŷվʮ˰ʹá
   
   Tcl/Tk  Dr. John Ousterhout һǿɡƽ̨
   ԡ ˵Tck/TkԱʹ C  C++ ΪĹ߿ʮ
   ɹ ҲһΰĽˮ (glue language)ʹִĳʽ
   ͬ ͼ񻯺Ϳ춻
   
   NeoSoft ˼ Chief Technical OfficerKarl Lehenbauer ڿʼʱ
    Tcl/Tk Ҳ Mark Diehkans һ Extended TclΪ
   TclX  NeoSoft TclԵĹܡܶ Tcl ĺָ
   Extended Tcl Dr. Ousterhout 뵽С
   
   NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA
   
18.4 HTML ŷ HEITML һ PostgreSQL  4GL 

   heitml һ postgres άĽ档֪飬Ӵ
   

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

     * Mr.Helmut Emmelmann ĵʵַ [281]emmel@h-e-i.de
     * Heitml ҳ [282]http://www.heitml.com
     * Heitml ҳ [283]http://www.h-e-i.deom
       
   Heitml ͬʱ HTML ŷһ 4GL ԡҳдԱ
   HTML ķ HTML ǩдʽ
   
   Heitml "Hi"-TML HTML 켰һȫĵĴԣ Ի
   Ϊĳʽֱ SQL Ͽеϣʹøӵ CGI 
   塣
   
   Heitml ŷ HTML̬ذѡ.heiתΪ HTML ʽ ʹ
   κݡϤõ HTML ﷨ ṩԤȿ
   ıǩͳʽӦ CGI еĹ XML 㣬heitml ʹ
   Զǩ heitmlʹԶıǩɷΪ HTML ͸
   
   Heitml ͬʱ HTML ߺרҵĳʽʦΪĿꡣHTML ʦʹ
   heitml ǩ̬ҳȡ SQL Ͽ⣬άӦó
   ʽ ǼϿ (registration databases)Ѱ񡢵ʱ
   ײʽѡ (hierachical menus) ɵؼڴԪʽ
   (Component Libraries) Ԥ HTML ıǩ
   
   Գʽʦ˵heitml  HTML ǶĵĴʽԣ
   

( <if>, <while>,  <let> ǩ)

   ͶԺʵִֵԪ (tuple) ıʽǿ Ԫ
   Ĳο﷨ (reference semantics) ԣڶѵ
   Heitml ڶѵеĸϽṹ Session Mode пڲ
   ͬҳά֡ ҲԶǩ򻷾ǩ (environment tags)
    HTML ǩ
   
   heitml ʹп
   
   Ծ߽ṹģ黯 (structured and modular) ʽҳά
   š
   
   ǻۼҳݿɶ̬Ӧ衣
   
   Ƴʽʾ SQL ϿݣֻҪʹԤ 
   dbaϵбǩ
   
   ʹ Session Variables ӵϿ⼰Ŀ¼ʽ
   
   Heitml ɾ CGI  Linux κλŷִУ Apache п
   ʹ apache API ʹִٶر죨 CGI ĹĿǰ֧Ԯ
   mSQLһ棩PostgreSQL棩mySQL the yard databases
   heitml  LinuxBSDiSolaris  SunOS ִУԼӴ NT 
   CGI  ISAPIODBCӴ 95 ʹá
   
   heitmlLinux 棩оҵԺ͸;ѵġҵվ踽
   Ȩѡ ޶ðءҪע⣬ÿ㿪
   ġ.hei ҳӡһѶϢָǷð汾Ǽ֮յһ
   룬 ʹɹصѶϢ°װ
   
   heitmlHi-TMLжıǩĳʽ
   ǿ HTML Ĺܡʹ̬ݺϿʽ HTML г֣
   Ҫ CGI ⲿָʽԡҲ˵һ HTML ߿ҳǶ
   Ӧóʽ ֻҪʹµıǩ CGI ʽơһ棬 
   ʹ߻ʽʦɴ켰ǿıǩ⡣ʹ heitml  HTML
   ֺרҵʽʦʱáheitml άŷִм̬ز
   HTML heitml ͻ׼ݣҲκݡ һΪ
   ṩϿȡܣһʹκβҪ CGI 
   heitml Ǹйرͽ (transaction) ϵͳоɹ
   ġ
   
   heitml ҳĿ̺ HTML ҳһʹֱ༭ HTML ༭Ҳ
   糣طάŷϡµҳɰ̬ heitml ǩʹ
   ǩ⡣ʹЩǩȡϿ⡢̬ݡĳʣ Կ
   ǿӦóʽǼϿ (registration database) ͹ϵͳ
   
   HTML ֺרҵʽʦһΪܹٶ׵ƾɵӦóʽ
   ǵĻǩʹøӶѧ CGI ȡ⹤ֻ
   ʹ dba ǩеĹ߱
   
   heitml ͬıǩ⣬ԲǩϿάʽ 
   ѯǿĵʱҳĽײʽѡ (hierarchic menu)Щ
   ѿʹãֻҳϼ϶Ӧıǩ
   
   Ϊһоĳʽʦȫʹ heitml ĳ־ö̬Ԫܹ
   (persistent dynamic tuple architecture)heitml ж̬̬
   (dynamic typing)ȫܵıʽ㡢ݻغͷḻĲɫ
   ԣ Ҳ̬ԪܹԶκδС session ϡ
   
18.5 PostgreSQL  America On-line AOL άŷ

   AOLserver 2.3 һѵҵάŷӵ PostgreSQL
   ֪飬뿴
     * AOL άŷҳ [284]http://www.aolserver.com
     * Philip Greenspun  AOLserver 
       [285]http://photo.net/wtr/aolserver/introduction-1.html
       
   AOLserver һ٣ȫ (multithreaded)֧Ԯ Tcl άŷ
   ֹ춴ˣһȫ֧ԮϿάƽ̨
   
   ʹ AOLserverй (pooled)  PostgreSQL RDBMSӣ
   ɲִͬ (threads) AOLserver  Tcl  C APIɿǿ
   Ķ̬ҳЩ 1995 꿪ʼ APL (AOLserver Public
   License)  GPL Ȩȫɵ
   
   ҳ˵Tcl API áAOLserver һǿ Tcl У
   ns_sendmailʣns_httpgetȡһ URL
   ns_schedule cron ĹܣŶʽضʱִУȵȡҲ
    Tcl API չ AOLserver Ĺܡÿһ AOLserver ŷ
   ӵ˽ҵ Tcl 塰ʽ⡱ AOLserver ͣø
   κҳʹõõ
   
   ַΪ AOLserver ҳ
     *  HMTL
     * .tcl ҳ ns_write  HTML  tcl ʽ
     * .adp ҳAOL Dynamic PagesԴ HTML ҳ <% %>
        <%= %> Ƕ Tcl 룬 PHP  ASP ơ
       
   Ȼ AOLserver һΰĵĻŷӵļܹ Ĺâ
   ϿAOLserver ӵԼϿ (abstraction
   layer)ȫ޸ĳʽӵͬ RDBMSЩ RDBMS ǹ
   (pooled) (persistent) ģɲõִ ܿ
   ЧԴ
   
   AOLserver ӵҪ RDBMS ʽPostgreSQLOracleSybase
   InformixIllustraSolidInterbase  MySQL
   
18.6 PostgreSQL  / ƻ׷ϵͳʽ

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

   dbf2msql ʽ mSQL  PostgreSQL 졣·ҵ
     * [287]ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/
     * [288]ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz
       
   ʽ Faculty of Electrical Engineering TU Delft, NL Computer
   Architecture and Digital Technique section  Maarten Boekhold дɡ
     * [289]M.Boekhold@et.tudelft.nl
       
   Ҳʹ python ķ (method) ڶ dbf 뵽 postgres Ͽ
   
     * See [290]http://www.python.org
       
18.8 ΢ MDB Ͽת PostgreSQL

   ƻе MDB Tools һ麯ʽ͹߳ʽ춰΢ Access Ͽ
   mdb ûϿ⣬ OracleSybaseDB2Informix
   MySQLPostgreSQL ֮ࡣ
     *  [291]http://mdbtools.sourceforge.net ȡ MDB Tools
     * ̳ͨ
       [292]http://lists.sourceforge.net/mailman/listinfo/mdbtools-dev
       
18.9 Zeos ͻ

   Zeosһ͹ϿӦóʽƷ춿ԭʼ
   SQL ŷMySQLPostgreSQL  InterBase
   [293]http://www.zeos.dn.ua/eng/index.html
   
18.10 Java  Report Writer

   Generic Report Writer һĿ¼ıдϡ
   (drag-and-drop) 档 PostgreSQLMySQL  AccessҲܿܿ
    Type 4 JDBC version 1 ʽϿ⡣
   [294]http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWr
   iter/grwhome.html
   
19. Ͽƹߡʵϵͼ (Entity Relation Tool) 

   "DeZign for databases" (
   [295]http://www.heraut.demon.nl/dezign/index.html) һʹʵϵͼ
   ĵϿ⿪ߡʽ֧Ԯʵ͹ϵУ ԶΪ󲿷
   вϿⷽ (schema)
   
   DeZign for databasesʱʹԶת (automatic foregin
   key migration ?)ɹӵһĹ֧Ԯ߼ʵݵȼ (data level)
   ʾ趨ʵ///ԡDeZign for
   databases Ҳ֧Ԯ (domain)ûԶ̬
   
   DeZign ıɽӵԼ˵ʽύ費ͬȼĹ㡣
   ֻ谴һ»ɲ桢ֵ (datadictionaries) Ͽ⡣ 
   ֧ԮϿOracleInterbaseIBM DB2Sybase΢ Access
   (95/97/2000)΢ SQL ServerParadoxdBaseInformixSQL-Anywhere
   MySQL  PostgreSQL
   
   HerautDeZign for databasesڣ [296]http://www.heraut.demon.nl
   
20. PostgreSQL ĻϿ/ɹߡEARP

     * [297]http://www.oswego.edu/Earp
     * [298]ftp://ftp.oswego.edu ġpub/unix/earpĿ¼
       
20.1 EARP ʲ᣿

    David Dougherty ġEasily Adjustable Response ProgramEARP һ
    PostgreSQL ϿϵϵϿ/ʵʩߡܰ
   
     * һӾϵͳ
     * һ sendmail 档շʣ
     * һǿ˵ıơ
     * һ cgi ʽ
       
20.2 ʩ

   EARP Ҫʩһ http سʽ (daemon) ִе CGI Ԫȡ
   Ͽŷƹ߶ʽУϣ ûеطҪ
   ơЩ߱Ҫһ֧Ԯͼ Ƴ춱
   дǸݸ˺ö
   
20.3 ι

   EARP һҪɫʹķϿ
   html ҳ󲿷ҳ涼ÿĳЩ߲ȡһ
   ֣ Щᱻҳ湤 (page tool) һɺе˳ (callable
   sequence) һҳáй HTMLѯȡʹ
   롢 Ĳѯʽ (Extendable Formatting of Query
   and Input objects)Ļ߽ṩ Ƚ
   ߰ʹߺͶѯߡ
   
   EARP һɫȽıжַƴȡ EARP ϵͳĲͬ֡
   ΪﵽȽıEARP ÿһӣ ȷÿԱ (ids)
   Ⱥ (groups)ֵͬĴȡ壬 յϾܷȡ
   EARP һض֡⣬ ʵʩЩɫֻһ֧Ԯѣ
   ʹ֤ (user authentication)  http ŷ
   
20.4 δȡ EARP

   EARP ɼ (anonymous) ftp ȡá
     * [299]ftp://ftp.oswego.edu  'pub/unix/earp' Ŀ¼
       
21. PHP Hypertext PreProcessorPostgreSQL ŷ html Ƕ

   ά湤λ춡
     * [300]http://www.php.net
     * [301]http://www.vex.net/php
       
   PHP ҲһΪ Zend ıɴƱ֡ڿԺͳ
   ʱʹ PHP ԡ׼ʽʹʱʹ Zend Ѹִ
   еִе
   
   ǰΪ Professional Home PagesPHPڳΪ PHP Hypertext
   Pre-Processor
     * ܶӳվ̨Ϊ www.COUNTRYCODE.php.net
     * [302]http://www.fe.de.php.net
     * [303]http://www.sk.php.net
     * [304]http://php.iquest.net/
     * ɵʵ [305]rasmus@lerdorf.on.ca
       
   PHP һŷ html Ƕԡ .HTML м
   壬 JavaScript 㡣 JavaScript ͬPHP 
   JavaScript һֿͻ˵ html Ƕԣ PHP ŷ
   PHP ĸ Netscape  LiveWire Pro Ʒơϲٸ
   ԴʽŻϲ PHP 3
   
     * ֧Ԯ PostgreSQL ĳʽ Adam Sussman д
       [306]asussman@vidya.com
       
21.1 Ҫɫ

     * ׼ CGIFastCGI  Apache ģ֧Ԯ Ϊһ׼ CGI ʽ
       PHP ִκ Unix ŷκ Unix ϰװ϶
        FastCGI ׼֧ԮPHP ɴеõٶϵĸơΪһ Apache
       ģ飬 PHP  CGI ʽһǿѡ
     * ȡ¼ (Access Logging)  PHP Ĵȡ¼ܣ߿ά
        (hit counting) ¼ȫϵͳļ¼
       Ҽʱȡ̡Log Viewer Script ṩ˸ӵеҳ
       ȡժҪ⣬ ׼ɱ趨Ϊÿҳһʾȡϵעš
       ҳĽβһӡ
     * ȡ (Access Control) һάΪڽ趨洦ȡ
       趨 ߿Ϊĳӵелҳ˭ܼ
       Ķйҳ ߵʵַԴļ
       (referring document)ҳ뱣ȫֹ¼
       (logging disabled) ¡
     * PostgreSQL ֧Ԯ Postgres һȽ RDBMS PHP߿
       ֱ .HTML Ƕ PostgreSQL ġSQL ѯ
     * RFC-1867 ϴ֧Ԯ ϴ Netscape 2.0 ¹ܡ
       ѵϴάŷ ʹпɵԭʵʵ Mime 
       PHP ṩṩĿܣ յϴĵЩõ¡
     * HTTP Ϊ֤ơ PHP  Apache άŷнԶ
        HTTP Ϊ֤ơ
     *  (Associative Arrays) PHP ֧Ԯ̬
        Perl ǿɼ GET  POST ҳ䴫ݡ
     * ʽWhile Ȧ PHP ֧Ԯһ C ȫԡʹ
        if/then/elseif/else/endif ʽwhile Ȧ switch/case 
       ָ html ҳʾ߼
     * ʽ ʽʽƥ䡢ʽ滻 (pattern
       substitutions) һִPHP ֧Ԯгõʽ
     * ԭʼ HTTP ͷơ Ҫи߽վƣʹҳδԶ HTTP
       ͷǱġ һ߳÷Ǵһ Location: URL ͷ
       ͻ˴͵ URLҲ춹صȡҳҳϵġlast
       updateͷ
     * ʱ GIF ͼ PHP ֧Ԯ Thomas Boutell  GD ͼʽ⣬ʹ
       ɼʱ GIF ͼ
     * ISPȫģʽ֧Ԯ PHP ֧Ԯһеġȫģʽ(Safe Mode)ʹ
       ͬһŷжûʹ PHP Ҳûȫ⡣
     * °汾 PHP ˺ܶ¹ܣҳ
       [307]http://www.php.net
     * ɵģ һҪԡ׼ȫɵġ GNU/GPL
       ȨΪκĿʹҵ;֪飬ο
       GNU General Public License ļ
       
21.2 PHPʷ

   ʱPHP һ Perl дСɼ򵥵 cgi װ (wrapper)׼
   Ϊ Personal Home Page ToolsΪ Personal Home Page
   Construction Kit
   
   һдҳǶ SQL ѯĹһ CGI
   װܷ (parsed) SQL ѯ򻯽ЩѯıбĹ
    ⹤Ϊ FI (Form Interpreter)
   
   PHP/FI 2.0 ȫд׼֮϶ΪһɰѼ򵥵Ƕ
    HTML С򵥵ֱǶ HTML УС
   Perl cgi ʽҪӿҳΪ fork  Perl Ѿ
    Ҳ˹վĹΪɰҳвַһ
   html С϶Ͽ֧ԮʹϿҳĿü򵥡 
   ˾Ƕѯȷֱ HTML  CGI 򵥵öࡣ
   
   PHP/FI ѸΪ PHP
   
21.3 ᣬ PHP ʲ᣿

   ʹ PHPȻע⵽ҳβҳٴε
   ڱʱѡȡ access loggingֻ PHP һС֡
   һҪɫΪһֱ cgi ʽ (form interpreter cgi)
   Ҳ FI ˼磬һҳнһ 
   Ҫһʽϵϡʹֻϴ͵һҳҲҪ
   cgi ʽİPHP ʹȡúʹϼΪס
   
21.4 һ򵥵

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

    display.html ɰƵĶ
   
< ?echo "Hi $ name, you are $ age years old!<p>" >

   򵥣PHP ԶΪÿλһ֮
   ACTION URL ʹЩ
   
   ҳʹñ֮ĲҳһЩ߼̱ǩ磬
   ʾͬѶϢʹ if/else ߼ӣ
   ǿɸı display.htmlʹòͬûʾ
   
<?
    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 ṩһַǳǿԣ±ϼ򵥵Ӷܶࡣ
   ֪飬 й PHP Script Language ½ڡ
   
   Ҳʹ PHP 趨ʲܿҳʹһڽ趨
    磬ָֻĳЩ˿ɿҳ һЩ
   뱣ĳЩҳ֪飬й Access Control ½ڡ
   
   PHP Ҳκ RFC-1867 涨ϴĵ ɫʹ
   ϴֻԪ PHP Ĵȡƺ߼ܣ ȫƻ˭
   ϴϴʲᡣ֪飬й File Upload ½ڡ
   
   PHP ֧Ԯ PostgreSQL Ͽ׼֧Ԯ .HTML Ƕ SQL ѯ
   
   PHP Ҳ֧Ԯ mysql Ͽ׼֧Ԯ .HTML Ƕ SQL ѯ
   
21.5 CGI  (Redirection)

  Apache 1.0.x ժҪ
  
   ʹ Apache ŷ cgi ģִ PHP һ÷ ע
   ĸģ飬ʹ PHP  Apache ģ汾 (Apache module
   version)ģ顣һ Dave Andersen ġ
     * [308]angio@aros.net
       
   µطҵ
     * [309]ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c
       
   һѰ Apache УΪ mod_actions.cЩģ鼫Ϊƣ ֻ
   ÷Թܺ PHP ˳
   
   鿴 Apache ļμһģ顣һ˵ģƼӵһ
   Ϊ Configuration ĵСʹ mod_actions ģ飬Ҫӵһ
   ǡ
   
   Module action_module mod_actions.o
   
   ʹ mod_cgi_redirect ģ飬һ
   
   Module cgi_redirect_module mod_cgi_redirect.o
   
   ± httpd װҪ趨 cgi Ҫ mime.types 
   нµ mime ͣ srm.conf ʹ AddType ָ
   mime ͡ϵ mime Ӧơ
   
     application/x-httpd-php phtml

   ʹ mod_actions.c ģ飬 srm.conf мһС
   
     Action application/x-httpd-php /cgi-bin/php.cgi

   ʹ mod_cgi_redirect.c ģ飬 srm.conf мһС
   
     CgiRedirect application/x-httpd-php /cgi-bin/php.cgi

   Ҫͬʱʹ mod_actions.c  mod_cgi_redirect.c
   
   װȷ趨Щ cgi ģᣬֻ쵵Ϊ .phtml 
   ָ⵵ PHP ⣬ srm.conf  DirectoryIndex 
   м index.phtmlϲҳԶ php  index
   Ϊ index.phtml
   
  Netscape HTTPD
  
   ɼ Netscape Server CGI Redirection ģָԶѶĳЩ쵵
   Ҫ PHPģ PHP ҳ File Archieves ҵ׼
   е README ȷؽ趨 PHP
   
  NCSA HTTPD
  
   ĿǰNCSA ֧Ԯģ飬ԣҪʹ cgi ĻҪ޸ŷԭ
   ʼ롣 һ NCSA 1.5 ⹤Ƕ PHP ҵ
   
21.6 ִָ PHP

   㽨 CGI 汾 PHPָֻ php.cgi filename
   filename ĵɽ PHP 壬ֻ
   (script) ĵһдΪơ
   
    #!/usr/local/bin/php.cgi -q

   -qֹӡ HTTP ͷϲĻɲѡ
   
21.7 PHPGem ׼

   PHPGem һ PHP 壬Լٱдʹñ PHP 塣춲
   ͬ SQL ŷ PostgreSQLMySQLmSQLODBC  Adabas 
   λͲλơλ on/off searching (?) ȵȣ
   PHPGem һʹЩ PHP 壨//޸/ɾ/ظ
    PHPGem ʹö㳲״ (multi-level nested tables, ??)
   PHPGem ָÿÿλÿˡȡơPHPGem Ҳ֧ԮӰ
   
   PHPGem  [310]http://sptl.org/phpgem ҵ
   
22. PostgreSQL  Python 

   Python һֱԡʹüףɵ﷨ ֱ
   ӵľӣкܶ춽 GUI 졢άȵȡ һǻ۵
    HotJavaڿУһžʮһ£ ʽԱ
   ܶᡣPython İȨΪķ˹ص Stichting S
   Mathematisch Centrumɢ (classes)ģ顢
    (exceptions) Ķ̬롣ʹ C ϵͳʽֱ
   ӵĹʹ Python 趨ʱʹáPython һӵ X ĸ
   ԡ Linux е Python ׼󲿷ֱ׼ Python ģ飬
   Լ Tk  Tix widget ģ顣
   
   PyGreSQL һ PostgreSQL ϿĽ档Ƕ PostgreSQL ѯ
   ʽ⣬ʹ Python ָʹǿ PostgreSQL ʮּ򵥡PyGreSQL
    D'Arcy J.M. Cain  Pascal Andre дɡ
     * PyGreSQL վ [311]http://www.druid.net/pygresql/
     * D'Arcy ά [312]http://www.druid.net/~darcy/
     * վ
       [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 ȡ PyGres

   ͬ׼վڡ
     * 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 
       
   ΣӦѰӽӳվ̨ԴЩվ̨
   PygreSQL Ҳ Python  PostgreSQL վ̨ contrib Ŀ¼ҵ
   
22.2 Ϻ֧Ԯ

   ҪЩ׼ϣ鿴ҳ
     * Python [320]http://www.python.org/
     * PostgreSQL
       [321]http://epoch.cs.berkeley.edu:8000/postgres95/index.html
     * PyGreSQL [322]ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz
     * PyGreSQL վ
       [323]http://www.via.ecp.fr/via/products/pygres.html
       
   ֧Ԯ
     * PyGreSQL ̳ͨҪμӵĻɵ
       [324]majordomo@vex.net дsubscribe pygresql name@domain
       ѡname@domain ΪԼĵʵַ
     * Python  newsgroup comp.lang.python
     * PyGreSQL : г桢עͣ Andre
       [325]andre@via.ecp.fr
       
22.3  Python 

   ο [326] PythonPostgreSQL  һڡ
   
23. PostgreSQL άբ· (gateway)  WDB-P95

23.1 й wdb-p95

   WDB-P95 - һ J. Douglas Dunlop  PostgreSQL Ͽά
   ڡ
     * J Rowe  WDB 
       [327]http://www.lava.net/beowulf/programming/wdb
     * °汾 WWW-WDB  [328]http://www.eol.ists.ca/~dunlop/wdb-p95/
     * ̳ͨ [329]dunlop@eol.ists.ca
       
   һ޸˵ wdb-1.3a2ṩһ PostgreSQL άբ· 汾
   ҲҪܴ HTML ԭ wdb ޴Ҫ󣬵ҪԭҲѡ
   
   ɳ CASI Tape  Image Queryɿ Form Definition File
   (FDF)Ҳ춲 CASI Tape  Image Queryб
   (join)
   
   汾Ҫ춰װִ WDB-P95 Ϊ PostgreSQL ĵҪ
   ϵͳֲϿӦΪ򵥡֧Ԯ׼ SQL ӵ Perl 
   档
   
23.2 PostgreSQL ŷpgperl  httpd Ƿͬһԣ

   PostgreSQL ͬһԡ WDB-P95  httpd سʽ (daemon) 
   УҪͬһԡΪ WDB-P95 ʹ Pg.pmpgperl ҲҪͬһ
   ԡ Pgperl  libpq ʽдɣɴȡκ PostgreSQL 
    PostgreSQL ͻ
   
   (άͻ (Netscape)) => (HTTP ŷ (NCSA's http) + WDB-P95 +
   pgperl + libpq)=> (PostgreSQL ŷ)
   
    () ԡ
   
   ÿԿǲͬ͡NTSUNHPҪִ WDB-P95 ĵ
   Ե libpq 溯ʽ⣬ΪҪ pgperlϵͳƳɻʹ
   HTML һ½άͻˡ
   
24. "C", "C++", ESQL/C Խ PostgreSQL λԪ (Bitwise Operators)

24.1 "C" 

   Ѱڷа汾УΪlibpq Oracle OCISybase DB-lib
   Informix CLI ʽơ
   
24.2 "C++" 

   Ѱڷа汾УΪlibpq++ ο [330] libpq,
   libpq++  һڡ
   
24.3 ESQL/C

   PostgreSQL ESQL/C 'Embedded C Pre-compiler'  Oracle Pro*C
   Informix ESQL/CPostgreSQL ESQL/C һ SQL Ӧóʽ (API)ʹ
   C ʽʦƿӵйϿӦóʽPostgreSQL
   ESQL/C ʹϤĵԶõṹѯ
   (SQL) ŵ㡣
   
   ESQL/C 
     * ESQL/C ʽṩϿŷȡ C ʽ
     * ESQL/C ͷṩ ESQL/C ʽõϽṹ;޼Ķ塣
     * ESQL/C ԤһѰ SQL ӵ C תΪִеԴʽԤ
        밴ӦΪѺǶʽ SQL  C תΪ׼ C 
        gcc Ϊִе⣬PostgreSQL  SQL Ƕʽ SQL Ԥ
       ӦΪ ecpg
       
   
     * PostgreSQL  ESQL/C Ѱڷа汾С
     * վ [331]ftp://ftp.lysator.liu.se/pub/linus
     * ʡ [332]linus@epact.se
       
   ο [333] ecpg  һڡ
   
   Ҫʹ Vim ɫ༭дecpg*.pgcҪ
     _________________________________________________________________
   
bash$ su - postgres
bash$ mkdir $HOME/vim
һΪ$HOME/vim/myfilestypes.vimĵ

    " myfiletypefile
        au! BufRead,BufNewFile *.pgc    set filetype=esqlc
     _________________________________________________________________
   
   Ӧһ $HOME/.gvimrc Լһο
   [334]http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html  Vim HOWTO ļ
   
   
    $HOME/.gvimrc һ
     _________________________________________________________________
   
let myfiletypefile = "~/vim/myfiletypes.vim"
     _________________________________________________________________
   
   
     _________________________________________________________________
   
bash$ gvim sample.pgc
     _________________________________________________________________
   
   ༭ɵõ﷨ͻ (syntax highlight) ɫ
   
24.4 PostgreSQL λԪԪ

   λԪԪ Nicolas Moldavsky д
     * [335]nico@overnet.com.ar
       
   ʵλԪ㣨ANDORXORλԪ (bitwise complement) pgsql
   Cʽɾ FTP õ
     * [336]ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz
       
    Linux  Makefile
   
25. PostgreSQL ļ (Kanji Code)

   ַ
     * [337]ftp://ftp.sra.co.jp/pub/cmd/postgres/
       
26. ֲ PostgreSQL Ӵ 95 / Ӵ NT

   Ӵ NT  PostgreSQL Ԫµطҵ
     * Ӵ NT PostgreSQL Ԫ [338]http://www.askesis.nl
     * [339]http://www.postgresql.org
       
   ؿִеѹӵʮʼ [340]װ PostgreSQL
   
   ±ԭʽ룬ָʾֲӴ NT Ҫʹ Cygnus
   cygwin32 ׼Ӵ NT/95  gccgmake
     * Cygwin 32 ׼ [341]http://www.cygnus.com/misc/gnu-win32 ҵ
       
   ҳȡ cdk.exe gnu-win32 ҽѹ 밴ô˹Ѹ
   Ϊ cygwinַΪ [342]http://sourceware.cygnus.com
   
26.1 NT 

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

    1. 
       [347]ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/f
       ull.exe
    2. ִ full.exeװ c:\Unix\Root Ŀ¼
    3. ִ Cygwin롮mount --helpĶļ -f ѡǿƹ
       ִ֮Сumount / " ͡mount c:\Unix\Root /
       
26.3 趨 Bash Ӵ

   װ Cygwin ׼ᣬ¹趨
   
   1. װ Vi ༭Vim
   [348]http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
   
   2. cygwin bash ԤӴһإУɫΪɫӴҪ趨 bash 
   ĵɫʹСʼ->̨->MS DOS ̨ѵɫ趨Ϊɫ С
   ΪʮС
   
   һӴУıݡ
   
   3. ༭ c:\cygnus\cywinb20 е cygnus.bat 趨
     _________________________________________________________________
   
set HOME=c:\cygnus\cygwinb20
bash --login
     _________________________________________________________________
   
   ༭  /.bash_profile ⼸
     _________________________________________________________________
   
set -o vi
PATH=$PATH:/usr/local/bin:/usr/bin
export PATH
     _________________________________________________________________
   
   4. Ҫָʷ༭
   
   bash$ set -o vi
   
   ʹ lkjh vi ָ༭ָʷظ޸֮ǰָ
   Խʡʱ䡣
   
   5. ָϴŵ / Ŀ¼
     _________________________________________________________________
   
bash$ umount /
bash$ mount "c:\cygnus"  /
bash$ mount "c:\cygnus\cygwin-b20\postgres" /usr/local/pgsql
     _________________________________________________________________
   
   6. ָĶѶϢ
     _________________________________________________________________
   
bash$ mount --help
bash$ ls --help
     _________________________________________________________________
   
26.4 װ Andy Piper 

    1.  [349]ftp://ftp.xemacs.org/pub/xemacs/aux/ 
       cygwin-b20-local.tar.bz2  c:/Unix/Root Ŀ¼
    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. ɵĲᣬῴѶϢ
         _____________________________________________________________
       
You don't have /bin would you like to mount cygwin as /bin?"
[ y/n ]
ѡnѡy
         _____________________________________________________________
       
    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 װ Ludovic Lange  Cygwin32 IPC ׼

    1.  [350]http://www.multione.capgemini.fr/tools/pack_ipc 
       cygwin32_ipc-1.03.tgz  c:/Unix/Root Ŀ¼
    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 װ PostgreSQL

    1. µ PostgreSQL Դʽ
    2. Postgres еԪԻ lf/cf ⣬Ҫڶ
       岽
         _____________________________________________________________
       
mkdir -p c:/Postgres/{Source,Binary}
mkdir c:/Postgres/Binary/pgsql
mkdir -p /usr/src/pgsql
mkdir -p /usr/local/pgsql
         _____________________________________________________________
       
    3.  Postgres Դʽ뿽 c:/Postgres/Source Ŀ¼֮ tar -zxvf
       postgresql-6.5.3.tar.gz
    4. mv postgresql-6.5.3 pgsql
    5. ڹϸĿ¼
         _____________________________________________________________
       
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. ͷ
         _____________________________________________________________
       
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.  make install ֮Ҫ bin  lib Ŀ¼еֵת
       cr/lf  eof ֮ණ
   15.  / Ŀ¼ʹκα༭ .bashrc ¡
         _____________________________________________________________
       
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' ҪעϿϵͳ
       ӵ˲ root/administrator
   17. ༭ /usr/local/pgsql/data/pg_hba.conf 
         _____________________________________________________________
       
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. ̳ͨ

27.1 PostgreSQL ĵʻ

   µطȡѵ
     *  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
       
    PostgreSQL ̳ͨ Yahoo һɫΪ PostgreSQL 
   Ŀ¼ĵʡѡĿ¼ Email- > Options- >
   Filters ѡ seperate folder for email ʻκ
   طշʣֻҪ
   
   ʣáMail FiltersԶ PostgreSQL ʼŵ
   Ŀ¼ҡ
   
27.2 Ӣ̳ͨ

   ҳ Mailing Lists Ŀ
     * [354]http://www.postgresql.org/
     *  [355]pgsql-questions@postgresql.org
     * Ա [356]pgsql-hackers@postgresql.org
     * йֲ [357]pgsql-ports@postgresql.org
     * ļ [358]pgsql-docs@postgresql.org
       
   һ֮ڴӵյ𰸻ظ
   
   ҲɶͨѶ̳ҪĻֹͣģ
     * [359]pgsql-questions-request@postgresql.org
     * [360]pgsql-hackers-request@postgresql.org
     * [361]pgsql-ports-request@postgresql.org
     * [362]pgsql-docs-request@postgresql.org
       
   ѶϢֻһ
   
   subscribe
   
   
   
   unsubscribe
   
27.3 ̳ͨ

   ̳ͨҲ html ʽµط
     *  MHonarc پ WWW ÿĿ¼
       [363]http://www.postgresql.org/mhonarc/pgsql-questions
     * [364]ftp://ftp.postgresql.org Ŀ¼ /pub/majordomo
       
   PostgreSQL ҳҲһרΪ pgsql Ѱ档
   
27.4 ̳ͨ

   Ŀǰһǹٷ PostgreSQL ̳ͨҪĵĻ
   
     * [365]majordomo@tlali.iztacala.unam.mx
       
   ѶϢֻһ
   
   inscripcion pgsql-ayuda
   
28. ļͲο

28.1 ûָ˵

   PostgreSQL а汾Ѱ¸ postscriptHTML ʽ  unix
   man-pages /usr/doc/postgresql* Ŀ¼С 
   µطҵļ [366]http://www.postgresql.org/docs
   
     * "Installation Guide"
     * "User Guide" for PostgreSQL
     * "Implementation Guide" ϸ˵ PostgreSQL Ͽڲ
     * ˵
     * HTML ʽ˵
     * Postscript ʽ˵飬ӡ
       
28.2 ļ

     * ڽ̬Ԫͽ˵
       
A Ƿ PSQL ָһ

     * ֧Ԯ SQL ؼ
       
Դʽ /tools Ŀ¼һ (script)

     * ֧Ԯľ
       
ʹ psql \h ָ

     * PostgreSQL ĻĹʽϿʵʩӣѯ
       
       
 src/test е regression ԣ <ref name=" RPM"
id="Examples RPM">ҵ regress/sql  suite/*.sql Ŀ¼

     * PostgreSQL ָ
       
SQL ָ src/tutorial Ŀ¼

       Ҳıļ¼ [367]¼ ġѧ SQL ָ
       
28.3 õĲο

     * "Understanding the New SQL: A Complete Guide" - Jim Melton  Alan
       R.Simon 
       
Morgan Kaufman Publisher һõ SQL 顣Ȿ SQL92 Ϊ׼

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

Addison-Wesley Publishing company Ҳһ顣й SQL 

     * SQL - The Standard Handbook, һžŶʮһ
       
Stephen Cannan  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
       
ⱾϿϵͳʥⱾϸ˵滯 (normalization)SQLָ
(recovery) (concurrency) (integrity)
ԭĹģʽ졢ֽĻϵͳģʽ
ҲοԹо󲿷ûƼ

     * Stefan Stanczyk, "Theory and Practice of Relational Databases",
       UCL Press Ltd, 1990, ISBN 1-857-28232-9
       
Ȿϸ˵ʽϿ⡢ϵ (relational algebra)ϵ (calculus)
滯ۡʵͽϸӵӡ󲿷ûƼ

     * "The Practical SQL Handbook" 棬 Addison Wesley Developers
       Press ISBN 0-201-44787-8
       
󲿷ûƼ

     * Michael Stonebraker, "Readings in Database Systems", Morgan
       Kaufmann, 1988, ISBN 0-934613-65-6
       
ǹȥйϿļǸһ߿ǽ׵ѧо
Ͽ⿪Ա

     * C.J.Date, "Relational Database - Selected Readings",
       Addison-Wesley, 1986, ISBN 0-201-14196-5
       
ǹȥйϿļǸһ߿ǽ׵ѧо
Ͽ⿪Ա

     * Nick Ryan  Dan Smith, "Database Systems Engineering",
       International Thomson Computer Press, 1995, ISBN 1-85032-115-9
       
Ȿ˵ȡʹ漼

     * Bipin C. Desai, "An introduction to Database Systems", West
       Publishing Co., 1990, ISBN 0-314-66771-7
       
Ǹһ߿ǽ׵ѧоϿ⿪Ա

     * 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
       
˵ repository metamodels ϿӦóʽҪ ANSI
׼ SQL 1993 Ӧá

   ԰ټй SQL 飡꿴ɡ
   
28.4 ANSI/ISO SQL ļSQL 1992, SQL 1998

   ANSI/ISO SQL ļվҵ
     * [368]http://www.naiua.org/std-orgs.html
     * [369]http://www.ansi.org/docs  cat_c.html ѰҡDatabase
       SQL
     * SQL92 ׼ [370]http://www.jcc.com  sql_stnd.html
     * ANSI/ISO SQL 
       [371]http://www.contrib.andrew.cmu.edu/~shadow/sql.html ڴ
        SQL Ĳοϡ
       
28.5 ANSI/ISO SQL 1992 ﷨

   ıļĸ¼ [372]¼
   
28.6 ANSI/ISO SQL 1998 ﷨

   SQL 1998 (SQL 3) ڿСοļġ;ȡ SQL3 ݰ
   [373]SQL 1998
   
28.7 ѧ SQL 

   οĸ¼ [374]Appendix B
   
28.8 SQL92 ʱ̬ (Temporal Extension)

     * SQL92 ʱ̬ļ [375]ftp://FTP.cs.arizona.edu/tsql/tsql2/
     * Temporal SQL-3  [376]ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/
       
   Ŀ¼аһ SQL-92 Թʱ̬졣ԱΪ TSQL2
   
   ԹԵհ汾
   
   ֱ TSQL2 ίԱϯRichard T.Snodgrass, Department of
   Computer Science, University of Arizona, Tucson, AZ 85721,
     * [377]rts@cs.arizona.edu
       
   TSQL2 Language Design Committee ĵʵַԹ
   һҵ
   
   Ŀ¼е¡
   
   spec.dvi,.ps TSQL2 Թһž³
   
   bookspec.ps TSQL2 Թ TSQL2 㣬һžʮ 
   ģ
   
   sql3 ύ ANSI  ISO SQL3 ί޶
   
   ԹһﻹռһЩйϵľۡṩӡ 
   ʵԡЩԭǸ TSQL2 Language Design Committee Ľ
   顣һôṩй TSQL2 ӡ ƶʱ
   Ƚ TSQL2 ͹ȥʮĴԡ ǿЩ
   Ŀǰ TSQL2 Թһ֣ǶĲͷչ Թ
    TSQL2 վ
   
   ЩۣԹ֧ԮϣѾ
   
   Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer
   Academic Publishers, 1995, 674+xxiv ҳ
   
   һ¼˵ۣڴĿ¼е eval.ps ṩ
   
   tl2tsql2.pl һѻܵʱ̬߼ (temporal logic) Ϊ TSQL2 
   prolog ʽʽ Michael Boehlen дɡ
     * [378]boehlen@iesd.auc.dk
       
   λɽӴȡһݽ̵ⷭġʽľɰ汾°汾
   
     * [379]http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software
       
   (the TimeDB and Tiger systems).
   
28.9 㲿֡ȡ ISO/ANSI SQL ļ

   ˵ΣϷأȡһ SQL-92 ׼ȡһݡʱ
   SQL3 ݰ
   
   ׼ȨУ ANSI ׼ĳΪ ANSIISO ׼ĳΪ ISO
   
   ʱ2 SQL ׼ֱ ANSI  ISO 档ݱ׼ÿֶһ
   ģһ һЩСڣļ⡢ҳס̾䡰International Standard
   ͡American Standard֮ࡣ
   
    SQL-92 ׼
   
   The ISO standard, ISO/IEC 9075:1992, Information Technology - Database
   Languages - SQLĿǰһž£ ANSI дɵõ
   
     American National Standards Institute
     1430 Broadway
     New York, NY 10018 (USA)
     Phone (sales): +1.212.642.4900

   Ǯ US$230.00ANSI 棬ANSI X3.135-1992, American National Standard
   for Information Systems - Database Language SQLĿǰ޴ Ӧ
   һžѮѮõļǮ US$225.00
   
    ANSI κһļҪ 7% ѣԼ US$9.10
   ʼĿ϶ANSI Ҫеݶһݹ˾ĸӡ 
   Ԫһе֧Ʊǻڽĸ㡣 
   ֯ ANSI Ĺ˾Ա (corporate member)ANSI ļĸ
   ˾Ǯ
   
   ⣬ISO ׼ҲɴΪ ISO (International Organization for
   Standardization)  IEC (International Electrotechnical Commission) 
   ԱıӪҵı׼֯򡣹Ӫַɴ
   ANSI ӪȡáҲɴ ISO õ
   
     International Organization for Standardization
     Central Secretariat
     1, rue de Varembi
     CH-1211 Genhve 20
     Switzerland

   Ըݵķ׼Ҫۡɴ֯
   US$308.00  ISO/IEC 9075:1992, Information Technology - Database
   Languages - SQL
   
     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

   Ҳ֪Ƿ˷ѣҹƣ룩ʻ˻շѡ ǻ
   Ϊݵذļĸ㣬ܡҪÿGlobal û ANSI 
   ûмǮʱ䣨Ԥ ANSI ֮ڳ֣
   Ǯӽ US$300.00
   
   һ SQL3 ݰ (Working Draft)
   
   ɴ ANSI X3 Secretariat, CBEMA (Computer and Business Equipment
   Manufacturers Association) һ SQL3 ݰĸӡͼȷ
   汾 SQL3 ݰ US$60.00  US$65.00 ۡ
   ;Ӵ CBEMA
   
     CBEMA, X3 Secretariat
     Attn: Lynn Barra
     1250 Eye St.
     Suite 200
     Washington, DC 20005 (USA)

   Lynn Barra ҲԵ绰 +1.202.626.5738 ӴҪһݣʼƺ
   ò
   
   Ӿȡ SQL3 ݰ
   
   °汾дʱΪ׼ SQL3ANSI  ISOݰи 
   վ̨ԡanonymous ftpftpmailõ
   
     gatekeeper.dec.com

  

     /pub/standards/sql/

   Ŀ¼ж PostScript ʹֵʽۣ 
   өĻرĶ
   
   һ˵ҵƵĵ
   
     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

   °汾ļᣬmar94ı˵µĳڣ硰aug94
    mar94֮İ汾
   
   ⣬Ϊչ˲ܴ FTP ȡõĶߣĿ¼зһΪ
   
     ls

   ĵ⵵棡Ŀ¼ڵĵ
   
    Ftp ֱӻõ
   
   ʹ FTP ӡر˵ӵ gatekeeper.dec.com 
   ЩĿ¼ѵ͵ĵԡҪעĵĵҪܡ ǩ
   ǡftpĵʵַνanonymous ftpָ
   type binaryȷյĵûλԪȥgetһȡһ
     (script) еעڽ <  >
   
  % ftp gatekeeper.dec.com
  Connected to gatekeeper.dec.com.
  220- *** /etc/motd.ftp ***
       Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
       <һᡭ>
  220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready.
  Name (gatekeeper.dec.com:<ĵ>): ftp  <anonymous Ҳ>
  331 Guest login ok, send ident as password.
  Password: <ĵʵַ>
  230 Guest login ok, access restrictions apply.
  Remote system type is UNIX.  <ʲҲûν>
  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
  % <⵵ѳΪĵе x3h2-93-082.txt>

   û ftp ֧Ԯȡõ
   
   Digital Equipment Corporation ˾ƣṩ ftp email 
   ҪлӦΪֱṩ˵ͬ ftp ķ
   ĵַΪ
   
   ftpmail@decwrl.dec.com
   
   ȡ°汾 SQL3 ļ PostScript 
   
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     binary
     compress
     uuencode
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit

   һָŷҪѵ㣬Ҫ
   joe.programmer@imaginary-corp.comΪĵʵַеĵ
   x3h2-93-091.ps  uuencode ˵ compress ʽֳʮķʻظ
    Ļûṩ鵵ĹߣҪԴģʽȡ
   õ
   
     reply joe.programmer@imaginary-corp.com
     connect gatekeeper.dec.com anonymous
     chdir /pub/standards/sql
     get x3h2-93-091.ps
     quit

   ע⣬ .ps ŻᱻΪʮظ
   
   Ҫȡκβ x3h2-93-091.ps ĵֻѡx3h2-93-091.ps Ϊ
   ҪĵơҪȡеѡx3h2-93-091.psΪ dir
   
   
28.10 һ֡ISO/ANSI SQL ǰ

   й SQL ׼䵱ǰԴ
   
   ǰ
   
   ĿǰڽпԸĽ SQL ΪΪ (computationally
   complete language)Կ춳־áӵһ㻯רŻ
    (generalization and specialization hierarchies)༶̳ (multiple
   inheritance)Զ̬ (triggers) ж (assertions)֪ʶ
   ϵͳ֧Ԯ (support for knowledge based systems)صݲѯʽ (recursive
   query expression) ͸ϹߡҲ̬ (ADTs)
   ʶ (object identifiers) (methods)̳ (inheritance)
   (polymorphism)װ (encapsulation) ϹйصĹ
   ܵĹ
   
   һž＾SQL3 ֽһ ISO CD ͶƱ
   SQL/FrameworkSQL/Foundation  SQL/Bindingsһϣ ͶƱ
   յԼŰٸһѮһ ISO DBL ༭ (editing
   meeting)˴ἰύ 춸ôλ
   δܴۣ齫ӳ ༭鶨һž׶ɡ
   
   ݹƣµı༭֮ᣬйЩֵ SQL 
   CD ͶƱ CD ̻ỨԼ£֮ DBL ༭顢DIS ͶƱ
   ݵ IS ͶƱ
   
   ISO ĳ SQL/92 ֮ıˣ SQL ίԱ̵顣
   
   ˳SQL3 Щֻ 1998 ڳΪٷ ISO/IEC ׼
   ʱǳȡ
   
   һž꣬ANSI  ISO ίԱ֮ SQL չΪಿֵı
   ׼Щְ
   
     * 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.
       
   SQL3 ͬʱ ANSI  (Domestic, "D") ר ISO ר
   Ŀǰʱһžžꡣ
   
   SQL/CLI  SQL/PSM ٶȴΪ SQL-92 ޶
   ֻ (International, "I") ר SQL/CLI һž
   ˡSQL/PSM Ӧû 1996 δɡ
   
    SQL3 ⣬һЩӵļƻ
   
     * SQL/MM An ongoing effort to define standard multi-media packages
       using the SQL3 ADT capabilities.
     * Remote Data Access (RDA)
       
   ׼ίԱ͹ (Standards Committee and Process)
   
   ʵϣж SQL ׼ίԱᡣISO һһ SQL ׼С
   Ҷ SQL ΪصίԱᡣЩңͨɳ
   ISO/IEC JTC1/SC 21/WG3 DBL 顣 ISO SQL ׼ƶĹǡ
   
     * 
     * 
     * ô
     * 
     * ¹
     * ձ
     * 
     * 
     * Ӣ
     * 
       
   NIST ȷ (NIST Validation)
   
   SQL ʵȷϹ National Institute of Standards and
   Training (NIST) СNIST Ŀǰһż (entry level) SQL-92 Ĳ
   ׼NIST ȷҪ鱻Ϊһ Federal Information Processing
   Standard (FIPS)Ŀǰ SQL Ҫ FIPS 127-2ļ
   Postscript ģʽɴ NIST ȡáĿǰͨ SQL ȷϵĲƷҲ
   NIST ȡá
   
   ׼ SQL ļ (Standard SQL Publications and Articles)
   
   SQL ׼汾ɴ ANSI ȡá
   
     * ISO/IEC 9075:1992, "Information Technology --- Database Languages
       --- SQL"
     * ANSI X3.135-1992, "Database Language SQL"
       
   Ͷ׼Ĳο⣬SQL ׼汾ȫһ 汾ɴ
   µطȡá
   
     American National Standards Institute
     1430 Broadway
     New York, NY 10018
     USA
     Phone (sales): +1.212.642.4900

    SQL-92 ׼⣬ڻһݼ (Technical Corrigendum) 
   
   
   * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992

   TC 1 Ӧÿɴ ANSI ȡáTC 1 ֻ ISO 汾 ISO  ANSI 
    SQL-92
   
   ׼⣬Ҳй 1992 SQL ׼顣Щṩһʵʱ׼
   
   
   йصı׼
   
   SQL ȺҲԶ׼ȤڰһЩйЩŬָ롣 
   ϳᣬҲ
   
     * SQL Environments (FIPS 193)
     * Next Generation Repository Systems (X3H4) - һݺ
       "Developing Standards for the Next Generation Repository Systems"
       Ÿ塣
       
28.11 ڶ֡ISO/ANSI SQL  (ISO/ANSI SQL Foundation)

   SQL3 ŬһҪ SQL ļС
   
     *  SQL/PSM  SQL/PSM-92
     * µ̬
     *  (Triggers)
     * ӱ (Subtables)
     * ̬ (Abstract Data Types, ADT)
     * 
       
   ȾҪ
   
     * 帴
     * ѸӵϿ
     * ⲿЩ SQL Ҫ湵ͨ
       
   ЩѶΪ SQL/PSM һ
   
   д SQL-3 ģͣʹ ODMG ģͿ롣
   Ŭ X3H2  ISO DBL  SQL3  ODMG SQL3/OQL
   Merger ĸ°Ҳɵõ
   
   SQL3 ʱ
   
   й SQL3 ĹڽУձ׼дų֡
   
     * ͶƱ SQL3 ӲݰΪίԱݰ (Committee Draft, CD) 
       һž＾С
     * ͶƱ
     * Ҫڶ CD ͶƱ
     * Draft International Standard ͶƱ 1998 н
     * ʱ׼һžž
       
   ANSI ı׼ıҲࡣ
   
28.12 ֡ISO/ANSI SQL м (Call Level Interface)

   SQL/CLI һֶ SQL Ͽĺм档Ϊ֧Ԯ
   (shrink-wrapped) ӦóʽCLI ԭ SQL Access Group (SAG) һС
   ίԱᴴ졣 SAG/CLI  1992 ΢ Open DataBase Connectivity
   (ODBC) 񹫲һž꣬ SAG  CLI ύ ANSI  ISO SQL ίԱ
   С(SQL Access Group ѽϵ X/Open consortium С)
   
   SQL/CLI ṩĹʱ׼
   
     * ʵ CLI ȡ SQL Ͽ
     * ӹ (Client-server tools) ׼̬ắʽȡϿ
     * ֧Ԯḻӹ
       
   SQL/CLI ʱ
   
   Ա׼Ŀ̣SQL/CLI Ծ˵ٶȴС
   
     * SQL/CLI Ƕ 1992 SQL ׼SQL-92Ĳ
     * һžɣΪ ISO ׼
     * ISO/IEC 9075-3:1995 Information technology -- Database languages
       -- SQL -- Part 3: Call-Level Interface (SQL/CLI)
     * Ŀǰ SQL/CLI Ŭ SQL3 
       
28.13 Ĳ֡ ISO/ANSI SQL ־ôģ (Persistent Stored Modules)

   SQL/PSM ¹ SQL
   
     *  (Procedural language) 
     *  (Multi-statement) ʹ
     * ⲿ (External function and procedure calls)
       
   ΪмֵӦóʽߣSQL/PSM Ϊ SQL3 ṩĻ
   ֧Ԯ
   
   ڴ
   
   ڴΪӻṩֺô
   
     * ֡ڴִж SQL 䣬ͻĹͨɼ١
     * ߿Ȩڴһ񣬵ûȨֱӸ¡
     * ʽÿȡϿͻ߶дڴĳʽ
       
     * ơΪӦóʽִṩһĶͿơ
       
   
   
   Լƺ̼Ϊ SQL ϴͳʽԵĹܡ
   
   
   
     * If-then-else
     * Ȧṹ (Looping constructs)
     * ⴦ (Exception handling)
     * Case 
     * Begin-End 
       
   컹̼ɡ
   
     * 
     * Set 䣬춸ֵ (assignment)
     * ȡг (process) ״̬
       
   ⣬дͳ SQL ԶɰڶĳС
   
   ⲿ
   
   һڴϿƷ wish lists г֣вʵɫ 
   дϿĳ
   
     * ĳԻӦóʽԼϿ⺯
     * ϿӦóʽʹ
       
   ⹦ܵĺôϿ⣨˰ϿӦóʽʹ÷ḻĳͺ
    ḻòһ׼֯
   
   SQL/PSM ʱ
   
   SQL/PSM չѸ١
   
     * SQL/PSM  SQL-92 Ĳ
     * йذ SQL/PSM ӹʱ׼ĲݰΪʱ׼ĹͶƱһžһ
       ɡ
     * һžµı༭δܽ
     * PSM ༭鰲һžʮʮڼؿ
     * Žȣ PSM пһž
     * ٷΪ ISO/IEC DIS 9075-4:199? Information technology --
       Database languages -- SQL -- Part 4: SQL Persistent Stored Modules
       (SQL/PSM)
     * Ϊ SQL3  SQL/PSM ֧Ԯ
       
28.14 岿֡ ISO/ANSI SQL/ (Bindings)

   ΪοʽԵĽϱɶļĿǰİ汾 SQL-92 
   ̬Ƕ (dynamic and embedded bindings) Ľ¼
   
   ʽԽвͬд
   
   Դͳʽ˵̬ SQL-92 ĿԻӦ SQL 
   ʽԱ֮ĶӦ붨塣
   
   ˵Ŀǰ SQL ̬SQL ģͺʽ
   ֮ĶӦϵ붨塣
   
   ģڹЩ֮ǰȶ
   
   ԽʱΪ SQL3 һ֡
   
28.15 ֡ISO/ANSI SQL XA רŻ SQL/XA

   Ϊܽ׹Ա (global Transaction Manager)  SQL ԴԱ
   (SQL Resource Manager) ֮Ӧóʽ (API) ṩ׼
   ISO/IEC 10026 ݣɢ״ (Distributed Transaction
   Processing ׼УSQL ԴԱ֧Ԯֶ׶εȷ
   (two-phase commit)ļԾ X/Open ׼һ X/Open 
   ָ xa_close, xa_commit, xa_complete, xa_end, xa_forget,
   xa_open, xa_prepare, xa_recover, xa_rollback  xa_start ȶ
   SQL ̬﷨
   
   ISO ĿǰԾ׷ (fast-tract) X/Open XA  ԭⲻ
   һĿǰҵ ISO SC21JTC 1 ȼ XA ׷ͶƱһž
   ¶ʮտʼһžʮ¶ʮս XA  75% Ʊ
    2/3  JTC 1 p-members ׼Ϊһʱ׼ ׷
   ͶƱ׼SQL/XA  1996 Ϊ׼
   
28.16 ߲֡ʱ̬ ISO/ANSI SQL

   ʱ̬ SQL ʱйصϡڲѯʱһضʱ
    ʱ̬ SQL һ Rick Snodgrass һžʮд
   ļ
   
   X3 ȷһ¼ƻISO/IEC 9075 Part 7: SQL/Temporal һݹ
   SQL/Temporal Ÿ
   
----------------------------------------------------------------------------
                                Temporal SQL
                                ************
Rick SnodgrassTSQL2 ίԱϯ
31-Dec-1994

   ɹ SQL 3 Ըʱ֧Ԯ⣨ DBL R10-75 飬Ҫ SQL
   µĲʱԵϿ⣩۵ǳ̬ (ADT's) ֧Ԯ
   ʱ̬ ѶԵĿʹþ֤ӵг̬λ
   ʱ̬ѯ ر˵ܶʱԵĲѯǺ SQL ģ⣬
   ʹǶʽ SQLѡ TSQL2һ SQL-92 ʱ̬
   ˡ
   
  
  
   Чʱ (Valid-time) ֧Ԯһʱ̬ ADT ʹߣ һ
   λָΪʱ̬ DATE  INTERVALӣЧʱ䣬
   ÿʱı䣬ΪʵıˡϵһЧʱĳе
   ʱ (timestamp)ᱻѯΪиֵЧʱ
    ʱʹòѯԼر
   
  оʱ
  
   The University of Arizona  Office of Appointed Personnel Ͽ
   ЩϣԱ֡ĿǰнĿǰְλ Щһ򵥵ı
   
   
        Employee(Name, Salary, Title)

   ʹѰһԱнʮּ򵥡
   
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob'

    OAP ټ¼ڡΪЩڱмһ¸Ŀ
   (schema)
   
        Employee(Name, Salary, Title, DateofBirth DATE)

   ѰһԱĳڸѰнơ
   
        SELECT DateofBirth
        FROM Employee
        WHERE Name = 'Bob'

  оʷ
  
   OAP ܹʷԻΪˣǼ һָʾеϺʱ
   ʼЧһָϺʱʧЧ
   
   Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)
   
   ģ (data model) ˵Щλ DateofBirth ޷ֱ𡣲
   ǵĴڲֽ
   
  оͶӳ (Projection)
  
   ҪҳԱĿǰнΪѡ
   
        SELECT Salary
        FROM Employee
        WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop

   ѯ֮ǰĸӡԪ׺OAP 뷢нʷԱ
    رأҪҳÿһԱһнʱ䡣ҵأ
   SQL һԱнڼְοжα
   
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

   Ҫע Bob нͣ $70,000ԣӦ Bob С
   
Name    Salary  Start           Stop
----    ------  -----           ----
Bob     60000   1993-01-01      1993-05-30
Bob     70000   1993-06-01      1994-12-31

   һǰнְӡߣҳнʱ ⷽ
   Ȳ಻ʵʡһǾʹ SQL
   
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))

   ȦҳصڶҪϲʱΡȦִ log N 
   N ָһصڵͬн¼߿ģѯ
   ִУ ֤ȷԡ
   
   ַʹ SQL Ϊһα (cursor)Ϊÿнһ
    (linked list)ʼʱΪհס
   
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;

   ظӡںн
   
   α ORDER BY StartǱҪ
   
   Σһ򵥵Ĳѯǲ SQL-92 ĹܱĿġʹ TSQL2
   Ļѯܼ򵥡
   
        SELECT Salary
        FROM Employee

  о (JOIN)
  
   һķǰѸĿнְϷֿ Ӷܿ
   ȡнʷʱ⡣Ϊƣвٿǳ
   
   
        Employee1 (Name, Salary, Start DATE, Stop DATE)
        Employee2 (Name, Title, Start DATE, Stop DATE)

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

    Employee2 
   
Name    Title                   Start           Stop
----    ------                  -----           ----
Bob     Assistant Provost       1993-01-01      1993-09-30
Bob     Provost                 1993-10-01      1994-01-31
Bob     Professor               1994-02-01      1994-12-31

   ı֮ᣬȡùԱнϱü򵥡
   
        SELECT Salary, Start, Stop
        FROM Employee1
        WHERE Name = 'Bob'

    OAP һанְλʱΣ OAP һͼ 1 ʽ
   񣩣һӡ񣬶ҳйϡһȫʹ
    SQLҵأѯҪ Employee1 ÿк Employee2 ص
   ֿܳ֡
   
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

   ȷҳһսԵĹʹ TSQL2һʱ̬
   
   
        SELECT Employee1.Name, Salary, Dept
        FROM Employee1, Employee2
        WHERE Employee1.Name = Employee2.Name

  оۼ (AGGREGATES)
  
    OAP ʼнʲ᣿ʱǰܼ򵥡
   
        SELECT MAX(Salary)
        FROM Employee

   ڼнʷҪҳͬʱнʷ⵱Ȼ SQL 
   ṩʱ̬ľۼ򵥵ķӡйϣҳֵ һ
   ȡɣһʱ (snapshot) ۼѯתΪʹþۼĲѯ 
   תΪʱ̬ۼǸʹþۼĲѯҳֵн
   
        SELECT Salary
        FROM Employee AS E1
        WHERE NOT EXISTS (SELECT *
                          FROM Employee AS E2
                          WHERE E2.Salary > E1.Salary)

   ѯΪʱ̬ѯǳһַ
   
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;

   ⷽмʱصֵϡ²
    ֮ǰӲѯҳļ¼ɾӰ쵽 NOT EXISTS
   ǴӸҳʱΣ֮ǰҳнѶ㡣 ϣ
    SQL ִʱЧʷǳͣΪЩӵĳ״Ȳѯ
   
   Ǿ SQLõαҳʷ
   
   ʹ TSQL2 ٴμֱӡ
   
        SELECT MAX(Salary)
        FROM Employee

  ժҪ
  
   󲿷ϿӦóʽҪʱıϡЧʱ SQL ֧Ԯ
   ܶʱ̬ѯǺ SQL ģ⣬Ҫ SQL Ƕ뵽У
   Ϊ SQL ģͺͲѯԽṹȱЧʱ֧Ԯ
   
   һ棬ʾЧʱ֧ԮҪ DBMS ʩһЩı䣬 
   ϷԵؼһЩѯʹѯпܡҲ춴ṹ 
   ѻ (optimization)ѻĲԿɵ±ִ
   
    SQL3 һ²֧ԮʱıϣǿԿӦã
    SQL3 ʱ̬ϵ
   
----------------------------------------------------------------------------
           Accredited Standards Committee* X3, Information Technology
NEWS RELEASE

ļš       PR/96-0002

ظ       Barbara Bennett at bbennett@itic.nw.dc.us

             X3 Ͽһר, ISO/IEC 9075 Part 7:  SQL/Temporal

Washington D.C., 1996 һ
----------------------------------------------------------------------------

   -- Accredited Standards Committee X3, Information Technology Ͽһ
   й SQL/Temporal ֧ԮרISO/IEC 9075 Part 7йع
   Technical Committee X3H2, Databaseеı׼ֵ SQL3
   ׼һ²֣߲ Temporal SQL Ϊ SQL һ죬 SQL 
   Ͽ⻷֧Ԯȡʹʱ̬ϡ´ X3H2 鶨һžʮ
   һʮڿ˹ (Kansas) С
   
   вѯʼ
   
        Chairman of X3H2,
        Dr. Donald R. Deutsch,
        Sybase, Inc., Suite 800,
        6550 Rock Spring
        Drive, Bethesda, MD  20817.
        Email: deutsch@sybase.com.

   ѰܵרǡȨ̱꣩йϼĽ
   
        X3 Secretariat at
        1250 Eye Street
        NW, Suite 200,
        Washington DC  20005.
        Email: x3sec@itic.nw.dc.us
        FAX:  (202)638-4922.

28.17 ڰ˲֡ISO/ANSI SQL ý (SQL/MM)

   һΪ춶ýӦóʽ SQL ʽ ISO/IEC ʱ׼
   һžڻ׼С±׼жΪ SQL Multimedia
   (SQL/MM)òе SQL3 еĳ̬ADTĿָ
   SQL ADT ׼
   
   SQL/MM ĿΪ׼ѧ͹̡ȫĺļýӰ
    ֺ¼⡣һ JTC1 ׼
   ֯йļ SC18Ӱ SC24ƬͶͼ SC29
    SQL Խ (binding)
   
   SQL/MM רƻָΪһݶಿֱ׼Ĳ֡ һ
   ֻνɵĿܡÿֻרעһض SQL Ӧ
   ʽ׼Ϊһž´ڵ SQL/MM ֡
   
     * 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.
       
   жйؿռ͵ϵı׼ĹڽС
   
     * ANSI X3L1 - Geographic Information Systems. Unisys  Mark
       Ashworth of Unisys  X3L1  ANSI X3H2 ˡ Ҳ SQL/MM
       ݸһĲֵı༭
     * ISO TC 211 - Geographic information/Geomatics
       
29. PostgreSQL ļ֧Ԯ

   κμϵʽѣɵ
     * [380]pgsql-questions@postgresql.org
     *  [381]comp.databases.postgresql.general
     *  [382]comp.databases.postgresql.hackers
     *  [383]comp.databases.postgresql.doc
     *  [384]comp.databases.postgresql.bugs
     *  [385]linux.postgres
     * ̳ͨ [386]http://www.postgresql.org
       
   ԤһյظΪƷûΧܹ㣬ûֻ
   Ϊ԰ûṩ֧Ԯ֧Ԯȵ绰֧Ԯö࣬
   ΪɼºϴѶϢʽȵȣֿ״͵̳ͨ / 
   顣
   
29.1 ҵ֧Ԯ

   PostgreSQL ֯Ҳ˾ۼ֧ԮάصĶ
   ӳվ̨ ά ftpҲӡļָ鼮԰˿͡
   ַΪ [387]http://www.postresql.org
   
   һΪGreat Bridge Corporation PostgreSQL Ŀۺ
   ֧ԮǵҳΪ [388]http://www.greatbridge.comһ
   Landmark Communications corpͶʹ˾Ĺ˾ר
   ҵ˾֧Ԯ PostgreSQL
   
   Ҳ RedhatAndersonWGSWork Group Solutionsרҵеõ
    ǰΪкܺõ CC++ רң PostgreSQL  C
   дɣ
     * Redhat ˾Ͽʲ [389]http://www.redhat.com
     * Work Group Solutions [390]http://www.wgs.com
     * Anderson Consulting [391]http://www.ac.com
       
30. úҵ

   ҵϿɽܶ˰ݡۡáᱣϡҽƱ˰ Ա
   ϡԱгƹ͹ѡ Щöֱ
   ϿĿ춸ϿƷʺͼ 㹺һҵϿ⣬
   һֵĽ˷˰оɱȵط
   
   ңҵϿ֧͹ Unix װά Щɱ
   ת޸û
   
   ҵϿȣPostgreSQL ӵֱ˰ŵ㣬Ϊǻ
    һȺΪ PostgreSQL Ŀҳס磬һӣ 
   һ乫˾ÿ䶼ʮԪ PostgreSQL ˵ﳬֵ
   ÿõһǧԪǻħ
   
   ĿǰPostgreSQL ԴʽдԼ 250,000  CC++ ʽÿ C ʽ
   ֵԪ PostgreSQL ֵʮԪ
   
   ܶ๫˾ѿ CC++ ʽáˣ PostgreSQL Դʽ
   뻥˾Թ˾棬ʡʱ
   
31. Ͽ

   г UnixLinux  SQL Ͽ⡣
     * ѡ Applications->databases.
       [392]http://www.caldera.com/tech-ref/linuxapps/linapps.html
     * ѡ Applications->databases.
       [393]http://www.xnet.com/~blatura/linapps.shtml
     * ϿԴ [394]http://linas.org/linux/db.html  Linas
       Vepstas дɵġ [395]linas@fc.net
     * Ͽ
       [396]http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html
     * Browne  RDBMS  [397]http://www.hex.net/~cbbrowne/rdbms.html
        Christopher B. Browne дɡ [398]cbbrowne@hex.net
     * SAL ʽ RDBMS  [399]http://SAL.KachinaTech.COM/H/1/
     * SAL  DBMS  [400]http://SAL.KachinaTech.COM/H/2/
     * SAL's ĹߺϿ [401]http://SAL.KachinaTech.COM/H/3/
     * ACM SIGMOD ڿȡõϿ
       [402]http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/
       
32. άѰʾ

   ǳӵд·һѶ ȫÿٷ
   ֮ٵٶݹƣȫдԼһǧվ
   
   ҪѰϣҪŻLycos Ѱ档ȥŻѡ search
   ʹùѡ (filtering options) խѰҪԤѰ
   Intelligent searchȽһ㻯гпԡѡOptionsѡ
    EXACT phraseѰANDѰORѰȵȡ ɸҵ
   ҪѶϢ⣬ search Ŀ¼£ radio buttons ѡѰ
   顢վŻվ
   
33. 

   оɺͿȡԴʽϿᣬֵֻ PostgreSQL 
   졢ʹúȫ SQL RDMSʽ
   
   PostgreSQL ǳΪкܶ๤ɡ ODBC  JDBC ʽ
   ЩԱдϿӦóʽ ODBC  JDBC ʽд
   PostgreSQL ӦóʽֲϿ⣬ OracleSybase 
   Informix֮Ȼ
   
   ܻʡΪʲ PostgreSQLΪ㿪ʼ һϿ
   Ĵʱ䣬ѡһϿϵͳϺʶ
   
   һ
     * ȡԭʽǿųʽϵͳ
     * ûиȨ־ (license string)ûӵȨ־䣨밴
       PostgreSQL  GPLȨЭ顣ûȨ־䣬ʹΥ
       ˣ
     * ڻɢ
     * ѿ
     *  ISO/ANSI SQL 92 SQL 89ȱ׼
     * δҪ SQL 3SQL 98
     * ӵȽ
       
   Ͽϵͳֻ PostgreSQL Щһʵ
    ܻ˵PostgreSQLһҵĿǡΪθ
   Զʹ PostgreSQL
   
34. FAQй PostgreSQL 

   һԡLinux  Irix ° FAQ
     * [403]http://www.postgresql.org/docs/faq-english.shtml
       
35. ļʽ

   ļʮһֲͬĸʽDVIPostscriptLaTeXLyXGNU-info
   HTMLRTF Rich Text Format֡Unix man pages  SGML
     * 
       [404]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/ ȡ
        HTMLDVIPostscript  SGML ʽдɵĵһ tar.gz  밴
       sunsite.unc.edu ѸΪ metalab.unc.edu
     * ֵڡ [405]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
     * Եķ룬編ġġġġλ
       [406]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO ҶԷ뵽κ
       Եİλӭ
       
   ļһΪSGML-ToolsĹдɣµطҵ
   [407]http://www.sgmltools.org ʽõµָ
     * sgml2html databasehowto.sgml  HTML 
     * sgml2rtf databasehowto.sgml  RTF 
     * sgml2latex databasehowto.sgml  LaTeX 
       
   LaTeX ļתΪ PHP ֻʹ sgml2latex dvips
   Postscript  Acrobat distill [408]http://www.adobe.com
   
     _________________________________________________________________
   
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 &
     _________________________________________________________________
   
   Ҳ Ghostscript ָ ps2pdfps2pdf ṩ Adobe  Acrobat
   Distiller Ʒļйܡ PostScript תΪ Portable Document
   Format (PDF) ps2pdf ʹһϸС壨ε
   GhostscriptѡһΪ pdfwrite ⡰豸Ҫʹ ps2pdf
   pdfwrite 豸ڱ Ghostscript ʱ makefile ָ
   Ghostscript ļ
   
   ļλ춡
     * [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.htm
       l
     * [413]http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.h
       tml
     * 㸽λַ˵վ̨
       [414]http://sunsite.unc.edu/LDP/hmirrors.html ҵѡһվ
        /LDP/HOWTO/PostgreSQL-HOWTO.html Ŀ¼
       
   밴ñļġ롳
   [415]http://www.linux.org.tw/CLDP/HOWTO/ ҵҪļҪ
   bg5sgmltools [416]http://www.linux.org.tw/CLDP/ ҵ
   
   Ҫۿ dvi ʽļʹ xdvi ʽ Redhat Linux У͸
   ControlPanel | Applications | Publishing | TeX ťҵ
   tetex-xdvi*.rpm ׼мΪ xdvi ʽ
   
   ҪĶ dvi ļִָ
   
        xdvi -geometry 80x90 howto.dvi
        man xdvi

   ʹûӴСʱʹüͷPage UpPage Down Ҳ
    'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' ĸϡ¡Сǰ
   ҳȵȡ Ҫص expert menu 'x'
   
   óʽ 'gv' (ghostview)  'ghostscript' Ķ postscript 
   RedHat Linux Уghostscript ʽ ghostscript*.rpm ׼gv 
   gv*.rpm͸ ControlPanel | Applications | Graphics ťҵ
   gv ʽ ghostscript õöࡣghostscript  gv Ҳƽ̨
   OS/2Ӵ 95  NT õҲЩƽ̨Ķļ
   
     *  [417]http://www.cs.wisc.edu/~ghost ȡ ghostscript Ӵ 95
       OS/2 ҵϵͳİ汾
       
   ҪĶ postscript ļִָ
   
                gv howto.ps
                ghostscript howto.ps

   עñļܳӡ postscript ԼҪ 113 ҳ 
   gv  ghostscript һǰ˽棬Լʹֻ gvҲҪװ
   ߡ⣬ OS/2 Ӵвû gvֻ GSViewһ gv ܲ
   ĳʽι [418]http://www.cs.wisc.edu/~ghost
   
   ʹ Netscape NavigatorMicrosoft Internet ExplorerRedhat Baron
   Web Browser κάĶ HTML ʽļ
   
    LyXLaTeX һ X-Window ǰ˽Ķ LaTeX  LyX 
   
36. ȨȨ

   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. ¼סANSI/ISO SQL 1992 ﷨

   ⵵аԵ BNF Ϊȵ״ģɨ (depth-first tree
   traversal)Լ 27-AUG-1992 11:03:41.64 ɡض汾õ
   BNF ֻ ANSI  SQL2 ġ
   


<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>ʹеּõĿհԪ

<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>!! οķ

<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>!! οķ

<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>ʵĩָʾ


<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>!! οķ

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

<C host identifier> ::=
    !! <EMPHASIS>οķ

<COBOL host identifier> ::= !! <EMPHASIS>οķ

<Fortran host identifier> ::= !! <EMPHASIS>οķ

<MUMPS host identifier> ::= !! <EMPHASIS>οķ

<Pascal host identifier> ::= !! <EMPHASIS>οķ

<PL/I host identifier> ::= !! <EMPHASIS>οķ

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

<host PL/I label variable> ::= !!<EMPHASIS>οķ

<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. ¼ҡѧ SQL 

38.1 PostgreSQL 

   SQL Ҳ PostgreSQL ɢSQL ָ src/tutorial Ŀ¼
   
   
38.2  URL ָ

   ѧߵ SQL µطҵ
     * Jim Hoffman ָ [419]http://w3.one.net/~jhoffman/sqltut.htm
     * Carnegie Mellon Univ [420]http://www.heinz.cmu.edu/project/dbms 
       ˻ѡtechnical->SQL_examples.html
     * Concord Univ
       [421]http://www.cs.concordia.ca/Course_Notes/oracle/browser/node1.
       html
       
   ѣ
     * Jim Hoffman [422]jhoffman@one.net
       
   John Hoffman ҲƼַ
     * 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 ȡ
       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  SQL ָ

   ҳȡ SQL ָ
     * SQL ѧγ [441]http://sqlcourse.com
     * SQL ׿γ [442]http://sqlcourse2.com
       
39. ¼Linux ٰװָ

   ƻ Linux ʹ PostgreSQLڰװ Linux ʱҪο
   ⸽¼ָʾĵطǰ
     * 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
       
     * ҳ [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/
       
40. ¼װ Midgard

    [448]http://www.midgard-project.org/download/binaries  RPMS Ŀǰ
    PostgreSQL ֧ԮҪԭʼ tar.gz װ
   
    Midgard ԭʼ tar.gz Ķ INSTALL.REDHAT 
     _________________________________________________________________
   
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
ͷԷ make install 
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 趨Ϊ /usr/
#modify apache line to correct /usr/.....
bash# vi /etc/httpd/conf/httpd.conf     /etc/apache/httpd.conf
bash# /etc/init.d/apache restart
# ˣ apache

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
 INCLUDE м -I/usr/include/pgsql

ҲҪ $(APXS) ָм $(INCLUDE)

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 趨Ϊ /usr/
# С
    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    /etc/apache/httpd.conf

bash# /etc/init.d/apache restart
# Ҫ apache
     _________________________________________________________________
   
40.1  Midgard PHP ŷ

   Ҫ԰װǷɹ ļĿ¼нһͨ
   Ϊ info.phpһС
     _________________________________________________________________
   
<?phpinfo()?>
     _________________________________________________________________
   
   http://localhost/info.php
   
   һҳƯġҪг趨ϡ Ų⵵
   õŷУΪ˿ʱһϣ ܷ㡣
   
40.2  OpenSSL

   Ҫ
   [449]ftp://ftp.deva.net/pub/sources/crypto/rsaref20.1996.tar.Z ȡ
   RSA װ SSL ܡҲ뿴 Linux  OpenSSL
   [450]http://www.openssl.org
   
   㲻 SSLѣԭʼ Apache-Midgard RPM 
    *.spec ɾȥ SSLؼ RPM

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/
