Otvety na chasto zadavaemye voprosy po PostgreSQL
- Data poslednego obnovleniya: Ponedel'nik 22 Aprelya 14:02:41 EDT 2003
+ Data poslednego obnovleniya: Pyatnica 30 Maya 22:24:56 EDT 2003
Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us)
4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
- zaprosa?
+ zaprosa? Dlya proizvol'noj stroki?
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
- 4.4) Kak udalit' kolonku iz tablicy?
+ 4.4) Kak udalit' kolonku iz tablicy ili izmenit' eio tip dannyh?
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
sohraneniya dannyh iz obychnogo tekstovogo fajla?
Smotrite opisanie na stranicah rukovodstva posvyaschennym DECLARE.
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
+ Proizvol'noj stroki?
Smotrite stanicu rukovodstva posvyaschennuyu FETCH ili ispol'zujte
SELECT ... LIMIT....
mozhet vydat' tol'ko neskol'ko pervyh zaproshennyh zapisej ili mozhet
vypolnyat' zapros poka ne budut vydany zhelaemye zapisi.
+ To SELECT a random row, use:
+ SELECT col
+ FROM tab
+ ORDER BY random()
+ LIMIT 1;
+
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
Vy mozhete posmotret' ishodnyj kod psql v fajle
chtoby `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
vypolneniya zadannyh vami komand.
- 4.4) Kak udalit' kolonku iz tablicy?
+ 4.4) Kak udalit' kolonku iz tablicy ili izmenit' ioio tip dannyh?
- `Eta funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom ALTER
- TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak:
+ DROP COLUMN funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom
+ ALTER TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak:
BEGIN;
LOCK TABLE old_table;
SELECT ... -- vyborka vseh kolonok za isklyucheniem toj, kotoruyu hotite u
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
+ Dlya izmeneniya tipa dannyh kolonki, sdelajte tak:
+ BEGIN;
+ ALTER TABLE tab ADD COLUMN new_col new_data_type;
+ UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ ALTER TABLE DROP COLUMN old_col;
+ COMMIT;
+
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
Suschestvuyut sleduyuschie ogranicheniya:
alink="#0000ff">
<H1>ïÔ×ÅÔÙ ÎÁ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ ÐÏ PostgreSQL</H1>
- <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: ðÏÎÅÄÅÌØÎÉË 22 áÐÒÅÌÑ 14:02:41 EDT 2003</P>
+ <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: ðÑÔÎÉÃÁ 30 íÁÑ 22:24:56 EDT 2003</P>
<P>áÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ ÓÏÐÒÏ×ÏÖÄÁÅÔ: âÒÀÓ íÏÍØÑÎ (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
<A href="#4.1">4.1</A>) ÷ ÞÅÍ ÏÔÌÉÞÉÅ ÍÅÖÄÕ ÂÉÎÁÒÎÙÍ É ÎÏÒÍÁÌØÎÙÍ
ËÕÒÓÏÒÏÍ?<BR>
<A href="#4.2">4.2</A>) ëÁË ×ÙÐÏÌÎÉÔØ <SMALL>SELECT</SMALL> ÔÏÌØËÏ
- ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ?<BR>
+ ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ? äÌÑ ÐÒÏÉÚ×ÏÌØÎÏÊ ÓÔÒÏËÉ?<BR>
<A href="#4.3">4.3</A>) ëÁË ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÔÁÂÌÉà ÉÌÉ ÄÒÕÇÉÈ
ËÏÍÐÏÎÅÎÔÏ× × <I>psql</I>?<BR>
- <A href="#4.4">4.4</A>) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ?<BR>
+ <A href="#4.4">4.4</A>) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ ÉÌÉ ÉÚÍÅÎÉÔØ
+ Å£ ÔÉÐ ÄÁÎÎÙÈ?<BR>
<A href="#4.5">4.5</A>) ëÁËÏ×Ù ÍÁËÓÉÍÁÌØÎÙÅ ÒÁÚÍÅÒÙ ÄÌÑ ÚÁÐÉÓÅÊ,
ÔÁÂÌÉÃ É ÂÁÚÙ ÄÁÎÎÙÈ?<BR>
<A href="#4.6">4.6</A>) ëÁË ÍÎÏÇÏ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á × ÂÁÚÅ ÄÁÎÎÙÈ
<SMALL>DECLARE</SMALL>.</P>
<H4><A name="4.2">4.2</A>) ëÁË ×ÙÐÏÌÎÉÔØ <SMALL>SELECT</SMALL> ÔÏÌØËÏ
- ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ?</H4>
+ ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ? ðÒÏÉÚ×ÏÌØÎÏÊ ÓÔÒÏËÉ?</H4>
<P>óÍÏÔÒÉÔÅ ÓÔÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á ÐÏÓ×ÑÝÅÎÎÕÀ <SMALL>FETCH</SMALL>
ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
×ÙÄÁÔØ ÔÏÌØËÏ ÎÅÓËÏÌØËÏ ÐÅÒ×ÙÈ ÚÁÐÒÏÛÅÎÎÙÈ ÚÁÐÉÓÅÊ ÉÌÉ ÍÏÖÅÔ
×ÙÐÏÌÎÑÔØ ÚÁÐÒÏÓ ÐÏËÁ ÎÅ ÂÕÄÕÔ ×ÙÄÁÎÙ ÖÅÌÁÅÍÙÅ ÚÁÐÉÓÉ.</P>
+ <p>To <small>SELECT</small> a random row, use:
+</p><pre> SELECT col
+ FROM tab
+ ORDER BY random()
+ LIMIT 1;
+</pre>
+</p>
+
<H4><A name="4.3">4.3</A>) ëÁË ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÔÁÂÌÉà ÉÌÉ ÄÒÕÇÉÈ
ËÏÍÐÏÎÅÎÔÏ× × <I>psql</I>?</H4>
ÚÁÐÒÏÓÙ, ËÏÔÏÒÙÅ ÏÎÁ ÉÓÐÏÌØÚÕÅÔ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÚÁÄÁÎÎÙÈ ×ÁÍÉ
ËÏÍÁÎÄ.</P>
- <H4><A name="4.4">4.4</A>) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ?</H4>
+ <H4><A name="4.4">4.4</A>) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ ÉÌÉ
+ ÉÚÍÅÎÉÔØ ££ ÔÉÐ ÄÁÎÎÙÈ?</H4>
- <P>üÔÁ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ ÂÙÌÁ ÄÏÂÁ×ÌÅÎÁ × ×ÙÐÕÓË 7.3 Ó ÏÐÅÒÁÔÏÒÏÍ
- <small>ALTER TABLE DROP COLUMN</small>. ÷ ÒÁÎÎÉÈ ×ÅÒÓÉÑÈ,
+ <P><small>DROP COLUMN</small> ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ ÂÙÌÁ ÄÏÂÁ×ÌÅÎÁ × ×ÙÐÕÓË
+ 7.3 Ó ÏÐÅÒÁÔÏÒÏÍ <small>ALTER TABLE DROP COLUMN</small>. ÷ ÒÁÎÎÉÈ ×ÅÒÓÉÑÈ,
ÍÏÖÎÏ ÓÄÅÌÁÔØ ÔÁË:</P>
<PRE>
BEGIN;
COMMIT;
</PRE>
+ <P>äÌÑ ÉÚÍÅÎÅÎÉÑ ÔÉÐÁ ÄÁÎÎÙÈ ËÏÌÏÎËÉ, ÓÄÅÌÁÊÔÅ ÔÁË:</P>
+<PRE>
+ BEGIN;
+ ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
+ UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
+ ALTER TABLE DROP COLUMN old_col;
+ COMMIT;
+</PRE>
+
<H4><A name="4.5">4.5</A>) ëÁËÏ×Ù ÍÁËÓÉÍÁÌØÎÙÅ ÒÁÚÍÅÒÙ ÄÌÑ ÚÁÐÉÓÅÊ,
ÔÁÂÌÉÃ É ÂÁÚÙ ÄÁÎÎÙÈ?</H4>