BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: Numb (Âéľ), ÐÅÇø: Linux 
±ê  Ìâ: postgreSQL95°²×°Ê¹ÓÃ˵Ã÷ 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Fri Aug 28 16:13:15 1998) 
 
LinuxÉÏ µÄ ×Ê ÁÏ ¿â Èí Ìå -- Postgres95°² ×° Óë Ó¦ Óà(PostgreSQL Ver 6.0) 
 
 
 
±¾ ÎÄ ×÷ Õß £¯ ÖÜ¡¡Ê÷¡¡ºÌ 
ʲ ÷á ÊÇ Postgres95 ??½ü À´ Web ServerÓë ×Ê ÁÏ ¿â ½á ºÏ ÒÑ ³É Îª Ò» ÖÖ ±Ø È»  
µÄ Ç÷ ÊÆ ÁË £¬ ¸ö ¸ö ×÷ Òµ Ïµ Í³ ÉÏ µÄ ×Ê ÁÏ ¿â Èí Ì堶٠ʱ Ò² ¸ú Öø ÈÈ ÃÅ ÁË  
Æð À´ £¬ Àý Èç Ò» °ã ³£ ¼û µÄ Íø Â· ËѠѰ Òý Çæ £¬ Óë Ðí ¶à ¹« Ë¾ µÄ ´ó Á¿ µÄ  
×Ê ÁÏ ½Ô Ïë ÉÏ Íø £¬  
Éõ ÖÁ ÊÇ ×î ½ü ³£ Ìý µ½ µÄ IntranetµÈ µÈ £¬ ÎÞ Ëù ²» Óë ×Ê ÁÏ ¿â Ï࠹ؠ£¬ ·´  
¹Û LinuxÉÏ Æä Êµ Ôç ÔÚ ¶à Äê Ç° ÒÑ ÓРÐí ¶à ÄÜ ¹» Í¸ ¹ý Íø Â· À´ ´æ È¡ µÄ ×Ê  
ÁÏ ¿â Èí Ìå £¬ Postgres95¾Í ÊÇ Æä ÖР֮ Ò» ¡£ Èô ÊÇ ¼ò µ¥ µØ Ëµ £¬ Postgres95  
Æä Êµ ÊÇ Ò» Ì× ¡¸ ×Ê  
ÁÏ ¿â ¹Ü Àí Ïµ Í³ ¡¹ £¨ DataBase Management Systems£¬ Ò» °ã ³Æ ×ö DBMS£© £¬ Ê¹ 
 ÓàÕß ¿É ÒÔ ½å ÓÉ SQLÃü Áî Í¸ ¹ý Ëü À´ ´æ È¡ ×Ê ÁÏ ¿â µÄ ×Ê ÁÏ £¬ ²» µ« ¹¦ ÄÜ 
 Ç¿ ´ó ¶ø ÇÒ »¹ ÊÇ Ãâ ·Ñ µÄ ×Ê ÁÏ ¿â Èí Ìå £¬ Ä¿ Ç° ×î Ð °æ ±¾ ÒÑ ¸Ä Ãû Îª  
PostgreSQL v6.0¡£  
Postgres95°² ×° Óë Ó¦ Óà
±³ ¾° Àú Ê· Óë ÏÖ ¿ö  
Postgres95Ëù Ê¹ ÓàµÄ ×Ê ÁÏ ¿â ³Æ Îª Postgres£¬ Êµ ¼Ê ÉÏ Õý ÊÇ Postgres95Õý ÊÇ 
 ÓÉ Postgres×î ÖÕ Õý Ê½ °æ £¨ Ver 4.2£© ÑÝ ±ä ¶ø À´ µÄ £¬ ¶ø Postgres DBMSÔç  
ÔÚ 1986Ä꠾͠¿ª Ê¼ ·¢ Õ¹ ÁË £¬ Æä ÖР¾­ ¹ý ÁË Ðí ¶à ´Î µÄ °æ ±¾ ¸ü Ð £¬ ×î áá 
 ì¶ 1994Äê ÒÔ 4.2°æ  
Ϊ ×î ×î ÖÕ °æ ±¾ ½á Êø ¡£ Õâ Ð© Äê ¼ä PostgresµÄ Ó¦ Óà°ü À¨ Ðí ¶à ÑР¾¿ Óë  
²ú Æ· £¬ °ü À¨ ÁË ²Æ Îñ ·Ö Îö Ïµ Í³ £¬ Ò½ Ò© ×ʠѶ ×Ê ÁÏ ¿â £¬ Ó렵ؠÀí ×ʠѶ  
ϵ Í³ µÈ ¸÷ Àà ×Ê ÁÏ ¿â µÄ Ó¦ Óà¡¡ ´Ë Íâ »¹ Ôø ±» ¼¸ Ëù ´ó Ñ§ µ± ×ö ½Ì ²Ä £¬  
×î áá Éõ ÖÁ ÓÉ  
Illustra Information TechnologiesÒÔ Æä Îª »ù ´¡ ·¢ ÐРÁË ÉÌ Òµ °æ µÄ ×Ê ÁÏ ¿â  
Èí Ìå ¡£ Ì¸ Íê ÁË Postgres95µÄ Ç° Éí áá £¬ ÎÒ ÃÇ ¾Í À´ ÁË ½â Ò» Ï Ŀ Ç° µÄ  
Postgres95°É £¡ 
Postgres95Óë PostgresÓРÐí ¶à ²» Í¬ £¬ Ëü ¸Ä ±ä ÁË Ò» Ð© ÄÚ ²¿ µÄ ½á ¹¹ À´ ¸Ä  
ÉÆ Ô¼ 30%ÖÁ 50%µÄ Ð§ ÄÜ £¬ ³ý ÁË bug-fixesÍâ »¹ ×ö ÁË ÒÔ Ï ¼¸ µã ¸Ä Á¼ £º 
1.ÒÔ SQLÀ´ ´ú Ìæ Ô­ ±¾ µÄ POSTQUEL¡£  
2.Ìá ¹© ÁË Ò» ¸ö Ð µÄ ³Ì Ê½ £¨ psql£© À´ ÕÆ ¿Ø ×Ê ÁÏ ¿â £¨ Ö® áᠻᠽé ÉÜ £©  
¡£  
3.Ôö ¼Ó ÁË Ò» ¸ö Ð µÄ front-end libary£¨ libpgtcl£© £¬ À´ Ö§ Ô® Tcl-based  
client·¢ Õ¹ ³Ì Ê½ £¬ »¹ ÓРһ ¸ö ¼ò Ò× µÄ shell£¨ pgtclsh£© ¿É Èàʹ ÓàÕß ÒÔ  
Tcl commands Óë ×Ê ÁÏ ¿â ¹µ Í¨ ¡£ 
4.ÓÉ Ö§ Ô® BSD make¸Ä ³É GNU make£¬ Ëù ÒÔ Postgres95¿É ÒԠʹ ÓàgccÀ´ ±à Òï ¡£ 
  
ÌØ É«  ¡ñ ÊÇ Ò» ÖÖ ¹Ø Áª Ê½ µÄ ×Ê ÁÏ ¿â ¡£  
¡ñ ¾ß ÓР¸ß ¶È µÄ ÑÓ Õ¹ ÐÔ £¬ ÄÜ Èàʹ ÓàÕß ×Ô ¶¨ ÔË Ëã Ôª £¬ ¸÷ Àà Ð̬͠ £¬  
º¯ Êý Óë ´æ È¡ µÄ ·½ Ê½ ¡£ 
¡ñ Ö§ Ô® ¶à ÖÖ Óï ÑÔ API£¬ Èç C,TCL,PERL,PythonµÈ µÈ ¡£ 
¡ñ Áí Íâ ÓРЩ ¿É Óë Postgres95 ´î Åä Ê¹ ÓàµÄ Package ¿É ¹© Ê¹ Ó࣬ Èç Ï £º 
  
1£© Wdb-p95 ÊÇ Ò» Ì× Ìá ¹© WebÓë Postgres95Ö® ¼ä ¹µ Í¨ µÄ Ò» Ì× ½é Ã栳̠ʽ ¡£ 
  
2£© Japanese Kanji Code with Postgres95 ¿É ÈàÄ㠵ĠPostgres95Ö§ Ô® ÈÕ ÎÄ ËÑ  
Ѱ Óë ÔË Ëã ¡£  
¡ñ Ö§ Ô® ¶à Ö֠ƽ Ì¨ Èç Linux£¬ Alpha£¬ BSD£¬ NEXTSTEPµÈ µÈ ¡£ 
»ù ±¾ °² ×°  
Ôڠǰ ¼¸ ÆÚ ÎÒ ÃÇ Ôø ¾­ ÉԠ΢ ½é ÉÜ ¹ý archieµÄ Óà·¨ £¬ ÏÖ ÔÚ Òª ÕÒ  
Postgres95Ò² ÊÇ Ö» Òª Àû ÓàarchieËѠѰ Ò» Ï postgresÕâ ¸ö ¹Ø ¼ü ×Ö ¾Í ¿É ÒÔ  
ÕÒ µ½ Ðí ¶à °æ ±¾ µÄ ÁË £¬ »ò ÊÇ Ö± ½Ó µ½ ftp://ftp.postgreSQL.org/pub/postgre 
sql-v6.0.tar.gz×¥ »Ø £¬ ¶ø  
Ä¿ Ç° ×î ½ü °æ ±¾ ÊÇ PostgreSQL 6.0£¬ ×¥ »Ø áá Çë ì¶ /usr/srcÖР½¨ Á¢ Ò» pgsql 
Ä¿ Â¼ £¬ ²¢ ½« ´Ë µµ ÒÆ ÖÁ ´Ë Ä¿ Â¼ ÖРÔÙ tar xvzf postgres95-1.09.tar.gz½â ¿ª 
 £¬ ½â ¿ª Ö® áá ÎÒ ÃÇ ¾Í Òª ¿ª Ê¼ ×ö compileµÄ ¶¯ ×÷ ÁË £¬ ²½ Öè Èç Ï £º  
% cd src 
% customize 
ÒÔ Ï Ϊ customize»­ Ãæ  
Welcome to the PostgreSQL V6.0 cutomisation utility 
. You may build PostgreSQL for one of the following systems 
aix IBM on AIX 3.2.5 
alpha DEC Alpha AXP on OSF/1 2.0 
BSD44_derived OSs derived from 4.4-lite BSD £¨ NetBSD, FreeBSD£©  
bsdi BSD/OS 2.0, 2.01, 2.1 
dgux DG/UX 5.4R3.10 
hpux HP PA-RISC on HP-UX 9.0 
i386_solaris i386 Solaris 
irix5 SGI MIPS on IRIX 5.3 or better 
linux Intel x86 on Linux 1.2 and Linux ELF 
nextstep Motorola MC68K or Intel x86 on NeXTSTEP 3.2 
sparc_solaris SUN SPARC on Solaris 2.4 
sunos4 SUN SPARC on SunOS 4.1.3 
svr4 Intel x86 on Intel SVR4 
ultrix4 DEC MIPS on Ultrix 4.4 
Enter port name: linux 
Is this an ELF system? £¨ y/n£© [y] 
Where do you wish to install Postgres [/usr/local/pgsql]? 
Where are the IPCS utilities stored [/usr/bin]? 
Compile C++ library? £¨ y/n£© [n] 
Compile Tcl utilities? £¨ y/n£© [n] 
Which BSD-compatible Install utility do you wish to use? 
Under Irix the default will chown all your installed files 
to root, so you are recommended to obtain ginstall 
Enter program name: [system default] Where 
Do you wish the psql program to use the GNU readline library? £¨ y/n£© [n] 
Specify C compiler: [cc] gcc 
Specify any custom C compilation flags: [none] 
You may choose to switch off assert checking. This will speed the 
program up, but may miss some potentially fatal bugs! 
Switch off assert checking £¨ y/n£© [n] 
----------------------------------------------------------------- 
Èô Äú ¸ú ±Ê Õß Ò» Ñù ÊÇ CµÄ °® ºÃ Õß £¬ »ù ±¾ ÉÏ Ö» Ðè Òª Êä Èë Enter port  
name£º linuxÓë Specify C compiler£º [cc] gccÕâ Á½ Ïî £¬ Æä Óà °´ enterÒÔ ÄÚ ¶¨ 
 Öµ ¼´ ¿É ¡£ ÔÙ À´ Äú ¿É ÒÔ ÏÈ ÊÔ Öø Ï makeÖ¸ Áî À´ ±à Òë ¿´ ¿´ £¬ Èô ÓР´í  
Îó Ñ¶ Ï¢ Çë ÏÈ ²é ¿´  
docÄ¿ Â¼ ÖРµÄ FAQ-Linux µµ °¸ £¬ ´ó ²¿ ·Ý ÎÊ Ì⠵Ġ½â ¾ö ·½ ·¨ ¾Í ÔÚ Æä ÖРภ
 £¡ ÌÈ Èô ¶¼ ÓРÎÞ ·¨ ½â ¾ö µÄ ÎÊ Ìâ ·¢ Éú Ê± £¬ Çë ½« Makefile.custom É¾ ³ý  
£¬ ÔÙ ÐÞ ¸Ä Makfile.globalÖРµÄ PORTNAME= UNDEFINED¸Ä ³É PORTNAME=linuxÖ® áá  
ÔÙ makeÊÔ ÊÔ ¿´ £¡  
Áí Íâ ¸½ ´ø Ëµ Ã÷ Ò» Ï £¬ Õâ ¸ö makeµÄ ¶¯ ×÷ Èô ÔÚ P-133Ï Լ Òª Ê® ·Ö ÖÓ µÄ  
ʱ ¼ä £¬ ´ó ¼Ò ¿É ÒÔ ÏÈ ¼Ì Ðø ¿´ Ï һ ¶Î ¡£  
Õû Ì堼ܠ¹¹  
ÒÔ ÉÏ ´ó ÂÔ ½é ÉÜ Íê Postgres95 áá £¬ ½Ó Ï À´ ÎÒ ÃÇ ¾Í Òª ½ø Èë Õý Ìâ ÁË £¬  
Ê× ÏÈ ¾Í ÊÇ Òª ¶Ô Postgres95µÄ Õû Ìå ÔË ×÷ ¼Ü ¹¹ ÓРһ ·¬ »ù ±¾ µÄ ÈϠʶ £¬ Ö® 
 áá ÎÒ ÃÇ ²Å ÄÜ ¾¡ Ç頵ؠʹ ÓàËü À´ Í꠳ɠÎÒ ÃÇ µÄ ×Ê ÁÏ ¿â Ïµ Í³ ¡£ 
Postgres95É蠼ƠÊÇ Ò» ÖÖ ¨ process per-user£¢ client/server model£¬ Ò² ¾Í ÊÇ  
ÿ Î» Óë Postgres95 Ïà Á¬ Ïß µÄ client¶Ë Ê¹ ÓàÕß ½Ô ÓР×Ô ¼º µÄ processì¶  
Server¶Ë Ö´ ÐР£¬ Ö± µ½ Àë Ïß áá process²Å »á Ïû Ê§ ¡£ Server¶Ë µÄ Ò» ¸ö  
daemon³Ì Ê½ ½Ð ×ö  
postmaster£¬ Õâ ¸ö daemon»á ÒÀ ÕÕ /usr/local/pgsql/lib/pg_hba.conf.sampleµÄ ÄÚ 
 ÈÝ À´ ¸º Ôð fork³ö Ð µÄ proccessÀ´ Óë Ð µÄ Á¬ Ïß ¹µ Í¨ £¬ ê ÷á ÎÒ ÃÇ ¸Ã Èç  
ºÎ Ð´ ³ö ¿É ÒÔ ºÍ postmaster¹µ Í¨ µÄ ³Ì Ê½ ÄØ £¿ Õâ Ê± ¾Í ±Ø Ðë Ê¹ Óà 
Postgres95Ìá ¹© µÄ Ò» Ì×  
LIBPQµÄ libraryÀ´ ×« Ð´ ³Ì Ê½ ÁË ¡£ £¨ Ïê Ï¸ µÄ ³Ì Ê½ ·¶ Àý ´ý áá Ð𠣩 ÒÔ Ï  
ÊÇ Postgres95»ù ±¾ ÔË ×÷ µÄ Ê¾ Òâ Í¼ £º  
Client Server 
Ó¦ Óà³Ì Ê½ -$ LIBPQ £¼ -------£¾ postermaster 
½é ÉÜ Íê ÁË ³Ì Ê½ ÔË ×÷ µÄ ¹ý ³Ì áá £¬ ¸Ã À´ Ëµ Ã÷ Ò» Ï Postgres95µÄ µµ °¸ ¼Ü 
 ¹¹ ÁË £º  
£¨ Èç Ï ͼ £©  
/usr/local/pgsql/  
|----------- lib        £¨ ½¨ Á¢ ×Ê ÁÏ ¿â Ê± »á Ê¹ Óൽ µÄ Ò» Ð© Ô¤ Éè Éè ¶¨  
µµ £©  
|----------- bin £¨ Ö´ ÐР³Ì Ê½ Ëù ÔÚ £©  
|----------- include    £¨ LIBPQ library£©  
|----------- man £¨ man document£©  
|----------- data £¨ Êµ ¼Ê ´æ ·Å ×Ê ÁÏ ¿â Ä¿ Â¼ £© 
ÒÔ ÉÏ data/pg_hba.confÊÇ Ò» ¸ö Éè Íø Â· ´æ È¡ ×Ê ÁÏ ¿â È¨ ÏÞ µÄ Éè ¶¨ µµ °¸ £¬ 
 ¿É ÐÞ ¸Ä Æä ÖРÄÚ ÈÝ À´ ·À Ö¹ Æä Ëû ÈË À´ ´æ È¡ Äú µÄ Ä³ Ð© ×Ê ÁÏ ¿â £¬ ÐÞ ¸Ä 
 ·½ Ê½ Ç렲ΠÔÄ Æä µµ °¸ ÖРµÄ ×¢ ½â Ëµ Ã÷ £¬ Ò² Ðí Äú ¸Õ ¿ª Ê¼ »¹ Ã» ÓРdata 
Õâ ¸ö Ä¿ Â¼ £¬ ê ÊÇ  
Õý ³£ µÄ £¬ ±Ø Ðë ×ö Íê Ï һ ½Ú µÄ Æô Ê¼ ×Ê ÁÏ ¿â ¶¯ ×÷ áá £¬ ²Å »á ²ú Éú ´Ë  
Ò» Ä¿ Â¼ ¡£ 
Éè ¶¨ »· ¾³ ±ä Êý Óë Æô Ê¼ ×Ê ÁÏ ¿â Óëpostmaster  
Òò Îª Postgres95³Ì Ê½ ÎÞ ·¨ ÒÔ rootÀ´ Æô ¶¯ £¬ ¶ø ±Ø Ðë ½¨ Á¢ Ò» ¸ö Ð µÄ ÕÊ  
ºÅ À´ ×ö Îª Postgres95µÄ ¹Ü Àí ÕÊ ºÅ £¬ ÒÔ Ï ±Ê Õß Ôò ÊÇ ÓàpostgresΪ ´Ë Ò»  
ÕÊ ºÅ ¡£ ³ý ´Ë Íâ »¹ ±Ø Ðë Éè ¶¨ ºÃ »· ¾³ ±ä Êý £¬ Çë ¶Á Õß ÃǠǧ Íò ¿É ±ð ÉÙ  
ÁË Õâ ¸ö ¶¯ ×÷ à¸  
£¡ ²» È» ¾Í ¸ú ±Ê Õß Ò» Ñù °× »¨ ÁË ÀÏ °ë Ì젵Ġʱ ¼ä È´ ²» Öª µÀ ´í ÔÚ ê Àï  
ÁË £¬ Ò² Ðí ÊÇ Òò Îª ³Ì Ê½ ±¾ Éí É蠼ƠµÄ ¹Ø Ïµ £¬ Ò» ¶¨ Òª °Ñ PATHÉè ¶¨ ºÃ áá 
 £¬ postmaster²Å ÄÜ Õý ³£ µØ Ö´ ÐР¡£ ¶ø Éè ¶¨ »· ¾³ ±ä Êý µÄ ·½ Ê½ ÓРÁ½ ÖÖ  
£¬ µÚ Ò» ÖÖ ÔÚ  
postgresÕâ ¸ö ¹Ü Àí ÕÊ ºÅ µÄ home directoryÖР½¨ Á¢ Ò» .loginµÄ µµ °¸ £¬ µµ °¸ 
 ÄÚ ÈÝ ÊÇ set path=£¨ /usr/local/pgsql/bin£¾ path£© ²¢ ÖؠРÒÔ postgresÀ´  
login£¬ µÚ ¶þ ÖÖ ·½ Ê½ Ôò ÊÇ ì¶ shell commandÏ  
% PATH=/usr/local/pgsql/bin:£¾PATH 
% export PATH 
Èç ´Ë ±ã Í꠳ɠÁË »· ¾³ ±ä Êý µÄ Éè ¶¨ ÁË ¡£ ÔÙ À´ ÎÒ ÃÇ ¾Í ÊÇ ¸Ã ×ö Æô Ê¼ ×Ê  
ÁÏ ¿â µÄ ¶¯ ×÷ ÁË £¬ ²» ¹ý Ê× ÏÈ Çë È· ¶¨ /usr/local/pgsqlÄ¿ Â¼ ÖРµÄ Ëù ÓРµµ 
 °¸ Óë Ä¿ Â¼ µÄ ownerÊÇ ·ñ Îª postgres£¬ Èô ²» ÊÇ Çë Ï  
% cd /usr/local 
% chown -R postgres /usr/local/pgsql 
À´ ¸ü ¸Ä ownerΪ postgres£¬ ¸ü ¸Ä Íê áᠲŠ¿ª Ê¼ ÏÂ Ãæ Ö¸ Áî ÒÔ Æô Ê¼ ×Ê ÁÏ ¿â 
 £¬  
%initdb--pglib=/usr/local/pgsql/lib--pgdata=/usr/local/pgsql/dataupostgres 
^^^^^^^^^^ Îª ´Ë Ò» Ð ½¨ Á¢ Ö® ×Ê ÁÏ ¿â Ö® owner ÕÊ ºÅ Èô Äú µÄ »· ¾³ ±ä Êý  
Óë ¸÷ Ïî Éè ¶¨ Õý È· £¬ Ó¦ ¸Ã ²» »á ¿´ µ½ ÈΠºÎ ´í Îó Ñ¶ Ï¢ £¬ ´Ë Ê± ³Ì Ê½ Õý  
ÔÚ °ï Äú ×ö Æô Ê¼ ×Ê ÁÏ ¿â µÄ ¹¤ ×÷ £¬ µ± ×Ê ÁÏ ¿â Æô Ê¼ Í꠳ɠ֮ áá £¬ Äú ¾Í  
¿É ÒÔ  
%postmaster-D/usr/local/pgsql/data£¾ & pm.log & À´ Æô ¶¯ Äú µÄ postmaster  
daemonÁË £¬ Äú ¿É ÒÔ Ï ָ Á頿´ ÊÇ ·ñ ÈÔ ÔÚ Ö´ ÐР£¬ % ps aux|grep  
postmaster »ò ÊÇ cat pm.log¿´ ¿´ ÊÇ ·ñ ÓР´í Îó Ñ¶ Ï¢ ²ú Éú ¡£  
×Ê ÁÏ ¿â Ê¹ ÓàÕß ¹Ü Àí  
µ± ÎÒ ÃÇ Æô Ê¼ »¯ Í꠳ɠһ ¸ö ×Ê ÁÏ ¿â Ê± £¬ ÎÒ ÃÇ ±Ø Ðë Éè ¶¨ ÓРê Ð© Ê¹ Óà 
Õß ¿É ÒÔ À´ ´æ È¡ ÎÒ ÃÇ µÄ ×Ê ÁÏ ¿â £¬ Õâ Ê± ¾Í Ê¹ ÓàcreateuserÖ¸ Áî À´ Ð Ôö 
 Ò» ¸ö ×Ê ÁÏ ¿â µÄ Ê¹ ÓàÕß £¬ ·¶ Àý Èç Ï £º 
% createuser 
Enter name of user to add ---£¾ skytree 
Enter user£§ s postgres ID or RETURN to use unix user ID£º 0 -£¾ 
Is user ¨ skytree£¢ allowed to create databases £¨ y/n£© y 
Is user ¨ skytree£¢ allowed to add users£¿ £¨ y/n£© y 
createuser£º skytree was successfully added 
×Ê ÁÏ ¿â Óï ÑÔ -SQL 
ʲ ÷á ÊÇ SQL £¿  
Ϊ ÁË Ò» Ð© ²» Ôø Ê¹ Óà¹ý ×Ê ÁÏ ¿â µÄ ¶Á Õß ÄÜ ¹» ¿´ ¶® ½Ó Ï À´ µÄ ÄÚ ÈÝ £¬  
±Ê Õß ¾Í ÔÚ ´Ë Îª SQL×ö Ò» ·¬ ¼ò µ¥ µÄ ½é ÉÜ £¬ SQL£¨ Structured Query  
Language£© ÊÇ Ò» Ö֠Ϊ ÁË Óë ×Ê ÁÏ ¿â ×ö ¹µ Í¨ Ëù É蠼ƠµÄ Ò» ÖÖ ²é Ñ¯ Óï ÑÔ  
£¨ Êµ ¼Ê ÉÏ ²» ½ö ÓР²é Ñ¯  
¹¦ ÄÜ ¶ø ÒÑ £© £¬ Õâ Ì× Óï ÑÔ ÓРºÜ ¼ò µ¥ µÄ Óï ·¨ Óë ¸ñ Ê½ £¬ Ê¹ ÓàÕß ¿É ÒÔ  
ÓàSQL¶Ô ×Ê ÁÏ ¿â ÀĠ×Ê ÁÏ ×ö Ð Ôö £¬ ÐÞ ¸Ä £¬ É¾ ³ý £¬ Ìõ ¼þ ²é Ñ¯ µÈ ¸÷  
ÖÖ ×Ê ÁÏ ¿â µÄ Êä ³ö Èë ¶¯ ×÷ ¡£ 
Ö§ Ô® µ½ SQLµÄ °æ ±¾  
Postgres95Ö§ Ô® SQL-92£¨ SQLµÄ Ò» ÖÖ ±ê ×¼ £© £¬ µ« ÊǠȱ ÉÙ Ò» Ð© ¹¦ ÄÜ £¬ ×î 
 Ã÷ ÏÔ µÄ Á½ Ñù ²î ±ð ¾Í ÊÇ £º Ò» £© ²» Ö§ Ô® ³² ×´ µÄ subquery ¶þ £© ÔÚ  
GROUP BY Àï ²» Ö§ Ô® HAVING×Ó ¾ä ¡£ 
Ö§ Ô® SQL Ãü Áî ÁР±í 
ABORT TRANSACTION, ALTER TABLE, BEGIN TRANSACTION,CHANGE ACL, CLOSE, COPY,  
CREATE AGGREGATE, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE  
OPERATOR, CREATE RULE, CREATE TABLE, CREATE TYPE, CREATE VERSION,CREATE VIEW,  
DECLARE, DELETE, DROP  
AGGREGATE, DROP DATABASE,DROP FUNCTION, DROP INDEX, DROP OPERATOR, DROP RULE,  
DROP TABLE, DROP TYPE, DROP VIEW, END TRANSACTION,EXTEND INDEX,FETCH,  
GRANT,INSERT, LOAD,PURGE, REVOKE,SELECT, UPDATE,VACUUM.  
»ù ±¾ µÄ ×Ê ÁÏ ¿â ¹Û Äî  
½Ó Öø Òª ½² µÄ ÊÇ ¹Ø ì¶ Ò» Ð© ×Ê ÁÏ ¿â µÄ »ù ±¾ ¹Û Äî £¬ ºÃ ¼¸ Äê ¶¼ Ã» ±ä ¹ý  
µÄ ¹Û Äî £¬ ´ó ÂÔ µÄ ¼Ü ¹¹ Èç Ï ͼ Ëù Ê¾ £º 
/usr/local/pgsql/data 

|-- database1 
| |----- table1 
| | |---- record1 
| | | |----- field1 
| | | |----- field2 
| | | |----- etc. 
| | |----- record2 
| | |----- etc. 
| |----- table2 
| |----- etc. 
|-- database2 
|-- etc.  
¼ò µ¥ µØ Ëµ ¾Í ÊÇ £¬ ÎÒ ÃÇ Ëù ½¨ Á¢ µÄ Ò» ¸ö database Àï °ü º¬ ÁË Ò» ¸ö ÒÔ ÉÏ  
µÄ table£¬ ¶ø table¿É ÒÔ Ïë Ïñ ³É ÊÇ Ò» ÕÅ ÕÅ µÄ ±¨ ±í ¼Í Â¼ £¬ Õâ ÕÅ ±¨ ±í Êµ 
 ¼Ê ÉÏ ÊÇ ÓÉ Ðí ¶à ±Ê ×Ê ÁÏ £¨ record£© Ëù ¹¹ ³É µÄ £¬ ¶ø Ã¿ Ò» ±Ê record¿É ÄÜ 
 »á °ü º¬ ÁË Ò» ¸ö  
ÒÔ ÉÏ µÄ ×Ê ÁÏ À¸ Î» £¨ field£© ¡£ ½¨ Á¢ Ä㠵ĠµÚ Ò» ¸ö database 
ºÃ ²» ÈÝ Ò× ¿´ µ½ Õâ £¬ ÏÈ ÐݠϢ Ò» Ï ºÈ ¿Ú Ë® °É £¡ ½Ó Ï À´ ÎÒ ÃÇ ¾Í Òª ¿ª  
ʼ Ê× ¶È ½¨ Á¢ ÎÒ ÃÇ µÄ database ÂÞ £¡ 
% createdb mydb 
½¨ Á¢ ºÃ áá ²¢ ²» »á ÓРʲ ÷á Ñ¶ Ï¢ »Ø Ó¦ £¬ ½Ó Ï À´ ÎÒ ÃÇ Ï ָ Áî  
% psql mydb 
Welcome to the POSTGRESQL interactive sql monitor: 
Please read the file COPYRIGHT for copyright terms of POSTGRESQL 
type \£¿ for help on slash commands 
type \q to quit 
type \g or terminate with semicolon to execute query 
You are currently connected to the database£ºmydb 
mydb=£¾  
¾Í ¿É ÒÔ Ö± ½Ó Óë ÎÒ ÃÇ ¸Õ ½¨ Á¢ ºÃ µÄ database×ö ¹µ Í¨ ÂÞ £¡ Äã ¿É ÒÔ Ï SQL 
Ãü Áî À´ Ö± ½Ó ´æ È¡ mydbµÄ ×Ê ÁÏ £¬ ¼Ç µÃ ÒÔ \g»ò ÊÇ £» ½á Î² ²Å »á ¿ª Ê¼ Ö´  
ÐРภ£¡ Áí Íâ ¿É Ï \hÀ´ ²é ¿´ SQLÃü Áî ÁР±í £¬ \q¼´ Àë ¿ª psql¡¡ ÏÖ ÔÚ ÎÒ  
ÃÇ ¿É ÒÔ À´ Ï Щ  
SQLÃü Áî À´ ×ö Ð© ²â ÊÔ £¬ ¿´ ¿´ ÎÒ ÃÇ ¼Ü ºÃ µÄ postmasterÊÇ ·ñ ¿É ÒÔ Õý ³£ ÔË 
 ×÷ ÁË £º 
mydb=£¾ CREATE TABLE message £¨ 
mydb-£¾ username varchar£¨ 20£© , 
mydb-£¾ age int, 
mydb-£¾ say varchar£¨ 255£©  
mydb-£¾ £© £»  
ÒÔ ÉÏ SQLÃü Áᠽ¨ Á¢ Ò» ¸ö Ãû ½Ð messageµÄ table£¨ ±¨ ±í £© £¬ ¶ø Õâ ·Ý ±¨  
±í ÖРµÄ À¸ Î» ¹² ÓРÈý Ïî £¬ ·Ö ±ð ÊÇ  
1.username×󠳤 ¶È Îª 20¸ö ×Ö Ôª £¬  
2.ageΪ Ò» Õû Êý £¬  
3.say×󠳤 ¶È Îª 255¸ö ×Ö Ôª £¬ ½¨ Á¢ ºÃ tableÖ® áá £¬ ÎÒ ÃÇ ¾Í ¿É ÒÔ ¿ª Ê¼ 
 Êä Èë Ò» ±Ê ±Ê µÄ ×Ê ÁÏ ÁË £º  
mydb=£¾ INSERT INTO message 
mydb-£¾ VALUES£¨ £à skytree£§ ,20,£§ Hello,world!  
I am skytree!£§ £©  
mydb-£¾ £»  
Õâ ÀĠINSERT INTOÊÇ SQLÃü Áî £¬ Òâ Ë¼ ¾Í ÊÇ ¼Ó Èë Ò» ±Ê ×Ê ÁÏ µ½ messageÕâ  
¸ö tableÖ® ÖР£¬ ¶ø VALUESáá À¨ ºÅ ÖРµÄ ÄÚ ÈÝ Ôò ÊÇ ´ú ±í Ã¿ ¸ö À¸ Î» µÄ Öµ  
£¬ ÒÔ ¶º ºÅ À´ ·Ö ¸ô ¸÷ À¸ Î» £¬ À¸ Î» µÄ Ð̬͠ Èô ÊÇ ×Ö ´® Çë ÒÔ £à £§ À¨ Æð  
À´ £¬ Èô ÊÇ Êý Öµ  
Ôò ²» Óà¡£ Õâ Ñù ÎÒ ÃÇ ½¨ Á¢ ºÃ µÄ message tableÖР¾Í ÓРһ ±Ê ×Ê ÁÏ ÁË £¬ ê  
÷á ½¨ Á¢ ºÃ µÄ ×Ê ÁÏ ¸Ã È砺Π²é Ñ¯ ÄØ £¿ 
mydb=£¾ SELECT * FROM message WHERE  
username=£à skytree£§  
mydb-£¾ £» 
½á ¹û £º  
username|age|say 
--------+---+-------------------------- 
skytree | 20|Hello,world! I am skytree! 
£¨ 1 row£©  
ÔÚ SQLÃü Áî Ö® ÖР£¬ ÊÇ ÒÔ SELECTÃü Áî À´ ²é Ñ¯ ×Ê ÁÏ À¸ Î» µÄ ¡£ ÉÏ Ãæ µÄ Ãü  
Áî Òâ Ë¼ ÊÇ ¡¸ ´Ó messageÖРËѠѰ ³ö Ëù ÓРusernameÊÇ skytreeµÄ Ã¿ Ò» ±Ê ×Ê ÁÏ 
 £¬ ÔÙ ½« ·û ºÏ Õâ Ïî Ìõ ¼þ µÄ Ëù ÓРÀ¸ Î» ¶¼ ×¥ ³ö À´ ¡¹ £¬ ÐÇ ºÅ £¨ *£© ¾Í  
ÊÇ ±í Ê¾ Ëù ÓРÀ¸  
λ £¬ Ï Íê Ãü Áî Ö® áᠾ͠»á ²ú Éú Ò» ·Ý ½á ¹û µÄ ÁР±í ¡¡ Ñ§ »á ÁˠРÔö Óë  
²é Ñ¯ ×Ê ÁÏ £¬ µ± È» ²» ÄÜ Íü Áˠɾ ³ý ×Ê ÁÏ µÄ ¹¦ ÄÜ ÂÞ £¡  
mydb=£¾ DELETE FROM message WHERE  
username=£§ skytree£§  
mydb-£¾ £»  
Òâ Ë¼ ÊÇ ¡¸ ´Ó messageÖРËѠѰ ³ö Ëù ÓРusername ÊÇ skytreeµÄ Ëù ÓР×Ê ÁÏ £¬  
²¢ ÇÒ ½« Õâ Ð© ±Ê ×Ê ÁϠɾ ³ý ¡¹ £¬ Ö´ ÐРÍê áá ¿É ÒÔ Ï  
mydb=£¾ SELECT * FROM message 
mydb-£¾ £»  
À´ ²é ¿´ messageÖРµÄ Ëù ÓР×Ê ÁÏ £¬ Òò Îª Ö® Ç° ÎÒ ÃÇ Ö» ¼Ó Èë ÁË Ò» ±Ê ×Ê ÁÏ 
 £¬ ¶ø ¸Õ ¸Õ ÓÖ ½« Õ⠱ʠ×Ê ÁÏ ¸ø É¾ ³ý ÁË £¬ Ëù ÒÔ ½á ¹û Ó¦ ¸Ã Èç Ï £º 
username|age|say 
--------+---+--- 
£¨ 0 rows£© 
Æä Êµ SQL»¹ ÓРÐí ¶à ¹¦ ÄÜ £¬ ÓРÐˠȤ µÄ ¶Á Õß ¿É ÒÔ ×Ô ÐРÑР¾¿ ¿´ ¿´ £¬ ÒÔ  
ÉÏ Õâ ¼¸ ÖÖ SQLÃü Áî ÊÇ ×î ³£ Óൽ µÄ ÁË ¡£ 
C,C++,Perl,Tcl,Python API 
psqlµÄ ¹¦ ÄÜ Ö÷ Òª ÔÚ ì¶ ¿É ÒÔ Ö± ½Ó Óë ×Ê ÁÏ ¿â ¹µ Í¨ £¬ ×ö ¹Ü Àí µÄ ¹¤ ×÷ £¬ 
 µ« ÊÇ Èô ÎÒ ÃÇ Ðè Òª Í¸ ¹ý Æä Ëû µÄ ·½ Ê½ À´ ´æ È¡ ×Ê ÁÏ ¿â Ê± £¬ ¾Í ±Ø Ðë ×Ô 
 ÐРÉ蠼ƠӦ Óà³Ì Ê½ À´ ºô ½Ð Postgres95Ëù Ìá ¹© µÄ Ò» Ð© APIÁË £¬ Àý Èç £º  
͸ ¹ý CGI ³Ì Ê½ À´  
´æ È¡ ×Ê ÁÏ ¿â £¬ ê ÷á APIÓÖ ÊǠʲ ÷á ÄØ £¿ 
API£¨ Application Programing Interface£© ·­ ³É ÖРÎÄ ¾Í ÊÇ ¡¸ Ó¦ Óà³Ì Ê½ Éè  
¼Æ ½é Ãæ ¡¹ £¬ ¼ò µ¥ µØ Ëµ ¾Í ÊÇ Ò» Ì× Ìá ¹© Óë Æä Ïµ Í³ ¹µ Í¨ µÄ º¯ Ê½ ¿â £¬  
¿É Èà³Ì Ê½ É蠼Ơʦ À´ Ö± ½Ó È¡ Ó࣬ ¼õ ÉÙ ³Ì Ê½ É蠼Ơʦ ¿ª ·¢ ³Ì Ê½ µÄ Ê±  
¼ä Óë ¸´ ÔÓ ¶È ¡£  
¶ø Postgres95±¾ Éí Ìá ¹© ÁË Ðí ¶à ²» Í¬ ³Ì Ê½ Óï ÑÔ µÄ API¿É ¹© ÎÒ ÃÇ Àû Ó࣬ 
 ÒÔ Ï ½« ½é ÉÜ C API µÄ ºô ½Ð Óë Ëµ Ã÷ £º 
Ê× ÏÈ Òª ÏÈ ½é ÉÜ Ò» Ð© »· ¾³ ±ä Êý £º 
PGHOST = ËÅ ·þ Æ÷ µÄ Ãû ³Æ 
PGOPTION = ¸ø POSTGRES backend ³Ì Ê½ µÄ ²Î Êý  
PGPORT = Óë POSTGRES backend ³Ì Ê½ Á¬ Ïß µÄ ÄÚ Éè port PGTTY = ÓÉ POSTGRES  
backend ³Ì Ê½ Ëù ´« À´ µÄ ³ý ´í Ñ¶ Ï¢ £¬ ¿É Îª Ò» ¸ö µµ °¸ »ò ÊÇtty 
PGDATABASE = ÄÚ ¶¨ µÄ POSTGRES database name 
½Ó Öø ÊÇ Õâ Ì× C APIÖРËù Ìá ¹© µÄ ¸÷ Ïî º¯ Êý µÄ Ê¹ ÓàÓë ½é ÉÜ £¬ 
Ò» ¡¡ Óë ServerÁ¬ Ïß Ï࠹ؠº¯ Êý  
PQsetdb  
Óï ·¨ £º PGconn *PQsetdb£¨ char *pghost,char *pgport, char *pgoptions,char  
*pgtty, char *dbName£© £»  
¹¦ ÄÜ £º Óë Server½¨ Á¢ Á¬ Ïß 
˵ Ã÷ £º Èô ÊÇ ÒÔ ÉÏ ´« È렵Ġ¸÷ Ïî Öµ ½Ô Îª null£¬ Ôò »á ÏȠȥ ËѠѰ ÉÏ Ãæ Ëù 
 ½é ÉÜ µÄ »· ¾³ ±ä Êý À´ ´ú »» £¬ Èô ÊÇ Á¬ »· ¾³ ±ä Êý ¶¼ Î´ Éè ¶¨ £¬ Ôò ½« »á 
 Ê¹ Óàϵ Í³ ±¾ Éí µÄ Ô¤ Éè Öµ ÁË ¡£ PQdb 
Óï ·¨ £º char *PQdb£¨ PGconn *conn£© £»  
¹¦ ÄÜ £º ´« »Ø Ä¿ Ç° Á¬ Ïß ÖРËù Ê¹ ÓàµÄ database name 
Pqhost  
Óï ·¨ £º char *PQhost£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º ´« »Ø Ä¿ Ç° Õý ÔÚ Á¬ Ïß ÖРµÄ Ö÷ »ú Ãû ³Æ  
Pqoptions  Óï ·¨ £º char *PQoptions£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º ´« »Ø ´Ë Ò» Á¬ Ïß Ëù Ê¹ ÓàµÄ pgoption Öµ  
Pqport  
Óï ·¨ £º char *PQport£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º ´« »Ø ´Ë Ò» Á¬ Ïß Ëù Ê¹ ÓàµÄ pgportÖµ  
Pqtty 
Óï ·¨ £º char *PQtty£¨ PGconn *conn£© £»  
¹¦ ÄÜ £º ´« »Ø ´Ë Ò» Á¬ Ïß Ëù Ê¹ ÓàµÄ pgttyÖµ  
Pqstatus  
Óï ·¨ £º ConnStatusType *PQstatus£¨ PGconn *conn£© £»  
¹¦ ÄÜ £º ´« »Ø Ä¿ Ç° Á¬ Ïß µÄ ×´ Ì¬  
˵ Ã÷ £º ´« »Ø Öµ ÓРÁ½ ÖÖ £¬ CONNECTION_OK»ò ÊÇCONNECTION_BAD¡£  
PQerrorMessage 
Óï ·¨ £º char*Pqerr orMessage£¨ PGconn*conn£©£»  
¹¦ ÄÜ £º ´« »Ø ´Ë Ò» Á¬ Ïß ÖРËù ²ú Éú µÄ ´í Â¼ Ñ¶ Ï¢ 
Pqfinish 
Óï ·¨ £º void PQfinish£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º ¹Ø ±Õ Á¬ Ïß  
˵ Ã÷ £º ³ý ÁË ¹Ø ±Õ Á¬ Ïß Íâ £¬ »¹ »á ½« Á¬ Ïß Ëù Õ¼ Óà֮ ¼Ç Òä Ìå ÊÍ ·Å ³ö  
À´ ¡£  
Pqreset 
Óï ·¨ £º void PQreset£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º ÖؠРÁ¬ Ïß  
Pqtrace 
Óï ·¨ £º void PQtrace£¨ PGconn *conn,FILE*debug_port£© £»  
¹¦ ÄÜ £º ×· ×Ù Ä¿ Ç° Á¬ Ïß ÖР³Ì Ê½ Óë Server¼ä µÄ Ñ¶ Ï¢ ´« ËÍ £¬ ¹© ³ý ´í Óà 
¡£  
˵ Ã÷ £º Õâ Ð© Ñ¶ Ï¢ ½« ±» Êä ³ö µ½ debug_port filestreamÖР£¬ ¿É ±» ¼Ç Â¼ µ½  
µµ °¸ Ö® ÖР¡£  
Pquntrace 
Óï ·¨ £º void PQuntrace£¨ PGconn *conn£© £» 
¹¦ ÄÜ £º Í£ Ö¹ ×· ×Ù Ä¿ Ç° Á¬ Ïß ÖР³Ì Ê½ Óë Server¼ä µÄ Ñ¶ Ï¢ ´« ËÍ  
¶þ ¡¡ Ö´ ÐР²é Ñ¯ µÄ º¯ Êý 
Pqexec 
Óï ·¨ £º PGresult *PQexec£¨ PGconn *conn,char*query£© £»  
¹¦ ÄÜ £º ½« ´« ËÍ Ò» ¸ö SQLÃü Áî ¸ø Server£¬ ²¢ µÃ µ½ Ò» ¸ö ²é Ñ¯ µÄ ½á ¹û ¡£  
˵ Ã÷ £º ´« »Ø µÄ ½á ¹û ½« ´æ ·Å ÔÚ Ò» ¸ö PGresultÐ̬͠ µÄ ½á ¹¹ Ö® ÖР£¬ Èô  
´« »Ø µÄ ½á ¹û Îª null¿É ÔÙ ÒÔ PQerrormessageÀ´ È¡ µÃ ¸ü Ïê Ï¸ µÄ ´í Îó Ñ¶ Ï¢  
¡£  
PQresultStatus 
Óï ·¨ £º ExecStatusType PQresultStatus£¨ PGresult *res£© £»  
¹¦ ÄÜ £º ´« »Ø Ä¿ Ç° ²é Ñ¯ µÄ ×´ Ì¬  
˵ Ã÷ £º ´« »Ø Öµ ÓРÒÔ Ï ¼¸ ÖÖ £­ PGRES_EMPTY_QUERY,PGRES_COMMAND_OK,/*  
´Ë Ò» ²é Ñ¯ Îª Ò» µ¥ ´¿ µÄ Ãü Áî */PGRES_TUP-LES_OK, /* ²é Ñ¯ ³É ¹¦  
*/PGRES_COPY_OUT,PGRES_COPY_IN,PGRES_BAD_RESPONSE, /* Î´ Öª µÄ ´í Î󠻨 Ó¦  
*/PGRES_NONFATAL_ERROR,PGRES_FATAL_ERRORÈô ÊÇ ´« »Ø Öµ Îª PGRES_TUPLES_OK£¬ ½« 
 ¿É ÒԠʹ ÓàÒÔ Ï µÄ º¯ Êý À´  
·Ö Îö resµÄ ×Ê ÁÏ ½á ¹¹ £¬ ÒÔ µÃ µ½ Õæ Õý Ðè Òª µÄ ×Ê ÁÏ ¡£  
Pqntuples 
Óï ·¨ £º int PQntuples£¨ PGresult *res£© £» 
¹¦ ÄÜ £º ´« »Ø resÖРÓР¼¸ ±Ê ×Ê ÁÏ Pqnfields 
Óï ·¨ £º int PQnfields£¨ PGresult *res£© £»  
¹¦ ÄÜ £º ´« »Ø res ÖРÓР¶à ÉÙ À¸ Î» £¨ field£© 
Pqfname 
Óï ·¨ £º char *PQfname£¨ PGresult *res,int field_index£© £»  
¹¦ ÄÜ £º ÒÀ ÕÕ Ëù ´« È렵Ġfield_indexÖµ £¬ ´« »Ø Ïà ¶Ô Ó¦ µÄ À¸ Î» Ãû ³Æ £¨  
field name£©  
˵ Ã÷ £º field_indexÖµ ÓÉ 0¿ª Ê¼ ¡£ 
Pqfnumber 
Óï ·¨ £º int PQfnumber£¨ PGresult *res,char*field_name£© £»  
¹¦ ÄÜ £º ´« »Ø field_nameµÄ field_indexÖµ £¬ ÓÉ ÎÄ ×֠ת Êý ×Ö  
PQftype  
Óï ·¨ £º Oid PQftype£¨ PGresult *res,int field_index£© £»  
¹¦ ÄÜ £º ´« »Ø field_indexËù Ö¸ À¸ Î» µÄ Ð̬͠ £¨field type£©  
Pqfsize 
Óï ·¨ £º int2 PQfsize£¨ PGresult *res,int field_index£© £»  
¹¦ ÄÜ £º ´« »Ø field_indexËù Ö¸ À¸ Î» µÄ ×Ê ÁÏ ´ó Ð¡ £¬ µ¥ Î»   Îªbytes 
˵ Ã÷ £º Èô ´« »Ø Öµ Îª -1£¬ ´ú ±í ´Ë Ò» À¸ Î» µÄ ´ó Ð¡ Îª ²» ¶¨ ³¤ ¶È ¡£  
Pqgetvalue 
Óï ·¨ £º char*PQgetvalue£¨ PGresult *res,inttup_num,int field_num£© £»  
¹¦ ÄÜ £º ´« »Ø µÚ tup_num±Ê £¬ µÚ field_num¸ö À¸ Î» ÀĠ×Ê ÁÏ  
Pqgetlength 
Óï ·¨ £º int PQgetlength£¨ PGresult *res,int tup_num,int field_num£© £»  
¹¦ ÄÜ £º ´« »Ø µÚ tup_num±Ê £¬ µÚ field_num¸ö À¸ Î» ÀĠ×Ê ÁÏ ³¤ ¶È 
PQcmdStatus 
Óï ·¨ £º char*PQcmdStatus£¨ PGresult *res£© £»  
¹¦ ÄÜ £º ´« »Ø ×î áá Ò» ¸ö ²é Ñ¯ ¶¯ ×÷ µÄ Ãü Áî ×´ Ì¬  
PQprintTuples 
Óï ·¨ £º void PQprintTuples£¨ PGresult* res, FILE* fout, /*output stream*/  
int print AttName,/*ÊÇ ·ñ ÏԠʾ ³ö field name*/int terseOutput, /*ÊÇ ·ñ ÏԠʾ  
³ö ½ç ÏÞ µÄ ·û ºÅ */int width /* À¸ Î» µÄ ³¤ ¶È £¬ 0 ´ú ±í ²» ¶¨ ³¤ ¶È */ £©  
£» ¹¦ ÄÜ £º ÏԠʾ ³ö  
Ëù ÓР²é Ñ¯ µ½ µÄ ×Ê ÁÏ £¬ ¾Í Èç Í¬ psql³Ì Ê½ Ëù ÏԠʾ µÄ ½á ¹û Ò» Ñù ¡£  
Pqclear 
Óï ·¨ £º void PQclear£¨ PQresult *res£© £» 
¹¦ ÄÜ £º ½« resËù Ö¸ µ½ µÄ PQresult½á ¹¹ ÊÍ ·Å £¬ µ± Ëù ÓР²é Ñ¯ µ½ µÄ ½á ¹û  
²» Ô٠ʹ Óàʱ £¬ ¶¼ Ó¦ ¸Ã ½« Æä ÊÍ ·Å ¡£ 
ÒÔ ÉϠΪ C API»ù ±¾ µÄ ¹¦ ÄÜ ½é ÉÜ £¬ Êµ ¼Ê ÉÏ »¹ ÓРÆä Ëû Ò» Ð© º¯ Êý ÉРδ  
˵ Ã÷ £¬ Ò» °ã ³õ Ñ§ Õß Ó¦ ÏȠѧ »á ÒÔ ÉÏ ¹¦ ÄÜ áá £¬ ÔÙ ¸ü Ñ§ Ï° Æä Ëû ½Ï Éî  
È렵Ġº¯ Êý Ê¹ Óà¡£ ¿´ Íê ÁË »ù ±¾ µÄ C API½é ÉÜ áá £¬ µ± È» Ó¦ ¸Ã Òª ÓР¸ö  
ʵ ¼Ê ·¶ Àý ÈàÎÒ ÃÇ  
ÁË ½â ³Ì Ê½ µÄ »ù ±¾ ×« Ð´ ¼Ü ¹¹ Óë APIº¯ Êý µÄ Êµ ¼Ê ÔË Óࣺ  
Õâ ¸ö ·¶ Àý ³Ì Ê½ Î» ì¶ /usr/src/pgsql/src/test/exampiles Ö® ÖР 
/* 
* testlibpq.c 
* Test the C version of LIBPQ, the POSTGRES frontend library. 
*  
*  
*/ 
#include £¼ stdio.h£¾  
#include ¨ libpq-fe.h£¢  
void 
exit_nicely£¨ PGconn* conn£© 

PQfinish£¨ conn£© £» /* ½á Êø Á¬ Ïß ²¢ ÊÍ ·Å PGconn ½á ¹¹ Ëù Õ¼ µÄ ¼Ç Òä Ìå */ 
exit£¨ 1£© £»  

main£¨ £© 

char *pghost, *pgport, *pgoptions, *pgtty£» 
char* dbName£»  
int nFields£»  
int i,j£»  
#ifdef DEBUG 
FILE *debug£»  
#endif /* DEBUG */ 
PGconn* conn£» /* Ðû ¸æ conn Îª Ò» ¸ö PGconn ½á ¹¹ µÄ Ö¸ ±ê */ 
PGresult* res£» /* Ðû ¸æ res Îª Ò» ¸ö PGresult ½á ¹¹ µÄ Ö¸ ±ê */ 
pghost = NULL£» /* host name of the backend server */ 
pgport = NULL£» /* port of the backend server */ 
pgoptions = NULL£» /* special options to start up the backend server */ 
pgtty = NULL£» /* debugging tty for the backend server */ 
dbName = ¨ template1£¢ £»  
/* ÓÉ ´Ë ¿ª Ê¼ ½¨ Á¢ Ò» ¸ö Ð µÄ Á¬ Ïß */ 
conn = PQsetdb£¨ pghost, pgport, pgoptions, pgtty, dbName£© £» 
/* ¼ì ²é ¸Õ ¸Õ Ëù ½¨ Á¢ µÄ Á¬ Ïß ×´ Ì¬ ÊÇ ·ñ Õý ³£ */ 
if £¨ PQstatus£¨ conn£© == CONNECTION_BAD£© { 
fprintf£¨ stderr,£¢ Connection to database £à %s£§ failed.\n£¢ , dbName£© £»  
fprintf£¨ stderr,£¢ %s£¢ ,PQerrorMessage£¨ conn£© £© £» 
exit_nicely£¨ conn£© £»  

#ifdef DEBUG 
debug = fopen£¨ ¨ /tmp/trace.out£¢ ,£¢ w£¢ £© £» 
PQtrace£¨ conn, debug£© £»  
#endif /* DEBUG */ 
/* ¿ª Ê¼ Óë ×Ê ÁÏ ¿â ¹µ Í¨ */ 
res = PQexec£¨ conn,£¢ BEGIN£¢ £© £» 
if £¨ PQresultStatus£¨ res£© != PGRES_COMMAND_OK£© { 
fprintf£¨ stderr,£¢ BEGIN command failed\n£¢ £© £»  
PQclear£¨ res£© £»  
exit_nicely£¨ conn£© £» 

/* ÊÍ ·Å res ¼Ç Òä Ìå ¿Õ ¼ä */ 
PQclear£¨ res£© £»  
/* fetch instances from the pg_database, the system catalog of databases*/ 
res = PQexec£¨ conn,£¢ DECLARE myportal CURSOR FOR select * frompg_database£¢  
£© £»  
if £¨ PQresultStatus£¨ res£© != PGRES_COMMAND_OK£© { 
fprintf£¨ stderr,£¢ DECLARE CURSOR command failed\n£¢ £© £» 
PQclear£¨ res£© £»  
exit_nicely£¨ conn£© £» 

PQclear£¨ res£© £»  
res = PQexec£¨ conn,£¢ FETCH ALL in myportal£¢ £© £» 
if £¨ PQresultStatus£¨ res£© != PGRES_TUPLES_OK£© { 
fprintf£¨ stderr,£¢ FETCH ALL command didn£§ t return tuples properly\n£¢ £©  
£»  
PQclear£¨ res£© £» 
exit_nicely£¨ conn£© £» 

/* ÁРӡ ³ö À¸ Î» µÄ Ãû ³Æ */ 
nFields = PQnfields£¨ res£© £»  
for £¨ i=0£» i £¼ nFields£» i++£© { 
printf£¨ ¨ %-15s£¢ ,PQfname£¨ res,i£© £© £» 

printf£¨ ¨ \n\n£¢ £© £» 
/* ÁРӡ ³ö À¸ Î» µÄ ×Ê ÁÏ ÄÚ ÈÝ */ 
for £¨ i=0£» i £¼ PQntuples£¨ res£© £» i++£© { 
for £¨ j=0 £» j £¼ nFields£» j++£© { 
printf£¨ ¨ %-15s£¢ , PQgetvalue£¨ res,i,j£© £© £» 

printf£¨ ¨ \n£¢ £© £»  

PQclear£¨ res£© £» 
/* close the portal */ 
res = PQexec£¨ conn, ¨ CLOSE myportal£¢ £© £» 
PQclear£¨ res£© £»  
/* ½á Êø Óë ×Ê ÁÏ ¿â µÄ ¹µ Í¨ */ 
res = PQexec£¨ conn, ¨ END£¢ £© £» 
PQclear£¨ res£© £»  
/* ¹Ø ±Õ Á¬ Ïß ²¢ ÊÍ ·Å Á¬ Ïß Ëù Õ¼ ÓàµÄ ¼Ç Òä Ìå */ 
PQfinish£¨ conn£© £»  
#ifdef DEBUG 
fclose£¨ debug£© £» 
#endif /* DEBUG */ 
exit£¨ 0£© £»  

Òò Îª ÎÒ ÃÇ ÓРºô ½Ð C API£¬ Ëù ÒÔ ±Ø Ðë link libpq.aÕâ ¸ö µµ °¸ £¬ ³Ì Ê½ ²Å  
ÄÜ ±à Òë Í꠳ɠ£¬ Çë ÏÈ ×ö Ï ÁР²½ Öè À´ Í꠳ɠ±à Òë £¬ 
% cp /usr/src/pgsql/src/libpq/libpq.a /usr/local/pgsql/include 
% cp /usr/src/pgsql/src/test/examples/testlibpq.c /usr/local/pgsql/include 
% cd /usr/local/pgsql/include 
% gcc -o test testlibpq.c libpq.a 
±à Òë ³ö À´ µÄ ³Ì Ê½ Îª test% ./test  
Ö´ ÐР³Ì Ê½ ½á ¹û Èç Ï £º  
datname datdba datpath 
template1 510 template1 
mydb 510 mydb 
³õ Ñ§ Õß ¿É ÒÔ ÊÔ Öø À´ ÐÞ ¸Ä Õâ ¸ö ³Ì Ê½ £¬ ¶à ¶à ³¢ ÊÔ £¬ Ïà ÐÅ ¿É ÒÔ ¶Ô  
Postgres95¸ü Îª Êì Ï¤ µÄ £¡  
½á Óï  
ÒÔ ÉÏ µÄ ½é ÉÜ Æä Êµ ¶¼ Ö» ÊÇ Èë ÃÅ µÄ ¹Û Äî ¶ø ÒÑ £¬ ÈÔ ÓРÐí ¶à Postgres95Ç¿ 
 ´ó µÄ ¹¦ ÄÜ ±Ê Õß ÉРδ ½é ÉÜ £¬ Àý Èç ¿É ÒÔ ×Ô ¶¨ Query FonctionµÈ µÈ £¬ Ò²  
Ðí ÒÔ áá ÓР»ú »á ÔÙ À´ Ïê Ï¸ ¼Ó ÒԠ˵ Ã÷ £¬ Áí Íâ Öµ µÃ Ò» ÌᠵĠÊÇ £¬  
Postgres95 ÊÇ ÓÉ Ðí ¶à  
×Ô Ô¸ Í¶ Èë ÐĠѪ µÄ ÈË ×Ô ¶¯ ×頳ɠÍÅ ¶Ó ÑР¾¿ ·¢ Õ¹ µÄ £¬ ÔÚ LinuxÊÀ ½ç ÖР 
Õâ Àà ÐÍ µÄ ºÏ ×÷ ÊÇ Ô젳ɠLinux Èç ´Ë ¶à Ôª »¯ µÄ Ö÷ Á¦ £¬ È» ¶ø Õâ Àà ÐÍ µÄ  
team workÔÚ ¹ú ÄÚ ÈÔ ²» ¶à ¼û £¬ ´ó ²¿ ·Ö Íæ ¼Ò ÈÔ ÊÇ µ¥ ´ò ¶À ¶· £¬ Ï£ Íû ¹ú  
ÄÚ ÄÜ ¹» ÓРԽ À´  
Ô½ ¶à µÄ ÈË ¶¼ ÄÜ ¼Ó Èë LinuxµÄ ÐРÁР£¬ Îª Õâ Ì× ¿ª ·Å µÄ ×÷ Òµ Ïµ Í³ ¹à Èë  
РѪ ¡£ 
±¸ ×¢ £º ±Ê Õß ÊÇ Õ¾ ÔÚ ³õ Ñ§ Õß µÄ à ¶È À´ Ð´ Õâ Æª ÎÄ Õ £¬ ¿É ÄÜ ¸ß ÊÖ ÃÇ  
»á ¾õ µÃ ±Ê Õß ÂÞ Ëô £¬ ²» ¹ý ±Ê Õß ÊǠϣ Íû ¸Õ Èë ÃÅ µÄ Linuxʹ ÓàÕß ÄÜ ¹»  
¶à ÁË ½â Ò» Ð© ¹Û Äî ÎÊ Ìâ £¬ ÓР¾ä »° Ëµ £º ¡¸ Íò Ê Æð Í· ÄÑ ¡¹ £¬ ÔÚ Linux 
µÄ ÊÀ ½ç ÖР¸ü ÊÇ Èç  
´Ë £¬ ±Ê Õß ¼û µ½ ²» ÉÙ ÈË ¸Õ ¹à Íê Linuxáá Ã» ¼¸ Ì젾͠¿³ µô ÁË £¬ Ô­ Òò ÊÇ  
²» »á Óà»ò ÊÇ ²» Öª µÀ ÓРʲ ÷á Ó࣬ ¶ø ÇÒ ¶® LinuxµÄ ÈË ÓÖ ²» Ïñ Windows95ê 
 ÷á ¶à £¬ Óö µ½ ÎÊ Ìâ ÓÖ ÎÞ ·¨ ½â ¾ö £¬ Êµ ÔÚ ÊÇ Âú ¿É Ï§ µÄ £¬ Ëù ÒÔ ±Ê Õß ÎÄ 
 Õ ÖРµÄ Ðí ¶à ²½  
Öè ¶¼ »á ¾¡ Á¿ Ïê Ï¸ µÄ ÁР³ö À´ £¬ Ï£ Íû ¾¡ ¹Ü ³õ Ñ§ Õß £¨ Æä Êµ ±Ê Õß Ò² ÊÇ  
³õ Ñ§ Õß À² £¡ £© Ò² ÄÜ ¹» ÖÁ ÉÙ Í꠳ɠ»ù ±¾ µÄ °² ×° Óë ¼ò µ¥ µÄ Ó¦ Ó࣬ ²»  
»á Òò Îª ¸Õ ¿ª Ê¼ µÄ Ò» µã µã Ð¡ À§ ÄÑ ¾Í ·Å Æú Áˠѧ Ï° LinuxµÄ »ú »á £¬ ²»  
¹ý ×î áá »¹ ÊǠϣ  
Íû ¶Á Õß ÃÇ ÄÜ ¹» Ñ§ »á ×Ô ÐР½â ¾ö ÎÊ Ì⠵ĠÄÜ Á¦ £¬ Òò Îª ±Ê Õß ¾õ µÃ Õ⠲Š 
ÊǠѧ Ï° Linux×î ´ó µÄ ÊÕ »ñ ¡£ Õâ Ò» µã ÊÇ ±Ê Õß ¼Ó Èë Íø ÍÆ »á áá Óɠѧ ³¤  
ÃÇ ´« ³Ð Ï À´ µÄ ¹Û Äî £¬ ÔÚ ´Ë Óë ´ó ¼Ò ·Ö Ïí £¡ 
£¨ ×÷ ÕßE-Mail£º s844074@moon.yzit.edu.tw£©  
£ÛÉÏһƪÎÄÕ £üÏÂһƪÎÄÕ£ݠ 
»Ø¹âµúÔ¿¯µÄ»ò»Ø£È£ï£ð£å£ß£Î£å£ôµÄ 
  
 
-- 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: 202.114.8.209] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø