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ÊÇ Ò» ¸ö Éè Íø · ´æ È¡ ×Ê ÁÏ ¿â Ȩ ÏÞ µÄ Éè ¶¨ µµ °¸ £¬
¿É ÐÞ ¸Ä Æä ÖÐ ÄÚ ÈÝ À´ ·À Ö¹ Æä Ëû ÈË À´ ´æ È¡ Äú µÄ ij Щ ×Ê ÁÏ ¿â £¬ ÐÞ ¸Ä
·½ ʽ Çë ²Î ÔÄ Æä µµ °¸ ÖÐ µÄ ×¢ ½â ˵ Ã÷ £¬ Ò² Ðí Äú ¸Õ ¿ª ʼ »¹ û ÓÐ 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ˮľÇ廪վ¡Ã¾«»ªÇø