Ellhniko Database-SQL-RDBMS HOW-TO gia Linux (PostgreSQL
 -Antikeimenostrafes Sxesiako Susthma Bashs Dedomenwn)
 Al Dev (Alavoor Vasudevan)        [email protected]
 v11.0, 8 Ianoyarioy 1999

 Ayto to keimeno einai enas "praktikos odhgos" gia na egkatasthsete
 grhgora thn SQL Database engine kai ta front end ergaleia ths se ena
 susthma Unix. Mila epishs gia th Die8nh glwssa Protupwn (International
 Standard language) ANSI/ISO SQL kai ejetazei ta pleonekthmata ths SQL
 database engine poy exei anaptyx8ei apo to world-wide internet katw
 apo ena "anoikto periballon anaptyjhs".  Prokeitai gia to PWS (HOW-TO)
 na egkatasthsete thn Antikeimenostrafh Sxesiakh SQL Bash epomenhs
 genias "PostgreSQL" se ena susthma Unix to opoio mporei na xrhsi�
 mopoih8ei san Application Database Server h san Web Database Server. H
 PostgreSQL ylopoiei ena yposunolo toy Die8nous Protupoy ISO kai ANSI
 SQL 1998,92,89. Ayto to keimeno dinei epishs plhrofories gia ta pro�
 grammata diasundeshs me th bash opws ta Front End GUIs, gia ergaleia
 RAD (Rapid Application Development), gia interfaces glwsswn programma�
 tismou "C", "C++", Java, Perl, ODBC, JDBC odhgous kai ergaleia sun�
 deshs ths bashs me Web kai programmata grafikhs diasundeshs. Oi plhro�
 fories poy dinontai edw isxuoyn gia oles tis platformes Unix kai gia
 alles baseis epishs kai 8a einai polu xrhsimes se atoma nea sto xwro
 twn Basewn, ths glwssas SQL kai ths PostgreSQL.  Ayto to keimeno exei
 epishs odhgo ekma8hshs ths SQL, kai h suntajh SQL 8a fanei polu
 xrhsimh stoys arxarioys. Oi empeiroi 8a broyn xrhsimo ayto to keimeno
 san proxeiro odhgo anaforas. Gia toys foithtes, oi plhrofories poy
 dinontai edw 8a toys kanei ikanous na paroyn ton phgaio kwdika apo th
 sxesiakh bash dedomenwn PostgreSQL, ap' opoy mporoun na ma8oyn pws
 grafetai mia sxesiakh SQL bash dedomenwn.
 ______________________________________________________________________

 Table of Contents


































 1. Eisagwgh

 2. Alles Morfes aytou toy keimenoy

 3. Oi nomoi ths Fysikhs efarmozontai sto logismiko!

 4. Ti einai h  PostgreSQL ;

 5. Pou mporw na th brw ;

 6. H PostgreSQL yposthrizei ejairetika megales baseis, megaluteres apo 200 Gig

 7. Pws mporw na empistey8w thn PostgreSQL ; To paketo Regression gia test anaptussei to ais8hma empistosunhs ston pelath

 8. Grafiko programma epikoinwnias (GUI FrontEnd Tool) me thn PostgreSQL

 9. Ergaleia enos Oloklhrwmenoy Systhmatos Anaptyjhs gia PostgreSQL (GUI IDE)

 10. Odhgoi Diasundeshs me thn PostgreSQL

    10.1 ODBC Drivers gia thn PostgreSQL
    10.2 UDBC Drivers gia thn PostgreSQL
    10.3 JDBC Drivers gia thn PostgreSQL
    10.4 Java gia PostgreSQL

 11. Perl Database Interface (DBI) Driver gia PostgreSQL

    11.1 Diasundesh Perl 5 me PostgreSQL
    11.2 Perl Database Interface DBI
       11.2.1 TI EINAI TO DBI ;
       11.2.2 Odhgos DBI gia thn PostgreSQL - DBD-Pg-0.89
       11.2.3 Texnikh yposthrijh gia to DBI
       11.2.4 Ti einai ta DBI, DBperl, Oraperl kai *perl;
       11.2.5 Prodiagrafes DBI
       11.2.6 Problhmata Metaglwttishs h alliws "Kophke stis Ejetaseis!"
       11.2.7 Yposthrizetai to DBI katw apo platformes Windows 95 / NT ;
       11.2.8 Ti einai to DBM; Kai giati 8a prepei na xrhsimopoiw to DBI sth 8esh toy;
       11.2.9 Yposthrizetai  [lt    ] to tade xarakthristiko [gt    ] sto DBI;
       11.2.10 Xrhsimeuei ka8oloy to DBI gia programmatismo se CGI;
       11.2.11 Pws petyxainw taxuteroys xronoys sundeshs me DBD Oracle kai CGI;
       11.2.12 Pws epitygxanw monimes (persistent) syndeseis metaju DBI kai CGI
       11.2.13 ``Otan trexw ena perl script apo thn grammh entolhs, doyleuei, alla otan  to trexw apo ton httpd, apotygxanei!'' Giati;
       11.2.14 Mporw na kanw multi-threading me to DBI;
       11.2.15 Pws mporw na kalesw stored procedures me to DBI;
       11.2.16 Pws mporw na parw tis times poy epistrefontai apo tis stored procedures me to DBI;
       11.2.17 Pws mporw na dhmioyrghsw h na katastrecw mia bash dedomenwn me to DBI;
       11.2.18 Pws diaxeirizetai to DBI tis times NULL ;
       11.2.19 Ti einai aytes oi me8odoi func (func methods);
       11.2.20 Emporikh Yposthrijh kai Ekpaideysh

 12. Ergaleia Diaxeirishs ths PostgreSQL

    12.1 PGACCESS - Ena grafiko ergaleio gia th diaxeirish ths PostgreSQL
    12.2 Windows Interactive Query Tool gia PostgreSQL (WISQL h MPSQL)
    12.3 Interactive Query Tool(ISQL) gia thn PostgreSQL - Onomazetai PSQL
    12.4 MPMGR - Ergaleio Diaxeirishs Basewn gia PostgresSQL

 13. Ry8mizontas pollapla koytia PostgreSQL se mia o8onh

 14. Efarmoges kai Ergaleia gia thn PostgreSQL

    14.1 Glwssa 4hs genias (4GL) PostgreSQL gia efarmoges me web kai bash dedomenwn - Platforma anaptyjhs AppGEN
    14.2 WWW Web interface gia PostgresSQL - DBENGINE
    14.3 Apache Webserver Module gia PostgreSQL - NeoSoft NeoWebScript
    14.4 Oi HEITML epektaseis ths HTML ston server kai mia glwssa 4hs genias gia thn PostgreSQL
    14.5 America On-line AOL Web server gia PostgreSQL
    14.6 Problem/Project Tracking System Application Tool gia PostgreSQL
    14.7 Metatroph arxeiwn dbase dbf se PostgreSQL

 15. Ergaleio gia Sxediasmo/Ylopoihsh Web Basewn Dedomenwn gia thn PostgreSQL - EARP

    15.1 Ti einai to EARP ;
    15.2 Ylopoihsh
    15.3 Ti xreiazeste gia na trejete to EARP
    15.4 Pws doyleuei ;
    15.5 Pou 8a to brw ;

 16. PHP Hypertext Preprocessor, mia scripting glwssa gia thn PostgreSQL h opoia enswmatwnetai se html kai ekteleitai sto Server

    16.1 Kuria xarakthristika
    16.2 Anagnwrish/Eyxaristies
    16.3 PHP 3 - Suntomo Istoriko
    16.4 Ti mporw na kanw, loipon, me to PHP/FI ;
    16.5 Ena aplo paradeigma
    16.6 CGI Redirection
       16.6.1 Shmeiwseis gia ton Apache 1.0.x
       16.6.2 Netscape HTTPD
       16.6.3 NCSA HTTPD
    16.7 Trexontas to PHP/FI apo th grammh entolwn

 17. Diasundesh me PostgreSQL mesw Python

    17.1 Pou mporw na brw to PyGres ;
    17.2 Plhrofories kai yposthrijh

 18. Epikoinwnia metaju PostgreSQL kai WWW - WDB-P95

    18.1 Sxetika me to wdb-p95
    18.2 Einai aparaithto o diakomisths ths PostgreSQL, to pgperl, kai to httpd na einai ston idio host;

 19. Programmatistikes diasyndeseis  gia "C", "C++", ESQL/C kai Dyadikoi Telestes  gia thn PostgreSQL

    19.1 Diasundesh glwssas "C" me thn PostgreSQL
    19.2 Interface glwssas "C++" gia thn  PostgreSQL
    19.3 ESQL/C gia PostgreSQL
    19.4 Dyadikoi Telestes gia thn PostgreSQL

 20. Japanese Kanji Kwdikas gia thn PostgreSQL

 21. Metafora ths PostgreSQL se Windows 95/Windows NT

 22. Listes allhlografias

    22.1 Apokthste ena dwrean logariasmo e-mail
    22.2 Agglikh Lista Allhlografias
    22.3 Arxeio ths Listas Allhlografias
    22.4 Ispanikh Lista Allhlografias

 23. Tekmhriwsh kai Bibliografia

    23.1 Odhgoi ekma8hshs kai Egxeiridia
    23.2 Online Tekmhriwsh
    23.3 Xrhsimh Bibliografia Anaforas
    23.4 Keimena prodiagrafwn ANSI/ISO SQL  - SQL 1992, SQL 1998
    23.5 Suntajh ANSI/ISO SQL 1992
    23.6 Suntajh ANSI/ISO SQL 1998
    23.7 Odhgos ekma8hshs SQL gia arxarioys
    23.8 Proswrinh epektash (extension) sto SQL92
    23.9 Tmhma 0 - Apoktwntas ta keimena ISO/ANSI SQL
    23.10 Tmhma 1 - Trexoysa katastash toy ISO/ANSI SQL
    23.11 Tmhma 2 - ISO/ANSI SQL Foundation
    23.12 Tmhma 3 - ISO/ANSI SQL Call Level Interface
    23.13 Tmhma 4 - ISO/ANSI SQL Persistent Stored Modules
    23.14 Tmhma 5 - Typopoihseis - Desmeuseis ISO/ANSI SQL/ ISO/ANSI SQL/Bindings
    23.15 Tmhma 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)
    23.16 Part 7 - ISO/ANSI SQL Temporal
       23.16.1 EISAGWGH
       23.16.2 MIA MELETH- APO8HKEYSH SYGXRONWN/TREXOYSWN PLHROFORIWN
       23.16.3 MELETH - APO8HKEYSH ISTORIKWN PLHROFORIWN
       23.16.4 MELETH - PROBOLH (PROJECTION)
       23.16.5 MELETH - SYSXETISMOS (JOIN)
       23.16.6 MELETH - A8ROISTIKOI TELESTES (AGGREGATES)
       23.16.7 PERILHYH
    23.17 Tmhma 8 - ISO/ANSI POLYMESA SQL (SQL MULTIMEDIA - SQL/MM)

 24. Texnikh yposthrijh gia thn PostgreSQL

 25. Oikonomika kai Epaggelmatika 8emata

 26. Lista allwn basewn dedomenwn

 27. Xrhsimes symboyles gia anazhthseis sto Internet World Wide Web

 28. Symperasma

 29. Syxna Diatypwmenes Erwthseis sxetika me thn PostgreSQL

 30. Shmeiwsh Pneymatikwn Dikaiwmatwn

 31. Pararthma A - Suntajh toy ANSI/ISO SQL 1992

 32. Pararthma B - Odhgos Ekma8hshs SQL gia arxarioys

    32.1 Odhgos Ekma8hshs gia PostgreSQL
    32.2 Deiktes Internet diey8unsewn

 33. Appendix C - Odhgies gia grhgorh egkatastash Linux



 ______________________________________________________________________

 1.  Eisagwgh

 O skopos aytou toy keimenoy einai na dwsei katanohtous deiktes/URLs
 gia na sthsete grhgora thn PostgreSQL kai epishs na yperaspistei ta
 pleonekthmata enos Anoiktou Systhmatos Phgaioy Kwdika (Open Source
 Code) opws h PostgreSQL, Linux.

 Ka8e susthma ypologisth ston kosmo xreiazetai mia bash dedomenwn gia
 na apo8hkeuei /anakta plhrofories. O kurios logos poy xrhsimopoioume
 ton ypologisth einai gia na apo8hkeuoyme, na anaktoume kai na
 epejergazomaste thn plhroforia kai na ta kanoyme ola ayta grhgora,
 ejoikonomwntas etsi xrono.  Taytoxrona, to susthma prepei na einai
 aplo, ajiopisto, oikonomiko kai polu eukolo sth xrhsh toy.  H Bash
 Dedomenwn einai SYSTHMA ZWTIKHS SHMASIAS gia ka8e etairia ston kosmo
 mia kai se ayth apo8hkeuontai polu shmantikes plhrofories.  Ta pio
 dhmofilh systhmata basewn dedomenwn basizontai stis SQL prodiagrafes
 toy Die8nous Organismou Protupwn ISO (International Standard
 Organisation) oi opoies basizontai me th seira toys sto protypo ANSI
 SQL (Amerikaniko).  Oi trexoyses prodiagrafes poy xrhsimopoiountai
 eyrews einai oi ISO/ANSI SQL 1992.  To mellontiko protypo einai to SQL
 1998/99 gnwsto kai san SQL-3 kai anaptussetai akomh. Dhmofileis baseis
 opws h Oracle, h Sybase kai Informix einai systhmata basismena se ayta
 ta protypa h prospa8oun na ta ylopoihsoyn.

 Opws fainetai se ayto to keimeno, yparxoyn perissotera apo 20
 diaforetika systhmata basewn dedomenwn, emporika/basismena sto
 internet, poy xrhsimopoiountai se olo ton kosmo kai polla perissotera
 8a emfanistoun sto prosexes mellon.  Xwris ena protypo opws to
 ANSI/ISO SQL, 8a htan polu duskolo gia ton pelath na anaptujei mia
 efarmogh mia mono fora kai na th trexei se ola ta systhmata basewn
 dedomenwn. O shmerinos pelaths 8elei na anaptujei mia efarmogh mia
 fora xrhsimopoiwntas ISO SQL, ODBC, JDBC kai na thn poylhsei wste na
 xrhsimopoieitai se ola ta diaforetika systhmata basewn dedomenwn ston
 kosmo.

 H dhmofilesterh pagkosmiws DWREAN bash, poy ylopoiei tmhma toy ISO
 SQL, ANSI SQL/98, SQL/92 kai ANSI SQL/89 RDBMS einai h PostgreSQL. H
 PostgreSQL einai h Antikeimenostrafhs Sxesiakh SQL Bash epomenhs
 genias kai ta mellontika protypa ANSI SQL opws to SQL 1998 (SQL-3) kai
 pera 8a asxolountai olo kai perissotero me Antikeimenostrafeis Baseis
 kai tupoys dedomenwn Antikeimenoy (Object data types).  H PostgreSQL
 einai to mono dwrean RDBMS ston kosmo poy yposthrizei
 Antikeimenostrafeis Baseis kai SQL. Ayto to keimeno 8a sas pei pws na
 egkatasthsete th bash kai, epishs, ola ta paketa sxetika me baseis,
 pws na egkatasthsete Web database, application database, grafika
 programmata epikoinwnias kai xeirismou (front end GUIs kai programmata
 interface).  Sas symboyleuoyme na gracete OPWSDHPOTE tis efarmoges
 basewn 100 % symbates me ta protypa ISO/ANSI SQL, ODBC, JDBC, etsi
 wste h efarmogh sas na einai metafersimh se polles baseis opws oi
 PostgreSQL, Oracle, Sybase, Informix klp.

 Me thn PostgreSQL, 8a exete thn ychloterh poiothta kai polla alla
 xarakthristika mia kai akoloy8ei to 'Anoikto Montelo Anaptyjhs Phgaioy
 Kwdika' (Open Source Code development).  To Anoikto montelo Anaptyjhs
 Phgaioy Kwdika einai to mono toy opoioy mporeite na parete olon ton
 phgaio kwdika, kai h anaptyjh ginetai sto internet apo ejairetika
 megalo diktyo an8rwpinwn myalwn.  H mellontikh moda problepei oti h
 megaluterh anaptyjh logismikou 8a ginetai sthn apokaloumenh
 "Yperlewforo Plhroforiwn" (Information Super-Highway) poy diatrexei
 olo ton kosmo. Sta xronia poy erxontai, h anaptyjh toy internet 8a
 einai ekrhktikh h opoia me th seira ths 8a pyrodothsei th grhgorh
 yio8ethsh ths PostgreSQL apo toys pelates.

 Efarmozontas tis arxes ths fysikhs (kbantomhxanikh, klassikh,
 8ermodynamikh), twn ma8hmatikwn kai ths statistikhs sthn poiothta toy
 logismikou, pairnete thn ychloterh poiothta logismikou mono se ena
 'Anoikto Susthma Phgaioy Kwdika' opws h PostgreSQL anoigontas ton
 phgaio kwdika se ena pelwrio ari8mo an8rwpinwn myalwn diasyndedemenwn
 mesw ths Yperlewforoy Plhroforiwn. Oso megaluteros o ari8mos twn
 an8rwpwn poy ergazontai panw s' ayto, toso kaluterh 8a einai h
 poiothta toy logismikou.  To Anoikto Montelo Phgaioy Kwdika 8a
 empodisei epishs thn anakalych toy troxou apo thn arxh , 8a meiwsei th
 diplh doyleia  kai 8a einai polu oikonomiko, 8a ejoikonomei xrono sth
 dianomh kai akoloy8ei toys nomoys ths monternas oikonomias gia
 beltistopoihsh twn e8nikwn kai genikwn porwn.  Otan mia ergasia
 logismikou exei ginei apo alloys, tote DEN xreiazetai na thn kanete
 eseis pali. De 8a spatalhsete ton polutimo xrono sas se kati poy exei
 hdh ginei kala. Ka8ws 8a mpainoyme ston 21o aiwna, 8a yparxei allagh
 ston tropo poy pairnoyme to logismiko gia xrhsh.  Oi pelates 8a
 protimoun ta anoikta systhmata logismikou opws h PostgreSQL, to Linux
 klp.

 An agorasete ektelesima programmata, de 8a parete kai ton kwdika kai
 ta dikaiwmata toy.  O phgaios kwdikas einai anektimhto stoixeio enw ta
 ektelesima den exoyn kamia ajia.  To na agorasete logismiko mporei na
 anhkei sto parel8on.  Gia na agorasete kalo yliko (hardware), ajizei
 na jodecete xrhmata kai na parete to logismiko apo to internet.
 Shmantiko shmeio einai to yliko toy ypologisth to opoio kanei ton
 kurio ogko ths doyleias.  To yliko einai to alogo poy kanei th doyleia
 enw to logismiko apla to odhgei.  To yliko twn ypologistwn einai polu
 poluploko kai mono 6 apo tis 180 xwres ston kosmo mexri twra exoyn
 epideijei thn ikanothta sxediasmou kai kataskeyhs plaketwn/ylikou
 ypologistwn. O sxediasmos kai h kataskeyh chips ypologistwn einai
 prohgmenh texnologia.  Einai mia polu sun8eth diadikasia, dapanhrh,
 apaitei megales ependuseis se ergostasia kai mhxanes paragwghs poy
 doyleuoyn me  texnologia 0.18 micron.  Se ena mikro chip silikonhs
 ekatommuria tranzistors/kyklwmata einai stena paketarismena. Etaireies
 opws oi AMD, Intel, Cyrix, Hitachi, IBM kai alles jodecan shmantiko
 ari8mo apo an8rwpoxronia gia na ginoyn kurioi ychlwn texnologiwn opws
 h mikrohlektronikh (Micro-electronics) kai h nanohlektronikh (Nano-
 electronics).  Micro shmainei (ena-ekatommyriosto toy metroy 10^-6),
 Nano  shmainei (ena-disekatommyriosto toy metroy 10^-9).  H trexoysa
 texnologia xrhsimopoiei mikrohlektronikh gurw sta 0.35 micron
 xrhsimopoiwntas agwgous aloyminioy, kai mege8h twn 0.25 micron
 xrhsimopoiwntas agwgous hlektroniwn apo xalko.  Sto kontino mas mellon
 8a xrhsimopoih8ei texnologia twn 0.10 micron me xalko kai
 nanohlektronikh gia na ftiajoyn tsipakia ypologisth. Oi agwgoi
 aloyminioy 8a antikatasta8oun apo xalko sta chips twn ypologistwn,
 ka8ws o xalkos einai kaluteros agwgos twn hlektroniwn.  Sth
 fwtoli8ografia, 8a xrhsimopoih8oun texnikes yperiwdoys aktinobolias,
 aktines X h desmhs hlektroniwn gia xarajh kyklwmatwn me mellontika
 mege8h mikrotera twn 0.15 micron.

 Se 20 xronia apo twra, ta tsip silikonhs 8a antikatasta8oun apo
 moriakous ypologistes kai biotsips poy 8a einai disekatommuria fores
 grhgorotera apo ta tsip silikonhs. Ta moria einai ena sunolo atomwn.
 Kai ta atoma einai ta mikra swmatidia poy apoteloun o,ti blepete se
 ayto ton kosmo.  Oi moriakoi ypologistes 8a xrhsimopoioun ta moria ths
 ulhs san ypergrhgoroys diakoptes on/off. Otan o diakopths einai ON
 shmainei 1, kai otan einai OFF shmainei 0. Ola ta programmata se ayton
 ton kosmo basizontai sto dyadiko susthma.

 O parakatw pinakas deixnei th proodo kai tis mellontikes taseis
 proodoy twn chips twn ypologistwn.




                           Advancement of chip capabilities in future
                          ********************************************
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | Item/Year                | 1997    | 1999    | 2001    | 2003    | 2012   | 2020    |
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | Feature size(micron)     | 0.25    | 0.18    | 0.15    | 0.13    | 0.05   |< 0.00001|
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | Wafer size(mm)           | 200     | 300     | 300     | 300     | 450    | Mol/Bio |
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | Min Operating Voltage    | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| < 0.001 |
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | Max power dissipation    | 70      | 90      | 110     | 130     | 175    | 600     |
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | On-chip frequencey (MHz) | 750     | 1,250   | 1,500   | 2,100   | 10,000 | > 50,000|
      +--------------------------+---------+---------+---------+---------+--------+---------+
      | DRAM capacity            | 256 MB  | 1 GB    | 2 GB    | 4 GB    | 256 GB | > 1000GB|
      +--------------------------+---------+---------+---------+---------+--------+---------+




 Opws blepete, to yliko einai ychlhs texnologias kai shmantiko enw to
 logismiko einai ligotero duskolh texnologia.  Ara, h kataskeyh
 ylikou/ylikwn-aga8wn einai zwtikhs shmasias gia thn e8nikh oikonomia!
 Etaireies opws oi Compaq, Dell, Sun Microsystems, HP, IBM poy
 kataskeyazoyn ypologistes einai oi kurioi syneisferontes sthn
 oikonomia ths Amerikhs shmera kai sto mellon!!

 Apo thn allh, ka8e xwra anejairetws ston kosmo anaptussei/ftiaxnei
 logismiko.  Sthn pragmatikothta, opoiosdhpote ston kosmo me ena mikro
 PC xamhlou-kostoys mporei na dhmioyrghsei ena susthma mias bashs
 dedomenwn san thn Oracle . Alla 8a toy epairne 10 xronia (o
 diakomisths ths Oracle einai peripoy 10 an8rwpo-eth doyleia).  Ena
 an8rwpo-etos einai ena atomo poy doyleuei me plhrh apasxolhsh gia ena
 oloklhro etos. An 10 an8rwpoi ergazontai gia 10 eth tote exoyn
 jodeytei 10 an8rwpo-eth.

 Baseis opws oi Oracle, Informix, Sybase, IBM DB2 (Unix) grafthkan se
 glwssa "C" kai ta ektelesima dhmioyrgh8hkan metaglwttizontas ton
 kwdika kai meta apostal8hkan stoys pelates. Oi baseis Oracle, Sybase,
 Informix einai programmata 100 % "C"!!

 Mia kai exei ginei pollh doyleia sthn PostgreSQL ta teleytaia 12
 xronia, den exei nohma janadhmioyrghsoyme apo thn arxh mia allh bash
 poy na ikanopoiei to protypo ANSI/ISO SQL. Einai megalo pleonekthma na
 xrhsimopoihsoyme ton yparxonta kwdika kai na pros8esoyme ta
 xarakthristika poy leipoyn h pros8hkes sthn PostgreSQL kai na
 arxisoyme na th xrhsimopoioume amesws.

 H PostgreSQL den einai apla mia dwrean bash alla ena kalhs poiothtas
 'Proion Internet'.  Problepetai oti h zhthsh proiontwn "Made By
 Internet" 8a ayjh8ei ek8etika mia kai einai ikano na diathrei ychlh
 poiothta, xamhlo kostos, ejairetika megalh bash xrhstwn kai atomwn poy
 anaptussoyn kwdika. Ayta ta e8nh poy de xrhsimopoioun ta proionta
 'Made By Internet' 8a xasoyn sobara thn "Epanastash World-wide
 Internet" kai 8a meinoyn polu pisw apo tis alles xwres. O logos einai
 oti to idio to "Internet" einai h megaluterh etaireia paragwghs
 logismikou se olo ton kosmo!

 2.  Alles Morfes aytou toy keimenoy

 Ayto to keimeno einai typwmeno se 10 diaforetikes morfes, onomastika -
 DVI, Postscript, Latex, LyX, GNU-info, HTML, RTF (Rich Text Format),
 Plain-text, Selides boh8eias Unix (Unix man pages) kai SGML.

 �  Mporeite na parete ayto to keimeno HOWTO san ena arxeio tar se
    morfh HTML, DVI, Postscript h SGML apo to -
    <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/>

 �  H aplh morfh keimenoy brisketai sto:
    <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO>


 �  Gia sxolia, parathrhseis, dior8wseis, enhmerwseis peri ths
    Ellhnikhs metafrashs aytou toy HOWTO, steilte email sthn Boula
    Sanida : [email protected] h ston Eyripidh Papakwsta :
    [email protected] kai enallaktika : [email protected]


 �  Metafraseis se alles glwsses opws Gallika, Germanika, Ispanika,
    Kinezika, Giapwnezika briskontai sto
    <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO> Opoiadhpote boh8eia
    gia metafrash se alles glwsses einai eyprosdekth.

    To keimeno grafthke xrhsimopoiwntas ta "ergaleia SGML" ta opoia 8a
    ta breite sto - <http://www.xs4all.nl/~cg/sgmltools/> Afou
    metaglwttisete ton kwdika 8a exete entoles opws

 �  sgml2html databasehowto.sgml     (gia na dhmioyrghsete arxeia html)

 �  sgml2rtf  databasehowto.sgml     (gia na dhmioyrghsete arxeia RTF)

 �  sgml2latex databasehowto.sgml    (gia na dhmioyrghsete arxeia
    latex)


 To keimeno brisketai sto -

 �  <http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html>

 Mporeite epishs na breite to keimeno sta parakatw mirrors sites -

 �  <http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html>

 �  <http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html>

 �  <http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.html>

 �  <http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.html>

 �  Alla mirror sites konta sas (network-address-wise) mporeite na
    breite sto <http://sunsite.unc.edu/LDP/hmirrors.html> dialejte ena
    site kai phgainete ston katalogo /LDP/HOWTO/PostgreSQL-HOWTO.html


 Gia na deite to keimeno se morfh dvi, xrhsimopoihste to programma
 xdvi. To programma xdvi brisketai sto paketo tetex-xdvi*.rpm sto
 Redhat Linux to opoio brisketai sta koympia ControlPanel |
 Applications | Publishing | TeX menu.  Gia na diabasete keimeno dvi
 dwste thn entolh -

 xdvi -geometry 80x90 howto.dvi

 kai allajte to mege8os toy para8uroy me to pontiki. Deite th selida
 boh8eias gia to xdvi.

 Gia na metakinh8eite xrhsimopoihste ta belakia, ta plhktra Page Up,
 Page Down, mporeite na xrhsimopoihsete epishs ta grammata 'f', 'd',
 'u', 'c', 'l', 'r', 'p', 'n' gia na metakinh8eite pros ta panw, katw,
 sto kentro, sthn epomenh selida, sthn prohgoumenh selida klp.

 Gia na apenergopoihsete to expert menou pathste 'x'.  Mporeite na
 diabasete arxeia postscript xrhsimopoiwntas to 'gv' (ghostview) h
 'ghostscript'.  To programma ghostscript brisketai sto paketo
 ghostscript*.rpm kai to programma gv sto paketo gv*.rpm sto Redhat
 Linux to opoio brisketai sta koympia twn menou ControlPanel |
 Applications | Graphics.  To programma gv einai polu pio filiko sto
 xrhsth apo to ghostscript.  To ghostscript kai to gv einai epishs
 dia8esima kai se alles platformes opws se OS/2, Windows 95 kai NT,
 blepete ayto to keimeno akomh kai se aytes tis platformes.


              Gia na diabasete keimeno postscript dwste thn entolh  -
                      gv howto.ps

              Gia na xrhsimopoihsete to ghostscript thn entolh -
                      ghostscript howto.ps




 PROSOXH: To keimeno ayto einai megalo, o synolikos ari8mos selidwn (se
 postscript) an typw8ei 8a einai peripoy 113 selides sta Agglika (sta
 ellhnika 8a prepei na einai perissoteres).

 Mporeite na diabasete to keimeno se morfh HTML xrhsimopoiwntas
 Netscape Navigator, Microsoft Internet explorer, Redhat Baron Web
 browser h opoiodhpote apo toys alloys 10 web browsers.

 Mporeite na diabasete thn ejodo toy se latex, LyX xrhsimopoiwntas to
 LyX, ena X-Windows grafiko programma diasundeshs me latex.

 3.  Oi nomoi ths Fysikhs efarmozontai sto logismiko!

 Se ayto to kefalaio, 8a sas deijoyme pws h episthmh paizei shmantiko
 rolo sth dhmioyrgia diaforwn antikeimenwn opws to logismiko, to
 sumpan, ta atoma, thn energeia akoma kai esas toys idioys!  Ayto to
 kefalaio 8a sas deijei epishs giati h gnwsh ths episthmhs einai polu
 shmantikh PRIN na jekinhsete na xrhsimopoieite ta proionta ths.  Ta
 antikeimena perilambanoyn o,tidhpote - gia paradeigma h PostgreSQL, o
 xronos, h maza, h energeia, oi planhtes, o hlios, to feggari, ta
 asteria, oi galajies, oi an8rwpoi klp... einai antikeimena
 dhmioyrghmata ths episthmhs.  Ayto to kefalaio perigrafei epishs pws
 oi nomoi ths episthmhs kai h statistikh eynooun ta systhmata open-
 source code opws h PostgreSQL kai to Linux.  Ka8ws h taxuthta sto
 diadiktyo ayjanetai ka8hmerina, kai to diadiktyo ginetai oloena kai
 pio sta8ero, ta systhmata open-source code gnwrizoyn grhgorh anaptyjh.
 Kai an oi statistikoi kanones kai oi nomoi ths fysikhs einai swstoi,
 ta systhmata closed source-code 8a afanistoun telika apo ton planhth.

 Oi paragrafoi poy akoloy8oun parakatw 8a sas deijoyn - "poso aperanth
 einai h episthmh, poso shmantikh einai gia ton an8rwpo kai pws epidra
 se erga logismikou opws h PostgreSQL, to Linux".

 To na anaptujete ena project opws h PostgreSQL, apaitei energeia kai
 xrono, ara h PostgreSQL einai proion energeias kai xronoy.  Mia kai h
 energeia kai o xronos mporoun na ejhgh8oun mono episthmonika, yparxei
 mia amfidromh sxesh metaju ths fysikhs kai twn ergwn logismikou opws h
 PostgreSQL, to Linux.

 Oi episthmonikoi nomoi (Fysikh) efarmozontai pantou, synexeia, se o,ti
 kanete akomh kai sta erga logismikou opws  systhmata basewn dedomenwn.
 H Fysikh efarmozetai akomh kai otan milate (hxhtika kumata), perpatate
 (tribh metaju edafoys kai pelmatos), diabazete ena biblio h grafete
 logismiko.  Polloi kladoi ths episthmhs opws h fysikh, h xhmeia klp.
 sygxwneuontai se mia eyreia perioxh, ta Ma8hmatika (epishs gnwsta kai
 san th Basilissa olwn twn Episthmwn).  Otidhpote se ayto ton kosmo
 exei ba8ies rizes sta ma8hmatika, symperilambanomenhs ths PostgreSQL.
 H PostgreSQL xrhsimopoiei th 'Monterna Algebra' ,ena polu mikro
 parakladi twn ma8hmatikwn . H 'Monterna Algebra' asxoleitai me th
 '8ewria Synolwn', th 'Sxesiakh Algebra', episthmh twn Groups, Rings,
 Collections, Sets, Unions, Intersections, Exclusions, Domains, Lists,
 klp...

 Logismiko opws h PostgreSQL yparxei shmera logw ths energeias kai toy
 xronoy.  H energeia einai ayth poy dhmiourghse ton kosmo, ton
 an8rwpino egkefalo kai polla alla pragmata! H maza kai h energeia
 einai h IDIA ONTOTHTA!  To gegonos oti h maza kai h energeia einai to
 idio pragma htan agnwsto stoys an8rwpoys 100 xronia prin!

 Oi kyceles ston an8rwpino egkefalo katanalwnoyn energeia ka8ws
 epejergazontai (paragoyn logismiko) metatrepontas th xhmikh energeia
 se 8ermikh energeia.  Akomh kai twra poy diabazete ayth thn paragrafo,
 oi kyceles ston egkefalo sas kaine benzinh kai xrhsimopoioun thn
 energeia. Gi' ayto STAMATHSTE NA DIABAZETE TWRA!  H energeia twn
 neyrwnwn (kyceles ston egkefalo) mporei na metrh8ei sta ergasthria.
 Gia paradeigma, yparxoyn polla organa opws oi "Anixneytes Yematwn" kai
 alla iatrika organa poy mporoun na metrhsoyn thn energeia poy
 katanalwnei o egkefalos.

 Ola ayta yponooun oti o an8rwpinos egkefalos einai mia 8ermodynamikh
 phgh energeias.  Epeidh o an8rwpos einai mia 8ermodynamikh phgh
 energeias, oi nomoi ths 8ermodynamikhs efarmozontai ston egkefalo kai
 etsi h 8ermodynamikh exei emmesa apotelesmata se logismiko opws h
 PostgreSQL.

 Opws se ka8e episthmh, einai adunato na xtisete opoiodhpote susthma h
 8ewria (symperilambanomenoy enos systhmatos basewn dedomenwn) poy na
 einai 100 % teleio kai xwris sfalmata.  Einai sa na kynhgate enan
 anemostrobilo , de 8a kataferoyme POTE na ftiajoyme to teleio susthma
 h 8ewria. Leptomereis ma8hmatikes ejiswseis/syzhthseis gia thn
 apodeijh ths uparjhs enos 'teleioy systhmatos' einai adunato na ginoyn
 edw ka8ws jeperna to skopo aytou toy keimenoy.

 Kai mia tetoia ma8hmatikh syzhthsh asxoleitai me ton apeiro ari8mo
 diastasewn poy yparxoyn sth fush.  Dystyxws, oi an8rwpoi mporoun na
 doyn h na niwsoyn 4 diastaseis alla ta ma8hmatika mporoun na
 ejereynhsoyn eukola kai alles diastaseis.

 Alles diastaseis einai 'apeira mikroteres' apo ta atoma kai ta idia ta
 atoma einai me th seira toys polu mikra kai to an8rwpino mati de
 mporei na ta jexwrisei!  Ta Ma8hmatika einai polu isxyra mia kai
 mporoun na analusoyn kai na ejhghsoyn th gennhsh/ 8anato olhs ths
 yfhlioy.  O kosmos mas exei sxedon mhdeniko mege8os an ton koitajete
 apo allo sumpan kai antistrofa. Ayto shmainei oti o kosmos mas den
 einai oratos (den yparxei) gia ta atoma poy briskontai se allo sumpan.
 Kai antistrofa!  8ewrhtika, mporeite na bgeite apo ton kosmo mas kai
 na tajidecete megales apostaseis (disekatommuria eth fwtos) se
 elaxisto xrono kai na janampeite ston kosmo mas se ena diaforetiko
 shmeio toy xwroxronoy!  H apostash metaju toy kosmoy mas kai twn allwn
 kosmwn einai pragmatika mhdenikos!

 Akomh kai an yparxei apeiros ari8mos diastasewn, mporoun oles na
 prokucoyn/ dhmioyrgh8oun apo ena mikro ari8mo KYRIWN diastasewn.
 Apeiros ari8mos diastasewn mporoun na syndyastoun kai na  katalhjoyn
 se kuries diastaseis.  Oi kuries diastaseis apla aporrofoun tis alles
 diastaseis xwris aytes na katastrefontai.  Oi ma8hmatikoi
 xrhsimopoioun aytes tis kuries diastaseis gia na katanohsoyn th
 gennhsh kai to 8anato toy sumpantos. O kosmos ston opoio zeite shmera
 dhmioyrgh8hke me to BIG BANG disekatommuria xronia prin (sxedon 20
 disekatommuria xronia prin) to opoio dhmioyrgh8hke apo
 allhlepidraseis atomikwn swmatidiwn allwn diastasewn.  Ligo prin to
 big bang yphrxe ena polu mikro shmeio opoy to mhkos, to platos kai to
 ucos htan MHDEN (dhladh, o kosmos mas den yphrxe ekei!!) enw yphrxe to
 ypoloipo sumpan kai oi kuries diastaseis. Ekeinh th xronikh stigmh den
 yphrxan atoma, asteria, planhtes kai galajies!  Ta atoma mesa sto swma
 sas den yphrxan ekei!  Exoyn ginei, loipon, tosa polla pragmata PRIN
 na gennh8eite!

 To Big bang kai epomenws kai h gennhsh toy kosmoy mas proklh8hke apo
 liga atoma kuriwn diastasewn. KAPOIOS (kati;) prokalese th syntribh
 elaxistwn polu mikrwn atomwn allwn diastasewn me apotelesma th
 dhmioyrgia toy kosmoy mas, kai gennh8hkan nees diastaseis xronoy,
 mhkoys, platoys, ucoys ! Blepoyme to xeri kapoioy se ayth th
 diadikasia. Ayth h diadikasia den einai kai polu katanohth apo ton
 an8rwpo.

 O an8rwpos prospa8ei na dhmioyrghsei enan allo kosmo sto ergasthrio
 prosomoiwnontas to gegonos big bang (brisketai ypo kataskeyh enas
 terastios epitaxynths sthn Eyrwph, allh mia kataskeyh sto Ntalas, h
 Amerikh stamathse logw perikopwn ston proupologismo). Yparxoyn atoma
 allwn diastasewn, opws exoyme ki emeis atoma ston diko mas kosmo.
 8ewrhtika, mporeite na dhmioyrghsete/paragete apeiro ari8mo kosmwn!
 Ayth h diadikasia einai antistrepth, dhladh o kosmos mas mporei na
 syrriknw8ei se merika atoma allwn diastasewn!  Einai paromoio me to na
 gennh8hkate apo duo mikroskopikes kyceles oi opoies 8a sygkroystoun
 gia na dhmioyrghsoyn mia mono kycelh.  Ayth h monh mikroskopikh
 kycelida diaire8hke kai pollaplasiasthke se 6 trisekatommuria
 kycelides mexri na ginei enas an8rwpos ucoys 6 podia (dhladh eseis!).
 Yparxoyn merikes omoiothtes metaju an8rwpoy kai sumpantos, to sumpan
 gennietai kai argotera pe8ainei opws kai oi an8rwpoi. Mia kai einai
 adunath mia TELEIA katastash (opws kai h APOLYTWS MH TELEIA
 katastash), oi kosmoi san toys dikous mas genniountai kai pe8ainoyn
 argotera me mia kyklikh diadikasia. ALLA den yparxei TELEIOS 8anatos,
 mono metasxhmatismos epitrepetai apo thn episthmh!  O kosmos mas
 megalwnei me taxutato ry8mo, den einai statikos, anti8eta einai polu
 dynamikos.  Aytos o kosmos 8a synexisei na megalwnei wspoy na
 paremblh8ei kati poy 8a katastrecei ton kosmo mas efarmozontas
 dynameis me ejwterikes diastaseis poy 8a aporrofhsoyn kai 8a
 ejafanisoyn ton kosmo mas!  Yparxoyn duo pi8anothtes - na apomakryn8ei
 h maza apo ton kosmo mas mesw twn maurwn trypwn (argh diadikasia), h
 na proste8ei kai allh maza ston kosmo mas mesw twn asprwn trypwn
 (grhgorh diadikasia megalhs sugkroyshs).  Mporei na yparxoyn
 ekatommuria kosmoi alla ligoi einai aytoi poy dhmioyrgh8hkan apo
 kuries diastaseis. Den exete ftiaxtei mono apo atoma aytou toy kosmoy
 alla kai apo atoma allwn diastasewn!  Stis maures trupes ta atoma kai
 ta swmatidia toy kosmoy mas menoyn egklwbismena kai metasxhmatizontai
 kai metatrepontai teleiws se swmatidia allwn diastasewn! Sto kentro
 mias maurhs trupas o xronos, to platos kai to ucos einai mhden! Kai h
 maurh trupa einai h porta E3ODOY/EISODOY pros kai apo alloys kosmoys.
 Portes EISODOY/E3ODOY pros alloys kosmoys mporoun na anoijoyn pantou,
 akomh kai mesa sto swma sas!  Mporei na yparxei apeiros ari8mos
 xrwmatwn, glwsswn ypologisth, sxediwn tsip ypologisth kai 8ewries alla
 DEN MPOREI na yparjei ENA MONO TELEIO xrwma, glwssa ypologisth, sxedio
 h susthma! Ayto poy mporeite na exete einai mono ena SXEDON TELEIO
 xrwma (euros kumatos), susthma, bash dedomenwn h 8ewria! H fush einai
 opws ena Kaleidoskopio.

 Syndyazontas thn energeia ekatommyriwn an8rwpwn se olo ton kosmo mesw
 internet, einai dynato na epiteyx8ei ena SXEDON TELEIO susthma
 (symperilambanomenoy enos systhmatos basewn dedomenwn). H energeia toy
 ka8e an8rwpoy atomika einai elaxisth, alla diasyndeontas ena megalo
 ari8mo an8rwpwn, h synolikh energeia 8a einai terastia gia na
 dhmioyrghsei ena sxedon teleio susthma.  Oi an8rwpoi einai onta me
 periorismenh energeia kai apo8emata, kai polu syxna se aytous
 ofeilontai la8h apo apla mexri kai polu sobara.  Epeidh h tash mas gia
 la8h poikillei se ka8e an8rwpo analoga me tis idiaiteres
 epidejiothtes, th sygkekrimenh empeiria poy exei o ka8enas kai tis
 sygkyries ths sygkekrimenhs stigmhs, h anakalych kai h elattwsh twn
 la8wn logismikou (bugs) poy dhmioyrgountai apo kapoio an8rwpo
 dieykolunetai me th sygkentrwsh pollwn ejypnwn an8rwpwn-myalwn gia na
 antimetwpisoyn to sygkekrimeno problhma.  Perissotera atoma
 synepagetai perissoteres an8rwpowres gia kwdika kai thn antistoixh
 leitoyrgia toy.

 Einai jeka8aro oti to internet mporei na diasyndesei ena terastio
 ari8mo an8rwpwn, opoy oloi mazi dia8etoyn polu energeia kai xrono. Me
 to syndyasmo toys mporoun na parax8oun proionta logismikou ychloterhs
 poiothtas se polu ligotero xrono se sugkrish me emporikes etaireies.
 Akomh kai megales etaireies opws h Microsoft, h IBM de mporoun na
 yperisxusoyn kai na agnohsoyn toys nomoys ths Fysikhs alla 8a
 YPOTAX8OYN telika se aytous!

 Shmera, yparxoyn toses polles baseis dedomenwn se olo ton kosmo poy
 stoxeuoyn mono stis prodiagrafes ANSI/ISO SQL. Oi an8rwpoi den prepei
 na xaramizoyn to xrono toys gia na dhmioyrghsoyn tosa polla
 PAROMOIA/OLOIDIA paketa logismikou  enw yparxoyn tosoi alloi tomeis
 ths episthmhs poy xreiazontai prosoxh.  To symperasma einai to ejhs :
 ejaitias twn nomwn ths episthmhs, ta 'anoixta systhmata phgaioy
 kwdika' opws h PostgreSQL, to Linux 8a einai panta polu kalutera apo
 ta 'kleista systhmata phgaioy kwdika' kai ayto einai dynato na
 apodeixtei kai episthmonika.


 4.  Ti einai h  PostgreSQL ;

 H PostgreSQL ekdosh 6.4 einai mia dwrean bash, me thn opoia sas
 dinetai olos o phgaios kwdikas kai einai ena Susthma
 Antikeimenostrafhs-Sxesiakh Bashs Dedomenwn sxedon symbath me
 (plhsiazei olo kai perissotero) me to ANSI SQL1998,92,89 kai trexei se
 diaforetikes platformes hardware kai Leitoyrgika systhmata.


              Merikes fores bgainoyn se kykloforia ektaktes dior8wseis, mpalwmata (patches) gia dior8wseis
              la8wn meta thn ekdosh GA PostgreSQL. Mporeite na efarmosete ta proairetika patches
              analoga me tis anagkes ths efarmoghs sas. Akoloy8hste ta parakatw
              bhmata gia na efarmosete ta patches -
              Phgainete ston katalogo poy brisketai o kwdikas ths postgresql
                      cd /usr/src/postgresql6.3.1
                      patch -p0 < patchfile
                      make clean
                      make
              Deite epishs th selida boh8eias grafontas 'man patch'




 Ta arxeia gia patch briskontai sto

 �  PostgreSQL patches :  <ftp://ftp.postgresql.org/pub/patches>

 O apolytos skopos kai o telikos stoxos ths PostgreSQL einai ginei 100
 % symbath me thn ANSI/ISO SQL kai na ginei epishs h noumero ENA
 Anoikth Genikh Bash ston kosmo. H PostgreSQL epishs 8a odhghsei,
 diey8unei, elegjei, parakoloy8hsei kai ypagoreusei to mellon ths
 ANSI/ISO SQL.  Ayto giati, h ylopoihsh kai oi idees ginontai prwta
 sthn PostgreSQL kai epeita enswmatwnontai sthn ANSI/ISO SQL.

 O Informix Universal server (ekdo8hke to 1997) basizetai se
 prohgoumenh ekdosh ths PostgreSQL epeidh h Informix agorase thn
 Illustra Inc. kai enopoih8hke me thn Informix.  H bash Illustra htan
 plhrws basismenh sthn Postgres (prohgoumenh ekdosh ths PostgreSQL).

 H PostgreSQL einai mia epektash toy systhmatos diaxeirishs ths bashs
 dedomenwn POSTGRES, ena epomenhs genias protypo ereynas DBMS. Enw h
 PostgreSQL diathrei to dynamiko montelo dedomenwn kai toys plousioys
 tupoys dedomenwn ths POSTGRES, antika8ista thn glwssa erwthsewn
 PostQuel me ena ektetameno yposunolo ths SQL.

 H anaptyjh ths PostgreSQL ginetai apo mia omada programmatistwn sto
 Internet poy einai oloi grammenoi sth lista allhlografias anaptyjhs
 ths PostgreSQL.  Syntonisths ths omadas einai o Marc G. Fournier

 �  [email protected]

    Ayth h omada einai ypeu8ynh gia olh thn trexoysa kai mellontikh
    anaptyjh ths PostgreSQL.  Fysika, o idios o pelaths basewn
    dedomenwn einai aytos poy anaptussei thn PostgreSQL! To fortio ths
    anaptyjhs dianemetai se ena polu megalo ari8mo telikwn xrhstwn
    basewn sto internet.

 Oi syggrafeis ths PostgreSQL 1.01 einai oi Andrew Yu kai Jolly Chen.
 Polloi alloi syneiseferan se ayth th metafora, to testarisma, thn
 aposfalmatwsh kai thn epektash toy kwdika. O arxikos kwdikas ths
 Postgres, ap' opoy proekyce h PostgreSQL, htan h prospa8eia pollwn
 apofoitwn spoydastwn, metaptyxiakwn, kai proswpikou programmatistwn
 poy doulecan katw apo thn epiblech toy Ka8hghth Michael Stonebraker
 sto Panepisthmio ths Kalifornia, sto Berkeley.

 To arxiko onoma toy logismikou sto Berkeley htan Postgres. Otan
 proste8hke h leitoyrgikothta gia SQL to 1995, to onoma allaje se
 Postgres95. To onoma allaje pali sto telos toy 1996 se PostgreSQL.

 Ekatommuria PostgreSQL exoyn egkatasta8ei ws diakomistes basewn
 dedomenwn, Web database serverskai Application data servers. Einai
 polu proxwrhmenh, kai einai antikeimenostrafhs  sxesiakh bash
 dedomenwn (ORDBMS).

 H PostgreSQL mporei na apo8hkeusei perissoteroys tupoys dedomenwn apo
 toys paradosiakous tupoys dedomenwn opws integer, characters, klp. -
 mporeite na dhmioyrghsete toys dikous sas orismenoys tupoys,
 synarthseis, klhronomikothta klp.  H PostgreSQL trexei se Solaris,
 SunOS, HPUX, AIX, Linux, Irix, Digital Unix, BSDi,NetBSD, FreeBSD, SCO
 unix, NEXTSTEP, Unixware kai se opoiodhpote tupo Unix. H metafora ths
 se Windows 95/NT einai se ejelijh.

 �  Titlos:             PostgreSQL SQL RDBMS Database (Susthma
    Diaxeirishs Antikeimenostrafous Sxesiakhs Bashs Dedomenwn)

 �  Trexoysa ekdosh:   6.4

 �  Xronologia:      H PostgreSQL einai 12 xronwn. Anaptussetai apo to
    1985

 �  Syggrafeis:       Anaptussetai apo
    ekatommuria/panepisthmia/etaireies sto internet gia ta teleytaia 12
    xronia

    H PostgreSQL kai ta sxetika kommatia toy keimenoy ypokeintai sthn
    parakatw PNEYMATIKH IDIOKTHSIA.


      PostgreSQL Susthma Diaxeirishs Bashs Dedomenwn

      Pneymatikh Idiokthsia (c) toy panepisthmioy ths California

      Adeia gia xrhsh, antigrafh, metabolh, kai dianomh aytou toy logismiko kai ths
      tekmhriwshs toy gia opoiodhpote skopo, xwris telh, kai xwris grapth symfwnia
      parexetai, me thn proupo8esh oti to shmeiwma pneymatikhs idiokthsias kai
      ayth kai oi parakatw duo paragrafoi 8a emfanizontai se oles tis kopies.

      ME KANENAN TROPO, DEN 8A 8EWRH8EI TO PANEPISTHMIO THS KALIFORNIA NOMIKA YPEY8YNO
      GIA AMESH, EMMESH, EIDIKH, TYXAIA, H PARAGWMENH ZHMIA, SYMPERILAMANOMENHS KAI THS
      APWLEIAS KERDWN POY PROEKYYE APO THN XRHSH AYTOY TOY LOGISMIKOY KAI THS
      TEKMHRIWSHS TOY, AKOMA KAI AN TO PANEPISTHMIO THS KALIFONIA EXEI EIDOPOIH8EI GIA
      THN PI8ANOTHTA MIAS TETOIAS ZHMIAS.

      TO PANEPISTHMIO THS KALIFORNIA EIDIKA APARNEITAI KA8E EGGYSHSH, SYMPERILAMBANOMENHS,
      ALLA OXI PERIORISMENHS MONO SE AYTHN, THS YPONOOYMENHS EGGYHSHS XRHSHS, KAI XRHSHS
      GIA KAPOIO SYGKEKRIMENO SKOPO. TO LOGISMIKO POY PAREXETAI EDW EINAI SE BASH "WS EXEI"
      KAI TO PANEPISTHMIO THS KALIFORNIAS DEN EXEI YPOXREWSH GIA PAROXH SYNTHRHSHS, ENHMERWSEWN,
      EMPLOYTISMWN, H TROPOPOIHSEWN.




 5.  Pou mporw na th brw ;

 Mporeite na agorasete to CDROM Redhat Linux, Debian Linux h to
 Slackware Linux poy periexoyn hdh thn Postgresql se morfh paketoy (kai
 o phgaios kwdikas kai ta ektelesima) apo ta :

 �  Linux System Labs Web site:   <http://www.lsl.com/>  7 (U.S.
    dolaria)

 �  Cheap Bytes Inc Web site:   <http://www.cheapbytes.com/> 7 (U.S.
    dolaria)

 �  Debian Kentriko Web site :  <http://www.debian.org/vendors.html>

 O organismos PostgreSQL poyla epishs ena 'PostgreSQL CDROM' poy
 periexei olon ton phgaio kwdika kai ektelesima gia polla leitoyrgika
 systhmata Unix kai plhrh tekmhriwsh.

 �  To CDROM ths PostgreSQL 8a to breite apo to kentriko Web site ths
    sto : <http://www.postgresql.org> gia 29 (Amerikanika dolaria)

 Dianomh ths PostgreSQL mono me ektelesima:

 �  Mporeite na trejete thn PostgreSQL xwris na metaglwttisete ton
    kwdika.  Egkatasthste ta ektelesima gia Intel-Linux apo to arxeio
    <ftp://www.redhat.com/pub/contrib/i386/> postgresql-6.4.i386.rpm.
    Ayto einai ena redhat 'rpm' paketo kai periexei kai ton kwdika kai
    ta ektelesima gia thn PostgreSQL.

 �  Site me ektelesima gia Solaris, HPUX, AIX, IRIX, Linux :
    <ftp://ftp.postgresql.org/pub/bindist> An metaglwttisete ton kwdika
    gia opoiadhpote platforma, parakalw  steilte to sto site, mporei na
    einai xrhsimo gia toys ypoloipoys.

 �  ftp site : Parte ta ektelesima gia Intel-Linux apo to arxeio
    <ftp://ftp.redhat.com/pub/contrib/i386/> postgresql-6.4.i386.rpm.
    Ayto einai ena redhat 'rpm' paketo kai periexei kai ton kwdika kai
    ta ektelesima gia thn PostgreSQL.

 WWW Web sites:

 �  Kentriko Web site: <http://www.postgresql.org/>

 �  Deutero Web site: <http://logical.thought.net/postgres95/>

 �  <http://www.itm.tu-clausthal.de/mirrors/postgres95/>

 �  <http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>

 �  <http://xenium.pdi.net/PostgreSQL/>

 �  <http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>


 Ta ftp sites paroysiazontai parakatw :-

 �  Primary FTP: <ftp://ftp.postgresql.org/pub>

 �  Secondary FTP: <ftp://ftp.chicks.net/pub/postgresql>

 �  <ftp://ftp.emsi.priv.at/pub/postgres/>

 �  <ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95>

 �  <ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL>

 �  <ftp://ftp.jaist.ac.jp/pub/dbms/postgres95>

 �  <ftp://ftp.luga.or.at/pub/postgres95>

 �  <ftp://postgres95.vnet.net:/pub/postgres95>

 �  <ftp://ftpza.co.za/mirrors/postgres>

 �  <ftp://sunsite.auc.dk/pub/databases/postgresql>

 �  <ftp://ftp.task.gda.pl/pub/software/postgresql>

 �  <ftp://xenium.pdi.net/pub/PostgreSQL>



 O phgaios kwdikas ths PostgreSQL einai epishs dia8esimos se ola ta
 mirror sites toy sunsite unc (sunolo peripoy 1000 sites se olo ton
 kosmo). Brisketai epishs sth dianomh toy Red Hat Linux sto arxeio
 /pub/contrib/i386/postgresql.rpm .

 �  Gia th lista twn mirror sites phgainete sto
    <ftp://sunsite.unc.edu>

 6.  H PostgreSQL yposthrizei ejairetika megales baseis, megaluteres
 apo 200 Gig

 H apodosh twn 32-bit mhxanwn cpu 8a pesei grhgora otan to mege8os ths
 bashs jeperasei ta 5 gig. Mporeite na trejete bash twn 30 gig se mia
 32-bit cpu alla h apodosh de 8a einai kai polu entypwsiakh.  Yparxoyn
 periorismoi poy epiballontai apo to mege8os ths mnhmhs RAM (megisto 2
 gig mono), periorismoi apo ta mege8h toy systhmatos arxeiwn kai epishs
 apo to leitoyrgiko susthma.

 An xreiazetai na xrhsimopoihsete ejairetika megales baseis, sas
 symboyleuoyme na xrhsimopoihsete mhxanes twn 64-bit opws Digital Alpha
 cpu, Sun Ultra-sparc 64-bit cpu, Silicon graphics 64-bit cpu, Intel
 Merced IA-64 cpu, mhxanes HPUX 64bit, IBM 64-bit. Metaglwttiste thn
 PostgreSQL se mia 64-bit cpu kai 8a mporei na yposthrizei terasties
 baseis kai megala queries. H apodosh ths PostgreSQL gia erwthseis se
 megaloys pinakes kai baseis 8a einai polles fores taxuterh apo thn
 PostgreSQL se mhxanes me cpu 32-bit. To pleonekthma twn mhxanwn 64-bit
 einai oti h deiktodothsh toy xwroy mnhmhs einai polu megalh kai to
 leitoyrgiko susthma mporei na yposthrijei systhmata megalwn arxeiwn,
 parexei kaluterh apodosh me megales baseis, yposthrizei polu
 perissoterh mnhmh (RAM), exoyn perissoteres dynatothtes klp.

 7.  anaptussei to ais8hma empistosunhs ston pelath Pws mporw na emp�
 istey8w thn PostgreSQL ; To paketo Regression gia test

 To paketo Regression gia test (src/test/regress) perilambanetai sth
 dianomh kai afhste ton ypologisth sas na epalh8eusei tis stantar
 leitoyrgies SQL kai tis dynatothtes epektashs ths PostgreSQL.  To
 paketo gia test periexei hdh ekatontades SQL test programmata.

 8a prepei na xrhsimopoihsete th dunamh toy ypologisth gia na elegjete
 thn PostgreSQL, anti na xrhsimopoihsete th dunamh toy an8rwpinoy
 egkefaloy.  Oi ypologistes mporoun na ektelesoyn test gia to logismiko
 regression ekatommuria h akomh kai disekatommuria fores grhgorotera
 apo oti oi an8rwpoi.

 Sto prosexes mellon h taxuthta twn ypologistwn 8a einai arketa
 trisekatommuria fores grhgoroteroi apo ton an8rwpino egkefalo!

 Etsi, exei nohma na xrhsimopoihsoyme th dunamh toy ypologisth gia na
 elegxoyme logismiko.

 Mporeite na pros8esete kai alla test se periptwsh poy to xreiazeste,
 kai mporeite na ta steilete sto kentriko web site ths PostgreSQL an
 nomizete oti 8a einai xrhsimo se alloys sto internet.  To paketo
 Regression gia test enisxuei thn empistosunh toy pelath sthn
 PostgreSQL kai eykolunei th grhgorh efarmogh ths PostgreSQL se
 systhmata paragwghs.

 To paketo Regression gia test mporei na 8ewrh8ei san ena "POLY
 STA8ERO" texniko keimeno symfwnhmeno amoibaia metaju twn
 programmatistwn kai twn telikwn xrhstwn. Oi programmatistes ths
 PostgreSQL xrhsimopoioun ektetamena to paketo regression gia test kata
 thn periodo ths anaptyjhs kai epishs prin thn ekdosh toy logismikou
 sto koino gia na diasfalisoyn thn kalh poiothta.


 Oi dynatothtes ths PostgreSQL antikatroptizontai sto paketo gia test
 regression.  Se periptwsh poy mia dynatothta, suntajh h xarakthristiko
 den perilambanetai sto paketo den shmainei pws kaluptetai anagkastika
 apo thn PostgreSQL. Mporeite na to elegjete, parola ayta, eseis kai na
 enswmatwsete to test sas sto paketo.


 8.  Grafiko programma epikoinwnias (GUI FrontEnd Tool) me thn Post�
 greSQL

 H dianomh ths PostgreSQL perilambanei mia biblio8hkh se  Tcl/Tk, poy
 onomazetai 'pgTcl'. H Tcl/Tk einai ena ergaleio gia grhgorh anaptyjh
 efarmogwn kai mia polu dynath scripting glwssa.  Anaptussete mia fora
 thn efarmogh sas kai thn trexete pantou : se NT, Win 95, Linux, OS/2
 kai ola ta systhmata unix.  Tcl einai ta arxika toy 'Tool Command
 Language' kai Tk toy 'Tool Kit'. Yparxei ena oloklhrwmeno periballon
 anaptyjhs (IDE - integrated development environment) gia thn Tcl/Tk
 poy legetai SpecTcl. Koitajte gi ayto to rpm paketo sth dianomh Redhat
 linux h sto sunscript site poy dinetai parakatw.

 Synistoume thn Perl gia glwssa programmatismou mia kai einai h pio
 diadedomenh glwssa, polu isxyrh kai diati8etai gia ola ta mhxanhmata
 kai oles tis platformes leitoyrgikwn. Sas symboyleuoyme na
 xrhsimopoihsete  Perl-Tk h Perl-Qt h C++ QtEZ h C++ Lesstiff. O
 syndyasmos Perl, C kai Tk 8a ikanopoihsei tis anagkes twn perissoterwn
 projects, lambanontas ypoch to dia8esimo xrono, thn taxuthta twn
 ektelesimwn kai thn eykolia programmatismou. Shmeiwste oti ta
 programmata se Java trexoyn polu arga. Akomh kai ta programmata poy
 einai grammena se C++ trexoyn pio arga apo ta programmata poy
 grafontai se C. Ta programmata se C ektelountai taxutera apo ta
 antistoixa programmata grammena se opoiadhpote allh glwssa
 programmatismou.

 H Perl xrhsimopoieitai gia ton programmatismo toy 90 % twn internet
 scripts ston kosmo.  Etsi 8a exete mono mia glwssa, thn "Perl", gia
 oles sas tis anagkes,  se efarmoges oso kai sto internet.  Deite to
 Perl Database Interface aytou toy keimenoy sto ``''

 8a prepei na melethsete ta dynata shmeia ths Perl se sugkrish me thn
 Tcl/Tk prin jekinhsete kapoio project se Tcl.  H Tcl/TK dinetai
 synh8ws me ka8e linux cdrom. Mporeite epishs na th breite sta sites -

 �  Tcl/Tk  <http://www.scriptics.com>

 �  Antikeimenostrafes extension ths Tcl poy onomazetai INCR sto
    <http://www.tcltk.com>

 �  Visual TCL site  <http://www.neuron.com>

 �  Visual TCL Redhat rpm sto
    <ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm>

 �  <http://sunscript.sun.com/>

 �  <http://sunscript.sun.com/TclTkCore/>

 �  <ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z>

 �  Biblia anaforwn: Polla texnika biblia gia TCL/TK diati8entai sthn
    agora.


 9.  Ergaleia enos Oloklhrwmenoy Systhmatos Anaptyjhs gia PostgreSQL
 (GUI IDE)


 Koitajte ta parakatw ergaleia anaptyjhs ta opoia mporeite na
 xrhsimopoihsete se syndyasmo me odhgous ODBC/JDBC.  Aytoi einai
 paromoioi me Borland C++ Builder, Borland JBuilder.

 To Vibe einai Java kai C++ IDE (Integrated Development Environment)
 kai kerdise sthn Unix Episkophsh gia ta oloklhrwmena systhmata
 anaptyjhs ths xronias.

 �  Perissoteres plhrofories gia to Vibe sto
    <http://www.LinuxMall.com/products/00487.html>

 �  To 'QT' einai mia platforma anaptyjhs efarmogwn gia Windows95/NT
    kai Unix  <http://www.troll.no> kai to ftp site toy einai to
    <ftp://ftp.troll.no>

    Mporeite epishs na xrhsimopoihsete Borland C++ Builder, Delphi,
    Borland JBuilder, PowerBuilder se Windows95 kai na synde8eite me
    thn PostgreSQL se ena susthma unix mesw odhgwn ODBC/JDBC.

 Deite epishs to PERL Database Interface se ayto to keimeno sto ``'' H
 Perl kai C/C++ synistantai entona san epiloges glwssas gia IDE.

 Dwrean ergaleia IDE -

 Deite to CDROM ths dianomhs redhat linux.

 �  Lesstiff Mottif Tool
    <ftp://ftp.redhat.com/pub/contrib/i386/lesstiff*.rpm>

 �  FreeBuilder  <ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm>

 �  SpecTCL  <ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm>

 �  JccWarrior  <ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm>

 �  Kanchenjunga Java RAD Tool for PostgreSQL
    <http://www.man.ac.uk/~whaley/kj/kanch.html>

 �  Applixware Tool  <http://www.redhat.com>

 �  XWPE X Windows Programming Environment
    <http://www.rpi.edu/~payned/xwpe/>
    <ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm>

 �  XWB X Windows Work Bench
    <ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm>

 �  NEdit  <ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm>

 10.  Odhgoi Diasundeshs me thn PostgreSQL


 10.1.  ODBC Drivers gia thn PostgreSQL

 ODBC einai akrwnumio toy 'Open DataBase Connectivity', ena dhmofiles
 protypo gia prosbash se plhrofories apo diafores baseis apo
 diaforetikous pwlhtes. Oi efarmoges poy exoyn graftei xrhsimopoiwntas
 ODBC drivers, eggyountai oti 8a doylecoyn me diafores baseis opws
 PostgreSQL, Oracle, Sybase, Informix klp.


 �  To PostODBC exei symperilhf8ei hdh sth dianomh. Deite to kentriko
    web site  <http://www.postgresql.org>. Symperilambanetai sto CDROM
    ths PostgreSQL.


 �  <http://www.openlinksw.com> H Open Link Software Corporation
    poylaei ODBC gia PostgreSQL kai alles baseis. H Open Link dinei
    epishs dwrean ODBC (periorismeno ari8mo xrhstwn) - tsekarete to.

 �  Insight ODBC gia thn PostgreSQL
    <http://www.insightdist.com/psqlodbc> Ayto einai to epishmo site
    toy PostODBC.

 Yparxei kapoio ergo poy onomazetai FreeODBC Pack Package. Den yparxei
 s' ayto ekdosh gia PostgreSQL, isws mporeite na boh8hsete.

 �  <http://www.ids.net/~bjepson/freeODBC/> Ayth einai h dwrean ekdosh
    gia ODBC.

 10.2.  UDBC Drivers gia thn PostgreSQL

 To UDBC einai mia statikh ekdosh ODBC anejarthth apo diaxeiristes
 odhgwn (driver managers) kai yposthrijh DLL, xrhsimopoieitai gia na
 pros8etei yposthrijh apey8eias diasundeshs me bash mesa stis
 efarmoges.

 �  <http://www.openlinksw.com>H etaireia Open Link Software poyla UDBC
    gia thn PostgreSQL kai alles baseis.  H Open Link dinei epishs
    dwrean UDBC (periorismeno ari8mo xrhstwn) - tsekarete to.

 10.3.  JDBC Drivers gia thn PostgreSQL

 JDBC einai akrwnumio toy 'Java DataBase Connectivity'. H Java einai
 mia glwssa programmatismou anejarthtoy platformas poy anaptux8hke apo
 thn Sun Microsystems. Oi programmatistes Java  en8arrunontai na
 grafoyn efarmoges basewn dedomenwn xrhsimopoiwntas JDBC gia na
 dieykolunoyn th metafersimothta metaju basewn opws h PostgreSQL,
 Oracle, informix, klp. An gracete efarmogh se Java mporeite na parete
 toys odhgous JDBC gia PostgreSQL apo ta parakatw sites:

 O odhgos JDBC perilambanetai hdh sth dianomh ths PostgreSQL.


 �  <http://www.demon.co.uk/finder/postgres/index.html> Diasundesh Java
    (ths Sun) me PostgreSQL

 �  <ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz>

 �  <http://www.openlinksw.com> H etaireia Open Link Software poyla
    JDBC gia PostgreSQL kai alles baseis.  H Open Link dinei epishs
    dwrean JDBC (periorismeno ari8mo xrhstwn) - tsekarete to.

 �  JDBC UK site  <http://www.retep.org.uk/postgres>

 �  JDBC FAQ site  <http://eagle.eku.edu/tools/jdbc/faq.html>

 Ta JDBC home, guide kai FAQ briskontai sta -

 �  JDBC HOME  <http://splash.javasoft.com/jdbc>

 �  JDBC guide
    <http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc>

 �  JDBC FAQ  <http://javanese.yoyoweb.com/JDBC/FAQ.txt>


 10.4.  Java gia PostgreSQL

 Oi programmatistes Java mporei na 8ewrhsoyn ta parakatw sites polu
 xrhsima gia thn PostgreSQL.

 �  <ftp://ftp.redhat.com/pub/contrib/i386> kai deite to postgresql-
    jdbc-*.rpm

 �  <http://www.blackdown.org>

 11.  Perl Database Interface (DBI) Driver gia PostgreSQL


 11.1.  Diasundesh Perl 5 me PostgreSQL

 PERL einai akrwnumio toy 'Practical Extraction kai Report Language'.
 H Perl einai dia8esimh sxedon se ka8e leitoyrgiko kai platforma
 hardware. Mporeite na xrhsimopoihste Perl se Windows95/NT, ola ta Unix
 (Solaris, HPUX, AIX, Linux, Irix, SCO klp.), se mainframe MVS, desktop
 OS/2, OS/400, Amdahl UTS kai polla alla. H Perl trexei AKOMH kai se
 polla mh dhmofilh/genika agnwsta leitoyrgika systhmata kai ylika!!

 Etsi, mhn ekplageite an deite thn perl na trexei se polla oxi syxna
 xrhsimopoioumena leitoyrgika.

 Mporeite na fantasteite thn terastia bash xrhstwn kai programmatistwn
 se Perl.

 H diasundesh Perl me PostgreSQL perilambanetai sth dianomh ths
 PostgreSQL. Koitajte ston katalogo src/pgsql_perl5.

 �  To Email gia epikoinwnia sxetika me thn Pgsql_perl5 :
    [email protected]

 �  Allh phgh einai ta -
    <ftp://ftp.kciLink.com/pub/PostgresPerl-1.3.tar.gz>

 �  Perl Home page:  <http://www.perl.com/perl/index.html>

 �  Ekma8hsh ths Perl, cajte gia titlo Tutorial sto :
    <http://reference.perl.com/>

 �  To Perl FAQ einai sto :
    <http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Perl/>

 �  Grafiko periballon gia Perl, Perl-Qt :
    <ftp://ftp.redhat.com/pub/contrib/i386> kai cajte gia to
    PerlQt-1.06-1.i386.rpm

 �  Grafiko periballon gia Perl, Perl-Qt :
    <http://www.accessone.com/~jql/perlqt.html>

 �  Grafiko periballon gia Perl, Perl-XForms :
    <ftp://ftp.redhat.com/pub/contrib/i386> kai cajte gia to arxeio
    Xforms4Perl-0.8.4-1.i386.rpm

 �  Grafiko periballon gia Perl, Perl-Tk :
    <ftp://ftp.redhat.com/pub/contrib/i386>

 �  Perl GUIkits :  <http://reference.perl.com/query.cgi?ui>

 �  Perl Database Interfaces :
    <http://reference.perl.com/query.cgi?database>

 �  Metafrasths apo Perl se "C" :  <http://www.perl.com/CPAN-
    local/modules/by-module/B/> kai cajte gia to Compiler-a3.tar.gz

 �  Metafrasths apo Perl se kelyfos Bourne :
    <http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz>


 �  apo awk se perl a2p kai apo sed se perl s2p perilambanetai me th
    dianomh ths PERl.

 �  Deite epishs ta newsgroups gia PERL sto comp.lang.perl.*

 11.2.  Perl Database Interface DBI

 11.2.1.  TI EINAI TO DBI ;

 To parakatw einai apospasma apo thn kentrikh selida toy Perl DBI.

 To Perl Database Interface (DBI) einai ena  programmatistiko interface
 (API) se Perl gia diasundesh me baseis dedomenwn.  Oi prosdiorismoi
 toy Perl DBI API orizoyn ena sunolo apo roytines, metablhtes kai
 symbaseis poy parexoyn ena synektiko interface bashs dedomenwn
 anejarthto apo thn pragmatikh bash poy xrhsimopoieitai.  Oi
 plhrofories gia ayto to tmhma DBI prohl8e apo to keimeno 'DBI FAQ' to
 opoio exei gracei o Alligator Descartes to anaparagagame me thn adeia
 toy.

 �  Mporeite na epikoinwnhsete me ton Alligator Descartes Hermetica sto
    [email protected]


 11.2.2.  Odhgos DBI gia thn PostgreSQL - DBD-Pg-0.89

 Katebaste to DBD-Pg-0.89.tar.gz apo ta

 �  DBD-Pg-0.89 :  <http://www.perl.com/CPAN/modules/by-module/DBD/>

 �  Comprehensive Perl Archive Network CPAN  <http://www.perl.com/CPAN>

 �  Lista odhgwn DBI kai selides DBI module
    <http://www.hermetica.com/technologia/perl/DBI>

 �  Plhrofories gia to DBI 8a breite sto  <http://www.fugue.com/dbi/>

 �  Kentriko ftp site  <ftp://ftp.demon.co.uk/pub/perl/db>

 �  Diafora DBI link  <http://www-ccs.cs.umass.edu/db.html>

 �  Diafora DBI link  <http://www.odmg.org/odmg93/updates_dbarry.html>

 �  Diafora DBI link  <http://www.jcc.com/sql_stnd.html>

 �  H bash PostgreSQL  <http://www.postgresql.org>

 APAITHSEIS:


 �  - na xtisete, na testarete kai na egkatasthsete thn Perl 5
    (toylaxiston thn 5.002)

 �  - na xtisete, na testarete kai na egkatasthsete to module DBI
    (toylaxiston to 0.89)

 �  - na xtisete, na testarete kai na egkatasthsete thn PostgreSQL
    (toylaxiston thn 6.2)



 11.2.3.  Texnikh yposthrijh gia to DBI

 Parakalw steilte ta sxolia sas kai anafores la8wn sto


 �  [email protected]

 Symperilabete parakalw thn ejodo ths entolh perl -v, kai perl -V, thn
 ekdosh ths PostgreSQL, thn ekdosh toy DBD-Pg, kai thn ekdosh toy DBI
 sthn anafora la8wn.



 11.2.4.  Ti einai ta DBI, DBperl, Oraperl kai *perl;

 Opws eipe kai o Tim Bunce, o sxediasths kai syggrafeas toy DBI:

 ``To DBI einai ena programmatistiko interface (API) se Perl gia
 diasundesh me diasundesh me baseis dedomenwn. Oi prosdiorismoi toy DBI
 API orizoyn ena sunolo apo roytines, metablhtes kai symbaseis poy
 parexoyn ena synektiko interface bashs dedomenwn anejarthto apo thn
 pragmatikh bash poy xrhsimopoieitai.''

 Me apla logia, to DBI interface epitrepei stoys xrhstes na exoyn
 diafanh prosbash se pollaplous tupoys basewn. Etsi, an syndeeste thn
 Oracle, Informix, mSQL, Sybase h opoiadhpote allh bash, de xreiazetai
 na gnwrizete toys ypokeimenoys mhxanismous toy epipedoy 3GL. To API
 poy orizetai apo to DBI 8a doylecei se oloys toys tupoys basewn.

 Ena paromoio pleonekthma einai h ikanothta na synde8eite se duo baseis
 diaforetikou tupoy  mesw toy idioy perl script, px, 8elete na
 diabasete dedomena apo mia bash Oracle kai na ta eisagete se mia bash
 Informix mesa sto idio programma. To epipedo DBI sas epitrepei na to
 kanete ayto apla kai isxyra.

 DBperl einai to palio onoma gia tis prodiagrafes toy interface.
 Xrhsimopoieitai synh8ws gia na ypodhlwsei ta perl4 modules gia
 diasundesh me baseis, opws, oraperl, isqlperl, ingperl kai loipa. Ayta
 ta interfaces den eixan stantar API kai genika den yposthrizontai.

 Na mia lista apo DBperl modules, to antistoixo DBI tairi toys kai
 plhrofories yposthrijhs. Erwthseis sxetika me ton odhgo DBI 8a prepei
 na apey8unontai sth lista allhlografias dbi-users .


          Onoma Module Apaitoumenh Bash     Syggrafeas          DBI
          ------------ -----------------   ----------          ---
          Sybperl     Sybase              Michael Peppler     DBD::Sybase
                                          <[email protected]>
                                          http://www.mbay.net/~mpeppler
          Oraperl     Oracle 6 & 7        Kevin Stock         DBD::Oracle
                                          <[email protected]>
          Ingperl     Ingres              Tim Bunce &         DBD::Ingres
                                          Ted Lemon
                                          <[email protected]>
          Interperl   Interbase           Buzz Moschetti      DBD::Interbase
                                          <[email protected]>
          Uniperl     Unify 5.0           Rick Wargo          -
                                          <[email protected]>
          Pgperl      Postgres            Igor Metz           DBD::Pg
                                          <[email protected]>
          Btreeperl   NDBM                John Conover        SDBM;
                                          <[email protected]>
          Ctreeperl   C-Tree              John Conover        -
                                          <[email protected]>
          Cisamperl   Informix C-ISAM     Mathias Koerber     -
                                          <[email protected]>
          Duaperl     X.500 Directory     Eric Douglas        -
                      User Agent


 Parola ayta, merika DBI modules exoyn epipeda prosomoiwshs DBperl.
 Etsi, h DBD::Oracle erxetai me ena epipedo prosomoiwshs Oraperl, poy
 sas epitrepei na trejete klhronomika oraperl scripts xwris allages. To
 epipedo prosomoiwshs metafrazei tis klhseis toy oraperl API se klhseis
 DBI kai tis ektelei mesw toy DBI switch.

 Na enas pinakas me plhrofories gia ta epipeda prosomoiwshs :


          Module          Epipedo prosomoiwshs      Katastash
          ------          ---------------------     ------
          DBD::Oracle     Oraperl                   Oloklhrwmeno
          DBD::Informix   Isqlperl                  Ypo anaptyjh
          DBD::Sybase     Sybperl                   Doyleuei; (xreiazetai epalh8eysh )
          DBD::mSQL       Msqlperl                  Ekdo8hke peiramatika me thn
                                                    DBD::mSQL-0.61




 H prosomoiwsh Msqlperl einai mia eidikh periptwsh. To Msqlperl einai
 enas odhgos perl5 gia mSQL baseis, alla de symmorfwnetai me tis prodi�
 agrafes toy DBI.  H xrhsh apodokimazetai rhta gia xarh toy DBD::mSQL.
 Mporeite na katebasete thn Msqlperl apo th CPAN apo to:

 �  <http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl>

 11.2.5.  Prodiagrafes DBI

 Yparxoyn liges phges plhroforias gia DBI.

 �  Prodiagrafes DBI
    <http://www.hermetica.com/technologia/perl/DBI/doc/dbispec>

 Yparxoyn duo prodiagrafes dia8esimes se ayto to link, oi nees
 Proxeires (Draft) DBI prodiagrafes, ayto to keimeno allazei ka8hmerina
 ka8ws h omada anaptyjhs badizei oros ena sta8ero interface, kai oi
 palies istorikes DBperl prodiagrafes apo tis opoies anaptux8hke to
 trexon DBI interface.

 To teleytaio keimeno prepei na diabastei mono kai mono apo istoriko
 endiaferon kai na mh xrhsimopoih8ei ws egxeiridio programmatismou, h
 ws egkyro me opoiadhpote ennoia. Parola ayta, paramenei mia akomh
 xrhsimh phgh anaforas.

 Tekmhriwsh POD Ta PODs einai kommatia tekmhriwshs poy enswmatwnontai
 synh8ws se programmata perl poy tekmhriwnoyn ton kwdika ``in place'',
 parexontas ena xrhsimo boh8hma gia programmatistes kai xrhstes
 modules. To POD gia DBI kai drivers ginetai olo kai perissotero
 koinotopo, kai h tekmhriwsh gia ayta ta modules mporei na diabastei me
 tis parakatw entoles.

 Prodiagrafes DBI Ta POD gia prodiagrafes DBI mporei na diabastei me
 thn entolh:

 perldoc DBI

 Oraperl Oi xrhstes toy epipedoy prosomoiwshs Oraperl poy erxetai mazi
 me thn DBD::Oracle, mporoun na synexisoyn na diabasoyn gia to pws na
 programmatisoyn me to Oraperl plhktrologwntas:

 perldoc Oraperl

 Ayto 8a paragei ena enhmerwmeno antigrafo ths arxikhs selidas boh8eias
 oraperl, poy grafthke apo ton Kevin Stock gia perl4. To API ths
 oraperl emfanizetai kai perigrafetai ekei plhrws.
 DBD::mSQL Oi xrhstes toy DBD::mSQL module mporoun na diabasoyn gia
 merikes private functions kai idiomorfies aytou toy odhgou (driver)
 plhktrologwntas:

 perldoc DBD::mSQL

 Syxna Diatypwmenes Erwthseis (FAQ)

 To keimeno, Frequently Asked Questions einai epishs dia8esimo ws
 tekmhriwsh se POD ! Mporeite na to diabasete sto diko sas susthma,
 plhktrologwntas:

 perldoc DBI::FAQ

 Ayto mporei na einai bolikotero gia an8rwpoys poy den einai
 syndedemenoi monima h aneta, sto Internet.

 To POD genika Plhroforhsh gia th syggrafh POD, kai gia thn filosofia
 toy POD genikotera, mporei na diabastei grafontas:

 perldoc perlpod

 Xrhstes poy exoyn egkatasthsei to Tk module isws na endiaferontai na
 ma8oyn pws yparxei dia8esimos enas POD anagnwsths basismenos se Tk poy
 legetai tkpod, kai diamorfwnei POD se mia bolikh kai anagnwsimh morfh.

 ``Periplanhseis'', ``Mezedakia'' kai Parathrhseis Yparxei mia seira
 apo peristasiakes ``periplanhseis'' apo diaforoys stis listes
 allhlografias gia DBI.

 �  <http://www.hermetica.com/technologia/perl/DBI/tidbits>


 ``DBI -- The perl5 Database Interface'' Ayto einai ena ar8ro apo ton
 Alligator Descartes kai ton Tim Bunce gia th domh toy DBI.
 Dhmosieuthke sto teuxos 5 toy ``The Perl Journal''. Einai yperbolika
 kalo. Phgainete kai agoraste to periodiko. Edw poy ta leme, agoraste
 ola ta teuxh!  ``The Perl Journal''s WWW site is:

 �  <http://www.tpj.com>

 ``DBperl'' Ayto to ar8ro, to opoio dhmosieuthke sthn ekdosh Noembrioy
 toy 1996 ``Dr.  Dobbs Journal'' asxoleitai me DBperl.

 ``The Perl5 Database Interface'' Ayto einai ena biblio grammeno apo
 ton Alligator Descartes kai ekdo8hke apo toys O'Reilly kai Associates.

 Listes Allhlografias yparxoyn treis listes allhlografias gia DBI poy
 diaxeirizetai o Ted Lemon. Se oles mporeite na grafteite kai na
 jegrafteite apo to World Wide Web sth dieu8ynsh :

 �  Listes allhlografias  <http://www.fugue.com/dbi>

 Oi listes stis opoies mporoun na symmetexoyn oi xrhstes einai:

 dbi-announce Ayth h lista allhlografias mono gia anakoinwseis.  An den
 mporeite na xrhsimopoihsete thn forma ths parapanw WWW selidas,
 eggrafeite sth lista me ton akoloy8o tropo:

 �  Email: [email protected]

    me keimeno sto swma (body) toy mhnumatos 'subscribe'

 dbi-dev H lista ayth stoxeuei se xrhsh apo toys programmatistes poy
 kanoyn anaptyjh, poy syzhtane idees kai ennoies gia ta twn DBI
 interface, API kai driver.  An den mporeite na xrhsimopoihsete thn
 forma ths parapanw WWW selidas,  eggrafeite sth lista me ton akoloy8o
 tropo:

 �  Email: [email protected]

    me keimeno sto swma (body) toy mhnumatos 'subscribe'

 dbi-users Ayth h lista allhlografias einai mia lista genikwn
 syzhthsewn poy xrhsimopoieitai gia anafores sfalmatwn, syzhthsh
 problhmatwn kai genikes anazhthseis.  An den mporeite na
 xrhsimopoihsete thn forma ths parapanw WWW selidas,  eggrafeite sth
 lista me ton akoloy8o tropo:

 �  Email: [email protected]

    me keimeno sto swma (body) toy mhnumatos 'subscribe'

 Xronika/Arxeia twn Listwn Allhlografias


 �  Amerikanika Arxeia Listwn Allhlografias
    <http://outside.organic.com/mail-archives/dbi-users/>

 �  Eyrwpaika Arxeia Listwn Allhlografias    <http://www.rosat.mpe-
    garching.mpg.de/mailing-lists/PerlDB-Interest>



 11.2.6.  Problhmata Metaglwttishs h alliws "Kophke stis Ejetaseis!"

 An exete core dump, dokimaste to module Devel::CoreStack gia na
 dhmioyrghsete ena stack trace apo to core dump.  To Devel::CoreStack
 brisketai sto CPAN sto:

 �  <http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack>

 Steilte Email sth lista dbi-users to stack trace, thn ekdosh twn
 modules, ths perl, ta test poy kanate, thn ekdosh toy leitoyrgikou
 systhmatos kai opoies alles sxetikes plhrofories. Oses perissoteres
 plhrofories steilete, toso grhgorotera 8a anixneusoyn oi
 programmatistes ta problhmata. An de mas steilte tipota, tote mhn
 perimenete tipota kai apo emas.


 -->

 11.2.7.  Yposthrizetai to DBI katw apo platformes Windows 95 / NT ;

 H metafora twn DBI kai DBD::Oracle Win32 einai twra ena stantar tmhma
 toy DBI, etsi, an katebasete ekdosh toy DBI megaluterh toy 0.81 8a
 prepei na doyleuei mia xara. Mporeite na exete prosbash stis baseis
 Microsoft Access kai SQL-Server apo to DBI mesw ODBC. Mazi me to
 DBI-0.79 (kai metepeita) dinetai ena peiramatiko DBI 'epipedo
 prosomoiwshs' gia to module Win32::ODBC. Onomazetai DBI::W32ODBC.  8a
 xreiasteite to module Win32::ODBC.

 �  Win32 DBI    <http://www.hermetica.com/technologia/perl/DBI/win32>

 �  Win32 ODBC    <http://www.roth.net>







 11.2.8.  toy; Ti einai to DBM; Kai giati 8a prepei na xrhsimopoiw to
 DBI sth 8esh

 To UNIX eylogh8hke apo thn arxh me aples ``baseis'' basismenes se
 epipeda arxeia, gnwstes san susthma dbm. To dbm sas epitrepei na
 apo8hkeuete dedomena se arxeia, kai na anaktate ta dedomena grhgora
 Parolayta, ayto exei kai sobara meionekthmata.

 Kleidwma Arxeiwn (File Locking)

 Ta systhmata dbm den pareixan idiaitera isxyres dynatothtes gia
 kleidwma arxeiwn, oute kamia ikanothta gia th dior8wsh problhmatwn poy
 proekyptan apo taytoxrones eggrafes [sth bash].

 Ay8airetes Domes Dedomenwn (Arbitrary Data Structures)

 Ta systhmata dbm epitrepoyn mono mia sta8erh domh dedomenwn: zeygaria
 kleidiwn-timwn (key-value pairs). Ayth h timh mporei na einai ena
 sun8eto antikeimeno, opws ena [ C ] struct, alla to kleidi prepei na
 einai monadiko. Ayto htan megalos periorismos sth xrhsimothta twn
 systhmatwn dbm.

 Parolayta, ta systhmata dbm akoma einai xrhsima gia xrhstes me apla
 sunola dedomenwn kai periorismenoys poroys, mia kai einai grhgora,
 dynata kai ejairetika kala elegmena. Ta modules ths Perl gia thn
 prosbash se systhmata dbm exoyn enswmatw8ei twra sthn dianomh ths,
 mesw toy module AnyDBM_File.

 Perilhptika, to DBM einai mia ikanopoihtikotath lush gia (kata kanona)
 read-only baseis, h mikra kai apla sunola dedomenwn. Parolayta, gia
 perissotero isxyra kai epektasima sunola dedomenwn, xwris oute kan na
 anafer8oume kai se ajiopisto transactional locking, synistoume stoys
 xrhstes na xrhsimopoihsoyn DBI.

 11.2.9.  Yposthrizetai  < to tade xarakthristiko > sto DBI;

 8ewrwntas oti to xarakthristiko poy zhthsate einai ena mh-stantar,
 ejartwmeno apo kapoia sygkekrimenh bash, xarakthristiko, tote h
 apanthsh einai oxi.

 To DBI antanakla ena geniko API poy 8a doylecei gia tis perissoteres
 baseis, kai den parexei kamia epipleon leitoyrgikothta gia kapoia
 sygkekrimenh bash dedomenwn (database-specific functionality).

 Parolayta, oi syggrafeis twn odhgwn mporoun, an to epi8ymoun, na
 symperilaboyn hooks pros ejeidikeymenes leitoyrgies/xarakthristika
 kapoias bashs dedomenwn mesw ths me8odoy func poy orizetai sto DBI
 API. Osoi anaptussoyn scripts 8a prepei na shmeiwsoyn pws h
 leitoyrgikothta poy parexetai mesw twn me8odwn func einai api8ano na
 metafer8ei se alles baseis.


 11.2.10.  Xrhsimeuei ka8oloy to DBI gia programmatismo se CGI;

 Me mia lejh, nai! To DBI einai ejairetika xrhsimo gia programmatismo
 se CGI!  Sthn pragmatikothta, 8a tolmousa na pw oti o programmatismos
 se CGI einai mia apo tis kuries xrhseis toy DBI.

 To DBI dinei thn ikanothta stoys programmatistes CGI na enisxusoyn tis
 baseis poy exoyn WWW-fronted, pragma poy parexei stoys xrhstes th
 dynatothta na paijoyn me terasties posothtes domhmenwn dedomenwn.
 Epishs, sthn periptwsh poy ena site exei perissoterh kinhsh apo oti o
 server ths bashs dedomenwn mporei na antimetwpisei, to DBI dinei th
 dynatothta anaba8mishs toy server ths bashs dedomenwn sto paraskhnio,
 xwris allages sta cgi scripts.

 11.2.11.  Pws petyxainw taxuteroys xronoys sundeshs me DBD Oracle kai
 CGI;


 O Apache httpd diathrei mia dejamenh (pool) apo paidia toy (httpd
 children) gia na ejyphretoun tis aithseis twn clients.

 Xrhsimopoiwntas to module toy Apache mod_perl toy Doug MacEachern, o
 metafrasths ths perl (perl interpreter) enswmatwnetai sta paidia toy
 httpd.  Ta CGI, DBI, kai ta ypoloipa agaphmena sas modules mporoun na
 fortw8oun kata thn ekkinhsh ka8e paidiou (child). Ayta ta modules de
 8a janafortw8oun ean den allajoyn sto disko.

 Gia perissoteres plhrofories sxetika me ton Apache, deite to Apache
 Project's WWW site:

 �  Apache Project WWW site  <http://www.apache.org>

 �  Mod_perl module  <http://www.perl.com/cgi-
    bin/cpan_mod?module=mod_perl>


 11.2.12.  Pws epitygxanw monimes (persistent) syndeseis metaju DBI kai
 CGI

 Xrhsimopoiwntas to module Apache::DBI module toy Edmund Mergl, ta
 logins sth bash dedomenwn apo8hkeuontai kai antistoixizontai se ena
 httpd child.  An h efarmogh sas basizetai se enan mono xrhsth ths
 bashs dedomenwn, h sundesh mporei na ginetai me ka8e child. Mexri
 shmera, oi syndeseis stis baseis dedomenwn den mporoun na moirazontai
 metaju diaforetikwn paidiwn toy httpd.

 Mporeite na katebasete to Apache::DBI apo th CPAN mesw:

 �  <http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI>

 11.2.13.  to trexw apo ton httpd, apotygxanei!'' Giati; ``Otan trexw
 ena perl script apo thn grammh entolhs, doyleuei, alla otan


 Basika, enas logos gia ton opoio mporei na symbainei ayto einai oti o
 xrhsths apo ton opoio trejate to script sth grammh entolwn exei swsta
 ry8mismena  tis metablhtes toy periballontos, sthn periptwsh toy
 DBD::Oracle, metablhtes opws $ORACLE_HOME, $ORACLE_SID h TWO_TASK.

 H diergasia httpd trexei synh8ws katw apo to xrhsth nobody, pragma poy
 shmainei oti den exei ry8mismeno to periballon toy. Opoiodhpote script
 epixeirhsei na trejei katw apo aythn thn katastash 8a apotuxei
 sigoyra.

 Gia na lusete ayto to problhma, 8este to periballon gia th bash sas se
 ena mplok BEGIN ( ) sthn arxh toy script sas. Etsi 8a dior8w8ei to
 problhma.

 Paromoia, 8a prepei na elegjete to logfile me ta httpd la8h gia tyxon
 endeijeis, opws kai ta ``Idiot's Guide To Solving Perl / CGI
 Problems'' kai ``Perl CGI Programming FAQ'' gia perissoteres
 plhrofories. Einai api8ano to problhma na exei sxesh me to DBI.
 Diabaste kai ta duo ayta keimena prosektika!


 �  To ``Idiot's Guide To Solving Perl / CGI Problems'' 8a to breite
    sto: <http://www.perl.com/perl/faq/index.html>



 11.2.14.  Mporw na kanw multi-threading me to DBI;

 Mexri thn hmeromhnia aytou toy FAQ, oxi.  H perl den yposthrizei
 multi-threading. Parolayta, to multi-threading anamenetai na ginei
 meros toy pyrhna ths dianomhs ths perl sthn ekdosh 5.005, poy shmainei
 oti to DBI 8a mporei na yposthrizei multi-threading arketa suntoma
 meta ap' ayto.

 Gia na deite paradeigmata kwdika OCI gia thn Oracle poy exei multi-
 threaded entoles SELECT, phgainete sto:

 �  <http://www.hermetica.com/technologia/oracle/oci/orathreads.tar.gz>

 11.2.15.  Pws mporw na kalesw stored procedures me to DBI;

 An ypo8esoyme oti exete dhmioyrghsei mia stored procedure mesa se
 kapoia bash, px, sthn Oracle, mporeite na xrhsimopoihsete to $dbh->do
 gia na ektelesete amesa th diadikasia (procedure). Gia paradeigma,

 $dbh->do( "BEGIN someProcedure END" );

 11.2.16.  Pws mporw na parw tis times poy epistrefontai apo tis stored
 procedures me to DBI;

 8ymh8eite, omws, na kanete elegxo gia la8h!


          $sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" );
          $sth->bind_param(1, $a);
          $sth->bind_param_inout(2, \$path, 2000);
          $sth->bind_param_inout(3, \$success, 2000);
          $sth->execute;




 11.2.17.  Pws mporw na dhmioyrghsw h na katastrecw mia bash dedomenwn
 me to DBI;


 H dhmioyrgia kai diagrafh mias bashs einai ennoies polu afhrhmenes gia
 na yposthrizontai ikanopoihtika apo to DBI. Gia paradeigma, h Oracle
 den yposthrizei kan thn ennoia ths diagrafhs ths bashs! Sthn Oracle
 epishs, o diakomisths ths bashs dedomenwn (database server) einai
 oysiastika h bash, enw sthn mSQL, h diergasia toy diakomisth (server
 process) trexei mia xara xwris na exei dhmioyrgh8ei kamia bash se
 ayton. To problhma einai toso anomoio gia na to 8ijoyme.

 Gi' ayto to logo, merikoi odhgoi yposthrizoyn dhmioyrgia kai diagrafh
 basewn mesw twn private func methods. Deite thn tekmhriwsh twn odhgwn
 poy xrhsimopoieite gia na deite an yposthrizoyn ayto to mhxanismo.

 11.2.18.  Pws diaxeirizetai to DBI tis times NULL ;

 Oi times NULL sto DBI antimetwpizontai opws h timh undef. Oi times
 NULL mporoun kataxwrh8oun stis baseis ws NULL, gia paradeigma:


          $rv =
              $dbh->do( "INSERT INTO table VALUES( NULL )" );




 alla otan erwth8oun, oi times NULL 8a prepei na sygkri8oun me thn
 undef. Ayto einai stantar gia oloys toys odhgous.
 11.2.19.  Ti einai aytes oi me8odoi func (func methods);

 H me8odos func orizetai sto DBI san to shmeio eisodoy gia
 leitoyrgikothta ejartwmenh apo th bash, px, h ikanothta na
 dhmioyrghsete h na diagracete baseis. To na kalesete aytes tis
 me8odoys poy ejartwntai apo toys odhgous einai aplo, gia paradeigma,
 gia na kalesete th me8odo createDatabase poy pairnei mia parametro, 8a
 grafame:


          $rv =
              $dbh->func( 'argument', 'createDatabase' );




 Osoi anaptussoyn logismiko 8a prepei shmeiwsoyn oti oi me8odoi func
 den einai metafersimes metaju diaforetikwn basewn.

 11.2.20.  Emporikh Yposthrijh kai Ekpaideysh

 To Interface ths Perl5 gia baseis einai ena DWREAN logismiko. ERXETAI
 XWRIS KAMIA EGGYHSH OPOIOYDHPOTE EIDOYS.

 Parolayta, merikoi organismoi parexoyn eite texnikh yposthrijh eite
 programmata ekma8hshs toy DBI.

  Perl Clinic : H Perl Clinic mporei na kleisei symbolaia gia emporikh
 yposthrijh se Perl, DBI, DBD::Oracle kai Oraperl. Yposthrijh parexetai
 apo thn etaireia sthn opoia doyleuei o Tim Bunce, o syggrafeas toy
 DBI. Gia perissoteres yphresies sxetika me tis yphresies toys, deite
 to :

 �  <http://www.perl.co.uk/tpc>


 12.  Ergaleia Diaxeirishs ths PostgreSQL


 12.1.  PGACCESS - Ena grafiko ergaleio gia th diaxeirish ths Post�
 greSQL

 To PgAccess einai ena Tcl/Tk interface gia thn PostgreSQL.
 Symperilambanetai hdh sth dianomh ths PostgreSQL.  Rijte mia matia se
 ayto to web site gia neoterh ekdosh

 �  <http://www.flex.ro/pgaccess>

 �  An exete opoiodhpote sxolio, protash gia beltiwsh, mh distasete na
    steilete e-mail sto : [email protected]

 Xarakthristika toy PgAccess

 Para8yra toy PgAccess : Kentriko para8yro , dhmioyrgia pinakwn (table
 builder) , Emfanish pinakwn (erwthsewn) (table(query) view),
 dhmioyrgia erwthsewn optika (visual query builder).

 Pinakes


 �  - emfanish pinakwn, megisto 200 eggrafes (allazei apo to menou
    preferences)

 �  - allagh mege8oys sthlhs, sernontas thn ka8eth grammh (kalutera sto
    xwro toy pinaka apo oti sthn epikefalida toy pinaka)

 �  - text wrap sta kelia - apo8hkeysh ths emfanishs ka8e pinaka

 �  - import/export se ejwterika arxeia (SDF,CSV)

 �  - dynatothtes filtrarismatos (dwste ena filtro san price>3.14)

 �  - dynatothtes tajinomhshs (dwste xeirokinhta to(ta) pedia pros
    tajinomhsh)

 �  - editing in place

 �  - beltiwmeno boh8hma gia paragwgh pinakwn (table generator
    assistant)

 �  - beltiwmenes dynatothtes dior8wshs pediwn

    Erwthseis (Queries)

 �  - dhmioyrgei, dior8wnei kai apo8hkeuei "erwthseis poy ka8orizei o
    xrhsths"

 �  - apo8hkeuei erwthseis san views

 �  - ektelei erwthseis

 �  - emfanish apotelesmatwn erwthsewn tupoy select

 �  - diagrafh kai allagh onomatos erwthshs

 �  - Grafiko xtisimo erwthshs me dynatothtes drag & drop. Gia osoys
    apo esas eixate sthsei to Tcl/Tk plugin gia to Netscape Navigator,
    mporeite na to deite na doyleuei patwntas edw

    Sequences

 �  - dhmioyrgia sequences, diagrafh kai elegxos toys Synarthseis

 �  - dhmioyrgia, elegxos kai diagrafh synarthsewn se glwssa SQL

 Mellontikes ylopoihseis

 �  - sxediasmos pinakwn (pros8hkh newn pediwn, allagh onomatos, klp.)

 �  - ka8orismos synarthshs

 �  - dhmioyrgia report

 �  - basiko scripting

 An exete opoiodhpote sxolio, protash gia beltiwsh, mh distasete na
 steilete e-mail sto :


 �  [email protected]

 Perissoteres plhrofories gia th biblio8hkh libgtcl

 8a xreiasteite epishs na dhlwsete pros xrhsh th biblio8hkh diasundeshs
 PostgreSQL se Tcl san ena Tcl/Tk 'load'-able module. Onomazetai
 libpgtcl kai o phgaios kwdikas ths brisketai ston katalogo ths
 PostgreSQL /src/interfaces/libpgtcl. 8a xreiasteite idiaitera, mia
 biblio8hkh libpgtcl poy na mporei na fortw8ei apo  Tcl/Tk. Ayto einai
 diaforetiko texnika apo ena typiko PostgreSQL loadable object arxeio,
 epeidh h libpgtcl einai mia syllogh apo object arxeia. Katw apo Linux,
 onomazetai libpgtcl.so.  Mporeite na katebasete apo edw mia ekdosh hdh
 metaglwttismenh gia systhmata Linux i386. Apla antigracte to
 libpgtcl.so ston katalogo biblio8hkwn toy systhmatos (/usr/lib)kai
 jekinhste. Mia lush einai na afairesete apo ton phgaio kwdika th
 grammh poy periexei to fortwma ths libpgtcl.so kai na fortwsete th
 pgaccess.tcl oxi me wish, alla me pgwish (h wishpg) ayto to wish me to
 opoio eixe ginei link me th biblio8hkh libpgtcl.


 12.2.  Windows Interactive Query Tool gia PostgreSQL (WISQL h MPSQL)

 H MPSQL parexei stoys xrhstes ena grafiko SQL interface gia thn
 PostgresSQL.  H MPSQL einai paromoia me to SQL Worksheet ths Oracle
 kai to ergaleio erwthsewn toy Microsoft SQL Server WISQL.  Exei wraio
 grafiko interface kai istoriko entolwn. Epishs mporeite na kanete cut
 kai paste kai exei kai alla wraia xarakthristika poy beltiwnoyn thn
 paragwgikothta.

 �  <http://www.troubador.com/~keidav/index.html>

 �  Email: [email protected]

 �  <http://www.ucolick.org/~de/> sto arxeio tcl_syb/wisql.html

 �  <http://www.troubador.com/~keidav/index.html>

 �  Email: [email protected]

 12.3.  Interactive Query Tool(ISQL) gia thn PostgreSQL - Onomazetai
 PSQL

 To ISQL einai gia termatika me Character command line.  Perilambanetai
 sth dianomh, kai legetai PSQL. Moiazei polu me to ISQL ths Sybase, kai
 to SQLplus ths Oracle. Sto unix prompt dwste thn entolh 'psql' h opoia
 8a sas bgalei se psql> prompt.


      Pathste \h gia na deite th boh8eia twn entolwn.




 Polu filiko sto xrhsth kai eukolo sth xrhsh.  Mporeite na exete pros�
 bash se ayto kai apo scripts toy kelyfoys.

 12.4.  MPMGR - Ergaleio Diaxeirishs Basewn gia PostgresSQL

 To MPMGR parexei ena grafiko interface diaxeirishs ths PostgresSQL. 8a
 to breite sto

 �  <www.mutinybaysoftware.com/>

 �  Email: [email protected]

 �  <http://www.troubador.com/~keidav/index.html>

 �  Email: [email protected]

 �  <http://www.ucolick.org/~de> in file tcl_syb/wisql.html

 �  WISQL gia thn PostgreSQL  <http://www.ucolick.org/~de/Tcl/pictures>

 �  Email: [email protected]

 13.  Ry8mizontas pollapla koytia PostgreSQL se mia o8onh

 Mporeite na stoibajete ta koytia-cpu kai na synde8eite se mia o8onh
 kai na xrhsimopoihsete to diakopth gia na dialejete to host.  Ayto
 ejoikonomei xwro kai de xreiazeste polles o8ones, plhktrologia kai
 pontikia (ejoikonomeite peripoy 100 me 500 US dolaria ana set) kai
 glitwnete epishs apo thn akatastasia.

 Xrhsimopoiwntas ayth thn texnikh, mporeite na  stoibajete pollous
 PostgreSQL servers (gia anaptyjh, elegxo, paragwgh), Web servers, ftp
 servers, Intranet servers, Mail servers, News servers se ena polu chlo
 rafi. O diakopths mporei na xrhsimopoih8ei epishs gia koytia me
 Windows 95/NT h OS/2.

 Rijte mia matia sta parakatw sites:

 �  Thlefwnikes paraggelies apo thn  DataComm Warehouse Inc, se 24wrh
    bash, olh thn ebdomada, sto 1-800-328-2261. Parexoyn ka8e tupo
    ylikou H/Y  <http://www.warehouse.com>. To  4-8yro KVM switch
    (PS/2) kostizei gurw sta $89.99. Part No. DDS1354

 �  Network Technologies Inc
    <http://www.networktechinc.com/servswt.html> (120 dolaria/PC 8
    ports) to opoio exei listes gia 'Server Switches' kai 'switches
    mono gia Video '

 �  Scene Double Inc, Agglia
    <http://www.scene.demon.co.uk/qswitch.htm>

 �  Cybex corporation  <http://www.cybex.com>

 �  Raritan Inc  <http://www.raritan.com>

 �  RealStar Solutions Inc  <http://www.real-star.com/kvm.htm>

 �  Belkin Inc  <http://www.belkin.com>

 �  Better Box Communications Ltd.
    <http://www.betterbox.com/info.html>

 �  Phgainete sto plhsiestero magazi hardware kai zhthste to "Server
    Switch" gnwsto kai san "KVM Auto Switches".

 Yajte sth mhxanh anazhthshs yahoo gia na breite perissoteres etaireies
 me "Server Switches" h "KVM Switches".

 Synistatai idiaitera na exete ena unix box eidika afierwmeno gia ka8e
 PostgreSQL data-server gia kaluterh apodosh. Kamia allh
 efarmogh/diergasia den prepei na trexei se ayto to mhxanhma. Deite to
 tmhma "Epaggelmatika" stis topikes efhmerides gia topikous pwlhtes poy
 pwloun mono koytia intel, 13" monoxrwmes o8ones (o8onh polu xamhlou
 kostoys). Oi topikoi pwlhtes pwloun mono to hardware xwris Microsoft
 Windows/DOS (etsi ejoikonomeite $ 150).  De xreiazeste egxrwmh o8onh
 gia to diakomisth ths bashs dedomenwn, ka8ws mporeite na kanete
 apomakrysmenh diaxeirish (remote administration) apo egxrwmo sta8mo
 ergasias.  Parte to RedHat (h kapoia allh dianomh) Linux cdrom apo to
 -

 �  Linux System Labs Web site:   <http://www.lsl.com/>  7 (U.S.
    dolaria)

 �  Cheap Bytes Inc Web site:   <http://www.cheapbytes.com/> 7 (U.S.
    dolaria)

    Sigoyreyteite oti to yliko poy agorasate yposthrizetai apo to
    Redhat Linux. Deite to ftp site hs Redhat prin agorasete yliko, gia
    proteinomenoys SCSI adapters, kartes binteo klp.  Me $ 600 mono
    mporeite na parete ena isxyro koyti intel me Redhat Linux poy
    trexei PostgreSQL.  Xrhsimopoihste odbc/jdbc/perl/tcl gia na
    synde8eite me thn PostgreSQL apo Windows95, OS/2, Unix Motif h
    kapoio web browser (p.x. Redbaron, Opera, Netscape, 20 alloi).  (oi
    Web browsers exoyn ginei pia standard client).

 Me ayth thn idea mporeite na elegxete polla koytia cpu me mia o8onh
 kai ena plhktrologio!

 Parakatw 8a breite ena apospasma apo thn networktechnic Inc gia
 "Server Switches"

 Paraggeilete twra sto 800-742-8324 (xwris dasmous gia Amerikh)

 Gia na labete ton katalogo mas parakalw steilte Email sth dieu8ynsh:
 [email protected]

 XEIRISTEITE PERISSOTERA APO ENA PC me ena plhktrologio, o8onh kai
 pontiki Oi hlektronikoi diakoptes epitrepoyn me ena plhktrologio,
 o8onh kai pontiki na xeiris8eite 64 PC. Enswmatwmenoi mikroupologistes
 prosomoiwnoyn thn paroysia plhktrologioy, o8onhs kai pontikiou me ola
 ta prosarthmena PC 100% toy xronoy.

 Xarakthristika kai Efarmoges


 �  Plhktrologio, xeiristhrio panw sth syskeyh h thlexeiristhrio

 �  9 pin D Serial h 6 pin miniDIN yposthrijh gia pontiki

 �  5 pin DIN h 6 pin miniDIN yposthrijh plhktrologioy

 �  1600x1200 analysh o8onhs

 �  Xrhsimopoiei koina kalwdia

 �  Se Desktop kocimo h kai gia rack

 Prodiagrafes - Plhktrologio


 �  Ola ta busmata einai 8hlyka

 �  5 pin DIN h 6 pin miniDIN

 �  Mporei na ekkinei opoiadhpote stigmh opoiondhpote H/Y

 Xeiristhrio - Mprostina Koympia


 �  Synde8eite se enan H/Y me to pathma enos koympiou

 �  Krathste pathmeno opoiodhpote koympi gia perissotero apo miso
    deyterolepto kai mpeite se tropo leitoyrgias SCAN, BROADCAST h
    COMMAND

 �  Ta LEDs ypodeiknuoyn ton tropo leitoyrgias toy plhktrologioy

 �  Pathste CTRL+* kai mpeite se tropo leitoyrgias COMMAND

 �  Einai dia8esimoi oi SCAN, BROADCAST kai COMMAND tropoi leitoyrgias

 Pontiki

 * 9 pin D serial

 �  o diakopths NTI poy prosomoiwnei to seiriako pontiki ths Microsoft


 �  o 9 pin D arseniko gia pontiki

 �  o 9 pin D 8hlyko gia toys H/Y

 * 6 pin miniDIN

 �  o diakopths NTI poy prosomoiwnei to pontiki IBM PS/2

 �  o Ola ta busmata einai 8hlyka

 Kalwdiako xeiristhrio/thlekontrol


 �  Proairetiko --8a prepei na agorastei jexwrista

 �  Kanei tis doyleies toy "Xeiristhrioy - Mprostinwn Koympiwn"

 O8onh-VGA


 �  Euros 150 MHz

 �  1600X1200 analysh xwris paramorfwsh

 �  1/4la ta busmata einai 8hlyka


 14.  Efarmoges kai Ergaleia gia thn PostgreSQL

 14.1.  Glwssa 4hs genias (4GL) PostgreSQL gia efarmoges me web kai
 bash dedomenwn - Platforma anaptyjhs AppGEN

 To AppGEN mporeite na to katebasete apo to

 �  <http://www.man.ac.uk/~whaley/ag/appgen.html>

 �  <ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN>.

 To AppGEN einai mia ychlou epipedoy, tetarths genias glwssa kai
 platforma anaptyjhs efarmogwn gia thn paragwgh efarmogwn basismenwn
 sto World Wide Web (WWW). Aytes oi efarmoges typika xrhsimopoiountai
 sto internet h sto intranet enos organismou. Oi efarmoges toy AppGEN
 ylopoiountai ws C scripts poy akoloy8oun ta protypa toy Common Gateway
 Interface (CGI), ta opoia yposthrizontai apo toys perissoteroys Web
 Servers.

 Gia na xrhsimopoihsete to AppGEN 8a xreiasteite ta akoloy8a :-

 Thn PostgresSQL, susthma diaxeirishs sxesiakwn basewn dedomenwn

 Enan web server poy na yposthrizei CGI opws o HTTPD toy NSCA

 Enan metaglwttisth ansi C opws o GCC

 To AppGEN apoteleitai apo ta akoloy8a ektelesima gia Unix (Linux) :-


 �  defgen, to opoio paragei mia basikh protyph efarmogh (template
    application) apo kapoies logikes domes dedomenwn. Oi efarmoges
    mporoun na eisagoyn, enhmerwnoyn, diagrafoyn kai caxnoyn eggrafes
    sthn bash dedomenwn enw parallhla diathroun aytomata kai thn
    akeraiothta twn dedomenwn (referential integrity).


 �  appgen, o metaglwttisths AppGEN poy metaglwttizei kwdika appgen se
    ektelesimo CGI C kwdika kai keimena HTML etoima gia xrhsh se enan
    web server.


 �  dbf2sql, mia efarmogh gia metatroph arxeiwn symbatwn me dBase III
    .dbf se ektelesima SQL scripts. Ayto epitrepei se dedomena poy
    fylassontai sta perissotera paketa basewn dedomenwn gia DOS/Windows
    na metafer8oun se enan SQL server opws h PostgresSQL.

 �  Epipleon, to AppGEN parexei mia syllogh apo keimena HTML , arxeia
    GIF kai Java applets poy xrhsimopoiountai apo to susthma, kai
    fysika, opws ka8e kalo logismiko, symperilambanei kai ton plhrh
    phgaio kwdika.

 Mporeite na epikoinwnhsete me ton syggrafea, Andrew Whaley, sto

 �  [email protected]


 14.2.  WWW Web interface gia PostgresSQL - DBENGINE

 To dbengine einai ena plug 'n play Web interface gia thn PostgreSQL
 poy dhmioyrgh8hke apo ton Ingo Ciechowski.  Brisketai sto :

 �  <http://www.cis-computer.com/dbengine/ >

 Sxetika me to DBENGINE : To dbengine einai ena interface diasundeshs
 WWW kai Postgres95 poy parexei aplh prosbash se opoiadhpote bash mesa
 se liga lepta.

 To PHP 3 dinei mia glwssa poy moiazei me thn Perl sta keimena sas,
 alla oxi pragmatikh Perl enw to AppGen kai to wdb-p95 apaitoun na
 dhmioyrghsete merika arxeia ry8misewn gia ka8e mia apo tis baseis sas
 -- moiazei san na prepei prwta ap' ola na ma8ete kapoio eidos neas
 glwssas prin na jekinhsete.

 Anti8eta me ta alla ergaleia, den apaiteitai na ma8ete eidiko
 programmatismo h kapoia scripting language gia na jekinhsete na
 doyleuete me to dbengine. Den yparxei epishs kapoio arxeio ry8misewn
 gia ka8e bash, etsi de xreiazetai na ejoikeiw8eite me mia nea domh.
 Parolayta - se periptwsh poy 8elete na exete prosbash se ola ta
 xarakthristika toy dbengine 8a htan kalh idea na ma8ete th glwssa
 Perl.

 Olo to susthma mporei na ry8mistei mesw aplwn xeirismwn se mia
 pros8eth bash dedomenwn poy periexei plhrofories sxetika me to pws na
 optikopoihsete ta dedomena sas.  Mporeite epishs na orisete virtual
 Fields ta opoia ypologizontai amesws prin na emfanistoun sthn o8onh.

 Adeia To dbengine einai dwrean logismiko katw apo toys idioys oroys
 opws kai h Perl.  Diabaste thn adeia ths an den eiste sigoyroi gia ti
 mporeite h den mporeite na kanete. Se telikh analysh, ayth einai mia
 elastikoterh kai pio hpia ekdosh apo thn GNU adeia -- den ephreazei th
 doyleia sas an 8elete na "daneisteite" kati apo to dbengine h na
 sygkentrwsete kommatia apo ayto san meros enos emporikou proiontos!



 14.3.  Apache Webserver Module gia PostgreSQL - NeoSoft NeoWebScript

 O Apache einai enas polu gnwstos Web Server. Ena module diasundeshs
 PostgreSQL me ton Apache Webserver brisketai sto -

 �  <http://www.neosoft.com/neowebscript/>

 To NeoWebScript einai mia glwssa programmatismou poy epitrepei kai
 apla kai sun8eta programmata na enswmatw8oun se arxeia HTML.
 Otan zhteitai mia selida HTML poy periexei enswmatwmeno kwdika
 NeoWebScript, o webserver poy yposthrizei NeoWebScript ektelei to(a)
 enswmatwmena script(s), kai paragei mia web selida me periexomeno
 kommeno kai rammeno stis protimhseis toy programmatisth, h opoia
 dhmioyrgh8hke me ayto to programma.

 To NeoWebScript einai enas grhgoros, asfalhs, eukolos tropos gia na
 ma8ete isxyro, server-based programmatismo  ston kwdika HTML twn web
 selidwn.  Me to NeoWebScript, einai eukolo na ftiajete metrhtes
 (counters), formes gia email, gkrafiti stis selides, guest books kai
 na kratate stoixeia gia toys episkeptes, akomh kai gia enan arxario
 programmatisth.  Deite poso kala to NeoWebScript krata ta dika toy se
 sugkrish me thn PERL kai to JavaScript.

 An 8elete na egkatasthsete to NeoWebScript ston webserver sas, o
 Webmaster sas prepei na diabasei to Sysop FAQ gia na jekinhsei.  H
 "8ewria twn Leitoyrgiwn" (Theory of Operations) 8a ejhghsei pws
 doyleuei to NeoWebScript, enw h egkatastash 8a sas ka8odhghsei sta
 diafora stadia ths.  H diaxeirish asxoleitai me 8emata ru8mishs kai
 ekteleshs toy server, diaforoi elegxoi epalh8euoyn th swsth leitoyrgia
 twn NeoWebScript sas kai h aposfalmatwsh asxoleitai me ta problhmata
 toy server.

 Den yparxei kanena kostos gia th xrhsh toy NeoWebScript-2.2 gia ton
 ISP sas, to intranet sas h to extranet sas.  8a deite thn plhrh adeia
 xrhshs, otan eggrafeite gia na to katebasete, alla h oysia einai pws
 8a 8elame 99 spartarista dolaria an 8elete na to enswmatwsete sta dika
 sas proionta h na to xrhsimopoihsete se enan server emporikwn
 syndiallagwn (p.x. SSL).


 To NeoWebScript einai ena module gia ton Apache webserver poy sas
 epitrepei thn enswmatwsh ths glwssas programmatismou Tcl/Tk  stis
 istoselides sas san ena ergaleio scripting. Epinoh8hke apo ton Karl
 Lehenbauer, ton Texniko Diey8ynth ths NeoSoft, kai tekmhriw8hke,
 employtisthke kai epekta8hke apo toys programmatistes kai texnikous
 syggrafeis ths NeoSoft.

 O Apache webserver einai o pleon dhmofilhs webserver ston kosmo,
 xrhsimopoioumenos sto 68 % twn sites poy ejetasthkan.

 H Tcl/Tk einai h panisxyrh, dwrean, anejarthth platformas glwssa
 scripting, poy anaptux8hke apo ton Dr. John Ousterhout. Para8etoyme ta
 logia toy

 "H Tcl/Tk epitrepei stoys programmatistes logismikou na kanoyn thn
 doyleia deka fores taxutera apo oti xrhsimopoiwntas ergaleio8hkes
 (toolkits) basismenes se C h C++. Einai epishs mia teleia glwssa
 enswmatwshs hdh yparxontwn efarmogwn poy tis kanei pio grafikes kai
 tis ejoplizei me Internet-ikes dynatothtes".

 O Karl Lehenbauer, Idryths kai Proistamenos toy Texnikou Tmhmatos ths
 NeoSoft, apotelei meros ths anaptyjhs ths Tcl/Tk apo ta prwta ths
 stadia.  Mazi me ton Mark Diehkans, dhmiourghsan thn Extended Tcl,
 gnwsth epishs kai ws TclX h NeoSoft Tcl, ena isxyro sunolo epektasewn
 sth glwssa.  Polles apo tis basikes entoles ths Tcl proekycan apo thn
 Extended Tcl, kai meta eishx8hsan  apo ton Dr. Ousterhout sto basiko
 pyrhna ths glwssas.

 NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA


 14.4.  gia thn PostgreSQL Oi HEITML epektaseis ths HTML ston server
 kai mia glwssa 4hs genias


 To ergaleio heitml einai enas allos tropos gia na epikoinwnei h
 postgres me to world wide web.  Gia perissoteres plhrofories
 epikoinwnhste me ton


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





 �  Steilte email ston K. Helmut Emmelmann sto [email protected]

 �  H kuria selida toy Heitml  <http://www.heitml.com>

 �  H deytereuoysa selida toy Heitml  <http://www.h-e-i.deom>

 To heitml einai epektaseis ths HTML sthn pleyra toy server kai
 taytoxrona glwssa 4hs genias. Mporeite na gracete efarmoges gia to web
 se styl HTML xrhsimopoiwntas HTML-oeidh tags.

 To heitml (proferete "Xai"-TiEmEl) einai epektash toy HTML kai mia
 plhrws ejoplismenh glwssa 4hs genias poy epitrepei se efarmoges Web na
 allhlepidroun me dedomena poy fylassontai se SQL baseis, xwris na
 katafeugoyn se periploka CGI scripts.

 To heitml epekteinei to HTML sthn pleyra toy server, metatrepontas
 dynamika arxeia ".hei" se HTML kai einai loipon symbato me ka8e web
 browser. Xrhsimopoiei thn gnwrimh, euxrhsth suntajh HTML kai parexei
 plouto prokataskeyasmenwn Tags kai Biblio8hkwn gia na lusoyn 8emata
 poy mexri twra xreiazontan CGI. Opws kai to XML, to heitml parexei
 tags orismena apo ton xrhsth. Me to heitml ta orismena apo ton xrhsth
 tags metatrepontai se HTML kai stelnontai ston browser.

 To heitml stoxeuei kai stoys sxediastes HTML kai stoys epaggelmaties
 programmatistes. Oi sxediastes HTML mporoun na xrhsimopoioun heitml
 Tags gia na xtistoun dynamikes selides web, na prospelaunoyn SQL
 baseis, h na dhmioyrgoun sun8etes efarmoges web. Metrhtes, baseis me
 stoixeia kataxwrhshs, formes anazhthshs, formes email , ierarxika
 menou, ola mporoun na kataskeyastoun apla xrhsimopoiwntas
 proka8orismena HTML-oeidh Tags poy briskontai stis diafores
 Biblio8hkes.

 Gia toys programmatistes, to heitml enswmatwnei mia plhrh glwssa 4hs
 genias se HTML


                (p.x. <if>, <while>, kai <let> Tags),




 syn isxyres dynatothtes ypologismou ekfrasewn me akeraioys, pragmatik�
 ous, dyadikous, alfari8mhtikous, tuples telestes. Ta Tuples antimetwp�
 izontai opws stis monternes antikeimenostrafeis glwsses kai fylasson�
 tai se metablhtes swrwn (heap variable). Oi metablhtes ths heitml,
 symperilambanomenwn kai olwn twn sun8etwn domwn dedomenwn, fylassontai
 sto swro diathrwntas tis arxikes toys times metaju twn selidwn xrhsi�
 mopoiwntas to Session Mode.  Einai dynaton na orisete ta dika sas tags
 h tags toy periballontos kai akoma kai na epanorisete ta HTML-tags.

 To heitml kanei dynato to na


 - - - anaptyx8oun Web Sites me ena domhmeno kai spondylwto tropo, wste
 na meiw8ei drastika h ka8ysterhsh logw synthrhshs.

 - - - anaptyx8oun ejypna kai allhlepidrastika Web Sites, me
 periexomeno poy prosarmozetai dynamika stis anagkes toy xrhsth.

 - - - emfanisete to periexomeno SQL basewn xwris na xreiastei ka8oloy
 programmatismos ektos apo to na xrhsimopoihsete th biblio8hkh mas twn
 proka8orismenwn "dba" Tags.

 - - - anaptyx8oun efarmoges sun8etwn basewn dedomenwn kai katalogwn
 agorwn xrhsimopoiwntas tis Session Variables

 To heitml trexei se Linux me opoiondhpote Web Server poy xrhsimopoiei
 CGI interface, kai einai idiaitera grhgoro (apofeugontas thn
 ka8ysterhsh logw CGI) me ton APACHE Web Server xrhsimopoiwntas to
 Apache API. Mexri twra yposthrizontai oi baseis MSQL (ekdosh 1 kai 2),
 PostgreSQL (ekdosh 6), mysql, kai h yard. To heitml doyleuei epishs se
 Linux, BSDi, Solaris kai SunOS, ka8ws kai se Windows NT me CGI kai
 ISAPI kai ODBC kai Windows 95.

 To heitml (se linux) einai dwrean gia ereynhtikh, mh-emporikh kai
 idiwtikh xrhsh. Ta emporika Web Sites prepei na plhrwsoyn telh gia thn
 adeia xrhshs. H plhrhs leitoyrgikh ekdosh toy heitml einai dia8esimh
 na thn katebasete gia mia periodo dokimhs dwrean. (Shmeiwste,
 parolayta, oti ka8e Web selida ".hei" poy anaptussete 8a emfanizei ena
 mhnyma poy 8a to xarakthrizei san ekdosh gia mh emporikh xrhsh.  Meta
 thn eggrafh, 8a labete ena kleidi gia na ejafanisete ayto to mhnyma
 xwris na xreiastei na epanegkatasthsete to programma.)


 To heitml (proferetai "Xai"-TiEmEl) epekteinei kai employtizei
 shmantika th leitoyrgikothta ths HTML me ton orismo tags kai
 xarakthristika plhres programmatismou. Ayto kanei dynath thn uparjh
 efarmogwn dynamikou periexomenoy kai basewn dedomenwn mesa ston kosmo
 ths HTML, xwris CGI kai ejwteriko scripting h alles glwsses
 programmatismou.  Ayto shmainei oti eseis, san syggrafeas HTML,
 mporeite na pros8esete efarmoges stis web selides sas, xrhsimopoiwntas
 apla merika nea tags xwris CGI kai ka8oloy programmatismo.  Apo thn
 allh, san proxwrhmenos xrhsths h programmatisths mporeite na
 dhmioyrghsete isxyres programmatistikes biblio8hkes me tag. Ayth h
 proseggish kanei to heitml katallhlo toso gia toys neofertoys sthn
 HTML oso kai gia toys epaggelmaties programmatistes.  To heitml trexei
 sto web server kai dhmioyrgei dynamika HTML, etsi wste to heitml na
 einai symbato me ta stantar toy internet kai me opoiodhpote web
 browser.  Epitrepei plhrh prosbash se baseis enw prostateuei to xrhsth
 apo thn peritth polyplokothta toy CGI. To heitml exei anaptyx8ei
 sumfwna me prosfates ereynes kai se systhmata kataskeyhs
 metaglwttistwn kai dosolhciwn (transaction).

 Oi selides heitml anaptussontai opws kai oi selides HTML, me enan text
 editor h enan HTML editor, kai topo8etountai sto web server me to
 gnwsto tropo. Parolayta, oi selides mporoun na periexoyn twra dynamika
 heitml tags kai biblio8hkes tag gia prosbash se baseis.  Mporeite na
 xrhsimopoihsete ayta ta tags gia na exete prosbash se baseis, na
 dhmioyrghsete dynamiko periexomeno, na steilete emails, kai na
 dhmioyrghsete akomh isxyres efarmoges opws eggrafh se baseis kai
 systhmata agorwn.

 Oi neofertoi sthn glwssa HTML kai oi epaggelmaties programmatistes 8a
 meinoyn ekplhktoi me to poso grhgora kai eukola mporoun na sxediasoyn
 endiaferoyses efarmoges opws to Interactive Guestbook xwris na
 xreiazetai na ma8oyn na grafoyn sun8eta kai poluploka CGI scripts,
 apla kai mono xrhsimopoiwntas ta ergaleia poy parexontai me th dba
 biblio8hkh mas.

 To heitml synodeuetai apo ena megalo plh8os tag biblio8hkwn, gia na
 dhmioyrghsete guestbooks, efarmoges synthrhshs ths bashs, epektasimes
 formes erwthsewn, isxyres formes email h na domhste to web site sas
 xrhsimopoiwntas ena ierarxiko menou.  Ayta ta ergaleia einai etoima,
 apla pros8este ta antistoixa tags sto web site sas.

 San empeiros programmatisths, mporeite na kanete plhrh xrhsh ths
 heitml arxitektonikhs dynamikwn eggrafwn: To heitml den einai apla mia
 scripting glwssa me dynamikous tupoys, isxyrh ston ypologismo
 ekfrasewn, anadromikes roytines kai perasma ektetamenwn parametrwn,
 alla xarakthrizetai epishs apo dynamikes eggrafes gia thn aytomath
 diaxeirish twn dedomenwn enos session anejarthtoy mege8oys.



 14.5.  America On-line AOL Web server gia PostgreSQL

 O dwrean emporikos webserver, AOLserver ekdoshs 2.3 yposthrizei
 syndeseis sth bash PostgreSQL ekdosh 6.2.1 kai megaluterh.  Gia
 perissoteres plhrofories episkefteite to

 �  AOL Web Server  <http://www.aolserver.com>



 14.6.  Problem/Project Tracking System Application Tool gia PostgreSQL

 Brisketai sto :

 �  <http://www.homeport.org/~shevett/pts/>


 14.7.  Metatroph arxeiwn dbase dbf se PostgreSQL

 To programma dbf2msql doyleuei acoga me mSQL kai PostgreSQL. Mporeite
 na to breite sto

 �  <ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/>

 �  <ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz>

 To programma ayto grafthke apo ton Maarten Boekhold, Faculty of
 Electrical Engineering TU Delft, NL Computer Architecture and Digital
 Technique section

 �  [email protected]

 Mporeite na xrhsimopoihsete epishs python gia na diabasete arxeia dbf
 kai na ta fortwsete se mia bash dedomenwn postgres.

 �  Deite to  <http://www.python.org>


 15.  Ergaleio gia Sxediasmo/Ylopoihsh Web Basewn Dedomenwn gia thn
 PostgreSQL - EARP


 �  <http://www.oswego.edu/Earp>

 �  <ftp://ftp.oswego.edu> ston katalogo 'pub/unix/earp'.


 15.1.  Ti einai to EARP ;

 To EARP einai ena ergaleio gia sxediasmo/ylopoihsh Web basewn, poy
 ka8etai panw apo to susthma bashs dedomenwn PostgreSQL. Sth
 leitoyrgikothta toy perilambanontai:


 �  Ena susthma grafikou sxediasmou.

 �  Ena interface gia sendmail. (mporei na xeiristei ta eiserxomena kai
    ejerxomena mail)

 �  Ena ayjhmeno mhxanismo asfaleias.

 �  Enan odhgo cgi.

 15.2.  Ylopoihsh

 H kuria ylopoihsh toy EARP einai ena ektelesimo CGI poy trexei katw
 apo to daimona http kai parexei prosbash sto diakomisth ths bashs
 dedomenwn. Ola ta ergaleia sxediasmou einai xtismena mesa ston odhgo,
 o sxediasmos den ginetai para mono se web. Ta idia ta ergaleia
 apaitoun ena grafiko browser, h symbatothta twn antikeimenwn poy
 sxediazontai me ta ergaleia einai anejarthta toy tropoy ylopoihshs,
 basismena sto sxediasmo atomikwn protimhsewn.

 15.3.  Ti xreiazeste gia na trejete to EARP

 To EARP prepei na trexei pi8ana se polles platformes me ligo h ka8oloy
 metafora. Oi gnwstes platformes poy trexei einai oi ejhs:

 �  Solaris 2.5

 �  Linux 1.2.13+

 �  GNU C++

 �  PostgreSQL (ekdosh 1.01 / 1.02 )

 �  netsite server

 �  NCSA httpd


 �  GNU C++

 �  PostgreSQL (ekdosh 1.01 / 1.02 )

 �  NCSA httpd

 �  Apache httpd

    H trexoysa ekdosh (1.3) toy Earp sxediasthke panw sthn ekdosh toy
    libpq poy erxetai me thn PostgreSQL v1.01/1.02.  An xrhsimopoieite
    mia pio prosfath ekdosh ths Postgres, na perimenete pws to
    programma 8a xreiastei merikes allages gia na doylecei swsta. Sthn
    anaptyssomenh ekdosh (Earp 2.0), h yposthrijh libpq enswmatwnetai
    san module.



 15.4.  Pws doyleuei ;

 Ena apo ta kyriotera xarakthristika toy EARP einai oti xrhsimopoiei
 Antikeimenostrafh me8odo gia na paragei html selides poy epikoinwnoun
 me th bash. Oi perissoteres selides apotelountai apo diafora
 antikeimena (objects). Ka8e antikeimeno paragetai apo kapoioy tupoy
 ergaleio kai afou toy do8ei ena onoma, ta antikeimena syndeontai
 metaju toys se mia allhloyxia poy mporei na kalestei apo to ergaleio
 ths selidas (page tool). Ta antikeimena einai mporoun na
 xrhsimopoih8oun apo pollaples selides.  Yparxoyn basika ergaleia gia
 HTML, Erwthseis (Querys), na pairnete times apo tis formes, na
 formarete erwthseis kai antikeimena eisodoy, kai na syndeete metaju
 toys ta antikeimena se alla antikeimena. Perissotera ejeligmena
 ergaleia perilambanoyn to ergaleio gia mail kai to multithreaded
 ergaleio erwthsewn.

 Allo xarakthristiko toy EARP einai h ejtra asfaleia. H prosbash se
 diafores perioxes toy systhmatos EARP mporei na perioristei me
 diaforoys tropoys. Gia na eykolunei thn ejtra asfaleia, to EARP
 elegxei gia ka8e sundesh sto susthma, kai prosdiorizei se poia ids kai
 gkroyp anhkei o syndedemenos agent. H prosbash se perioxes ka8orizetai
 jexwrista, kai o syndyasmos apofasizei an epitrepetai h prosbash se
 mia sygkekrimenh perioxh toy Earp. Epipleon, o,ti apaiteitai gia na
 ylopoihsete ta xarakthristika asfaleias einai enas http server poy
 yposthrizei basiko (h kalutera) user authentication.

 15.5.  Pou 8a to brw ;

 Mporeite na katebasete to EARP me anonymous ftp apo to

 �  <ftp://ftp.oswego.edu> ston katalogo 'pub/unix/earp'.


 16.  PHP Hypertext Preprocessor, mia scripting glwssa gia thn Post�
 greSQL h opoia enswmatwnetai se html kai ekteleitai sto Server

 Ergaleio diasundeshs me to WWW

 �  <http://www.php.net>

 �  <http://www.vex.net/php>

    To palio onoma einai Professional Home Pages (PHP 3) kai to neo
    onoma einai PHP Hypertext Pre-Processor

 �  Yparxoyn Mirror sites se polles xwres opws to
    www.COUNTRYCODE.php.net

 �  <http://www.fe.de.php.net>

 �  <http://www.sk.php.net>

 �  <http://php.iquest.net/>

 Gia erwthseis, steilte e-mail sto :

 �  [email protected]

 To PHP 3 einai mia scripting glwssa gia thn PostgreSQL h opoia
 enswmatwnetai se html kai ekteleitai sto Server.  Sas epitrepei na
 grafete apla scripts sta arxeia .HTML paromoia me thn JavaScript, mono
 poy anti8eta me thn JavaScript, to PHP 3 den ejartatai apo to browser.
 To JavaScript einai mia glwssa h opoia enswmatwnetai se html kai
 trexei sto client-meros enw to PHP 3 ekteleitai sto Server. To PHP 3
 einai paromoio sthn sullhch me to proion ths Netscape LiveWire Pro. An
 exete ta apaitoumena xrhmata, kai trexete ton emporiko Server ths
 Netscape kai exete ena apo ta yposthrizomena leitoyrgika systhmata,
 isws 8a prepei na rijete mia matia sto LiveWire Pro.  An sas aresei to
 dwrean, taxutata anaptyssomeno logismiko poy erxetai me olo ton phgaio
 kwdika pi8ana na sas aresei to PHP 3.

 16.1.  Kuria xarakthristika

 Yposthrijh stantar CGI, FastCGI kai Apache module.  San ena stantar
 programma CGI, to PHP 3 mporei na egkatasta8ei se opoiadhpote mhxanh
 Unix kai na trejei se opoiodhpote Unix web server.  Me thn yposthrijh
 toy neoy stantar FastCGI, to PHP 3 exei to pleonekthma twn beltiwsewn
 sthn taxuthta poy ofeilontai se ayto to mhxanismo.  San Apache module,
 to PHP 3 ginetai ejairetika isxyro kai tromaktika grhgorh enallaktikh
 toy programmatismou se CGI.


 �  Katagrafh twn prosbasewn (Access Logging) Me th dynatothta
    katagrafhs twn prosbasewn toy PHP 3, oi xrhstes mporoun na
    synthrhsoyn to diko toys metrhth kai katagrafea prosbasewn (hit
    counting and logging). De xrhsimopoiei me kanena tropo ta kentrika
    arxeia prosbashs sto susthma, kai parexei parakolou8hsh prosbasewn
    se pragmatiko xrono.  To Log Viewer Script parexei mia suntomh
    perilhch twn prosbasewn se ena sunolo selidwn gia ka8e jexwristo
    xrhsth. Epipleon, to paketo mporei na ry8mistei wste na paragei ena
    footer se ka8e selida to opoio deixnei plhrofories sxetika me thn
    prosbash. Deite to telos ayths ths selidas gia ena paradeigma se
    ayta.

 �  Elegxos prosbasewn Mia enswmatwmenh o8onh, basismenh sto web,
    xeirizetai tis ry8miseis gia ton elegxo twn prosbasewn. Einai
    dynato na dhmioyrghsete kanones gia oles h kapoies apo tis web
    selides poy exei kapoio sygkekrimeno atomo, to opoio 8etei
    diaforoys periorismous gia to poios mporei na blepei aytes tis
    selides kai pws 8a tis blepei. Oi selides mporei na prostateuontai
    me kwdiko, na einai plhrws apagoreymenes, na einai apenergopoihmenh
    h katagrafh (logging disabled) kai akomh perissotera basismena sto
    domain toy client, browser,th dieu8ynsh e-mail h akomh kai to
    sxetiko keimeno.

 �  Yposthrijh gia Postgres H Postgres einai ena ejeligmeno dwrean
    RDBMS. To PHP 3 yposthrizei thn enswmatwsh Postgres95 kai
    PostgresSQL SQL erwthsewn katey8eian mesa se arxeia .html.


 �  Yposthrijh RFC-1867 Apostolh/Anebasma Arxeiwn (File Upload) To
    Upload arxeiwn einai ena neo xarakthristiko sto Netscape 2.0.
    Epitrepei stoys xrhstes na steiloyn (upload) ta arxeia toys sto web
    server. To PHP 3 parexei to pragmatiko Mime decoding gia na to
    kanei ayto na doylecei kai epishs parexei to plaisio gia na kanete
    kati xrhsimo me to arxeio poy steilate, molos to labei o server.

 �  HTTP-based authentication control To PHP 3 mporei na xrhsimopoih8ei
    gia na dhmioyrghsei mhxanismous authentication epi paraggelia,
    basismenoys se HTTP, gia ton Apache web server.

 �  Metablhtes, Pinakes (arrays), Sysxetistikoi pinakes (Associative
    Arrays) To PHP 3 yposthrizei metablhtes tupwn (typed variables),
    pinakes kai akomh kai Perl-oeideis sysxetistikous pinakes
    (associative arrays). Ola ayta mporoun na pernoun apo th mia web
    selida sthn allh xrhsimopoiwntas tis me8odoys twn formwn, GET h
    POST.

 �  Conditionals, While Loops To PHP 3 yposthrizei mia glwssa scripting
    me ola ta xarakthristika ths C.  Mporeite na exete syn8hkes
    if/then/elseif/else/endif opws kai while loops kai dhlwseis
    switch/case gia na perigracei th logikh roh toy pws 8a emfanizetai
    h html selida.

 �  Extended Regular Expressions Ta Regular expressions
    xrhsimopoiountai polu gia taytopoihsh (pattern matching),
    antikatasthseis twn pattern kai geniko xeirismo alfari8mhtikwn. To
    PHP 3 yposthrizei oloys toys koinous telestes kanonikwn ekfrasewn.

 �  Raw HTTP Header Control H dynatothta na kanoyme tis web selides na
    stelnoyn eidika tropopoihmenes epikefalides HTTP analoga me kapoies
    syn8hkes einai aparaithto gia sxediasmo web sites ychlou epipedoy.
    Syxnh xrhsh aytou, einai h apostolh mias topo8esias: URL header gia
    anakateu8ynsh toy pelath poy ekane thn klhsh pros allo URL. Mporei
    na xrhsimopoih8ei epishs gia na apenergopoihsoyme to caching h na
    epejergastoume thn teleytaia epikefalida enhmerwshs.

 �  Dhmioyrgia GIF eikonas epi topoy/ston aera (On-the-fly) To PHP 3
    yposthrizei th GD biblio8hkh eikonwn toy Thomas Boutell h opoia sas
    dinei th dynatothta na dhmioyrghsete GIF eikones epi topoy.

 �  Yposthrijh ISP "Safe Mode" To PHP 3 yposthrizei to monadiko "Safe
    Mode" to opoio kanei asfales to na exete pollous xrhstes na trexoyn
    PHP scripts ston idio server.

 �  Einai dwrean!  Kai to teliko oysiastiko xarakthristiko. To paketo
    einai entelws dwrean.  Brisketai katw apo thn adeia GPL h opoia sas
    epitrepei na xrhsimopoihsete to logismiko gia opoiodhpote skopo,
    emporiko h opoiondhpote allo. Deite to keimeno ths dhmosias adeias
    GNU gia perissoteres leptomereies.

 16.2.  Anagnwrish/Eyxaristies

 * Megala kommatia aytou toy kwdika anaptux8hkan sto kai gia to
 Panepisthmio toy Toronto. Polles eyxaristies ston Lee Oattes toy
 Tmhmatos Anaptyjhs Diktuwn toy panepisthmioy gia tis synexeis
 epoikodomhtikes kritikes toy.

 * O kwdikas yposthrijhs ths PostgreSQL grafthke apo ton Adam Sussman

 �  [email protected]

 * Anari8mhtoi alloi, boh8hsan sto na elegx8ei kai na aposfalmatw8ei to
 paketo.

 16.3.  PHP 3 - Suntomo Istoriko

 To PHP jekinhse thn zwh toy ws cgi kwdikas epikalychs (cgi wrapper)
 grammenos se Perl.  Den proorizotan gia tipota pera apo proswpikh
 xrhsh.  To onoma toy prwtoy aytou paketoy htan Personal Home Page
 Tools, kai argotera egine Personal Home Page Construction Kit.

 Grafthke ena ergaleio gia na enswmatwnei eukola erwthseis SQL se web
 selides. Htan basika ena akoma CGI wrapper poy metefraze erwthseis SQL
 kai ekane thn dhmioyrgia formwn kai pinakwn apo tis erwthseis mia
 eukolh ypo8esh. To ergaleio ayto onomasthke FI (Form Interpreter).

 To PHP/FI ekdosh 2.0 einai ena eniaio programma, ej'oloklhroy
 janagrammeno, poy apotelei ton syndyasmo twn duo parapanw paketwn.
 Exei twra pia ejelix8ei se shmeio poy einai mia aplh programmatistikh
 glwssa enswmatwmenh se arxeia HTML. To arxiko akrwnumio, PHP, emeine.
 Den einai kan antiproswpeytiko pia. To PHP/FI xrhsimopoieitai
 perissotero apo oloklhra web sites shmera, para gia mikres
 egkatastaseis Proswpikwn Selidwn (Personal Home Page). Me opoio onoma,
 ejaleifei thn anagkh gia ta polyari8ma mikra Perl cgi programmata,
 epitrepontas sas na balete mikra scripts apey8eias sta HTML arxeia
 sas. Ayto epitaxunei thn olikh taxuthta twn web pages sas, mia poy h
 ka8ysterhsh toy klwnismou (forking) ths Perl se pollapla antitypa exei
 ejaleif8ei. Kanei epishs eykoloterh thn diaxeirish megalwn web sites
 topo8etwntas ola ta systatika mias web page se ena mono html arxeio.
 Enswmatwnontas yposthrijh gia diafores baseis, kanei thn anaptyjh
 selidwn-me-dynatothtes-xrhshs-bashs tetrimmenh. Polloi briskoyn thn
 enswmatwmenh fush toy programmatos polu eykoloterh para to na
 prospa8oun na dhmioyrgoun jexwrista arxeia HTML kai CGI.

 Kata th diarkeia ayths ths tekmhriwshs, ka8e anafora sto PHP, FI h sto
 PHP/FI milaei gia to idio pragma. Oi diafora metaju toy PHP kai toy FI
 einai mono 8ema antilhchs.  Kai ta duo xtizontai apo ton kwdika ths
 idias dianomhs. Twra to PHP/FI metonomasthke se PHP 3.

 16.4.  Ti mporw na kanw, loipon, me to PHP/FI ;

 To prwto pragma poy 8a parathrhsete an trejete mia selida mesw toy
 PHP/FI einai oti pros8etei ena footer me plhrofories sxetika me ton
 ari8mo prosbasewn sth selida sas (an exete metaglwttisei thn katagrafh
 prosbasewn sto ektelesimo).  Ayto einai ena polu mikro deigma toy ti
 mporei na kanei gia sas to PHP/FI.  Paizei ton ejisoy shmantiko rolo
 toy metafrasth cgi se formes, apo ekei bgainei kai to FI meros toy
 onomatos. Gia paradeigma, an dhmioyrghsete mia forma se mia apo tis
 web selides sas, xreiazeste kati gia na epejergastei thn plhroforia se
 ayth th forma.  Akomh kai an apla 8elete na perasete plhroforia se mia
 allh selida, 8a prepei na xrhsimopoihsete ena programma cgi gia na to
 kanete ayto. To PHP/FI kanei ejairetika eukolo to na parete dedomena
 apo mia forma kai na kanete kati me ayta.

 16.5.  Ena aplo paradeigma

 As ypo8esoyme oti exete mia forma:


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




 To arxeio display.html 8a mporouse na periexei kati san to parakatw:


      < ?echo "Hi $ name, you are $ age years old!<p>" >




 Einai toso aplo! To PHP/FI dhmioyrgei aytomata mia metablhth gia ka8e
 input field sth forma sas. Mporeite tote na xrhsimopoihsete aytes tis
 metablhtes sto arxeio ACTION URL.

 To epomeno bhma afou exete katalabei pws na xrhsimopoieite tis
 metablhtes einai na jekinhsete na paizete me merika tags logikhs rohs
 stis selides sas.  Gia paradeigma, an 8elate na emfanisete diaforetika
 mhnumata basismena se kati poy eisagei o xrhsths, 8a xrhsimopoiousate
 th logikh if/else.  Sto parapanw paradeigma, mporoume na emfanisoyme
 diaforetika pragmata me bash thn hlikia poy edwse o xrhsths allazontas
 to arxeio display.html ws ejhs:


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




 To PHP/FI parexei mia polu isxyrh scripting glwssa poy 8a kanei polu
 perissotera ap' oti kanoyn ta parapanw apla paradeigmata. Deite to
 tmhma sto "PHP/FI Script Language" gia perissoteres plhrofories.

 Mporeite na ka8orisete epishs sto PHP/FI poios epitrepetai na exei
 prosbash stis selides sas.  Ayto epitygxanetai me mia enswmatwmenh
 o8onh ru8mishs. Me ayth 8a mporousate gia paradeigma na ka8orisete oti
 mono ta atoma apo sygkekrimena domains 8a mporoun na doyn tis selides
 sas, h 8a mporousate na dhmioyrghsete ena kanona poy 8a prostateye
 merikes selides sas me kwdiko. Deite to tmhma "Elegxos prosbasewn" gia
 perissoteres plhrofories.

 To PHP/FI einai epishs ikano na dexetai uploads arxeiwn apo
 opoiodhpote web browser symbato me RFC-1867. Ayto to xarakthristiko
 epitrepei se an8rwpoys na anebasoyn kai text kai binary arxeia. Me ton
 elegxo prosbasewn toy PHP/FI kai tis logikes synarthseis, exete plhrh
 elegxo panw sto poios epitrepetai na anebazei (upload) arxeia kai ti
 mporei na kanei me to arxeio afou to anebasei. Deite to tmhma "File
 Upload" gia perissoteres plhrofories.

 To PHP/FI yposthrizei to paketo bashs dedomenwn PostgreSQL.
 Yposthrizei enswmatwmenes SQL erwthseis sta .HTML arxeia sas. Deite to
 antistoixo tmhma sthn "Yposthrijh ths PostgreSQL" gia perissoteres
 plhrofories.

 To PHP/FI yposthrizei epishs kai to  paketo bashs dedomenwn  mysql.
 Yposthrizei enswmatwmenes SQL erwthseis sta .HTML arxeia sas. Deite to
 antistoixo tmhma sthn "Yposthrijh ths mysql" gia perissoteres
 plhrofories.

 16.6.  CGI Redirection


 16.6.1.  Shmeiwseis gia ton Apache 1.0.x

 Enas kalos tropos na trejete to PHP/FI einai xrhsimopoiwntas ena cgi
 redirection module me ton Apache server. Parakalw shmeiwste oti de
 xreiazetai na anhsyxeite gia modules anakateu8ynshs an xrhsimopoieite
 thn ekdosh toy Apache module toy PHP/FI.  Yparxoyn duo apo ayta ta
 modules anakateu8ynshs dia8esima. Ena apo ayta anaptux8hke apo ton
 Dave Andersen

 �  [email protected]

    kai einai dia8esimo sto

 �  <ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c>

    kai to allo erxetai paketo me ton Apache kai legetai mod_actions.c.
    Ayta ta modules einai ejairetika paromoia. Diaferoyn elafra sth
    xrhsh toys. Kai ta duo exoyn testaristei          kai doyleuoyn me
    to PHP/FI.

 Deite thn tekmhriwsh toy Apache gia to pws mporeite na pros8esete ena
 module.  Genika, pros8etete to onoma toy module se ena arxeio poy
 onomazetai Configuration.  H grammh poy prepei na pros8esete an 8elete
 na xrhsimopoihsete to module mod_actions einai:

 Module action_module mod_actions.o

 An xrhsimopoieite to module mod_cgi_redirect.c pros8este ayth th
 grammh:

 Module cgi_redirect_module mod_cgi_redirect.o


 Sth synexeia, metaglwttiste to httpd kai egkatasthste to. Gia na
 ry8misete to cgi redirection xreiazetai eite na dhmioyrghsete ena neo
 tupo mime sto arxeio sas mime.types eite na xrhsimopoihsete thn entolh
 AddType sto arxeio sas srm.conf gia na pros8esete ton  mime tupo. Gia
 na pros8esete ton tupo mime 8a prepei na exete kati san to parakatw:


           application/x-httpd-php phtml




 An xrhsimopoieite to module mod_actions.c, xreiazetai na pros8esete
 thn parakatw grammh sto arxeio sas srm.conf :


           Action application/x-httpd-php /cgi-bin/php.cgi




 An xrhsimopoieite to mod_cgi_redirect.c 8a prepei na pros8esete thn
 parakatw grammh sto arxeio srm.conf :


           CgiRedirect application/x-httpd-php /cgi-bin/php.cgi




 Mhn xrhsimopoihsete taytoxrona kai ta duo mod_actions.c kai
 mod_cgi_redirect.c.

 Afou exete egkatasthsei ena apo ta cgi redirection modules kai ta
 ry8misete swsta, 8a mporeite na prosdiorisete oti 8elete ena arxeio na
 ginei parsed apo to php/fi apla allazontas to extension toy arxeioy se
 .phtml.  Epipleon, an pros8esete ena index.phtml sth grammh
 DirectoryIndex toy arxeioy sas srm.conf, tote h top-level selida ston
 katalogo 8a ginei aytomata parsed apo to php an to index arxeio
 onomazetai index.phtml.

 16.6.2.  Netscape HTTPD

 Mporeite na anakatey8unete aytomata tis aithseis gia arxeia me
 sygkekrimenh katalhjh arxeioy  wste na ta xeiristei to PHP/FI me th
 xrhsh toy Netscape Server CGI Redirection module. Ayto to module einai
 dia8esimo sto "File Archives" sth selida toy PHP/FI. To arxeio README
 poy yparxei mesa sto paketo ejhgei ka8ara pws na to ry8misete gia
 xrhsh me to PHP/FI.

 16.6.3.  NCSA HTTPD

 O NCSA den yposthrizei pros to parwn modules, kai etsi gia na kanoyme
 anakateu8ynsh cgi me ton server ayton, 8a xreiasteite na tropopoihsete
 ton kwdika toy server sas.  Mia dior8wsh/mpalwma (patch) poy to kanei
 gia ton NCSA 1.5 diati8etai sta arxeia toy site toy PHP/FI.

 16.7.  Trexontas to PHP/FI apo th grammh entolwn

 An xtisete th CGI ekdosh toy PHP/FI, mporeite na to xrhsimopoihsete
 apo th grammh entolwn apla grafontas: php.cgi filename opoy to
 filename einai to arxeio poy 8elete na kanete parse. Mporeite na
 dhmioyrghsete epishs standalone PHP/FI scripts grafontas sthn prwth
 grammh toy script sas to ejhs:


     #!/usr/local/bin/php.cgi -q




 To "-q" apagoreuei thn ektupwsh twn HTTP headers. Mporeite na afhsete
 ejw ayth thn epilogh an 8elete.

 17.  Diasundesh me PostgreSQL mesw Python

 O Python einai mia scripting glwssa, antikeimenostrafhs, se morfh
 metafrasth (interpreted).  Enas aplos sth xrhsh (eukolh suntajh, aples
 kai profaneis dhlwseis) kai exei polles epektaseis gia thn dhmioyrgia
 grafikwn diasyndesewn (GUIs), epikoinwnia me to WWW, klp. Enas ejypnos
 web browser (tupoy HotJava) brisketai se anaptyjh (Noembrios. 1995)
 kai ayto 8a anoijei stoys programmatistes polles portes. O python
 einai pneymatikhs idiokthsias toy Stichting S Mathematisch Centrum,
 Amsterdam. The Neverlands kai einai eleu8erhs anadianomhs.

 Yposthrizei dynamiko fortwma antikeimenwn, klasewn, modules, kai
 ejairesewn (exceptions).  Profanhs einai h pros8hkh diasyndesewn me
 nees biblio8hkes mesw kwdika C, pragma poy kanei ton Python eukola
 katallhlo gia idiomorfes ry8miseis.

 O Python einai mia  scripting glwssa ychlou epipedoy me X interface.
 O Python dianemetai me ta Linux cdroms poy perilambanoyn ta
 perissotero stantar Python modules, mazi me modules gia diasundesh me
 to sunolo Tix widget gia thn Tk.

 To PyGreSQL einai ena python interface gia thn PostgreSQL. Enswmatwnei
 thn biblio8hkh erwthsewn PostgreSQL gia na epitrepei thn eukolh xrhsh
 twn panisxyrwn dynatothtwn ths PostgresSQL mesa apo Python scripts.
 To PyGreSQL grafthke apo ton D'Arcy J.M. Cain kai ton Pascal Andre.


 �  Neo site ths PyGreSQL  <http://www.druid.net/pygresql/>

 �  Synthreitai apo ton D'Arcy at  <http://www.druid.net/~darcy/>

 �  To palio site einai sto
    <ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.README >

 �  D'Arcy J.M. Cain [email protected]

 �  Pascal Andre [email protected]

 �  Pascal Andre [email protected]




 17.1.  Pou mporw na brw to PyGres ;

 Ta home sites twn diaforetikwn paketwn einai:

 �  Python
    <ftp://ftp.python.org:/pub/www.python.org/1.5/python1.5b2.tar.gz>

 �  PyGreSQL  <ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>

 �  Old site
    <ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0b.tar.gz
    >

    8a prepei na cajete na breite kapoio mirror site konta sthn perioxh
    sas. Anafer8eite sta plhroforiaka arxeia  gia to pou 8a breite ayta
    ta sites. To PyGres95 8a prepei na brisketai stoys katalogoys
    contrib twn sites twn Python kai PostgreSQL.

 17.2.  Plhrofories kai yposthrijh

 An xreiazeste perissoteres plhrofories gia ayta ta paketa,
 episkefteite parakalw ta web sites toys:


 �  Python :      <http://www.python.org/>

 �  PostgreSQL :
    <http://epoch.cs.berkeley.edu:8000/postgres95/index.html>

 �  PyGreSQL  <ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>

 �  Old site PyGreSQL :
    <http://www.via.ecp.fr/via/products/pygres.html>

 Gia yposthrijh :


 �  Lista allhlografias gia PyGreSQL. Mporeite na eggrafeite stelnontas
    mhnyma sto [email protected] me thn grammh "subscribe pygresql
    name@domain" sto swma toy mhnumatos antika8istwntas to
    "name@domain" me thn dikh sas hlektronikh dieu8ynsh allhlografias.

 �  Newsgroup for Python :     newsgroup comp.lang.python

 �  PyGreSQL :   epikoinwnhste me ton Andre sto [email protected] gia
    anafores sfalmatwn, idewn, sxoleiwn

 18.  Epikoinwnia metaju PostgreSQL kai WWW - WDB-P95


 18.1.  Sxetika me to wdb-p95

 WDB-P95 - Ena Web interface gia baseis PostgreSQL apo ton J. Douglas
 Dunlop Brisketai sto

 �  Neo WDB apo ton J Rowe brisketai sto
    <http://www.lava.net/beowulf/programming/wdb>

 �  Nees ekdoseis toy WWW-WDB sto  <http://www.eol.ists.ca/~dunlop/wdb-
    p95/>

 �  Gia erwthseis h gia eggrafh stis Listes Allhlografias,
    epikoinwnhste me ton [email protected]

 Einai mia tropopoihmenh ekdosh toy wdb-1.3a2 poy parexei mia sundesh
 sto WWW gia thn PostgreSQL. Ayth h ekdosh apaitei epishs ena Browser
 ikano na xeirizetai pinakes HTML gia thn ejodo se pinakes (tabular
 output). Ayto den apaiteitai apo to arxiko wdb kai mporei na
 epanafer8ei sthn palia morfh toy sxetika eukola.

 Mporeite na dokimasete ta CASI Tape kai Image Query. Mporeite na
 rijete mia grhgorh matia sto Form Definition File (FDF) poy
 xrhsimopoihsa gia na ftiajw ta CASI Tape kai Image Query epishs, poy
 perilambanei ena JOIN 2 pinakwn.

 Ayth h ekdosh periexei ola ta aparaithta arxeia gia thn egkatastash
 kai ektelesh toy WDB-P95 san diasundesh me tis PostgreSQL baseis sas.
 H metafora toy systhmatos se allh bash 8a prepei na einai sxetika
 eukolh - ypo thn proupo8esh pws yposthrizei stantar SQL kai exei
 interface se Perl.

 18.2.  Einai aparaithto o diakomisths ths PostgreSQL, to pgperl, kai
 to httpd na einai ston idio host;

 Oxi - o diakomisths ths PostgreSQL diakomisths de xreiazetai na einai
 sto idio host. To WDB-P95 epeidh kaleitai apo ton http daimona, prepei
 na einai sto idio host - kai ka8ws to WDB-P95 grafthke gia na
 xrhsimopoiei to Pg.pm - to pgperl prepei na einai sto idio host
 epishs.  To Pgperl grafthke xrhsimopoiwntas th biblio8hkh libpq, etsi
 mporei na exei prosbash se opoiodhpote diakomisth PostgreSQL
 opoydhpote sto diktyo, opws opoiosdhpote allos pelaths PostgreSQL.
 Opws fainetai parakatw

 (WWW Client (Netscape)) => (HTTP Server (NCSA's http) + WDB-P95 +
 pgperl + libpq)=> (PostgreSQL server)

 Oi paren8eseis () anaparistoun mhxanhmata.


 Ka8e mhxanhma mporei na einai diaforetikou tupoy : NT, SUN, HP, ...
 alla xreiazeste th biblio8hkh diasundeshs libpq gia ton tupo
 mhxanhmatos poy skopeuete na xrhsimopoihsete to WDB-P95, gia na
 metaglwttisete to pgperl. (To susthma sxediasthke gia na xrhsimopoiei
 HTML pinakes gi' ayto einai protimoteros enas prosfatos WWW client).


 19.  Programmatistikes diasyndeseis  gia "C", "C++", ESQL/C kai
 Dyadikoi Telestes  gia thn PostgreSQL


 19.1.  Diasundesh glwssas "C" me thn PostgreSQL

 Symperilambanetai sth dianomh kai onomazetai 'libpq'. Einai paromoio
 me ta Oracle OCI, Sybase DB-lib kai tis biblio8hkes Informix CLI .


 19.2.  Interface glwssas "C++" gia thn  PostgreSQL

 Symperilambanetai sth dianomh kai onomazetai 'libpq++'.


 19.3.  ESQL/C gia PostgreSQL

 O 'Enswmatwmenos prometaglwttisths C' gia thn PostgreSQL, ESQL/C einai
 opws to Oracle Pro*C, kai to Informix ESQL/C. To PostgreSQL ESQL/C
 einai ena programmatistiko periballon diasundeshs (API) meSQL, poy
 epitrepei ston programmatisth C na dhmioyrgei eidikes efarmoges me
 dynatothtes diaxeirishs ths bashs dedomenwn. Sas epitrepei na
 xrhsimopoieite mia glwssa triths geneas me thn opoia eisaste
 ejoikeiwmenos kai na ekmetalleueste parallhla kai ta pleonekthmata ths
 Domhmenhs Glwssas Erwthsewn (SQL).

 To ESQL/C apoteleitai apo ta parakatw kommatia logismikou:

 �  Tis biblio8hkes ESQL/C me synarthseis C poy dinoyn prosbash pros
    ton diakomisth ths bashs dedomenwn (database server).

 �  Ta arxeia epikefalidwn toy ESQL/C  poy dinoyn toys orismous gia tis
    domes dedomenwn, tis sta8eres, kai makroentoles xrhsimes gia to
    programma ESQL/C.

 �  O proepejergasths ESQL/C, einai enas proepejergasths phgaioy kwdika
    poy metatrepei ena C arxeio poy periexei entoles SQL se ena
    ektelesimo arxeio.

    Brisketai sto

 �  H ESQL/C gia thn PostgreSQL perilambanetai stis diafores dianomes.

 �  To kurio site einai  <ftp://ftp.lysator.liu.se/pub/linus>

 �  Email : [email protected]



 19.4.  Dyadikoi Telestes gia thn PostgreSQL

 Oi dyadikoi telestes grafthkan apo ton Nicolas Moldavsky

 �  [email protected]

 Oi "C" synarthseis poy ylopoioun toys dyadikous telestes (AND, OR,
 XOR, symplhrwma ws pros 2) se pgsql. Mporeite na ta katebasete me
 anonymous FTP apo to


 �  <ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz>

 Perilambanetai Makefile gia Linux.

 20.  Japanese Kanji Kwdikas gia thn PostgreSQL

 Brisketai sto parakatw site

 �  <ftp://ftp.sra.co.jp/pub/cmd/postgres/>

 21.  Metafora ths PostgreSQL se Windows 95/Windows NT

 H metafora sta Windows 95/Windows NT einai se ejelijh.  H metafora
 ginetai xrhsimopoiwntas to gcc kai to gmake gia Win NT/95. Gia na
 metaglwttisoyme ton phgaio kwdika se win32 xrhsimopoioume to programma
 gnu-win32.  To GNU gcc einai dia8esimo gia win32. Phgainete sto site -

 �  <http://www.cygnus.com/misc/gnu-win32>

    kai katebaste to arxeio cdk.exe (ayto-aposympiezomeno arxeio gia
    gnu-win32)

 H metafora mporei epishs na ginei xrhsimopoiwntas to akoloy8o ergaleio
 "Unix-Emulator on NT" apo to

 �  <http://www.softway.com>

 22.  Listes allhlografias


 22.1.  Apokthste ena dwrean logariasmo e-mail

 Elegjte tis dwrean prosfores - apokthste dwrean logariasmous e-mail
 apo ta

 �  Yahoo  <http://www.yahoo.com> klikarete sto e-mail

 �  Lycos  <http://www.lycos.com> klikarete stoys neoys logariasmous e-
    mail (new email accounts)

 �  hotmail  <http://www.hotmail.com> klikarete stoys neoys
    logariasmous e-mail (new email accounts)

    Grafteite sth lista allhlografias ths PostgreSQL kai to Yahoo sas
    dinei thn epipleon dynatothta na dhmioyrghsete ena jexwristo fakelo
    gia ta e-mails ths PostgreSQL, etsi wste ta na mhn anakatwnontai me
    ta alla proswpika sas e-mail. Epilejte to menou Email- > Options- >
    Filters kai dialejte jexwristo fakelo gia email.  Me ayto to
    logariasmo e-mail mporeite na pairnete h na stelnete mail apo
    opoydhpote ston kosmo efoson exete prosbash se web selida.

 An exete kapoio allo e-mail, mporeite na xrhsimopoihsete thn epilogh
 "Mail Filters" gia na lambanete aytomata ta mails ths PostgreSQL se
 jexwristo fakelo. Me ayto ton tropo ta mails sas einai kalutera
 organwmena kai apofeugete kai to anakatema toys.

 22.2.  Agglikh Lista Allhlografias

 Deite tis Listes Allhlografias sthn kentrikh selida sto web sto :

 �  <http://www.postgresql.org/>

 �  Erwthseis mesw Email sto: [email protected]

 �  Developers [email protected]

 �  Port specific questions [email protected]

 �  Documentation questions [email protected]

    8a labete apanthseis mesw e-mail se ligotero apo mia mera!!

 Mporeite na grafteite epishs se listes allhlografias.  Deite epishs to
 parapanw tmhma 'Apokthste ena dwrean logariasmo e-mail'.  Gia na
 grafteite h na jegrafteite apo mia lista, steilte mail sta

 �  [email protected]

 �  [email protected]

 �  [email protected]

 �  [email protected]

    To kyriws tmhma (body) toy mhnumatos 8a periexei mono thn akoloy8h
    grammh

 subscribe

 (h)

 unsubscribe

 22.3.  Arxeio ths Listas Allhlografias

 Krateitai arxeio twn listwn allhlografias se html morfh stis parakatw
 diey8unseis -

 �  Dia8esimh lista me bash tis diey8unseis mesw MHonarc kai WWW sto
    <http://www.postgresql.org/mhonarc/pgsql-questions>

 �  <ftp://ftp.postgresql.org> ston katalogo /pub/majordomo

 22.4.  Ispanikh Lista Allhlografias

 Yparxei twra kai mia "anepishmh" lista gia thn postgreSQL sta
 ispanika.  Deite epishs to parapanw tmhma 'Dwrean Logariasmos gia na
 organwsete ta e-mails ths PostgreSQL' .  Gia na eggrafeite, prepei na
 steilete ena mhnyma sto:

 �  [email protected]

    To kyriws tmhma (body) toy mhnumatos 8a periexei mono thn akoloy8h
    grammh:

 inscripcion pgsql-ayuda

 23.  Tekmhriwsh kai Bibliografia


 23.1.  Odhgoi ekma8hshs kai Egxeiridia

 Ta parakatw symperilambanontai sth dianomh ths PostgreSQL se morfh
 postscript kai se unix selides boh8eias (man-pages).  An exete
 prosbash sto internet, mporeite na breite ta keimena poy anaferontai
 parakatw sto  <http://www.postgresql.org/docs>


 �  "Odhgos Egkatastashs"

 �  "Odhgos xrhshs" gia thn PostgreSQL

 �  "Odhgos anaptyjhs-ylopoihshs" me leptomereies gia tis eswterikes
    leitoyrgies ths PostgreSQL.

 �  Online egxeiridia.

 �  Online egxeiridia se HTML morfh.

 �  Epishs, egxeiridia se morfh Postscript gia ektupwsh.

 23.2.  Online Tekmhriwsh


 �  Lista kai perigrafh twn proka8orismenwn tupwn dedomenwn kai
    telestwn


      Einai tmhma twn entolwn PSQL sthn ekdosh 6.4.




 �  Lista twn yposthrizomenwn SQL lejewn kleidia (keywords)


      Yparxei ena script ston katalogo /tools gia na to kanete ayto




 �  Listes twn yposthrizomenwn entolwn -


      Xrhsimopoihste thn entolh psql \h




 �  Basikes ennoies sxesiakhs bashs dedomenwn gia PostgreSQL
    (ylopoihsh) kai arketa online paradeigmata (erwthseis) -


      Koitajte sta regression tests sto src/test. Ekei 8a breite toys katalogoys
      regress/sql kai suite/*.sql.




 �  Odhgos ekma8hshs gia thn PostgreSQL.


      8a breite SQL scripts gia ekma8hsh ths SQL ston katalogo src/tutorial




 Deite epishs to "Odhgos ekma8hshs SQL gia arxarioys" sto Appendix B
 aytou toy keimenoy ``''

 23.3.  Xrhsimh Bibliografia Anaforas


 �  "Understanding the New SQL: A Complete Guide" - apo toys Jim Melton
    kai Alan R.Simon


      To Morgan Kaufman Publisher einai ena apo ta kalutera biblia gia SQL. Asxoleitai me thn SQL92.




 �  "A Guide to THE SQL STANDARD" - apo ton C.J.Date


      H etaireia Addison-Wesley Publishing exei epishs polu kala biblia. Polu dhmofilh biblia gia SQL.




 �  SQL - The Standard Handbook,  Noembrios 1992


      Stephen Cannan kai 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" (6th Edition),
    Addison-Wesley, 1995, ISBN 0-201-82458-2


      Ayto to biblio einai h Biblos ths Diaxeirishs Systhmatwn basewn Dedomenwn.
      Periexei plhrofories gia kanonikopoihsh, SQL, recovery, concurrency, asfaleia,
      integrity, kai extensions sto arxiko sxesiako montelo, trexonta 8emata
      opws client/server systhmata kai Antikeimenostrafh montela. Polles
      anafores symperilambanontai gia osoys 8eloyn na ma8oyn perissotera. To synistoume stoys perissoteroys xrhstes.




 �  Stefan Stanczyk, "Theory kai Practice of Relational Databases", UCL
    Press Ltd, 1990, ISBN 1-857-28232-9


 Periexei leptomereies me 8ewria sxesiakwn basewn, sxesiakh algebra, calculus
 kai kanonikopoihsh. Alla den kaluptei 8emata toy pragmatikou kosmoy kai paradeigmata pio sun8eta. To synistoume stoys perissoteroys xrhstes.




 �  "The Practical SQL Handbook" Trith Ekdosh, Addison Wesley
    Developers Press ISBN 0-201-44787-8


      To synistoume stoys perissoteroys xrhstes.




 �  Michael Stonebraker, "Readings in Database Systems", Morgan
    Kaufmann, 1988, ISBN 0-934613-65-6


      To biblio einai mia syllogh apo xartia poy exoyn dhmosieytei ola ta xronia sxetika me baseis. Den einai gia ton aplo xrhsth alla einai mia kalh anafora gia proxwrhmenoys (metaptyxiakous) foithtes h programmatistes systhmatwn basewn dedomenwn.




 �  C.J.Date, "Relational Database - Selected Readings", Addison-
    Wesley, 1986, ISBN 0-201-14196-5


      To biblio einai mia syllogh apo xartia poy exoyn dhmosieytei ola ta xronia sxetika me baseis. Den einai gia ton aplo xrhsth alla einai mia kalh anafora gia proxwrhmenoys (metaptyxiakous) foithtes h programmatistes systhmatwn basewn dedomenwn.




 �  Nick Ryan kai Dan Smith, "Database Systems Engineering",
    International Thomson Computer Press, 1995, ISBN 1-85032-115-9


      Ayto to biblio exei leptomereies gia me8odoys prosbashs, kai texnikes apo8hkeyshs.




 �  Bipin C. Desai, "An introduction to Database Systems", West
    Publishing Co., 1990, ISBN 0-314-66771-7


      Den einai gia ton aplo xrhsth alla einai mia kalh anafora gia proxwrhmenoys (metaptyxiakous) foithtes h programmatistes systhmatwn basewn dedomenwn.




 �  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 kai
    Applying Database"


 Technology
 QED kai John Wiley
 1991




 �  Michael Gorman "Enterprise Database for a Client/Server
    Environment" QED kai John Wiley


      Paroysiazei tis apaithseis gia na ftiajete client/server efarmoges basewn
      mesw repository metamontelwn  kai ths xrhshs ANSI stantar SQL
      1993




 Ekatontades alloi titloi einai dia8esimoi gia SQL ! Koitajte sta
 bibliopwleia.

 23.4.  Keimena prodiagrafwn ANSI/ISO SQL  - SQL 1992, SQL 1998

 Mporeite na breite keimena prodiagrafwn ANSI/ISO SQL  sta parakatw
 sites -

 �  <http://www.naiua.org/std-orgs.html>

 �  <http://www.ansi.org/docs> kai klikarete sto arxeio cat_c.html kai
    cajte gia "Database SQL"

 �  SQL92 standard  <http://www.jcc.com> kai klikarete sto arxeio
    sql_stnd.html

 �  ANSI/ISO SQL prodiagrafes
    <http://www.contrib.andrew.cmu.edu/~shadow/sql.html> Edw 8a breite
    egxeiridio gia SQL.

 23.5.  Suntajh ANSI/ISO SQL 1992

 Deite to Appendix A aytou toy keimenoy ``''

 23.6.  Suntajh ANSI/ISO SQL 1998

 Oi prodiagrafes SQL 1998 (SQL 3) einai akomh ypo anaptyjh.  Deite to
 'Electronic Access to the SQL3 Working Draft' aytou toy keimenoy sto
 ``''

 23.7.  Odhgos ekma8hshs SQL gia arxarioys

 Deite to  Appendix B aytou toy keimenoy ``''

 23.8.  Proswrinh epektash (extension) sto SQL92


 �  Keimeno gia proswrinh epektash SQL-92
    <ftp://FTP.cs.arizona.edu/tsql/tsql2/>

 �  Proswrines prodiagrafes SQL-3
    <ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/>

 O katalogos periexei tis prodiagrafes ths glwssas gia thn proswrinh
 epektash sth stantar glwssa SQL-92. Ayth h nea glwssa onomazetai
 TSQL2.


 Oi prodiagrafes ths glwssas poy paroysiazontai edw einai h telikh
 ekdosh ths glwssas.

 H allhlografia mporei na stalei ston proedro toy TSQL2 Language Design
 Committee, Richard T.Snodgrass, Department of Computer Science,
 University of Arizona, Tucson, AZ 85721,

 �  [email protected]

    Oi 8ygatrikes kai oi diey8unseis e-mail twn melwn toy TSQL2
    Language Design Committee mporoun na bre8oun se jexwristo tmhma sto
    telos twn prodiagrafwn ths glwssas.

 Ta periexomena aytou toy katalogoy einai opws paroysiazontai parakatw.

 spec.dvi,.ps    Prodiagrafes Glwssas TSQL2, ekdo8hke to Septembrio toy
 1994

 bookspec.ps     Prodiagrafes ths Glwssas TSQL2, opws emfanisthkan sto
 biblio TSQL2, poy ekdo8hke to Septembrio toy 1995 (deite parakatw).

 sql3            allagh twn protasewn poy ypoblh8hkan stis epitropes
 ANSI kai ISO SQL3.

 Mazi me tis prodiagrafes ths glwssas exei sysxetistei mia syllogh apo
 sxolia poy aforoun se apofaseis sxediasmou, paroxh paradeigmatwn, kai
 apoceis gia to pws mporei na ylopoih8ei h glwssa. Ayta ta sxolia htan
 arxika protaseis sthn epitroph toy TSQL2 Language Design. Twra
 ejyphretoun ena sygkekrimeno skopo: na parexoyn paradeigmata toy oti
 exei ftiaxtei, w8hsoyn tis polles apofaseis poy par8hkan kata to
 sxediasmo ths glwssas, kai na sygkrinoyn thn TSQL2 me polles alles
 protaseis ths glwssas poy exoyn ginei ta thn teleytaia dekapentaetia.
 8a prepei na do8ei emfash oti ayta ta sxolia den einai tmhma twn
 prodiagrafwn ths glwssas TSQL2, alla th symplhrwnoyn kai anaptussoyn
 me bash ayta. Oi katallhles prodiagrafes ths glwssas einai h teleytaia
 lejh sthn TSQL2.

 Ta sxolia, mazi me tis prodiagrafes ths glwssas , arketoi deiktes
 (indexes), kai allo yliko yposthrijhs, exoyn ekdo8ei se ena biblio:

 Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer
 Academic Publishers, 1995, 674+xxiv selides.

 Oi kritikes emfanizontai sto biblio se mia syntomeymenh morfh. Oi
 kritikes parexontai plhreis se ayton katalogo sto arxeio eval.ps

 To arxeio tl2tsql2.pl einai ena programma se prolog poy metafrazei thn
 epitrepomenh proswrinh logikh se TSQL2. Ayto to programma grafthke apo
 ton Michael Boehlen

 �  [email protected]

    Mporeite na epikoinwnhsete mazi toy gia ena paper poy perigrafei
    ayth th metafrash.  Ayto einai mallon mia dated ekdosh toy
    programmatos. Newteres ekdoseis einai dia8esimes sto

 �  <http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software>

    (ta systhmata TimeDB kai Tiger).

 23.9.  Tmhma 0 - Apoktwntas ta keimena ISO/ANSI SQL

 Ayto to  keimeno sas deixnei pws na apokthsete (nomima) ena antigrafo
 toy protupoy SQL-92 kai toy "trexontos" SQL3 Working Draft.


 Sto ANSI protypo exei pneymatika dikaiwmata h ANSI, sto protypo ISO h
 ISO.

 Yparxoyn duo (2) trexonta protypa SQL, h dhmosieysh ANSI kai h
 dhmosieysh ISO. Ta duo ayta protypa einai oloidia lejh pros lejh ektos
 apo tetrimmena zhthmata opws o titlos toy keimenoy, oi epikefalides
 ths selidas,      h frash "International Standard" anti gia "American
 Standard", kai loipa.

 Agorazontas to protypo SQL-92

 To protypo ISO standard, ISO/IEC 9075:1992, Information Technology -
 Database Languages - SQL, einai dia8esimo (Martios, 1993) sto ANSI :


           American National Standards Institute
           1430 Broadway
           New York, NY 10018 (USA)
           Phone (sales): +1.212.642.4900




 kai kostizei US$230.00. H ANSI ekdosh, ANSI X3.135-1992, American
 National Standard gia Systhmata Plhroforiwn - Database Language SQL,
 den htan dia8esimo pros pwlhsh otan grafthke ayto to keimeno, alla
 anamenotan na einai dia8esimo metaju telh Martioy kai arxes Maioy,
 1993). To kostos toy anamenetai gurw sta US$225.00.

 An agorasete kapoio apo ta keimena apo to ANSI, 8a exete ejtra xrewsh
 gia ejoda metaforas 7% epipros8eta (dhladh, peripoy US$9.10). Gia
 xwres ejwterikou ta ejoda metaforas 8a einai anamfibola akomh
 perissotera. To ANSI apaitei ka8e paraggelia na synodeuetai apo ena
 xarti paraggelias ths etaireias. Enallaktika, mporeite na steilete ena
 tsek amerikanikhs trapezas h se amerikanika dolaria, ta opoia 8a
 metrh8oun prin na stal8ei h paraggelia sas. (Yparxei mia ejairesh: an
 h etaireia sas einai enswmatwmeno melos toy ANSI, tote to ANSI 8a sas
 steilei ta keimena kai 8a xrewsei thn etaireia sas.)

 To protypo ISO einai epishs dia8esimo ektos Amerikhs apo e8nika topika
 tmhmata (tmhmata protypopoihshs ana xwra) poy einai melh eite toy ISO
 (Die8nhs Organismos Typopoihshs - International Organization for
 Standardization) h toy IEC (Die8nhs Hlektrotexnikh Epitroph -
 International Electrotechnical Commission).

 Antigrafa ths lista twn e8nikwn tmhmatwn kai oi diey8unseis toys einai
 dia8esimes apo to ANSI h apo alla e8nika tmhmata. Einai epishs
 dia8esima apo to ISO:


           International Organization for Standardization
           Central Secretariat
           1, rue de Varembi
           CH-1211 Genhve 20
           Switzerland




 An protimate na paraggeilete to protypo me pio boliko kai grhgoro
 tropo, 8a prepei na plhrwsete gia na exete ayto to pronomio. Mporeite
 na paraggeilete to ISO/IEC 9075:1992, Information Technology -
 Database Languages - SQL, apo to:



      Global Engineering Documents
      2805 McGaw Ave
      Irvine, CA 92714 (USA)
      USA
      Thlefwno (apo opoiadhpote perioxh): +1.714.261.1455
      Thlefwno (mono gia Amerikh): (800)854-7179




 kai kostizei US$308.00. De jerw an se ayth thn timh symperilambanontai
 ta ejoda apostolhs h oxi, alla ypo8etw oti h apostolh sto ejwteriko
 (toylaxiston) 8a kostizei perissotero. Mporoun na sas steiloyn to
 keimeno arketa grhgora kai dexontai kai tis "pio gnwstes pistwtikes
 kartes".  To Global den exei akomh thn ANSI ekdosh oute exoyn timh h
 mia anamenomenh hmeromhnia (an kai thn perimenw oti se merikes ebdo�
 mades meta th dhmosieysh toy ANSI kai me timh gurw sta  US$300.00).

 Agorazontas ena antigrafo toy SQL3 Working Draft

 Mporeite na agorasete mia ektupwsh toy SQL3 working draft apo to ANSI
 X3 Secretariat, CBEMA (Computer kai Business Equipment Manufacturers
 Association). Synh8ws dia8etoyn tis "pio prosfates ekdoseis" toy SQL3
 working draft kai tis pwloun apo US$60.00 mexri US$65.00.  Mporeite na
 epikoinwnhsete me to CBEMA sto:


           CBEMA, X3 Secretariat
           Attn: Lynn Barra
           1250 Eye St.
           Suite 200
           Washington, DC 20005 (USA)




 Mporeite na epikoinwnhsete me th Lynn Barra thlefwnikws sto
 +1.202.626.5738 gia na zhthsete ena antigrafo, an kai to mail einai
 protimotero.

 Hlektronikh prosbash sto SQL3 Working Draft

 H pio prosfath ekdosh (th stigmh ths syggrafhs toy keimenoy) toy SQL3
 (kai gia ANSI kai ISO) working draft (kai ola ta tmhmata toy) einai
 dia8esimh me "anonymous ftp" h me "ftpmail" apo to:


           gatekeeper.dec.com

        sto katalogo

           /pub/standards/sql/




 Se ayton ton katalogo yparxoyn polla arxeia.  Yparxoyn arxeia
 PostScript kai "plain text" (oxi aparaithta formarismena, alla dia�
 bazontai se mia o8onh xwris idiaitero logismiko).

 Genika, mporeite na breite arxeia me onomata opws:





      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




 Ka8ws paragontai nees ekdoseis twn keimenwn, to "mar94" 8a allazei gia
 na deijei th nea hmeromhnia ths dhmosieyshs (p.x., "aug94" einai h
 anamenomenh hmeromhnia ths epomenhs dhmosieyshs meta to "mar94").

 Epishs, gia toys anagnwstes poy den mporoun na exoyn mia lista toy
 katalogoy me FTP, exoyme topo8ethsei ston idio katalogo ena arxeio me
 to onoma:


           ls




 Ayto to arxeio (ekplhjh!) periexei th lista toy katalogoy.

 Anaktwntas Arxeia katey8eian me xrhsh toy ftp

 Ayto einai ena paradeigma gia to pws na xrhsimopoieite to FTP.
 Sygkekrimena, deixnei pws na synde8eite sto gatekeeper.dec.com, na
 pate ston katalogo opoy fylassetai to basiko keimeno, kai na
 metaferete to keimeno sto mhxanhma sas. Shmeiwste oti to mhxanhma sas
 prepei na exei prosbash sto Internet gia na to kanete ayto. To login
 einai 'ftp' kai o kwdikos einai h email dieu8ynsh sas (ayto einai
 gnwsto kai san anwnymo ftp 'anonymous ftp'). H entolh 'type binary'
 xrhsimopoieitai gia na sigoyrecete oti de 8a xasete kapoia bits apo
 to(a) arxeio(a) poy 8a labete. H 'get' katebazei ena arxeio th fora.
 Ta sxolia sto parakatw script einai mesa se angle brackets < san ayta
 > .























   % ftp gatekeeper.dec.com
   Connected to gatekeeper.dec.com.
   220- *** /etc/motd.ftp ***
        Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
        <...this goes on for a while...>
   220 gatekeeper.dec.com FTP server (ekdosh 5.83 Sat ... 1992) ready.
   Name (gatekeeper.dec.com:<yourlogin here>): ftp  <anonymous also works>
   331 Guest login ok, send ident as password.
   Password: <enter your email address here >
   230 Guest login ok, access restrictions apply.
   Remote system type is UNIX.  <or whatever>
   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
   % <to arxeio einai twra ston katalogo sas san x3h2-93-082.txt>




 Anaktwntas Arxeia  xwris apey8eias yposthrijh ftp

 H Digital Equipment Corporation, opws kai polles alles etaireies,
 parexei yphresia ftp email. H apanthsh mporei na xreiastei gia na
 ftasei arketes meres, alla parexei mia yphresia isodunamh me to ftp
 gia aytous poy den exoyn apey8eias ftp prosbash sto Internet. H
 dieu8ynsh toy server einai:

 [email protected]

 To parakatw script 8a anakthsei to PostScript arxeio ths teleytaias
 ekdoshs toy SQL3 keimenoy:


           reply [email protected]
           connect gatekeeper.dec.com anonymous
           binary
           compress




 To parakatw script 8a anakthsei to PostScript arxeio ths teleytaias
 ekdoshs toy SQL3 keimenoy:




      reply [email protected]
      connect gatekeeper.dec.com anonymous
      binary
      compress
      uuencode
      chdir /pub/standards/sql
      get x3h2-93-091.ps
      quit




 H prwth grammh apo tis entoles toy script zhta apo to diakomisth
 (server) na sas epistrecei ta zhtoumena arxeia. 8a prepei na
 antikatasthsete to "[email protected]" me thn
 dieu8ynsh sas sto Internet. To arxeio se ayto to paradeigma,
 x3h2-93-091.ps, epistrefetai se morfh "compress"ed "uuencode"d san 34
 diaforetika mhnumata email.  An to periballon sas den parexei ergaleia
 gia epanakataskeyh tetoiwn arxeiwn, tote mporeite na anakthsete to
 arxeio san plain text me to akoloy8o script:


           reply [email protected]
           connect gatekeeper.dec.com anonymous
           chdir /pub/standards/sql
           get x3h2-93-091.ps
           quit




 Alla sas proeidopoioume, to arxeio .ps polu pi8ana 8a stal8ei se
 perissotera apo 70 tmhmata!

 Gia na anakthsete opoiodhpote allo sygkekrimeno arxeio, ektos toy
 x3h2-93-091.ps, apla antikatasthste to "x3h2-93-091.ps" me to onoma
 toy arxeioy poy epi8ymeite.  Gia na parete th lista olwn twn
 dia8esimwn arxeiwn toy katalogoy, antikatasthste to "get
 x3h2-93-091.ps" me to "dir".

 23.10.  Tmhma 1 - Trexoysa katastash toy ISO/ANSI SQL

 Ayto to kefalaio einai mia phgh plhroforias sxetika me thn protyph
 diergasia SQL kai thn trexoysa katastash ths.

 Trexoysa katastash:

 H anaptyjh toy einai ypo ejelijh gia na epekteinei thn SQL se mia
 oloklhrwmenh ypologistika glwssa gia ton ka8orismo kai diaxeirish
 persistent, sun8etwn antikeimenwn. Ayto perilambanei : generalization
 kai specialization hierarchies, pollaplh klhronomikothta, tupoys
 dedomenwn ka8orismenwn apo ton xrhsth, triggers kai assertions,
 yposthrijh gia empeira systhmata, anadromikes erwthseis, kai epipleon
 ergaleia diaxeirishs dedomenwn. Perilambanei epishs tis prodiagrafes
 twn afhrhmenwn tupwn dedomenwn (abstract data types -ADTs), object
 identifiers, me8odoys, klhronomikothta, polymorfismo, encapsulation,
 kai oles tis eykolies poy sxetizontai me th diaxeirish dedomenwn twn
 antikeimenwn.

 To f8inopwro toy 1996, arketa tmhmata toy SQL3 perasan apo chfoforia
 ISO CD.  Ayta htan ta SQL/Framework, SQL/Foundation, kai SQL/Bindings.
 Ayth h chfoforia apetyxe (opws htan anamenomeno) me 900 h peripoy tosa
 sxolia. Sta telh Ianoyarioy, egine kapoia synanthsh suntajhs toy ISO
 DBL kata thn opoia epejergasthkan luseis gia ena megalo ari8mo
 problhmatwn ta opoia eite enswmatw8hkan me sxolia mesw chfoforias eite
 stal8hkan san jexwrista papers.  Mia kai h synanthsh suntajhs toy DBL
 den mporese na epejergastei ola ta sxolia, h synanthsh suntajhs
 parata8hke. H oloklhrwsh ths synanthshs suntajhs programmatisthke gia
 ta telh Ioylioy, 1997, sto Londino.

 Meta th synanthsh suntajhs toy Ioylioy, anamenetai na zhth8ei mia
 telikh chfoforia gia ola ayta ta tmhmata ths SQL. H diadikasia gia thn
 telikh chfoforia 8a krathsei 6 peripoy mhnes kai 8a ginei mia
 synanthsh suntajhs DBL, meta thn opoia 8a ginei mia chfoforia DIS  kai
 mia sxetika grhgorh chfoforia IS .

 Oi diadikasies ISO  exoyn allajei apo to SQL/92, etsi oi epitropes gia
 thn SQL doyleuoyn akomh gia ton ka8orismo twn akribwn leptomereiwn ths
 diadikasias.

 An pane ola kala, ayta ta tmhmata ths SQL3 8a ginoyn ena epishmo
 protypo ISO/IEC sta telh toy 1998, alla to programma einai polu
 sfixto.

 To 1993, oi epitropes anaptyjhs ANSI kai ISO apofasisan na xwrisoyn th
 mellontikh anaptyjh ths SQL se ena polymeres protypo. Ta tmhmata ayta
 einai:


 �  Tmhma 1: Framework Mia mh texnikh perigrafh gia to pws einai
    domhmeno to keimeno.

 �  Tmhma 2: Foundation Oi prodiagrafes toy systhmatos,
    symperilambanomenoy olwn twn newn xarakthristikwn ADT.

 �  Tmhma 3: SQL/CLI To Call Level Interface.

 �  Tmhma 4: SQL/PSM Oi prodiagrafes twn stored procedures,
    symperilambanomenwn ypologistikwn symplhrwsewn.

 �  Tmhma 5: SQL/Bindings Ta Dynamic SQL kai Embedded SQL bindings poy
    par8hkan apo to SQL-92.

 �  Tmhma 6: SQL/XA Oi prodiagrafes SQL toy dhmofilous XA Interface poy
    anaptussetai apo thn X/Open

 �  Tmhma 7:SQL/Temporal Pros8etei sta protypa SQL ikanothtes sxetikes
    me to xrono.

 Sthn Amerikh, oloklhrh h SQL3 epejergazetai kai san ANSI Domestic
 ("D") project kai san ISO project. To anamenomeno xroniko para8yro gia
 thn oloklhrwsh ths SQL3 einai to 1999.

 Ta SQL/CLI kai SQL/PSM epejergazontai oso grhgorotera ginetai san
 addendums sthn SQL-92. Sthn Amerikh, ayta epejergazontai mono san
 Die8nh Erga (International - "I"). H SQL/CLI oloklhrw8hke to 1995. H
 SQL/PSM prepei na exei oloklhrw8ei sta telh toy 1996.

 Epipros8eta ths SQL3 ergasias, enas ari8mos epipleon ergwn are
 persued:


 �  SQL/MM Mia prospa8eia na oristoun protypa paketa polymeswn
    xrhsimopoiwntas tis dynatothtes ths SQL3 ADT.

 �  Prosbash se apomakrysmena dedomena - Remote Data Access (RDA)

 Epitropes Protupwn kai Diadikasiwn Yparxei pragmatika megalos ari8mos
 epitropwn protupwn SQL se olo ton kosmo.  Yparxei ena die8nes gkroyp
 toy protupoy SQL san tmhma toy ISO. Polles xwres exoyn epitropes poy
 asxolountai me thn SQL. Aytes oi xwres (synh8ws) stelnoyn
 antiproswpoys stis synanthseis ISO/IEC JTC1/SC 21/WG3 DBL. Oi xwres
 poy symmetexoyn energa sth diadikasia toy protupoy ISO SQL einai oi:


 �  Aystralia

 �  Brazilia

 �  Kanadas

 �  Gallia

 �  Germania

 �  Iapwnia

 �  Korea

 �  Ollandia

 �  Agglia

 �  Amerikh

 NIST Nomimopoihsh

 Oi ylopoihseis ths SQL nomimopoiountai (sthn Amerikh) apo to E8niko
 Institouto Protupwn kai Elegxoy (NIST). To NIST exei gia thn wra ena
 sunolo apo test nomimothtas gia to entry level SQL-92. Oi akribeis
 plhrofories gia tis apaithseis ths NIST nomimopoihshs ka8orizontai ws
 Omospondiako Protypo Epejergasias Plhroforias - Federal Information
 Processing Standard (FIPS).  Oi trexoyses apaithseis gia thn SQL
 orizontai sto FIPS 127-2. Mporeite na parete tis trexoyses Postscript
 kai Text ekdoseis aytou toy keimenoy  apo to NIST.  H lista twn
 trexontwn nomimopoihmenwn SQL proiontwn mporei epishs na bre8ei sto
 NIST.

 Ekdoseis kai Ar8ra sxetika me to protypo ths SQL

 Yparxoyn duo ekdoseis sxetika me to protypo SQL. Kai oi duo
 diati8entai apo to ANSI:


 �  ISO/IEC 9075:1992, "Information Technology --- Database Languages
    --- SQL"

 �  ANSI X3.135-1992, "Database Language SQL"

 Oi dyo ekdoseis toy protupoy SQL einai oloidies ektos apo to ejwfyllo
 kai tis anafores se alla protypa. Kai oi duo diati8entai apo to :


           American National Standards Institute
           1430 Broadway
           New York, NY 10018
           USA
           Phone (sales): +1.212.642.4900




 Epipros8eta sto protypo SQL-92, yparxei ena Technical Corrigendum
 (dior8wseis bug):


         * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992

 To TC 1 prepei na diati8etai epishs apo to ANSI. Yparxei mono h ISO
 ekdosh toy TC 1 -- efarmozetai kai sthn ISO kai ANSI ekdosh toy
 SQL-92.

 Epipros8eta, exoyn graftei arketa biblia sxetika me to protypo 1992
 SQL. Ayta ta biblia parexoyn mia kalutera anagnwsimh perigrafh toy
 protupoy apo oti to idio to protypo.

 Sxetizomena protypa

 Enas sunolo protupwn endiaferoyn thn SQL koinothta. Ayto to tmhma
 periexei deiktes se plhrofories gia aytes tis prospa8eies. Aytoi oi
 deiktes 8a ayjh8oun ka8ws ejtra plhrofories diati8entai sto web.


 �  Periballonta SQL (FIPS 193)

 �  Repository Systhmata Epomenhs Genias (X3H4) - mia News Release poy
    zhta symmetoxh sto "Anaptussontas Protypa gia Repository Systhmata
    Epomenhs Genias."

 23.11.  Tmhma 2 - ISO/ANSI SQL Foundation

 Ena shmantiko tmhma ths SQL3 prospa8eias brisketai sto keimeno SQL
 Foundation :


 �  Basikes dynatothtes SQL/PSM (moved form SQL/PSM-92)

 �  Neoi tupoi dedomenwn

 �  Triggers

 �  Ypopinakes

 �  Afhrhmenoi Tupoi Dedomenwn - Abstract Data Types (ADT)

 �  Antikeimenostrafeis Dynatothtes

 Yparxoyn arketa proapaitoumena stis antikeimenostrafeis dynatothtes:


 �  Ikanothta na orizete sun8etes leitoyrgies

 �  Apo8hkeysh sun8etwn leitoyrgiwn sth bash

 �  Klhsh ejwterikwn diadikasiwn � Merikes leitoyrgies mporei na mhn
    einai se SQL, h mporei na apaitoun ejwterikes parembaseis

 Aytes oi dynatothtes orizontai san tmhma toy SQL/PSM

 Ginetai mia shmantikh ergasia gia na ekka8aristei to montelo
 antikeimenoy SQL-3 kai na ey8ygrammistei me to montelo antikeimenoy
 poy prota8hke apo to ODMG. Ayth h prospa8eia perigrafetai sto X3H2 kai
 ISO DBL paper: Accomodating SQL3 and ODMG. Einai epishs dia8esimh mia
 prosfath ekdosh sto SQL3/OQL Merger.

 SQL3 Timing

 H ergasia panw sto SQL3 brisketai se ejelijh, alla ta telika protypa
 8a xreiastoun xronia akomh gia na oloklhrw8oun.


 �  Die8nhs chfoforia gia thn proodo toy SQL3 Foundation apo to
    Proxeiro Entypo Ergasias ws to Proxeiro Entypo Epitrophs (Committee
    Draft - CD) elabe xwra to f8inopwro toy 1996.
 �  H chfoforia anamenetai na prokalesei polla sxolia

 �  Einai pi8ano na zhth8ei mia deuterh chfoforia CD

 �  Mia Draft Yhfoforia Die8nwn Protupwn einai pi8ano na ginei sta mesa
    toy 1998

 �  To Die8nes Protypo mporei na oloklhrw8ei sta mesa toy 1999.

 H ANSI ekdosh toy protupoy exei paromoio xronodiagramma.

 23.12.  Tmhma 3 - ISO/ANSI SQL Call Level Interface

 To SQL/CLI einai ena programmatistiko interface epipedoy klhsewn gia
 SQL baseis. Exei sxediastei gia na yposthrizei prosbash se baseis apo
 shrink-wrapped efarmoges. To CLI dhmioyrgh8hke arxika apo mia
 ypoepitroph toy SQL Access Group (SAG).  Oi prodiagrafes toy SAG/CLI
 ekdo8hkan san tis prodiagrafes toy Microsoft Open DataBase
 Connectivity (ODBC) to 1992. To 1993, to SAG esteile to CLI stis
 epitropes ANSI kai ISO SQL. (To gkroyp SQL Access exei sygxwney8ei
 twra me to X/Open consortium.)

 To SQL/CLI parexei ena die8nes protypo gia :


 �  CLI anejarthto ylopoihshs, gia prosbash se baseis SQL

 �  Client-Server ergaleia poy mporoun na exoyn prosbash se mia bash
    mesw dynamikwn biblio8hkwn

 �  Yposthrijh  kai en8arrynsh plousioy synoloy ergaleiwn Client-server

 SQL/CLI Timing

 Sta plaisia ths diadikasia typopoihshs, to SQL/CLI epejergazetai me
 megalh proteraiothta.


 �  To SQL/CLI einai ena symplhrwma toy protupoy 1992 SQL (SQL-92)

 �  Oloklhrw8hke san protypo ISO to 1995

 �  ISO/IEC 9075-3:1995 Information technology -- Database languages --
    SQL -- Part 3: Call-Level Interface (SQL/CLI)

 �  H trexoysa SQL/CLI prospa8eia poy ginetai einai na proste8ei
    yposthrijh gia xarakthristika ths SQL3

 23.13.  Tmhma 4 - ISO/ANSI SQL Persistent Stored Modules

 To SQL/PSM epekteinei thn SQL pros8etontas:


 �  Dhlwtikes/Diadikastikes epektaseis

 �  Multi-statement kai Stored Procedures

 �  Ejwterikes synarthseis kai klhseis diadikasiwn

 Ektos toy oti einai ena ajiologo ergaleio anaptyjhs efarmogwn, to
 SQL/PSM parexei th 8emeliwdh yposthrijh gia antikeimenostrafeis
 dynatothtes sthn SQL3.

 Multi-statement kai Stored Procedures


 Oi Multi-statement kai stored procedures prosferoyn mia poikilia
 pleonekthmatwn se ena periballon client/server:


 �  Apodosh- Mia kai mia stored procedure mporei na ektelesei pollaples
    SQL entoles, meiwnetai h allhlepidrash me ton pelath (client).

 �  Asfaleia - Enas xrhsths mporei na apokthsei to dikaiwma na kalei
    mia stored procedure poy enhmerwnei ena pinaka h ena sunolo pinakwn
    alla mhn exei to dikaiwma ths apey8eias enhmerwshs twn pinakwn

 �  Epanaxrhsimopoihsimos kwdikas - O kwdikas se mia stored procedure
    de xreiazetai na janagraftei kai na janaelegx8ei gia ka8e client
    ergaleio poy exei prosbash sth bash.

 �  Elegxos - Parexei ena mono shmeio orismou kai elegxoy ths logikhs
    ths efarmoghs.

 Dhlwtikes/Diadikastikes epektaseis

 H Diadikastikh Glwssa pros8etei thn isxu mias paradosiakhs glwssas
 programmatismou sthn SQL mesw entolwn elegxoy rohs kai mia poikilia
 allwn programmatistikwn kataskeywn.

 Entoles Elegxoy rohs


 �  If-then-else

 �  Looping constructs

 �  Exception handling

 �  Case statement

 �  Begin-End blocks

 Oi diadikastikes epektaseis perilambanoyn kai alles programmatistikes
 kataskeyes:


 �  Dhlwseis metablhtwn

 �  Entoles Set gia ana8esh timwn

 �  Lhch diagnwstikwn gia tis diergasies kai plhrofories katastashs

 Epipleon, oles oi paradosiakes SQL entoles mporoun na symperilhf8oun
 se diadikasies multi-statement.

 Klhseis Ejwterikwn Diadikasiwn kai Synarthsewn Ena xarakthristiko poy
 anaferetai syxna stis eyxethries listes toy ti 8a epi8ymousame gia
 polla proionta basewn, kai poy exei ylopoih8ei se merikes, einai h
 dynatothta na employtismou twn enswmatwmenwn xarakthristikwn me
 klhseis se diadikasies poy exei gracei o xrhsths ejwterika ektos ths
 bashs.


 �  Epitrepei se ena sygkekrimeno site h efarmogh na pros8esei tis
    dikes toy synarthseis gia th bash

 �  Mporei na xrhsimopoih8ei apo tis efarmoges baseis dedomenwn

 To pleonekthma ayths ths dynatothtas einai oti dinei sth bash (synepws
 kai stis efarmoges basewn) prosbash se terastio ari8mo diadikasiwn kai
 synarthsewn.
 Xronismos toy SQL/PSM

 To SQL/PSM exei en syntomia:


 �  To SQL/PSM einai mia pros8hkh sto SQL-92

 �  Die8nhs chfoforia gia thn proodo toy SQL/PSM apo to Draft Die8nes
    Protypo sto Die8nes Protypo oloklhrw8hke ton Ianoyario toy 1996.

 �  H dior8wtikh synedriash to Maio toy 1996 den epelyse ola ta sxolia

 �  H synexish ths dior8wtikhs synedriashs PSM programmatisthke apo tis
    30 Septembrioy mexri tis 4 Oktwbrioy toy 1996

 �  To xronodiagramma einai piestiko alla yparxei mia pi8anothta na
    ekdo8ei to PSM mesa sto 1996.

 �  O epishmos prosdiorismos 8a einai: ISO/IEC DIS 9075-4:199?
    Information technology -- Database languages -- SQL -- Part 4: SQL
    Persistent Stored Modules (SQL/PSM)

 �  Exei hdh jekinhsei doyleia gia thn pros8hkh yposthrijhs SQL/PSM sta
    xarakthristika ths SQL3.

 23.14.  Tmhma 5 - Typopoihseis - Desmeuseis ISO/ANSI SQL/ ISO/ANSI
 SQL/Bindings

 Gia eykolia anaforwn, oi desmeuseis, typopoihseis ths glwssas
 programmatismou exoyn sygkentrw8ei se ena jexwristo keimeno. H
 trexoysa ekdosh einai apla ena apospasma apo ta protypa ths
 SQL-92(dynamika (dynamic) kai enswmatoumena (embedded)).

 Paramenei adieykrinisth mia poikilia 8ematwn typopoihshs ths glwssas.

 Sthn paradosiakh programmatistikh glwssa, yparxoyn oi apeikoniseis twn
 tupwn dedomenwn ths SQL-92.  Parola ayta, 8a prepei na oristoun kai oi
 apeikoniseis metaju twn antikeimenwn ths SQL kai twn metablhtwn ths
 programmatistikhs glwssas..

 Gia tis antikeimenostrafeis glwsses, prepei na oristei h apeikonish
 gia toys tupoys dedomenwn ths SQL kai metaju toy monteloy antikeimenwn
 ths SQL kai toy monteloy antikeimenwn ths antikeimenostrafous glwssas.

 To montelo dedomenwn 8a prepei na oristikopoih8ei prin arxisei na
 ginetai anafora se tetoioy tupoy problhmata.

 Oi typopoihseis ths glwssas 8a oloklhrw8oun ws meroys toy protypoy
 SQL3.

 23.15.  Tmhma 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)

 Oi prodiagrafes aytes 8a typopoihsoyn ena programmatistiko interface
 (API) metaju enos genikou Diaxeiristh Syndiallagwn (Transaction
 Manager) kai enos Diaxeiristh Porwn (Resource Manager) SQL.  8a
 typopoihsei tis klhseis synarthsewn, basizomenos sta protypa toy
 ISO/IEC 10026, "Distributed Transaction Processing", poy enas
 Diaxeirisths Porwn SQL 8a prepei na yposthrizei, gia na kanei commit
 duo stadiwn (two-phase commit) To basiko keimeno anaforas ejagetai apo
 mia dhmosieysh toy X/Open, me thn adeia toy X/Open, poy prosdiorizei
 rhta tis parametroys eisodoy kai ejodoy kai thn shmeiografia
 (semantics), gia tis akoloy8es synarthseis: xa_close, xa_commit,
 xa_complete, xa_end, xa_forget,xa_open, xa_prepare, xa_recover,
 xa_rollback, kai xa_start.


 O ISO epixeirei na epitaxunei tis prodiagrafes toy X/Open XA. H
 diadikasia epitaxynshs yio8etei biomhxanikes prodiagrafes xwris
 allages.  H chfoforia gia to XA sto ISO SC21, JTC epipedo 1, arxise
 stis 27 Aprilioy, 1995 kai teleiwse stis 27 Oktwbrioy, 1995. An to 75
 twn chfoforwn egkrinoyn tis prodiagrafes toy XA, kai apo ta 2/3 twn p-
 melwn toy JTC 1, 8a apotelesei ena Die8nes Protypo. An h chfoforia to
 egkrinei, to SQL/XA 8a mporouse na ginei ena protypo mesa sto 1996.

 23.16.  Part 7 - ISO/ANSI SQL Temporal

 H Temporal SQL asxoleitai me xronika ejartwmena dedomena. H idea einai
 pws einai xrhsimo na analuoyme ta dedomena gia na doume pws emoiazan
 kapoia dedomenh xronikh stigmh.  H Temporal SQL einai ena paper toy
 Dekembrioy toy 1994 apo ton Rick Snodgrass poy perigrafei aytes tis
 ennoies.

 H X3 anakoinwnei thn egkrish enos Neoy Ergoy, ISO/IEC 9075 Meros 7o: H
 SQL/Temporal einai mia dhmosieysh tupoy sxetikh me thn SQL/Temporal.


      ----------------------------------------------------------------------------
                                      Temporal SQL
                                      ************
      Rick Snodgrass (proedros ths epitrophs TSQL2)
      31-Dek-1994




 Arketoi amfisbhthsan thn anagkh ayjhmenhs yposthrijhs xronoy sthn SQL3
 (opws ayto proteinetai apo to DBL RIO-75, opoy kai zhta ena neo tmhma
 ths SQL poy na yposthrizei xronikes (temporal) baseis). O isxyrismos
 toys basizetai sto oti oi afhrhmenoi tupoi dedomenwn (abstract data
 types -ADT's) arkoun gia xronikh yposthrijh. Se ayto to plhroforiako
 keimeno, diafwnw, kai, xrhsimopoiwntas adiaseista paradeigmata,
 deixnw pws xrhsimopoiwntas mono sthles me afhrhmenoys tupoys dedomenwn
 den arkei gia xronikes erwthseis. Eidikotera, polles koines xronikes
 erwthseis, einai eite duskoles na prosomoiw8oun me SQL, eite apaitoun
 thn enswmatwsh SQL se mia diadikastikh (procedural) glwssa.  Oi enal�
 laktikes luseis ekfrazontai se TSQL2, mia xronikh epektash sthn
 SQL-92.

 23.16.1.  EISAGWGH

 H yposthrijh egkyroy xronoy (Valid-time) jepernaei ayth enos koinou
 xronikou afhrhmenoy tupoy dedomenwn (ADT). Ston teleytaio, mia sthlh
 prosdiorizetai san ena xroniko pedio, eite ws DATE eite ws INTERVAL
 (8a do8oun paradeigmata suntoma).  Me ton egkyro xrono, oi grammes
 enos pinaka diaforopoiountai me to perasma toy xronoy, ka8ws
 diaforopoieitai kai h pragmatikothta. H xronikh sfragida (timestamp)
 poy sxetizetai me mia grammh enos pinaka egkyrwn xronwn (valid-time
 table) metafrazetai apo thn glwssa erwthsewn ws h xronikh stigmh gia
 thn opoia o syndyasmos timwn twn sthlwn ths grammhs ekeinhs htan
 egkyros. H uparjh ths emmeshs ayths xronikhs sfragidas epitrepei thn
 diatupwsh  safwn kai prwtotypwn erwthsewn.

 23.16.2.  MIA MELETH- APO8HKEYSH SYGXRONWN/TREXOYSWN PLHROFORIWN

 To Grafeio Proswpikou toy Panepisthmioy ths Arizona exei kapoies
 plhrofories se mia bash dedomenwn, mesa stis opoies kai to onoma twn
 ypallhlwn, ton trexonta mis8o toys, kai ton trexoysa 8esh toys. Ayto
 mporei na perigrafei me enan aplo pinaka.


              Employee(Name, Salary, Title)

 Dedomenoy aytou toy pinaka, h euresh toy mis8ou enos ypallhloy einai
 eukolh.


              SELECT Salary
              FROM Employee
              WHERE Name = 'Bob'




 Twra to Grafeio Proswpikou epi8ymei na katagrafei kai thn hmeromhnia
 gennhshs.  Gia na to kanei, pros8etei mia sthlh ston pinaka, kai etsi
 prokuptei to akoloy8o sxhma.


              Employee(Name, Salary, Title, DateofBirth DATE)




 H euresh twn gene8liwn enos ypallhloy einai analogh me to na broume to
 mis8o toy.


              SELECT DateofBirth
              FROM Employee
              WHERE Name = 'Bob'




 23.16.3.  MELETH - APO8HKEYSH ISTORIKWN PLHROFORIWN

 To Grafeio Proswpikou epi8ymei perasei ta istorika stoixeia twn
 ypallhlwn se hlektronikh morfh. Gia na to kanei, pros8etoyn duo
 sthles, mia poy ypodeiknuei pote egine egkyrh h plhroforia ths
 grammhs, kai mia gia to pote epace na isxuei.

 Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)

 Sto montelo dedomenwn, aytes oi duo sthles einai paromoies me to
 DateofBirth. Parola ayta, h paroysia toys exei epiptwseis megalhs
 klimakas.

 23.16.4.  MELETH - PROBOLH (PROJECTION)

 Gia na broume ton trexonta mis8o enos ypallhloy, ta pragmata einai
 pleon dyskolotera.


              SELECT Salary
              FROM Employee
              WHERE Name = 'Bob' kai Start <= CURRENT_DATE kai CURRENT_DATE <= Stop




 Ayth h erwthsh einai pio sun8eth apo oti h prohgoumenh. H dyskolia
 einai profanws oi duo nees sthles. To Grafeio Proswpikou 8elei na
 dianemei se ka8e ypallhlo to mis8ologiko toy arxeio. Eidikotera, gia
 ka8e enan, 8a prepei na ka8oristoun ta megista diasthmata ana mis8o.
 Dystyxws, ayto den einai dynato me SQL. Enas ypallhlos exei ena tyxaio
 ari8mo allagwn 8esewn metaju mis8ologikwn allagwn.


 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

                                Eikona 1




 Shmeiwste pws yparxoyn treis grammes opoy o mis8os toy Bob paremeine
 sta8eros stis $70,000.  Gi ayto to apotelesma 8a eprepe na dwsei duo
 grammes gia ton Bob.


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




 Mia enallaktikh lush einai na do8ei ston xrhsth mia ektupwsh plhro�
 foriwn Mis8ou kai Titloy, kai na afhnoyme ton xrhsth na ka8orizei pote
 allaje o mis8os toy. H enallaktikh ayth den einai polu 8elktikh h
 realistikh. Mia deuterh, einai na xrhsimopoihsoyme oso pio polu SQL
 ginetai.


      CREATE TABLE Temp(Salary, Start, Stop)
      AS      SELECT Salary, Start, Stop
              FROM Employee;




 epanalabate


              UPDATE Temp T1
              SET (T1.Stop) = (SELECT MAX(T2.Stop)
                               FROM Temp AS T2
                               WHERE T1.Salary = T2.Salary kai T1.Start < T2.Start
                                      kai T1.Stop >= T2.Start kai T1.Stop < T2.Stop)
              WHERE EXISTS (SELECT *
                            FROM Temp AS T2
                            WHERE T1.Salary = T2.Salary kai T1.Start < T2.Start
                                      kai T1.Stop >= T2.Start kai T1.Stop < T2.Stop)
              mexri na mhn enhmerw8ei kamia grammh;

      DELETE FROM Temp T1

      WHERE EXISTS (SELECT *
                    FROM Temp AS T2
                    WHERE T1.Salary = T2.Salary
                              kai ((T1.Start > T2.Start kai T1.Stop <= T2.Stop)
                              OR (T1.Start >= T2.Start kai T1.Stop < T2.Stop))




 O brogxos briskei ta diasthmata ekeina poy epikaluptontai h einai
 geitonika kai gi ayto 8a eprepe na sygxwney8oun. O broxos ekteleitai N
 fores sthn xeiroterh periptwsh, opoy to N einai o ari8mos twn grammwn
 se mia alysida epikalyptomenwn h geitonikwn grammwn me ises times. O
 anagnwsths mporei na prosomoiwsei thn erwthsh toy pinaka toy
 paradeigmatos gia na peistei gia thn or8othta toy parapanw.

 Mia trith enallaktikh einai na xrhsimopoihsoyme SQL mono gia na
 anoijoyme ena kersora (cursor) ston pinaka. Mia syndedemenh lista
 xronikwn periodwn 8a krath8ei, ka8e mia exontas kai ena mis8o. H
 syndedemenh lista arxikopoieitai kenh.


      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;




 dietreje th lista typwnontas hmeromhnies kai mis8ous

 H syndedemenh lista mporei kai na mhn xreiazetai sthn periptwsh ayth
 ana o kersoras einai ORDER BY Start.

 Se ka8e periptwsh, h erwthsh, poy einai kai fysikh, einai duskolo na
 ekfrastei me tis yparxoyses dynatothtes ths SQL-92. H erwthsh einai
 tetrimmenh se TSQL2.


              SELECT Salary
              FROM Employee




 23.16.5.  MELETH - SYSXETISMOS (JOIN)

 Mia pio drastikh proseggish einai na apofugoyme to problhma ths
 ejagwghs ths mis8ologikhs istorias me anadiorganwsh toy sxhmatos wste
 na aposyzeujoyme to mis8o, th 8esh kai thn hmeromhnia gennhshs
 (parakatw, agnooume thn hmeromhnia gennhshs, gia aplothta).


              Employee1 (Name, Salary, Start DATE, Stop DATE)
              Employee2 (Name, Title, Start DATE, Stop DATE)




 O pinakas Employee1 exei ws akolou8ws.


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



 Edw einai kai o pinakas Employee2 toy paradeigmatos.


      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




 Me ayth thn allagh, h apokthsh ths plhroforias toy mis8ou gia enan
 ypallhlo einai pleon eukolh.


              SELECT Salary, Start, Stop
              FROM Employee1
              WHERE Name = 'Bob'




 Alla ti 8a ginei ean to Grafeio Proswpikou 8elhsei enan pinaka mis8ou,
 diasthmatwn 8eshs (dhladh, as ypo8esoyme pws to G.P. 8elei enan pinaka
 ths morfhs ths Eikonas 1); Mia enallaktikh lush einai na typwsoyme
 toys duo pinakes kai na afhsoyme ton xrhsth na ypologisei toys syn�
 dyasmous.  Mia deuterh enallaktikh, einai na xrhsimopoihsoyme mono
 SQL. Dystyxws, h erwthsh ayth prepei na kanei mia analysh katastasewn
 toy pws mia grammh toy Employee1 epikaluptei grammes toy Employee2.
 Yparxoyn tesseris dynates katastaseis.


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




 To na piasoyme tis tesseris katastaseis einai mia duskolh kai endi�
 aferoysa ergasia.  Se TSQL2, to na kanoyme ena xroniko sysxetismo
 (temporal join) einai opws kapoios 8a perimene.





         SELECT Employee1.Name, Salary, Dept
         FROM Employee1, Employee2
         WHERE Employee1.Name = Employee2.Name




 23.16.6.  MELETH - A8ROISTIKOI TELESTES (AGGREGATES)

 Twra to G.P. erwtatai, poios einai o megistos mis8os; Prin thn
 eisagwgh toy xronoy, ayto htan eukolo.


              SELECT MAX(Salary)
              FROM Employee




 Twra omws poy h mis8ologikh istoria apo8hkeuetai, 8a 8elame mia isto�
 ria toy megistoy mis8ou ana ton xrono. To problhma fysika einai, pws h
 SQL den parexei xronikous a8roistikous telestes. O eukolos tropos na
 ginei to parapanw, einai na typwsoyme thn plhroforia kai na thn dia�
 trejoyme xeirokinhta gia ta megista. Enallaktika, 8a mporousame na
 kanoyme texnasmata kai na metatrecoyme thn a8roistikh erwthsh se mia
 mia mh a8roistikh, kai meta ayth se xronikh.  H mh a8roistikh 8a
 ebriske ekeinoys toys mis8ous gia toys opoioys den yparxei megaluteros
 mis8os.


              SELECT Salary
              FROM Employee AS E1
              WHERE NOT EXISTS (SELECT *
                                FROM Employee AS E2
                                WHERE E2.Salary > E1.Salary)




 H metatroph mias tetoias erwthshs apexei polu apo to na 8ewrh8ei
 tetrimmenh. To akoloy8o einai mia proseggish.


      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))
                          kai E.Salary > T.Salary;




 Ayth h proseggish dhmioyrgei enan boh8htiko pinaka. Pros8etoyme se
 ayton ton pinaka thn xamhloterh periodo apo mia afairesh diasthmatwn
 kai thn megaluterh periodo apo mia afairesh diasthmatwn. Meta dia�
 grafoyme oles tis periodoys poy epikaluptontai me kapoia grammh poy
 orizetai apo thn ypo-erwthsh (subquery), kai menoyn oi NOT EXISTS.
 Telika, dhmioyrgoume apo ton boh8htiko pinaka ta megista diasthmata,
 me ton idio tropo poy ypologisthke parapanw h plhroforia mis8wn. Opws
 mporoume na fantastoume, tetoios kwdikas SQL einai yperbolika anapote�
 lesmatikos gia na ektelestei, dedomenoy twn sun8etwn fwliasmenwn
 (nested) ypoerwthsewn me toys telestes sugkrishs me krithria anisoth�
 tas.

 Mia trith enallaktikh lush, einai na xrhsimopoihsoyme SQL oso ligotero
 ginetai, kai na ypologisoyme thn epi8ymhth istorikothta apo megistes
 times se mia allh glwssa xrhsimopoiwntas enswmatwmenoys kersores.

 H erwthsh se TSQL2 einai aploustath.


              SELECT MAX(Salary)
              FROM Employee




 23.16.7.  PERILHYH

 Oi perissoteres efarmoges me bash dedomenwn exoyn na antimetwpisoyn
 kai dedomena me xronikh diakumansh einai anagkh na antimetwpistoun . H
 yposthrijh egkyroy-xronoy einai apousa sthn SQL. Polles koines
 xronikes erwthseis einai loipon eite duskoles na ejomoiw8oun mesw SQL,
 h apaitoun enswmatwsh ths SQL se mia dhlwtikh / diadikastikh glwssa
 (procedural), logw ths elleichs yposthrijhs pinakwn egkyroy-xronoy sto
 montelo dedomenwn kai sthn kataskeyh erwthsewn ths SQL.

 Se allo shmeio, deijame pws h yposthrijh egkyroy-xronoy apaitei mikres
 allages sthn ylopoihsh ths DBMS, kai mporei na aplopoihsei dramatika
 kapoies erwthseis, na kanei dynates alles, kai akolou8ws na epitrecei
 me8odoys deiktodothshs kai strathgikes beltistopoihsewn poy mporoun na
 odhghsoyn se shmantikes kalytereuseis apodoshs.

 Me to neo tmhma ths SQL3 poy yposthrizei plhrofories me xronikh
 diakumansh, mporoume na arxisoyme na stoxeuoyme se tetoies efarmoges,
 epitrepontas sthn SQL3 na diaxeirizetai kalutera ta xronika dedomena.



      ----------------------------------------------------------------------------
                 Epitroph Epikurwshs Protupwn* X3, Texnologia Plhroforiwn
      DHMOSIEYSH NEWN

      Ar. Eggrafoy:       PR/96-0002

      Apanthsh eis:       Barbara Bennett sto [email protected]

                  H X3 anakoinwnei thn Egkrish enos Neoy Ergoy, ISO/IEC

                               9075 Tmhma 7:  SQL/Temporal

      Washington D.C., Ianoyarios 1996
      ----------------------------------------------------------------------------




 -- Epitroph Epikurwshs Protupwn X3, Texnologia Plhroforiwn anakoinwnei
 thn egkrish enos Neoy Ergoy sthn xronikh yposthrijh SQL
 (SQL/Temporal), ISO/IEC 9075 Tmhma 7.  O skopos toy proteinomenoy pro�
 tupoy prosdiorizei ena neo Tmhma sto anerxomeno protypo SQL3, p.x., to
 Tmhma 7, Xronikh SQL, ws epektaseis ths glwssas SQL poy yposthrizoyn
 thn anakthsh , kai epejergasia xronikwn dedomenwn se ena periballon
 mias SQL bashs dedomenwn.  H epomenh synedria X3H2 programmatisthke
 gia tis 11-14 Martioy toy 1996 sto Kansas.

 Erwthseis gia to ergo ayto 8a prepei na staloun sto


              Chairman of X3H2,
              Dr. Donald R. Deutsch,
              Sybase, Inc., Suite 800,
              6550 Rock Spring
              Drive, Bethesda, MD  20817.
              Email: [email protected].




 Mia arxikh prosklhsh gia patentes kai sxetika 8emata (pneymatikes
 idiokthsies, emporika shmata) (copyrights, trademarks) ekdidetai ayton
 ton kairo.  Ypobalete plhrofories gia ta 8emata ayta sto


              X3 Secretariat at
              1250 Eye Street
              NW, Suite 200,
              Washington DC  20005.
              Email: [email protected]
              FAX:  (202)638-4922.




 23.17.  Tmhma 8 - ISO/ANSI POLYMESA SQL (SQL MULTIMEDIA - SQL/MM)

 Ena neo die8nes ergo typopoihshs ISO/IEC gia thn anaptyjh mias
 biblio8hkhs klasewn SQL (SQL class library) gia efarmoges polymeswn
 egkri8hke apo tis arxes toy 1993.  Ayth h nea drasthriothta
 typopoihshs, onomazomenh SQL Multimedia (SQL/MM), 8a ka8orisei paketa
 me orismous afhrhmenwn tupwn dedomenwn SQL (abstract data type- ADT)
 xrhsimopoiwntas tis eykolies gia ton ka8orismo toy ADT kai thn
 proklhsh poy parexetai stis anamenomenes prodiagrafes toy SQL3. To
 SQL/MM exei san stoxo na typopoihsei tis biblio8hkes klasewn gia thn
 episthmh kai mhxanikh, thn full-text epejergasia keimenoy, kai tis
 me8odoys gia diaxeirish antikeimenwn polymeswn opws eikona, hxos,
 animation, moysikh, kai binteo.  8a parexei pi8ana ena SQL language
 binding antikeimeno polymeswn apo alles JTC1 organwseis protypopoihshs
 (p.x. SC18 gia keimena, SC24 gia eikones, kai SC29 gia fwtografies kai
 kinoumenes eikones).

 To plano aytou toy ergoy gia to SQL/MM deixnei oti 8a einai ena
 spondylwto protypo poy 8a apoteleitai apo ena ayjanomeno ari8mo
 tmhmatwn.  To tmhma 1 8a einai ena Plaisio (Framework) poy 8a
 prosdiorizei pws 8a kataskeyastoun ta ypoloipa merh. Ka8e ena apo ta
 ypoloipa merh, 8a einai afosiwmeno se ena sygkekrimeno paketo SQL
 efarmogwn.  H parakatw domh tmhmatwn toy SQL/MM yparxei apo ton
 Augoysto toy 1994:


 �  Tmhma 1: Plaisio. Mh texnikh perigrafh toy pws domeitai to keimeno.

 �  Tmhma 2: Me8odoi Keimenoy kai ADTs gia epejergasia dedomenwn
    keimenoy. Peri tis 45 selides.

 �  Tmhma 3: Xwrikes Me8odoi kai ADTs gia diaxeirish xwrikwn dedomenwn.
    Peri tis 200 selides me syneisfores apo eidikous sta xwrika
    dedomena, apo organwseis 3 xwrwn.

 �  Tmhma 4: Me8odoys Genikou Skopou kai ADTs gia migadikous ari8mous.
    Oi dynatothtes perilambanoyn trigwnometrikes kai ek8etikes
    synarthseis, dianusmata, sunola, klp.  Pros to paron peri tis 90
    selides.

 yparxei ena plh8os stantar ergasiwn ston tomea ton Xwrikwn kai
 Gewgrafikwn Systhmatwn:


 �  ANSI X3L1 - Geographic Information Systems.  Mark Ashworth of
    Unisys is the liason between X3L1 kai ANSI X3H2. He is also the
    editor for parts 1, 3, kai 4 of the SQL/MM draft.

 �  ISO TC 211 - Geographic information/Geomatics

 24.  Texnikh yposthrijh gia thn PostgreSQL

 An exete opoiadhpote texnikh erwthsh h synanthsete opoiodhpote
 problhma mporeite na steilete e-mail sto:

 �  [email protected]

    kai na perimenete apanthsh me e-mail se ligotero apo mia mera.
    Ka8ws h bash twn xrhstwn sto internet einai terastia, kai oi
    xrhstes yposthrizoyn toys alloys xrhstes, to internet 8a einai
    ikano na dwsei eukola texnikh yposthrijh se disekatommuria xrhstes.
    H yposthrijh me Email einai polu pio bolikh apo thn thlefwnikh
    yposthrijh ka8ws mporeite na kanete cut kai paste ta mhnumata
    la8wn, thn ejodo toy programmatos klp. kai na to metadwsete eukola
    sth lista allhlografias/newsgroup.

 Sto prosexes mellon, o organismos ths PostgreSQL 8a poyla texnikh
 yposthrijh se megales/mikres etaireies, ta esoda poy 8a prokucoyn 8a
 xrhsimopoih8oun gia th synthrhsh arketwn mirror sites (web kai ftp) se
 olo ton kosmo.  8a xrhsimopoih8oun epishs gia thn paragwgh ektypwmenhs
 tekmhriwshs, boh8hmatwn, bibliwn poy 8a boh8hsoyn toys pelates.

 Mporeite epishs na boh8h8eite apo symboyleytikes etaireies opws h
 Anderson, WGS (Work Group Solutions). Epikoinwnhste mazi toys gia
 boh8eia -

 �  Work Group Solutions  <http://www.wgs.com>

 �  Anderson Consulting  <http://www.ac.com>

 25.  Oikonomika kai Epaggelmatika 8emata

 Oi emporikes baseis plhrwnoyn pollous foroys, endeiktika anaferoyme :
 omospondiakous, politeiakous, pwlhsewn, ergasiakous, koinwnikhs
 asfaleias, iatrikhs peri8alchs ergazomenwn, 8elghtrwn gia toys
 ergazomenoys, kosth gia marketing kai diafhmish. Ola ayta ta ejoda den
 phgainoyn katey8eian gia thn anaptyjh ths bashs. Otan agorazete mia
 emporikh bash, meros ths timhs phgainei gia epibarunseis opws foroi,
 ejoda kai to isozugio toy kostoys ths bashs R&D.

 Oi emporikes baseis, epishs, prepei na plhrwsoyn gia ktiria/ktismata
 kai na agorasoyn mhxanes Unix, na tis egkatasthsoyn kai na tis
 synthrhsoyn.  Ola ayta ta ejoda epibarunoyn telika ton pelath.

 H PostgreSQL yperexei enanti twn emporikwn basewn mia kai den
 plhrwnoyn amesa foroys ka8ws anaptussetai mesw internet. Ena terastio
 plh8os an8rwpwn syneisferei sthn anaptyjh ths PostgreSQL. Gia
 paradeigma, se mia ypo8etikh periptwsh, an yparxoyn ena ekatommurio
 etaireies sthn Amerikh kai ka8e mia syneisferei 10 $ (ajia toy
 logismikou PostgreSQL) tote ka8e mia 8a labei deka ekatommuria
 dolaria!!  Ayth einai h MAGEIA ths anaptyjhs logismikou sto internet.

 Mexri twra, o phgaios kwdikas ths PostgreSQL einai peripoy 2,00,000
 grammes se kwdika "C", "C++". An to kostos ka8e grammhs kwdika "C"
 einai $ 2 tote to synoliko kostos ths PostgreSQL 8a htan shmera $
 4,00,000 (tetrakosies xiliades dolaria!).

 Polles etaireies hdh anaptussoyn terasties posothtes kwdika "C",
 "C++". Etsi, to na paroyn ton phgaio kwdika ths PostgreSQL kai na
 synergastoun me alles etaireies sto internet 8a wfelhsei thn etaireia
 na ejoikonomhsei xrono kai prospa8eia.

 26.  Lista allwn basewn dedomenwn

 Parakatw akoloy8ei lista allwn SQL basewn dedomenwn gia Unix, Linux.

 �  Pathste kai phgainete sto Applications->databases.
    <http://www.caldera.com/tech-ref/linuxapps/linapps.html>

 �  Pathste kai phgainete sto Applications->databases.
    <http://www.xnet.com/~blatura/linapps.shtml>

 �  Phges gia Baseis Dedomenwn  <http://linas.org/linux/db.html>
    grafthke apo ton Linas Vepstas: [email protected]

 �  Lista dwrean basewn
    <http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html>

 �  Lista RDBMS toy Browne <http://www.hex.net/~cbbrowne/rdbms.html>
    grafthke apo ton Christopher B. Browne [email protected]

 �  Lista Sxesiakwn DBMS toy SAL <http://SAL.KachinaTech.COM/H/1/>

 �  Lista Antikeimenostrafwn DBMS toy SAL
    <http://SAL.KachinaTech.COM/H/2/>

 �  Lista boh8htikwn efarmogwn kai allwn basews toy SAL
    <http://SAL.KachinaTech.COM/H/3/>

 �  ACM SIGMOD. Deikths toy dhmosia dia8esimoy logismikou Basewn
    Dedomenwn <http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/>

 27.  Xrhsimes symboyles gia anazhthseis sto Internet World Wide Web

 To Internet einai aperanto, yparxei se ayto terastia posothta
 logismikou kai mia 8alassa plhroforiwn apo katw toy. Ayjanetai me
 ry8mo 300% ethsiws se olo ton kosmo. Ypologizetai oti yparxoyn peripoy
 10 ekatommuria Web sites se olh th gh!

 Gia na cajete gia plhrofories 8a xrhsimopoihsete mhxanes anazhthshs
 opws to "Yahoo", "Netscape", "Lycos" klp. Phgainete sto Yahoo kai
 pathste sto search.  Xrhsimopoihste tis epiloges filtrarismatos gia na
 sygkekrimenopoihsete ta krithria anazhthshs. H default epilogh
 anazhthshs einai h "Ejypnh anazhthsh" ("Intelligent search") poy einai
 pio genikh kai emfanizei oles tis pi8anothtes. Pathste stis "Epiloges"
 ("Options") gia na dialejete anazhthsh me "akribh frash"("EXACT
 phrase"), anazhthsh me "AND", me "OR", klp.  Me ayton ton tropo 8a
 breite tis plhrofories poy 8elete polu grhgorotera.

 28.  Symperasma

 Meta apo ereyna se oles tis dia8esimes baseis poy einai DWREAN kai o
 phgaios toys kwdikas einai dia8esimos, katalhjame oti MONO h
 PostgreSQL einai h PERISSOTERO wrimh, PERISSOTERO eyrews diadedomenh
 kai isxyrh, dwrean bash RDBMS SQL (antikeimenostrafhs-sxesiakh), ston
 kosmo.

 H PostgreSQL einai idiaitera elkystikh mia kai exei hdh ginei arketh
 doyleia, kai exei odhgous ODBC, JDBC me toys opoioys einai dynato na
 gracete efarmoges anejarthtws bashs. Oi efarmoges poy grafontai sthn
 PostgreSQL me xrhsh odhgwn ODBC, JDBC einai eukola metafersimes se
 alles baseis, opws Oracle, Sybase kai Informix.  Epishs, efarmoges poy
 exoyn graftei se Oracle, Sybase kai Informix me xrhsh odhgwn ODBC,
 JDBC einai eukola metafersimes sthn PostgreSQL.

 Mporei na anarwth8eite "Alla giati PostgreSQL ;" H apanthsh einai oti
 mia kai xreiazetai polu perissoteros xronos gia na anaptyx8ei ena neo
 susthma bashs apo thn arxh, einai logiko na dialejoyme ena susthma
 bashs dedomenwn poy ikanopoiei tis parakatw syn8hkes -

 Ena susthma bashs dedomenwn

 �  toy opoioy o phgaios kwdikas einai dia8esimos

 �  poy den exei periorismous se 8emata adeias, h kapoia prosarthmenh
    idiokthsia se ayto

 �  to opoio dianemetai mesw internet

 �  to opoio anaptussetai edw kai polla xronia.

 �  to opoio ikanopoiei mellontikes anagkes opws thn SQL 3 (SQL 98)

 �  to opoio exei ejeligmenes dynatothtes

    kai apla symbainei na einai h 'PostgreSQL' poy ikanopoiei oles
    aytes tis syn8hkes kai na einai to katallhlo logismiko gia ayth thn
    periptwsh.

 29.  Syxna Diatypwmenes Erwthseis sxetika me thn PostgreSQL

 Phgainete sthn teleytaia ekdosh toy FAQ gia General, Linux kai Irix
 sto

 �  <http://www.postgresql.org/docs/faq-english.shtml>

 30.  Shmeiwsh Pneymatikwn Dikaiwmatwn

 Pneymatikh idiokthsia (c) 1997 toy Al Dev (Alavoor Vasudevan). Ola ta
 dikaiwmata exoyn katoxyrw8ei.

 KAMIA EY8YNH GIA EPAKOLOY8OMENES ZHMIES. Se kamia periptwsh o
 syggrafeas toy keimenoy den einai ypeu8ynos gia opoiadhpote zhmia
 (symperilambanomenwn xwris periorismo, twn eidikwn, anapantexwn,
 epakoloy8wn, h ameswn/ emmeswn zhmiwn, proswpikwn blabwn, apwleia
 epaggelmatikwn kerdwn, diakoph ergasias, apwleia epaggelmatikwn
 dedomenwn, h opoiadhpote xrhmatikh apwleia) poy prokucei apo th xrhsh
 aytou toy keimenoy.

 O syggrafeas den eggyatai thn or8othta, xrhsimothta, emporikothta toy
 keimenoy.  Oi markes, etaireies kai ta onomata twn proiontwn poy
 anaferontai se ayto to keimeno einai shma katate8en twn antistoixwn
 idiokthtwn.  Sas parapempoyme sta jexwrista shmeiwmata pneymatikhs
 idiokthsias twn etaireiwn kai proiontwn poy anafer8hkan se ayto to
 keimeno. Einai dikh sas ey8unh na diabasete kai na katalabete ta
 shmeiwmata pneymatikhs idiokthsias twn organismwn /etaireiwn/proiontwn
 /syggrafewn poy anafer8hkan se ayto to keimeno prin na xrhsimopoihsete
 tis antistoixes plhrofories.

 AE.  Pararthma A - Suntajh toy ANSI/ISO SQL 1992

































































 Ayto to arxeio periexei to dendroeidh diadromh me proteraiothta ba8oys (depth-first tree traversal) toy BNF gia th glwssa, poy oloklhrw8hke stis 27-AYG-1992 11:03:41.64.
 H sygkekrimenh ekdosh toy BNF poy perilambanetai edw einai h:  ANSI-only, SQL2-only.


 <SQL terminal character> ::=
       <SQL language character>
     | <SQL embedded language character>

 <SQL language character> ::=
       <simple Latin letter>
     | <digit>
     | <SQL special character>

 <simple Latin letter> ::=
       <simple Latin upper case letter>
     | <simple Latin lower case letter>

 <simple Latin upper case letter> ::=
           A | B | C | D | E | F | G | H | I | J | K | L | M | N | O
     | P | Q | R | S | T | U | V | W | X | Y | Z

 <simple Latin lower case letter> ::=
           a | b | c | d | e | f | g | h | i | j | k | l | m | n | o
     | p | q | r | s | t | u | v | w | x | y | z

 <digit> ::=
     0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

 <SQL special character> ::=
       <space>
     | <double quote>
     | <percent>
     | <ampersand>
     | <quote>
     | <left paren>
     | <right paren>
     | <asterisk>
     | <plus sign>
     | <comma>
     | <minus sign>
     | <period>
     | <solidus>
     | <colon>
     | <semicolon>
     | <less than operator>
     | <equals operator>
     | <greater than operator>
     | <question mark>
     | <underscore>
     | <vertical bar>

 <space> ::= !! <EMPHASIS>(space character in character set in use)

 <double quote> ::= "

 <percent> ::= %

 <ampersand> ::= &

 <quote> ::= '

 <left paren> ::= (

 <right paren> ::= )

 <asterisk> ::= *
 <plus sign> ::= +

 <comma> ::= ,

 <minus sign> ::= -

 <period> ::= .

 <solidus> ::= /

 <colon> ::= :

 <semicolon> ::= ;

 <less than operator> ::= <

 <equals operator> ::= =

 <greater than operator> ::= >

 <question mark> ::= ?

 <underscore> ::= _

 <vertical bar> ::= |

 <SQL embedded language character> ::=
       <left bracket>
     | <right bracket>

 <left bracket> ::= [

 <right bracket> ::= ]

 <token> ::=
       <nondelimiter token>
     | <delimiter token>

 <nondelimiter token> ::=
       <regular identifier>
     | <key word>
     | <unsigned numeric literal>
     | <national character string literal>
     | <bit string literal>
     | <hex string literal>

 <regular identifier> ::= <identifier body>

 <identifier body> ::=
     <identifier start> [ ( <underscore> | <identifier part> )... ]

 <identifier start> ::= <EMPHASIS>(!! See the Syntax Rules)

 <identifier part> ::=
       <identifier start>
     | <digit>

 <key word> ::=
       <reserved word>
     | <non-reserved word>

 <reserved word> ::=
       ABSOLUTE | ACTION | ADD | ALL
     | ALLOCATE | ALTER | AND
     | ANY | ARE
     | AS | ASC
     | ASSERTION | AT
     | AUTHORIZATION | AVG
     | BEGIN | BETWEEN | BIT | BIT_LENGTH
     | BOTH | BY
     | CASCADE | CASCADED | CASE | CAST
     | CATALOG
     | CHAR | CHARACTER | CHAR_LENGTH
     | CHARACTER_LENGTH | CHECK | CLOSE | COALESCE
     | COLLATE | COLLATION
     | COLUMN | COMMIT
     | CONNECT
     | CONNECTION | CONSTRAINT
     | CONSTRAINTS | CONTINUE
     | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS
     | CURRENT
     | CURRENT_DATE | CURRENT_TIME
     | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR
     | DATE | DAY | DEALLOCATE | DEC
     | DECIMAL | DECLARE | DEFAULT | DEFERRABLE
     | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR
     | DIAGNOSTICS
     | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
     | ELSE | END | END-EXEC | ESCAPE
     | EXCEPT | EXCEPTION
     | EXEC | EXECUTE | EXISTS
     | EXTERNAL | EXTRACT
     | FALSE | FETCH | FIRST | FLOAT | FOR
     | FOREIGN | FOUND | FROM | FULL
     | GET | GLOBAL | GO | GOTO
     | GRANT | GROUP
     | HAVING | HOUR
     | IDENTITY | IMMEDIATE | IN | INDICATOR
     | INITIALLY | INNER | INPUT
     | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT
     | INTERVAL | INTO | IS
     | ISOLATION
     | JOIN
     | KEY
     | LANGUAGE | LAST | LEADING | LEFT
     | LEVEL | LIKE | LOCAL | LOWER
     | MATCH | MAX | MIN | MINUTE | MODULE
     | MONTH
     | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO
     | NOT | NULL
     | NULLIF | NUMERIC
     | OCTET_LENGTH | OF
     | ON | ONLY | OPEN | OPTION | OR
     | ORDER | OUTER
     | OUTPUT | OVERLAPS
     | PAD | PARTIAL | POSITION | PRECISION | PREPARE
     | PRESERVE | PRIMARY
     | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
     | READ | REAL | REFERENCES | RELATIVE | RESTRICT
     | REVOKE | RIGHT
     | ROLLBACK | ROWS
     | SCHEMA | SCROLL | SECOND | SECTION
     | SELECT
     | SESSION | SESSION_USER | SET
     | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE
     | SQLERROR | SQLSTATE
     | SUBSTRING | SUM | SYSTEM_USER
     | TABLE | TEMPORARY
     | THEN | TIME | TIMESTAMP
     | TIMEZONE_HOUR | TIMEZONE_MINUTE
     | TO | TRAILING | TRANSACTION
     | TRANSLATE | TRANSLATION | TRIM | TRUE
     | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE
     | USER | USING
     | VALUE | VALUES | VARCHAR | VARYING | VIEW
     | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
     | YEAR
     | ZONE

 <non-reserved word> ::=

       ADA
     | C | CATALOG_NAME
     | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
     | CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG
     | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION
     | COMMITTED
     | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME
     | CONSTRAINT_SCHEMA | CURSOR_NAME
     | DATA | DATETIME_INTERVAL_CODE
     | DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION
     | FORTRAN
     | LENGTH
     | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS
     | NAME | NULLABLE | NUMBER
     | PASCAL | PLI
     | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE
     | ROW_COUNT
     | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN
     | TABLE_NAME | TYPE
     | UNCOMMITTED | UNNAMED

 <unsigned numeric literal> ::=
       <exact numeric literal>
     | <approximate numeric literal>

 <exact numeric literal> ::=
       <unsigned integer> [ <period> [ <unsigned integer> ] ]
     | <period> <unsigned integer>

 <unsigned integer> ::= <digit>...

 <approximate numeric literal> ::= <mantissa> E <exponent>

 <mantissa> ::= <exact numeric literal>

 <exponent> ::= <signed integer>

 <signed integer> ::= [ <sign> ] <unsigned integer>

 <sign> ::= <plus sign> | <minus sign>

 <national character string literal> ::=
     N <quote> [ <character representation>... ] <quote>
       [ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]

 <character representation> ::=
       <nonquote character>
     | <quote symbol>

 <nonquote character> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <quote symbol> ::= <quote><quote>

 <separator> ::= ( <comment> | <space> | <newline> )...

 <comment> ::=
     <comment introducer> [ <comment character>... ] <newline>
 <comment introducer> ::= <minus sign><minus sign>[<minus sign>...]

 <comment character> ::=
       <nonquote character>
     | <quote>

 <newline> ::= !! <EMPHASIS>(implementation-defined end-of-line indicator)

 <bit string literal> ::=
     B <quote> [ <bit>... ] <quote>
       [ ( <separator>... <quote> [ <bit>... ] <quote> )... ]

 <bit> ::= 0 | 1

 <hex string literal> ::=
     X <quote> [ <hexit>... ] <quote>
       [ ( <separator>... <quote> [ <hexit>... ] <quote> )... ]

 <hexit> ::= <digit> | A | B | C | D | E | F | a | b | c | d | e | f

 <delimiter token> ::=
       <character string literal>
     | <date string>
     | <time string>
     | <timestamp string>
     | <interval string>
     | <delimited identifier>
     | <SQL special character>
     | <not equals operator>
     | <greater than or equals operator>
     | <less than or equals operator>
     | <concatenation operator>
     | <double period>
     | <left bracket>
     | <right bracket>

 <character string literal> ::=
     [ <introducer><character set specification> ]
     <quote> [ <character representation>... ] <quote>
       [ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]

 <introducer> ::= <underscore>

 <character set specification> ::=
       <standard character repertoire name>
     | <implementation-defined character repertoire name>
     | <user-defined character repertoire name>
     | <standard universal character form-of-use name>
     | <implementation-defined universal character form-of-use name>

 <standard character repertoire name> ::= <character set name>

 <character set name> ::= [ <schema name> <period> ]
       <SQL language identifier>

 <schema name> ::=
     [ <catalog name> <period> ] <unqualified schema name>

 <catalog name> ::= <identifier>

 <identifier> ::=
     [ <introducer><character set specification> ] <actual identifier>

 <actual identifier> ::=
       <regular identifier>
     | <delimited identifier>
 <delimited identifier> ::=
     <double quote> <delimited identifier body> <double quote>

 <delimited identifier body> ::= <delimited identifier part>...

 <delimited identifier part> ::=
       <nondoublequote character>
     | <doublequote symbol>

 <nondoublequote character> ::= <EMPHASIS>(!! See the Syntax Rules)

 <doublequote symbol> ::= <double quote><double quote>

 <unqualified schema name> ::= <identifier>

 <SQL language identifier> ::=
     <SQL language identifier start>
        [ ( <underscore> | <SQL language identifier part> )... ]

 <SQL language identifier start> ::= <simple Latin letter>

 <SQL language identifier part> ::=
       <simple Latin letter>
     | <digit>

 <implementation-defined character repertoire name> ::=
     <character set name>

 <user-defined character repertoire name> ::= <character set name>

 <standard universal character form-of-use name> ::=
     <character set name>

 <implementation-defined universal character form-of-use name> ::=
     <character set name>

 <date string> ::=
     <quote> <date value> <quote>

 <date value> ::=
     <years value> <minus sign> <months value>
         <minus sign> <days value>

 <years value> ::= <datetime value>

 <datetime value> ::= <unsigned integer>

 <months value> ::= <datetime value>

 <days value> ::= <datetime value>

 <time string> ::=
     <quote> <time value> [ <time zone interval> ] <quote>

 <time value> ::=
     <hours value> <colon> <minutes value> <colon> <seconds value>

 <hours value> ::= <datetime value>

 <minutes value> ::= <datetime value>

 <seconds value> ::=
       <seconds integer value> [ <period> [ <seconds fraction> ] ]

 <seconds integer value> ::= <unsigned integer>

 <seconds fraction> ::= <unsigned integer>

 <time zone interval> ::=
     <sign> <hours value> <colon> <minutes value>

 <timestamp string> ::=
     <quote> <date value> <space> <time value>
         [ <time zone interval> ] <quote>

 <interval string> ::=
     <quote> ( <year-month literal> | <day-time literal> ) <quote>

 <year-month literal> ::=
       <years value>
     | [ <years value> <minus sign> ] <months value>

 <day-time literal> ::=
       <day-time interval>
     | <time interval>

 <day-time interval> ::=
     <days value>
       [ <space> <hours value> [ <colon> <minutes value>
         [ <colon> <seconds value> ] ] ]

 <time interval> ::=
       <hours value> [ <colon> <minutes value> [ <colon> <seconds value> ] ]
     | <minutes value> [ <colon> <seconds value> ]
     | <seconds value>

 <not equals operator> ::= <>

 <greater than or equals operator> ::= >=

 <less than or equals operator> ::= <=

 <concatenation operator> ::= ||

 <double period> ::= ..

 <module> ::=
     <module name clause>
     <language clause>
     <module authorization clause>
     [ <temporary table declaration>... ]
     <module contents>...

 <module name clause> ::=
     MODULE [ <module name> ]
       [ <module character set specification> ]

 <module name> ::= <identifier>

 <module character set specification> ::=
     NAMES ARE <character set specification>

 <language clause> ::=
     LANGUAGE <language name>

 <language name> ::=
     ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI

 <module authorization clause> ::=
       SCHEMA <schema name>
     | AUTHORIZATION <module authorization identifier>
     | SCHEMA <schema name>
           AUTHORIZATION <module authorization identifier>

 <module authorization identifier> ::=
     <authorization identifier>

 <authorization identifier> ::= <identifier>

 <temporary table declaration> ::=
     DECLARE LOCAL TEMPORARY TABLE
         <qualified local table name>
       <table element list>
       [ ON COMMIT ( PRESERVE | DELETE ) ROWS ]

 <qualified local table name> ::=
     MODULE <period> <local table name>

 <local table name> ::= <qualified identifier>

 <qualified identifier> ::= <identifier>

 <table element list> ::=
       <left paren> <table element> [ ( <comma> <table element> )... ] <right paren>

 <table element> ::=
       <column definition>
     | <table constraint definition>

 <column definition> ::=
     <column name> ( <data type> | <domain name> )
     [ <default clause> ]
     [ <column constraint definition>... ]
     [ <collate clause> ]

 <column name> ::= <identifier>

 <data type> ::=
       <character string type>
            [ CHARACTER SET <character set specification> ]
     | <national character string type>
     | <bit string type>
     | <numeric type>
     | <datetime type>
     | <interval type>

 <character string type> ::=
       CHARACTER [ <left paren> <length> <right paren> ]
     | CHAR [ <left paren> <length> <right paren> ]
     | CHARACTER VARYING <left paren> <length> <right paren>
     | CHAR VARYING <left paren> <length> <right paren>
     | VARCHAR <left paren> <length> <right paren>

 <length> ::= <unsigned integer>

 <national character string type> ::=
       NATIONAL CHARACTER [ <left paren> <length> <right paren> ]
     | NATIONAL CHAR [ <left paren> <length> <right paren> ]
     | NCHAR [ <left paren> <length> <right paren> ]
     | NATIONAL CHARACTER VARYING <left paren> <length> <right paren>
     | NATIONAL CHAR VARYING <left paren> <length> <right paren>
     | NCHAR VARYING <left paren> <length> <right paren>

 <bit string type> ::=
       BIT [ <left paren> <length> <right paren> ]
     | BIT VARYING <left paren> <length> <right paren>

 <numeric type> ::=
       <exact numeric type>
     | <approximate numeric type>

 <exact numeric type> ::=
       NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
     | DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
     | DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
     | INTEGER
     | INT
     | SMALLINT

 <precision> ::= <unsigned integer>

 <scale> ::= <unsigned integer>

 <approximate numeric type> ::=
       FLOAT [ <left paren> <precision> <right paren> ]
     | REAL
     | DOUBLE PRECISION

 <datetime type> ::=
       DATE
     | TIME [ <left paren> <time precision> <right paren> ]
           [ WITH TIME ZONE ]
     | TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
           [ WITH TIME ZONE ]

 <time precision> ::= <time fractional seconds precision>

 <time fractional seconds precision> ::= <unsigned integer>

 <timestamp precision> ::= <time fractional seconds precision>

 <interval type> ::= INTERVAL <interval qualifier>

 <interval qualifier> ::=
       <start field> TO <end field>
     | <single datetime field>

 <start field> ::=
     <non-second datetime field>
         [ <left paren> <interval leading field precision> <right paren> ]

 <non-second datetime field> ::= YEAR | MONTH | DAY | HOUR
     | MINUTE

 <interval leading field precision> ::= <unsigned integer>

 <end field> ::=
       <non-second datetime field>
     | SECOND [ <left paren> <interval fractional seconds precision> <right paren> ]

 <interval fractional seconds precision> ::= <unsigned integer>

 <single datetime field> ::=
       <non-second datetime field>
           [ <left paren> <interval leading field precision> <right paren> ]
     | SECOND [ <left paren> <interval leading field precision>
           [ <comma> <interval fractional seconds precision> ] <right paren> ]

 <domain name> ::= <qualified name>

 <qualified name> ::=
     [ <schema name> <period> ] <qualified identifier>

 <default clause> ::=
       DEFAULT <default option>

 <default option> ::=
       <literal>
     | <datetime value function>
     | USER
     | CURRENT_USER
     | SESSION_USER
     | SYSTEM_USER
     | NULL

 <literal> ::=
       <signed numeric literal>
     | <general literal>

 <signed numeric literal> ::=
     [ <sign> ] <unsigned numeric literal>

 <general literal> ::=
       <character string literal>
     | <national character string literal>
     | <bit string literal>
     | <hex string literal>
     | <datetime literal>
     | <interval literal>

 <datetime literal> ::=
       <date literal>
     | <time literal>
     | <timestamp literal>

 <date literal> ::=
     DATE <date string>

 <time literal> ::=
     TIME <time string>

 <timestamp literal> ::=
     TIMESTAMP <timestamp string>

 <interval literal> ::=
     INTERVAL [ <sign> ] <interval string> <interval qualifier>

 <datetime value function> ::=
       <current date value function>
     | <current time value function>
     | <current timestamp value function>

 <current date value function> ::= CURRENT_DATE

 <current time value function> ::=
       CURRENT_TIME [ <left paren> <time precision> <right paren> ]

 <current timestamp value function> ::=
       CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]

 <column constraint definition> ::=
     [ <constraint name definition> ]
     <column constraint>
       [ <constraint attributes> ]

 <constraint name definition> ::= CONSTRAINT <constraint name>

 <constraint name> ::= <qualified name>

 <column constraint> ::=
       NOT NULL
     | <unique specification>
     | <references specification>
     | <check constraint definition>

 <unique specification> ::=
     UNIQUE | PRIMARY KEY

 <references specification> ::=
     REFERENCES <referenced table and columns>
       [ MATCH <match type> ]
       [ <referential triggered action> ]

 <referenced table and columns> ::=
      <table name> [ <left paren> <reference column list> <right paren> ]

 <table name> ::=
       <qualified name>
     | <qualified local table name>

 <reference column list> ::= <column name list>

 <column name list> ::=
     <column name> [ ( <comma> <column name> )... ]

 <match type> ::=
       FULL
     | PARTIAL

 <referential triggered action> ::=
       <update rule> [ <delete rule> ]
     | <delete rule> [ <update rule> ]

 <update rule> ::= ON UPDATE <referential action>

 <referential action> ::=
       CASCADE
     | SET NULL
     | SET DEFAULT
     | NO ACTION

 <delete rule> ::= ON DELETE <referential action>

 <check constraint definition> ::=
     CHECK
         <left paren> <search condition> <right paren>

 <search condition> ::=
       <boolean term>
     | <search condition> OR <boolean term>

 <boolean term> ::=
       <boolean factor>
     | <boolean term> AND <boolean factor>

 <boolean factor> ::=
     [ NOT ] <boolean test>

 <boolean test> ::=
     <boolean primary> [ IS [ NOT ]
           <truth value> ]

 <boolean primary> ::=
       <predicate>
     | <left paren> <search condition> <right paren>

 <predicate> ::=
       <comparison predicate>
     | <between predicate>
     | <in predicate>
     | <like predicate>
     | <null predicate>
     | <quantified comparison predicate>
     | <exists predicate>
     | <unique predicate>
     | <match predicate>
     | <overlaps predicate>

 <comparison predicate> ::=
     <row value constructor> <comp op>
         <row value constructor>

 <row value constructor> ::=
        <row value constructor element>
     | <left paren> <row value constructor list> <right paren>
     | <row subquery>

 <row value constructor element> ::=
       <value expression>
     | <null specification>
     | <default specification>

 <value expression> ::=
       <numeric value expression>
     | <string value expression>
     | <datetime value expression>
     | <interval value expression>

 <numeric value expression> ::=
       <term>
     | <numeric value expression> <plus sign> <term>
     | <numeric value expression> <minus sign> <term>

 <term> ::=
       <factor>
     | <term> <asterisk> <factor>
     | <term> <solidus> <factor>

 <factor> ::=
     [ <sign> ] <numeric primary>

 <numeric primary> ::=
       <value expression primary>
     | <numeric value function>

 <value expression primary> ::=
       <unsigned value specification>
     | <column reference>
     | <set function specification>
     | <scalar subquery>
     | <case expression>
     | <left paren> <value expression> <right paren>
     | <cast specification>

 <unsigned value specification> ::=
       <unsigned literal>
     | <general value specification>

 <unsigned literal> ::=
       <unsigned numeric literal>
     | <general literal>

 <general value specification> ::=
       <parameter specification>
     | <dynamic parameter specification>
     | <variable specification>
     | USER
     | CURRENT_USER
     | SESSION_USER
     | SYSTEM_USER
     | VALUE

 <parameter specification> ::=
     <parameter name> [ <indicator parameter> ]

 <parameter name> ::= <colon> <identifier>

 <indicator parameter> ::=
     [ INDICATOR ] <parameter name>

 <dynamic parameter specification> ::= <question mark>

 <variable specification> ::=
     <embedded variable name> [ <indicator variable> ]

 <embedded variable name> ::=
     <colon><host identifier>

 <host identifier> ::=
       <Ada host identifier>
     | <C host identifier>
     | <COBOL host identifier>
     | <Fortran host identifier>
     | <MUMPS host identifier>
     | <Pascal host identifier>
     | <PL/I host identifier>

 <Ada host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <C host identifier> ::=
     !! <EMPHASIS>(See the Syntax Rules.)

 <COBOL host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <Fortran host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <MUMPS host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <Pascal host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <PL/I host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <indicator variable> ::=
     [ INDICATOR ] <embedded variable name>

 <column reference> ::= [ <qualifier> <period> ] <column name>

 <qualifier> ::=
       <table name>
     | <correlation name>

 <correlation name> ::= <identifier>

 <set function specification> ::=
       COUNT <left paren> <asterisk> <right paren>
     | <general set function>

 <general set function> ::=
       <set function type>
           <left paren> [ <set quantifier> ] <value expression> <right paren>

 <set function type> ::=
     AVG | MAX | MIN | SUM | COUNT

 <set quantifier> ::= DISTINCT | ALL

 <scalar subquery> ::= <subquery>

 <subquery> ::= <left paren> <query expression> <right paren>

 <query expression> ::=
       <non-join query expression>
     | <joined table>

 <non-join query expression> ::=
       <non-join query term>
     | <query expression> UNION  [ ALL ]
           [ <corresponding spec> ] <query term>
     | <query expression> EXCEPT [ ALL ]
           [ <corresponding spec> ] <query term>

 <non-join query term> ::=
       <non-join query primary>
     | <query term> INTERSECT [ ALL ]
           [ <corresponding spec> ] <query primary>

 <non-join query primary> ::=
       <simple table>
     | <left paren> <non-join query expression> <right paren>

 <simple table> ::=
       <query specification>
     | <table value constructor>
     | <explicit table>

 <query specification> ::=
     SELECT [ <set quantifier> ] <select list> <table expression>

 <select list> ::=
       <asterisk>
     | <select sublist> [ ( <comma> <select sublist> )... ]

 <select sublist> ::=
       <derived column>
     | <qualifier> <period> <asterisk>

 <derived column> ::= <value expression> [ <as clause> ]

 <as clause> ::= [ AS ] <column name>

 <table expression> ::=
     <from clause>
     [ <where clause> ]
     [ <group by clause> ]
     [ <having clause> ]

 <from clause> ::= FROM <table reference>
     [ ( <comma> <table reference> )... ]

 <table reference> ::=
       <table name> [ [ AS ] <correlation name>
           [ <left paren> <derived column list> <right paren> ] ]
     | <derived table> [ AS ] <correlation name>
           [ <left paren> <derived column list> <right paren> ]
     | <joined table>

 <derived column list> ::= <column name list>

 <derived table> ::= <table subquery>

 <table subquery> ::= <subquery>

 <joined table> ::=
       <cross join>
     | <qualified join>
     | <left paren> <joined table> <right paren>

 <cross join> ::=
     <table reference> CROSS JOIN <table reference>

 <qualified join> ::=
     <table reference> [ NATURAL ] [ <join type> ] JOIN
       <table reference> [ <join specification> ]

 <join type> ::=
       INNER
     | <outer join type> [ OUTER ]
     | UNION

 <outer join type> ::=
       LEFT
     | RIGHT
     | FULL

 <join specification> ::=
       <join condition>
     | <named columns join>

 <join condition> ::= ON <search condition>

 <named columns join> ::=
     USING <left paren> <join column list> <right paren>

 <join column list> ::= <column name list>

 <where clause> ::= WHERE <search condition>

 <group by clause> ::=
     GROUP BY <grouping column reference list>

 <grouping column reference list> ::=
     <grouping column reference>
         [ ( <comma> <grouping column reference> )... ]

 <grouping column reference> ::=
     <column reference> [ <collate clause> ]

 <collate clause> ::= COLLATE <collation name>

 <collation name> ::= <qualified name>

 <having clause> ::= HAVING <search condition>

 <table value constructor> ::=
     VALUES <table value constructor list>

 <table value constructor list> ::=
     <row value constructor> [ ( <comma> <row value constructor> )... ]

 <explicit table> ::= TABLE <table name>
 <query term> ::=
       <non-join query term>
     | <joined table>

 <corresponding spec> ::=
     CORRESPONDING [ BY <left paren> <corresponding column list> <right paren> ]

 <corresponding column list> ::= <column name list>

 <query primary> ::=
       <non-join query primary>
     | <joined table>

 <case expression> ::=
       <case abbreviation>
     | <case specification>

 <case abbreviation> ::=
       NULLIF <left paren> <value expression> <comma>
             <value expression> <right paren>
     | COALESCE <left paren> <value expression>
             ( <comma> <value expression> )... <right paren>

 <case specification> ::=
       <simple case>
     | <searched case>

 <simple case> ::=
     CASE <case operand>
       <simple when clause>...
       [ <else clause> ]
     END

 <case operand> ::= <value expression>

 <simple when clause> ::= WHEN <when operand> THEN <result>

 <when operand> ::= <value expression>

 <result> ::= <result expression> | NULL

 <result expression> ::= <value expression>

 <else clause> ::= ELSE <result>

 <searched case> ::=
     CASE
       <searched when clause>...
       [ <else clause> ]
     END

 <searched when clause> ::= WHEN <search condition> THEN <result>

 <cast specification> ::=
     CAST <left paren> <cast operand> AS
         <cast target> <right paren>

 <cast operand> ::=
       <value expression>
     | NULL

 <cast target> ::=
       <domain name>
     | <data type>

 <numeric value function> ::=
       <position expression>
     | <extract expression>
     | <length expression>

 <position expression> ::=
     POSITION <left paren> <character value expression>
         IN <character value expression> <right paren>

 <character value expression> ::=
       <concatenation>
     | <character factor>

 <concatenation> ::=
     <character value expression> <concatenation operator>
         <character factor>

 <character factor> ::=
     <character primary> [ <collate clause> ]

 <character primary> ::=
       <value expression primary>
     | <string value function>

 <string value function> ::=
       <character value function>
     | <bit value function>

 <character value function> ::=
       <character substring function>
     | <fold>
     | <form-of-use conversion>
     | <character translation>
     | <trim function>

 <character substring function> ::=
     SUBSTRING <left paren> <character value expression> FROM <start position>
                 [ FOR <string length> ] <right paren>

 <start position> ::= <numeric value expression>

 <string length> ::= <numeric value expression>

 <fold> ::= ( UPPER | LOWER )
      <left paren> <character value expression> <right paren>

 <form-of-use conversion> ::=
     CONVERT <left paren> <character value expression>
         USING <form-of-use conversion name> <right paren>

 <form-of-use conversion name> ::= <qualified name>

 <character translation> ::=
     TRANSLATE <left paren> <character value expression>
         USING <translation name> <right paren>

 <translation name> ::= <qualified name>

 <trim function> ::=
     TRIM <left paren> <trim operands> <right paren>

 <trim operands> ::=
     [ [ <trim specification> ] [ <trim character> ] FROM ] <trim source>

 <trim specification> ::=
       LEADING
     | TRAILING
     | BOTH

 <trim character> ::= <character value expression>

 <trim source> ::= <character value expression>

 <bit value function> ::=
     <bit substring function>

 <bit substring function> ::=
     SUBSTRING <left paren> <bit value expression> FROM <start position>
         [ FOR <string length> ] <right paren>

 <bit value expression> ::=
       <bit concatenation>
     | <bit factor>

 <bit concatenation> ::=
     <bit value expression> <concatenation operator> <bit factor>

 <bit factor> ::= <bit primary>

 <bit primary> ::=
       <value expression primary>
     | <string value function>

 <extract expression> ::=
     EXTRACT <left paren> <extract field>
         FROM <extract source> <right paren>

 <extract field> ::=
       <datetime field>
     | <time zone field>

 <datetime field> ::=
       <non-second datetime field>
     | SECOND

 <time zone field> ::=
       TIMEZONE_HOUR
     | TIMEZONE_MINUTE

 <extract source> ::=
       <datetime value expression>
     | <interval value expression>

 <datetime value expression> ::=
       <datetime term>
     | <interval value expression> <plus sign> <datetime term>
     | <datetime value expression> <plus sign> <interval term>
     | <datetime value expression> <minus sign> <interval term>

 <interval term> ::=
       <interval factor>
     | <interval term 2> <asterisk> <factor>
     | <interval term 2> <solidus> <factor>
     | <term> <asterisk> <interval factor>

 <interval factor> ::=
     [ <sign> ] <interval primary>

 <interval primary> ::=
       <value expression primary> [ <interval qualifier> ]

 <interval term 2> ::= <interval term>

 <interval value expression> ::=
       <interval term>
     | <interval value expression 1> <plus sign> <interval term 1>
     | <interval value expression 1> <minus sign> <interval term 1>
     | <left paren> <datetime value expression> <minus sign>
           <datetime term> <right paren> <interval qualifier>

 <interval value expression 1> ::= <interval value expression>

 <interval term 1> ::= <interval term>

 <datetime term> ::=
       <datetime factor>

 <datetime factor> ::=
       <datetime primary> [ <time zone> ]

 <datetime primary> ::=
       <value expression primary>
     | <datetime value function>

 <time zone> ::=
     AT <time zone specifier>

 <time zone specifier> ::=
       LOCAL
     | TIME ZONE <interval value expression>

 <length expression> ::=
       <char length expression>
     | <octet length expression>
     | <bit length expression>

 <char length expression> ::=
     ( CHAR_LENGTH | CHARACTER_LENGTH )
         <left paren> <string value expression> <right paren>

 <string value expression> ::=
       <character value expression>
     | <bit value expression>

 <octet length expression> ::=
     OCTET_LENGTH <left paren> <string value expression> <right paren>

 <bit length expression> ::=
     BIT_LENGTH <left paren> <string value expression> <right paren>

 <null specification> ::=
     NULL

 <default specification> ::=
     DEFAULT

 <row value constructor list> ::=
     <row value constructor element>
         [ ( <comma> <row value constructor element> )... ]

 <row subquery> ::= <subquery>

 <comp op> ::=
       <equals operator>
     | <not equals operator>
     | <less than operator>
     | <greater than operator>
     | <less than or equals operator>
     | <greater than or equals operator>
 <between predicate> ::=
     <row value constructor> [ NOT ] BETWEEN
       <row value constructor> AND <row value constructor>

 <in predicate> ::=
     <row value constructor>
       [ NOT ] IN <in predicate value>

 <in predicate value> ::=
       <table subquery>
     | <left paren> <in value list> <right paren>

 <in value list> ::=
     <value expression> ( <comma> <value expression> )...

 <like predicate> ::=
     <match value> [ NOT ] LIKE <pattern>
       [ ESCAPE <escape character> ]

 <match value> ::= <character value expression>

 <pattern> ::= <character value expression>

 <escape character> ::= <character value expression>

 <null predicate> ::= <row value constructor>
     IS [ NOT ] NULL

 <quantified comparison predicate> ::=
     <row value constructor> <comp op> <quantifier> <table subquery>

 <quantifier> ::= <all> | <some>

 <all> ::= ALL

 <some> ::= SOME | ANY

 <exists predicate> ::= EXISTS <table subquery>

 <unique predicate> ::= UNIQUE <table subquery>

 <match predicate> ::=
     <row value constructor> MATCH [ UNIQUE ]
         [ PARTIAL | FULL ] <table subquery>

 <overlaps predicate> ::=
     <row value constructor 1> OVERLAPS <row value constructor 2>

 <row value constructor 1> ::= <row value constructor>

 <row value constructor 2> ::= <row value constructor>

 <truth value> ::=
       TRUE
     | FALSE
     | UNKNOWN

 <constraint attributes> ::=
       <constraint check time> [ [ NOT ] DEFERRABLE ]
     | [ NOT ] DEFERRABLE [ <constraint check time> ]

 <constraint check time> ::=
       INITIALLY DEFERRED
     | INITIALLY IMMEDIATE

 <table constraint definition> ::=
     [ <constraint name definition> ]
     <table constraint> [ <constraint attributes> ]

 <table constraint> ::=
       <unique constraint definition>
     | <referential constraint definition>
     | <check constraint definition>

 <unique constraint definition> ::=
             <unique specification> even in SQL3)
     <unique specification>
       <left paren> <unique column list> <right paren>

 <unique column list> ::= <column name list>

 <referential constraint definition> ::=
     FOREIGN KEY
         <left paren> <referencing columns> <right paren>
       <references specification>

 <referencing columns> ::=
     <reference column list>

 <module contents> ::=
       <declare cursor>
     | <dynamic declare cursor>
     | <procedure>

 <declare cursor> ::=
     DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
       FOR <cursor specification>

 <cursor name> ::= <identifier>

 <cursor specification> ::=
     <query expression> [ <order by clause> ]
       [ <updatability clause> ]

 <order by clause> ::=
     ORDER BY <sort specification list>

 <sort specification list> ::=
     <sort specification> [ ( <comma> <sort specification> )... ]

 <sort specification> ::=
     <sort key> [ <collate clause> ] [ <ordering specification> ]

 <sort key> ::=
       <column name>
     | <unsigned integer>

 <ordering specification> ::= ASC | DESC

 <updatability clause> ::=
     FOR
         ( READ ONLY |
           UPDATE [ OF <column name list> ] )

 <dynamic declare cursor> ::=
     DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
         FOR <statement name>

 <statement name> ::= <identifier>

 <procedure> ::=
     PROCEDURE <procedure name>
         <parameter declaration list> <semicolon>
       <SQL procedure statement> <semicolon>

 <procedure name> ::= <identifier>

 <parameter declaration list> ::=
       <left paren> <parameter declaration>
           [ ( <comma> <parameter declaration> )... ] <right paren>
     | <parameter declaration>...

 <parameter declaration> ::=
       <parameter name> <data type>
     | <status parameter>

 <status parameter> ::=
     SQLCODE | SQLSTATE

 <SQL procedure statement> ::=
       <SQL schema statement>
     | <SQL data statement>
     | <SQL transaction statement>
     | <SQL connection statement>
     | <SQL session statement>
     | <SQL dynamic statement>
     | <SQL diagnostics statement>

 <SQL schema statement> ::=
       <SQL schema definition statement>
     | <SQL schema manipulation statement>

 <SQL schema definition statement> ::=
       <schema definition>
     | <table definition>
     | <view definition>
     | <grant statement>
     | <domain definition>
     | <character set definition>
     | <collation definition>
     | <translation definition>
     | <assertion definition>

 <schema definition> ::=
     CREATE SCHEMA <schema name clause>
       [ <schema character set specification> ]
       [ <schema element>... ]

 <schema name clause> ::=
       <schema name>
     | AUTHORIZATION <schema authorization identifier>
     | <schema name> AUTHORIZATION
           <schema authorization identifier>

 <schema authorization identifier> ::=
     <authorization identifier>

 <schema character set specification> ::=
     DEFAULT CHARACTER
         SET <character set specification>

 <schema element> ::=
       <domain definition>
     | <table definition>
     | <view definition>
     | <grant statement>
     | <assertion definition>
     | <character set definition>
     | <collation definition>
     | <translation definition>

 <domain definition> ::=
     CREATE DOMAIN <domain name>
         [ AS ] <data type>
       [ <default clause> ]
       [ <domain constraint>... ]
       [ <collate clause> ]

 <domain constraint> ::=
     [ <constraint name definition> ]
     <check constraint definition> [ <constraint attributes> ]

 <table definition> ::=
     CREATE [ ( GLOBAL | LOCAL ) TEMPORARY ] TABLE
         <table name>
       <table element list>
       [ ON COMMIT ( DELETE | PRESERVE ) ROWS ]

 <view definition> ::=
     CREATE VIEW <table name> [ <left paren> <view column list>
                                   <right paren> ]
       AS <query expression>
       [ WITH [ <levels clause> ] CHECK OPTION ]

 <view column list> ::= <column name list>

 <levels clause> ::=
     CASCADED | LOCAL

 <grant statement> ::=
    GRANT <privileges> ON <object name>
      TO <grantee> [ ( <comma> <grantee> )... ]
        [ WITH GRANT OPTION ]

 <privileges> ::=
       ALL PRIVILEGES
     | <action list>

 <action list> ::= <action> [ ( <comma> <action> )... ]

 <action> ::=
       SELECT
     | DELETE
     | INSERT [ <left paren> <privilege column list> <right paren> ]
     | UPDATE [ <left paren> <privilege column list> <right paren> ]
     | REFERENCES [ <left paren> <privilege column list> <right paren> ]
     | USAGE

 <privilege column list> ::= <column name list>

 <object name> ::=
       [ TABLE ] <table name>
     | DOMAIN <domain name>
     | COLLATION <collation name>
     | CHARACTER SET <character set name>
     | TRANSLATION <translation name>

 <grantee> ::=
       PUBLIC
     | <authorization identifier>

 <assertion definition> ::=
     CREATE ASSERTION <constraint name> <assertion check>
       [ <constraint attributes> ]
 <assertion check> ::=
     CHECK
         <left paren> <search condition> <right paren>

 <character set definition> ::=
     CREATE CHARACTER SET <character set name>
         [ AS ]
       <character set source>
       [ <collate clause> | <limited collation definition> ]

 <character set source> ::=
       GET <existing character set name>

 <existing character set name> ::=
       <standard character repertoire name>
     | <implementation-defined character repertoire name>
     | <schema character set name>

 <schema character set name> ::= <character set name>

 <limited collation definition> ::=
     COLLATION FROM <collation source>

 <collation source> ::=
       <collating sequence definition>
     | <translation collation>

 <collating sequence definition> ::=
       <external collation>
     | <schema collation name>
     | DESC <left paren> <collation name> <right paren>
     | DEFAULT

 <external collation> ::=
     EXTERNAL <left paren> <quote> <external collation name> <quote> <right paren>

 <external collation name> ::=
       <standard collation name>
     | <implementation-defined collation name>

 <standard collation name> ::= <collation name>

 <implementation-defined collation name> ::= <collation name>

 <schema collation name> ::= <collation name>

 <translation collation> ::=
     TRANSLATION <translation name>
         [ THEN COLLATION <collation name> ]

 <collation definition> ::=
     CREATE COLLATION <collation name> FOR
         <character set specification>
       FROM <collation source>
         [ <pad attribute> ]

 <pad attribute> ::=
       NO PAD
     | PAD SPACE

 <translation definition> ::=
     CREATE TRANSLATION <translation name>
       FOR <source character set specification>
         TO <target character set specification>
       FROM <translation source>

 <source character set specification> ::= <character set specification>

 <target character set specification> ::= <character set specification>

 <translation source> ::=
       <translation specification>

 <translation specification> ::=
       <external translation>
     | IDENTITY
     | <schema translation name>

 <external translation> ::=
     EXTERNAL <left paren> <quote> <external translation name> <quote> <right paren>

 <external translation name> ::=
       <standard translation name>
     | <implementation-defined translation name>

 <standard translation name> ::= <translation name>

 <implementation-defined translation name> ::= <translation name>

 <schema translation name> ::= <translation name>

 <SQL schema manipulation statement> ::=
       <drop schema statement>
     | <alter table statement>
     | <drop table statement>
     | <drop view statement>
     | <revoke statement>
     | <alter domain statement>
     | <drop domain statement>
     | <drop character set statement>
     | <drop collation statement>
     | <drop translation statement>
     | <drop assertion statement>

 <drop schema statement> ::=
     DROP SCHEMA <schema name> <drop behavior>

 <drop behavior> ::= CASCADE | RESTRICT

 <alter table statement> ::=
     ALTER TABLE <table name> <alter table action>

 <alter table action> ::=
       <add column definition>
     | <alter column definition>
     | <drop column definition>
     | <add table constraint definition>
     | <drop table constraint definition>

 <add column definition> ::=
     ADD [ COLUMN ] <column definition>

 <alter column definition> ::=
     ALTER [ COLUMN ] <column name> <alter column action>

 <alter column action> ::=
       <set column default clause>
     | <drop column default clause>

 <set column default clause> ::=
     SET <default clause>

 <drop column default clause> ::=
     DROP DEFAULT

 <drop column definition> ::=
     DROP [ COLUMN ] <column name> <drop behavior>

 <add table constraint definition> ::=
     ADD <table constraint definition>

 <drop table constraint definition> ::=
     DROP CONSTRAINT <constraint name> <drop behavior>

 <drop table statement> ::=
     DROP TABLE <table name> <drop behavior>

 <drop view statement> ::=
     DROP VIEW <table name> <drop behavior>

 <revoke statement> ::=
     REVOKE [ GRANT OPTION FOR ]
         <privileges>
         ON <object name>
       FROM <grantee> [ ( <comma> <grantee> )... ] <drop behavior>

 <alter domain statement> ::=
     ALTER DOMAIN <domain name> <alter domain action>

 <alter domain action> ::=
       <set domain default clause>
     | <drop domain default clause>
     | <add domain constraint definition>
     | <drop domain constraint definition>

 <set domain default clause> ::= SET <default clause>

 <drop domain default clause> ::= DROP DEFAULT

 <add domain constraint definition> ::=
     ADD <domain constraint>

 <drop domain constraint definition> ::=
     DROP CONSTRAINT <constraint name>

 <drop domain statement> ::=
     DROP DOMAIN <domain name> <drop behavior>

 <drop character set statement> ::=
     DROP CHARACTER SET <character set name>

 <drop collation statement> ::=
     DROP COLLATION <collation name>

 <drop translation statement> ::=
     DROP TRANSLATION <translation name>

 <drop assertion statement> ::=
     DROP ASSERTION <constraint name>

 <SQL data statement> ::=
       <open statement>
     | <fetch statement>
     | <close statement>
     | <select statement: single row>
     | <SQL data change statement>

 <open statement> ::=
     OPEN <cursor name>

 <fetch statement> ::=
     FETCH [ [ <fetch orientation> ] FROM ]
       <cursor name> INTO <fetch target list>

 <fetch orientation> ::=
       NEXT
     | PRIOR
     | FIRST
     | LAST
     | ( ABSOLUTE | RELATIVE ) <simple value specification>

 <simple value specification> ::=
       <parameter name>
     | <embedded variable name>
     | <literal>

 <fetch target list> ::=
     <target specification> [ ( <comma> <target specification> )... ]

 <target specification> ::=
       <parameter specification>
     | <variable specification>

 <close statement> ::=
     CLOSE <cursor name>

 <select statement: single row> ::=
     SELECT [ <set quantifier> ] <select list>
       INTO <select target list>
         <table expression>

 <select target list> ::=
     <target specification> [ ( <comma> <target specification> )... ]

 <SQL data change statement> ::=
       <delete statement: positioned>
     | <delete statement: searched>
     | <insert statement>
     | <update statement: positioned>
     | <update statement: searched>

 <delete statement: positioned> ::=
     DELETE FROM <table name>
       WHERE CURRENT OF <cursor name>

 <delete statement: searched> ::=
     DELETE FROM <table name>
       [ WHERE <search condition> ]

 <insert statement> ::=
     INSERT INTO <table name>
       <insert columns and source>

 <insert columns and source> ::=
       [ <left paren> <insert column list> <right paren> ]
             <query expression>
     | DEFAULT VALUES

 <insert column list> ::= <column name list>

 <update statement: positioned> ::=
     UPDATE <table name>
       SET <set clause list>
         WHERE CURRENT OF <cursor name>
 <set clause list> ::=
     <set clause> [ ( <comma> <set clause> )... ]

 <set clause> ::=
     <object column> <equals operator> <update source>

 <object column> ::= <column name>

 <update source> ::=
       <value expression>
     | <null specification>
     | DEFAULT

 <update statement: searched> ::=
     UPDATE <table name>
       SET <set clause list>
       [ WHERE <search condition> ]

 <SQL transaction statement> ::=
       <set transaction statement>
     | <set constraints mode statement>
     | <commit statement>
     | <rollback statement>

 <set transaction statement> ::=
     SET TRANSACTION <transaction mode>
         [ ( <comma> <transaction mode> )... ]

 <transaction mode> ::=
       <isolation level>
     | <transaction access mode>
     | <diagnostics size>

 <isolation level> ::=
     ISOLATION LEVEL <level of isolation>

 <level of isolation> ::=
       READ UNCOMMITTED
     | READ COMMITTED
     | REPEATABLE READ
     | SERIALIZABLE

 <transaction access mode> ::=
       READ ONLY
     | READ WRITE

 <diagnostics size> ::=
     DIAGNOSTICS SIZE <number of conditions>

 <number of conditions> ::= <simple value specification>

 <set constraints mode statement> ::=
     SET CONSTRAINTS <constraint name list>
         ( DEFERRED | IMMEDIATE )

 <constraint name list> ::=
       ALL
     | <constraint name> [ ( <comma> <constraint name> )... ]

 <commit statement> ::=
     COMMIT [ WORK ]

 <rollback statement> ::=
     ROLLBACK [ WORK ]

 <SQL connection statement> ::=
       <connect statement>
     | <set connection statement>
     | <disconnect statement>

 <connect statement> ::=
     CONNECT TO <connection target>

 <connection target> ::=
       <SQL-server name>
         [ AS <connection name> ]
           correspondence with Tony Gordon)
         [ USER <user name> ]
     | DEFAULT

 <SQL-server name> ::= <simple value specification>

 <connection name> ::= <simple value specification>

 <user name> ::= <simple value specification>

 <set connection statement> ::=
     SET CONNECTION <connection object>

 <connection object> ::=
       DEFAULT
     | <connection name>

 <disconnect statement> ::=
     DISCONNECT <disconnect object>

 <disconnect object> ::=
       <connection object>
     | ALL
     | CURRENT

 <SQL session statement> ::=
       <set catalog statement>
     | <set schema statement>
     | <set names statement>
     | <set session authorization identifier statement>
     | <set local time zone statement>

 <set catalog statement> ::=
     SET CATALOG <value specification>

 <value specification> ::=
       <literal>
     | <general value specification>

 <set schema statement> ::=
     SET SCHEMA <value specification>

 <set names statement> ::=
     SET NAMES <value specification>

 <set session authorization identifier statement> ::=
     SET SESSION AUTHORIZATION
         <value specification>

 <set local time zone statement> ::=
     SET TIME ZONE
         <set time zone value>

 <set time zone value> ::=
       <interval value expression>
     | LOCAL
 <SQL dynamic statement> ::=
       <system descriptor statement>
     | <prepare statement>
     | <deallocate prepared statement>
     | <describe statement>
     | <execute statement>
     | <execute immediate statement>
     | <SQL dynamic data statement>

 <system descriptor statement> ::=
       <allocate descriptor statement>
     | <deallocate descriptor statement>
     | <set descriptor statement>
     | <get descriptor statement>

 <allocate descriptor statement> ::=
     ALLOCATE DESCRIPTOR <descriptor name>
        [ WITH MAX <occurrences> ]

 <descriptor name> ::=
     [ <scope option> ] <simple value specification>

 <scope option> ::=
       GLOBAL
     | LOCAL

 <occurrences> ::= <simple value specification>

 <deallocate descriptor statement> ::=
     DEALLOCATE DESCRIPTOR <descriptor name>

 <set descriptor statement> ::=
     SET DESCRIPTOR <descriptor name>
         <set descriptor information>

 <set descriptor information> ::=
       <set count>
     | VALUE <item number>
         <set item information> [ ( <comma> <set item information> )... ]

 <set count> ::=
     COUNT <equals operator> <simple value specification 1>

 <simple value specification 1> ::= <simple value specification>

 <item number> ::= <simple value specification>

 <set item information> ::=
     <descriptor item name> <equals operator> <simple value specification 2>

 <descriptor item name> ::=
       TYPE
     | LENGTH
     | OCTET_LENGTH
     | RETURNED_LENGTH
     | RETURNED_OCTET_LENGTH
     | PRECISION
     | SCALE
     | DATETIME_INTERVAL_CODE
     | DATETIME_INTERVAL_PRECISION
     | NULLABLE
     | INDICATOR
     | DATA
     | NAME
     | UNNAMED
     | COLLATION_CATALOG
     | COLLATION_SCHEMA
     | COLLATION_NAME
     | CHARACTER_SET_CATALOG
     | CHARACTER_SET_SCHEMA
     | CHARACTER_SET_NAME

 <simple value specification 2> ::= <simple value specification>

 <item number> ::= <simple value specification>

 <get descriptor statement> ::=
     GET DESCRIPTOR <descriptor name> <get descriptor information>

 <get descriptor information> ::=
       <get count>
     | VALUE <item number>
         <get item information> [ ( <comma> <get item information> )... ]

 <get count> ::=
     <simple target specification 1> <equals operator>
          COUNT

 <simple target specification 1> ::= <simple target specification>

 <simple target specification> ::=
       <parameter name>
     | <embedded variable name>

 <get item information> ::=
     <simple target specification 2> <equals operator> <descriptor item name>>

 <simple target specification 2> ::= <simple target specification>

 <prepare statement> ::=
     PREPARE <SQL statement name> FROM <SQL statement variable>

 <SQL statement name> ::=
       <statement name>
     | <extended statement name>

 <extended statement name> ::=
     [ <scope option> ] <simple value specification>

 <SQL statement variable> ::= <simple value specification>

 <deallocate prepared statement> ::=
     DEALLOCATE PREPARE <SQL statement name>

 <describe statement> ::=
       <describe input statement>
     | <describe output statement>

 <describe input statement> ::=
     DESCRIBE INPUT <SQL statement name> <using descriptor>

 <using descriptor> ::=
     ( USING | INTO ) SQL DESCRIPTOR <descriptor name>

 <describe output statement> ::=
     DESCRIBE [ OUTPUT ] <SQL statement name> <using descriptor>

 <execute statement> ::=
     EXECUTE <SQL statement name>
       [ <result using clause> ]
       [ <parameter using clause> ]

 <result using clause> ::= <using clause>

 <using clause> ::=
       <using arguments>
     | <using descriptor>

 <using arguments> ::=
     ( USING | INTO ) <argument> [ ( <comma> <argument> )... ]

 <argument> ::= <target specification>

 <parameter using clause> ::= <using clause>

 <execute immediate statement> ::=
     EXECUTE IMMEDIATE <SQL statement variable>

 <SQL dynamic data statement> ::=
       <allocate cursor statement>
     | <dynamic open statement>
     | <dynamic fetch statement>
     | <dynamic close statement>
     | <dynamic delete statement: positioned>
     | <dynamic update statement: positioned>

 <allocate cursor statement> ::=
     ALLOCATE <extended cursor name> [ INSENSITIVE ]
         [ SCROLL ] CURSOR
       FOR <extended statement name>

 <extended cursor name> ::=
     [ <scope option> ] <simple value specification>

 <dynamic open statement> ::=
     OPEN <dynamic cursor name> [ <using clause> ]

 <dynamic cursor name> ::=
       <cursor name>
     | <extended cursor name>

 <dynamic fetch statement> ::=
     FETCH [ [ <fetch orientation> ] FROM ] <dynamic cursor name>
         <using clause>

 <dynamic close statement> ::=
     CLOSE <dynamic cursor name>

 <dynamic delete statement: positioned> ::=
     DELETE FROM <table name>
       WHERE CURRENT OF
           <dynamic cursor name>

 <dynamic update statement: positioned> ::=
     UPDATE <table name>
       SET <set clause>
           [ ( <comma> <set clause> )... ]
         WHERE CURRENT OF
             <dynamic cursor name>

 <SQL diagnostics statement> ::=
     <get diagnostics statement>

 <get diagnostics statement> ::=
     GET DIAGNOSTICS <sql diagnostics information>

 <sql diagnostics information> ::=
       <statement information>
     | <condition information>

 <statement information> ::=
     <statement information item> [ ( <comma> <statement information item> )... ]

 <statement information item> ::=
     <simple target specification> <equals operator> <statement information item name>

 <statement information item name> ::=
       NUMBER
     | MORE
     | COMMAND_FUNCTION
     | DYNAMIC_FUNCTION
     | ROW_COUNT

 <condition information> ::=
     EXCEPTION <condition number>
       <condition information item> [ ( <comma> <condition information item> )... ]

 <condition number> ::= <simple value specification>

 <condition information item> ::=
     <simple target specification> <equals operator> <condition information item name>

 <condition information item name> ::=
       CONDITION_NUMBER
     | RETURNED_SQLSTATE
     | CLASS_ORIGIN
     | SUBCLASS_ORIGIN
     | SERVER_NAME
     | CONNECTION_NAME
     | CONSTRAINT_CATALOG
     | CONSTRAINT_SCHEMA
     | CONSTRAINT_NAME
     | CATALOG_NAME
     | SCHEMA_NAME
     | TABLE_NAME
     | COLUMN_NAME
     | CURSOR_NAME
     | MESSAGE_TEXT
     | MESSAGE_LENGTH
     | MESSAGE_OCTET_LENGTH

 <embedded SQL host program> ::=
       <embedded SQL Ada program>
     | <embedded SQL C program>
     | <embedded SQL COBOL program>
     | <embedded SQL Fortran program>
     | <embedded SQL MUMPS program>
     | <embedded SQL Pascal program>
     | <embedded SQL PL/I program>

 <embedded SQL Ada program> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL C program> ::=
       !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL COBOL program> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL Fortran program> ::=
     !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL MUMPS program> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL Pascal program> ::=
     !! <EMPHASIS>(See the Syntax Rules.)
 <embedded SQL PL/I program> ::= !! <EMPHASIS>(See the Syntax Rules.)

 <embedded SQL declare section> ::=
       <embedded SQL begin declare>
         [ <embedded character set declaration> ]
         [ <host variable definition>... ]
       <embedded SQL end declare>
     | <embedded SQL MUMPS declare>

 <embedded SQL begin declare> ::=
     <SQL prefix> BEGIN DECLARE SECTION
         [ <SQL terminator> ]

 <SQL prefix> ::=
       EXEC SQL
     | <ampersand>SQL<left paren>

 <SQL terminator> ::=
       END-EXEC
     | <semicolon>
     | <right paren>

 <embedded character set declaration> ::=
     SQL NAMES ARE <character set specification>

 <host variable definition> ::=
       <Ada variable definition>
     | <C variable definition>
     | <COBOL variable definition>
     | <Fortran variable definition>
     | <MUMPS variable definition>
     | <Pascal variable definition>
     | <PL/I variable definition>

 <Ada variable definition> ::=
     <Ada host identifier> [ ( <comma> <Ada host identifier> )... ] :
     <Ada type specification> [ <Ada initial value> ]

 <Ada type specification> ::=
       <Ada qualified type specification>
     | <Ada unqualified type specification>

 <Ada qualified type specification> ::=
       SQL_STANDARD.CHAR [ CHARACTER SET
          [ IS ] <character set specification> ]
           <left paren> 1 <double period> <length> <right paren>
     | SQL_STANDARD.BIT
           <left paren> 1 <double period> <length> <right paren>
     | SQL_STANDARD.SMALLINT
     | SQL_STANDARD.INT
     | SQL_STANDARD.REAL
     | SQL_STANDARD.DOUBLE_PRECISION
     | SQL_STANDARD.SQLCODE_TYPE
     | SQL_STANDARD.SQLSTATE_TYPE
     | SQL_STANDARD.INDICATOR_TYPE

 <Ada unqualified type specification> ::=
       CHAR
           <left paren> 1 <double period> <length> <right paren>
     | BIT
           <left paren> 1 <double period> <length> <right paren>
     | SMALLINT
     | INT
     | REAL
     | DOUBLE_PRECISION
     | SQLCODE_TYPE
     | SQLSTATE_TYPE
     | INDICATOR_TYPE

 <Ada initial value> ::=
     <Ada assignment operator> <character representation>...

 <Ada assignment operator> ::= <colon><equals operator>

 <C variable definition> ::=
       [ <C storage class> ]
       [ <C class modifier> ]
       <C variable specification>
     <semicolon>

 <C storage class> ::=
       auto
     | extern
     | static

 <C class modifier> ::= const | volatile

 <C variable specification> ::=
       <C numeric variable>
     | <C character variable>
     | <C derived variable>

 <C numeric variable> ::=
     ( long | short | float | double )
       <C host identifier> [ <C initial value> ]
             [ ( <comma> <C host identifier> [ <C initial value> ] )... ]

 <C initial value> ::=
     <equals operator> <character representation>...

 <C character variable> ::=
     char [ CHARACTER SET
              [ IS ] <character set specification> ]
       <C host identifier>
         <C array specification> [ <C initial value> ]
         [ ( <comma> <C host identifier>
           <C array specification>
                  [ <C initial value> ] )... ]

 <C array specification> ::=
     <left bracket> <length> <right bracket>

 <C derived variable> ::=
       <C VARCHAR variable>
     | <C bit variable>

 <C VARCHAR variable> ::=
     VARCHAR [ CHARACTER SET [ IS ]
         <character set specification> ]
         <C host identifier>
             <C array specification> [ <C initial value> ]
           [ ( <comma> <C host identifier>
               <C array specification>
                       [ <C initial value> ] )... ]

 <C bit variable> ::=
     BIT <C host identifier>
         <C array specification> [ <C initial value> ]
       [ ( <comma> <C host identifier>
         <C array specification>
                    [ <C initial value> ] )... ]

 <COBOL variable definition> ::=
     (01|77) <COBOL host identifier> <COBOL type specification>
       [ <character representation>... ] <period>

 <COBOL type specification> ::=
       <COBOL character type>
     | <COBOL bit type>
     | <COBOL numeric type>
     | <COBOL integer type>

 <COBOL character type> ::=
     [ CHARACTER SET [ IS ]
           <character set specification> ]
     ( PIC | PICTURE ) [ IS ] ( X [ <left paren> <length> <right paren> ] )...

 <COBOL bit type> ::=
     ( PIC | PICTURE ) [ IS ]
         ( B [ <left paren> <length> <right paren> ] )...

 <COBOL numeric type> ::=
     ( PIC | PICTURE ) [ IS ]
       S <COBOL nines specification>
     [ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE

 <COBOL nines specification> ::=
       <COBOL nines> [ V [ <COBOL nines> ] ]
     | V <COBOL nines>

 <COBOL nines> ::= ( 9 [ <left paren> <length> <right paren> ] )...

 <COBOL integer type> ::=
       <COBOL computational integer>
     | <COBOL binary integer>

 <COBOL computational integer> ::=
     ( PIC | PICTURE ) [ IS ] S<COBOL nines>
       [ USAGE [ IS ] ] ( COMP | COMPUTATIONAL )

 <COBOL binary integer> ::=
     ( PIC | PICTURE ) [ IS ] S<COBOL nines>
       [ USAGE [ IS ] ] BINARY

 <Fortran variable definition> ::=
     <Fortran type specification>
     <Fortran host identifier>
         [ ( <comma> <Fortran host identifier> )... ]

 <Fortran type specification> ::=
       CHARACTER [ <asterisk> <length> ]
           [ CHARACTER SET [ IS ]
                 <character set specification> ]
     | BIT [ <asterisk> <length> ]
     | INTEGER
     | REAL
     | DOUBLE PRECISION

 <MUMPS variable definition> ::=
     ( <MUMPS numeric variable> | <MUMPS character variable> )
         <semicolon>

 <MUMPS numeric variable> ::=
     <MUMPS type specification>
       <MUMPS host identifier> [ ( <comma> <MUMPS host identifier> )... ]

 <MUMPS type specification> ::=
       INT
     | DEC
           [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
     | REAL

 <MUMPS character variable> ::=
     VARCHAR <MUMPS host identifier> <MUMPS length specification>
       [ ( <comma> <MUMPS host identifier> <MUMPS length specification> )... ]

 <MUMPS length specification> ::=
     <left paren> <length> <right paren>

 <Pascal variable definition> ::=
     <Pascal host identifier> [ ( <comma> <Pascal host identifier> )... ] <colon>
       <Pascal type specification> <semicolon>

 <Pascal type specification> ::=
       PACKED ARRAY
           <left bracket> 1 <double period> <length> <right bracket>
         OF CHAR
           [ CHARACTER SET [ IS ]
                 <character set specification> ]
     | PACKED ARRAY
           <left bracket> 1 <double period> <length> <right bracket>
         OF BIT
     | INTEGER
     | REAL
     | CHAR [ CHARACTER SET
                                 [ IS ] <character set specification> ]
     | BIT

 <PL/I variable definition> ::=
     (DCL | DECLARE)
         (   <PL/I host identifier>
           | <left paren> <PL/I host identifier>
                 [ ( <comma> <PL/I host identifier> )... ] <right paren> )
     <PL/I type specification>
     [ <character representation>... ] <semicolon>

 <PL/I type specification> ::=
       ( CHAR | CHARACTER ) [ VARYING ]
           <left paren><length><right paren>
           [ CHARACTER SET
                 [ IS ] <character set specification> ]
     | BIT [ VARYING ] <left paren><length><right paren>
     | <PL/I type fixed decimal> <left paren> <precision>
           [ <comma> <scale> ] <right paren>
     | <PL/I type fixed binary> [ <left paren> <precision> <right paren> ]
     | <PL/I type float binary> <left paren> <precision> <right paren>

 <PL/I type fixed decimal> ::=
       ( DEC | DECIMAL ) FIXED
     | FIXED ( DEC | DECIMAL )

 <PL/I type fixed binary> ::=
       ( BIN | BINARY ) FIXED
     | FIXED ( BIN | BINARY )

 <PL/I type float binary> ::=
       ( BIN | BINARY ) FLOAT
     | FLOAT ( BIN | BINARY )

 <embedded SQL end declare> ::=
     <SQL prefix> END DECLARE SECTION
         [ <SQL terminator> ]

 <embedded SQL MUMPS declare> ::=
     <SQL prefix>
       BEGIN DECLARE SECTION
         [ <embedded character set declaration> ]
         [ <host variable definition>... ]
       END DECLARE SECTION
     <SQL terminator>

 <embedded SQL statement> ::=
     <SQL prefix>
       <statement or declaration>
     [ <SQL terminator> ]

 <statement or declaration> ::=
       <declare cursor>
     | <dynamic declare cursor>
     | <temporary table declaration>
     | <embedded exception declaration>
     | <SQL procedure statement>

 <embedded exception declaration> ::=
     WHENEVER <condition> <condition action>

 <condition> ::=
     SQLERROR | NOT FOUND

 <condition action> ::=
     CONTINUE | <go to>

 <go to> ::=
     ( GOTO | GO TO ) <goto target>

 <goto target> ::=
       <host label identifier>
     | <unsigned integer>
     | <host PL/I label variable>

 <host label identifier> ::= !!<EMPHASIS>(See the Syntax Rules.)

 <host PL/I label variable> ::= !!<EMPHASIS>(See the Syntax Rules.)

 <preparable statement> ::=
       <preparable SQL data statement>
     | <preparable SQL schema statement>
     | <preparable SQL transaction statement>
     | <preparable SQL session statement>
     | <preparable implementation-defined statement>

 <preparable SQL data statement> ::=
       <delete statement: searched>
     | <dynamic single row select statement>
     | <insert statement>
     | <dynamic select statement>
     | <update statement: searched>
     | <preparable dynamic delete statement: positioned>
     | <preparable dynamic update statement: positioned>

 <dynamic single row select statement> ::= <query specification>

 <dynamic select statement> ::= <cursor specification>

 <preparable dynamic delete statement: positioned> ::=
    DELETE [ FROM <table name> ]
       WHERE CURRENT OF <cursor name>

 <preparable dynamic update statement: positioned> ::=
    UPDATE [ <table name> ]
       SET <set clause list>
       WHERE CURRENT OF <cursor name>

 <preparable SQL schema statement> ::=
       <SQL schema statement>

 <preparable SQL transaction statement> ::=
       <SQL transaction statement>

 <preparable SQL session statement> ::=
       <SQL session statement>

 <preparable implementation-defined statement> ::=
     !! <EMPHASIS>(See the Syntax Rules.)

 <direct SQL statement> ::=
     <directly executable statement> <semicolon>

 <directly executable statement> ::=
       <direct SQL data statement>
     | <SQL schema statement>
     | <SQL transaction statement>
     | <SQL connection statement>
     | <SQL session statement>
     | <direct implementation-defined statement>

 <direct SQL data statement> ::=
       <delete statement: searched>
     | <direct select statement: multiple rows>
     | <insert statement>
     | <update statement: searched>
     | <temporary table declaration>

 <direct select statement: multiple rows> ::=
     <query expression> [ <order by clause> ]

 <direct implementation-defined statement> ::=
     !!<EMPHASIS>(See the Syntax Rules)

 <SQL object identifier> ::=
     <SQL provenance> <SQL variant>

 <SQL provenance> ::= <arc1> <arc2> <arc3>

 <arc1> ::= iso | 1 | iso <left paren> 1 <right paren>

 <arc2> ::= standard | 0 | standard <left paren> 0 <right paren>

 <arc3> ::= 9075

 <SQL variant> ::= <SQL edition> <SQL conformance>

 <SQL edition> ::= <1987> | <1989> | <1992>

 <1987> ::= 0 | edition1987 <left paren> 0 <right paren>

 <1989> ::= <1989 base> <1989 package>

 <1989 base> ::= 1 | edition1989 <left paren> 1 <right paren>

 <1989 package> ::= <integrity no> | <integrity yes>

 <integrity no> ::= 0 | IntegrityNo <left paren> 0 <right paren>

 <integrity yes> ::= 1 | IntegrityYes <left paren> 1 <right paren>

 <1992> ::= 2 | edition1992 <left paren> 2 <right paren>

 <SQL conformance> ::= <low> | <intermediate> | <high>

 <low> ::= 0 | Low <left paren> 0 <right paren>

 <intermediate> ::= 1 | Intermediate <left paren> 1 <right paren>

 <high> ::= 2 | High <left paren> 2 <right paren>




 AF.  Pararthma B - Odhgos Ekma8hshs SQL gia arxarioys


 AF.1.  Odhgos Ekma8hshs gia PostgreSQL

 Mazi me th dianomh ths PostgreSQL dianeimetai odhgos ekma8hshs SQL.
 Ta scripts toy odhgou ekma8hshs SQL briskontai ston katalogo
 src/tutorial

 AF.2.  Deiktes Internet diey8unsewn

 Oi arxarioi mporoun na broyn odhgo ekma8hshs SQL sto

 �  <http://w3.one.net/~jhoffman/sqltut.htm>

    Sxolia h ypodeijeis; Steilte mail sto

 �  [email protected]

    Ta parakatw sites proteinontai apo ton John Hoffman:

 �  Egxeiridio SQL
    <http://www.contrib.andrew.cmu.edu/~shadow/sql.html>

 �  Epikoinwnhste me thn SQL Pro
    <http://www.inquiry.com/techtips/thesqlpro/>

 �  Xrhsima Sites gia th sxesiakh bash dedomenwn SQL Pro
    <http://www.inquiry.com/techtips/thesqlpro/usefulsites.html>

 �  Kwdikas gia programmatistes
    <http://infoweb.magi.com/~steve/develop.html>

 �  DBMS Sites  <http://info.itu.ch/special/wwwfiles> Phgainete edw kai
    deite to arxeio comp_db.html

 �  DB Ingredients  <http://www.compapp.dcu.ie/databases/f017.html>

 �  Web Authoring  <http://www.stars.com/Tutorial/CGI/>

 �  Computing Dictionary   <http://wfn-shop.princeton.edu/cgi-
    bin/foldoc>

 �  DBMS Lab/Links  <http://www-ccs.cs.umass.edu/db.html>

 �  SQL FAQ
    <http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ>
    Phgainete edw kai deite to arxeio SQL_TOC.html

 �  Baseis SQL  <http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html>

 �  RIT Selida gia Sxediasmo Basewn
    <http://www.it.rit.edu/~wjs/IT/199602/icsa720/icsa720postings.html>
 �  Database Jump Site  <http://www.pcslink.com/~ej/dbweb.html>

 �  Boh8hmata programmatismou sto Web
    <http://www.eng.uc.edu/~jtilley/tutorial.html>

 �  Phges gia Programmatistes
    <http://www.ndev.com/ndc2/support/resources.htp>

 �  Lista erwthsewn  <http://ashok.pair.com/sql.htm>

 �  Diafora IMAGE SQL
    <http://jazz.external.hp.com/training/sqltables/main.html>

 �  Internet Resource List  <http://www.eit.com/web/netservices.html>

 AG.  Appendix C - Odhgies gia grhgorh egkatastash Linux

 An skopeuete na xrhsimopoihsete th PostgreSQL se Linux, kai xreiazeste
 boh8eia kata thn egkatastash sto Linux, episkefteite toys deiktes poy
 8a breite sto Appendix. Kaluptoyn ta parakatw 8emata -


 �  Xarakthristika toy Linux - Giati to Linux einai kalutero gia
    ejyphrethth basewn dedomenwn se sugkrish me ta Windows 95/NT

 �  Odhgies gia 10lepth grhgorh egkatastash Linux

 �  Lista analogiwn Microsoft-Linux

 �  Grhgora bhmata gia na metaglwttisete ton pyrhna Linux


 �  Main Site is at  <http://members.spree.com/technology/aldev/>

 �  Mirror site  <http://aldev.8m.com>

 �  Mirror site  <http://aldev.webjump.com>

 �  Mirror site  <http://homepages.infoseek.com/~aldev1/index.html>

 �  Mirror site  <http://www3.bcity.com/aldev/>