Linux ªº Database-SQL-RDBMS HOW-TO ¤å¥ó (PostgreSQL ª«¥óÃöÁp¸ê®Æ®w¨t²Î) §@ªÌ¡JAl Dev (Alavoor Vasudevan) [1]alavoor@yahoo.com ĶªÌ¡J´¿¹F±d [2]a9504480@graduate.hku.hk ¤@¤E¤E¤E¦~¤@¤ë¤K¤é¡A11.0ª© _________________________________________________________________ ¥»¤å¥ó¬O¤@¥÷¤¶²Ð¦p¦ó¦b Unix ¨t²Î§Ö±¶¦a«Ø¥ß¤@­Ó SQL ¸ê®Æ®w¤ÞÀº (Database Engine) ¤Î«eºÝ¤u¨ãªº¡u¹ê¥Î«ü«n¡v¡C¥¦¤]°Q½×°ê»Ú¼Ð·Çªº ANSI/ISO SQL »y¨¥¤Î±´°Q¦b¤¬Ápºô¤¤¡u¶}©ñ¦¡¶}µo¡vÀô¹Ò ("open development" environment) ¶}µo SQL ¸ê®Æ®w¤ÞÀºªºÀuÂI¡C¥¦¬OÃö©ó¦p¦ó¦b Unix ¨t²Î¤¤«Ø¥ß PostgreSQL ³o­Ó¬J¥i¥Î§@À³¥Îµ{¦¡¸ê®Æ®w¦øªA¾¹ (Application Database Server)¡A¤S¦b¥Î§@¸Uºûºô¸ê®Æ®w¦øªA¾¹ (Web Database Server) ªº·s¤@¥Nª«¥óÃöÁp¦¡¸ê®Æ®w¡CPostgreSQL ¹ê½î³¡¥÷ 1998, 92, 89 ªº°ê»Ú¼Ð·Ç ISO / ANSI SQL¡C¥»¤å¥ó¤]´£¨ÑÃö©ó¸ê®Æ®wªº¤¶­±µ{¦¡¡A¦p «eºÝ¹Ï¹³¤¶­±¡BÀ³¥Îµ{¦¡°ª³t¶}µo (Rapid Application Development) ¤u¨ã ¡BODBC¡BJDBC ÅX°Êµ{¦¡¡BC¡BC++¡BJava¡BPerl µ{¦¡»y¨¥¤¶­±©Mºô¤W¸ê®Æ®w¤u¨ã ¡C³o¸Ì´£¨Ñªº¸ê®Æ¾A¥Î©ó©Ò¦³ Unix ¥­¥x¤Î¨ä¥L¸ê®Æ®w¡A¹ï¸ê®Æ®w¡BSQL »y¨¥¤Î PostgreSQL ªº·s¤â«D±`¦³¥Î¡C³o¸Ì´£¨Ñªº¸ê®Æ¾A¥Î©ó©Ò¦³ Unix ¥­¥x¤Î©Ò¦³¨ä¥L SQL ¸ê®Æ®w¡C³o¹ï¸ê®Æ®w¡BSQL »y¨¥©M PostgreSQL ªºªì¾ÇªÌ·|«D±`¦³¥Î¡C³o¤å ¥ó¤]¦³¤@­Ó SQL ªº¾É½×¡A¸ÑÄÀ SQL ªº»yªk¡A¹ïªì¾ÇªÌ«D±`¦³¥Î¡C¦³¸gÅ窺¥Î®a ·|ı±o³o¬O¤@¥÷¦³¥Îªº°Ñ¦Ò¸ê®Æ¡C¹ï¾Ç¥Í¨Ó»¡¡A³o³B´£¨Ñªº¸ê®Æ·|Åý¥L­Ì±o¨ì PostgresSQL ÃöÁp¦¡¸ê®Æ®wªº·½µ{¦¡½X¡A±q¦Ó¾Ç²ß¦p¦ó½s¼g¤@­Óª«¥óÃöÁp¦¡ SQL ¸ê®Æ®w¡C _________________________________________________________________ 1. ¤Þ¨¥ 2. ¥»¤å¥óªº¨ä¥L®æ¦¡ 3. ª«²z©w«ß¤]¾A¥Î©ó¹q¸£³n¥ó¡I 4. PostgreSQL ¬O¤°»ò¡H 5. ¦ó³B¨ú±o ? 6. PostgreSQL ¤ä´©¶W¹L 200 Gig ªº¶W¯Å¸ê®Æ®w 7. ¾Ì¤°»ò¬Û«H PostgreSQL¡HRegression ´ú¸Õ®M¥ó (Regression test package) ¬°¥Î¤á«Ø ¥ß«H¤ß 8. PostgreSQL ªº«eºÝ GUI ¤u¨ã¡]¹Ï¹³¨Ï¥ÎªÌ¬É­±¡^ 9. PostgreSQL ªººî¦X¶}µoÀô¹Ò¤u¨ã (GUI IDE) 10. PostgreSQL ªº¤¶­±ÅX°Êµ{¦¡ * 10.1 PostgreSQL ªº ODBC ÅX°Êµ{¦¡ * 10.2 PostgreSQL ªº UDBC ÅX°Êµ{¦¡ * 10.3 PostgreSQL ªº JDBC ÅX°Êµ{¦¡ * 10.4 PostgreSQL ªº Java 11. PostgreSQL ªº Perl ¸ê®Æ®w¤¶­± (Database Interface, DBI) * 11.1 PostgreSQL ªº PERL 5 ¤¶­± * 11.2 Perl ¸ê®Æ®w¤¶­± DBI 12. PostgreSQL ºÞ²z¤u¨ã * 12.1 PGACCESS - PostgreSQL ºÞ²zªº GUI ¤u¨ã * 12.2 PostgreSQL ªºµøµ¡¤¬°Ê¦¡¬d¸ß¤u¨ã¡]WISQL ©Î MPSQL¡^ * 12.3 ¦W¬° PSQL ªº PostgreSQL ¤¬°Ê¦¡¬d¸ß¤u¨ã¡]ISQL¡^ * 12.4 MPMGR¡XPostgreSQL ªº¸ê®Æ®wºÞ²z¤u¨ã 13. ¥u¨Ï¥Î¤@­ÓÅã¥Ü¾¹ (monitor) ¨Ó«Ø¥ß¦h¥x PostgreSQL ¹q¸£ 14. PostgreSQL ªºÀ³¥Îµ{¦¡©M¤u¨ã * 14.1 PostgreSQL ªº 4GL ¸Uºûºô¸ê®Æ®wµ{¦¡¡XAppGEN ¶}µo¨t²Î * 14.2 PostgreSQL ªº¤¬Ápºô¤¶­±¡XDBENGINE * 14.3 PostgreSQL ªº Apache ¦øªA¾¹¼Ò²Õ¡XNeoSoft NeoWebScript * 14.4 HTML ªº HEITML ¦øªA¾¹ºÝ©µ¦ù©M¤@­Ó PostgreSQL ªº 4GL »y¨¥ * 14.5 PostgreSQL ªº America On-line AOL ¸Uºûºô¦øªAªÌ * 14.6 PostgreSQL ªººÃÃø / ­p¹º°lÂܨt²Îµ{¦¡¤u¨ã(Problem/Project Tracking System Application Tool for PostgreSQL ) * 14.7 §â dbase ªº dbf ÀÉÂà´«µ¹ PostgreSQL 15. PostgreSQL ªº¤¬Ápºô¸ê®Æ®w³]­p/§¹¦¨¤u¨ã¡XEARP * 15.1 EARP ¬O¤°»ò¡H * 15.2 ¬I¦æ * 15.3 §A»Ý­n¤°»ò¨Ó°õ¦æ EARP * 15.4 ¥¦¦p¦ó¤u§@¡H * 15.5 ¦ó³B¨ú±o EARP¡H 16. PHP Hypertext PreProcessor¡XPostgreSQL ªº¦øªA¾¹ºÝ html ´O¤J©R¥O½Z»y¨¥ * 16.1 ¥D­n¯S¦â * 16.2 ¦WÅA * 16.3 PHP 3¡X²¥v * 16.4 ¨º»ò¡A§Ú¯à¥Î PHP/FI °µ¤°»ò¡H * 16.5 ¤@­Ó²³æªº¨Ò¤l¡J * 16.6 CGI §ï¦V (CGI Redirection) * 16.7 ¦b«ü¥O¦æ°õ¦æ PHP/FI 17. PostgreSQL ªº Python ¤¶­± * 17.1 ¦p¦ó¨ú±o PyGres¡H * 17.2 ¸ê®Æ©M¤ä´© 18. PostgreSQL ©M¸Uºûºôªº¹h¸ô (gateway) ¡XWDB-P95 * 18.1 ¦³Ãö wdb-p95 * 18.2 PostgreSQL ¦øªA¾¹¡Bpgperl ©M httpd ¬O§_»Ý¦b¦P¤@¹q¸£¡H 19. "C", "C++", ESQL/C »y¨¥¤¶­±©M PostgreSQL ªº³v¦ì¹Bºâ¤¸ (Bitwise Operators) * 19.1 "C" ¤¶­± * 19.2 "C++" ¤¶­± * 19.3 ESQL/C * 19.4 PostgreSQL ªº³v¦ì¤¸¹Bºâ¤¸ 20. PostgreSQL ªº¤é¤å°²¦W½X (Kanji Code) 21. ²¾´Ó PostgreSQL ¨ìµøµ¡ 95 / µøµ¡ NT 22. ³q«H½×¾Â * 22.1 ¨ú±o§K¶O¹q¶l¤á¤f * 22.2 ­^¤å³q«H½×¾Â * 22.3 ³q«H½×¾Â¦s®w * 22.4 ¦è¯Z¤ú¤å³q«H½×¾Â 23. ¤å¥ó©M°Ñ¦Ò®Ñ * 23.1 ¥Î¤á«ü¤Þ©M»¡©ú®Ñ * 23.2 ½u¤W¤å¥ó * 23.3 ¦³¥Îªº°Ñ¦Ò®Ñ * 23.4 ANSI/ISO SQL ³W®æ¤å¥ó¡XSQL 1992, SQL 1998 * 23.5 ANSI/ISO SQL 1992 ªº»yªk * 23.6 ANSI/ISO SQL 1998 ªº»yªk * 23.7 ªì¾ÇªÌ SQL ¾É¤Þ * 23.8 SQL92 ªº®ÉºA©µ¦ù (Temporal Extension) * 23.9 ²Ä¹s³¡¤À¡X¨ú±o ISO/ANSI SQL ¤å¥ó * 23.10 ²Ä¤@³¡¤À¡XISO/ANSI SQL ·í«e±¡ªp * 23.11 ²Ä¤G³¡¤À¡XISO/ANSI SQL °òª÷ (ISO/ANSI SQL Foundation) * 23.12 ²Ä¤T³¡¤À¡XISO/ANSI SQL ©I¥s¯Å¤¶­± (Call Level Interface) * 23.13 ²Ä¥|³¡¤À¡X ISO/ANSI SQL «ù¤[Àx¦s¼Ò²Õ (Persistent Stored Modules) * 23.14 ²Ä¤­³¡¤À¡X ISO/ANSI SQL/µ²¦X (Bindings) * 23.15 ²Ä¤»³¡¤À¡XISO/ANSI SQL XA ¤¶­±³W®æ ¡]SQL/XA¡^ * 23.16 ²Ä¤C³¡¤À¡X®ÉºA ISO/ANSI SQL * 23.17 ²Ä¤K³¡¤À¡XISO/ANSI SQL MULTIMEDIA (SQL/MM) 24. PostgreSQL ªº§Þ³N¤ä´© 25. ¸gÀÙ©M°Ó·~¤è­± 26. ¨ä¥L¸ê®Æ®wªº¦W³æ 27. ¸Uºûºô·j´M´£¥Ü 28. µ²½× 29. FAQ¡X¦³Ãö PostgreSQL ªº°ÝÃD 30. ª©Åv³qª¾ Appendix 31. ªþ¿ý¥Ò¡XANSI/ISO SQL 1992 »yªk 32. ªþ¿ý¤A¡Xªì¾ÇªÌ SQL ¾É¤Þ * 32.1 PostgreSQL ¾É¤Þ * 32.2 ¤¬Ápºô URL «ü¼Ð 33. ªþ¿ý¤þ¡XLinux §Ö³t¦w¸Ë«ü¤Þ _________________________________________________________________ 1. ¤Þ¨¥ ¥»¤å¥óªº¥D­n¥Ø¼Ð¬O´£¨Ñ¤@­ÓÃö©ó³]©w PostgreSQL ¸ÔºÉªº URL ¦W³æ¡A©M´£­Ò¶} ©ñ·½©l½X¨t²Î¡A¦p PostgreSQL¡BLinux ªº¦n³B¡C ¥@¬É¤Wªº¨C¤@³¡¹q¸£³£»Ý­n¤@­Ó¸ê®Æ®w¨Ó¦s¨ú¸ê®Æ¡C§A¨Ï¥Î¹q¸£¥D­n²z¥Ñ¬O¥Î¨Ó Àx¦s¡BŪ¨ú©M³B²z¸ê®Æ¡A¦Ó¥B¥¦­Ì«Ü§Ö§¹¦¨¤u§@¡A¦]¦Ó¸`¬Ù§Aªº®É¶¡¡C¦P®É¡A¨t ²Î¥²¶·Â²³æ¡B§¹¾ã¡B¥þ­±¡B¥i¾a¡B¸gÀÙ©M©ö¥Î¡C¸ê®Æ®w¬O³Ì­«­nªº¨t²Î¡A¦]¬°¥¦ Àx¦s¤F¥@¬É¤W¨C¤@¶¡¤½¥qªºÃöÁä¸ê®Æ¡C³Ì¬y¦æªº¸ê®Æ®w¨t²Î³£¸ò±q°ê»Ú¼Ð·Ç²Õ´ (International Standard Organisation, ISO) ªº³W®æ¡A¦Ó³o¤]¬O¸ò±q ANSI SQL¡]¬ü°ê¡^ ³W®æªº¡C·~¬É±`¥Îªº³Ì·s³W®æ¬O ISO/ANSI SQL 1992¡C¤U¤@­Ó¼Ð·Ç ¬O SQL 1998/99¡A¤S¦W SQL-3¡A³o¤´¦b¶}µo¤¤¡C¬y¦æªº¸ê®Æ®w¡A¦p Oracle ¡ASybase ©M Informix ³£¬O®Ú¾Ú³o¨Ç¼Ð·Ç¡A©Î¹Á¸Õ¹ê¬I³o¨Ç¼Ð·Ç¡C ¥@¤W¦³¶W¹L¤G¤Q­Ó¤£¦Pªº°Ó·~/¤¬Ápºô¸ê®Æ®w¨t²Î¡A¤£¤[ªº±N¨Ó¤§«áÁÙ¦³§ó¦h¡C¦p ªG¨S¦³¤@­Ó¹³ ANSI/ISO SQL ªº¼Ð·Ç¡A«È¤á­n«Ø¥ß¤@­Óµ{¦¡¦Ó¦b©Ò¦³ªº¸ê®Æ®w¨Ï ¥Î«K·|¤Q¤À§xÃø¡C«È¤á§Æ±æ¤@¦¸¹L¨Ï¥Î ISO SQL¡AODBC¡AJDBC µo®i¤@­ÓÀ³¥Î³n¥ó ¦Ó¦b¥@¤W©Ò¦³ªº¸ê®Æ®w¨t²ÎÀ³¥Î¡C ¥@¤W¦Û¥Ñ¦Ó¤ä´©ISO SQL¡AANSI SQL/98¡ASQL/92 ©M ANSI SQL/89 ªºÃöÁp¦¡¸ê®Æ ®w (RDBMS) ¤¤¡A³Ì¬y¦æªº¬O PostgreSQL¡CPostgreSQL ¬O·s¤@¥Nªºª«¥óÃöÁp¦¡¸ê ®Æ®w¡A¦Ó¥¼¨Óªº ANSI SQL ¼Ð·Ç¦p SQL 1998 (SQL-3) ¤Î¨ä«á¥N·|§óµÛ­«ª«¥ó¸ê ®Æ®w¤Îª«¥ó¸ê®Æ§ÎºA¡CPostgreSQL ¬O°ß¤@¦P®É¤ä´©ª«¥ó¸ê®Æ®w¤Î SQL ªº¦Û¥Ñ (free) RDBMS¡C¥»¤å¥ó·|§i¶D§A¦p¦ó¦w¸Ë³o¸ê®Æ®w¡B¦p¦ó«Ø¥ßºô¤W¸ê®Æ®w¡BÀ³¥Î ³n¥ó¸ê®Æ®w¡B«eºÝ¹Ï¹³¤¶­±©M¤¶­±µ{¦¡¡C§Ú±j¯P«Øij§A©Ò¼gªº¸ê®Æ®w³n¥ó¥²¶·¦Ê ¤À¦Ê²Å¦X ISO/ANSI SQL¡BODBC¡BJDBC µ¥¼Ð·Ç¡A³o¼Ë¡A§Aªºµ{¦¡¤~²¾´Ó¨ì¤£¦Pªº ¸ê®Æ®w¡A¦p PostgreSQL¡BOracle¡BSybase¡BInformix µ¥¡C §A¥i¦b PostgreSQL ±o¨ì³Ì°ª½è¯À¤Î«D±`Â×´Iªº¥\¯à¡A¦]¬°¥¦¨Ì±q¡u¶}©ñ·½©l½X ¶}µo¼Ò¦¡¡v (Open Source Code development model)¡C¶}©ñ¦¡·½µ{¦¡½X¼Ò¦¡·|µ¹ §A§¹¾ãªº·½µ{¦¡½X¡A¶}µo¹Lµ{¦b¤¬Ápºô¤W¥Ñ¦³¤j¶qªº¤H¤â°Ñ»P¶i¦æ¡C¥Ø«eªºÁÍ¶Õ Åã¥Ü¥¼¨Ó¤j³¡¤Àªº³n¥ó¶}µo¤u§@·|¦b¥@¬É³q¦æªº©Ò¿×¡u¸ê°T°ª³t¤½¸ô¡v¤W¶i¦æ¡C ¥¼¨Ó¼Æ¦~¡A¤¬Ápºô·|Ãz¬µ©Ê¦a¦¨ªø¡A³o¼Ë·|¨Ï§ó¦h¸ê®Æ®wªÀ¸s¨Ï¥Î PostgreSQL¡C Âǧâ²Î­p¾Ç¡B¼Æ¾Ç©M¬ì¾Çªº­ì²zÀ³¥Î©ó³n¥ó½è¯À¡A§Ú­Ì¥u·|¦b¤@­Ó¦p PostgreSQL ¯ë¡A§â·½µ{¦¡½X¶}©ñµ¹¸g¸ê°T°ª³t¤½¸ô³sô¦b¤@°_ªº¤j¶qÀY¸£ªº¨t²Î ¤U¡A¤~¯à±o¨ì³Ì°ª½è¯Àªº³n¥ó¡C¥¿©Ò¿×¶°«ä¼s¯q¡C¶}©ñ·½µ{¦¡½Xªº¼Ò¦¡¤]¥i¨¾¤î ­«ÂФu§@¡A«D±`¸gÀÙ¡A¸`¬Ù´²§G®É¶¡¤Î¦X²Å¦³Ãö³Ì¨Î¤Æ°ê¤º©M¥þ²y¸ê·½ªº¸gÀÙ©w «ß¡C¥u­n¦³¤H¼g¦n¤F¤@­Ó³n¥ó¡A§A«K¤£»Ý­n¦A¨Ó¤@¦¸¡C§A¤£·|®ö¶O®É¶¡©ó¦­¤w°µ ¦nªºªF¦è¡C¤@¤o¥ú³±¤@¤oª÷¡A§A­n¦n¦n§Q¥Î¡A¦]¬°¤H¤@¤Ñ¥u¦³¤K¤p®É¤u§@¡I¦b§Ú ­Ì½ñ¤J¤Ü¤@¥@¬ö®É¡A§Ú­Ì¨ú±o©Ò»Ý³n¥óªº¤èªk±N·|§ïÅÜ¡C¥Î®aªº²Ä¤@¿ï¾Ü±N·|¬O ¦p PostgreSQL¡BLinux µ¥¶}©ñ¨t²Î¡C ÁʶR¥i°õ¦æªº³n¥ó¤£¥Nªí§A¾Ö¦³³n¥ó¡C·½µ{¦¡½X¬O¬Ã¶Qªº¸ê²£¡A¤G¤¸ÀɨõL»ù­È ¡CÁʶR³n¥ó§@¥i¯à·|¦¨¬°¾ú¥v¡C§A¥u»Ý­n¶R¦nªºµw¥ó¡Aªá¿ú¦bµw¥ó¤W¦Ó±q¤¬Ápºô ¤W¨ú±o³n¥ó¬O­È±oªº¡C­«ÂI¬O¤u§@¶q¤jªº¹q¸£µw¥ó¡Cµw¥ó¤~¬O¯u¥¿¶]°Êªº°¨¤Ç¡A ³n¥ó¥u¬OÃ@µ¦¨e¡C¹q¸£µw¥óªº½ÆÂøµ{«×¨Ï±o¥þ²y 180 ­Ó°ê®a¤¤¥u 6 ­ÓÅãÅS¥X³] ­p¤Î¥Í²£¹q¸£´¹¤ù©Mµw¥óªº¯à¤O¡C³o¬O¤@ºØ¥ý¶iªº¬ì§Þ¡A¹Lµ{«D±`½ÆÂø¡A¸êª÷±K ¶°¡A³]¼t¤Î¥Í²£ 0.18 ·L¦Ì¬ì§Þªº¾÷¾¹§ë¸êÃe¤j¡C¦b¤@¤p¤ù´¹¤ù¤W«K¦³¼Æ¥H¦Ê¸U ­pªº¥b¾ÉÅé©M¹q¸ôÀ½¦b¤@°_¡CApplied Material¡BAMD¡B­^¥Nº¸¡BCyrix¡A¤é¥ß ¡AIBM ¤Î¨ä¥L¤u¥qªá¶O¤j¶q¤H-¦~ (man-years) ¦b°ª¬ì§Þ¡A¦p´¹¤ù³]­p¡B·L¹q¤l ¤Î·L­½¹q¤lªº¬ã¨s¤W¡C·L¦Ì¥Nªí¦Ê¸U¤À¤§¤@¦Ì (10^-6)¡A·L­½¦Ì¥Nªí¤Q»õ¤À¤§¤@ ¦Ì (10^-9)¡C²{¤µ·L¹q¤l§Þ³N¤¤¡A0.35 ·L¦Ìªº¨Ï¥Î¾T§@¾ÉÅé¡A0.25 ·L¦Ìªº¨Ï¥Î »É¡C¤£¤[±N¨Ó¤§«á¡A¥Î»Éªº 0.10 ·L¦Ì§Þ³N¡A¬Æ­P·L­½¹q¤l§Þ³N±N·|À³¥Î©ó¹q¸£ ´¹¤ù¡C¦]¬°»É¾É¹q¯à¤O¸û±j¡A¾T¾ÉÅé±N·|³Q²^¨O¡C¦b¨è»k´¹¤ù (photolithography) ªº¹Lµ{¤¤¡A·¥°ªÀWªºµµ¥~½u¡BX-®g½u©Î¹q¤l§ô·|³Q¥Î©ó¨è»k (etch) ¯S¼x¤j¤p (feature size) ¤p©ó 0.15 ·L¦Ìªº¹q¸ô¡C ¤µ«á¤G¤Q¦~¡Aª¿¤ù ±N·|³Q¤À¤l¹q¸£ (molecular) ©M¥Íª«´¹¤ù (bio chips) ¨ú¥N¡C¥¦­Ìªº³t«×±N·| ¤ñª¿¤ù§Ö¼Æ¤Q»õ­¿¡I¤À¤l¬O¤@²Õ­ì¤l¡C¦Ó­ì¤l²Õ¦¨©Ò¦³§A¦b¥@¤W©Ò¨£ªºª«¥ó¡C ¤À ¤l¹q¸£·|¥Îª«½èªº¤À¤l¨Ó·í¶W§Öªº¹q¤l¶}Ãö¨î¡C¶}¨î (ON)¤§«á¥¦«ü¥Ü 1¡BÃö³¬ (OFF) «á«ü¥Ü 0¡C¥@¤W©Ò¦³¹q¸£µ{¦¡³£¬O®Ú¾Ú¤G¤¸¼Æ¡]¼Æ¦r 1 ©M 0¡^¹B§@¡C ¤U ªí¦C¥X´¹¤ù§Þ³Nªº¶i¨B¤Î¥¼¨Óµo®iÁͶաC ¥¼¨Ó´¹¤ùªº¯à¤Oªº¶i®i ******************** +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ¶µ¥Ø/¦~¥÷ | 1997 | 1999 | 2001 | 2003 | 2012 | 2 020 | +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ¯S¼x¤j¤p¡]·L¦Ì¡^ | 0.25 | 0.18 | 0.15 | 0.13 | 0.05 |< 0.00001| +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ´¹¤ù¤j¤p¡]­½¦Ì¡^ | 200 | 300 | 300 | 300 | 450 |¥Í ª«/¤À¤l| +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ³Ì§C¹B¦æ¹qÀ£ | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| < 0.001 | +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ³Ì¤j¥\²v®ø¯Ó | 70 | 90 | 110 | 130 | 175 | 6 00 | +--------------------------+---------+---------+---------+---------+--------+-- -------+ | ¹B¦æÀW²v (MHz) | 750 | 1,250 | 1,500 | 2,100 | 10,000 | > 50,000| +--------------------------+---------+---------+---------+---------+--------+-- -------+ | DRAM ®e¶q | 256 MB | 1 GB | 2 GB | 4 GB | 256 GB | > 1000GB| +--------------------------+---------+---------+---------+---------+--------+-- -------+ ¦p§A©Ò¨£¡Aµw¥ó¤~­«­n©M»Ý­n°ª¬ì§Þ¡A³n¥ó©Ò¥Îªº¬ì§Þ´N¤ñ¸û²³æ¡C¦]¦¹¡A¥Í²£ µw¥ó¹ï°ê®a¸gÀÙ«D±`­«­n¡I¤£½×²{¦b©Î¥½¨Ó¡A¹³±d¬f¡BDell¡Bª@¶§¡B´f´¶¡B¸U°ê °Ó·~¾÷¾¹µ¥¹q¸£¥X²£°Ó³£·|¬O¬ü°ê¸gÀÙ¥D­n°^ÄmªÌ¡I ¥t¤@¤è­±¡A¥@¤W¨C°ê®a³£·|µo®i³n¥ó¡C¨Æ¹ê¤W¡A¥@¤W¥ô¦ó¤@­Ó¾Ö¦³¤@³¡§C»ù¹q¸£ ªº¤H³£¥i¼g¥X¤@­Ó Oracle ¸ê®Æ®w¦øªA¾¹¡A¦ý¥L¤j·§­nªá¤Q¦~®É¶¡¡]Oracle ¸ê®Æ ®w¦øªA¾¹¬O¤j¬ù¤Q¤H-¦~ªº¤u§@¡^¡C¤@¤H-¦~¬O«ü¤@­Ó¤H¤@¦~¥þ¾ªº¤u§@¶q¡C¦pªG ¤Q­Ó¤H¤u§@¤@¦~¡A³o¤u§@¶q«K¬O¤Q¤H-¦~¡C ¹³ Oracle¡AInformix¡ASybase¡AIBM DB2 (Unix) µ¥¸ê®Æ®w¡A³£¬O¥Î "C" »y¨¥¼g ¦¨¡A¤G¤¸ÀÉ«h¬O¥Î½sĶ¾¹²£¥Í¡A³o¼Ë«K¥i°âµ¹¥Î¤á¤F¡COracle¡BSybase ¡BInformix ¸ê®Æ®w¬O¦Ê¤À¦Êªº C µ{¦¡¡I¡I ¤Q¤G¦~¨Ó¡A¤H­Ì¤w¦b PostgreSQL ¤W°µ¤F¤£¤Ö¨Æ¡A±qÀY³Ð³y¥t¤@­Ó²Å¦X ANSI/ISO SQL ªº¸ê®Æ®w¨t²Î¨Ã¤£¦X²Å±`²z¡C¦b PostgreSQL ªº·½µ{¦¡¤W¥[¤W¤í¯Ê ªº¥\¯à©Î±N¤§¥[±j¡A¤§«á¥ß¨è¨Ï¥Î¡A¦³«Ü¤j¦n³B¡C PosrtgreSQL ¤£¿W¬O­Ó§K¶Oªº¸ê®Æ®w¡A¥¦¤]¬O¤@­Ó°ª½è¯Àªº¡u¤¬Ápºô²£«~¡v¡C¾Ú ¦ô­p¡A¹ï¡u¤¬Ápºô»s³y¡vªº²£«~ªº»Ý¨D±N·|¥H«ü¼Æ¯Å¼Æ¼Wªø¡A¦]¬°¥¦¥iºûô¤@²Õ °ª½è¯À¡B§C»ù¦ÓÃe¤jªº¨Ï¥ÎªÌ¤Î¶}µo¤H­û¡C¤£¨Ï¥Î¡u¤¬Ápºô»s³y¡vªº²£«~ªº°ê®a ·|¿ù¹L³o³õ¡u¤¬Ápºô­²©R¡v¦Ó³Q¨ä¥L°ê®a¤j¤j©ßÂ÷¡C³o¬O¦]¬°¤¬Ápºô¥»¨­´N¬O¥@ ¤W³Ì¤jªº³n¥ó¤½¥q¡I 2. ¥»¤å¥óªº¨ä¥L®æ¦¡ ¥»¤å¥ó¥H¤QºØ¤£¦Pªº®æ¦¡¥Xª©¡A§Y¡JDVI¡BPostscript¡BLaTeX¡BLyX¡BGNU-info ¡BHTML¡BRTF¡]Rich Text Format¡^¡B¯Â¤å¦r¡BUnix man pages ¤Î SGML¡C * §A¥i±q [3]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/ ±o¨ì¥» HOWTO ¤å¥ó HTML¡BDVI¡BPostscript ©Î sgml ®æ¦¡ªº³æ¤@ tar ÀɮסC ¡]Ķ «ö¡J sunsite.unc.edu ¤w§ï¦W¬° metalab.unc.edu¡C¡^ * ¯Â¤å¦rª©¥»«h¦b¡J [4]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO * ¨ä¥L»y¨¥ªºÂ½Ä¶¡A¦pªk¤å¡B¼w¤å¡B¦è¯Z¤ú¤å¡B¤¤¤å¡B¤é¤å«h¦b [5]ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO §Ú¹ï½Ķ¨ì¥ô¦ó¨ä¥L»y ¨¥ªºÀ°§UµL¥ôÅwªï¡C ¥»¤å¥ó¨Ï¥Î¤@­Ó¦W¬°¡uSGML Tool¡vªº¤u¨ã½s¼g¡A¥¦¥i¦b [6]http://www.xs4all.nl/~cg/sgmltools/ ±o¨ì¡C ½sĶ¦n·½µ{¦¡½X«á¡A§A·|±o ¨ì¥H¤Uªº«ü¥O¡J * sgml2html databasehowto.sgml ¡]²£¥Í HTML ÀÉ¡^ * sgml2rtf databasehowto.sgml ¡]²£¥Í RTF ÀÉ¡^ * sgml2latex databasehowto.sgml ¡]²£¥Í LaTeX ÀÉ¡^ ¥»¤å¥ó¦ì©ó¡J * [7]http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html §A¤]¥i¦b¥H¤Uªº¬M®g¥x¤W§ä¨ì¥»¤å¥ó¡J * [8]http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html * [9]http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html * [10]http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.html * [11]http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.ht ml * ¨ä¥L©M§A¬Ûªñ¡]¥Hºôµ¸¦a§}¨Ó»¡¡^ªº¬M®g¥x¥i¦b [12]http://sunsite.unc.edu/LDP/hmirrors.html §ä¨ì¡C½Ð¿ï¾Ü¤@­Ó¤Î«e©¹ /LDP/HOWTO/PostgreSQL-HOWTO.html ¥Ø¿ý¡C ¡]Ķ«ö¡J¥»¤å¥óªº¤¤¤å¡e¤j¤­½X¡fª©¥Ø«e¥u¦³ LaTeX¡BLyX¡BHTML¡B¯Â¤å¦r©M SGML ®æ¦¡¡C¥i¦b [13]http://www.linux.org.tw/CLDP/HOWTO/ §ä¨ì¡C¦Ó­n²£¥Í ¤¤¤å¤å¥ó¡A§A»Ý­n bg5sgmltools¡A¥i¦b [14]http://www.linux.org.tw/CLDP/ §ä¨ì¡C¡^ ­n¬Ý¥»¤å¥óªº dvi ®æ¦¡¡A½Ð¨Ï¥Î xdvi µ{¦¡¡C¦b Redhat Linux ¤¤¡A§A¥i³z¹L ControlPanel | Applications | Publishing | TeX «ö¶s§ä¨ì tetex-xdvi*.rpm ®M¥ó¡A·í¤¤§Y¬° xdvi µ{¦¡¡C ­n¾\Ū dvi ¤å¥ó¡A¨Ï¥Î«ü¥O xdvi -geometry 80x90 howto.dvi ¤Î¨Ï¥Î·Æ¹«½Õ¾ãµøµ¡¤j¤p¡C½Ð°Ñ¾\ xdvi ªº man page¡C ÂsÄý®É¨Ï¥Î½bÀYÁä¡BPage Up¡BPage Down Áä¡A§A¤]¥i¨Ï¥Î 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' ¦r¥ÀÁä¨Ó ¤W²¾¡B¤U²¾¡B¸m¤¤¡B¨ì¤§«e¡B¤§«á¤@­¶µ¥µ¥¡C ­nÃö³¬±M®a¥Ø¿ý (expert menu) «ö 'x'¡C §A¥i¥Îµ{¦¡ 'gv' (ghostview) ©Î 'ghostscript' ¨Ó¾\Ū postscript ÀÉ¡C¦b RedHat Linux ¤¤¡Aghostscript µ{¦¡¬O¦b ghostscript*.rpm ®M¸Ë³n¥ó¡Agv «h ¦b gv*.rpm¡C§A¥i³z¹L ControlPanel | Applications | Graphics «ö¶s§ä¨ì¥¦ ­Ì¡Cgv µ{¦¡¤ñ ghostscript ©ö¥Î±o¦h¡Cghostscript ©M gv ¤]¥i¦b¨ä¥L¥­¥x¡A ¦p OS/2¡Bµøµ¡ 95 ¤Î NT ±o¨ì¡A§A¤]¥i¦b³o¨Ç¥­¥x¾\Ū¥»¤å¥ó¡C ­n¾\Ū postscript ¤å¥ó¡A¨Ï¥Î«ü¥O gv howto.ps ­n¨Ï¥Î ghostscript¡A¨Ï¥Î«ü¥O ghostscript howto.ps ª`·N¡J¥»¤å¥ó«Üªø¡A¦pªG§A·Q¦L¥X³o postscript ÀÉ¡A¤j¬ù»Ý­n 113 ­¶¡C ¡]Ķ «ö¡Jgv ¬O ghostscript ªº¤@­Ó«eºÝ¬É­±¡A©Ò¥H§Y¨Ï§A¥u¥´ºâ¥Î gv¡A§A¤]­n¦w¸Ë «áªÌ¡C¦¹¥~¡A¦b OS/2 ©Mµøµ¡¤¤¨Ã¨S¦³ gv¡A¥u¦³ GSView¡A¤@­Ó©M gv ¥\¯à®t¤£ ¦hªºµ{¦¡¡C¸Ô±¡½Ð°ÑÃö [15]http://www.cs.wisc.edu/~ghost¡C¡^ §A¥i¨Ï¥Î Netscape Navigator¡AMicrosoft Internet Explorer¡ARedhat Baron Web Browser ©Î¥ô¦ó¨ä¥Lªº¸UºûºôÂsÄý¾¹¨Ó¾\Ū HTML ®æ¦¡ªº¤å¥ó¡C §A¥i¥Î LyX¡ALaTeX ªº¤@­Ó X-Window «eºÝ¤¶­±¨Ó¾\Ū LaTeX ©M LyX ÀÉ¡C 3. ª«²z©w«ß¤]¾A¥Î©ó¹q¸£³n¥ó¡I ³o³¹·|»¡©ú¬ì¾Ç¦b¤£¦P¨Æª«¡A¦p³n¥ó¡B¦t©z¡B­ì¤l¡B¯à¶q¬Æ¦Ü§A¦Û¤vªº³Ð³y¹Lµ{ ¤¤§êºt¦p¦ó­«­nªº¨¤¦â¡C¤]·|»¡©ú¬°¦ó¬ì¾Çª¾ÃѦb¨Ï¥Î¬ì¾Çªº²£«~«e«D±`­«­n¡C ª«¥ó¥]¬A©Ò¦³ªF¦è¡X¦p PostgreSQL¡B®É¶¡¡B½è¶q¡B¯à¶q¡B¦æ¬P¡B¤j¶§¡B¤ë«G¡BùÚ ¬P¡B»Èªe¡B¬P¹Î¡B¤HÃþµ¥µ¥³£¬O¬ì¾Ç¥Í¦¨ªº¡C³o³¹¤]·|»¡©ú¬ì¾Ç©M²Î­p¾Ç©w«ß¦p ¦ó¤ä«ù¶}©ñ­ì©l½X¡A¦p PostgreSQL ©M Linux¡C¤¬Ápºôªº³t«×¨C¤é³£¦b¼Wªø¡A¤] ¶V¨Ó¶V¥i¾a¡A¶}©ñ¦¡µ{¦¡½Xªº°Ê¶q (momentum) ·|¨³³t¼W¥[¡C¥t¥~¡A¦pªG²Î­p¾Ç ¤Î¬ì¾Ç©w«ß¥¿½Tªº¸Ü¡A«Ê³¬¦¡µ{¦¡¿ð¦­·|¦b¥@¤W®ø¥¢¡C ¥H¤U¼Æ¬q·|»¡©ú¡J¡u¬ì¾Ç¬O¦p¦ó¼sªx¡B¥¦¹ï¤Hªº­«­n©Ê¤Î¥¦¦p¦ó½ÄÀ» PostgreSQL¡BLinux ¤§Ãþªº³n¥ó­p¹º¡C¡v µo®i PostgreSQL ³oÃþ­p¹º»Ý­n¯à¶q©M®É¶¡µ¥¸ê·½¡A¦]¦¹¡APostgreSQL ¬O¯à¶q©M ®É¶¡ªº²£«~¡C¯à¶q©M®É¶¡¥u¯à¦b¬ì¾Ç¤W¸ÑÄÀ¡A©Ò¥Hª«²z¾Ç©M PostgreSQL¡BLinux ¤§Ãþ³n¥ó±M®×¬O¦³ª½±µÃöÁpªº¡C ¬ì¾Ç¡]ª«²z¡^©w«ßÀ³¥Î©ó¥ô¦ó¦a¤è¡B¥ô¦ó®É¶¡¡B¥ô¦ó¤u§@¡A¬Æ¦Ü¶}µo³n¥ó±M®×®É ¡Cª«²z¾Ç§Y¨Ï¦b§A»¡¸Ü¡]Ánªi¡^¡B¨B¦æ¡]¦a­±©M¸}¤§¶¡ªº¼¯À¿¤O¡^¡B¬Ý®Ñ©M½s¼g ³n¥ó®É³£µo¥Í§@¥Î¡C¬ì¾Çªº¤£¦P¤À¤ä¡A¦pª«²z¾Ç¡B¤Æ¾Çµ¥³Ì²×³£°ò¦³£¬O¼Æ¾Ç¡] ³QºÙ¬°¬ì¾Ç¤§¥À (Queen of all Sciences)¡^¡C¥@¤W©Ò¦³¨Æª«³£´Ó®Ú©ó¼Æ¾Ç¡A¥] ¬A PostgreSQL¡CPostgreSQL ¨Ï¥Î¤F¼Æ¾Çªº¤@­Ó¤p¤ÀªK¡¥²{¥N¥N¼Æ¡¦(Modern Algebra)¡C²{¥N¥N¼Æ³B²z¡¥¶°¦X½×¡¦(Set Theory)¡B¡¥Ãö«Y¥N¼Æ¡¦(Relational Algebra)¡B¸s²Õ (Groups)¡BÀô (Rings)¡B¦¬¶° (Collections)¡B¶° (Sets)¡BÁp ¦X (Unions)¡B¥æ¿ù (Intersections)¡B±Æ¥¸ (Exclusions)¡B»â°ì (Domains)¡B ±Æ¦C (Lists) µ¥µ¥¡C PostgreSQL ³oÃþ²£«~¤§©Ò¥H¦s¦b¡A«K¬O¦]¬°¯à¶q©M®É¶¡¡C¨º¬O³Ð³y¥@¬É¡B¸£¤l©M ¨ä¥LªF¦èªº¯à¶q¡C¦Ó½è¶q©M¯à¶q¬O¦P¤@¨Æª«¡I½è¯à¬Û¦Pªº¨Æ¹ê¦b¤@¦Ê¦~«e¤´¥¼¬° ¤H©Òª¾¡I¡]Ķ«ö¡J¦¹¸Ü¾A¥Î¦Ü 2005 ¦~¡J¡^ ¤H¸£¤¤ªº²Ó­M¦b¤u§@¡]½s¼gµ{¦¡¡^®É·|®ø¯Ó¯à¶q¡A§â¨Ó¦Û­¹ª«ªº¤Æ¾Ç¯àÂà¤Æ¬°¹q ¯à¤Î¼ö¯à¡C§Y¨Ï¦b§A¾\Ū³o¬q¤å¦r®É¡A§A¸£¤¤ªº²Ó­M«K·|®ø¯Ó¿U®Æ¤Î¨Ï¥Î¤p¶q¯à ¶q¡C©Ò¥H¥ß§Y°±¤î¾\Ū¡I¡I¯«¸g¤¸¡]¸£²Ó­M¡^ªº¯à¶q¬¡°Ê¥i¦b¹êÅç«Ç¤¤¶q«×¡C¨Ò ¦p´úÁÀ¾÷¤Î¨ä¥L¯à¶q«×¸£¤º¯à¶q¬¡°ÊªºÂåÀø¾¹§÷¡C¤]´N¬O»¡¡A¤H¸£¬O¤@¥x¼ö¤O¾Ç ¤Wªº¾÷¾¹ (thermodynamic heat engine)¡C¥¿¦]¬°³o¼Ë¡A¼ö¤O¾Çªº©w«ß¤]¾A¥Î©ó ¤H¸£¡A¤]´N¶¡±µ¦a¼vÅT¨ì PostgreSQL ¤@Ãþ³n¥ó¡C ¬ì¾Ç¨Ó»¡¡A«Ø¥ß¤@­Ó¦Ê¤À¦Ê§¹¬ü¤Î¨S¦³¿ù»~ªº¨t²Î©Î²z½×¡]¥]¬A¸ê®Æ®w¨t²Î¡^¬O ¤£¥i¯àªº¡C³o´N¹³Ãèªá¤ô¤ë¡A§Ú­Ì¥Ã¤£¥i¯à¨ì¹F§¹¬üªº¨t²Î©Î²z½×³o¥Ø¼Ð¡C¸Ô²Ó ªº¼Æ¾Ç¤èµ{¦¡©M°Q½×ÃÒ©ú¤F¡§§¹¬üªº¨t²Î¡¨¡]¡§¤£§¹¬üªº¨t²Î¡¨¤]¬O¡^¨Ã¤£¥i¯à ¥X²{¡C³o¬O¤@­Ó¶i¶¥ªº½ÒÃD¡A¶W¥X¤F¥»¤åªº°Q½×½d³ò¡C¦Ó³o¼Ëªº°Q½×²o¯A¨ìµL­­ ªººû¼Æ (dimemsions)¡]¤Î°ò¥»ºû¼Æ (primay dimensions)¡^¡A³o¬O¦b¤j¦ÛµM¤¤¦s ¦bªº¡C¤£©¯¦a¡A¤HÃþ¥u¯à¬Ý¨ì©M·P¨ì¥|ºû¡A¦ý¼Æ¾Ç¥i»´©ö¬Ý¨ì¨ä¥Lºû¼Æ¡C¨ä¥Lºû ¼Æ¤ñ­ì¤l¡§µL­­¦a²Ó¤p¡¨(infinitely smaller)¡A¦Ó­ì¤l¥»¨­¤w¤p±o¦×²´¬Ý¤£¨ì ¡I¼Æ¾Ç¬O«D±`¦³¤OªºªF¦è¡A¦]¬°¥¦¯à¤ÀªR©M¸ÑÄÀ§Ú­Ì¦t©zªº¥Í¦º¡C ¦b¨ä¥L¦t©z¬Ý ¨Ó¡A§Ú­Ìªº¦t©z´X¥G¨S¦³¤j¤p¡A¤Ï¤§¥çµM¡C§Y¬O»¡¡A¹ï¨ä¥L¦t©zªº¤H¨Ó»¡¡A§Ú­Ì ªº¦t©z¨Ã¤£¥i¨£¡]¤£¦s¦b¡^¡I¤Ï¤§¥çµM¡I¡I ²z½×¤W¡A§A¥i¥HÂ÷¶}¨­³Bªº¦t©z¡A¤£¥Îªá¥ô¦ó®É¶¡¶W¶V·¥»·ªº¶ZÂ÷¡]¼Æ»õ¥ú¦~¡^ ¡A¤§«á¦b¤£¦Pªº®ÉªÅ¦^Âk¦t©z¡I§Ú­Ìªº¦t©z©M¨ä¥L¦t©zªº¶ZÂ÷¨Æ¹ê¬O¹s¡I ÁöµMªÅ¶¡¦³µL­­ºû¼Æ¡A¥¦­Ì³£¥i±q¤p¶qªº°ò¥»ºû²£¥Í¡C¤]´N¬O»¡¡AµL­­­Óºû¼Æ¥i ¦X¨Ö¬°°ò¥»ºû¡C°ò¥»ºû¥i§l¦¬¨ä¥Lºû¼Æ¦Ó¤£³Q¯}Ãa¡C¼Æ¾Ç®a¨Ï¥Î°ò¥»ºû¨Ó²z¸Ñ¦t ©zªº¥Í¦º¡C§A©Ò¨­³Bªº¦t©z¶}©l©ó¼Æ¥H¤Q»õ¦~«e¡]¬ù¤G¦Ê»õ¦~«e¡^¡A¥Ñ¨ä¥L¦t©z ªº²É¤lªº¬¡°Ê²£¥Íªºªº¤@³õ¤jÃz¬µ¡C¦b¤jÃz¬µ¤§«e¥u¦³¤@ÂI¡A¨S¦³ªø«×¡B¨S¦³Áï «×¡B¨S¦³ªÅ«×¡B¨S¦³®É¶¡¡]§Y¨S¦³§Ú­Ìªº¦t©z¡I¡I¡^¡A¨ä¥L¦t©z©M°ò¥»ºû«h¦s¦b ¡C®É¶¡¤£¦s¦b¡A­ì¤l¡BùÚ¬P¡B¦æ¬P¡B»Èªe¤]¤£¦s¦b¡I§AÅ餺ªº­ì¤l¤£¦s¦b¡I®É¶¡ ½Ï¥Í«e¡A¥H¸gµo¥Í«Ü¦h¨Æ¤F¡C ¤jÃz¬µ©M¦]¦¹½Ï¥Íªº§Ú­Ìªº¦t©z¬O¥Ñ°ò¥»ªÅ¶¡ªº­ì¤l³y¦¨ªº¡C¦³¤H¡B¡]¦³ªF¦è¡H ¡^½ÄÀ»¤F¨ä¥LªÅ¶¡ªº´X­Ó­ì¤l¨Ó²£¥Í§Ú­Ìªº¦t©z¡A·sªº®É¶¡¡Bªø¡BÁï¡B°ª¦U«×ªÅ ¶¡½Ï¥Í¤F¡I§Ú­Ì¬Ý¨ì¤@¨Ç½u¯Á¡C¤HÃþ¤´¥¼§¹¥þ¤F¸Ñ³o¹Lµ{¡C¤H­Ì¥¿¹Á¸Õ¦b¹êÅç«Ç ¤¤¼ÒÀÀ¤jÃz¬µ¨Ó²£¥Í¨ä¥L¦t©z¡]¼Ú¬w¤´¦b«Ø³y¤j«¬ªº¥[³t¾¹ (accelerator)¡A¦b ¹F©Ô´µ (Dallas) ªº¥t¤@®y«h¦]¬ü°ê°ê·|«d´î°]¬F¹wºâ¦Ó°±«Ø¡C¡^¨ä¥LªÅ¶¡¤¤¦³ ­ì¤l¡A´N¹³§Ú­Ìªº¤@¼Ë¡C²z½×¤W¡A§Ú­Ì¥i³Ð³y©M²£¥ÍµL­­­Ó¦t©z¡I³o¨Ç¹Lµ{¬O¥i °fÂ઺¡A§Y§Ú­Ìªº¦t©z¥i§¹¥þ®ø¥¢¤ÎÅܬ°¨ä¥LªÅ¶¡ªº¼Æ­Ó­ì¤l¡I¤@­ÓÃþ¦üªº±¡§Î «K¬O§A¦p¦ó¦]¨â­Ó²Ó­Mªº½ÄÀ»¡A³y¦¨¤@­Ó²Ó­M¦Ó¦¨¬°§A¡C¨º­Ó¤p¤pªº²Ó­M¤Àµõ¤Î ­¿¼W¡A²£¥Í¤»¸U»õ­Ó²Ó­M©MÅܦ¨¤@­Ó¤»¤Ø°ªªº¤H¡]§A¡I¡^¡C¤HÃþ©M¦t©z¦³¤@¨Ç¬Û ¦ü¤§³B¡A¦t©z©M¤HÃþ¬Û¦ü¡A¤]¦³¥Í¦º¡C §¹¬üªºª¬ºA¡]¤£§¹¬üªºª¬ºA¤]¬O¡^¨ÃµL¥i¯à¡A¦t©zªº¥Í¦Ñ¯f¦º¬O¤@­Ó´`Àôªº¹Lµ{ ¡C¦ý§¹¬üªº¦º¤`¨Ã¤£¦s¦b¡A¬ì¾Ç¥u®e³\Âà´« (transformation)¡I§Ú­Ìªº¦t©z¥¿¥H ·¥°ª³t«×ÂX±i¡A¥¦¨Ã¤£ÀR¤î¡A¦Ó¬O«D±`°ÊºA¡C¥¦ÁÙ·|Ä~ÄòÂX±i¡Aª½¨ì¨ü¨ì¨ä¥LªÅ ¶¡ªºÀ£¤Oªº¤zÂZ¨Ï¥¦±Y¼ì¡A¨Ã±N¥¦§l¦¬©M¦P¤Æ¡I¡I¦³¨â­Ó¥i¯à©Ê¡X±q¶Â¬}²¾°£§Ú ­Ì¦t©zªº½è¶q¡]¤@­Ó½wºCªº¹Lµ{¡^¡A©Î±q¥Õ¬}ª`¤J·sªº½è¶q¡]¤@­Ó§Ö³tªº¹Lµ{¡^ ¡C¦³¼Æ¥H¦Ê¸U­p­Ó¦t©z¦s¦b¡A¦ý¥u¦³¤p¼Æ¬O¥Ñ°ò¥»ªººû¼Æ³y¦¨ªº¡C§A¨Ã¤£¥u¬O§Ú ­Ì¦t©zªº­ì¤l²Õ¦¨¡AÁÙ¦³¨ä¥LªºªÅ¶¡ªº­ì¤l¡I¶Â¬}·|§l¤J§Ú­Ì¦t©zªº­ì¤l©M²É¤l ¡A¥¦­ÌÂà¤Æ¤Î¦¨¬°¨ä¥LªÅ¶¡ªº²É¤l¡I¦b¶Â¬}¤¤¤ß¡Aªø«×¡BÁï«×°ª«×©M®É¶¡³£¬O¹s ¡I¶Â¬}¬O¨ä¥L¦t©zªº¥X¤J¤f¡C¨ä¥L¦t©zªº¥X¤J¤f¥i¦b¥ô¦ó¦a¤è¥X²{¡A¥]¬A§AªºÅé ¤º¡I ¥@¤W¥i¦³µL­­ºØÃC¦â¡B¹q¸£»y¨¥¡B´¹¤ù³]­p©M²z½×¡A¦ý¤£¥i¯à¦³¤@ºØ§¹¬üªºÃC¦â ¡B¹q¸£»y¨¥¡B³]­p©M¨t²Î¡I§A©Ò¯à±o¨ìªº¥u¬Oªñ¥G§¹¬üªºÃC¦â¡]ªiªø¡^¡B¨t²Î¡B ¸ê®Æ®w©Î²z½×¡I¤j¦ÛµM´N¹³¤@­Ó¸Uªáµ©¡C §â¥@¤W¼Æ¦Ê¸Uºô¥Áªº¯à¶qµ²¦X°_¨Ó¡A¨Ï±o«Ø¥ß¤@­Óªñ¥G§¹¬üªº¨t²Î¡]¥]¬A¸ê®Æ®w ³n¥ó¡^Åܱo¦³¥i¯à¡C©t´xÃø»ï¡A¦ýÄyµÛºôµ¸§â¤j¶q¤H¤â¶°¦X°_¨Ó¡A¥L­ÌªºÁ`¯à¶q ·|«D±`Ãe¤j¡A¦Ó¥B¥i¶°¤¤©ó«Ø¥ß¤@­Óªñ¥G§¹¬üªº¨t²Î¡C¤HÃþ¬O¾Ö¦³¦³­­¯à¶q¤Î¸ê ·½ªº¥Íª«¡A¸g±`·|¥Ç¤U¤£¦Pµ{«×ªº¿ù»~¡C¦]¬°¤H­Ì¥Ç¿ùªº¶É¦V·|¨Ì¯S®í§Þ¯à¡B¯S ®í¸gÅç©M¤ß±¡¦³©Ò¤£¦P¡A§Ú­Ì¥iÂǶ°¦X¤£¦Pªº¤H¦@¦P§V¤O¨Ó¨Ï±oµo²{©M²M°£¤H­Ì ³y¦¨³n¥ó¿ù»~§ó®e©ö¡C¦¹¥~¡A§ó¦h¤H¥Nªí§ó¦h¤u§@®É¶¡¤Î¥\¯à¡C «Ü©úÅV¡A¤¬Ápºô¥i³sô«Ü¦h¤H¡A¤]´N¬O»¡¤¬Ápºô¦³¤j¶q¯à¶q©M®É¶¡¡A¥i¥Î¤ß³n¥ó ¤½¥q§óµuªº®É¶¡²£¥Í§ó°ª½è¯Àªº³n¥ó¡C§Y¨Ï¬O·L³n¡BIBM µ¥¤j¤½¥q¤]¤£¥i¹H§Üª« ²z©w«ß¡A¦Ó¥²·|¦Vª«²z©w«ß§ë­°¡C ¥Ø«e¥@¬É¤W¤w¦³¤Ó¦h¥H ANSI/ISO SQL ³o¤@­Ó³W®æ¬°¥Ø¼Ðªº SQL RDBMS ¸ê®Æ®w¡C ¤HÃþ¤£¥i¦A®ö¶O®É¶¡¦b²£¥Í¬Û¦ü¬Æ¦Ü¬Û¦Pªº³n¥ó¡A¬°¬ì¾Ç¤W¦³§ó¦h­È±oª`·NªºÃD §÷¡C µ²½×¬O¡J¦]¬°¬ì¾Çªº©w«ß¡A¡¥¶}©ó­ì©l½X¡¦¨t²Î¡A¹³ PostgreSQL¡BLinux ·|¤ñ¡¥ «Ê³¬­ì©l½X¡¦¨t²ÎÀu²§¡C³o¬O¦³¬ì¾Ç®Ú¾Úªº¡C 4. PostgreSQL ¬O¤°»ò¡H PostgreSQL 6.4 ª©¬O¤@­Ó¦Û¥Ñªº¸ê®Æ®w¡Aµ¹¤©§A§¹¾ãªºµ{¦¡½X¡A¬O¤@­Óªñ¥G¨Ì±q ¡]¥¿¦bÁͪñ¡^ANSI SQL 1998, 92, 89 ³W®æªºª«¥óÃöÁp¦¡¸ê®Æ®w¨t²Î¡A¤Î¥i¦b¤£ ¦Pªºµw¥ó¥­¥x©M¾Þ§@¨t²Î¤¤°õ¦æ¡C ¦³®É°£¿ù´O¸É·|¦b¥D­nªº±À¥X PostgreSQL ªº¥D­nª©¥»¤§«á¥X²{¡C §A¥i¨Ì¾Ú¦Û¤w»Ý­n¡A¦Û¦æ¶i¦æ­×¸É¡C½Ð¸ò±q¥H¤U¨BÆJ¡J ¨ì postgresql µ{¦¡½Xªº¥Ø¿ý cd /usr/src/postgresql6.4 patch -p0 < patchfile make clean make ¤]½Ð¾\Ū»¡©ú®Ñ¡A°õ¦æ 'man patch' ´O¸ÉÀɬO¦b * PostgreSQL ´O¸É¡J [16]ftp://ftp.postgresql.org/pub/patches PostgreSQL ªº³Ì²×¥Øªº¬O¦Ê¤À¦Ê²Å¦X ANSI/ISO SQL ¤Î¦¨¬°¥@¬É²Ä¤@ªº¶}©ñ³q¥Î ¸ê®Æ®w¡CPostgreSQL ¤]·|«ü¤Þ¡B±À°Ê¡B±±¨î¡BºÊ¹î¤Î«ü´§¥¼¨Óªº ANSI/ISO SQL ¡C §Y¬O»¡¡A·N©À·|¥ý¦b PostgreSQL ¹ê¦æ¡A¤§«á¦A¥[¶i ANSI/ISO SQL ¤¤¡C Informix Universal server¡]1997 ¦~±À¥X¡^ªº°ò¦¬O PostgreSQL ªº¸ûª©¥» ¡A¦]¬° Informix ¦¬ÁʤF Illustra Inc. ¤Î¾ã¦X¨ì Informix¡CIllustra ¸ê®Æ®w ¬O§¹¥þ®Ú¾Ú Postgres¡]PostgreSQL ªº«e¨­¡^¼g¦¨ªº¡C PostgreSQL ¬O POSTGRES ¸ê®Æ®wºÞ²z¨t²Îªº§ï¨}ª©¡A¤@­Ó·s¤@¥N DBMS ªº¬ã¨s­ì «¬ (prototype)¡C¦b«O¯d POSTGRES ±j¤jªº¸ê®Æ¼Ò«¬¤ÎÂ×´Iªº¸ê®Æ«¬ºAªº¦P®É¡A ¥¦¥H¤@­ÓÂX¥R¤Fªº SQL ¤l¶°¨Ó¨ú¥N PostQuel ¬d¸ß»y¨¥¡C PostgreSQL ¬O¥Ñ¤@¸s°Ñ¥[ PostgreSQL ¶}µo³q«H½×¾Âªº¤¬Ápºô¶}µo ¤H­û¶i¦æªº ¡C¥Ø«eªº¨ó½ÕªÌ¬° Marc G. Fournier * [17]scrappy@postgreSQL.org ³o¶¤¥î·|­t³d©Ò¦³²{¦b¤Î¥¼¨Óªº PostgreSQL µo®i¤u§@¡C·íµM¡A¸ê®Æ®wªº¥Î¤á¦Û ¤v¤]¬O PostgreSQL ªº¶}µo¤H­û¡I³o¶}µo¹Lµ{¬O¤À´²¦b¤¬Ápºô¤W¤j¶q¸ê®Æ®w¥Î®a ªº¡C PostgreSQL 1.01 ªº§@ªÌ¬O Andrew Yu ©M Jolly Chen¡C«Ü¦h¨ä¥L¤H¤]¦³°Ñ»P²¾ ´Ó¡B´ú¸Õ¡B°£¿ù¤Î¥[±jµ{¦¡ªº¤u§@¡CPostgreSQL ªº«e¨­ Postgres ªºµ{¦¡½X¡A¬O «Ü¦h¤j¾Ç²¦·~¥Í¡B¥»¬ì¥Í¤Îµ{¦¡³]­p­û¦b University of California ¡ABerkeley ªº Michael Stonebraker ±Ð±Âªº«ü¾É¤Uªº²£«~¡C ¥»³n¥ó¦b Berkeley ªº­ì¦W¬O Postgres¡C¦b 1995 ¦~¥[¤W SQL ¥\¯à«á¡A«K§ï¦W ¬° Postgres95¡C1996 ¦~¦~§À¦A§ï¦W¬° PostgreSQL¡C ¤w¦³¼Æ¥H¦Ê¸U®M PostgreSQL ³Q¦w¸Ë§@¸ê®Æ®w¦øªA¾¹¡Aºô¤W¸ê®Æ®w¦øªA¾¹©MÀ³¥Î µ{¦¡¸ê®Æ®w¦øªA¾¹¡C¥¦¤ñ¨ä¥L¥ý¶i±o¦h¡A¦Ó¥B¬O¤@­Óª«¥ó¾É¦VÃöÁp¦¡¸ê®Æ®w ¡]ORDBMS¡^¡C PostgreSQL ¥iÀx¦s«Ü¦h¶Ç²Î¸ê®Æ«¬ºA¡A¦p¾ã¼Æ¡B¦r¤¸¤§¥~ªº¸ê®Æ«¬ºA¡C§A¥i¥H«Ø ¥ß¦Û©w«¬ºA¡B¨ç¼Æ¡B¿ò¶Ç (inheritance) µ¥¡CPostgreSQL ¥i¦b Soloris ¡BSunOS¡BHPUX¡BAIX¡BLinux¡BIrix¡BDigital Unix¡BBSDi¡BNetBSD¡BFreeBSD ¡BSCO Unix¡BNEXTSTEP¡BUnixware ¤Î©Ò¦³¨ä¥Lªº Unix °õ¦æ¡C²¾´Ó¨ìµøµ¡ 95/NT ªº¤u§@¥¿¦b¶i¦æ¤¤¡C * ÃD¥Ø¡J PostgreSQL SQL RDBMS ¸ê®Æ®w¡]ª«¥óÃöÁp¸ê®Æ®wºÞ²z¨t²Î¡^ * ¥Ø«eª©¥»¡J 6.4 * ¦~ÄÖ¡J PostgreSQL ¤Q¤G·³¡C¦Û 1985 ¥ó¶}©l¶}µo * §@ªÌ¡J ¤Q¤G¦~¨Ó¤¬Ápºô¤W¼Æ¥H¦Ê¸U­pªº¤j¾Ç©M¤½¥q PostgreSQL ©M¥»¤å¥óªº¦³Ãö¶µ¥Ø»Ý¿í¦u¥H¤Uª©ÅvÁn©ú¡C PostgreSQL Data Base Management System Copyright (c) 1994-6 Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 5. ¦ó³B¨ú±o ? §A¥i±q¥H¤U¦a¤èÁʶR Redhat Linux ¥úºÐ¡B Debian Linux ¥úºÐ©Î Slackware Linux ¥úºÐ¡A±q¤¤§ä¨ì PostgreSQL ®M¸Ë³n¥ó¡]·½µ{¦¡½X©M¤G¤¸½X¡^¡J * Linux System Labs ºô§}¡J [18]http://www.lsl.com/ 7 ¡]¬ü¤¸¡^ * Cheap Bytes Inc ºô§}¡J [19]http://www.cheapbytes.com/ 7 ¡]¬ü¤¸¡^ * Debian Main ºô§}¡J [20]http://www.debian.org/vendors.html PostgreSQL ²Õ´¤]°â½æ¡¥PostgreSQL CDROM¡¦¡A¤º§t§¹¾ãªº·½µ{¦¡½X¡A³\¦h Unix ¾Þ§@¨t²Îªº¥i°õ¦æÀɤΧ¹¾ãªº¤å¥ó¡C * ±q¥Dºô­¶¨ú±o PostgreSQL ¥úºÐ¡J [21]http://www.postgresql.org 30¡]¬ü ¤¸¡^ PostgreSQL ¥u¦³¤G¤¸Àɪº´²§G¡J * §A¥i¤£¶·½sĶ·½µ{¦¡½X¦Ó°õ¦æ PostgreSQL¡C±q [22]ftp://www.redhat.com/pub/contrib/i386/ ªº postgresql-6.4.i386.rpm ÀÉ¥i±o¨ì­^¥Nº¸ (Intel) Linux ªº¤G¤¸ÀÉ¡C³oÀÉ ®×¨Ï¥Î Rehat ªº¡¥rpm¡¦®æ¦¡¡C§A¥ç¥i§ä¨ì PostgreSQL ªºµ{¦¡½X¡C * Solaris¡AHPUX¡AAIX¡AIRIX ©M Linux ¤G¤¸Àɪº¦a§}¡J [23]ftp://ftp.postgresql.org/pub/bindist ¦pªG§A¦b¥ô¦ó¨ä¥L¥­¥x¦¨¥\½s Ķ¡A¤]½Ð¤W¸ü¨ì³o¸Ì¡A¨Ï±o¨ä¥L¤H¤]¥i¨Ï¥Î¡C * ftp ¯¸¥x¡J±q [24]ftp://ftp.redhat.com/pub/contrib/i386/ ¥i¨ú±o­^¥N º¸ Linux ªº¤G¤¸ÀÉ¡A¦³ÃöªºÀɮ׬O postgresql-6.4-3.i386.rpm¡C³oÀÉ®×¨Ï ¥Î Rehat ªº¡¥rpm¡¦®æ¦¡¡C§A¥ç¥i§ä¨ì PostgreSQL ªºµ{¦¡½X¡C ¸Uºûºôºô¯¸¡J * ¥Dºô¯¸¡J [25]http://www.postgresql.org/ * ¦¸ºô¯¸¡J [26]http://logical.thought.net/postgres95/ * [27]http://www.itm.tu-clausthal.de/mirrors/postgres95/ * [28]http://s2k-ftp.cs.berkeley.edu:8000/postgres95/ * [29]http://xenium.pdi.net/PostgreSQL/ * [30]http://s2k-ftp.cs.berkeley.edu:8000/postgres95/ ¦b¦¹¦C¥X ftp ¯¸¡J * ¥D FTP: [31]ftp://ftp.postgresql.org/pub * ¦¸ FTP: [32]ftp://ftp.chicks.net/pub/postgresql * [33]ftp://ftp.emsi.priv.at/pub/postgres/ * [34]ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95 * [35]ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL * [36]ftp://ftp.jaist.ac.jp/pub/dbms/postgres95 * [37]ftp://ftp.luga.or.at/pub/postgres95 * [38]ftp://postgres95.vnet.net:/pub/postgres95 * [39]ftp://ftpza.co.za/mirrors/postgres * [40]ftp://sunsite.auc.dk/pub/databases/postgresql * [41]ftp://ftp.task.gda.pl/pub/software/postgresql * [42]ftp://xenium.pdi.net/pub/PostgreSQL PostgreSQL ªº·½µ{¦¡½X¤]¥i±q sunsite unc ªº¬M®g¯¸±o¨ì¡]¥þ²y¦³¤j¬ù¤@¤d­Ó ¡^¡C¥¦¬O¦b Redhat Linux ®M¥ó´²§Gªº /pub/contrib/i386/postgresql.rpm ÀÉ ¤¤¡C * ­nª¾¹D¦³¤°»ò¬M®g¯¸¡A½Ð¨ì [43]ftp://sunsite.unc.edu 6. PostgreSQL ¤ä´©¶W¹L 200 Gig ªº¶W¯Å¸ê®Æ®w 32 ¦ì¤¸³B²z¾¹ªº¹q¸£¦b¸ê®Æ®w¶W¹L 5 GigaByte ®Éªí²{·|¨³³t¤U­°¡C§A¥i¥Î 32 ¦ì¤¸³B²z¾¹°õ¦æ 30 gig ªº¸ê®Æ®w¡A¦ýªí²{·|¤U­°¡C32 ¦ì¤¸¾÷¾¹¨ü¨ì³Ì¦h 2 GB °O¾ÐÅé¡A2 GB Àɮרt²Î¤Î¨ä¥L¾Þ§@¨t²Î¤è­±ªº­­¨î¡C ¹ï·¥¤j«¬ªº¸ê®Æ®w¨Ó»¡¡A§Ú±j¯P«Øij§A¨Ï¥Î 64 ¦ì¤¸³B²z¾¹¡A¦p Digital Alpha ¡BSun Ultra-sparc 64 ¦ì¤¸³B²z¾¹¡BSilicon graphics 64 ¦ì¤¸³B²z¾¹¡BIntel Mercel IA-64 ³B²z¾¹¡BHPUX 64 ¦ì¤¸¹q¸£¡BIBM 64 ¦ì¤¸¹q¸£¡C¨Ï¥Î 64 ¦ì¤¸ªº ³B²z¾¹¨Ó½sĶ PostgreSQL¡A¥¦´N¥i¥H³B²z¤j«¬ªº¸ê®Æ®w¤Î¬d¸ß¡C¬d¸ß¤j«¬ªí®æ©M ¸ê®Æ®wªº³t«×·|¤ñ 32 ¦ì¤¸ªº¹q¸£§Ö¼Æ­¿¡C64 ¦ì¤¸¹q¸£ªºÀuÂI¬O§A¦³«Ü¤jªº°O¾Ð ¦ì§} (memory addressing space) ©M¾Þ§@¨t²Î¥i³B²z«Ü¤jªºÀɮרt²Î¡B¬°¤j«¬¸ê ®Æ®w´£¨Ñ¸û¨Îªí²{¡B¤ä´©§ó¦h°O¾ÐÅé¡B¯à¤O§ó±j¡K¡K 7. ¾Ì¤°»ò¬Û«H PostgreSQL¡HRegression ´ú¸Õ®M¥ó (Regression test package) ¬°¥Î¤á«Ø ¥ß«H¤ß ¬°¤è«K´ú¸ÕPostgreSQL¡ARegression ´ú¸Õ®M¥ó¡]src/test/regress¡^¤w¥]§t¦b´² §G¤¤¡A¥¦®e³\§Aªº¹q¸£ÀËÃҼзǪº SQL ¾Þ§@¤Î PostgreSQL ªº©µ¦ù¯à¤O¡C´ú¸Õ®M ¥ó¤¤¤w¥]§t¤F¼Æ¦Ê­Ó SQL ´ú¸Õµ{¦¡¡C §AÀ³¥Î¹q¸£ªº°ª³t¨ÓÅçÃÒ PostgreSQL¡A¦Ó¤£¬O¥Î¤H¸£¡C¹q¸£¥i¥H¤H¸£¤d¸U­¿¬Æ¦Ü ¼Æ¥H»õ­¿ªº³t«×¨Ó¶i¦æ Regression ´ú¸Õ¡C²{¥N¹q¸£¥i¦b«Üµu®É¶¡¤º°õ¦æ¼Æ¤Q»õ ­Ó SQL ´ú¸Õ¡C¦b¤£¤[±N¨Ó¡A¹q¸£·|¤ñ¤H¸£§Ö¼Æ¥H¥ü­¿¡C¦]¦¹¡A¨Ï¥Î¹q¸£¨Ó´ú¸Õ¹q ¸£ªºªí²{¬O¦X²zªº¡C ¦p¦³»Ý­n¡A§A¤]¥i¦Û¦æ¼W¥[´ú¸Õ¡C¦pªG§A»{¬°¥¦·|¹ï¨ä§A¤¬Ápºô¥Î®a¦³À°§U¡A§A ¤]¥i§â¥¦¤W¸ü¨ì PostgreSQL ªº¥Dºô¯¸¡CRegression ´ú¸Õ³n¥óÀ°§U¥Î¤á«Ø¥ß¹ï PostgreSQL ªº«H¤ß¤Î«H¥ô¡A¥¦¤]À°§U¥Í²£¨t²Î¨³³t³]¥ß PostgreSQL¡C Regression´ú¸Õ¥i³Qµø¬°¶}µo¤H­û»P³Ì²×¥Î¤á¶¡¬Û¤¬¦P·Nªº¤@¥÷«D±`¦³¤Oªº§Þ³N ¤å¥ó¡CPostgreSQL ¦b¶}µo¹Lµ{¤Î±À¥X³n¥ó¤§«e¼sªx¨Ï¥ÎRegression´ú¸Õ¨Ó«OÃÒ½è ¯À¡C PostgreSQL ªº¯à¤O¥iÄy Regression ´ú¸Õª½±µ¤Ï¬M¥X¨Ó¡C¦pªG¤@ºØ¥\¯à¡B»yªk©Î ¯S©Ê¦b Regression ´ú¸Õ¤¤¦s¦b¡A¥¦´N³Q¤ä´©¡A©Ò¦³¨ä¥L¨S¦³¦C¥Xªº PostgreSQL ´N¥i¯à¤£¤ä´©¡I¡I§A¥i¥H¦Û¦æÅçÃҤΥ[¤J Regression ´ú¸Õ¤¤¡C 8. PostgreSQL ªº«eºÝ GUI ¤u¨ã¡]¹Ï¹³¨Ï¥ÎªÌ¬É­±¡^ PostgreSQL ®M¥ó´²§G¤¤¦³¤@­Ó¦W¬°¡¥pgTcl¡¦ªº Tcl/Tk ¤¶­±µ{¦¡®w¡CTck/Tk ¬O ¤@­Ó§Ö³tÀ³¥Îµ{¦¡¶}µo¤u¨ã (Rapid Application Development tool) ¤]¬O¤@ºØ ©R¥O½Z»y¨¥ (scripting language)¡C¨Ï¥Î Tcl/TK¡A§A¥i¥Hµo¶}µ{¦¡¤@¦¸¦Ó¦b¥ô ¦ó¦a¤è¡A¥]¬A NT¡BWin 95¡BLinux¡BÄ«ªG³Áª÷¶ð iMac¡BOS/2 ©M©Ò¦³ Unixes ¡CTcl ¥Nªí¡¥Tool Command Language¡¦¡A¦Ó Tk ¬O¡¥Tool Kit¡¦¡CTcl/Tk ¦³¤@ ­Ó¦W¬° SpecTcl ªº IDE¡]ºî¦X¶}µoÀô¹Ò¡^¡C¦b Redhat linux ªº®M¥ó´²§G¤¤Àˬd ³o rpm ÀɩΦb¤U¦Cªº sunscript ¯¸¥x¤¤§ä´M¡C §@¬°©R¥O½Z»y¨¥¡APerl ­È±o±ÀÂË¡C³o¬O¦]¬°¥¦¬O³Ì³q¥Î¡A«D±`±j«l¤Î¥i¦b©Ò¦³³n µw¥ó¥­¥x¨Ï¥Î¡CPerl-Tk ©Î Perl-Qt ©Î C++ QtEZ ©Î C++ Lesstif ¤]¨ü¨ì±ÀÂË ¡C¦Ò¼{¨ì®É¶¡¸ê·½¡B°õ¦æ³t«×©Mµ{¦¡³]­pªº®e©ö«×¡A Perl¡BC ©M Tk ªº²Õ¦X¥iº¡ ¨¬¤j³¡¤À±M®×ªº»Ý­n¡C­nª`·N Java µ{¦¡«D±`½wºC¡CC++ ¤]¤ñ C ½wºC¡C©M©Ò¦³¨ä ¥L»y¨¥¤ñ¸û¡AC ³t«×³Ì°ª¡CPerl µ{¦¡¥i¨Ï¥Î Perl2C µ{¦¡ÂàÅܬ° C µ{¦¡¡A½sĶ ¤§«á·|§Ö³t¤@¨Ç¡C ¥@¬É¤W¦³¦Ê¤À¤§¤E¤Qªº¤¬Ápºô©R¥O½Z¬O¥Î Perl ¼g¦¨ªº¡C©Ò¥H§A¥u»Ý¤@ºØ¡] ¡§Perl¡¨¡^»y¨¥¨Óº¡¨¬§A©Ò¦³»Ý­n¡X¡XÀ³¥Îµ{¦¡©M¤¬Ápºô¡C½Ð°Ñ¾\¥»¤å¥óªº Perl ¸ê®Æ®w¤¶­± (Perl Database Interface) ³¡¤À¡J [44]Perl Database Interface ¡C ¦b¨Ï¥Î Tcl ¶}µo¤@­Ó±M®×«e¡A§A­n·Q²M·¡ Perl ©M Tcl/Tk ªºÀu¦H¡C³q±`¨C¤ù Linux CD-ROM ³£·|¦³ Tcl/Tk¡C§A¤]¥i¦b¥H¤U¦a¤è§ä¨ì¥¦¡J * Tcl/Tk [45]http://www.scriptics.com * ¦W¬° INCR ªº Tcl ª«¥ó¾É¦V©µ¦ù [46]http://www.tcltk.com * Visual TCL ºô¯¸ [47]http://www.neuron.com * Visual TCL Redhat rpm [48]ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm * [49]http://sunscript.sun.com/ * [50]http://sunscript.sun.com/TclTkCore/ * [51]ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z * °Ñ¦Ò®ÑÄy¡J¥«³õ¤W¦³¤j¶q Tcl/Tk ªº®ÑÄy¡C 9. PostgreSQL ªººî¦X¶}µoÀô¹Ò¤u¨ã (GUI IDE) Àˬd¤U¦C¥i©M ODBC/JDBC ÅX°Êµ{¦¡¦@¦P¨Ï¥Îªº¶}µo¤u¨ã¡A¥¦­Ì©M Borland C++ Builder¡BBorland JBuilder ¬Û¦ü¡C Vibe ¬O¤@­Ó Java ©M C++ IDE¡]ºî¦X¶}µoÀô¹Ò¡^¡A¨Ã·í¿ï¬° Unix Review ªº¥þ ¦~³Ì¨Î IDE (IDE of the year)¡C * §ó¦h Vibe ªº¸ê®Æ¥i¦b [52]http://www.LinuxMall.com/products/00487.html §ä¨ì * 'QT'¡A¤@­Ó¥i¦bµøµ¡ 95/NT ©M Unix ¨Ï¥ÎªºÀ³¥Îµ{¦¡®Ø¬[ (application framework)¡J [53]http://www.troll.no¡Aftp ¯¸ [54]ftp://ftp.troll.no §A¤]¥i¦bµøµ¡ 95 ¤¤¨Ï¥Î Borland C++ Builder¡BDelphi¡BBorland JBuilder ¡BPowerBuilder ¸g ODBC/JDBC ÅX°Êµ{¦¡³s±µ¨ì unix ¹q¸£ªº PostgreSQL¡C ½Ð°Ñ¾\¥»¤å¥óªº PERL ¸ê®Æ®w¤¶­±³¡¤À¡J [55]Perl Database Interface ¡C§Ú±j ¯P±ÀÂ˨ϥΠPerl ©M C/C++ §@ IDE ªº¿ï¾Ü¡C §K¶Oªº IDE ¤u¨ã¡J Àˬd Redhat Linux ªº¥úºÐ¡C * Lesstif Motif ¤u¨ã [56]ftp://ftp.redhat.com/pub/contrib/i386/lesstiff*.rpm * FreeBuilder [57]ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm * SpecTCL [58]ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm * JccWarrior [59]ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm * PostgreSQL ªº Kanchenjunga Java RAD ¤u¨ã [60]http://www.man.ac.uk/~whaley/kj/kanch.html * Applixware ¤u¨ã [61]http://www.redhat.com * XWPE X Windows Programming Environment [62]http://www.rpi.edu/~payned/xwpe/ [63]ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm * XWB X Windows Work Bench [64]ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm * NEdit [65]ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm 10. PostgreSQL ªº¤¶­±ÅX°Êµ{¦¡ 10.1 PostgreSQL ªº ODBC ÅX°Êµ{¦¡ ODBC ¥Nªí¡¥Open DataBase Connectivity¡¦¡C¥¦¬O±q¤£¦P¼t°Ó¤£¦P¸ê®Æ®w¦s¨ú¸ê ®Æªº¬y¦æ¤¶­±¡C¨Ï¥Î ODBC ÅX°Êµ{¦¡¼g¦¨ªº³n¥ó«OÃÒ¥i©M¤£¦P¸ê®Æ®w¡A¦p PostgreSQL¡BOracle¡BSybase ©M Informix µ¥¦X§@¡C * PostODBC ¤w¸g¥]¬A¦b PostgreSQL ªº´²§G¤¤¡C½Ð¨ì¥Dºô¯¸ [66]http://www.postgresql.org. ¥¦¤]¥]¬A¦b PostgreSQL ¥úºÐ¤¤¡C * [67]http://www.openlinksw.com Open Link Software Corporation °â½æ PostgreSQL ©M¨ä¥L¸ê®Æ®wªº ODBC ÅX°Êµ{¦¡¡C¦o¤]°e¥X§K¶Oªº ODBC (¦WÃB ¦³­­¡^¡C * PostgreSQL ªº Insight ODBC [68]http://www.insightdist.com/psqlodbc ³o¬O PostODBC ªº©x¤èºô¯¸¡C ³o¬O¤@­Ó¦W¬° FreeODBC Pack Package ªº­p¹º¡C¥Ø«e ¤´¨S PostgreSQL ª©¥»¡A ¤]³\§A¯àÀ°§U¡C * [69]http://www.ids.net/~bjepson/freeODBC/ ³o¬O¤@­Ó§K¶Oªº ODBC¡C 10.2 PostgreSQL ªº UDBC ÅX°Êµ{¦¡ UDBC ¬O ¤@ºØ¿W¥ß©óÅX°Êµ{¦¡ºÞ²z­û (driver managers) ©M DLL ¤ä´©ªºÀRºA ODBC ª©¥»¡A¥Î¨Óª½±µ§â¸ê®Æ®w³s±µ¯à¤O´O¤J¨ìÀ³¥Î³n¥ó¤¤¡C * [70]http://www.openlinksw.com Open Link Software Corporation ¥X°â PostgreSQL ©M¨ä¥L¸ê®Æ®wªº UDBC ÅX°Êµ{¦¡¡C Open Link ¤]°e¥X§K¶Oªº UDBC (¦WÃB¦³­­¡^¡C 10.3 PostgreSQL ªº JDBC ÅX°Êµ{¦¡ JDBC ¥Nªí¡¥Java DataBase Connectivity¡¦¡CJava ¬O¤@ºØª@¶§ (Sun Microsystems) ©Ò¶}µoªº¿W¥ß©ó¥­¥xªºµ{¦¡»y¨¥¡CJava µ{¦¡³]­p®v³Q¹ªÀy¨Ï¥Î JDBC ¨Ó¼¶¼g¸ê®Æ®wµ{¦¡¡A¥H¼W±jµ{¦¡¦b¤£¦P¸ê®Æ®w¡A¦p PostgreSQL¡BOracle ¡BInformix µ¥¤§¶¡ªº²¾´Ó¯à¤O¡C¦pªG§A¼g Java µ{¦¡¡A§A¥i¦b¥H¤Uºô¯¸¨ú±o PostgreSQL ªº JDBC ÅX°Êµ{¦¡¡C JDBC ÅX°Êµ{¦¡¤w¥]¬A¬A¦b PostgreSQL ´²§G¤¤¡C * [71]http://www.demon.co.uk/finder/postgres/index.html ª@¶§ªº PostgreSQL ³s±µ * [72]ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz * [73]http://www.openlinksw.com Open Link Software Corporation ¥X°â PostgreSQL ©M¨ä¥L¸ê®Æ®wªº JDBC ÅX°Êµ{¦¡¡C Open Link ¤]°e¥X§K¶Oªº JDBC (¦WÃB¦³­­¡^¡C * JDBC ­^°êºô¯¸ [74]http://www.retep.org.uk/postgres * JDBC FAQ ºô¯¸ [75]http://eagle.eku.edu/tools/jdbc/faq.html JDBC ªººô­¶¡B¾É¤Þ©M FAQ ¦b¡J * JDBC HOME [76]http://splash.javasoft.com/jdbc * JDBC guide [77]http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc * JDBC FAQ [78]http://javanese.yoyoweb.com/JDBC/FAQ.txt 10.4 PostgreSQL ªº Java Java µ{¦¡³]­p®v·|ı±o³o¨Ç¹ï¥L­Ì«Ü¦³¥Î¡C * [79]ftp://ftp.redhat.com/pub/contrib/i386 ¬Ý postgresql-jdbc-*.rpm * [80]http://www.blackdown.org 11. PostgreSQL ªº Perl ¸ê®Æ®w¤¶­± (Database Interface, DBI) 11.1 PostgreSQL ªº PERL 5 ¤¶­± PERL ¬O¡¥Practical Exptraction and Report Language¡¦ªºÂ²¼g¡C¥@¤W©Ò¦³³n µw¥ó¥­¥x³£¥i¨Ï¥Î Perl¡C§A©Ò¦bµøµ¡ 95/NT¡BÄ«ªG³Áª÷¶ð iMac¡B©Ò¦³ Unix ¡]Solaris¡BHPUX¡BAIX¡BLinux¡BIrix¡BSCO µ¥µ¥¡^¡B¤j«¬¹q¸£ MVS¡B®à­±ªº OS/2¡BOS/400¡BAmdahl UTS ©M¨ä¥L«Ü¦h¹q¸£¡CPerl ¬Æ¦Ü¥i¦b«Ü¦h¤£¬y¦æ©M¤£¬° ¤Hª¾ªº¾Þ§@¨t²Î©Mµw¥ó°õ¦æ¡I¡I©Ò¥H¡A¦b¬Ý¨ì Perl ¦b¤@­Ó¨u¨£ªº¾Þ§@¨t²Î¤W°õ ¦æ®É¡A¤£¥²¤jÅå¤p©Ç¡C§A¥i¥H·Q¹³¨ì Perl ªº¨Ï¥ÎªÌ©M¶}µo¤H­ûªº¼Æ¶q¡C PostgreSQL ªº Perl ¤¶­±¤w¥]¬A¦b PostgreSQL ªº´²§G¤¤¡C½Ð°Ñ¬Ý src/pgsql_perl5 ¥Ø¿ý¡C * Pgsql_perl5 ¹q¶lÁpµ¸¦a§}¡J [81]E.Mergl@bawue.de * ¥t¤@¸ê®Æ¨Ó·½¡J [82]ftp://ftp.kciLink.com/pub/PostgresPerl-1.3.tar.gz * Perl ºô­¶ [83]http://www.perl.com/perl/index.html * Perl ¾É¤Þ¡A½Ð¦b [84]http://reference.perl.com/ °Ñ¬Ý¾É¤Þ¥Ø¿ý * Perl FAQ ¦b [85]http://www.yahoo.com/Computers_and_Internet/Programming_Langua ges/Perl/ * Perl GUI ¨Ï¥ÎªÌ¤¶­± Perl-Qt rpm¡J [86]ftp://ftp.redhat.com/pub/contrib/i386 ¤]½Ð¬Ý PerlQt-1.06-1.i386.rpm * Perl GUI ¨Ï¥ÎªÌ¤¶­± Perl-Qt¡J [87]http://www.accessone.com/~jql/perlqt.html * Perl GUI ¨Ï¥ÎªÌ¤¶­± Perl-XForms¡J [88]ftp://ftp.redhat.com/pub/contrib/i386¡A´M§ä Xforms4Perl-0.8.4-1.i386.rpm * Perl GUI ¨Ï¥ÎªÌ¤¶­± Perl-Tk¡J [89]ftp://ftp.redhat.com/pub/contrib/i386 * Perl GUIkits¡J [90]http://reference.perl.com/query.cgi?ui * Perl ¸ê®Æ®w¤¶­±¡J [91]http://reference.perl.com/query.cgi?database * Perl ¨ì "C" ªºÂ½Ä¶¤u¨ã¡J [92]http://www.perl.com/CPAN-local/modules/by-module/B/ ´M§ä Compiler-a3.tar.gz * Bourne shell ¨ì Perl ªºÂ½Ä¶¤u¨ã¡J [93]http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz * awk ¨ì perl ªº a2p ©M sed ¨ì perl ªº s2p ¤w¥]¬A¦b PERL ´²§G¤¤¡C * ¤]½Ð¬Ý comp.lang.perl.* µ¥¦³Ãö PERL ªº·s»D²Õ 11.2 Perl ¸ê®Æ®w¤¶­± DBI ¦ó¿× DBI¡H Perl ¸ê®Æ®w¤¶­±¡]DBI¡^¬O Perl »y¨¥ªº¤@­Ó¸ê®Æ®w¦s¨úÀ³¥Îµ{¦¡¤¶­±¡]API¡^ ¡CPerl DBI API ³W®æ©w¸q¤F¤@²Õ¨ç¼Æ¡BÅܼƩMºD¨Ò¡A¥H´£¨Ñ¤@­Ó¤@­P¦Ó¿W¥ß©ó¹ê »Ú©Ò¥Îªº¸ê®Æ®w¤¶­±¡C¦³Ãö DBI ªº³o¤@¬qªº¸ê®Æ¬O¨Ó¦Û¡¥DBI FAQ¡¦¤å¥ó¡A§@ªÌ ¬O Alligator Descartes¡A¨ÃÀò­ã¦b¦¹½Æ»s¡C * Alligator Descartes Hermetica ¦b [94]descarte@hermetica.com PostgreSQL ªº DBI ÅX°Êµ{¦¡ DBD-Pg-0.89 ¦b¦¹¨ú±o DBD-Pg-0.89.tar.gz¡J * DBD-Pg-0.89 : [95]http://www.perl.com/CPAN/modules/by-module/DBD/ * Comprehensive Perl Archive Network CPAN [96]http://www.perl.com/CPAN * DBI ÅX°Êµ{¦¡¦W³æ©M DBI ¼Ò²Õºô­¶ [97]http://www.hermetica.com/technologia/perl/DBI * DBI ªº¸ê®Æ¦b [98]http://www.fugue.com/dbi/ * ¥Dºô­¶ [99]ftp://ftp.demon.co.uk/pub/perl/db * ÂøÀA DBI ³sµ² [100]http://www-ccs.cs.umass.edu/db.html * ÂøÀA DBI ³sµ² [101]http://www.odmg.org/odmg93/updates_dbarry.html * ÂøÀA DBI ³sµ² [102]http://www.jcc.com/sql_stnd.html * PostgreSQL ¸ê®Æ®w [103]http://www.postgresql.org ¨t²Î»Ý¨D¡J * - «Ø¥ß¡B´ú¸Õ©M¦w¸Ë Perl 5 (³Ì¤Ö 5.002) * - «Ø¥ß¡B´ú¸Õ©M¦w¸Ë DBI ¼Ò²Õ (³Ì¤Ö 0.89) * - «Ø¥ß¡B´ú¸Õ©M¦w¸Ë PostgreSQL (³Ì¤Ö 6.2) DBI ªº§Þ³N¤ä´© ½Ð§â·N¨£©M¿ù»~³ø§i±H¨ì * [104]E.Mergl@bawue.de ½Ð§â¥H perl -v¡Bperl -V ªº¿é¥X¡BPostgreSQL ªºª©¥»¡BDBD-Pg ªºª©¥»¡BDBI ªºª©¥»¥]¬A¦b¿ù»~³ø§i¤¤¡C ¦ó¿× DBI¡BDBperl¡BOraperl ©M *perl¡H ºK¿ý¦Û Tim Bunce¡ADBI ªº³]­pªÌ©M§@ªÌ¡J ¡§DBI ¬O Perl »y¨¥ªº¤@ºØÀ³¥Îµ{¦¡¤¶­±¡]API¡^¡CPerl DBI API ³W®æ©w¸q¤F ¤@ ²Õ¨ç¼Æ¡BÅܼƩMºD¨Ò¡A¥Î©ó´£¨Ñ¤@­Ó¤@­P¦Ó¿W¥ß©ó¹ê»Ú©Ò¥Îªº¸ê®Æ®w¤¶­±¡C¡¨ ²³æ¦a»¡¡ADBI ®e³\¥Î®a³z©ú¦a (transparently) ¦s¨ú¦hºØ¸ê®Æ®w¡C©Ò¥H¡A¦pªG §A³s±µ¨ì Oracle¡BInformix¡BmSQL¡BSybase ©Î¥ô¦ó¸ê®Æ®w¡A§A¤£»Ý­nª¾¹D 3GL ¼h­±¤º¸Ìªº¾÷¨î¡CDBI ©Ò©w¸qªº API ¥i¥Î©ó©Ò¦³³o¨Ç¸ê®Æ®w¡C ³o¼Ëªº¦n³B¬O§A±o¨ì¦b¤@½g perl ¤â½Z¤¤³s±µ¨â­Ó¤£¦P¥Xª©°Ó¤£¦Pªº¸ê®Æ®w¡A¨Ò ¦p¦b¤@­Óµ{¦¡¤¤Åª¨ú¦b¤@­Ó Oracle ¸ê®Æ®wªº¸ê®Æ¤Î±N¥¦´¡¤J¨ì Informix ¸ê®Æ ®w¤¤¡CDBI ¼h­±®e³\§A²³æ¤Î¦³¤O¦a°µ¨ì¡C DBperl ¬O³o­Ó¤¶­±³W®æªºÂ¦W¡C¥¦²{¦b¤@¯ë¥Î©ó¥Nªí¥Î©ó perl4 ªº¸ê®Æ®w¤¶­± ¼Ò²Õ¡A¦p oraperl¡Bisqlperl¡Bingperl ¤§Ãþ¡C³o¨Ç¤¶­±¨S¦³¼Ð·Çªº API¡A¤@¯ë ¤w¨S¦³¤ä´©¡C ³o¬O DBperl ¼Ò²Õªº¦W³æ¡A©Ò¹ïÀ³ªº DBI ¼Ò²Õ¤Î§Þ³N¤ä´©¸ê°T¡C¦³Ãö DBI ÅX°Ê µ{¦¡ªº°ÝÃDÀ³¸Ó¦b dbi-users ³q°T½×¾Â´£¥X¡C list. ¼Ò²Õ¦WºÙ ©Ò»Ý¸ê®Æ®w §@ªÌ DBI ----------- ----------------- ------ --- Sybperl Sybase Michael Peppler DBD::Sybase http://www.mbay.net/~mpeppler Oraperl Oracle 6 & 7 Kevin Stock DBD::Oracle Ingperl Ingres Tim Bunce & DBD::Ingres Ted Lemon Interperl Interbase Buzz Moschetti DBD::Interbase Uniperl Unify 5.0 Rick Wargo None Pgperl Postgres Igor Metz DBD::Pg Btreeperl NDBM John Conover SDBM? Ctreeperl C-Tree John Conover None Cisamperl Informix C-ISAM Mathias Koerber None Duaperl X.500 Directory Eric Douglas None User Agent ¤£¹L¡A³¡¤À DBI ¼Ò²Õ¦³ DBperl ¼ÒÀÀ¼h (emulation layers)¡A¦]¦¹ ¡ADBD:Oracle ·|¦³ Oraperl ¼ÒÀÀ¼h¡AÅý§AµL»Ý§ó§ï²{¦sªº Oraperl ¤â½Z«K¯à°õ ¦æ¡C³o¼ÒÀÀ¼h§â Oraperl API ©I¥s½Ķ¦¨ DBI ©I¥s¨Ã³q¹L DBI °õ¦æ¡C ³o¦Cªí¬O¼ÒÀÀ¼hªº¸ê®Æ¡J ¼Ò²Õ ¼ÒÀÀ¼h ª¬ªp ------ --------------- ------ DBD::Oracle Oraperl §¹¦¨ DBD::Informix Isqlperl ¶}µo¤¤ DBD::Sybase Sybperl ¥i¥Î¡H¡]¦³«ÝÅçÃÒ¡^ DBD::mSQL Msqlperl ¦b DBD::mSQL-0.61 ¤¤¹êÅç©Ê±À¥X Msqlperl ¼ÒÀÀ¬O¯S®í±¡ªp¡CMsqlperl ¬O mSQL ¸ê®Æ®wªº perl5 ÅX°Êµ{¦¡¡A¦ý¤£ ¨Ì±q DBI ³W®æ¡C¤j®aÀ³¨Ï¥Î DBD::mSQL¡A¦Ó¤£À³¥Î Msqlperl¡CMsqlperl ¥i±q CPAN ¤U¸ü¡J * [105]http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl DBI ³W®æ ³o¸Ì¦³¤@¨Ç DBI ªº¸ê®Æ¨Ó·½¡C * DBI ³W®æ [106]http://www.hermetica.com/technologia/perl/DBI/doc/dbispec ³o·|³sµ²¨ì¤G­Ó³W®æ¡A§Y¶}µo¶¤¥î§V¤Oµo®i¤@­Óí©wªº¤¶­±´Á¶¡¡A¥¿§Ö³t§ó§ïªº ·s DBI ³W®æ¯ó®×¡A©M DBperl ³W®æµo®i¦Ó¨Ó¡A¥Ø«eªº DBI ¤¶­±¡C «áªÌÀ³¥u³Qµø¬°¾ú¥v¬ö¿ý¡A¦Ó¤£¥i¥Î§@µ{¦¡³]­p»¡©ú®Ñ©Î¥ô¦ó¨ãÅv«Â©Êªº¤å¥ó¡C ¤£¹L¡A¥¦ÁÙ¬O¤Q¤À¦³¥Îªº°Ñ¦Ò¸ê®Æ¡C POD ¤å¥ó POD ¬O´O¤J¨ì perl µ{¦¡¤¤¥Î¥H¡§§Y³õ¡¨¸ÑÄÀµ{¦¡½Xªº¤@¬q¤å¥ó¡A¥Î¥H ´£¨Ñ ¦³¥Îªº¸ê®Æµ¹µ{¦¡³]­p®v©M¼Ò²Õªº¥Î®a¡CDBI ©MÅX°Êµ{¦¡ªº POD ¥¿¶V¨Ó¶V ¬y¦æ¡A­n¾\Ū¦³Ãö¤å¥ó¡A½Ð¨Ï¥Î¥H¤U«ü¥O¡C DBI ³W®æ ½Ð¨Ï¥Î¥H¤U«ü¥O¾\Ū DBI ³W®æªº POD perldoc DBI Oraperl DBD::Oracle ¤¤ Oraperl ¼ÒÀÀ¼hªº¨Ï¥ÎªÌ¥i¥Î¥H¤U«ü¥O¾Ç²ß¦p¦ó¥Î Oraperl ¤¶­±½s¼gµ{¦¡¡J perldoc Oraperl ³o¼Ë·|²£¥Í¤@¥÷¥Ñ Kevin Stock ¬° perl4 ©Ò¼gªº­ì¸Ë oraperl man page §ó·s ª©¡C³o¸Ì·|¥þ­±¦C¥X¤Î¤¶²Ð oraperl API¡C DBD::mSQL DBD::mSQL ¼Ò²Õªº¥Î®a¥iÄy¥H¤U«ü¥O¾\Ū¤@¨Ç¸ÓÅX°Êµ{¦¡ªº¨p®a¨ç¼Æ (private functions) ©M©Çéqªº¸ê®Æ¡J perldoc DBD::mSQL ±`¨£°ÝÃD (FAQ) POD ¤å¥ó¤¤¤]¥]§t±`¨£°ÝÃD¡C­n¾\Ūªº¸Ü½Ð¿é¤J¡J perldoc DBI::FAQ ¹ï¤£¬O¥Ã¤[©Î¤£¯à¤è«K¦a³s±µ¤W¤¬Ápºôªº¤H¨Ó»¡³o¤ñ¸û¤è«K¡J POD ªº¤@¯ë¸ê®Æ ¦³Ãö POD ¦p¦ó¼¶¼g POD¡A¤Î¤@¯ë¨Ó»¡ªº POD ­õ¾Ç¡A¥iÄy¦¹¾\Ū ¡J perldoc perlpod ¦w¸Ë¤F Tk ¼Ò²Õªº¥Î®a¥i¯à·|¹ï¤@­Ó¦W¬° tkpod¡A¨Ï¥Î Tk ªº POD ¾\Ū¾¹¦³¿³½ì ¡C¥¦·|§â POD ½s±Æ¨ì¤@­Ó¤è«K¤Î¥i¾\Ūªº§Î¦¡¡J ¶¢½Í¡B¤p¹D®ø®§©MÆ[¹î¡J ¦b DBI ªº³q«H½×¾Â¤¤¦³¤£¦P¤H´£¥Xªº¤@³s¦ê°¸µMªº¶¢ ½Í¡C * [107]http://www.hermetica.com/technologia/perl/DBI/tidbits ¡§DBI¡X¡Xperl5 ¸ê®Æ®w¤¶­±¡¨ ¥»¤å¥ó¥Ñ Alligator Descartes ©M Tim Bunce ©Ò¼g¡AÃö©ó DBI ªºµ²ºc¡C¥¦¦b¡§The Perl Journal¡¨²Ä¤­´Á¥Xª©¡C¥¦¼g±o·¥¤§¦n ¡C½Ð¶R³o¥»Âø»x¡C¨Æ¹ê¤W¡A½Ð¨C´Á³£¶R¡C¡§The Perl Journal¡¨ªº¤¬Ápºôºô§}¬O ¡J * [108]http://www.tpj.com ¡§DBperl¡¨ ³o¤å³¹¦b¤@¤E¤E¤»¦~¤Q¤@¤ëªº¡§Dr. Dobbs Journal¡¨µoªí¡A¤º®eÃö ©óDBperl¡C ¡§The Perl5 Database Interface¡¨ ³o¬O¤@¥»¥Ñ Alligator Descartes ¼g¡A¥Ñ O'Reilly and Associates ¥Xª©ªº®Ñ¡C ³q«H½×¾Â Ted Lemon Á`¦@ºÞ²z¤T­Ó DBI ªº³q«H½×¾Â¡C¥¦­Ì³£¥i¦b¸Uºûºô¤W­q¾\ ©Î¨ú®ø ­q¾\¡J * ³q«H½×¾Â [109]http://www.fugue.com/dbi ³o¨Ç¥i¥[¤Jªº½×¾Â¬O¡J dbi-announce ³o³q«H½×¾Â¥u¬O§@¥X«Å§G¡C¦pªG§A¤£¯à¦¨¥\¨Ï¥Î¥H¤Wºô§}ªºªí®æ¡A ½Ð´`¥H¤U³~®|­q¾\³o½×¾Â¡J * ¹q¶l¡J [110]dbi-announce-request@fugue.com ¤º®e¡¥subscribe¡¦ dbi-dev ³o³q«H½×¾Â¥Øªº¬OÅý¶}µo¤H­û°Q½×¦³Ãö DBI ¤¶­±¡BAPI ©MÅX°Êµ{¦¡¾÷¨î ªº·N¨£©M·§©À¡C¥u¹ï¶}µo¤H­û©Î¦³¿³½ìªº¤H¦³¥Î¡C¦pªG§A¤£¯à¦¨¥\¨Ï¥Î¥H¤Wºô§} ªºªí®æ¡A½Ð´`¥H¤U³~®|­q¾\³o½×¾Â¡J * ¹q¶l¡J [111]dbi-dev-request@fugue.com ¤º®e¬°¡¥subscribe¡¦ dbi-users ³o³q«H½×¾Â¬O¥Î§@¿ù»~³ø§i¡B°ÝÃD°Q½×©M¤@¯ë°ÝÃD¡C¦pªG§A¤£¯à¦¨¥\ ¨Ï¥Î¥H¤Wºô§}ªºªí®æ¡A½Ð´`¤U³~®|­q¾\³o½×¾Â¡J * ¹q¶l¡J [112]dbi-users-request@fugue.com ¤º®e¬°¡¥subscribe¡¦ ³q«HÀx¦s³B (Mailing List Archives)¡J * ¬ü°ê³q«HÀx¦s³B [113]http://outside.organic.com/mail-archives/dbi-users/ * ¼Ú¬w³q«HÀx¦s³B [114]http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Int erest ½sĶ¿ù»~©Î¡u´ú¸Õ¥¢±Ñ¡v ¦pªGµo¥Í°T®§ÂàÀx (core dump)¡A¹Á¸Õ¨Ï¥Î Devel::CoreStack ¼Ò²Õ¨Ó²£¥Í°T®§ ÂàÀxªº°ïÅ|°lÂÜ (stack trace)¡CDevel::CoreStack ¥i¦b CPAN §ä¨ì¡J * [115]http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack §â°ïÅ|°lÂÜ¡B¼Ò²Õª©¥»¡Bperl ª©¥»¡B´ú¸Õ­Ó®×¡B¾Þ§@¨t²Îª©¥»¤Î¥ô¦ó¨ä¥L¾A¥Îªº ¸ê®Æ¹q¶l¨ì dbi-users ³q«H½×¾Â¡C±H¥Xªº¸ê®Æ¶V»ô¥þ¡A¶}µo¤H­û¶V§Ö¸Ñ¨M°ÝÃD¡C ¦pªG§A¤£§i¶D§Ú­Ì¡A¤£­n´Á±æ±o¨ìµª®×¡C µøµ¡ 95/NT ¦³¨S¦³ DBI ¤ä´©¡H DBI ©M DBD::Oracle ªº Win32 ª©¥»¤w¦¨¬° DBI ªº¼Ð·Ç³¡¤À¡C¦]¦¹¡A¤ñ DBI 0.81 °ªªºª©¥»À³¸Ó·|¥¿±`¹B§@¡C³z¹L ODBC¡A§A¥i¥H¦s¨ú·L³n Access ©M SQL-Server ¸ê®Æ®w¡C¦b DBI-0.79¡]¤Î¥H«á¡^¦³¤@­Ó¹êÅç©Ê½èªº Win32::ODBC DBI ¼ÒÀÀ¼h¡C¥¦¦W¬° DBI::W32ODBC¡C§A»Ý­n¨Ï¥Î Win32::odbc ¼Ò²Õ¡C * Win32 DBI [116]http://www.hermetica.com/technologia/perl/DBI/win32 * Win32 ODBC [117]http://www.roth.net ¦ó¿× DBM¡H¬°¦ó­n¥Î DBI¡H UNIX ­ì¥»¬O¨Ï¥Î²³æ¥HÀɮ׬°°ò¦ªº¡u¸ê®Æ®w¡v¡A§Y dbm ¨t²Î¡Cdbm ®e³\§A¦b Àɮקֳt¦a¦s¨ú¸ê®Æ¡C¤£¹L¡A¥¦¦³¼Æ­ÓÄY­«ªº¯ÊÂI¡C Àɮ׫ÊÂê (File Locking) dbm ¨t²Î¤£®e³\¯S§O¥þ­±ªºÀɮ׫ÊÂê¯à¤O¡A¤]¨S¦³­×¥¿¦P®É¼g¤J¸ê®Æ®w¤Þ°_ªº°Ý ÃDªº¯à¤O¡C ÀH·Nªº¸ê®Æµ²ºc dbm ¨t²Î¥u®e³\³æ¤@©T©wªº¸ê®Æµ²ºc¡JÃì-¼Æ­È¹ï (key-value pair)¡C¨º¼Æ­È¥i ¥H¬O½ÆÂøªºª«¥ó¡A¦p¤@­Ó C ªº struct¡A¦ýÃ쥲¶·¬O¿W¤@µL¤Gªº¡C³o¹ï dbm ¨t²Î ªº¥Î³~³y¦¨«Ü¤j­­¨î¡C ¤£¹L¡Adbm ¨t²Î¤´¬°¨Ï¥Î²³æ¸ê®Æ¤Î¸ê·½¦³­­ªº¥Î®a´£¨Ñ¤F¦³¥Îªº¥\¯à¡A¦]¬°¥¦ §Ö³t¡B¥þ­±¤Î¸g¹L·¥ÄYÂÔªº´ú¸Õ¡C¦s¨ú dbm ¨t²Îªº¼Ò²Õ²{¤w¸g AnyDBM_File ¼Ò ²Õ¾ã¦X¨ì Perl ªº®Ö¤ß´²§G¤¤¡C Á`¬A¤@¥y¡A¹ïªñ¥G¬O°ßŪªº¸ê®Æ®w©Î¤p«¬¦Ó²³æªº¸ê®Æ¨Ó»¡¡Adbm ¬O¤@­Ó«D±`¥O ¤Hº¡·Nªº¸Ñ¨M¤èªk¡C¤£¹L¡A¹ï§ó±j¤j©M¥i¼W´î (scalable) ªº¸ê®Æ¶°¨Ó»¡¡A¥Î®a ³Ì¦n¨Ï¥Î DBI¡C¦Ü©ó¥þ­±ªº¥æ©ö«ÊÂê (transactional locking)¡A´N§ó¤£¥Î»¡¤F ¡CÓ DBI ¬O§_¤ä´©<³o¶µ¥\¯à>¡H ®Ú¾Ú©Ò´£¥Xªº¥\¯à¬O¤@­Ó¨Ã¤£¼Ð·Ç¡A¦Ó¥u¬°³¡¤À¸ê®Æ®w©Ò¿W¦³ªº°²³]¡Aµª®×¬O§_ ¡C DBI ¤Ï¬M¤@­Ó³q¥Î¦Ó¥i¦b¤j³¡¤À¸ê®Æ®w¨Ï¥Îªº API¡A¦Ó¨S¦³¸ê®Æ®w¿W¦³ªº¥\¯à¡C ¤£¹L¡A¦pªGÅX°Êµ{¦¡ªº§@ªÌ¦³¿³½ì¡A¥L­Ì¥i¥HÄy DBI ¤¶­±©Ò©w¸qªº func method ¨Ó¥[¤W¸ê®Æ®w¿W¦³ªº¥\¯à¡C©R¥O½Zªº¶}µo¤H­û­nª`·NÄy func methods ´£ ¨Ñªº¥\¯à¤@¯ë¤£¯à¦b¤£¦P¸ê®Æ®w¶¡²¾´Ó¡C ¹ï CGI ¨Ó»¡¡Adbi ¦³¨S¦³¥Î¡H ¤@­Ó¦r¡J¦³¡IDBI ¹ï CGI µ{¦¡³]­p«D±`¦³¥Î¡I¨Æ¹ê¤W¡ACGI ¬O DBI ³Ì­«­nªº¥Î ³~¤§¤@¡C DBI Åý CGI µ{¦¡³]­p®v³]­p¥\¯à±j¤jªº¤¬Ápºô«eºÝ¸ê®Æ®wµ¹¥L­Ìªº¥Î®a¡A±q¦Ó´£ ¨Ñ¤j¶q«ö¦¸§Ç±Æ¦Cªº¸ê®Æ¡CDBI ¤]®e³\¦bºô¯¸ªº¸ê®Æ®w¦øªA¾¹¶W¹L­t²ü®É¡AºÞ²z ¤H­û¦bµL¶·§ó§ï CGI ©R¥O½Zªº±¡ªp¤U±N¤§¤É¯Å¡C §Ú¦p¦ó¥[§Ö CGI »P DBD Oracle ªº³s±µ³t«×¡H Apache httpd ºÞ²z¤@²Õ¤l httpd (httpd children) ¨ÓªA°È«È¤á¡CÄyµÛ Doug MacEachern ªº Apache mod_perl ¼Ò²Õ¡Aperl ½Ķ¾¹¤w´O¤J¨ì¤l httpd ¤¤ ¡CCGI¡BDBI ©M§A³ßÅwªº¼Ò²Õ·|¦b¨à¤l½Ï¥Í®É¸ü¤J¡C³o¨Ç¼Ò²Õª½¨ì¦bºÏºÐ¤Wªºª©¥» ³Q§ó§ï®É¤~·|¦A³Q¸ü¤J¡C­nª¾¹D§ó¦h¦³Ãö Apache ªº¸ê®Æ¡A½Ð¬Ý Apache ­p¹ºªº ºô¯¸¡J * Apache ­p¹ºªººô¯¸ [118]http://www.apache.org * Mod_perl ¼Ò²Õ [119]http://www.perl.com/cgi-bin/cpan_mod?module=mod_perl ¦p¦ó¨Ï DBI ©M CGI «ùÄò³s±µ¡H ÄyµÛ Edmund Mergl ªº Apache::DBI ¼Ò²Õ¡A¨C­Ó¤l httpd ·|§â¸ê®Æ®wµn¤JÀx¦s ¦bÂø´ê (hash) ¤¤¡C¦pªG§AªºÀ³¥Îµ{¦¡¥u¦³¤@­Ó¸ê®Æ®w¥Î®a¡A¨C¤@­Ó¨à¤l³£¥i¶} ©l³s³s¡C¥Ø«e¡A¨à¤l¤§¶¡¨Ã¤£·|¤À¨É¸ê®Æ®w³s±µ¡CApache::DBI ¥i±q CPAN ¤U¸ü ¡J * [120]http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI ¡§§Ú¦b«ü¥O¦æ°õ¦æ¤@­Ó perl ©R¥O½Z®É¡A¨ÃµL°ÝÃD¡C¤£¹L¡A·í§Ú¦b http °õ¦æ¥¦®É¡A¥¦·| ¥¢±Ñ¡I¡¨¦ó¸Ñ¡H °ò¥»¤W¡A³o«Ü¦³¥i¯à¬O¦]¬°±q«ü¥O¦æ°õ¦æ©R¥O½Zªº¨Ï¥ÎªÌ¤w§âÀô¹ÒÅܼƳ]©w¦n¡A ¥H DBD::Oracle ¨Ó»¡¡A§Y $ORACLE_HOME, $ORACLE_SID ©Î TWO_TASK¡Chttpd ¦æ µ{³q±`¬O¥H nobody ªº¨­¥÷°õ¦æ¡A§Y¨S¦³¤F³]©w¦nªºÀô¹Ò¡C¥ô¦ó¦b³o±¡ªp¤U¹Á¸Õ °õ¦æªº¤â½Z³£·|¥¿½T¦a¥¢±Ñ¡C­n¸Ñ¨M³o°ÝÃD¡A¦b§Aªº©R¥O½Zªº¶}ÀY¥Î¤@­Ó BEGIN() °Ï¶ô³]©wÀô¹Ò¡C³o¼Ë«K·|¸Ñ¨M°ÝÃD¡C¦P¼Ë¦a¡A§A­nÀˬd§Aªº httpd ¿ù»~ ¬ö¿ýÀÉ¥H´M§ä½u¯Á¡A¥H¤Î¾\Ū¡§Idiot's Guide To Solving Perl / CGI Problems¡¨©M¡§Perl CGI Programming FAQ¡¨¥H´M§ä§ó¦h¸ê®Æ¡C³o°ÝÃD¤j·§¤£·| ©M DBI ¦³Ãö¡C½Ð¨â¥÷¤å¥ó³£¤p¤ß¾\Ū¡I * Idiot's Guide to Solving Perl / CGI problems [121]http://www.perl.com/perl/faq/index.html ¨Ï¥Î DBI ®É¡A§Ú¯à§_¶i¦æ¦h¬y³B²z (multi-threading)¡H ¥Ø«e¤£¯à¡CPerl ¨Ã¤£¤ä´©¦h¬y³B²z¡C¤£¹L¡A¾Ú¦ô­p¡A¦h¬y³B²z·|¦¨¬° 5.005 ª© ªº°ò¥»´²§Gªº¤@³¡¤À¡A§Y¤£¤[¤§«á¡ADBI ¥i¯à·|¤ä´©¦h¬y³B²z¡C­n¬Ý¤@¨Ç¨Ï¥Î¦h ¬y SELECT ¥y¤lªº Oracle OCI ½d¨Òµ{¦¡¡A½Ð°Ñ¾\¡J * [122]http://www.hermetica.com/technologia/oracle/oci/orathreads.ta r.gz §Ú¦p¦ó¥Î DBI ©I¥s¤ºÀxµ{§Ç (stored procedure)¡H °²³]§A¦b¥Ø¼Ð¸ê®Æ®w¡A¨Ò¦p¤@­Ó Oracle ¸ê®Æ®w¤¤«Ø¥ß¤F¤ºÀxµ{§Ç¡A§A¥i¨Ï¥Î $dbh->do ¨Ó¨Ïµ{§Ç¥ß§Y°õ¦æ¡C¨Ò¦p¡J $dbh->do( "BEGIN someProcedure END" ); ¦b DBI ¤¤¡A§Ú¦p¦ó¨ú¦^¤ºÀxµ{§Çªºªð¦^­È¡H °OµÛÁÙ­nÀˬd¿ù»~¡I $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; §Ú¥i§_¥Î DBI ¨Ó¥á±ó¤@­Ó¸ê®Æ®w¡H ¹ï DBI ¨Ó»¡¡A­n¾A·í¦a¤ä´©¸ê®Æ®wªº«Ø¥ß©M¥á±ó¤Ó©â¶H¤F¡C¨Ò¦p¡AOracle ®Ú¥» ¤£¤ä´©¥á±ó¸ê®Æ®w¡I¦¹¥~¡A¦b Oracle ¤¤¡A¸ê®Æ®w¦øªA¾¹°ò¥»¤W´N¬O¸ê®Æ®w¡A¦ý ¦b mSQL¡A§Y¨Ï¨S¦³¸ê®Æ®w¡A¦øªA¾¹¤]¯à¶¶§Q¦a°õ¦æ¡C³o°ÝÃD²o³s¤Ó¼s¤F¡C¥¿¦]¦p ¦¹¡A³¡¤ÀÅX°Êµ{¦¡³z¹L¨p®a func ¤èªk¨Ó«Ø¥ß©M§R°£¸ê®Æ®w¡C§A­nÀˬdÅX°Êµ{¦¡ ªº¤å¥ó¨Ó¤F¸Ñ¥¦¦³¨S¦³¤ä´©³o¾÷¨î¡C DBI «ç¼Ë³B²z NULL ­È¡H DBI ³Q«ü©w§â NULL ­È·í§@ undef ­È³B²z¡CNULL ¥i¥H NULL ªº¼Æ­È¨Ó¥[¤J¨ì¸ê ®Æ®w¤¤¡A¨Ò¦p¡J $rv = $dbh->do( "INSERT INTO table VALUES( NULL )" ); ¤£¹L·í¬d¸ß®É¡ANULL ­n©M undef ¤ñ¸û¡C³o¬O©Ò¦³ÅX°Êµ{¦¡³£¾A¥Îªº¼Ð·Ç¡C ³o¨Ç func ¤èªk¬O°µ¤°»òªº¡H DBI §â func ¤èªk©w¸q¬°¸ê®Æ®w¿W¦³¥\¯àªº¶i¤JÂI¡A¨Ò¦p«Ø¥ß©M¥á±ó¤@­Ó¸ê®Æ®w ¡C¨Ï¥Î³o¨ÇÅX°Êµ{¦¡¿W¦³¤èªk¤Q¤À²³æ¡A¨Ò¦p¡A­n¨Ï¥Î¤@­Ó createDatabase ¤è ªk¿é¤J¤@­Ó¤Þ¼Æ (argument) ¡A§Ú­Ì·|¼g¡J $rv = $dbh->func( 'argument', 'createDatabase' ); ³n¥ó¶}µo¤H­û­nª`·N func ¤èªk¤£¯à¦b¤£¦P¸ê®Æ®w¶¡²¾´Ó¡C °Ó·~¤ä´©¤Î°V½m Perl5 ¸ê®Æ®w¤¶­±¬O¦Û¥Ñ³nÅé¡C¥¦¨Ã¨S¦³¥ô¦ó¾á«O (warranty)¡C¤£¹L¡A¦³¨Ç¾÷ºc ´£¨Ñ¤F DBI ªº§Þ³N¤ä´©©Î°ö°V­p¹º¡C PERL CLINIC : Perl Clinic ¥H¦X¬ù§Î¦¡¬° Perl¡BDBI¡BDBD::Oracle ©M Oraperl ´£¨Ñ°Ó·~¤ä´©¡C³o¨Ç¤ä´©¬O¥Ñ DBI §@ªÌ Tim Bunce ¤u§@ªº¤½¥q´£¨Ñªº ¡C±ýª¾¸Ô±¡¡A½Ð¬Ý¡J * [123]http://www.perl.co.uk/tpc 12. PostgreSQL ºÞ²z¤u¨ã 12.1 PGACCESS - PostgreSQL ºÞ²zªº GUI ¤u¨ã PgAccess ¬O PostgreSQL ªº Tcl/Tk ¤¶­±¡C¥¦¤w¸g¥]¬A¦b PostgreSQL ªº´²§G¤¤ ¡C§A¥i¯à·Q±q³oºô­¶§ä¥X¥¦¦³¨S¦³·sª©¥»¡J * [124]http://www.flex.ro/pgaccess * ¦p¦³¥ô¦ó·N¨£¡B§ï¨}ªº«Øij¡AÅwªï¹q¶l¡J [125]teo@flex.ro PgAccess ªº¯S¦â PgAccess µøµ¡¡XMain window, Table builder, Table(query) view, Visual query builder. Tables * ¶}±Òªí®æ (tables) ¬d¾\¡A³Ì¦h¤G¦Ê­Ó¬ö¿ý¡]¥i¦b perferences ¥Ø¿ý§ó§ï¡^ * Äy©ì¦²««ª½®æ½u (grid line) ­«¾ã¤j¤p¡]¦b¦CªíªÅ¶¡ (table space) ¤ñ¦b ¦Cªí¥Ø¿ý (table header) ¶i¦æ¦n¡^ * ³æ®æ¤¤¦Û°Ê´«¦æ¡X¨C­Óªídher ªº°t¸m¿W¥ßÀx¦s * ¶×¤J/¶×¥X¨ä¥LÀɮ׮榡¡]SDF¡BCSV¡^ * ¹LÂo¥\¯à¡]¿é¤J¦p price>3.14 ªº¹LÂo¾¹¡^ * ±Æ§Ç¥\¯à¡]¦Û¦æ¿é¤J»Ý±Æ§ÇªºÄæ¦ì¡^ * §Y³õ½s¿è * §ï¨}¤Fªºªí®æ²£¥Í§U²z (table generator assistant) * §ï¨}¤FªºÄæ¦ì½s¿è Queries * ©w¸q¡B½s¿è©MÀx¦s¡§¥Î®a©w¸q¬d¸ß¡¨(user defined queries) * §â¬d¸ßÀx¦s§@¬°Åã¥Ü (views) * ¬d¸ßªº°õ¦æ * Æ[¬Ý select §Î¦¡ªº¬d¸ßµ²ªG * §R°£©M§ó§ï¬d¸ß¦WºÙ * ¨ã©ì¦²©M©ñ¤U¥\¯àªº Visual query builder¡C¦pªG§A¦³¦w¸Ë Netscape Navigator ªº Tcl/Tk ´¡¥ó¡A§A¥i¦b¦¹¬Ý¨ì¥¦¤u§@¡J ¡]Ķ«ö¡J¤£ª¾¦b­þ¡H¡I ¡^ §Ç¦C (sequence) * ©w¸q¡B§R°£©MÀˬd§Ç¦C ¨ç¼Æ * ¨Ï¥Î SQL »y¨¥©w¸q¡BÀˬd©M§R°£¨ç¼Æ ±N¨ÓÁÙ·|¦³¥H¤U§ï¶i * ªí®æ³]­p¡]¼W¥[Äæ¦ì¡B§ó¦Wµ¥µ¥¡^ * ¨ç¼Æ©w¸q * ³ø§i²£¥Í¾¹ * °ò¥»ªº©R¥O½Z½s¼g¥\¯à ¦p¦³·N¨£¡B§ï¨}ªº´£Ä³¡A½Ð¹q¶l¨ì¡J * [126]teo@flex.ro ¦³Ãö libgtcl ªº¸ê®Æ §A·|¥Î¨ì PostgreSQL ¨ì Tcl ªº¤¶­±µ{¦¡®w libgtcl¡A©Ò¿×ªº Tcl/Tk ¥i¡¥¸ü¤J ¡¦¼Ò²Õ¡Clibpgtcl ©M·½µ{¦¡½X¦ì©ó PostgreSQL ªº /src/interfaces/libpgtcl ¥Ø¿ý¡C¯S©w¨Ó»¡¡A§A»Ý­n¤@­Ó¥i¦b Tcl/Tk¡¥¸ü¤J¡¦ªº libpgtcl µ{¦¡®w¡C§Þ³N¤W ¨Ó»¡¡A¥¦©M´¶³qªº PostgreSQL ¥i¸ü¤J¥ØªºÀɨ䣬ۦP¡A¦]¬° libpgtcl ¬O¤@°ï ¥ØªºÀɪº¶°¦X¡C³oÀɮצb Linux ¦W¬° libpgtcl.so¡C §A¥i¦b¥H¤Wºô§}¤U¸ü¨ì¤@ ­Ó¹w¥ý¬° Linux i386 ¨t²Î½sĶ¤Fªºª©¥»¡C¥u»Ý§â³oÀɮ׫þ¨©¨ì¨t²Îµ{¦¡®w¥Ø¿ý ¡]/usr/lib¡^§Y¥i¡C¦p¦³ºÃÃø¡A¨ä¤¤¤@­Ó¸Ñ¨M¤èªk¬O§R°£­ìµ{¦¡½X¤¤¦³Ãö¸ü¤J libpgtcl.so ªº¤@¥y©M¨Ï¥Î pgwish¡]©Î wishpg¡^¨Ó¸ü¤J pgaccess.tcl¡A¦Ó«D wish¡A¦]¬°³o wish ¤wÃìµ² libpgtcl ¨ç¦¡®w¡C 12.2 PostgreSQL ªºµøµ¡¤¬°Ê¦¡¬d¸ß¤u¨ã¡]WISQL ©Î MPSQL¡^ MPSQL ´£¨Ñµ¹¨Ï¥ÎªÌ¤@­Ó¹Ï¹³ SQL ¤¶­±±±¨î PostgreSQL¡CMPSQL »P Oracle ªº SQL Worksheet ©Î·L³n SQL Server ªº¬d¸ß¤u¨ã WISQL Ãþ¦ü¡C¥¦¦³¤@­Óº}«Gªº GUI ©M«ü¥O°O¿ý¡C§A¤]¥i¥H°Å¤U¤Î¶K¤W¡C¥¦ÁÙ¦³¨ä¥L¦³§U´£°ª¥Í²£¤Oªº¥\¯à¡C * [127]http://www.troubador.com/~keidav/index.html * ¹q¶l¡J [128]keidav@whidbey.com * [129]http://www.ucolick.org/~de/ ¦b tcl_syb/wisql.html Àɤ¤ * [130]http://www.troubador.com/~keidav/index.html * ¹q¶l¡J [131]de@ucolick.org 12.3 ¦W¬° PSQL ªº PostgreSQL ¤¬°Ê¦¡¬d¸ß¤u¨ã¡]ISQL¡^ ISQL ¬O¨Ñ¤å¦r«ü¥O¦æ²×ºÝ¾÷¨Ï¥Îªº¡C ³o¤w¥]¬A¦b´²§G¤¤¡A¦W¬° PSQL¡C©M Sybase ISQL¡BOracle SQLplus ¤Q¤À¬Û¦ü¡C¦b Unix «ü¥O´£¥Ü¿é¤J¡¥psql¡¦·|¥X ²{ psql> ´£¥Ü¡C Type \h to see help of commands. «D±`¨Ï¥ÎªÌ¤Íµ½©M©ö¥Î¡C ¥i¦b¥~®Ø©R¥O½Z (shell script) ¤¤¨Ï¥Î¡C 12.4 MPMGR¡XPostgreSQL ªº¸ê®Æ®wºÞ²z¤u¨ã MPMGR ¬° PostgreSQL ¬O¨Ñ¤@­Ó¹Ï¹³ºÞ²z¤¶­±¡C§A¥i¦b¥H¤U¦a¤è§ä¨ì¥¦¡J it at * [132]http://www.mutinybaysoftware.com/ * Email: [133]keidav@mutinybaysoftware.com * [134]http://www.troubador.com/~keidav/index.html * ¹q¶l¡J [135]keidav@whidbey.com * [136]http://www.ucolick.org/~de in file tcl_syb/wisql.html * PostgreSQL ªº WISQL [137]http://www.ucolick.org/~de/Tcl/pictures * ¹q¶l¡J [138]de@ucolick.org 13. ¥u¨Ï¥Î¤@­ÓÅã¥Ü¾¹ (monitor) ¨Ó«Ø¥ß¦h¥x PostgreSQL ¹q¸£ §A¥iÅ|°_¹q¸£¥D¾÷¤Î¥u¥Î¤@­ÓÅã¥Ü¾¹¡A¦Ó¥Î¤@­Ó KWM ¡]Áä½L¡B¼v¹³¡BÅã¥Ü¾¹ ¡^(Keyborad, Video, Monitor) ¡]Ķ«ö¡JM ¬O§_·í¬°·Æ¹«¡H¡^¿ï¾Ü¾¹¨Ó¿ï¾Ü©Ò¥Î ¹q¸£¡C³o¤£¦ý¸`¬Ù¦a¤è¡A¤]¸`¬ÙÅã¥Ü¾¹¡BÁä½L©M·Æ¹«¡]¨C¥÷Á`­È 100 ¦Ü 500 ¬ü ¤¸¡^¡A©M´î¤Ö²V¶Ã¡C ÄyµÛ¿ï¾Ü¾¹¡A§A¥iÅ|°ª¦h¥x PostgreSQL ¦øªA¾¹¡]¶}µo¡B´ú¸Õ¡B¥Í²£¡^¡B¤¬Ápºô ¦øªA¾¹¡Bftp ¦øªA¾¹¡B¤ºÁpºô¦øªA¾¹¡B¹q¶l¦øªA¾¹¡B·s»D¦øªA¾¹¦b¤@­Ó¤jÂd¡C³o ¿ï¾Ü¾¹¤]¥i±±¨îµøµ¡ 95/NT ©M OS/2 ¹q¸£¡C ½Ð¬d¬Ý¤U¦Cºô§}¡J * DataComm Warehouse Inc¡A¤@¤Ñ¤G¤Q¥|¤p®É¡A¤@¬P´Á¤C¤Ñ³£¦b­P¹q 1-800-328-2261¡C¥L­Ì´£¨Ñ©Ò¦³«~ºØªº¹q¸£µw¥ó [139]http://www.warehouse.com 4 °ð ¤â°Ê KVM ¿ï¾Ü¾¹ (PS/2) ¤j¬ù $89.99 Part No. DDS1354 * Network Technologies Inc [140]http://www.networktechinc.com/servswt.html (120 ¬ü¤¸/PC 8 °ð) ªº²M³æ¤¤¥]¬A 'Server Switches' ©M 'Video only switches' * Scene Double Inc, ­^°ê [141]http://www.scene.demon.co.uk/qswitch.htm * Cybex corporation [142]http://www.cybex.com * Raritan Inc [143]http://www.raritan.com * RealStar Solutions Inc [144]http://www.real-star.com/kvm.htm * Belkin Inc [145]http://www.belkin.com * Better Box Communications Ltd. [146]http://www.betterbox.com/info.html * ¨ìªþªñªºµw¥ó°Ó¾Q¬d¸ß¡§Server Switch¡¨©ÎºÙ¡§KVM Auto Switches¡¨¡C ¦b yahoo ·j´M¾¹¤¤§ä¥X§ó¦h¦³¡§Server Switches¡¨©Î¡§KVM Switches¡¨ªº¤½¥q ¡C ¨C­Ó PostgreSQL ¸ê®Æ®w¦øªA¾¹³Ì¦n¥Î¤@³¡±M¥Îªº unix ¹q¸£¡A¥H¼W±jªí²{¡C¥ô ¦ó¨ä¥Lµ{¦¡/¦æµ{³£¤£­n¦b³o¹q¸£¤W°õ¦æ¡C¾\Ū§A©Ò¦í¦a¤èªº³ø³¹ªº°Ó·~ª©§ä¥X¦³ ­þ¨Ç°Ó¾Q°â½æ Intel ¹q¸£©M 13 ¦T³æ¦â¿Ã¹õ¡]¤Q¤À·G©yªº¿Ã¹õ¡^¡C§A¥u»Ý­nµw¥ó ¡A¦Ó¤£»Ý·L³nµøµ¡/DOS¡]¸`¬Ù¬ù 150 ¬ü¤¸¡^¡C ¸ê®Æ®w¦øªA¾¹¤£»Ý­n±m¦âÅã¥Ü¾¹ ¡A¦]¬°§A¥i¦b¤@­Ó±m¦âªº­Ó¤H¹q¸£¤W»»±±ºÞ²z¡C ¦b¥H¤U¦a¤è¨ú±o RedHat¡]©Î¨ä ¥L®M¥ó´²§G¡^Linux ªº¥úºÐ¡J * Linux System Labs ºô§}¡J [147]http://www.lsl.com/ 7 ¬ü¤¸ * Cheap Bytes Inc ºô§}¡J [148]http://www.cheapbytes.com/ 7 ¬ü¤¸ ½T«O§AÁʶRªºµw¥ó³Q RedHat Linux ¤ä´©¡CÁʶR«e¦b RedHat ªº ftp ¯¸§ä¥XÀò±À Â˪ºµw¥ó¡A¦p SCSI °t±µ¾¹©MÅã¥Ü¥d¡C¥Î¤j¬ù¤»¦Ê¬ü¤¸«K¥i±o¨ì¤@¥x±j«lªº Intel ¹q¸£¡A¥Î RedHat Linux ¨Ó°õ¦æ PostgreSQL¡C±qµøµ¡ 95¡BOS/2¡BUnix Motif¡BÂsÄý¾¹¡]¦p Redbaron¡BOpera¡BNetscape ¤Î¨ä¥L¤Ü¦h­Ó¡^¸g odbc/jdbc/perl/tcl ¨Ó³s±µ PostgreSQL¡C¡]ÂsÄý¾¹¥¿¨³³t¦¨¬°¼Ð·Çªº«È¤á (client)¡C¡^ ¥Î³o­Ó¤èªk¡A§A¥i¥u¥Î¤@­ÓÅã¥Ü¾¹©M¤@­ÓÁä½L¨Ó±±¨î«Ü¦h³¡¹q¸£¡I ¥H¤U¦³Ãö¡§Server Switch¡¨ªº¸ê®Æ¸`¿ý¦Û Networktechnic Inc ¼· 800-742-8324 ¹w­q ¡]¦b¬ü°ê§K¹q¸Ü¶O¡^ ·Q¦¬¨ì§Ú­Ìªº²£«~¥Ø¿ýªº¸Ü¡A½Ð§â§Aªº¦a§}¹q¶l¨ì¡Jsales@networktechinc.com ¥u¥Î¤@­ÓÁä½L¡BÅã¥Ü¾¹©M·Æ¹«¨Ó±±¨î¦h³¡¹q¸£³o¨Ç¹q¤l¿ï¾Ü¾¹®e³\¥u¥Î¤@­ÓÁä½L ¡BÅã¥Ü¾¹©M·Æ¹«¨Ó±±¨î³Ì¦h¤»¤Q¥|³¡¹q¸£¡C´O¤J (embedded) ªº·L¹q¸£©Ò¦³®É¶¡ ³£¼ÒÀÀ¦b³s±µ¤Fªº¹q¸£¤WªºÁä½L¡BÅã¥Ü¾¹©M·Æ¹«ªº¦s¦b¡C ¯S©Ê¤Î¥Î³~ * Áä½L¡B±±¨î¥x©Î»»±± * 9 °w D ¦êÁp ©Î 6 °w miniDIN ·Æ¹«¤ä´© * 5 °w DIN ©Î 6 °w miniDIN Áä½L¤ä´© * 1600x1200 ¸Ñ¹³«×¦Ó¨S¦³¥¢¯u * ¨Ï¥Î¼Ð·Çªº¹q½u * ®à­±©Î¬[¸Ë ³W®æ¡XÁä½L * ©Ò¦³³s±µ¾¹¬Ò¬° female * 5 °w DIN ©Î 6 °w miniDIN * ¥ô¦ó®É­Ô³£¥i¨Ï©Ò¦³ PC ³n¶}¾÷©Îµw¶}¾÷ (hard or soft boot) ±±¨î¡X«ö¶s * IJ°Ê¤@­Ó¨î¨Ó±µ¨ì¨º³¡¹q¸£ * «öºò¤@­Ó¨î¶W¹L 0.5 ¬í¶i¤J SCAN¡BBROADCAST ©Î COMMAND ¼Ò¦¡ * «e³¡ªº LED Åã¥ÜÁä½Lªº¾Þ§@¼Ò¦¡ * Áä¤J CTRL+* ¨Ó¶i¤J COMMAND ¼Ò¦¡ * ´£¨Ñ SCAN¡BBROADCAST ©Î COMMAND ·Æ¹« * 9 °w D ¦êÁp * NTI ¶}Ãö¹ï©Ò¦³­Ó¤H¹q¸£¼ÒÀÀ·L³n¦êÁp·Æ¹« * ·Æ¹«ªº 9 °w D male * ­Ó¤H¹q¸£ªº 9 °w D female * 6 °w miniDIN * NTI ¶}Ãö¹ï©Ò¦³­Ó¤H¹q¸£¼ÒÀÀ¬° IBM PS/2 ¨t¦C·Æ¹« * ©Ò¦³³s±µ¾¹¬Ò¬° female ¦³½u»»±± * ¥i¦Û¦æ¿ïÁÊ¡X¥²¶·ÁʶR * ©M«ö¨î¾Þ§@¬Û¦P Åã¥Ü¾¹¡XVGA * ÀW¼e¬° 150 MHz * 1600X1200 ÂI¸Ñ¹³«×¦Ó¤£ÅÜÃa * ©Ò¦³³s±µ¾¹¬Ò¬° female 14. PostgreSQL ªºÀ³¥Îµ{¦¡©M¤u¨ã 14.1 PostgreSQL ªº 4GL ¸Uºûºô¸ê®Æ®wµ{¦¡¡XAppGEN ¶}µo¨t²Î AppGEN ¥i¦b¦¹¤U¸ü * [149]http://www.man.ac.uk/~whaley/ag/appgen.html * [150]ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN. AppGEN ¬O¤@ºØ°ª¶¥²Ä¥|¥Nµ{¦¡»y¨¥©MÀ³¥Îµ{¦¡²£¥Í¾¹ (application generator) ¡A¥Î¥H²£¥Í¥H¤¬Ápºô¬°°ò¦ªºµ{¦¡¡C³o¨Çµ{¦¡¤@¯ë¦b¤¬Ápºô©Î¤½¥q¤º Ápºô¨Ï¥Î¡CAppGen µ{¦¡¥H¦X¥G Common Gateway Interface (CGI) ¼Ð·Çªº C ©R ¥O½Z (C scripts) ¼g¦¨¡A¤j³¡¤À¤¬Ápºô¦øªA¾¹³£¥i¤ä´©¡C ­n¨Ï¥Î AppGen¡A§A»Ý­n¡J PostgreSQL¡AÃöÁp¦¡¸ê®Æ®w¨t²Î ¤ä´© CGI ªº¤¬Ápºô¦øªA¾¹¡A¦p NCSA ªº HTTPD ¤@­Ó ANSI C ½sĶ¾¹¡A¦p GCC AppGEN ¥]¬A¥H¤U Unix ¡]Linux¡^ ¥i°õ¦æµ{¦¡¡J * defgen¡A¥¦·|®Ú¾ÚÅÞ¿è¸ê®Æµ²ºc²£¥Í¤@­Ó°ò¦ªº¼ËªOµ{¦¡¡C³o¨Çµ{¦¡¥i¥[¤J ¡B§ó·s¡B §R°£©M´M§ä¸ê®Æ®w¤¤ªº¬ö¿ý¡A¤S¥i¦Û°Ê«O«ù°Ñ¦Ò¾ã¦X©Ê (referential integrity)¡C * appgen¡AAppGEN ªº½sĶµ{¦¡¡C¥¦·|§â AppGEN ªº·½µ{¦¡½X½sĶ¬°¥i¥Ñ CGI °õ¦æªº C ·½µ{¦¡¤Î¥i§Y®É¦bºô¤W¨Ï¥Î HTML ®æ¦¡¤å¥ó¡C * dbf2sql¡A§â dBase III ¬Û®eªº .dbf ÀÉÂà´«¬°¥i°õ¦æªº SQL ©R¥O½Zªº¤u¨ã µ{¦¡¡C³o¨Ï±o¤j³¡¤ÀÀx¦s¦b DOS/µøµ¡¸ê®Æ®wªº¸ê®Æ¥i²¾´Ó¨ì¤@­Ó SQL ¦øªA ¾¹¡A¦p PostgreSQL¡C * ¦¹¥~¡AAppGEN ¦¬¶°¤F¤@¨Ç·|¦b°õ¦æ´Á¶¡¨Ï¥Îªº HTML ¤å¥ó¡BGIF ÀÉ©M Java ¤pµ{¦¡¡C·íµM¡A¦p©Ò¦³¦nªº³n¥ó¯ë¡A¥¦¤]¥]¬A§¹¾ãªº·½µ{¦¡½X¡C §@ªÌ Andrew Whaley ¥i¥H¥H¤U³~®|±µÄ²¡J * [151]andrew@arthur.smuht.nwest.nhs.uk 14.2 PostgreSQL ªº¤¬Ápºô¤¶­±¡XDBENGINE dbengine ¬O Ingo Ciechowski ©Ò¼gªº¤@­ÓÀH´¡§Y¥Îªº PostgreSQL ¤¬Ápºô¤¶­± ¡C¥¦¦b * [152]http://www.cis-computer.com/dbengine/ ¦³Ãö DBENGINE¡J dbengine ¬O¤¬Ápºô»P Postgres95 ¤§¶¡ªº¤¶­±¡A¥u»Ýªá¼Æ¤ÀÄÁ ¡A¥¦«K¥i¬°¦s¨ú¥ô¦ó²{¦sªº¸ê®Æ®w¡C PHP 3 Åý§A¦b¤å¥ó¤¤½s¼gÃþ¦ü Perl ªº»y¨¥¡A¦ý¤£¬O¯uªº Perl¡AAppGEN ©M WDB-P95 »Ý­n§A¬°¨C¤@­Ó¸ê®Æ®w«Ø¥ß³]©wÀÉ (configuration files)¡X¡XÅ¥°_¨Ó ¡A§A¦ü¥G³£­n¥ý¾Ç¤@Ãþ·sªº°²»y¨¥ (meta language) ¤~¯à±Ò¥Î¡C ©M¨ä¥L¤u¨ã¤£¦P¡A§A¤£»Ý­n¾Ç¥ô¦ó¯S§Oªºµ{¦¡©Î©R¥O½Z»y¨¥¨Ó¨Ï¥Î dbengine¡C¤] ¤£·|¦³¨C­Ó¸ê®Æ®w³£¦³³]©wÀɪº±¡ªp¡A©Ò¥H§A¤£»Ý­n¼ô²ß³o¨Ç·sµ²ºc¡C¤£¹L¡A¦p ªG§A·Q¥Î¨ì dbengine ªº§¹¾ã¥\¯à¡A¾Ç²ß Perl ¬O¤@­Ó¥¿½T¨M©w¡C ¾ã­Ó¨t²Î¥iÄy¹ï¤@­Óªþ¥[ªº¸ê®Æ®wªº¤@¨Ç²³æ¹B§@³]©w¦n¡A¥¦·|¥]§t¦³Ãö¦p¦ó²z ¸Ñ§Aªº¸ê®Æ®w¦s¨úªº¸ê®Æ¡C§A¬Æ¦Ü¥i¥H«ü©wµê°²Äæ (virual fields)¡A¥Î¥H¦b¸ê ®ÆÅã¥Ü¦b¿Ã¹õ¤§«e§@¥X§Y®É­pºâ¡C ¨Ï¥Î°õ·Ó¡J dbengine ¬O¦Û¥Ñ³n¥ó¡A©M Perl ªº¨Ï¥Î±ø¤å¤@¼Ë¡C¦pªG§A¤£ª¾§A¥i °µ©Î¤£¥i°µ¤°»ò¡A½Ð¾\Ū¥¦ªº¨Ï¥Î°õ·Ó¡C³Ì«á¤@¥y¡J¥¦¬O GNU °õ·Óªº¤¯·O·Å©Mª© ¥»¡X¦pªG§A¤p¤ß¦a­É¥Î dbengine ©Î§â¥¦ªº³¡¤À¥[¤J¨ì°Ó·~ªº²£«~¤¤¡A¥¦¤£·|³Q ·P¬V¡C 14.3 PostgreSQL ªº Apache ¦øªA¾¹¼Ò²Õ¡XNeoSoft NeoWebScript Apache ¬O¤@­Ó¦³¦Wªº¤¬Ápºô¦øªA¾¹¡C¤@­Ó PostgreSQL ¨ì Apache ªº¤¶­±¼Ò²Õ¦ì ©ó¡X * [153]http://www.neosoft.com/neowebscript/ NeoWebScript ¬O¤@µ{®e³\§A§â¤£¦P½ÆÂøµ{«×ªºµ{¦¡´O¤J¨ì HTML Àɵ{¦¡»y¨¥¡C ·í¦³¤H­n¨D¤@­Ó¥]§t NeoWebScript ªº HTML ºô­¶®É¡A¤ä±Â NeoWebScript ªº¦ø ªA¾¹«K°õ¦æ´O¤J¤Fªº©R¥O½Z¡A²£¥Í¤@­Ó§t¦³¦Û­q¤º®eªººô­¶¡C NeoWebScript ¬Oª½±µ¦bºô­¶ªº HTML ½X¶i¦æ¥\¯à±j¤O¡B¦øªA¾¹¬°°ò¦ªº¤¬°Êµ{¦¡ ªº¤@­Ó°ª³t¡B¦w¥þ¡B©ö¾Çªº¤èªk¡CÄyµÛ NeoWebScript¡A§Y¨Ï¹ï·s¤â¨Ó»¡¡A­p¼Æ¾¹ (counter)¡B¹q¶lªí®æ (email forms)¡BÀð¯È¡Bñ¦Wï (guest books)¡B³X«È¬ö¿ý ³£Åܱo²³æ¡C½Ð¬Ý¬Ý NeoWebScript ¦Û¤v§@¥Xªº©M PERL ¤Î JavaScript ªº¤ñ¸û ¡C ¦pªG§A·Q¦b§Aªº¤¬Ápºô¦øªA¾¹¦w¸Ë NeoWebScript¡A§Aªººôµ¸ºÞ²z­û¦b¶}©l«e»Ý¥ý ¾\Ū¥L­Ìªº Sysop FAQ¡C¡mTheory of Operations¡n·|¸ÑÄÀ NeoWebScript ¦p¦ó ¹B§@¡A¡mInstallation¡n·|³v¨B§i¶D§A¡C¡mManagement¡nÃö©ó³]©w©M°õ¦æ¦øªA¾¹ ªº¨Æ©y¡A¡mTest¡nÅý§A½T©w NeoWebScript ¹B§@¥¿±`¡A¡mTroubleshooting¡n©M¦ø ªA¾¹ªº°ÝÃD¦³Ãö¡C ¦b¦Û¤vªº ISP¡B¤ºÁpºô©Î¥~Ápºô¨Ï¥Î NeoWebScript ¶O¥Î¥þ§K¡A§A·|¦bµn°O¤U¸ü ®É±o¨ì§¹¥þªº°õ·Ó¡C¤£¹L¡A¦pªG§A·Q§â¥¦´O¤J¨ì¦Û¤vªº²£«~©Î¦b°Ó·~ªº¦øªA¾¹¡] ¦p SSL¡^¨Ï¥Î¡A¥¦Á`­È 99 ¬ü¤¸¡C NeoWebScript ¬O¤@­Ó®e³\§A¦bºô­¶¤¤´O¤J Tcl/Tk »y¨¥§@¬°©R¥O½Z¤u¨ãªº Apache ¼Ò²Õ¡C¥¦¥Ñ Karl Lehenbauer¡ANeoSoft ªº Chief Technical Officer µo©ú¡A¨Ã¥Ñ Neosoft ªºµ{¦¡³]­p®v©M§Þ³N¼¶½Z­û½s¼g¤å¥ó¡B§ï¨}¤Î¥[±j¥\¯à¡C Apache ¬O¥@¤W³Ì¬y¦æªº¤¬Ápºô¦øªA¾¹¡A¸g½Õ¬dªººô¯¸¤¤¦³¤»¤Q¤K¤Ú¥P¨Ï¥Î¡C Tcl/Tk ¬O¥Ñ Dr. John Ousterhout ¶}µoªº¤@ºØ±j«l¡B¦Û¥Ñ¡B¸ó¥­¥xªº©R¥O½Z»y ¨¥¡C§A»¡¹L ¡§Tck/Tk¡¨ ®e³\³n¥ó¶}µo¤H­û¤ñ¨Ï¥Î¥H C ©Î C++ ¬°°ò¦ªº¤u¨ã§Ö¤Q­¿§¹¦¨¤u§@ ¡C¥¦¤]¬O¤@ºØ°¶¤jªº½¦¤ô»y¨¥ (glue language)¡A¨Ï±o²{¦sªºµ{¦¡¦@¦P¤u¥ó¡B§ó ¹Ï¹³¤Æ©M¥i¥Î©ó Internet¡C¡¨ NeoSoft ³Ð¿ì¤H¤Î Chief Technical Officer¡AKarl Lehenbauer ¦b¶}©l®É«K¤w °Ñ»P Tcl/Tk ¶}µo¡C¥L¤]©M Mark Diehkans ¤@°_³Ð§@¤F Extended Tcl¡A¤S¦W¬° TclX ©Î NeoSoft Tcl¡A©µ¦ù³oºØ»y¨¥ªº¥\¯à¡C«Ü¦h Tcl ªº®Ö¤ß«ü¥O³£¨Ó¦Û Extended Tcl¡A¦Ó¥Ñ Dr. Ousterhout ¥[¤J¨ì®Ö¤ß»y¨¥¤¤¡C NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA 14.4 HTML ªº HEITML ¦øªA¾¹ºÝ©µ¦ù©M¤@­Ó PostgreSQL ªº 4GL »y¨¥ heitml ¬O¥t¤@­Ó postgres »P¸Uºûºô¶¡ªº¤¶­±¡C±ýª¾¸Ô±¡¡A½Ð±µÄ² Helmut Emmelmann H.E.I. Informationssyteme GmbH Wimpfenerstrasse 23 Tel. 49-621-795141 68259 Mannheim Germany Fax. 49-621-795161 * Mr.Helmut Emmelmann ªº¹q¶l¦a§} [154]emmel@h-e-i.de * Heitml ¥Dºô­¶ [155]http://www.heitml.com * Heitml ¦¸ºô­¶ [156]http://www.h-e-i.deom Heitml ¦P®É¬O HTML ªº¦øªA¾¹ºÝ©µ¦ù©M¤@ºØ 4GL »y¨¥¡Cºô­¶½s¼g¤H­û¥i¥H HTML ªº­·®æ¥ÎÃþ¦ü HTML ¼ÐÅÒ½s¼gµ{¦¡¡C Heitml¡]­µ "Hi"-TML¡^¬O HTML ªº©µ¦ù¤Î¤@­Ó¥þ­±ªº²Ä¥|¥N»y¨¥¡A¥¦®e³\¥H¤¬Áp ºô¬°°ò¦ªºµ{¦¡ª½±µ§Q¥Î SQL ¸ê®Æ®w¤¤ªº¸ê®Æ¡A¦Ó¤£»Ý¨Ï¥Î½ÆÂøªº CGI ©R¥O½Z ¡C Heitml ¦b¦øªA¾¹ºÝ©µ¦ù HTML¡A°ÊºA¦a§â¡§.hei¡¨ÀÉÂà´«¬° HTML ®æ¦¡¡A¨Ï¥¦»P ¥ô¦óÂsÄý¾¹­Ý®e¡C¥¦¥]¬A¤j®a¼ô±x¡B©ö¥Îªº HTML »yªk¡A¤Î´£¨Ñ¤j¶q¹w¥ý¶}µo¤F ªº¼ÐÅÒ©Mµ{¦¡®w¨ÓÀ³ªþ¥H©¹¥Ñ CGI ¶i¦æªº¤u§@¡C¹³ XML ¯ë¡Aheitml ®e³\¨Ï¥ÎªÌ ¦Û©w¼ÐÅÒ¡CÄyµÛ heitml¡A¨Ï¥ÎªÌ¦Û©wªº¼ÐÅÒ¥i½Ķ¬° HTML ¤Î¶Ç°eµ¹ÂsÄý¾¹¡C Heitml ¦P®É¥H HTML ³]­pªÌ©M±M·~ªºµ{¦¡³]­p®v¬°¥Ø¼Ð¡CHTML ³]­p®v¥i¨Ï¥Î heitml ¼ÐÅҨӫإ߰ʺAªººô­¶¡A¦s¨ú SQL ¸ê®Æ®w¡A©Î«Ø¥ß§¹¾ãªº¸UºûºôÀ³¥Îµ{ ¦¡¡C­p¼Æ¾¹¡Bµn°O¸ê®Æ®w (registration databases)¡B·j´M¾¹ªí®æ¡B¹q¶lªí®æ¡B ¶¥¼h¦¡¿ï³æ (hierachical menus) ³£¥i»´ÃP¦aÄyµÛ¦b¤j¶q¤¸¥ó¨ç¦¡®w (Component Libraries) ¹w«ØªºÃþ¦ü HTML ªº¼ÐÅÒ²£¥Í¡C ¹ïµ{¦¡³]­p®v¨Ó»¡¡Aheitml ¦b HTML ¤¤´O¤J¤F§¹¾ãªº²Ä¥|¥Nµ{¦¡»y¨¥¡A (e.g. , , ©M ¼ÐÅÒ)¡A ©M¹ï§t¾ã¼Æ¡B¹ê¼Æ¡B¥¬ªL­È¡B¦r¦ê©M¤¸²Õ (tuple) ªºªí¹F¦¡±j«l¹Bºâ¯à¤O¡C¤¸²Õ ªº°Ñ¦Ò»yªk (reference semantics) ¦p¦Pª«¥ó¾É¦V»y¨¥¯ë¡A¤ÎÀx¦s¦b°ïÅ|¤¤ ¡CHeitml ÅܼơA¥]¬A©Ò¦³¦b°ïÅ|¤¤ªº½ÆÂø¸ê®Æµ²ºc¡A¦b Session Mode ¤¤¥i¦b¤£ ¦Pºô­¶¶¡ºû«ù¡C§A¤]¥i¥H¦Û­q¼ÐÅÒ©ÎÀô¹Ò¼ÐÅÒ (environment tags)¡A¬Æ¦Ü­«·s©w ¸q HTML ¼ÐÅÒ¡C heitml ¨Ï±o¥H¤U¨Æ±¡¦³¥i¯à ¡X¡X¥H¨ãµ²ºc¤Î¼Ò²Õ¤Æ (structured and modular) ¤è¦¡¶}µoºô­¶¡A¤j´T´î§Cºû Å@§xÂZ¡C ¡X¡X¶}µo¦³´¼¼z¤Î¤¬°Êªººô­¶¡A¤º®e¥i°ÊºA¦a¾AÀ³¥ÎªÌ©Ò»Ý¡C ¡X¡XµL»Ý³]­pµ{¦¡«K¥iÅã¥Ü SQL ¸ê®Æ®wªº¤º®e¡A§A¥u»Ý­n¨Ï¥Î¹w¥ý ©w¸qªº ¡§dba¡¨¼ÐÅÒ¡C ¡X¡X¨Ï¥Î Session Variables ¶}µo½ÆÂøªº¸ê®Æ®w¤Î¥Ø¿ýÁʪ«µ{¦¡¡C Heitml ¥i¸g CGI ¤¶­±¦b Linux ªº¥ô¦ó¤¬Ápºô¦øªA¾¹¤¤°õ¦æ¡A¦Ó¦b Apache ¤¤¥i ¨Ï¥Î apache API ¨Ï±o°õ¦æ³t«×¯S§O§Ö¡]ÁקK¤F CGI ªº¤u§@¡^¡C¥Ø«e¡A¥¦¤ä´© mSQL¡]²Ä¤@¤Î¤Gª©¡^¡BPostgreSQL¡]²Ä¤»ª©¡^¡BmySQL¡B¤Î the yard databases ¡Cheitml ¥i¦b Linux¡BBSDi¡BSolaris ©M SunOS °õ¦æ¡A¥H¤Î¦bµøµ¡ NT ¥[¤W CGI ©M ISAPI¡BODBC¡Bµøµ¡ 95 ¤¤¨Ï¥Î¡C heitml¡]Linux ª©¡^¹ï¬ã¨s¡B«D°Ó·~©Ê©M­Ó¤H¥Î³~¬O§K¶Oªº¡C°Ó·~ºô¯¸»Ýªþ¥X±Â Åv¶O¡C³]¦³¸Õ¥Î´Á­­ªº¥\¯à§¹¾ãªº¸Õ¥Îª©¥i§K¶O¤U¸ü¡C¡]¤£¹L­nª`·N¡A¨C­Ó§A¶} µoªº¡§.hei¡¨ºô­¶³£·|¦L¥X¤@­Ó°T®§«ü¥X¥¦¬O«D°Ó¥Îª©¥»¡Cµn°O¤§«á§A·|¦¬¨ì¤@ ­ÓÁä½X¡A¨Ï§A¥iÃö±¼³o°T®§¦ÓµL»Ý­«·s¦w¸Ë¡C¡^ heitml¡]­µ¡§Hi¡¨-TML¡^ÄyµÛ¥i¦Û¦æ©w¸qªº¼ÐÅÒ©M§¹¾ãªºµ{¦¡³]­p¯à¤OÅãµÛ¦a©µ ¦ù¤Î¼W±j HTML ªº¥\¯à¡C³o¨Ï°ÊºAªº¤º®e©M¸ê®Æ®wµ{¦¡¥i¦b HTML ¥@¬É¤¤¥X²{¡A ¦Ó¤£»Ý­n CGI ©Î¥~³¡¤â½Z©Îµ{¦¡»y¨¥¡C¤]´N¬O»¡¡A¤@­Ó HTML §@ªÌ¥i¦bºô­¶¤¤´O ¤JÀ³¥Îµ{¦¡¡C³o¥u»Ý­n¨Ï¥Î·sªº¼ÐÅÒ¡A¦Ó¤£»Ý CGI ©Îµ{¦¡³]­p¡C¥t¤@¤è­±¡A¶i¶¥ ¨Ï¥ÎªÌ©Îµ{¦¡³]­p®v¥i³Ð³y¤Î³]­p±j«lªº¼ÐÅÒ®w¡C³o°µªk¨Ï±o heitml ¹ï HTML ·s¤â©M±M·~µ{¦¡³]­p®v¦@®É¾A¥Î¡Cheitml ¦b¸Uºûºô¦øªA¾¹¤W°õ¦æ¤Î°ÊºA¦a²£¥Í HTML¡A©Ò¥H heitml ©M¤¬Ápºô¼Ð·Ç­Ý®e¡A¤]©M¥ô¦óÂsÄý¾¹­Ý®e¡C¥¦¤@¤è­±´£¨Ñ¥Î ªÌ§¹¾ãªº¸ê®Æ®w¦s¨ú¥\¯à¡A¥t¤@¤è­±¨Ï¥ÎªÌµL»Ý ²z·|¥ô¦ó¤£¥²­nªº CGI ½ÆÂø©Ê ¡Cheitml ¬O®Ú¾Ú¦³Ãö½sĶ¾¹ºc³y©M²§°Ê (transaction) ¨t²Îªº³Ì·s¬ã¨s¦¨ªG¦Ó ¶}µoªº¡C heitml ­¶ªº¶}µo¹Lµ{©M HTML ­¶¤@¼Ë¡A³£¬O¨Ï¥Î¤å¦r½s¿è¾¹©Î HTML ½s¿è¾¹¡A¤] ¦p±`¦a©ñ¦b¸Uºûºô¦øªA¾¹¤W¡C¤£¹L¡A·sªººô­¶¥i¥]¬A°ÊºAªº heitml ¼ÐÅÒ©M¨Ï¥Î ¼ÐÅÒ®w¡C§A¥i ¨Ï¥Î³o¨Ç¼ÐÅÒ¦s¨ú¸ê®Æ®w¡B²£¥Í°ÊºA¤º®e¡B±H¥X¹q¶l¡A¬Æ¦Ü¥i¥H¶} µo±j«lªºÀ³¥Îµ{¦¡¡A¦pµn°O¸ê®Æ®w (registration database) ©MÁʪ«¨t²Î¡C HTML ·s¤â©M±M·~µ{¦¡³]­p®v¤@¼Ë·|¬°¯à°÷°ª³t¦Ó²©ö¦a³]­pºëªöªºÀ³¥Îµ{¦¡¡A¦p §Ú­Ìªº¤¬°Êñ¦Wï¡A¦Ó¤£»Ý¨Ï¥Î½ÆÂø¦ÓÃø¾Çªº CGI ©R¥O½Z¦ÓÅå³Y¡C³o¤u§@¥u»Ý¨Ï ¥Î dba ¦¡®w¤¤ªº¤u¨ã«K¥i°µ¨ì¡C heitml ¥]¬A¤£¦PºØÃþªº¼ÐÅÒ®w¡A¥Î¥H»s³yñ¦Wï¡B¸ê®Æ®wºûÅ@µ{¦¡¡B¥i©µ¦ùªº¬d ¸ßªí®æ¡B±j«lªº¹q¶lªí®æ©Îºô­¶ªº¶¥¼h¦¡¿ï³æ (hierarchic menu)¡C³o¨Ç¤u¨ã¤w ¥i¨Ï¥Î¡A§A¥u»Ý¦bºô­¶¤W¥[¤W¹ïÀ³ªº¼ÐÅÒ¡C §@¬°¤@­Ó¦³¸gÅ窺µ{¦¡³]­p®v¡A§A¥i¥þ­±¨Ï¥Î heitml ªº«ù¤[°ÊºA¤¸²Õ¬[ºc (persistent dynamic tuple architecture)¡Jheitml ¤£³æ¬O¦³°ÊºA«¬ºA (dynamic typing)¡B¥þ¥\¯àªºªí ¹F¦¡­pºâ¡B»¼°j¨ç¼Æ©MÂ×´Iªº°Ñ¼Æ¶Ç»¼¯S¦âªº©R ½Z»y¨¥¡A¤]Äy °ÊºA¤¸²Õ¬[ºc¦Û°Ê«O«ù¥ô¦ó¤j¤pªº session ¸ê®Æ¡C 14.5 PostgreSQL ªº America On-line AOL ¸Uºûºô¦øªAªÌ AOLserver 2.3 ª©¬O¤@­Ó§K¶Oªº°Ó·~¸Uºûºô¦øªAªÌ¡A¥¦¥i³s±µ¨ì 6.2.1 ©Î¥H¤Wªº PostgreSQL¡C±ýª¾¸Ô±¡¡A½Ð¬Ý * AOL ¸Uºûºô¦øªA¾¹ [157]http://www.aolserver.com 14.6 PostgreSQL ªººÃÃø / ­p¹º°lÂܨt²Îµ{¦¡¤u¨ã(Problem/Project Tracking System Application Tool for PostgreSQL ) ¥¦¦b * [158]http://www.homeport.org/~shevett/pts/ 14.7 §â dbase ªº dbf ÀÉÂà´«µ¹ PostgreSQL dbf2msql µ{¦¡©M mSQL ¤Î PostgreSQL ¦X§@´r§Ö¡C§A¥i¦b¥H¤U¤è§ä¨ì * [159]ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/ * [160]ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz ³oµ{¦¡¥Ñ Faculty of Electrical Engineering TU Delft, NL Computer Architecture and Digital Technique section ªº Maarten Boekhold ¼g¦¨¡C * [161]M.Boekhold@et.tudelft.nl §A¤]¥i¨Ï¥Î python ªº¤èªk (method) ¦bŪ¤J dbf Àɤθü¤J¨ì postgre ¸ê®Æ®w ¡C * See [162]http://www.python.org 15. PostgreSQL ªº¤¬Ápºô¸ê®Æ®w³]­p/§¹¦¨¤u¨ã¡XEARP * [163]http://www.oswego.edu/Earp * [164]ftp://ftp.oswego.edu ªº¡¥pub/unix/earp¡¦¥Ø¿ý¡C 15.1 EARP ¬O¤°»ò¡H ¬O David Dougherty ªº¡§Easily Adjustable Response Program¡¨¡CEARP ¬O¤@ ­Ó§Q¥Î PostgreSQL ¸ê®Æ®w¨t¨tªººô¤W¸ê®Æ®w³]­p/¹ê¬I¤u¨ã¡C¥\¯à¥]¬A¡J * ¤@­Óµøı¤Æªº³]­p¨t²Î¡C * ¤@­Ó sendmail ¤¶­±¡C¡]¥i¦¬µo¹q¶l¡^ * ¤@­Ó¼W±j¤Fªº«O¦w¾÷¨î¡C * ¤@­Ó cgi ÅX°Êµ{¦¡¡C 15.2 ¬I¦æ EARP ¥D­n¬I¦æ¤@­Ó¦b http ºÊ±±µ{¦¡¤U°õ¦æªº CGI ¤G¤¸ÀɨӦs¨ú¸ê®Æ®w¦øªA¾¹ ¡C©Ò¦³³]­p¤u¨ã³£«Ø¥ß¦bÅX°Êµ{¦¡¤¤¡A°£¦bºô¤W¡A¦A¨S¦³¦a¤è»Ý­n§@¥X³]­p¡C¨º ¨Ç¤u¨ã¥»¨­»Ý­n¤@­Ó¤ä´©¹Ï¹³ªºÂsÄý¾¹¡A©Ò³]­p¥X¨Óªºª«¥ó¿W¥ß©ó½s¼g¤èªk¡A¦Ó ¬O®Ú¾Ú­Ó¤H¦n´c¡C 15.3 §A»Ý­n¤°»ò¨Ó°õ¦æ EARP EARP ¤j·§¥iµL¶·©Î¥u»Ý¤@¨Ç²¾´Ó¤u§@«K¥i¦b¤£¦Pªº¥­¥x°õ¦æ¡C¤wª¾¥i¥Îªº¥­¥x¥] ¬A¡J * Solaris 2.5 * Linux 1.2.13+ * GNU C++ * PostgreSQL (1.01 / 1.02 ª©) * netsite ¦øªA¾¹ * NCSA httpd * GNU C++ * PostgreSQL (1.01 / 1.02 ª©) * NCSA httpd * Apache httpd ¥Ø«e¡]1.3¡^ª©¥»ªº Earp ªº³]­p¬O«Ø°ò©ó 1.01/1.02 ª©ªº PostgreSQL ªº libpq¡C¦pªG§A¨Ï¥Îª©¥»§ó·sªº Postgres¡A½Ð¹w´Á§A»Ý­n°µ¤@¨Ç²¾´Óªº¤u§@¨Ó¨Ï ¥¦¹B§@¥¿±`¡C¦b¶}µo¤¤ªºª©¥»¡]Earp 2.0¡^¡Alibpq ·|¥H¼Ò²Õªº§Î¦¡¤ä´©¡C 15.4 ¥¦¦p¦ó¤u§@¡H EARP ªº¨ä¤¤¤@­Ó¥D­n¯S¦â¬O¥¦¨Ï¥Îª«¥ó¾É¦Vªº¤èªk¨Ó²£¥Í¥Î¥H³s±µ¸ê®Æ®wªº html ­¶¡C¤j³¡¤À­¶­±³£¥]§t¦h­Óª«¥ó¡C¨C­Óª«¥ó³£¥H¬Y¨Ç¤u¨ã²£¥Í¤Î¨ú±o¤@­Ó¦W ¦r¡A³o¨Çª«¥ó·|³Q­¶­±¤u¨ã (page tool) ¥H¤@­Ó¥i©I¥sªº¶¶§Ç (callable sequence) ³sµ²¦b¤@°_¡Cª«¥ó¥i¦b¨ä ¥L­¶­±¤¤­«¥Î¡C¦³Ãö HTML¡B¬d¸ß¡BŪ¨ú¨Ï ¥ÎªÌ¿é¤J¡B¥i©µ¦ùªº¬d¸ß©M¿é¤Jª«¥ó®æ¦¡¤Æ (Extendable Formatting of Query and Input objects)¡B§â²{¦³ª«¥ó³sµ²¦¨¨ä¥Lª«¥óªº°ò¥»¤u¨ã¬Ò¦³´£¨Ñ¡C§ó¥ý¶i ¤u¨ã¥]¬A¹q¶l¤u¨ã©M¦h¬y¬d¸ß¤u¨ã¡C EARP ªº¥t¤@­Ó¯S¦â¬O¥ý¶iªº«O¦w¡C¦³¦hºØ¤èªk­­¨î¦s¨ú EARP ¨t²Îªº¤£¦P³¡¤À¡C ¬°¹F¨ì¥ý¶iªº«O¦w¡AEARP Àˬd¨C¤@­Ó³s±µ¡A¥H½T©w¨C­Ó³s±µ¤H­ûªº¨­¤À (ids) ¤Î¸s²Õ (groups)¡C¤£¦P³¡¤Àªº¦s¨ú¿W¥ß©w¸q¡A³Ì²× ªº²Õ¦X¨M©wµ²ªG¯à§_¦s¨ú EARP ªº¤@­Ó¯S©w³¡¤À¡C¦¹¥~¡A¹ê¬I³o¨Ç«O¦w¯S¦â¥u»Ý¤@­Ó¤ä´©°ò¥»¡]©Î§ó¨Î¡^¨Ï ¥ÎªÌ»{ÃÒ (user authentication) ªº http ¦øªA¾¹¡C 15.5 ¦ó³B¨ú±o EARP¡H EARP ¥iÄy°Î¦W (anonymous) ftp ¨ú±o¡J * [165]ftp://ftp.oswego.edu ªº 'pub/unix/earp' ¥Ø¿ý¡C 16. PHP Hypertext PreProcessor¡XPostgreSQL ªº¦øªA¾¹ºÝ html ´O¤J©R¥O½Z»y¨¥ ¸Uºûºô¤¶­±¤u¨ã¦ì©ó¡J * [166]http://www.php.net * [167]http://www.vex.net/php «e¨­¬° Professional Home Pages (PHP 3) ¦Ó²{¦bºÙ¬° PHP Hypertext Pre-Processor * «Ü¦h°ê©w³£¦³¬M®g¯¸¥x¡A¦W¬° www.COUNTRYCODE.php.net * [168]http://www.fe.de.php.net * [169]http://www.sk.php.net * [170]http://php.iquest.net/ °ÝÃD¥i¹q¶l¨ì¡J * [171]rasmus@lerdorf.on.ca PHP 3 ¬O¤@­Ó¦øªA¾¹ºÝ html ´O¤J©R¥O½Z»y¨¥¡C¥¦Åý§A¦b§Aªº .HTML Àɤ¤¥[¤J² ³æªº©R¥O½Z¡A¹³ JavaScript ¯ë¡C¤£¹L¡A©M JavaScript ¤£¦P¡APHP ¿W¥ß©ó¦øªA ¾¹¡CJavaScript ¬O¤@ºØ«È¤áºÝªº html ´O¤J©R¥O½Z»y¨¥¡A¦Ó PHP 3 ¬O¦øªA¾¹ºÝ »y¨¥¡CPHP 3 ªº·§©À©M Netscape ªº LiveWire Pro ²£«~¬Û¦ü¡C¦pªG§A¦³¨¬°÷ª÷ ¿ú¡A§A¥i¦b¨ä¤¤¤@­Ó³Q¤ä´©ªº¾Þ§@¨t²Î°õ¦æ Netscape ªº Commerce Server¡A§A ¤j­P¥i¬Ý¨ì LiveWire Pro¡C¦pªG§A³ßÅw§Ö³t§ó·s¤S¥]¬A·½µ{¦¡½Xªº¦Û¥Ñ³n¥ó¡A§A ¤j·§·|³ßÅw PHP 3¡C 16.1 ¥D­n¯S¦â ¼Ð·Çªº CGI¡AFastCGI ©M Apache ¼Ò²Õ¤ä´© §@¬°¤@­Ó¼Ð·Çªº CGI µ{¦¡¡APHP 3 ¥i¦b°õ¦æ¥ô¦ó Unix ¤¬Ápºô¦øªA¾¹ªº¥ô¦ó Unix ¹q¸£¤W¦w¸Ë¡C¥[¤W¹ï·s FastCGI ¼Ð·Çªº¤ä´©¡APHP 3 ¥i±q¤¤±o¨ì³t«×¤Wªº§ïµ½¡C§@¬°¤@­Ó Apache ¼Ò²Õ¡A PHP 3 Åܦ¨ CGI µ{¦¡¥~ ¤@­Ó±j«l¤Î§Ö¦p°{¹qªº¿ï¾Ü¡C * ¦s¨ú°O¿ý (Access Logging) ÄyµÛ PHP 3 ªº¦s¨ú¬ö¿ý¥\¯à¡A¥ÎªÌ¥i¦Û¦æºûÅ@ ©R¤¤¼Æ¦r (hit counting) ¤Î§@¥X¬ö¿ý¡C¥¦§¹¥þ¤£§Q¥Î¨t²Î¤¤¥¡ªº¬ö¿ýÀÉ¡A ¦Ó¥B§Y®ÉºÊ¹î¦s¨ú¹Lµ{¡CLog Viewer Script ´£¨Ñ¤F­Ó§O¥ÎªÌ¾Ö¦³ªº­¶­±ªº ¦s¨úºK­n¡C¦¹¥~¡A¥»®M¥ó¥i³Q³]©w¬°¦b¨C­¶²£¥Í¤@­ÓÅã¥Ü¦s¨ú¸ê®Æªºµù¸}¡C ¥»­¶ªºµ²§À´N¦³¤@­Ó¨Ò¤l¡C * ¦s¨ú±±¨î (Access Control) ¤@­Ó¥H¸Uºûºô¬°°ò¦ªº¤º«Ø³]©wµe­±³B²z¨ú±± ¨î³]©w¡C¥ÎªÌ¥i¥H¬°¬Y¤H¾Ö¦³ªº©Ò¦³©Î­Ó§Oºô­¶«Ø¥ß³W«h¡A­­¨î½Ö¤H¯à¤Î¥L ¯à«ç¼Ë¾\Ū¦³Ãöºô­¶¡C®Ú¾Ú¥ÎªÌªººô°ì¡BÂsÄý¾¹¡B¹q¶l¦a§}¬Æ¦Ü¨Ó·½¤å¥ó (referring document)¡Aºô­¶¥i¥H±K½X«OÅ@¡B§¹¥þ¬Ý¤£¨ì¡B¸T¤î¬ö¿ý (logging disabled) ©M°µ¨ä¥L¨Æ¡C * Postgres ¤ä´© Postgres ¬O¤@­Ó¥ý¶iªº¦Û¥Ñ RDBMS¡C§Q¥Î PHP 3¡A¥ÎªÌ¥iª½ ±µ¦b .HTML ÀÉ ¤¤´O¤J Postgres95 ©M PostgreSQL ªº SQL¬d¸ß¡C * RFC-1867 ÀɮפW¶Ç¤ä´© ÀɮפW¶Ç¬O Netscape 2.0 ªº·s¥\¯à¡C¥¦Åý¥ÎªÌ§â ÀɮפW¶Ç¨ì¸Uºûºô¦øªA¾¹¡C¨Ï±o³o¨Æ¦æ¥iªº­ì¦]¡A¬O¹ê»Úªº Mime ¸Ñ½X¥Ñ PHP 3 ´£¨Ñ¡A¥¦¥i´£¨ÑÃB¥~ªº®Ø¬[¡A¦b¦¬¨ì¤W¶ÇªºÀɮ׫ᰵ¨Ç¦³¥Îªº¨Æ¡C * HTTP ¬°°ò¦ªº»{ÃÒ±±¨î PHP 3 ¥i¥Î¨Ó¦b Apache ¸Uºûºô¦øªA¾¹¤¤«Ø¥ß¦Û©w ªº¥H HTTP ¬°°ò¦ªº»{ÃÒ¾÷¨î¡C * ÅܼơB¦C°}¡B¬ÛÁp¦C°} (Associative Arrays) PHP 3 ¤ä´©ÅܼƧκA¡B¦C°} ¡B¬Æ¦Ü¦p Perl ¯ëªº¬ÛÁp¦C°}¡C¥¦­Ì¥iÄy GET ©Î POST ¤èªk¦bºô­¶¶¡¶Ç»¼¡C * ±ø¥ó¦¡¡BWhile °j°é PHP 3 ¤ä´©¤@ºØÃþ¦ü C ªº¥þ¥\¯à¤â½Z»y¨¥¡C§A¥i¨Ï¥Î if/then/elseif/else/endif ±ø¥ó¦¡¡Bwhile °j°é©M switch/case ±Ô­z¨Ó«ü ¤Þ§Aªº html ­¶ªºÅã¥ÜªºÅÞ¿è¬y¦V¡C * ©µ¦ù±`³Wªí¹F¦¡ ±`³W¦ªªí¹F¦¡±`³Q¥Î©ó¼Ò¦¡°t¹ï¡B¼Ò¦¡´À´« (pattern substitutions) ©M¤@¯ëªº¦r¦ê³B²z¡CPHP 3 ¤ä´©©Ò¦³±`¥Îªº±`³Wªí¹F¦¡¹B§@ ¡C * ­ì©l HTTP ¼ÐÀY±±¨î ­n¶i¦æ°ª¶¥ºô¯¸³]­p¡A¨Ïºô­¶µø±¡§Î¶Ç°e¦Û©w HTTP ¼Ð ÀYªº¯à¤O¬O¥²¶·ªº¡C¤@­ÓºD±`¥Îªk¬O¶Ç°e¤@­Ó Location: URL ¼ÐÀY¨Ó§â«È¤á ºÝ¶Ç°e¨ì¨ä¥L URL¡C¥¦¤]¥i¥Î©óÃö±¼§Ö¨ú©Î³B²zºô­¶­¶­º¤Wªº¡§¤W¦¸§ó·s¡¨ ¼ÐÀY¡C * §Y®É GIF ¹Ï¹³²£¥Í PHP 3 ¤ä´© Thomas Boutell ªº GD ¹Ï¹³¨ç¦¡®w¡A¨Ï¥¦ ¥i§Y®É²£¥Í GIF ¹Ï¹³¡C * ISP¡§¦w¥þ¼Ò¦¡¡¨¤ä´© PHP 3 ¤ä´©¤@­Ó¿W¦³ªº¡§¦w¥þ¼Ò¦¡¡¨(Safe Mode)¡A¨Ï ±o¦b¦P¤@¦øªA¾¹¤W¦³ ¦h­Ó¥Î¤á¨Ï¥Î PHP ©R¥O½Z¤]¨S¦w¥þ°ÝÃD¡C * ¥¦¬O¦Û¥Ñªº¡I ³Ì«á¤@­Ó­«­nªº¯S©Ê¡J³o®M¥ó¬O§¹¥þ¦Û¥Ñªº¡C¥¦¥H GPL «¬¦¡ ±ÂÅv¡AÅý§A¥i ¬°¥ô¦ó¥Øªº¨Ï¥Î³o³n¥ó¡A¥]¬A°Ó·~¥Î³~¡C±ýª¾¸Ô±¡¡A½Ð°Ñ¬Ý GNU General Public License ¤å¥ó¡C 16.2 ¦WÅA ¡¯³oµ{¦¡¤j³¡¤À¬O¦b¤Î¬°¦h­Û¦h¤j¾Ç (the University of Toronto¡^¶}µoªº¡C«D ±`·PÁ¤j¾Ç Network Development ªº Lee Oattes ¨ã«Ø³]©Êªº§åµû¡C ¡¯PostgreSQL ¤ä´©ªºµ{¦¡½X¬O Adam Sussman ¼g¦¨ªº¡C * [172]asussman@vidya.com ¡¯µL¼Æ¨ä¥L´¿¨ó§U´ú¸Õ¤Î°£¿ùªº¤H¡C 16.3 PHP 3¡X²¥v ªì¥X²{®É¡APHP ¬O¤@­Ó¥H Perl ¼g¦¨¤p¥©Â²³æªº cgi ¥]¸Ë¾¹ (wrapper)¡C¥¦ªº¥Ø ªº±q¤£´¿¨«¥X­Ó¤H¨Ï¥Î¡C³o®M¸Ë³Ì¥ý¦W¬° Personal Home Page Tools¡A«á¨ÓÅܬ° Personal Home Page Construction Kit¡C ¥t¦³¤@¤u¨ã¬O¼g¨Ó²¤Æ¦bºô­¶¤¤´O¤J SQL ¬d¸ßªº¤u§@¡C¥¦°ò¥»¤W¬O¥t¤@­Ó CGI ¥]¸Ë¾¹¡A¯à¤ÀªR (parsed) SQL ¬d¸ß¤Î²¤Æ«Ø¥ß®Ú¾Ú³o¨Ç¬d¸ßªºªí®æ©M¦Cªíªº¤u §@¡C³o¤u¨ã¦W¬°FI (Form Interpreter)¡C PHP/FI 2.0 ª©§¹¥þ­«¼g³o¨â®M³n¥ó¡A±N¤§¦X¦Ó¬°¤@¡C¥¦¤w¶i¤Æ¬°¤@­Ó¥i´O¤J HTML Àɤ¤ªºÂ²³æ¹q¸£»y¨¥¡CÁöµM¤´°í«ù­ì¦³ªºÂ²ºÙ¡A¦ý¥¦¤w¦A¤£¦X¥Î¡C²{¦b ¡APHP/FI ¥Î¦b¾ã­Óºô¯¸ªº±¡ªp»·¦h¹L­Ó¤Hºô­¶³]©w¡C¤£½×¦W¥s¤°»ò¡A¥¦ÄyµÛ§â©Ò ²³æªº©R¥O½Zª½±µ´O¤J HTML Àɤ¤¡A®ø°£¤j¶q¤p«¬ Perl cgi µ{¦¡ªº»Ý­n¡C³o¼Ë ·|¥[§Ö§Aªººô­¶¡A¦]¬° fork ¦h¦¸ Perl ªº§xÂZ¤w¸g®ø°£¡C¥¦¤]²¤Æ¤FºÞ²z¤j«¬ ºô¯¸ªº¤u§@¡A¦]¬°§A¥i§âºô­¶ªº©Ò¦³³¡¤À©ñ¦b¤@­Ó html Àɤ¤¡C¥[¤W¦hºØ¸ê®Æ®w ªº¤ä´©¡A¥i¨Ï¥Î¸ê®Æ®wªººôªº¶}µoÅܱo²³æ¡C«Ü¦h¤Hı±o´O¤J¬d¸ß¤ñ¤À§O«Ø¥ß HTML ©M CGI Àɲ³æ±o¦h¡C ¦b³o¤å¥ó¤¤¡A¥ô¦ó´£¤Î PHP¡BFI ©Î PHP/FI ªº¦a¤è³£«ü¦P¤@¨Æª«¡CPHP ©M FI ¥u ¦³·§ ©À¤Wªº¤À§O¡C¥¦­Ì¥i¦b¦P¤@·½µ{¦¡½X´²§G¤¤«Ø¥ß¡C²{¦b¡APHP/FI ¤w§ï¦W¬° PHP 3¡C 16.4 ¨º»ò¡A§Ú¯à¥Î PHP/FI °µ¤°»ò¡H ¦pªG§A¨Ï¥Î PHP/FI¡A§A­º¥ý·|ª`·N¨ì¥¦¦b­¶§À¥[¤W³oºô­¶´¿³QÂsÄý¹L¦h¤Ö¦¸ªº¸ê ®Æ¡]¦pªG§A¦b¦b½sĶ®É¿ï¨ú¤F access logging¡^¡C³o¥u¬O PHP/FI ©Ò°µªº¤@¤p³¡ ¤À¡C¥¦ªº¥t¤@­Ó­«­n¨¤¦â¬O§@¬°¤@­Óªí®æª½Ä¶ cgi µ{¦¡ (form interpreter cgi)¡A³o¤]´N¬O FI ªº·N«ä¡C¨Ò¦p¡A¦pªG§A¦b¤@­Óºô­¶¤¤«Ø¥ß¤F¤@­Óªí®æ¡A§A»Ý ­n ¤@­Óµ{¦¡¨Ó³B²zªí®æ¤Wªº¸ê®Æ¡C§Y¨Ï§A¥u·Q§â¸ê®Æ¶Ç°e¨ì¥t¤@ºô­¶¡A§A¤]»Ý­n cgi µ{¦¡ªºÀ°§U¡CPHP/FI ¨Ï±o¨ú±o©M³B²zªí®æªº¸ê®Æ·¥¬°®e©ö¡C 16.5 ¤@­Ó²³æªº¨Ò¤l¡J °²³]§A¦³¤@±iªí®æ¡J
§Aªº display.html «K¥i¥]¬AÃþ¦üªºªF¦è¡J < ?echo "Hi $ name, you are $ age years old!

" > ´N¬O³o¼Ë²³æ¡IPHP/FI ¦Û°Ê¬°¨C­Óªí®æ¿é¤JÄæ¦ì²£¥Í¤@­ÓÅܼơC¤§«á§A«K¥i¦b ACTION URL Àɤ¤¨Ï¥Î³o¨ÇÅܼơC ¦b§A§ä¥X¦p¦ó¨Ï¥ÎÅܼƤ§«áªº¨BÆJ´N¬O¦bºô­¶¤¤¸Õ¥Î¤@¨ÇÅÞ¿è¬yµ{¼ÐÅÒ¡C¨Ò¦p¡A ¦pªG§A·Q®Ú¾Ú¥ÎªÌ¿é¤JÅã¥Ü¤£¦P°T®§¡A§A¥i¨Ï¥Î if/else ÅÞ¿è¡C¦b¤W­±ªº¨Ò¤l¡A §Ú­Ì¥i§ïÅÜ display.html¡A¨Ï±o¤£¦PªF¦è·|®Ú¾Ú¥Î¤á¿é¤JÅã¥Ü¥X¨Ó¡J 50); echo "Hi $name, you are ancient!

"; elseif($age>30); echo "Hi $name, you are very old!

"; else; echo "Hi $name."; endif; > PHP/FI ´£¨Ñ¤@ºØ«D±`±j«lªº©R¥O½Z»y¨¥¡A¯à°µ¨ìªº¨Æ¤ñ¥H¤W²³æªº¨Ò¤l¦h«Ü¦h¡C ±ýª¾¸Ô±¡¡A½Ð°Ñ¾\¦³Ãö PHP/FI Script Language ªº³¹¸`¡C §A¤]¥i¨Ï¥Î PHP/FI ¨Ó³]©w¦³¤°»ò¤H¯à¬Ý¨ì§Aªººô­¶¡C³o¥i¨Ï¥Î¤@­Ó¤º«Øªº³]©w µe­±°µ¨ì¡C¨Ò¦p¡AÄyµÛ¥¦§A¥i«ü©w¥u¦³¬Y¨Çºô°ìªº¤H¥i¬Ý¨ì§Aªººô­¶¡A©Î«Ø¥ß¤@ ¨Ç³W«h¨Ó¥Î±K½X«OÅ@¬Y¨Çºô­¶¡C±ýª¾¸Ô±¡¡A½Ð°Ñ¾\¦³Ãö Access Control ªº³¹¸` ¡C PHP/FI ¤]¦³¯à¤O±µ¦¬¥ô¦ó¨Ì·Ó RFC-1867 ³W©wªºÂsÄý¾¹¤W¶ÇªºÀɮסC³o¯S¦â¨Ï¥Î ªÌ¯à¤W¶Ç¤å¦r©Î¤G¤¸ÀÉ¡CÄyµÛ PHP/FI ªº¦s¨ú±±¨î©MÅÞ¿è¥\¯à¡A§A¥i¥þ­±±±¨î²a ³\½Ö¤W¶Ç¤Î¤W¶Ç«á°µ¤°»ò¡C±ýª¾¸Ô±¡¡A½Ð°Ñ¾\¦³Ãö File Upload ªº³¹¸`¡C PHP/FI ¤ä´© PostgreSQL ¸ê®Æ®w®M¥ó¡C¥¦¤ä´©¦b .HTML Àɤ¤´O¤J SQL ¬d¸ß¡C±ý ª¾¸Ô±¡¡A½Ð°Ñ¾\¦³Ãö PostgreSQL Support ªº³¹¸`¡C PHP/FI ¤ä´© mysql ¸ê®Æ®w®M¥ó¡C¥¦¤ä´©¦b .HTML Àɤ¤´O¤J SQL ¬d¸ß¡C±ýª¾¸Ô ±¡¡A½Ð°Ñ¾\¦³Ãö mysql Support ªº³¹¸`¡C 16.6 CGI §ï¦V (CGI Redirection) Apache 1.0.x ºK­n ¨Ï¥Î Apache ¦øªA¾¹ªº cgi §ï¦V¼Ò²Õ¬O°õ¦æ PHP/FI ªº¤@­Ó¦n¤èªk¡C½Ðª`·N§AµL ¶·¾á¤ß§ï¦V¼Ò²Õ¡A¦pªG§A¨Ï¥Î PHP/FI ªº Apache ¼Ò²Õª©¥» (Apache module version)¡C¦³¨â­Ó³oÃþ§ï¦V¼Ò²Õ¡C¤@­Ó¬O Dave Andersen ¶}µoªº¡J * [173]angio@aros.net ¥¦¥i¦b¥H¤U¦a¤è§ä¨ì * [174]ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c ¥t¤@­Ó¤w¥]¬A¦b Apache ¤¤¡A¦W¬° mod_actions.c¡C³o¨Ç¼Ò²Õ·¥¬°¬Û¦ü¡A¥u¬O¦b ¥Îªk¤W¦³¤Ö³\®t§O¡C¨â­Ó³£´ú¸Õ¹L¡A¯à©M PHP/FI ¶¶§Q¦X§@¡C ¬d¬Ý Apache ªº¤å¥óÃö©ó¦p¦ó¥[¤J¤@­Ó¼Ò²Õ¡C¤@¯ë¨Ó»¡¡A§A§â¼Ò²Õ¦WºÙ¥[¨ì¤@­Ó ¦W¬° Configuration ªºÀɮפ¤¡C¦pªG§A¨Ï¥Î mod_actions ¼Ò²Õ¡A§A­n¥[ªº¤@¥y ¬O¡J Module action_module mod_actions.o ¦pªG§A¨Ï¥Î mod_cgi_redirect ¼Ò²Õ¡A¥[¤W¥H¤U¤@¥y¡J Module cgi_redirect_module mod_cgi_redirect.o ­«·s½sĶ§Aªº httpd ¤Î¦w¸Ë¥¦¡C­n³]©w cgi §ï¦V§A»Ý­n¦b§Aªº mime.types ÀÉ ¤¤«Ø¥ß·sªº mime Ãþ«¬¡A©Î¦b§Aªº srm.conf Àɤ¤¨Ï¥Î AddType «ü¥O¨Ó¥[¤W mime Ãþ«¬¡C©Ò¥[¤Wªº mime Ãþ«¬À³Ãþ¦ü¡J application/x-httpd-php phtml ¦pªG§A¨Ï¥Î mod_actions.c ¼Ò²Õ¡A§A»Ý¦b srm.conf Àɤ¤¥[¤W¥H¤U¤@¦æ¡J Action application/x-httpd-php /cgi-bin/php.cgi ¦pªG§A¨Ï¥Î mod_cgi_redirect.c ¼Ò²Õ¡A§A»Ý¦b srm.conf Àɤ¤¥[¤W¥H¤U¤@¦æ¡J CgiRedirect application/x-httpd-php /cgi-bin/php.cgi ¤£­n¦P®É¨Ï¥Î mod_actions.c ©M mod_cgi_redirect.c¡C ¦w¸Ë¤Î¥¿½T³]©w¤F³o¨Ç cgi §ï¦V¼Ò²Õ«á¡A§A¥u»Ý§â©µ¦ùÀɦW©w¬° .phtml¡A«K¥i ¥H«ü©w³oÀÉ®×¥Ñ php/fi ¤ÀªR¡C¦¹¥~¡A¦pªG§A¦b srm.conf Àɪº DirectoryIndex ³]©w¦æ¥[¤W index.phtml¡A³Ì¤W¼hªººô­¶«K·|¦Û°Ê¥Ñ php ¤ÀªR ¡A¦pªG§Aªº index ÀɦW¬° index.phtml¡C Netscape HTTPD §A¥iÄy Netscape Server CGI Redirection ¼Ò²Õ¨Ó«ü©w¦Û°Ê§â¬Y¨Ç©µ¦ùÀɦWªºÀÉ ®×ªº­n¨D§ï¦Vµ¹ PHP/FI¡C³o¼Ò²Õ¥i¦b PHP/FI ºô­¶ªº File Archieves ¤¤§ä¨ì¡C ®M¥ó¤¤ªº README ©ú½T¦a¸ÑÄÀ¤F¦p¦ó³]©w¥¦¨Ó¥Î©ó PHP/FI¡C NCSA HTTPD ¥Ø«e¡ANCSA ¨Ã¤£¤ä´©¼Ò²Õ¡A©Ò¥H¡A­n¨Ï¥Î cgi §ï¦Vªº¸Ü¡A§A­n­×§ï¦øªA¾¹ªº·½ µ{¦¡½X¡C¤@­Ó¹ï NCSA 1.5 °µ³o¤u§@ªº´O¸É¦b¦b PHP/FI File Archieves ¤¤§ä¨ì ¡C 16.7 ¦b«ü¥O¦æ°õ¦æ PHP/FI ¦pªG§A«Ø¥ß¤F CGI ª©¥»ªº PHP/FI¡A§A¥u»Ý¦b«ü¥O¦æ¿é¤J php.cgi filename¡A ¦Ófilename ¬O§A·Q¤ÀªRªºÀɮסC§A¥i«Ø¥ß¿W¥ßªº PHP/FI ©R¥O½Z¡A¥u»Ý§â¤â½Zªº ²Ä¤@¦æ¼g¬°Ãþ¦ü¡J #!/usr/local/bin/php.cgi -q ¡§-q¡¨ªý¤î¦L¥X HTTP ¼ÐÀY¡C³ßÅwªº¸Ü¡A§A¥i¤£¥Î½Ð¿ï¾Ü¡C 17. PostgreSQL ªº Python ¤¶­± Python ¬O¤@­Óª½Ä¶ªºª«¥ó¾É¦V©R¥O½Z»y¨¥¡C¥¦¨Ï¥Î²©ö¡]»´¥©ªº»yªk¡B²³æª½±µ ªº¥y¤l¡^¡A¦³«Ü¦h¥Î©ó«Ø¥ß GUI ªº©µ¦ù¡B¸Uºûºô¤¶­±µ¥µ¥¡C¤@­Ó¦³´¼¼zªºÂsÄý¾¹ ¡]Ãþ¦ü HotJava¡^¥¿¦b¶}µo¤¤¡]¤@¤E¤E¤­¦~¤Q¤@¤ë¡^¡A³o·|µ¹¤©µ{¦¡³]­p­û«Ü¦h ¾÷·|¡CPython ªºª©Åv«ù¦³¤H¬°²üÄõªü©i´µ¯S¤¦ªº Stichting S Mathematisch Centrum¡A¥i¦Û¥Ñ´²§G¡C¥¦¥]¬Aª«¥ó¡BÃþ§O (classes)¡B¼Ò²Õ¡B©M¨Ò¥~ (exceptions) ªº°ÊºA¸ü¤J¡C¨Ï¥Î C »y¨¥¨Ó±N¨ä¤¶­±¥[¤J·s¨t²Î¨ç¦¡®w¬Oª½±µªº ¤u§@¡A¨Ï Python ¦b¦Û¦æ³]©w®É®e©ö¨Ï¥Î¡CPython ¬O¤@­Ó¾Ö¦³ X ¤¶­±ªº°ªµ¥©R ¥O½Z»y¨¥¡C¦b Linux ¥úºÐ¤¤ªº Python ®M¥ó¥]¬A¤j³¡¤À¼Ð·Ç Python ¼Ò²Õ¡A¥H¤Î ¥Î§@ Tk ¤¶­±ªº Tix widget ¼Ò²Õ¡C PyGreSQL ¬O¤@­Ó¥Î§@ PostgreSQL ¸ê®Æ®wªº¤¶­±¡C¥¦´O¤J¤F PostgreSQL ¬d¸ß¨ç ¦¡®w¡A¨Ï±o¦b Python ¤â½Z¤¤¨Ï¥Î±j«lªº PostgreSQL ¯S©Ê¤Q¤À²³æ¡CPyGreSQL ¥Ñ by D'Arcy J.M. Cain and Pascal Andre ¼g¦¨¡C * PyGreSQL ªº·sºô¯¸ [175]http://www.druid.net/pygresql/ * D'Arcy ©ÒºûÅ@ªº [176]http://www.druid.net/~darcy/ * ºô¯¸¦b [177]ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.REA DME * D'Arcy J.M. Cain [178]darcy@druid.net * Pascal Andre [179]andre@chimay.via.ecp.fr * Pascal Andre [180]andre@via.ecp.fr 17.1 ¦p¦ó¨ú±o PyGres¡H ¤£¦P®M¥óªº¥Dºô¯¸¦b¡J * Python [181]ftp://ftp.python.org:/pub/www.python.org/1.5/python1.5b2.tar. gz * PyGreSQL [182]ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz * ºô¯¸ [183]ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0 b.tar.gz µL½×¦p¦ó¡A§AÀ³¹Á¸Õ´M§ä³Ì±µªñ§Aªº¬M®g¯¸¥x¡C½Ð°Ñ¾\¸ê®Æ¨Ó·½¨Ó§ä³o¨Ç¯¸¥x ¡CPygreSQL ¤]·|¦b Python ©M PostgreSQL ¯¸¥xªº contrib ¥Ø¿ý§ä¨ì¡C 17.2 ¸ê®Æ©M¤ä´© ¦pªG§A»Ý­n³o¨Ç®M¥óªº¸ê®Æ¡A½Ð¬d¬Ý¥H¤Uºô­¶¡J * Python : [184]http://www.python.org/ * PostgreSQL : [185]http://epoch.cs.berkeley.edu:8000/postgres95/index.html * PyGreSQL [186]ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz * PyGreSQL ºô¯¸ : [187]http://www.via.ecp.fr/via/products/pygres.html ¤ä´©¡J * PyGreSQL ªº³q«H½×¾Â¡C­n°Ñ¥[ªº¸Ü¡A§A¥i¹q¶l¦Ü¡J [188]majordomo@vex.net ¦b¥¿¤å¤¤¼g¡§subscribe pygresql name@domain¡¨ ¡A§â¡§name@domain¡¨ §ï¬°§A¦Û¤vªº¹q¶l¦a§}¡C * Python ªº·s»D²Õ¡J newsgroup comp.lang.python * PyGreSQL : ¦p¦³¯äÂγø§i¡B·N¨£¡Bª`ÄÀ¡A½Ð§ä Andre [189]andre@via.ecp.fr 18. PostgreSQL ©M¸Uºûºôªº¹h¸ô (gateway) ¡XWDB-P95 18.1 ¦³Ãö wdb-p95 WDB-P95 - ¤@­Ó¥Ñ J. Douglas Dunlop ¶}µoªº PostgreSQL ¸ê®Æ®w¸Uºûºô¤¶­± ¥¦¦b¡J * J Rowe ªº·s WDB ¦b [190]http://www.lava.net/beowulf/programming/wdb * ·sª©¥»ªº WWW-WDB ¦b [191]http://www.eol.ists.ca/~dunlop/wdb-p95/ * ¦³°ÝÃD©Î·Q¥[¤J³q«H½×¾Â [192]dunlop@eol.ists.ca ³o¬O¤@­Ó­×§ï¤Fªº wdb-1.3a2¡A´£¨Ñ¤@­Ó PostgreSQL ¨ì¸Uºûºôªº¹h¸ô¡C³oª©¥» ¤]»Ý­n¤@­Ó¯à³B²z HTML ¦CªíªºÂsÄý¾¹¡C­ì¥»ªº wdb µL¦¹­n¨D¡A¦ý­nÁÙ­ì¤]¤£Ãø ¡C §A¥i¹Á¸Õ CASI Tape and Image Query¡C§A¥i¬Ý¬Ý¨ä Form Definition File (FDF)¡A¥¦¤]¥Î©ó²£¥Í CASI Tape and Image Query¡A¥¦¥]§t¤F¨â­Ó¦CªíªºÁpµ² (join)¡C ³oª©¥»¥]§t©Ò¦³»Ý­n¥Î©ó¦w¸Ë©M°õ¦æ¥H WDB-P95 ¬° PostgreSQL ¤¶­±ªºÀɮסC­n §â³o¨t²Î²¾´Ó¨ì¨ä¥L¸ê®Æ®wÀ³»á¬°Â²³æ¡X¦pªG¥¦¤ä´©¼Ð·Çªº SQL ©M¾Ö¦³ Perl ¤¶ ­±¡C 18.2 PostgreSQL ¦øªA¾¹¡Bpgperl ©M httpd ¬O§_»Ý¦b¦P¤@¹q¸£¡H §_¡XPostgreSQL ¤£»Ý¦b¦P¤@¹q¸£¡C¦] WDB-P95 ¥Ñ httpd ©I¥s¡A¥¦­Ì­n¦b¦P¤@³¡ ¹q¸£¡C¤S¦]¬° WDB-P95 ¨Ï¥Î Pg.pm¡Apgperl ¤]­n¦b¦P¤@¹q¸£¡CPgperl ¬O¥H libpq ¨ç¦¡®w¼g¦¨¡A©Ò¥H¥¦¥i¦s¨úºôµ¸¤W¥ô¦ó PostgreSQL ¦øªA¾¹¡A´N¦p¨ä¥L PostgreSQL «È¤á¡C¦p¤U©Ò­z¡J (¸Uºûºô«È¤á (Netscape)) => (HTTP ¦øªA¾¹ (NCSA's http) + WDB-P95 + pgperl + libpq)=> (PostgreSQL ¦øªA¾¹) ¬A¸¹ () ¥Nªí¹q¸£¡C ¨C³¡¹q¸£¥i¬O¤£¦PÃþ«¬¡JNT¡BSUN¡BHP¡K¡K¦ý§A»Ý­n¦b§A¥´ºâ°õ¦æ WDB-P95 ªº¹q ¸£ªº libpq ¤¶­±¨ç¦¡®w¡A¦]¬°§A­n¥Î¥¦¨Ó½sĶ pgperl¡C¡]³o¨t²Î³]­p¦¨·|¨Ï¥Î HTML ¦Cªí¡A©Ò¥H³Ì¦n¦³¤@·s³Ì·sªº¸Uºûºô«È¤á¡C¡^ 19. "C", "C++", ESQL/C »y¨¥¤¶­±©M PostgreSQL ªº³v¦ì¹Bºâ¤¸ (Bitwise Operators) 19.1 "C" ¤¶­± ¥¦¤w¥]§t¦b´²§G¤¤¡A¦W¬°¡¥libpq¡¦¡C©M Oracle OCI¡BSybase DB-lib ¡BInformix CLI¨ç¦¡®w¬Û¦ü¡C 19.2 "C++" ¤¶­± ¥¦¤w¥]§t¦b´²§G¤¤¡A¦W¬°¡¥libpq++¡¦¡C 19.3 ESQL/C PostgreSQL ESQL/C 'Embedded C Pre-compiler' Ãþ¦ü Oracle Pro*C ¡BInformix ESQL/C¡CPostgreSQL ESQL/C ¬O¤@ºØ SQL À³¥Îµ{¦¡¤¶­± (API)¡A¨Ï C µ{©Î³]­p®v¯à½s¼g¥i¾Ö¦³ºÞ²z¸ê®Æ®wªº¯à¤Oªº¦Û©wÀ³¥Îµ{¦¡¡CPostgreSQL ESQL/C ®e³\§A¨Ï¥Î§A©Ò¼ô±xªº²Ä¤T¥N¹q¸£»y¨¥¦Ó¤S¯à§Q¥Î¨ìµ²ºc¤Æ¬d¸ß»y¨¥ (SQL) ªºÀuÂI¡C ESQL/C ¥]§t¥H¤U³n¥ó¡J * ESQL/C ¨ç¦¡®w´£¨Ñ¨ã¸ê®Æ®w¦øªA¾¹ªº¦s¨ú¯à¤Oªº C ¨ç¦¡¡C * ESQL/C ¼ÐÀYÀÉ´£¨Ñ¹ï ESQL/C µ{¦¡¦³¥Îªº¸ê®Æµ²ºc¡B±`¼Æ©M¥¨¶°ªº©w¸q¡C * ESQL/C ¹w³B²z¾¹¡A¤@­Ó§â¥]§t SQL ¥y¤lªº C ÀÉÂà´«¬°¥i°õ¦æÀɪº·½µ{¦¡¹w ³B²z¾¹¡C ¡]Ķ«ö¡JÀ³¬°§â§t´O¤J¦¡ SQL ªº C ÀÉ®×Âà´«¬°¼Ð·Çªº C ÀɮסA ¨Ã¥i¥Ñ gcc ½sĶ¬°¥i°õ¦æÀÉ¡C¥t¥~¡APostgreSQL ªº SQL API À³¦W¬° egpc ¡C¡^ ¥¦¦b * PostgreSQL ªº ESQL/C ¤w¥]§t¦b´²§G¤¤¡C * ¥Dºô¯¸ [193]ftp://ftp.lysator.liu.se/pub/linus * ¹q¶l¡J [194]linus@epact.se 19.4 PostgreSQL ªº³v¦ì¤¸¹Bºâ¤¸ ³v¦ì¤¸¹Bºâ¤¸¥Ñ Nicolas Moldavsky ¼g¦¨ * [195]nico@overnet.com.ar ¹ê½î³v¦ì¤¸¹Bºâ¡]AND¡BOR¡BXOR¡B¦ì¤¸¸É¼Æ (bitwise complement)¡^ªº pgsql ¡§C¡¨¨ç¦¡¡C¥iÂÇ anonymous FTP ±o¨ì¡J * [196]ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz ¥]¬A¤F Linux ªº Makefile¡C 20. PostgreSQL ªº¤é¤å°²¦W½X (Kanji Code) ¥¦¦b¥H¤Uºô§}¡J * [197]ftp://ftp.sra.co.jp/pub/cmd/postgres/ 21. ²¾´Ó PostgreSQL ¨ìµøµ¡ 95 / µøµ¡ NT ¥¿¦³¤H¦b²¾´Ó¨ìµøµ¡ 95 / µøµ¡ NT¡C²¾´Ó¤u§@¨Ï¥Î gcc¡Bgmake ªº µøµ¡ NT/95 ª©¡C­n¦b win32 ½sĶ·½µ{¦¡½X¡A§A»Ý­n gnu-win32¡CGNU gcc ªº win32 ª©¤w¥X ²{¡C½Ð°Ñ¾\¥H¤Uºô­¶¡J * [198]http://www.cygnus.com/misc/gnu-win32 ¦b³oºô­¶¨ú±o cdk.exe ÀÉ¡]gnu-win32 ªº¦Û§Ú¸ÑÀ£ÀÉ¡^ ¡]Ķ«ö¡J¦¹¤u¨ã¤w§ï¦W ¬° cygwin¡Aºô§}¬° [199]http://sourceware.cygnus.com¡C¡^ ²¾´Ó¤u§@¤]¥i¥H¥H¤Uªº¡§Unix-Emulator on NT¡¨¤u¨ã¶i¦æ * [200]http://www.softway.com 22. ³q«H½×¾Â 22.1 ¨ú±o§K¶O¹q¶l¤á¤f «K©y¥i³g¡X¦b¥H¤U¦a¤è¨ú±o§K¶O¹q¶l * ¦b Yahoo [201]http://www.yahoo.com ´w°Ê e-mail * In Lycos [202]http://www.lycos.com ´w°Ê new e-mail accounts * In hotmail [203]http://www.hotmail.com ´w°Ê new e-mail accounts ­q¾\ PostgreSQL ³q«H½×¾Â¡A¦Ó Yahoo ¦³¤@­Óªþ¥[¯S¦â¡A·|¬° PostgreSQL ¹q¶l «Ø¥ß¿W¥ßªº¥Ø¿ý¡A§K­PÂZ¶Ã§A¨ä¥Lªº¹q¶l¡C¾Ü¿ï¥Ø¿ý Email- > Options- > Filters ¤Î´z¿ï seperate folder for email¡C§A¥i¥Î³o­Ó¹q¶l¤á¤f¦b¥@¬É¥ô¦ó ¦a¤è¦¬µo¹q¶l¡A¥u­n§A¯à¤Wºô¡C ¦pªG§A¦³¨ä¥L¹q¶l¡A§A¥i¥Î¡§Mail Filters¡¨¨Ó¦Û°Ê§â PostgreSQL ¶l¥ó©ñ¨ì¿W ¥ßªº¥Ø¿ý¡A¥H§K²V¶Ã¡C 22.2 ­^¤å³q«H½×¾Â ½Ð°Ñ¾\¥Dºô­¶ªº Mailing Lists ¶µ¥Ø¡J * [204]http://www.postgresql.org/ * §â°ÝÃD¹q¶l¦Ü¡J [205]pgsql-questions@postgresql.org * ¶}µo¤H­û [206]pgsql-hackers@postgresql.org * ¦³Ãö²¾´Óªº°ÝÃD [207]pgsql-ports@postgresql.org * ¤å¥ó°ÝÃD [208]pgsql-docs@postgresql.org §A·|¦b¤@¤é¤§¤º±q¦¬¨ìµª®×©Î¦^ÂСI §A¤]¥i­q¾\³q°T½×¾Â¡C½Ð°Ñ¾\¥H¤W¡¥¨ú±o§K¶O¹q¶l¤á¤f¡¦¤@¸`¡C­n­q¾\©Î°±¤î­q ¾\¡A¹q¶l¦Ü * [209]pgsql-questions-request@postgresql.org * [210]pgsql-hackers-request@postgresql.org * [211]pgsql-ports-request@postgresql.org * [212]pgsql-docs-request@postgresql.org °T®§ªº¥¿¤å¥u¥i¦³¤@¦æ subscribe ¡]©Î¡^ unsubscribe 22.3 ³q«H½×¾Â¦s®w ³q«H½×¾Â¤]¥H html ®æ¦¡¦s®w¦b¥H¤U¦a¤è¡J * ¸g MHonarc ¦A¸g WWW ªº¨C¤é¥Ø¿ý [213]http://www.postgresql.org/mhonarc/pgsql-questions * [214]ftp://ftp.postgresql.org ¥Ø¿ý /pub/majordomo 22.4 ¦è¯Z¤ú¤å³q«H½×¾Â ¥Ø«e¦³¤@­Ó¡u«D©x¤è¡vªº¦è¯Z¤ú¤å PostgreSQL ³q«H½×¾Â¡C½Ð°Ñ¾\¥H¤W¦³Ãö¡¥¨ú ±o§K¶O¹q¶l¤á¤f¡¦¤@¸`¡C­n­q¾\ªº¸Ü¡A¥ÎªÌ»Ý¹q¶l¦Ü¡J * [215]majordomo@tlali.iztacala.unam.mx °T®§ªº¥¿¤å¥u¥i¦³¤@¦æ inscripcion pgsql-ayuda 23. ¤å¥ó©M°Ñ¦Ò®Ñ 23.1 ¥Î¤á«ü¤Þ©M»¡©ú®Ñ PostgreSQL ´²§G¤¤¤w¥]¬A¥H¤U¦U¶µªº postscript¡BHTML ®æ¦¡ ©M unix man-pages¡C¦pªG§A¯à¤Wºô¡A§A¥i¦b¥H¤U¦a¤è§ä¨ì¤U¦C¤å¥ó¡J [216]http://www.postgresql.org/docs * "Installation Guide" * "User Guide" for PostgreSQL * "Implementation Guide" ¸Ô²Ó»¡©ú PostgreSQL ¸ê®Æ®wªº¤º³¡¹B§@ * ½u¤W»¡©ú®Ñ * HTML ®æ¦¡ªº½u¤W»¡©ú®Ñ * Postscript ®æ¦¡ªº½u¤W»¡©ú®Ñ¡A¥Î¥H¦C¦L 23.2 ½u¤W¤å¥ó * ¤º«Ø¸ê®Æ«¬ºA©M¹Bºâ¤¸ªº¦W³æ©M´y­z ³o¬O6.4 ª©ªº PSQL «ü¥Oªº¤@³¡¤À * ¤ä´©ªº SQL ÃöÁä¦r¦W³æ ¦b /tools ¥Ø¿ý¤¤¦³¤@­Ó¤â½Z°µ³o¤u§@ * ¤ä´©ªº¥y»y¦W³æ ¨Ï¥Î psql \h «ü¥O * PostgreSQL ªº°ò¥»ªºÃöÁp¦¡¸ê®Æ®w·§©À¡]¹ê¬I¤èªk¡^©M¼Æ­Ó½u¤W¨Ò¤l¡]¬d¸ß ¡^ ¬Ý src/test ¤¤ªº regression ´ú¸Õ¡C§A·|§ä¨ì regress/sql ©M suite/*.sql ¥Ø¿ý¡C * PostgreSQL «ü¾É SQL «ü¾É½Z¥ó¦b src/tutorial ¥Ø¿ý¤¤ ¤]½Ð°Ñ¾\¥»¤å¥óªþ¿ý¤A [217]Appendix B ªº¡§ªì¾ÇªÌ SQL «ü¾É¡¨¡C 23.3 ¦³¥Îªº°Ñ¦Ò®Ñ * "Understanding the New SQL: A Complete Guide" - Jim Melton Alan R.Simon µÛ Morgan Kaufman Publisher ¬O¨ä¤¤¤@¥»³Ì¦nªº SQL ®Ñ¡C³o¥»®Ñ¥H SQL92 ¬°·Ç¡C * "A Guide to THE SQL STANDARD" - C.J.Date µÛ Addison-Wesley Publishing company ¤]¬O¤@¥»¦n®Ñ¡C¦³Ãö SQL ªº¦W§@¡C * SQL - The Standard Handbook, ¤@¤E¤E¤G¦~¤Q¤@¤ë Stephen Cannan and Gerard Otten McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England * SQL Instant Reference, 1993 Martin Gruber, Technical Editor: Joe Celko SYBEX Inc. 2021 Challenger Drive Alameda, CA 94501 * C.J.Date, "An introduction to Database Systems" (²Ä¤»ª©), Addison-Wesley, 1995, ISBN 0-201-82458-2 ³o¥»¬O¸ê®Æ®wºÞ²z¨t²Îªº¸t¸g¡C³o¥»®Ñ¸Ô²Ó»¡©ú¥¿³W¤Æ (normalization)¡BSQL¡B«ì´_ (re covery)¡B¨Ã¦æ©Ê (concurrency)¡B«O¦w¡B¾ã¦X©Ê (integrity)¡B¹ï­ì¥»ªºÃöÁp¼Ò¦¡ªº©µ¦ù ¡B²{¥O¸ÜÃD¦p¥D±q¨t²Î©Mª«¥ó¾É¦V¼Ò«¬¡C¤]¥]¬A¤j¶q°Ñ¦Ò¸ê®Æ¥H ¨Ñ²`¤J¬ã¨s¡C¦V¤j³¡¤À¥Î¤á±ÀÂË¡C * Stefan Stanczyk, "Theory and Practice of Relational Databases", UCL Press Ltd, 1990, ISBN 1-857-28232-9 ³o¥»®Ñ¸Ô²Ó»¡©úÃöÁp¦¡¸ê®Æ®w¡BÃö«Y¥N¼Æ (relational algebra)¡BÃö«Yºtºâ (calculus) ©M¥¿³W¤Æªº²z½×¡C¦ý¥¦¤£¥]§t²{¹ê¥@¬Éªº°ÝÃD©M¸û½ÆÂøªº¨Ò¤l¡C¦V¤j³¡¤À¥Î¤á±ÀÂË¡C * "The Practical SQL Handbook" ²Ä¤Tª©¡A Addison Wesley Developers Press ISBN 0-201-44787-8 ¦V¤j³¡¤À¥Î¤á±ÀÂË¡C * Michael Stonebraker, "Readings in Database Systems", Morgan Kaufmann, 1988, ISBN 0-934613-65-6 ³o¬O¹L¥h¼Æ¦~¦³Ãö¸ê®Æ®wªº½×¤å¶°¡C¥¦¤£¬Oµ¹¤@¯ë¥ÎªÌ¬Ý¡A¦Ó¬O¶i¶¥ªº¾Ç¥Í¡]¬ã¨s¥Í¡^©Î¸ê ®Æ®w¶}µo¤H­û¡C * C.J.Date, "Relational Database - Selected Readings", Addison-Wesley, 1986, ISBN 0-201-14196-5 ³o¬O¹L¥h¼Æ¦~¦³Ãö¸ê®Æ®wªº½×¤å¶°¡C¥¦¤£¬Oµ¹¤@¯ë¥ÎªÌ¬Ý¡A¦Ó¬O¶i¶¥ªº¾Ç¥Í¡]¬ã¨s¥Í¡^©Î¸ê ®Æ®w¶}µo¤H­û¡C * Nick Ryan ©M Dan Smith, "Database Systems Engineering", International Thomson Computer Press, 1995, ISBN 1-85032-115-9 ³o¥»®Ñ²`¤J»¡©ú¦s¨ú¤èªk©MÀx¦s§Þ¦Ò¡C * Bipin C. Desai, "An introduction to Database Systems", West Publishing Co., 1990, ISBN 0-314-66771-7 ¥¦¤£¬Oµ¹¤@¯ë¥ÎªÌ¬Ý¡A¦Ó¬O¶i¶¥ªº¾Ç¥Í¡]¬ã¨s¥Í¡^©Î¸ê®Æ®w¶}µo¤H­û¡C * Joe Celko "INSTANT SQL Programming" Wrox Press Ltd. Unit 16, 20 James Road, Tyseley Birmingham, B11 2BA, England 1995 * Michael Gorman "Database Management Systems: Understanding and Applying Database" Technology QED and John Wiley 1991 * Michael Gorman "Enterprise Database for a Client/Server Environment" QED and John Wiley »¡©ú«Ø¥ß¸g¥Ñ repository metamodels ªº¥D±q¸ê®Æ®wÀ³¥Îµ{¦¡ªº­n¨D©M ANSI ¼Ð·Ç SQL 1993 ªºÀ³¥Î¡C ÁÙ¦³¼Æ¥H¦Ê­p¦³Ãö SQL ªº®Ñ¡I¨ì®Ñ©±¬Ý¬Ý§a¡C 23.4 ANSI/ISO SQL ³W®æ¤å¥ó¡XSQL 1992, SQL 1998 ANSI/ISO SQL ³W®æ¤å¥ó¥i¦b¤U¦Cºô¯¸§ä¨ì¡J * [218]http://www.naiua.org/std-orgs.html * [219]http://www.ansi.org/docs ´w°ÊÀÉ®× cat_c.html ¤Î´M§ä¡§Database SQL¡¨¡C * SQL92 ¼Ð·Ç [220]http://www.jcc.com ´w°ÊÀÉ®× sql_stnd.html¡C * ANSI/ISO SQL ³W®æ [221]http://www.contrib.andrew.cmu.edu/~shadow/sql.html §A·|¦b¦¹§ä ¨ì SQL ªº°Ñ¦Ò¸ê®Æ¡C 23.5 ANSI/ISO SQL 1992 ªº»yªk ½Ð°Ñ¾\¥»¤å¥óªºªþ¿ý¥Ò [222]Appendix A 23.6 ANSI/ISO SQL 1998 ªº»yªk SQL 1998 (SQL 3) ³W®æ¤´¦b¶}µo¤¤¡C°Ñ¬Ý¥»¤å¥óªº¡§¹q¤l³~®|¨ú±o SQL3 ¯ó®×¡¨ [223]SQL 1998 23.7 ªì¾ÇªÌ SQL ¾É¤Þ °Ñ¬Ý¥»¤åªþ¿ý¤A [224]Appendix B 23.8 SQL92 ªº®ÉºA©µ¦ù (Temporal Extension) * SQL92 ªº®ÉºA©µ¦ùªº¤å¥ó [225]ftp://FTP.cs.arizona.edu/tsql/tsql2/ * ®ÉºA SQL-3 ³W®æ [226]ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/ ³o¥Ø¿ý¤¤¥]¬A¤@­Ó SQL-92 »y¨¥³W®æªº®ÉºA©µ¦ù¡C³oºØ·s»y¨¥³Q¦W¬° TSQL2¡C ³o¸Ìªº»y¨¥³W®æ¬O³o»y¨¥ªº³Ì²×ª©¥»¡C ¥iª½±µÁpµ¸ TSQL2 ªº¥D®u¡J Design Committee, Richard T.Snodgrass, Department of Computer Science, University of Arizona, Tucson, AZ 85721, * [227]rts@cs.arizona.edu ¤J·|¸Ô±¡©M TSQL2 Language Design Committee ªº¹q¶l¦a§}¥i¦b»y¨¥³W®æ³Ì«áªº ¤@³¹§ä¨ì¡C ³o¥Ø¿ý¤¤ªº¤º®e¦p¤U¡C spec.dvi,.ps TSQL2 »y¨¥³W®æ¡A¤@¤E¤E¥|¦~¤E¤ë¥Xª© bookspec.ps TSQL2 »y¨¥³W®æ¡A¤º®e¦p¦b TSQL2 ªº®Ñ¯ë¡A¤@¤E¤E¤­¦~¤Q¤ë ¥Xª© ¡]½Ð°Ñ¾\¤U¤å¡^ sql3 ´£¥æµ¹ ANSI ©M ISO SQL3 Äw©e·|ªº­×­q«Øij ©M»y¨¥³W®æ¤@°_¡A³o¸ÌÁÙ¦¬¶°¤F¤@¨Ç¦³Ãö³]­p¤Wªº¨M©wªºµû½×¡B´£¨Ñ¨Ò¤l¡B©M¬ã ¨s¦p¦ó¹ê½î³o»y¨¥ªºµû½×¡C³o¨Çµû½×­ì¥»¬Oµ¹ TSQL2 Language Design Committee ªº«Øij¡C¥¦­Ì²{¦b¦³¥t¤@­Ó¥Î³B¡J´£¨Ñ¦³Ãö TSQL2 ºc³yªº¨Ò¤l¡B±À°Ê ³]­p®É§@¥Xªº¤j¶q¨M©w¡B¤ñ¸û TSQL2 ©M¹L¥h¤Q¤­¦~¦³¤H´£Ä³¹Lªº¤j¶q»y¨¥¡C¥²¶· ±j½Õ¡A½Ð¨Çµû½×¥Ø«e¤£¬O TSQL2 »y¨¥³W®æªº¤@³¡¤À¡A¦Ó¬O¹ï¥¦ªº¸É¥R©Mµo®i¡C³o »y¨¥³W®æ¤w¬O TSQL2 ªº³Ì²×¨M©w¡C ³o¨Çµû½×¡A¥[¤W»y¨¥³W®æ¡B¼Æ­Ó¯Á¤Þ©M¨ä¥L¤ä´©§÷®Æ¡A¤w¸g¶°µ²¦¨®Ñ¡J Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer Academic Publishers, 1995, 674+xxiv ­¶¡C ®Ñ¤¤¦³¤@­Ó¸`¿ý¤Fªºµû»ù¡A§¹¾ãªºµû»ù¦b¦¹¥Ø¿ý¤¤ªº eval.ps ´£¨Ñ¡C tl2tsql2.pl ÀɬO¤@­Ó§âÀò±µ¨üªº®ÉºAÅÞ¿è (temporal logic) ½Ķ¬° TSQL2 ªº prolog µ{¦¡¡C³oµ{¦¡¥Ñ Michael Boehlen ¼g¦¨¡C * [228]boehlen@iesd.auc.dk ¦U¦ì¥i±µÄ²¥L¥H¨ú±o¤@¥÷¸ÑÄÀ³o½Ķ¹Lµ{ªº½×¤å¡C³o¬O³oµ{¦¡ªºÂª©¥»¡C·sª©¥» ¦b * [229]http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software (the TimeDB and Tiger systems). 23.9 ²Ä¹s³¡¤À¡X¨ú±o ISO/ANSI SQL ¤å¥ó ³o¤å³¹»¡©ú¦p¦ó¡]¦Xªk¦a¡^¨ú±o¤@¥÷ SQL-92 ¼Ð·Ç©M«ç¼Ë¨ú±o¤@¥÷¡§²{®Éªº ¡¨SQL3 ¯ó®×¡C ³o¼Ð·Çª©Åv©Ò¦³¡A ANSI ¼Ð·Çªº«ù¦³¤H¬° ANSI¡AISO ¼Ð·Çªº«ù¦³¤H¬° ISO¡C ²{®É¦³¨â¡]2¡^­Ó SQL ¼Ð·Ç¡A¤À§O¥Ñ ANSI ©M ISO ¥Xª©¡C³o¨â¥÷¼Ð·Ç¨C­Ó¦r³£¤@ ¼Ò ¤@¼Ë¡A°£¤F¤@¨Ç¤p¸`¡A¦p¤å¥ó¼ÐÃD¡B­¶­º¡Bµu¥y¡§International Standard¡¨ ©M ¡§American Standard¡¨¤§Ãþ¡C ÁʶR SQL-92 ¼Ð·Ç The ISO standard, ISO/IEC 9075:1992, Information Technology - Database Languages - SQL¡A¥Ø«e¡]¤@¤E¤E¤T¦~¤T¤ë¡^¦b ANSI ¦³¦s³f¤Î¥i±o¨ì¡J American National Standards Institute 1430 Broadway New York, NY 10018 (USA) Phone (sales): +1.212.642.4900 »ù¿ú US$230.00¡CANSI ª©¡AANSI X3.135-1992, American National Standard for Information Systems - Database Language SQL¡A¥Ø«e¨ÃµL¦s³f¡A¦ýÀ³¸Ó¥i ¦b¤@¤E¤E¤T¦~¤T¤ë¤U¦¯¦Ü¤­¤ë¤W¦¯¶¡±o¨ì¡C¦ô­p¥¦ªº»ù¿ú¬O US$225.00¡C ¦pªG§A±q ANSI ÁʶR¥ô¦ó¤@¥÷¤å¥ó¡A§A»Ý­nµ¹ 7% ªº¤âÄò¶O¡]§Y¤j¬ù US$9.10¡^ ¡C®ü¥~¶l±HªÖ©w·|§ó¶Q¡CANSI ­n¨D©Ò¦³³æ¾Ú³£¦ñÀH¤@¥÷¤½¥q­q³æªº½Æ¦L¥»¡A©ÎªÌ §A¥i¥H¬ü¤¸±H¤@±i¬ü°êªº»È¦æªº¤ä²¼¡A¥L­Ì·|¦bµ²¤F½ã«á±Hµ¹§A¡C¡]¨Ò¥~±¡ªp¡J ¦pªG§Aªº²Õ´¬O ANSI ªº¤½¥q·|­û (corporate member)¡AANSI ·|§â¤å¥ó±Hµ¹§A ¦Ó¦V¤½¥q¦¬¿ú¡C¡^ ¦b¬ü°ê°ê¥~¡AISO ¼Ð·Ç¤]¥i±q§@¬° ISO (International Organization for Standardization) ©Î IEC (International Electrotechnical Commission) ·| ­ûªº¥»¤g°êÀç¾÷ºc¡]°ê©wªº¼Ð·Ç²Õ´¡^ÁʶR¡C°êÀç¾÷ºc¤Î¨ä¦a§}ªº¦W³æ¥i±q ANSI ©Î¨ä¥L°êÀç¾÷ºc¨ú±o¡C¥¦­Ì¤]¥i±q ISO ±o¨ì¡J International Organization for Standardization Central Secretariat 1, rue de Varembi CH-1211 Genhve 20 Switzerland ¦pªG§A·Q¥H§ó¤è«K§Ö±¶ªº¤èªk­qÁʳo¼Ð·Ç¡A§A»Ý­nªþ¥X¥N»ù¡C§A¥i±q¥H¤U²Õ´¥H US$308.00 ­qÁÊ ISO/IEC 9075:1992, Information Technology - Database Languages - SQL¡J Global Engineering Documents 2805 McGaw Ave Irvine, CA 92714 (USA) USA Phone (works from anywhere): +1.714.261.1455 Phone (only in the USA): (800)854-7179 §Ú¤£ª¾¹D³o¬O§_¥]¬A³f¹B¶O¡A¦ý§Ú¦ô­p¡]°_½X¡^°ê»Ú³f¹B·|ÃB¥~¦¬¶O¡C¥L­Ì·|»á ¬°§Ö±¶¦a§â¤å¥ó±Hµ¹§A¡A¬Æ¦Ü·|±µ¨ü¡§¥D­nªº«H¥Î¥d¡¨¡CGlobal ÁÙ¨S¦³ ANSI ª© ¡A©Î¥L­Ì¨S¦³»ù¿ú©Î¦ô­p®É¶¡¡]¦ý§Ú¹w­p¥¦·|¦b ANSI ¥Xª©«á¼Æ¶g¤§¤º¥X²{¡A»ù ¿ú±µªñ US$300.00¡^¡C ÁʶR¤@¥÷ SQL3 ¯ó®× (Working Draft) §A¥i±q ANSI X3 Secretariat, CBEMA (Computer and Business Equipment Manufacturers Association) ÁʶR¤@¥÷ SQL3 ¯ó®×ªº½Æ¦L¥»¡C¥L­Ì·N¹Ï½T«O¯à´£ ¨Ñ¡§³Ìªñ¡¨ª©¥»ªº SQL3 ¯ó®×¡A¨Ã¥H US$60.00 ¦Ü US$65.00 ¥X°â¡C§A¥i¥H¥H¤U ³~®|±µÄ² CBEMA¡C CBEMA, X3 Secretariat Attn: Lynn Barra 1250 Eye St. Suite 200 Washington, DC 20005 (USA) Lynn Barra ¤]¥i¥H¹q¸Ü¸¹½X +1.202.626.5738 ±µÄ²¥H­n¨D¤@¥÷¡A¤£¹L¶l±H¦ü¥G ¸û¦³Â§»ª¡C ¹q¤l®|¨ú±o SQL3 ¯ó®× ³Ì·sª©¥»¡]¥H¼g¥»¤å®É¬°·Ç¡^ªº SQL3¡]ANSI ©M ISO¡^¯ó®×¡]©M©Ò¦³ªþ¥ó¡^¥i¦b ¥H¤U¯¸¥x¥H¡§anonymous ftp¡¨©Î¡§ftpmail¡¨±o¨ì¡J gatekeeper.dec.com ¦b /pub/standards/sql/ ³o¥Ø¿ý¤¤¦³¦h­ÓÀɮסA¥]¬A PostScript ÀÉ©M¯Â¤å¦rÀÉ¡]®æ¦¡¤£«Ü¬üÆ[¡A¦ý¥i¦b ¿Ã¹õ¤WµL¶·¯S§O³n¥ó¾\Ū¡^¡C ¤@¯ë¨Ó»¡¡A§A¥i§ä¨ìÃþ¦ü¦WºÙªºÀɮסJ sql-bindings-mar94.ps sql-bindings-mar94.txt sql-cli-mar94.ps sql-cli-mar94.txt sql-foundation-mar94.ps sql-foundation-mar94.txt sql-framework-mar94.ps sql-framework-mar94.txt sql-psm-mar94.ps sql-psm-mar94.txt §¹¦¨·sª©¥»ªº¤å¥ó«á¡A¡§mar94¡¨·|§ïÅܨӻ¡©ú·sªº¥Xª©¤é´Á¡]¨Ò¦p¡§aug94¡¨¬O ¦ô­p¦b¡§mar94¡¨¤§«áªºª©¥»¡^¡C ¥t¥~¡A¬°·ÓÅU¤£¯à±q FTP ¨ú±oÀɮצW³æªºÅªªÌ¡A§Ú­Ì¦b¥Ø¿ý¤¤©ñ¸m¤F¤@­Ó¦W¬° ls ªºÀɮסC³oÀɮס]¯«©_¡I¡^¥]¬A¤F¥Ø¿ý¤ºªºÀɮצW³æ¡C ±q Ftp ª½±µÀò±oÀÉ®× ³o¬O¨Ï¥Î FTP ªº¨Ò¤l¡C¥¦¯S§O»¡©ú¦p¦ó³s±µ¨ì gatekeeper.dec.com¡A¨ì¹F©ñ¸m ³o¨ÇÀɮתº¥Ø¿ý¡A¤Î§âÀɮ׶ǰe¨ì§Aªº¹q¸£¡C­nª`·Nªºªº¹q¸£­n¦³¤Wºô¥\¯à¡Cµn ¤J¦WºÙ¬O¡¥ftp¡¦¡A±K½X«h¬O§Aªº¹q¶l¦a§}¡]§Y©Ò¿×¡¥anonymous ftp¡¦¡^¡C«ü¥O ¡¥type binary¡¦¬O¥Î¨Ó½T«O¦¬¨ìªºÀɮפ¤¨S¦³¦ì¤¸³QºI¥h¡C¡¥get¡¦¤@¦¸¨ú±o¤@ ­ÓÀɮסC¦b©R¥O½Z¤¤ªºª`¸Ñ·|¦b¨¤¬A¸¹¤º < §Y¬O¦p¦¹ >¡C % ftp gatekeeper.dec.com Connected to gatekeeper.dec.com. 220- *** /etc/motd.ftp *** Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research. <...this goes on for a while...> 220 gatekeeper.dec.com FTP server (Version 5.83 Sat ... 1992) ready. Name (gatekeeper.dec.com:<§Aªºµn¤J¦WºÙ>): ftp 331 Guest login ok, send ident as password. Password: <Áä¤J§Aªº¹q¶l¦a§}> 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/standards/sql 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 9529 -r--r--r-- 1 root system 357782 Feb 25 10:18 x3h2-93-081.ps -r--r--r-- 1 root system 158782 Feb 25 10:19 x3h2-93-081.txt -r--r--r-- 1 root system 195202 Feb 25 10:20 x3h2-93-082.ps -r--r--r-- 1 root system 90900 Feb 25 10:20 x3h2-93-082.txt -r--r--r-- 1 root system 5856284 Feb 25 09:55 x3h2-93-091.ps -r--r--r-- 1 root system 3043687 Feb 25 09:57 x3h2-93-091.txt 226 Transfer complete. ftp> type binary 200 Type set to I. ftp> get x3h2-93-082.txt 200 PORT command successful. 150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes). 226 Transfer complete. 90900 bytes received in 0.53 seconds (166.11 Kbytes/s) ftp> quit % <³oÀɮפw¦¨¬°§Aªº¹q¸£¤¤ªº x3h2-93-082.txt> ¨S¦³ ftp ¤ä´©ªº±¡ªp¤U¨ú±oÀÉ®× Digital Equipment Corporation ©M¼Æ¶¡¨ä¥L¤½¥q¬Û¦ü¡A´£¨Ñ ftp email ªA°È¡C ¥¦¥i¯à»Ý­n¼Æ¤Ñ¤~¦³¦^À³¡A¦ý¥¦¬°¤£¯àª½±µ¤Wºôªº¤H´£¨Ñ¤F©M ftp ¬Ûµ¥ªºªA°È¡C ¦øªA¾¹ªº¦a§}¬°¡J ftpmail@decwrl.dec.com ¥H¤U©R¥O½Z·|¨ú±o³Ì·sª©¥»ªº SQL3 ¤å¥óªº PostScript ª©¡J reply joe.programmer@imaginary-corp.com connect gatekeeper.dec.com anonymous binary compress ¡]Ķ«ö¡J¥H¤W¥u¬O½T«OÀÉ®×·|³QÀ£ÁY¤Î¥H¤G¤¸®æ¦¡¶Ç°e¡A¦ý¨S¤U¶Ç¥ô¦ó¸ê®Æ¡C¥t ¥~ ­}¦N¦h¤w³Q±d¬f (Compaq) ¦¬ÁÊ¡C¡^ ¥H¤U©R¥O½Z·|¨ú±o³Ì·sª©¥»ªº SQL3 ¤å ¥óªº PostScript ª©¡J reply joe.programmer@imaginary-corp.com connect gatekeeper.dec.com anonymous binary compress uuencode chdir /pub/standards/sql get x3h2-93-091.ps quit ²Ä¤@¥y«ü¥O§i¶D¦øªA¾¹­n§âÀɮ׶ǵ¹§A¡A§A»Ý­n§â ¡§joe.programmer@imaginary-corp.com¡¨´«¬°§Aªº¹q¶l¦a§}¡C³o¨Ò¤l¤¤ªºÀÉ®× x3h2-93-091.ps ·|¥H uuencode ¤Fªº compress Àɮ榡¡A¤À¦¨¤T¤Q¥|«Ê¹q¶l¦^ÂÐ ¡C¦pªG§AªºÀô¹Ò¨S¦³´£¨Ñ­«²ÕÀɮתº¤u¨ã¡A§A»Ý­n¥Î¤U¦C©R¥O½Z¥H¯Â¤å¦r¼Ò¦¡¨ú ±oÀɮסJ reply joe.programmer@imaginary-corp.com connect gatekeeper.dec.com anonymous chdir /pub/standards/sql get x3h2-93-091.ps quit ¦ý½Ðª`·N¡A³o .ps Àɤj·§·|³Q¤À¬°¶W¹L¤C¤Q¥÷¨Ó¦^ÂСI ­n¨ú±o¥ô¦ó¤£¬O x3h2-93-091.ps ªºÀɮסA¥u»Ý§â¡§x3h2-93-091.ps¡¨´«¬°§A·Q ­nªºÀɮתº¦WºÙ¡C­n¨ú±o©Ò¦³Àɮתº¦W³æ¡A§â¡§x3h2-93-091.ps¡¨´«¬°¡§dir¡¨¡C 23.10 ²Ä¤@³¡¤À¡XISO/ANSI SQL ·í«e±¡ªp ³o³¹¬O¦³Ãö SQL ¼Ð·Ç©M¨ä·í«e±¡ªpªº¸ê®Æ¨Ó·½¡C ·í«e±¡ªp¡J ¥Ø«e¥¿¦b¶i¦æ¶}µo¤u§@¡A¥H§ï¶i SQL ¬°¡A¨Ï¥¦¦¨¬°­pºâ¤W§¹¾ãªº»y¨¥ (computationally complete language)¡A¥H¥i¥Î©ó«ù¤[¡B½ÆÂøªºª«¥ó¡C³o¥]¬A¡J ¤@¯ë¤Æ©M±Mªù¤Æµ¥¯Å (generalization and specialization hierarchies)¡B¦h ¯ÅÄ~©Ó (multiple inheritance)¡B¦Û­q¸ê®Æ§ÎºA¡B¿Eµo (triggers) ©M§PÂ_ (assertions)¡Bª¾ÃÑ®w¨t²Î¤ä´© (support for knowledge based systems)¡B°j »¼¬d¸ß¦¡ (recursive query expression) ©Mªþ¥[¸ê®ÆºÞ²z¤u¨ã¡C¥¦¤]¥]¬A©â¶H ¸ê®Æ«¬ºA (ADTs)¡Bª«¥óÃѧO¦r (object identifiers)¡B¤èªk (methods)¡BÄ~©Ó (inheritance)¡B¦h«¬ (polymorphism)¡B¥]¸Ë (encapsulation) ¡B©M©Ò¦³¨ä¥L»P ª«¥ó¸ê®ÆºÞ²z¦³Ãöªº¥\¯àªº³W®æ¡C ¤@¤E¤E¤»¦~¬î©u¡ASQL3 ¼Æ­Ó³¡¤À¶i¦æ¤F¤@¦¸ ISO CD ¤£°O¦W§ë²¼¡C³o¼Æ³¡¤À ¬OSQL/Framework¡BSQL/Foundation ©M SQL/Bindings¡C¤@¦p©Ò®Æ¡A§ë²¼µ²ªG¬O¦b ¦¬¨ì¬ù¤E¦Ê­Óµû½×¤U¾D§_¨M¡C¤@¤ë¤U¦¯Á|¦æ¤F¤@¦¸ ISO DBL ½s¿è·|ij (editing meeting)¡A³B²z¤F¤j¶q¦bµû½×¤¤´£¤Î©Î¥t¥~´£¥æªº°ÝÃD¸Ñ¨M¤èªk¡C¥Ñ©ó¸Ó¦¸·|ij ¥¼¯à³B²z©Ò¦³µû½×¡A·|ij±N·|©µªø¡C½s¿è·|ijªº§¹¦¨©w©ó¤@¤E¤E¤C¦~¤C¤ë¡A¦aÂI ¦b­Û´°¡C ¾Ú¦ô­p¡A¦b¤C¤ëªº½s¿è·|ij¤§«á¡A·|¦A´£¥X¹ï¦³Ãö¨º¨Ç³¡¤Àªº SQL ¶i¦æ³Ì«áªº CD §ë²¼¡C³Ì«á CD ¹Lµ{·|ªá¤j¬ù¤»­Ó¤ë¡A¤§«á·|¦³ DBL ½s¿è·|ij¡BDIS §ë²¼©M §Ö±¶ªº IS §ë²¼¡C ISO ªºµ{§Ç¦b SQL/92 ¤§«á§ïÅܤF¡A©Ò¥H SQL ©e­û·|¤´¦bºN¯Á³o¹Lµ{ªº¸Ô±¡¡C ¦pªG¨Æ¨Æ¶¶§Q¡ASQL3 ªº³o¨Ç³¡¤À·|¦b 1998 ¦~«á´Á¦¨¬°©x¤è ISO/IEC ¼Ð·Ç¡A¤£ ¹L®É¶¡«D±`ºò­¢¡C ¦b¤@¤E¤E¤T¦~¡AANSI ©M ISO ¶}µo©e­û·|¨M©w§â¤§«áªº SQL µo®i¤À¬°¦h³¡¤Àªº¼Ð ·Ç¡C³o¨Ç³¡¤À¥]¬A¡J * Part 1: Framework A non-technical description of how the document is structured. * Part 2: Foundation The core specification, including all of the new ADT features. * Part 3: SQL/CLI The Call Level Interface. * Part 4: SQL/PSM The stored procedures specification, including computational completeness. * Part 5: SQL/Bindings The Dynamic SQL and Embedded SQL bindings taken from SQL-92. * Part 6: SQL/XA An SQL specialization of the popular XA Interface developed by X/Open * Part 7:SQL/TemporalAdds time related capabilities to the SQL standards. ¦b¬ü°ê¡ASQL3 ªº¾ãÅé¦P®É·í§@ ANSI ¥»¤g (Domestic, "D") ±M®×©M ISO ±M®×³B ²z¡C¥Ø«e¦ô­p§¹¦¨®É¶¡¬O¤@¤E¤E¤E¦~¡C SQL/CLI ©M SQL/PSM ²{¥¿¥H³Ì°ª³t«×³B²z¡A¥H§@¬° SQL-92 ªº­×­q¡C¦b¬ü°ê¡A¥¦ ­Ì¥u³Q·í§@°ê»Ú (International, "I") ±M®×³B²z¡C SQL/CLI ¦b¤@¤E¤E¤­¦~§¹¦¨ ¤F¡CSQL/PSM À³¸Ó·|¦b 1996 ¦~¥¼¬q§¹¦¨¡C °£¤F SQL3 ¥~¡AÁÙ¦³¤@¨Çªþ¥[ªº­p¹º¡J * SQL/MM An ongoing effort to define standard multi-media packages using the SQL3 ADT capabilities. * Remote Data Access (RDA) ¼Ð·Ç©e­û·|©M¹Lµ{ (Standards Committee and Process) ¨Æ¹ê¤W¡A¥@¤W¦³¦h­Ó SQL ¼Ð·Ç©e­û·|¡CISO ¦³¤@³¡¤À¬O¤@­Ó°ê»Ú SQL ¼Ð·Ç¤p²Õ ¡C¦h­Ó°ê®a³£¦³¥H SQL ¬°­«ÂIªº©e­û·|¡C³o¨Ç°ê®a¡]³q±`¡^¬£¥X¥Nªí°Ñ»P ISO/IEC JTC1/SC 21/WG3 DBL ·|ij¡C¥D°Ê°Ñ»P ISO SQL ¼Ð·Ç¨î©wªº°ê®a¬O¡J * ¿D¬w * ¤Ú¦è * ¥[®³¤j * ªk°ê * ¼w°ê * ¤é¥» * Áú°ê * ²üÄõ * ­^°ê * ¬ü°ê NIST ½T»{ (NIST Validation) ¦b¬ü°ê¡ASQL ªº½T»{¤u§@¹ê½î¥Ñ National Institute of Standards and Testing (NIST) ¶i¦æ¡CNIST ¥Ø«e¦³¤@®M¤Jªù¯Å (entry level) SQL-92 ªº´ú¸Õ ®M¥ó¡CNIST ½T»{­n¨Dªº¸Ô±¡³Q©w¸q¬°¤@¶µ Federal Information Processing Standard (FIPS)¡C¥Ø«e¹ï SQL ªº­n¨D©w¸q©ó FIPS 127-2¡C¥»¤å¥óªº Postscript ©M¤å¦r¼Ò¦¡¥i±q NIST ¨ú±o¡C¥Ø«e³q¹L SQL ½T»{ªº²£«~¦W³æ¤]¥i¦b NIST ¨ú±o¡C ¼Ð·Ç SQL ¥Zª«©M¤å¥ó (Standard SQL Publications and Articles) ¦³¨â­Óª©¥»ªº SQL ¼Ð·Ç¡C¨â­Ó³£¥i±q ANSI ¨ú±o¡J * ISO/IEC 9075:1992, "Information Technology --- Database Languages --- SQL" * ANSI X3.135-1992, "Database Language SQL" °£«Ê­±©M¹ï¨ä¥L¼Ð·Çªº°Ñ¦Ò¥~¡ASQL ¼Ð·Çªº¨â­Óª©¥»§¹¥þ¤@¼Ë¡C¨â­Óª©¥»³£¥i±q ¥H¤U ¦a¤è¨ú±o¡J American National Standards Institute 1430 Broadway New York, NY 10018 USA Phone (sales): +1.212.642.4900 °£ SQL-92 ¼Ð·Ç¥~¡A²{¦bÁÙ¦³¤@¥÷§Þ³N¥¿»~ªí (Technical Corrigendum) ¡]°£¿ù ¡^¡J * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992 TC 1 À³¸Ó¥i±q ANSI ¨ú±o¡CTC 1 ¥u¦³ ISO ª©¥»¡X¡X¥¦¾A¥Î©ó ISO ©M ANSI ª© ¥»ªº SQL-92¡C °£¼Ð·Ç¥~¡A¤]¦³Ãö©ó 1992 SQL ¼Ð·Çªº®Ñ¡C³o¨Ç®Ñ´£¨Ñ¤@­Ó¤ñ¹ê»Ú¼Ð·Ç©ö²z¸Ñªº ´y­z¡C ¦³Ãöªº¼Ð·Ç (Related Standards) SQL ªÀ¸s¤]¹ï¦h­Ó¨ä¥L¼Ð·Ç¦³¿³½ì¡C³o¸`¥]¬A¤@¨Ç¦³Ãö³o¨Ç§V¤Oªº«ü°w¡C·í§ó¦h ¸ê®Æ¦bºô¤W¥X²{«á¡A³o­Ó¦W³æ¤]·|§óªø¡C * SQL Environments (FIPS 193) * Next Generation Repository Systems (X3H4) - ¤@¥÷©IÆ~°Ñ»P "Developing Standards for the Next Generation Repository Systems" ªº·s»D½Z¡C 23.11 ²Ä¤G³¡¤À¡XISO/ANSI SQL °òª÷ (ISO/ANSI SQL Foundation) SQL3 §V¤Oªº¤@­Ó­«­n³¡¤À¦b SQL °òª÷¤å¥ó¤¤¡J * °ò¥»ªº SQL/PSM ¯à¤O¡]¨Ó¦Û SQL/PSM-92¡^ * ·sªº¸ê®Æ«¬ºA * ¿Eµo (Triggers) * ¤l¦Cªí (Subtables) * ©â¹³¸ê®Æ«¬ºA (Abstract Data Types, ADT) * ª«¥ó¾É¦V¯à¤O ¹ïª«¥ó¾É¦V¯à¤O¦³¼Æ­Ó¥ý¨M­n¨D¡J * ©w¸q½ÆÂø¹B§@ªº¯à¤O * §â½ÆÂøªº¹B§@Àx¦s¦b¸ê®Æ®w¤¤ * ©I¥s¥~³¡µ{§Ç¡@¦³¨Ç¤£¯à¥Î SQL °µ¨ìªº¹B§@¡A©Î»Ý­n©M¥~­±·¾³q ³o¨Ç¯à¤O¤w©w¸q¬° SQL/PSM ªº¤@³¡¤À ²{¦b¦³¤j¶q¤u§@¦b·Ò»s SQL ª«¥ó¼Ò«¬¡A¨Ï¥¦©M ODMG ´£¥Xªºª«¥ó¼Ò«¬¬Ý»ô¡C³o§V ¤O¦b X3H2 ©M ISO DBL ¤å³¹¤¤´y­z¹L¡J®e¯Ç SQL3 ©M ODMG¡C¦b SQL3/OQL Merger ³Ìªñªº§ó·sª©¤]¥i±o¨ì¡C SQL3 ®É¶¡ªí ¦³Ãö SQL3 ªº¤u§@¥¿¦b¶i¦æ¡A¦ý³Ì²×¼Ð·ÇÁÙ¦³«Ý¼Æ¤ë«á¤~¥X²{¡C * °ê»Ú©Ê§ë²¼§â SQL3 °ò¦±q¯ó®×´£¤É¬°©e­û¯ó®× (Committee Draft, CD) ¦b ¤@¤E¤E¤»¤é¬î©u¶i¦æ¡C * ¦ô­p§ë²¼·|±a¨Ó¤j¶qµû½× * ±N·|»Ý­n²Ä¤G¦¸ CD §ë²¼ * Draft International Standard §ë²¼¦h¥b·|¦b 1998 ¦~¤¤¶i¦æ * °ê»Ú¼Ð·Ç¥i¦b¤@¤E¤E¤E¦~¤¤§¹¦¨ ANSI ª©ªº¼Ð·Çªº½s±Æ¤]®t¤£¦h¡C 23.12 ²Ä¤T³¡¤À¡XISO/ANSI SQL ©I¥s¯Å¤¶­± (Call Level Interface) SQL/CLI ¬O¤@ºØ¹ï SQL ¸ê®Æ®wªº©I¥s¯Å¤¶­±¡C¥¦³]­p¬°¤ä´©¥]»q (shrink-wrapped) ªºÀ³¥Îµ{¦¡¡CCLI ­ì¥»¥Ñ SQL Access Group (SAG) ªº¤@­Ó¤p ²Õ©e­û·|³Ð³y¡C SAG/CLI ³W®æ¦b 1992 ¦~¥H·L³n Open DataBase Connectivity (ODBC) ³W®æ¤½§G¡C¤@¤E¤E¤T¦~¡ASAG §â CLI ´£¥æ¨ì ANSI ©M ISO SQL ©e­û·|¤¤ ¡C(SQL Access Group ²{¤wµ²¦X¨ì X/Open consortium ¤¤¡C) SQL/CLI ´£¨Ñ¤F¥H¤U¨Æ¶µªº°ê»Ú¼Ð·Ç¡J * ¿W¥ß©ó¹ê½î¤èªkªº CLI ¨Ó¦s¨ú SQL ¸ê®Æ®w * ¥D±q¤u¨ã (Client-server tools) ¥i»´©öÄy°ÊºAÃìµ²¨ç¦¡®w¦s¨ú¸ê®Æ®w * ¤ä´©¤Î¹ªÀyÂ×´Iªº¥D±q¤u¨ã SQL/CLI ®É¶¡ªí ¹ï¼Ð·Çªº¶}µo¹Lµ{¡ASQL/CLI ¥¿¥HÅå¤Hªº³t«×³B²z¤¤¡C * SQL/CLI ¬O¹ï 1992 SQL ¼Ð·Ç¡]SQL-92¡^ªº¸É¿ò * ¤@¤E¤E¤­¦~§¹¦¨¡A¦¨¬° ISO ¼Ð·Ç * ISO/IEC 9075-3:1995 Information technology -- Database languages -- SQL -- Part 3: Call-Level Interface (SQL/CLI) * ¥Ø«e SQL/CLI ¥¿§V¤O¥[¤W SQL3 ¥\¯à 23.13 ²Ä¥|³¡¤À¡X ISO/ANSI SQL «ù¤[Àx¦s¼Ò²Õ (Persistent Stored Modules) SQL/PSM Äy¥H¤U¥\¯àÂX¥R SQL¡J * µ{§Ç»y¨¥ (Procedural language) ©µ¦ù * ½Æ¥y (Multi-statement) ©MÀx¦sµ{§Ç * ¥~³¡¨ç¼Æ»Pµ{§Ç©I¥s (External function and procedure calls) °£§@¬°¦³»ù­ÈªºÀ³¥Îµ{¦¡¶}µo¤u¨ã¡ASQL/PSM ¬° SQL3 ´£¨Ñ¤Fª«¥ó¾É¦V¯à¤Oªº°ò ¦¤ä´©¡C ½Æ¥y©MÀx¦sµ{§Ç ½Æ¥y©MÀx¦sµ{§Ç¬°¥D±qÀô¹Ò´£¨Ñ¦hºØ¦n³B¡J * ªí²{¡X¥Ñ©óÀx¦sµ{§Ç¥i°õ¦æ¦h¥y SQL »y¥y¡A»P«È¤á¸gºôµ¸ªº·¾³q¥i´î¤Ö¡C * «O¦w¡X¥ÎªÌ¥i¥H¦³Åv§Q¸gÀx¦sµ{§Ç§ó·s¤@­Ó©Î¦h­Ó¦Cªí¡A¦ý¨SÅvª½±µ§ó·s¡C * ¤À¨Éµ{¦¡½X¡X¤£»Ý¨C­Ó¦s¨ú¸ê®Æ®w«È¤á¤u¨ã³£­«¼g©M­«¸ÕÀx¦sµ{§Çªºµ{¦¡½X ¡C * ±±¨î¡X¬°À³¥Îµ{¦¡ªº°õ¦æ´£¨Ñ³æ¤@ªº©w¸q©M±±¨î¡C µ{§Ç»y¨¥©µ¦ù µ{§Ç»y¨¥Äy¬y¦V±±¨î©M¨ä¥L½sµ{§Þ¥©¬° SQL ¥[¤W¶Ç²Îµ{¦¡»y¨¥ªº¥\¯à¡C ¬y¦V±±¨î»y¥y * If-then-else * °j°éµ²ºc (Looping constructs) * ¨Ò¥~³B²z (Exception handling) * Case »y¥y * Begin-End °Ï¶ô µ{§Ç»y¨¥©µ¦ùÁÙ¥]¬A¨ä¥L½sµ{§Þ¥©¡J * Åܼƫŧi * Set »y¥y¡A¥Î©ó½á­È (assignment) * ¨ú±oµ{§Ç©Mª¬ºAªº¸ê®Æ ¦¹¥~¡A©Ò¦³¶Ç²Î SQL »y¨¥³£¥i¥]§t¦b¦h¥yªºµ{§Ç¤¤¡C ¥~³¡¨ç¼Æ»Pµ{§Ç©I¥s ¤@­Ó¸g±`¦b¤j¶q¸ê®Æ®w²£«~ªº wish lists ¤¤¥X²{¡A¦Ó¦³³¡¤À¹ê½î¨ìªº¯S¦â¡A¬O ©I¥s¥ÎªÌ©Ò¼g¡A¦b¸ê®Æ®w³n¥ó¥~ªºµ{§Ç¡C * ®e³\¬Y­Ó¹q¸£¦¡À³¥Îµ{¦¡¥[¤W¦Û¤vªº¸ê®Æ®w¨ç¼Æ * ¥i¦b¾ã­Ó¸ê®Æ®wÀ³¥Îµ{¦¡¨Ï¥Î ³o¥\¯àªº¦n³B¬O¥¦Åý¸ê®Æ®w¡]¦]¦¹¥]¬A¸ê®Æ®wÀ³¥Îµ{¦¡¡^¨Ï¥ÎÂ×´Iªºµ{§Ç©M¨ç¼Æ ¡A¼Æ ¶q¦h±o¤£¯à¥Ñ¤@­Ó¼Ð·Ç²Õ´©w¥X¡C SQL/PSM ®É¶¡ªí SQL/PSM µo®i¨³³t¡J * SQL/PSM ¬O SQL-92 ªº¸É¿ò * ¦³Ãö§â SQL/PSM ±q°ê»Ú¼Ð·Çªº¯ó®×Åܬ°°ê»Ú¼Ð·Çªº°ê»Ú§ë²¼¦b¤@¤E¤E¤»¦~¤@ ¤ë§¹¦¨¡C * ¤@¤E¤E¤»¦~¤­¤ëªº½s¿è·|ij¥¼¯à¸Ñ¨M©Ò¦³µû½× * PSM ½s¿è·|ij¦w±Æ©ó¤@¤E¤E¤»¦~¤E¤ë¤T¤Q¤é¦Ü¤Q¤ë¥|¤é´Á¶¡­«¶} * ¦w±Æºò­¢¡A¦ý PSM ¦³¥i¯à¦b¤@¤E¤E¤»¦~¶¡¥Xª© * ©x¤è¥ô©R¬°¡J ISO/IEC DIS 9075-4:199? Information technology -- Database languages -- SQL -- Part 4: SQL Persistent Stored Modules (SQL/PSM) * ²{¥¿¬° SQL3 ¥[¤W SQL/PSM ¤ä´©¤u§@¡C 23.14 ²Ä¤­³¡¤À¡X ISO/ANSI SQL/µ²¦X (Bindings) ¬°¤è«K°Ñ¦Ò¡Aµ{¦¡»y¨¥ªºµ²¦X³Q©â¥X¦¨¿W¥ßªº¤å¥ó¡C¥Ø«eªºª©¥»§Y¬O SQL-92 ªº °ÊºA©M´O¤Jµ²¦X (dynamic and embedded bindings) ªº¸`¿ý¡C µ{¦¡»y¨¥µ²¦X¤´¦³¤£¦Pªº°ÝÃD¦³«Ý¸Ñ¨M¡C ¹ï¶Ç²Îµ{¦¡»y¨¥¨Ó»¡¡A¸ê®Æ«¬ºA©M SQL-92 ªº¥i¥H¤¬¬Û¹ïÀ³¡C¤£¹L¡A SQL ª«¥ó ©Mµ{¦¡»y¨¥ÅܼƤ§¶¡ªº¹ïÀ³¥²¶·©w¸q¡C ¹ïª«¥ó¾É¦V»y¨¥¨Ó»¡¡A¥Ø«eªº SQL ¸ê®Æ«¬ºA¡BSQL ª«¥ó¼Ò«¬©Mª«¥ó¾É¦Vµ{¦¡»y¨¥ ¤§¶¡ ªº¹ïÀ³Ãö«Y¥²¶·©w¸q¡C ª«¥ó¼Ò«¬»Ý¦b¤½¶}³o¨Ç¤§«eí©w¤U¨Ó¡C »y¨¥µ²¦X§¹¦¨®É·|¦¨¬° SQL3 ªº¤@³¡¤À¡C 23.15 ²Ä¤»³¡¤À¡XISO/ANSI SQL XA ¤¶­±³W®æ ¡]SQL/XA¡^ ³o³W®æ·|¬°Á`¥æ©öºÞ²z­û (global Transaction Manager) ©M SQL ¸ê·½ºÞ²z­û (SQL Resource Manager) ¤§¶¡À³¥Îµ{¦¡¤¶­± (API) ´£¨Ñ¼Ð·Ç¡C¥¦·|®Ú¾Ú ISO/IEC 10026 ªº¤º®e¡A¡§¤À´²¥æ©ö³B²z (Distributed Transaction Processing¡^¡¨¼Ð·Ç¤Æ¨ç¼Æ©I¥s¡ASQL ¸ê·½ºÞ²z­û·|¥Î¥H¤ä´©¤À¤G¶¥¬qªº½T©w (two-phase commit)¡C°ò¦ªº¤å¥ó¬O¦Û¸g X/Open §å·Ç¦Ó¨Ó¦Û¤@¥÷ X/Open ¥Xª© ª«¡A¥¦²M·¡ªº«ü©ú xa_close, xa_commit, xa_complete, xa_end, xa_forget, xa_open, xa_prepare, xa_recover, xa_rollback ©M xa_start µ¥¦h­Ó¨ç¼Æ¡A¥H SQL ¸ê®Æ«¬ºAªº¿é¤J©M¿é¥X°Ñ¼Æªº»yªk¡C ISO ¥Ø«e¥¿¹Á¸ÕºÉ§Ö°l¤W (fast-tract) X/Open XA ³W®æ¡C³o­Ó¹Lµ{¤£¸g§ïÅÜ±Ä ¥Î¤@­Ó¥Ø«eªº·~¬É³W®æ¡C¥H ISO SC21¡AJTC 1 µ¥¯Åªº XA ºÉ§Ö°l¤W§ë²¼¦b¤@¤E¤E ¤­¦~¥|¤ë¤G¤Q¤C¤é¶}©l¡A¤@¤E¤E¤­¦~¤Q¤ë¤G¤Q¤C¤éµ²§ô¡C¦pªG XA ³W®æ¸g 75% ²¼ ¼Æ©M 2/3 ªº JTC 1 p-members §å·Ç¡A¥¦·|¦¨¬°¤@­Ó°ê»Ú¼Ð·Ç¡C¦pªG¸gºÉ§Ö°l¤W §ë²¼§å·Ç¡ASQL/XA ¥i¦b 1996 ¦~¦¨¬°¼Ð·Ç¡C 23.16 ²Ä¤C³¡¤À¡X®ÉºA ISO/ANSI SQL ®ÉºA SQL ³B²z©M®É¶¡¦³Ãöªº¸ê®Æ¡C¨ä·§©À¬O¬d¸ß¸ê®Æ¦Óª¾¹D¥¦¦b¤@­Ó¯S©w®É¶¡ªº ±¡ªp¬O¦³¥Îªº¡C®ÉºA SQL ¬O¤@¥÷¥Ñ Rick Snodgrass ¦b¤@¤E¤E¥|¦~¤Q¤G¤ë©Ò¼g¡A ´y­z³o·§©Àªº¤å¥ó¡C X3 «Å§G½T»{¤@­Ó·s­p¹º¡AISO/IEC 9075 Part 7: SQL/Temporal ¬O¤@¥÷Ãö©ó SQL/Temporal ªº·s»D½Z ---------------------------------------------------------------------------- Temporal SQL ************ Rick Snodgrass¡]TSQL2 ©e­û·|¥D®u¡^ 31-Dec-1994 ¤£¦h¤H°Ý¹LÃö©ó SQL 3 ¹ïªþ¥[®É¶¡¤ä´©ªº°ÝÃD¡]¦p¦b DBL R10-75 ´£Ä³¡A­n¨D SQL ¦³·sªº³¡¤À¨Ó³B²z®É¶¡©Êªº¸ê®Æ®w¡^¡C¨ä½×ÂI¬O©â¶H¸ê®Æ§ÎºA (ADT's) ¨¬¥H ¤ä´©®ÉºA¡C¦b³o¸ê°T©Êªº¶µ¥Ø¡A§Ú¨Ï¥Î¨ãÅé¨Ò¤l¨Ó½×ÃÒ¾Ö¦³©â¶H¸ê®Æ§ÎºAªºÄæ¦ì ¤£¯à³B²z®ÉºA¬d¸ß¡C¯S§O¨Ó»¡¡A«Ü¦h®É¶¡©Êªº¬d¸ß¤£¬O«ÜÃø¥Î SQL ¼ÒÀÀ¡A´N¬O»Ý ¦b¹Lµ{»y¨¥¤¤¨Ï¥Î´O¤J¦¡ SQL¡C¨ä¥L¿ï¾Ü¦b TSQL2¡A¤@­Ó¹ï SQL-92 ªº®ÉºA©µ¦ù ¤¤´£¥X¤F¡C ¾É¨¥ ¦³®Ä®É¶¡ (Valid-time) ªº¤ä´©¶W¥X¤@­Ó®ÉºA ADT ªº¯à¤O¡C¨Ï¥Î«áªÌ¡A¤@­ÓÄæ¦ì ³Q«ü©w¬°®ÉºA»â°ì¡A¦p DATE ©Î INTERVAL¡]µy«á·|¦³¨Ò¤l¡^¡CÄyµÛ¦³®Ä®É¶¡¡Aªí ®æªº¨C¦æÀHµÛ®É¶¡§ïÅÜ¡A ¦]¬°¹ê»Ú¤W§ïÅܤF¡CÁpô¨ì¤@­Ó¦³®Ä®É¶¡ªí®æªº¬Y¦æªº ®É¶¡ÂW°O (timestamp)¡A·|³Q¬d¸ß»y¨¥²z¸Ñ¬°¸Ó¦æ¤¤¦UÄæ¼Æ­Èªº²Õ¦X¦³®Äªº®É¶¡ ¡C³o­ÓµL¶·¨¥©úªº®É¶¡ÂW°O¨Ï±o¬d¸ß¥i¥H²³æ©ö©ú¦aªí¹F¥X¨Ó¡C ­Ó®×¬ã¨s¡XÀx¦s²{®É¸ê®Æ The University of Arizona ªº Office of Appointed Personnel ¦b¸ê®Æ®w¤¤¦³ ¨Ç¸ê®Æ¡A¥]¬A¹µ­û¦W¦r¡B¥Ø«eÁ~ª÷©M¥Ø«e¾¦ì¡C³o¨Ç¥i¥Î¤@­Ó²³æªºªí®æªí¹F¥X ¨Ó¡C Employee(Name, Salary, Title) ¨Ï¥Î³o­Óªí®æ´M§ä¤@­Ó¹µ­ûªºÁ~ª÷¤Q¤À²³æ¡C SELECT Salary FROM Employee WHERE Name = 'Bob' ²{¦b OAP ·Q¦A°O¿ý¥X¥Í¤é´Á¡C¬°¨Ç¡A¦bªí®æ¤¤¥[¤F¤@Äæ¡A²£¥Í¥H¤Uºõ¥Ø (schema)¡J Employee(Name, Salary, Title, DateofBirth DATE) §ä´M¤@¦W¹µ­ûªº¥X¥Í¤é´Á­Ó´M§äÁ~ª÷Ãþ¦ü¡C SELECT DateofBirth FROM Employee WHERE Name = 'Bob' ­Ó®×¬ã¨s¡XÀx¦s¾ú¥v¸ê®Æ OAP ·Q§â¨ü¹µ¾ú¥v¹q¸£¤Æ¡C¬°¦¹¡A¥L­Ì¥[¤W¨âÄæ¡A¤@Äæ«ü¥Xªí¥Ü¦¹¦æªº¸ê®Æ¦ó®É ¶}©l¦³®Ä¡A ¥t¤@«ü¥X¸ê®Æ¦ó®É¥¢®Ä¡C Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE) ¥H¸ê®Æ¼Ò«¬ (data model) »¡¡A³o¨Ç·sÄæ¦ì©M DateofBirth ²@µL¤À§O¡C¤£¹L¡A¥¦ ­Ìªº ¦s¦b²£¥Í¦hºØµ²ªG¡C ­Ó®×¬ã¨s¡X§ë¬M (Projection) ­n§ä¥X¹µ­û¥Ø«eªºÁ~ª÷·|¸û¬°§xÃø¡C SELECT Salary FROM Employee WHERE Name = 'Bob' AND Start <= CURRENT_DATE AND CURRENT_DATE <= Stop ³o¥y¬d¸ß¤ñ¤§«eªº½ÆÂø¡C¤¸¤¿«Ü©úÅã¬O·s¼Wªº¨âÄæ¡COAP ·Qµo¥XÁ~ª÷¾ú¥vµ¹¦U­û ¤u¡C¯S§O¦a¡A¦³»Ý­n§ä¥X¨C¤@¦W¹µ­û¦b¦¬¨ü¤@­ÓÁ~¹Sªº³Ìªø®É¶¡¡C¤£©¯¦a¡A¥Î SQL ¤£¯à°µ¨ì¡C¤@¦W¹µ­û¦bÁ~¹S½Õ¾ã´Á¶¡Â¾»Î¥i¦³¦h¦¸Åܧó¡C Name Salary Title DateofBirth Start Stop ---- ------ ----- ----------- ----- ---- Bob 60000 Assistant Provost 1945-04-09 1993-01-01 1993-05-30 Bob 70000 Assistant Provost 1945-04-09 1993-06-01 1993-09-30 Bob 70000 Provost 1945-04-09 1993-10-01 1994-01-31 Bob 70000 Professor 1945-04-09 1994-02-01 1994-12-31 ¹Ï 1 ­nª`·N¦³¤T¦æ Bob ªºÁ~ª÷°±¯d¦b $70,000¡C©Ò¥H¡Aµ²ªGÀ³¸Ó¬O Bob ¦³¨â¦æ¡C Name Salary Start Stop ---- ------ ----- ---- Bob 60000 1993-01-01 1993-05-30 Bob 70000 1993-06-01 1994-12-31 ¥t¤@¤èªk¬O§âÁ~ª÷©M¾¯Å¸ê®Æ¦Lµ¹¥ÎªÌ¡A¦Ó¥Ñ¥ÎªÌ§ä¥X¥LªºÁ~¹S¦ó®ÉÅܧó¡C³o¤è ªk¬J¤£§l¤Þ¡A¥ç¤£¹ê»Ú¡C¥t¤@¤èªk¬OºÉ¶q¨Ï¥Î SQL¡C CREATE TABLE Temp(Salary, Start, Stop) AS SELECT Salary, Start, Stop FROM Employee; ­«ÂÐ UPDATE Temp T1 SET (T1.Stop) = (SELECT MAX(T2.Stop) FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop) WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND T1.Start < T2.Start AND T1.Stop >= T2.Start AND T1.Stop < T2.Stop) until no rows updated; DELETE FROM Temp T1 WHERE EXISTS (SELECT * FROM Temp AS T2 WHERE T1.Salary = T2.Salary AND ((T1.Start > T2.Start AND T1.Stop <= T2.Stop) OR (T1.Start >= T2.Start AND T1.Stop < T2.Stop)) °j°é¤¤§ä¥X­«Å|©Î¬Û¾F¦Ó»Ý­n¦X¨Öªº®É¬q¡C¦b³ÌÃaªº±¡ªp¡A°j°é·|°õ¦æ log N ¦¸ ¡AN «ü¤@³s¦ê­«Å|©Î¬Û¾Fªº¦PÁ~ª÷¬ö¿ýªº¼Æ¶q¡CŪªÌ¥i¦Û¦æ¼ÒÀÀ¬d¸ß¦b¥H¤W¨Ò¤l ªº°õ¦æ¨ÓÅçÃÒ¥¦ªº¥¿½T©Ê¡C ²Ä¤TºØ¤èªk¬O¨Ï¥Î SQL ¬°ªí®æ¶}±Ò¤@­Ó´å¼Ð (cursor)¡C¬°¨C­ÓÁ~ª÷ºÞ²z¤@­Ó¦U ¬q¸¨ªºÃìªí (linked list)¡C³oÃìªí¶}©l®É»Ý¬°ªÅ¥Õ¡C DECLARE emp_cursor CURSOR FOR SELECT Salary, Title, Start, Stop FROM Employee; OPEN emp_cursor; loop: FETCH emp_cursor INTO :salary, :start, :stop; if no-data returned then goto finished; find position in linked list to insert this information; goto loop; finished: CLOSE emp_cursor; ­«ÂЦÜÃìªíµ²§ô¡A¦L¥X¤é´Á©MÁ~ª÷¡C ¦pªG´å¼Ð¬O ORDER BY Start¡AÃìªí¨Ã«D¥²­n¡C µL½×¦p¦ó¡A¤@¥y²³æªº¬d¸ß¬O¤£©ö¥Î SQL-92 ªº¥\¯àªí¹F¥X³o¥Øªº¡C¨Ï¥Î TSQL2 ªº ¸Ü³o¬d¸ß·|«Ü²³æ¡C SELECT Salary FROM Employee ®×¨Ò¬ã¨s¡X³sµ² (JOIN) ¤@­Ó§ó¿E¶iªº¤èªk¬O§âºõ¥Ø­«¾ã¡A§âÁ~ª÷¡B¾¯Å¡B¥X¥Í¤é´Á¸ê®Æ¤À¶}¡A±q¦ÓÁ׶} ©â¨ú Á~¹S¾ú¥v®É¹J¨ìªº°ÝÃD¡C¡]¬°¤è«K­p¡A§Ú­Ì¥H«áªº°Q½×¤¤¤£¦A¦Ò¼{¥X¥Í¤é´Á ¡C¡^ Employee1 (Name, Salary, Start DATE, Stop DATE) Employee2 (Name, Title, Start DATE, Stop DATE) Employee1 ªí®æ¦p¤U¡J Name Salary Start Stop ---- ------ ----- ---- Bob 60000 1993-01-01 1993-05-30 Bob 70000 1993-06-01 1993-12-31 ³o¬O Employee2 ªí®æ¡C Name Title Start Stop ---- ------ ----- ---- Bob Assistant Provost 1993-01-01 1993-09-30 Bob Provost 1993-10-01 1994-01-31 Bob Professor 1994-02-01 1994-12-31 §ïÅܤ§«á¡A¨ú±o¹µ­ûÁ~ª÷¸ê®ÆÅܱo²³æ¡C SELECT Salary, Start, Stop FROM Employee1 WHERE Name = 'Bob' ¦ý¦pªG OAP ·Q¤@­Óªí®æ¤¤¥]¬AÁ~ª÷¡B¾¦ìªº®É¬q¡]§Y OAP ·Q¤@­Ó¹³¹Ï 1 §Î¦¡ªº ªí®æ¡^¡H¤@­Ó¤èªk¬O¦L¥X¨â­Óªí®æ¡A¦ÓÅý¥ÎªÌ§ä¥X¦³Ãö²Õ¦X¡C¥t¤@¤èªk¬O§¹¥þ¨Ï ¥Î SQL¡C¤£©¯¦a¡A³o¬d¸ß­n¤ÀªR Employee1 ¨C¦æ©M Employee2 ªº­«Å|±¡ªp¡A¦³ ¥|ºØ¥i¯à¥X²{¡C SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee1.Stop FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name AND Employee2.Start <= Employee1.Start AND Employee1.Stop < Employee2.Stop UNION SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee2.Stop FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name AND Employee1.Start >= Employee2.Start AND Employee2.Stop < Employee1.Stop AND Employee1.Start < Employee2.Stop UNION SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee1.Stop FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name AND Employee2.Start > Employee1.Start AND Employee1.Stop < Employee2.Stop AND Employee2.Start < Employee1.Stop UNION SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee2.Stop FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name AND Employee2.Start > Employee1.Start AND Employee2.Stop < Employee1.Stop ¥¿½T§ä¥X©Ò¦³±¡§Î¬O¤@¥ó¨ã¬D¾Ô©Êªº¤u§@¡C¨Ï¥Î TSQL2¡A¶i¦æ¤@­Ó¨ã®ÉºAªº³sµ² ´N¦p¤H­Ì©Ò´Á±æ¡C SELECT Employee1.Name, Salary, Dept FROM Employee1, Employee2 WHERE Employee1.Name = Employee2.Name ­Ó®×¬ã¨s¡X»E¶° (AGGREGATES) ²{¦b OAP ³Q°Ý¤Î³Ì°ªÁ~¹S¬O¤°»ò¡H¥[¤W®É¶¡«e¡A³o«Ü²³æ¡C SELECT MAX(Salary) FROM Employee ²{¦b¥[¤W¤FÁ~ª÷¾ú¥v¡A§Ú­Ì­n§ä¥X¤£¦P®É¶¡³Ì°ªÁ~ª÷ªº¾ú¥v¡C°ÝÃD·íµM¬O SQL ¨Ã ¤£´£¨Ñ¨ã®ÉºAªº»E¶°¡C²³æªº¤èªk¬O¦L¥X¦³Ãö¸ê®Æ¡A¥Î¤H¤â§ä¥X³Ì¤j­È¡C¥t¤@­Ó ¤èªk¬O¨ú¥©¡A§â¤@­Ó·í®Éªº (snapshot) »E¶°¬d¸ßÂà¤Æ¬°¤£¨Ï¥Î»E¶°ªº¬d¸ß¡A¦A Âà¤Æ¬°®ÉºA»E¶°¡C¨º­Ó¤£¨Ï¥Î»E¶°ªº¬d¸ß¥Î©ó§ä¥X¤£¤j©ó¥¦¥»¨­¼Æ­ÈªºÁ~ª÷¡C SELECT Salary FROM Employee AS E1 WHERE NOT EXISTS (SELECT * FROM Employee AS E2 WHERE E2.Salary > E1.Salary) §â³o­Ó¬d¸ßÅܬ°®ÉºA¬d¸ß¨Ã¤£Åã²L¡C¥H¤U¬O¤@ºØ¤èªk¡C CREATE TABLE Temp (Salary, Start, Stop) AS SELECT Salary, Start, Stop FROM Employee; INSERT INTO Temp SELECT T.Salary, T.Start, E.Start FROM Temp AS T, Employee AS E WHERE E.Start >= T.Start AND E.Start < T.Stop AND E.Salary > T.Salary; INSERT INTO Temp SELECT T.Salary, T.Stop, E.Stop FROM Temp AS T, Employee AS E WHERE E.Stop > T.Start AND E.Stop <= T.Stop AND E.Salary > T.Salary; DELETE FROM Temp T WHERE EXISTS (SELECT * FROM Employee AS E WHERE ((T.Start => E.Start AND T.Start < E.Stop) OR (E.Start >= T.Start AND E.Start < T.Stop)) AND E.Salary > T.Salary; ³o¤èªk«Ø¥ß»²§Uªí®æ¡C§Ú­Ì¦b³o­Óªí®æ¤¤¥[¤W¨â­Ó®É¬q¤¤­«Å|³¡¤Àªº¤W¡B¤U³¡¤À ¡C¤§«á§Ú­Ì§â©Ò¦³¤l¬d¸ß¤¤§ä¥Xªº¬ö¿ý§R°£¡A¦]¦¹¼vÅT¨ì NOT EXISTS¡C³Ì«á§Ú­Ì ±q»²§Uªí®æ¤¤§ä¥X³Ìªøªº®É¬q¡A¹³¤§«e§Ú­Ì§ä¥XÁ~ª÷¸ê°T¯ë¡C¦p¤j®a©Ò®Æ¡A³o¼Ë ªº SQL ¥y¤l°õ¦æ®É®Ä²v«D±`§C¡A¦]¬°¨º¨Ç½ÆÂøªº±_ª¬¤£µ¥¬d¸ß¡C ²Ä¤T­Ó¤èªk¬OºÉ¶q¤Ö¥Î SQL¡A¦Ó¦b¥D¾÷¤W©Ò¥Îªº»y¨¥¤¤¥Î´å¼Ð§ä¥X³Ìªøªº¾ú¥v¡C ¨Ï¥Î TSQL2 ¦A¦¸Â²³æª½±µ¡C SELECT MAX(Salary) FROM Employee ºK­n ¤j³¡¤À¸ê®Æ®wÀ³¥Îµ{¦¡³£»Ý­n³B²zÀH®É¶¡§ïÅܪº¸ê®Æ¡C¦³®Ä®É¶¡¦b SQL ¨Ã¤£¤ä´© ¡C«Ü¦h®ÉºA¬d¸ß¤£¬O«Ü¥H SQL ¼ÒÀÀ¡A´N¬O»Ý­n§â SQL ´O¤J¨ìµ{§Ç»y¨¥¤¤¡A¦]¬° SQL ¦b¸ê®Æ¼Ò«¬©M¬d¸ß»y¨¥µ²ºc¤¤¯Ê¥F¹ï¦³®Ä®É¶¡ªº¤ä´©¡C ¥t¤@¤è­±¡A§Ú­Ì¥Ü½d¥X¥[¤W¦³®Ä®É¶¡¤ä´©»Ý­n¹ï DBMS ¬I¦æ§@¥X¤@¨Ç§ïÅÜ¡A¦ý¯à À¸¼@©Ê¦a²³æ¤@¨Ç¬d¸ß¡A¨Ã¨Ï¨ä¥L¬d¸ßÅܱo¦³¥i¯à¡C±N¨Ó¤]¥i©óÀx¦sµ²ºc¡B¯Á¤Þ ¤èªkªº³Ì¨Î¤Æ (optimization)¡C¦Ó³Ì¨Î¤Æªºµ¦²¤¥i¾É­Pªí²{¤j´T´£¤É¡C ÀHµÛ SQL3 ªº¤@­Ó·s³¡¤À¤ä´©ÀH®É¶¡§ïÅܪº¸ê®Æ¡A§Ú­Ì¥i¥H¶}Öí³B²z³oÃþÀ³¥Î¡A §ï¨} SQL3 ³B²z®ÉºA¸ê®Æªº¯à¤O¡C ---------------------------------------------------------------------------- Accredited Standards Committee* X3, Information Technology NEWS RELEASE ¤å¥ó½s¸¹¡J PR/96-0002 ¦^ÂСJ Barbara Bennett at bbennett@itic.nw.dc.us X3 «Å§G»{¥i¤@­Ó³o±M®×, ISO/IEC 9075 Part 7: SQL/Temporal Washington D.C., 1996 ¦~¤@¤ë ---------------------------------------------------------------------------- -- Accredited Standards Committee X3, Information Technology «Å§G»{¥i¤@ ­Ó¦³Ãö SQL/Temporal ¤ä´©ªº·s±M®×¡AISO/IEC 9075 Part 7¡A¨Ã§â¦³Ãö¤u§@¥æ¤© Technical Committee X3H2, Database¡C³o­Ó«Øij¤¤ªº¼Ð·Ç­q©ú±N¥X²{ªº SQL3 ¼Ð·Çªº¤@­Ó·s³¡¤À¡A¦p²Ä¤C³¡¤À Temporal SQL ¬° SQL ªº¤@­Ó©µ¦ù¡A¦b SQL ¸ê ®Æ®wÀô¹Ò¤ä´©¦s¨ú©M³B²z¨ã®ÉºAªº¸ê®Æ¡C¤U¦¸ X3H2 ·|ij©w©ó¤@¤E¤E¤»¦~¤T¤ë¤Q ¤@¦Ü¤Q¥|¤é¦b³ôÂÄ´µ (Kansas) Á|¦æ¡C ¦p¦³¬d¸ß¡A¥i¶l±H©¹¡J Chairman of X3H2, Dr. Donald R. Deutsch, Sybase, Inc., Suite 800, 6550 Rock Spring Drive, Bethesda, MD 20817. Email: deutsch@sybase.com. ²{¥¿´M¨D¥i¯àªº±M§Q©M¨ä¥L«ê·íªº¨Æ¶µ¡]ª©Åv¡B°Ó¼Ð¡^¡C³o§â¦³Ãö¸ê®Æ±H¥æ¡J X3 Secretariat at 1250 Eye Street NW, Suite 200, Washington DC 20005. Email: x3sec@itic.nw.dc.us FAX: (202)638-4922. 23.17 ²Ä¤K³¡¤À¡XISO/ANSI SQL MULTIMEDIA (SQL/MM) ¤@­Ó¬°«Ø¥ß¥Î©ó¦h´CÅéÀ³¥Îµ{¦¡ªº SQL ª«¥ó¨ç¦¡®wªº·s ISO/IEC °ê»Ú¼Ð·Ç¤Æ­p ¹º¦b¤@¤E¤E¤T¦~ªì´ÁÀò§å·Ç¶i¦æ¡C³o­Ó·s¼Ð·Ç¤Æ¦æ°Ê¦W¬° SQL Multimedia (SQL/MM)¡A¥¦·|¥Î¯óÀÀ¤¤ªº SQL3 ³W®æ¤¤ªº©â¶H¸ê®Æ«¬ºA¡]ADT¡^³W®æ©M¥Ø¼Ð«ü©w SQL ADT ©w¸q®M¸Ë¡C SQL/MM ¥Ø¼Ð¬°¼Ð·Ç¤Æ¬ì¾Ç©M¤uµ{¡B¥þ¤å©M¤å¥ó³B²z¡BºÞ²z ¦h´CÅ骫¥ó¡A¦p¼v¹³¡BÁn­µ¡B°Êµe¡B­µ¼Ö©M¿ý¹³ªºª«¥ó¨ç¼Æ®w¡C¥¦¦h¼Æ·|´£¥X¤@ ºØ¥Î©ó¨ä¥L JTC1 ¼Ð·Ç²Õ´¡]¦p¦³Ãö¤å¥óªº SC18¡B¼v¹³ªº SC24¡B·Ó¤ù©M°Ê§@¹Ï ¹³ªº SC29¡^©w¸qªºª«¥óªº SQL »y¨¥µ²¦X (binding)¡C SQL/MM ªº±M®×­p¹º«ü¥X¥¦·|¦¨¬°¤@¥÷¦h³¡¤À¼Ð·Ç¡A¥]§t¤£©w¼Æ¶qªº³¡¤À¡C²Ä¤@³¡ ¤À·|¬O¨ä¥L³¡¤À¦p¦ó«Ø¦¨ªº®Ø¬[¡C¨ä¥L¨C­Ó³¡¤À·|±Mª`©ó¤@­Ó¯S©wªº SQL À³¥Îµ{ ¦¡®M¥ó¡C¥H¤U¬°¤@¤E¤E¥|¦~¤K¤ë¦s¦bªº SQL/MM ³¡¤À¡J * Part 1: Framework A non-technical description of how the document is structured. * Part 2: Full Text Methods and ADTs for text data processing. About 45 pages. * Part 3: Spatial Methods and ADTs for spatial data management. About 200 pages with active contributions from Spatial Data experts from 3 national bodies. * Part 4: General Purpose Methods and ADTs for complex numbers, Facilities include trig and exponential functions, vectors, sets, etc. Currently about 90 pages. ¦³¦h­Ó¦³ÃöªÅ¶¡©M¦a²z¸ê®Æªº¼Ð·Ç¤Æªº¤u§@¦b¶i¦æ¤¤¡J * ANSI X3L1 - Geographic Information Systems. Unisys ªº Mark Ashworth of Unisys ¬O X3L1 ©M ANSI X3H2 ¶¡ªºÁpµ¸¤H¡C ¥L¤]¬O SQL/MM ¯ó½Z²Ä¤@¡B¤T©M¥|³¡¤Àªº½s¿è¡C * ISO TC 211 - Geographic information/Geomatics 24. PostgreSQL ªº§Þ³N¤ä´© ¦pªG§A¦³¥ô¦ó§Þ³N¤Wªº°ÝÃD¦¡¹J¨ì§xÃø¡A§A¥i¹q¶l¦Ü¡J * [230]pgsql-questions@postgresql.org ¤Î¹w´Á¦b¤@¤é¤º¦¬¨ì¦^ÂСC¦]¬°¤¬Ápºô²£«~ªº¥Î¤á½d³ò«Ü¼s¡A¥Î¤á¤S¤¬¬ÛÀ°§U¡A ¤¬Ápºô¥i»´©ö¬°¼Æ¥H¦Ê¸U­p¥Î¤á´£¨Ñ§Þ³N¤ä´©¡C¹q¶l¤ä´©¤ñ¹q¸Ü¤ä´©¤è«K±o¦h¡A ¦]¬°§A¥i°Å¤U©M¶K¤W¿ù»~°T®§¡Bµ{¦¡¿é¥Xµ¥µ¥¡A¤S¥i»´©ö¶Ç°e¨ì³q«H½×¾Â / ·s»D ²Õ¡C ¦b¤£¤[ªº±N¨Ó¡APostgreSQL ²Õ´·|¦V¤j¤p«¬¤½¥q¥X°â§Þ³N¤ä´©¡A©Ò±o¦¬¯q·|¥Î©ó ºûÅ@¥@¬É¦U¦aªº¦h­Ó¬M®g¯¸¥x¡]¸Uºûºô ©M ftp¡^¡C¤]·|¥Î¨Ó¦L»s¤å¥ó¡B«ü¤Þ©M®Ñ Äy¥HÀ°§UÅU«È¡C §A¤]¥i¦b Anderson¡BWGS¡]Work Group Solutions¡^µ¥±M·~ÅU°Ý¦æ±o¨ìÀ°§U¡C§A ¥i§ä¥L­ÌÀ°§U¡A¦]¬°¥L­Ì¦³«Ü¦nªº C¡BC++ ±M®a¡] PostgreSQL ¥H C ¼g¦¨¡^¡C * Work Group Solutions [231]http://www.wgs.com * Anderson Consulting [232]http://www.ac.com 25. ¸gÀÙ©M°Ó·~¤è­± °Ó·~¸ê®Æ®wú¥æ«Ü¦hµ|¶µ¦pÁp¨¹¡B¦{¡B¾P°â¡B¹µ¥Î¡BªÀ·|«O»Ù¡BÂåÀø«OÀIµ|¡B­û ¤u°·±d«O»Ù¡B¨ä¥L¦Uµ{­û¤uºÖ§Q¡B¥«³õ±À¼s©M¼s§i¶O¡C©Ò¦³³o¨Ç¶O¥Î³£¤£ª½±µ¥Î ©ó¸ê®Æ®wªº¶}µo¡C·í§AÁʶR¤@­Ó°Ó·~¸ê®Æ®w¡A¤@³¡¤Àªºª÷ÃB®ö¶O©óµ|´Ú¡B¬ã¨s¶} µo¦¨¥»µ¥¦a¤è¡C ¦Ó¥B¡A°Ó·~¸ê®Æ®w»Ý¤ä¥I¯²ª÷©MÁʶR Unix ¾÷¾¹¡A¤è¸Ë©MºûÅ@¡C©Ò¦³³o¨Ç¦¨¥»³£ Âà¶ùµ¹¥Î¤á¡C ©M°Ó·~¸ê®Æ®w¬Û¤ñ¡APostgreSQL ¾Ö¦³µL»Ýª½±µµ|¶µªºÀuÂI¡A¦]¬°¥¦¬O¤¬Ápºô»s³y ¡C¤@¤j¸s¤H¬° PostgreSQL ªº¶}µo§@¥X­¶Äm¡C¨Ò¦p¡A¥H¤@­Ó°²³]ªº¨Ò¤l¡A¦pªG¦b ¬ü°ê¦³¤@¦Ê¸U¶¡¤½¥q¡A¦Ó¨C¶¡³£®½¤Q¬ü¤¸¡]¹ï PostgreSQL ¨Ó»¡ª«¶W©Ò­È¡^¡A¨C ¶¡«K±o¨ì¤@¤d¸U¤¸¡I¡I³o´N¬O¤¬Ápºô¤W³n¥ó¶}µoªºÅ]³N¡C ¥Ø«e¡APostgreSQL ·½µ{¦¡¦³¤j¬ù 200,000 ¦æ C¡BC++ µ{¦¡¡C¦pªG¨C¦æ C µ{¦¡½X ­È¤G¬ü¤¸¡A¤µ¤Ñ¾ã­Ó PostgreSQL «K­È¥|¤Q¸U¬ü¤¸¡I «Ü¦h¤½¥q¤w¶}µo¤j¶q C¡BC++ µ{¦¡¥H§@¦Û¥Î¡C¦]¦¹¡A¤Þ¤J PostgreSQL ·½µ{¦¡½X ©M»P¤¬Ápºô¤W¨ä¥L¤½¥q¦X§@·|¹ï¤½¥q±a¨Ó¤j¶q§Q¯q¡A¸`¬Ù®É¶¡©M¤H¤O¡C 26. ¨ä¥L¸ê®Æ®wªº¦W³æ ¥H¤U¦C¥X¨ä¥L Unix¡BLinux ªº SQL ¸ê®Æ®w¡C * ÂI¿ï¤Î¨ì¹F Applications->databases. [233]http://www.caldera.com/tech-ref/linuxapps/linapps.html * ÂI¿ï¤Î¨ì¹F Applications->databases. [234]http://www.xnet.com/~blatura/linapps.shtml * ¸ê®Æ®w¸ê·½ [235]http://linas.org/linux/db.html ³o¬O¥Ñ Linas Vepstas ¼g¦¨ªº¡C [236]linas@fc.net * ¦Û¥Ñ¸ê®Æ®w¦W³æ [237]http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html * Browne ªº RDBMS ¦W³æ [238]http://www.hex.net/~cbbrowne/rdbms.html ¥Ñ Christopher B. Browne ¼g¦¨¡C [239]cbbrowne@hex.net * SAL ÃöÁp¦¡ RDBMS ¦W³æ [240]http://SAL.KachinaTech.COM/H/1/ * SAL ªºª«¥óÃöÁp¦¡ DBMS ¦W³æ [241]http://SAL.KachinaTech.COM/H/2/ * SAL's ªº¤u¨ã©M¨ä¥L¸ê®Æ®w¦W³æ [242]http://SAL.KachinaTech.COM/H/3/ * ACM SIGMOD ¤½²³¥i¨ú±oªº¸ê®Æ®w³n¥ó¯Á¤Þ [243]http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/ 27. ¸Uºûºô·j´M´£¥Ü ¤¬Ápºô«D±`¼sÁï¡A¾Ö¦³¤j¶q³n¥ó©M¤U¤è¦³¤@­Ó¸ê°T®ü¬v¡C¥¦¦b¥þ¥@¬É¥H¨C¦~¦Ê¤À ¤§¤T¦Êªº³t«×¼Wªø¡C¾Ú¦ô­p¡A¥þ²y¦³¤j¬ù¤@¤d¸U­Óºô¯¸¡I ­n·j´M¸ê®Æ¡A§A»Ý­n¶®ªê¡Bºô´º¡BLycos µ¥·j´M¤ÞÀº¡C¥h¨ì¶®ªê¡AÂI¿ï search¡C ¨Ï¥Î¹LÂo¿ï¶µ (filtering options) ¨Ó¦¬¯¶§Aªº·j´M­n¨D¡C¹w³]ªº·j´M°Ê¥ó¬O ¡§Intelligent search¡¨¡A³o¤ñ¸û¤@¯ë¤Æ¤Î¦C¥X©Ò¦³¥i¯à©Ê¡CÂI¿ï¡§Options¡¨¿ï ¾Ü¡§EXACT phrase¡¨·j´M¡B¡§AND¡¨·j´M¡B¡§OR¡¨·j´Mµ¥µ¥¡C³o¼Ë§A¥i§ó§Ö§ä¨ì§A ·Q­nªº°T®§¡C¦¹¥~¡A¦b search ¥Ø¿ý¤U¡A¦³ radio buttons ¥Î¥H¿ï¾Ü·j´M·s»D²Õ ¡B¤¬Ápºô¯¸©Î¶®ªêºô¯¸¡C 28. µ²½× ¦b¬ã¨s¹L©Ò¦³¦Û¥Ñ©M¥i¨ú±o·½µ{¦¡½Xªº¸ê®Æ®w«á¡Aµo²{¨ì¥u PostgreSQL ¬O¥@¤W ³Ì¦¨¼ô¡B³Ì¦h¤H¨Ï¥Î©M¥þ­±ªº¦Û¥Ñ SQL RDMS¡]ª«¥óÃöÁp¦¡¡^¡C PostgreSQL «D±`§l¤Þ¡A¦]¬°¦³«Ü¦h¤u§@¤w§¹¦¨¡C¥¦¦³ ODBC ©M JDBC ÅX°Êµ{¦¡¡A ÄyµÛ³o¨Ç¡A½s¼g¿W¥ß©ó¸ê®Æ®wªºÀ³¥Îµ{¦¡ªº¥i¯à©Ê«Ü°ª¡C¥Î ODBC ©Î JDBC ÅX°Ê µ{¦¡¼gªº PostgreSQL À³¥Îµ{¦¡«Ü®e©ö²¾´Ó¨ì¨ä¥L¸ê®Æ®w¡A¦p Oracle¡BSybase ©M Informix¡A¤Ï¤§¥çµM¡C §A¥i¯à·|°Ý¡u¬°¤°»ò¥Î PostgreSQL¡H¡vµª®×¬O¦]¬°¥Ñ¹s¶}©l¶}µo¤@­Ó¸ê®Æ®w®ø¯Ó ¤j¶q®É¶¡¡A¿ï¾Ü¤@­Óº¡¨¬¥H¤U±ø¥óªº¸ê®Æ®w¨t²Î¦X¥G±`ÃÑ¡J ¤@­Ó * ¥i¨ú±o·½µ{¦¡½X¡X¥²¶·¬O¶}©ñµ{¦¡½X¨t²Î * ¨S¦³ªþ¥[±ÂÅv¦r¥y (license string)¡B¨S¦³¾Ö¦³Åv¦r¥y¡]Ķ«ö ¡JPostgreSQL ¬O GPL¡A¨Ã«DµL±Â Åv¨óij¡C¦pªG¨S¦³±ÂÅv¦r¥y¡A¨Ï¥Î¥¦«K¹H ªk¤F¡I¡^ * ¥i¦b¤¬Ápºô´²§G * ¤w¶}µo¦h¦~ * º¡¨¬ ISO/ANSI SQL 92¡]©M SQL 89¡^µ¥¼Ð·Ç * ¥iº¡¨¬¥¼¨Óªº»Ý­n¡A¦p SQL 3¡]SQL 98¡^ * ¾Ö¦³¥ý¶i¥\¯à ªº¸ê®Æ®w¨t²Î¡A ¦Ó¥u¦³ PostgreSQL º¡¨¬©Ò¦³³o¨Ç±ø¥ó¡A¦b³o±¡ªp¤U¬O¤@®M¾A·í ªº³n¥ó¡C 29. FAQ¡X¦³Ãö PostgreSQL ªº°ÝÃD ½Ð°Ñ¾\¤@¯ë©Ê¡BLinux ©M Irix ªº³Ì·sª© FAQ¡J * [244]http://www.postgresql.org/docs/faq-english.shtml 30. ª©Åv³qª¾ Copyright (c) 1997 Al Dev (Alavoor Vasudevan). All rights reserved. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall the author of this document be liable for any damages whatsoever (including without limitation, special, incidental, consequential, or direct/indirect damages for personal injury, loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of this document. Author offers no warranties or guarantees on fitness, usability, merchantability of this document. Brands, companies and product names mentioned in this document are trademarks or registered trademarks of their respective holders. Please refer to individual copyright notices of brands, companies and products mentioned in this document. It is your responsibility to read and understand the copyright notices of the organisations/companies/products/authors mentioned in this document before using their respective information. Appendix 31. ªþ¿ý¥Ò¡XANSI/ISO SQL 1992 »yªk ³oÀɮפ¤¥]¬A³o»y¨¥ªº BNF ¥H²`«×¬°¥ýªº¾ðª¬¼Ò±½ (depth-first tree traversal)¡A¤j¬ù ¦b 27-AUG-1992 11:03:41.64 §¹¦¨¡C³o­Ó¯S©wª©¥»©Ò¥Îªº BNF ¬O¥u¥Î ANSI ©M SQL2 ªº¡C ::= | ::= | | ::= | ::= 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 ::= 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 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= | | | | | | | | | | | | | | | | | | | | ::= !! (space character in character set in use) ::= " ::= % ::= & ::= ' ::= ( ::= ) ::= * ::= + ::= , ::= - ::= . ::= / ::= : ::= ; ::= < ::= = ::= > ::= ? ::= _ ::= | ::= | ::= [ ::= ] ::= | ::= | | | | | ::= ::= [ ( | )... ] ::= (!! See the Syntax Rules) ::= | ::= | ::= 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 ::= 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 ::= | ::= [ [ ] ] | ::= ... ::= E ::= ::= ::= [ ] ::= | ::= N [ ... ] [ ( ... [ ... ] )... ] ::= | ::= !! (See the Syntax Rules.) ::= ::= ( | | )... ::= [ ... ] ::= [...] ::= | ::= !! (implementation-defined end-of-line indicator) ::= B [ ... ] [ ( ... [ ... ] )... ] ::= 0 | 1 ::= X [ ... ] [ ( ... [ ... ] )... ] ::= | A | B | C | D | E | F | a | b | c | d | e | f ::= | |