You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
postgres/doc/FAQ_czech

850 lines
36 KiB

Frequently Asked Questions
Casto kladen<EFBFBD> dotazy (FAQ) PostgreSQL
Posledn<EFBFBD> aktualizace: 29. r<EFBFBD>jna 2007 (aktualizov<EFBFBD>no pro PostgreSQL
8.3)
Soucasn<EFBFBD> spr<EFBFBD>vce: Bruce Momjian (bruce@momjian.us)
Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
Nejaktu<EFBFBD>lnejs<EFBFBD> verzi tohoto dokumentu naleznete na adrese
http://www.postgresql.org/files/documentation/faqs/FAQ.html
Odpovedi na ot<EFBFBD>zky v<EFBFBD>zan<EFBFBD> na konkr<EFBFBD>tn<EFBFBD> platformy naleznete na adrese
http://www.postgresql.org/docs/faq/.
_________________________________________________________________
Obecn<EFBFBD> ot<EFBFBD>zky
1.1) Co je to PostgreSQL? Jak<EFBFBD> je spr<EFBFBD>vn<EFBFBD> v<EFBFBD>slovnost slova PostgreSQL?
1.2) Kdo r<EFBFBD>d<EFBFBD> v<EFBFBD>voj PostgreSQL?
1.3) Pod jakou licenc<EFBFBD> je PostgreSQL?
1.4) Na kter<EFBFBD>ch platform<EFBFBD>ch lze provozovat PostgreSQL?
1.5) Kde mohu z<EFBFBD>skat PostgreSQL?
1.6) Jak<EFBFBD> je posledn<EFBFBD> verze?
1.7) Kde mohu z<EFBFBD>skat podporu?
1.8) Jak a kam hl<EFBFBD>sit chyby?
1.9) Kde najdu informace o zn<EFBFBD>m<EFBFBD>ch chyb<EFBFBD>ch nebo nepodporovan<EFBFBD>ch
vlastnostech?
1.10) Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
1.11) Jak se mohu naucit SQL?
1.12) Jak se mohu pripojit k t<EFBFBD>mu v<EFBFBD>voj<EFBFBD>ru?
1.13) Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
1.14) Je PostgreSQL pripraven na aktu<EFBFBD>ln<EFBFBD> zav<EFBFBD>den<EFBFBD> letn<EFBFBD>ho casu v
nekter<EFBFBD>ch zem<EFBFBD>ch?
Dotazy na klientsk<EFBFBD> rozhran<EFBFBD>
2.1) Kter<EFBFBD> rozhran<EFBFBD> jsou pouziteln<EFBFBD> pro PostgreSQL?
2.2) Jak<EFBFBD> n<EFBFBD>stroje lze pouz<EFBFBD>t pro PostgreSQL a web?
2.3) Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
Administrativn<EFBFBD> dotazy
3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
3.2) Jak nastavit pravidla pro pr<EFBFBD>stup z jin<EFBFBD>ch stanic?
3.3) Jak vyladit datab<EFBFBD>zi na vyss<EFBFBD> v<EFBFBD>kon?
3.4) Jak<EFBFBD> m<EFBFBD>m lad<EFBFBD>c<EFBFBD> prostredky?
3.5) Co znamen<EFBFBD> "Sorry, too many clients", kdyz se zkous<EFBFBD>m pripojit?
3.6) Proc je nutn<EFBFBD> dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze pri upgradu
PostgreSQL?
3.7) Jak<EFBFBD> hardware bych mel pouz<EFBFBD>vat?
Provozn<EFBFBD> dotazy
4.1) Jak z<EFBFBD>skat pouze prvn<EFBFBD> r<EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> r<EFBFBD>dek?
4.2) Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek, indexu, datab<EFBFBD>z<EFBFBD>, a definovan<EFBFBD>ch
uzivatelu. Mohu videt dotazy, kter<EFBFBD> pouz<EFBFBD>v<EFBFBD> psql pro zobrazen<EFBFBD> techto
informac<EFBFBD>?
4.3) Jak zmenit datov<EFBFBD> typ sloupce?
4.4) Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost r<EFBFBD>dku, tabulky a datab<EFBFBD>ze?
4.5) Kolik diskov<EFBFBD>ho prostoru je potreba k ulozen<EFBFBD> dat z norm<EFBFBD>ln<EFBFBD>ho
textov<EFBFBD>ho souboru?
4.6) Muj dotaz je pomal<EFBFBD> a nepouz<EFBFBD>v<EFBFBD> vytvoren<EFBFBD> indexy. Proc?
4.7) Jak zjist<EFBFBD>m, jak se vyhodnocuje muj dotaz?
4.8) Jak pouz<EFBFBD>t case-(in)sensitive regul<EFBFBD>rn<EFBFBD> v<EFBFBD>raz? Jak pouz<EFBFBD>t index
pro case insensitive hled<EFBFBD>n<EFBFBD>?
4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
dva retezce, pokud mohou obsahovat NULL? Lze tr<EFBFBD>dit podle toho, jestli
je polozka NULL nebo ne?
4.10) Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi ruzn<EFBFBD>mi znakov<EFBFBD>mi typy?
4.11.1) Jak vytvorit serial/auto-increment polozku?
4.11.2) Jak z<EFBFBD>skat hodnotu SERIAL po vlozen<EFBFBD> r<EFBFBD>dku?
4.11.3) Nezpusob<EFBFBD> currval() a nextval() probl<EFBFBD>my ve v<EFBFBD>ce uzivatelsk<EFBFBD>m
prostred<EFBFBD>?
4.11.4) Proc nen<EFBFBD> vygenerovan<EFBFBD> c<EFBFBD>slo pouzito pri prerusen<EFBFBD>
transakce?Proc vznikaj<EFBFBD> d<EFBFBD>ry v c<EFBFBD>slov<EFBFBD>n<EFBFBD> prostrednictv<EFBFBD>m sekvence nebo
typu SERIAL?
4.12) Co to je OID? Co je to CTID?
4.13) Co znamen<EFBFBD> chybov<EFBFBD> hl<EFBFBD>sen<EFBFBD> "ERROR: Memory exhausted in
AllocSetAlloc()"?
4.14) Jak zjist<EFBFBD>m, kterou verzi PostgreSQL pouz<EFBFBD>v<EFBFBD>m?
4.15) Jak vytvorit sloupec, kter<EFBFBD> bude implicitne obsahovat aktu<EFBFBD>ln<EFBFBD>
cas?
4.16) Jak prov<EFBFBD>st vnejs<EFBFBD> spojen<EFBFBD> (outer join)?
4.17) Jak prov<EFBFBD>st dotaz napr<EFBFBD>c nekolika datab<EFBFBD>zemi?
4.18) Muze funkce vr<EFBFBD>tit v<EFBFBD>ce r<EFBFBD>dku nebo sloupcu?
4.19) Co je pr<EFBFBD>cinou chyby "relation with OID xxxxx does not exist"?
4.20) Jak<EFBFBD> jsou moznosti replikace datab<EFBFBD>z<EFBFBD>?
4.21) Proc v dotazu nejsou rozpozn<EFBFBD>ny n<EFBFBD>zvy m<EFBFBD>ch tabulek nebo funkc<EFBFBD>?
Proc jsou velk<EFBFBD> p<EFBFBD>smena v n<EFBFBD>zvech automaticky prevedena na mal<EFBFBD>
p<EFBFBD>smena?
_________________________________________________________________
Obecn<EFBFBD> ot<EFBFBD>zky
1.1) Co je to PostgreSQL? Jak<EFBFBD> je spr<EFBFBD>vn<EFBFBD> v<EFBFBD>slovnost slova PostgreSQL?
V<EFBFBD>slovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
V rade jazyku je slovo PostgreSQL obt<EFBFBD>zne vysloviteln<EFBFBD>, proto se v
hovoru casto pouz<EFBFBD>v<EFBFBD> zjednodusen<EFBFBD> forma n<EFBFBD>zvu. Pro ty, kter<EFBFBD> by si
r<EFBFBD>di poslechli v<EFBFBD>slovnost, je k dispozici audioz<EFBFBD>znam v MP3 form<EFBFBD>tu.
PostgreSQL je relacn<EFBFBD> datab<EFBFBD>ze s nekter<EFBFBD>mi objektov<EFBFBD>mi rysy, kter<EFBFBD> m<EFBFBD>
moznosti tradicn<EFBFBD>ch komercn<EFBFBD>ch datab<EFBFBD>zov<EFBFBD>ch syst<EFBFBD>mu s nekolika
rozs<EFBFBD>ren<EFBFBD>mi, kter<EFBFBD> lze naj<EFBFBD>t v DBMS syst<EFBFBD>mech pr<EFBFBD>st<EFBFBD> generace.
Pouz<EFBFBD>v<EFBFBD>n<EFBFBD> PostgreSQL nen<EFBFBD> omezen<EFBFBD> a vesker<EFBFBD> zdrojov<EFBFBD> k<EFBFBD>dy jsou volne
dostupn<EFBFBD>.
Za v<EFBFBD>vojem PostgreSQL je mezin<EFBFBD>rodn<EFBFBD> skupina nez<EFBFBD>visl<EFBFBD>ch v<EFBFBD>voj<EFBFBD>ru
navz<EFBFBD>jem komunikuj<EFBFBD>c<EFBFBD>ch prostrednictv<EFBFBD>m internetu. Tento projekt nen<EFBFBD>
r<EFBFBD>zen z<EFBFBD>dnou obchodn<EFBFBD> organizac<EFBFBD>. Pokud se chcete pridat k projektu,
prectete si v<EFBFBD>voj<EFBFBD>rsk<EFBFBD> FAQ na adrese
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
1.2) Kdo r<EFBFBD>d<EFBFBD> v<EFBFBD>voj PostgreSQL?
Pokud budete hledat organizaci r<EFBFBD>d<EFBFBD>c<EFBFBD> v<EFBFBD>voj PostgreSQL, budete
zklam<EFBFBD>ni. Nic takov<EFBFBD>ho neexistuje. Existuj<EFBFBD> pouze "core" a CVS skupiny
uzivatelu, ale ty existuj<EFBFBD> v<EFBFBD>ce z administr<EFBFBD>torsk<EFBFBD>ch duvodu nez z
organizacn<EFBFBD>ch. Projekt je smerov<EFBFBD>n komunitou v<EFBFBD>voj<EFBFBD>ru a uzivatelu, ke
kter<EFBFBD> se kdokoliv muze pripojit. Jedin<EFBFBD> co potrebuje, je prihl<EFBFBD>sit se
do elektronick<EFBFBD> konference. V<EFBFBD>ce ve v<EFBFBD>voj<EFBFBD>rsk<EFBFBD>m FAQ.
1.3) Pod jakou licenc<EFBFBD> je PostgreSQL?
PostgreSQL je predmetem n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch autorsk<EFBFBD>ch pr<EFBFBD>v:
D<EFBFBD>lc<EFBFBD> Copyright (c) 1996-2009, PostgreSQL Global Development Group
D<EFBFBD>lc<EFBFBD> Copyright (c) 1994-6, Regents of the University of California
Udeluje se opr<EFBFBD>vnen<EFBFBD> k uzit<EFBFBD>, rozmnozov<EFBFBD>n<EFBFBD>, prov<EFBFBD>den<EFBFBD> <EFBFBD>prav a
rozsirov<EFBFBD>n<EFBFBD> tohoto softwaru a dokumentace k nemu, pro jak<EFBFBD>koli <EFBFBD>cely,
bez licencn<EFBFBD>ho poplatku a bez p<EFBFBD>semn<EFBFBD> licencn<EFBFBD> smlouvy, za podm<EFBFBD>nky,
ze na vsech jeho kopi<EFBFBD>ch je uvedeno ozn<EFBFBD>men<EFBFBD> o v<EFBFBD>se uveden<EFBFBD>ch pr<EFBFBD>vech,
jakoz i obsah tohoto a dvou n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch odstavcu.
THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK<EFBFBD> UNIVERZITA") NEN<EFBFBD> V Z<EFBFBD>DN<EFBFBD>M
PR<EFBFBD>PADE ODPOVEDNA Z<EFBFBD>DN<EFBFBD> TRET<EFBFBD> OSOBE ZA PR<EFBFBD>MOU, NEPR<EFBFBD>MOU, ZVL<EFBFBD>STN<EFBFBD>,
NAHODILOU NEBO V<EFBFBD>SLEDNOU SKODU, VCETNE USL<EFBFBD>HO ZISKU, ZPUSOBENOU UZIT<EFBFBD>M
TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PR<EFBFBD>PADE, ZE THE
UNIVERSITY OF CALIFORNIA BYLA INFORMOV<EFBFBD>NA O MOZNOSTI VZNIKU TAKOV<EFBFBD>
SKODY.
THE UNIVERSITY OF CALIFORNIA ZEJM<EFBFBD>NA NEPOSKYTUJE JAK<EFBFBD>KOLI Z<EFBFBD>RUKY, A TO
NEJEN Z<EFBFBD>RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V<EFBFBD>ROBKU KE
SPECIFICK<EFBFBD>M <EFBFBD>CELUM. N<EFBFBD>ZE UVEDEN<EFBFBD> SOFTWARE JE POSKYTNUT "JAK STOJ<EFBFBD> A
LEZ<EFBFBD>" A THE UNIVERSITY OF CALIFORNIA NEN<EFBFBD> POVINNA ZAJISTIT JEHO
<EFBFBD>DRZBU, PODPORU, AKTUALIZACI, VYLEPSEN<EFBFBD> NEBO MODIFIKACI.
V<EFBFBD>se uveden<EFBFBD> je BSD licence, bezn<EFBFBD> licence otevren<EFBFBD>ho zdroje. Nen<EFBFBD> zde
z<EFBFBD>dn<EFBFBD> omezen<EFBFBD> ohledne uzit<EFBFBD> k<EFBFBD>du zdroje. Jsme s t<EFBFBD>m spokojeni a nem<EFBFBD>me
v <EFBFBD>myslu na t<EFBFBD>to skutecnosti cokoli menit.
1.4) Na kter<EFBFBD>ch platform<EFBFBD>ch lze provozovat PostgreSQL?
Strucne receno, PostgreSQL bez<EFBFBD> na vsech modern<EFBFBD>ch unixov<EFBFBD>ch
syst<EFBFBD>mech. Seznam tech, u kter<EFBFBD>ch probehlo testov<EFBFBD>n<EFBFBD>, naleznete v
instalacn<EFBFBD>ch instrukc<EFBFBD>ch.
PostreSQL tak<EFBFBD> bez<EFBFBD> nativne na vsech Microsof Windows syst<EFBFBD>mech
odvozen<EFBFBD>ch z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
a Windows2003. Instalacn<EFBFBD> bal<EFBFBD>cek naleznete na adrese
http://pgfoundry.org/projects/pginstaller. Na stars<EFBFBD>ch syst<EFBFBD>mech s
jeste MS-DOS j<EFBFBD>drem lze spustit PostgreSQL s emulacn<EFBFBD>m programem
Cygwin.
D<EFBFBD>le existuje port pro Novell Netware 6 port na adrese
http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
SQL&stype=all&sort=type&dir=%2F .
1.5) Kde mohu z<EFBFBD>skat PostgreSQL?
Pomoc<EFBFBD> webov<EFBFBD>ho klienta z adresy http://www.postgresql.org/ftp/ nebo
klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
1.6) Jak<EFBFBD> je posledn<EFBFBD> verze?
Nejnovejs<EFBFBD> verz<EFBFBD> PostgreSQL je verze 8.2.5
V pl<EFBFBD>nu je uvolnovat kazdorocne jednu velkou verzi a kazd<EFBFBD>ch nekolik
mes<EFBFBD>cu mal<EFBFBD> verze.
1.7) Kde mohu z<EFBFBD>skat podporu?
Nejcastejs<EFBFBD> forma podpory uzivatelum PostgreSQL komunitou je
prostrednictv<EFBFBD>m e-mailu. Na nasem webov<EFBFBD>m serveru naleznete odkaz na
str<EFBFBD>nky,kde se muzete prihl<EFBFBD>sit do elektronick<EFBFBD> konference. Pro
zac<EFBFBD>tek jsou doporucen<EFBFBD> konference general nebo bugs.
Dals<EFBFBD> cestou je IRC kan<EFBFBD>l #postgresql na Freenode (irc.freenode.net).
K pripojen<EFBFBD> pouzijte Unixov<EFBFBD> pr<EFBFBD>kaz irc -x '#postgresql' "$USER"
irc.freenode.net nebo jak<EFBFBD>koholiv jin<EFBFBD>ho IRC klienta. V t<EFBFBD>to s<EFBFBD>ti
existuje jeste spanelsk<EFBFBD> (#postgresql-es) a francouzsk<EFBFBD>
(#postgresqlfr) verze. Dals<EFBFBD> PostgreSQL kan<EFBFBD>l naleznete na EFNet.
Seznam spolecnost<EFBFBD> poskytuj<EFBFBD>c<EFBFBD> komercn<EFBFBD> podporu naleznete na adrese
http://techdocs.postgresql.org/companies.php.
1.8) Jak a kam hl<EFBFBD>sit chyby?
Vyplnte formul<EFBFBD>r na adrese
http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
ftp://ftp.postgresql.org/pub/ si overte, ze pouz<EFBFBD>v<EFBFBD>te aktu<EFBFBD>ln<EFBFBD> verzi
PostreSQL.
Chyby reportovan<EFBFBD> prostrednictv<EFBFBD>m chybov<EFBFBD>ho formul<EFBFBD>re nebo zasl<EFBFBD>n<EFBFBD>m
mailu do PostgreSQL konference obvykle generuje n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> odezvu:
* Nejedn<EFBFBD> se o chybu, a proc
* Jedn<EFBFBD> se o zn<EFBFBD>mou chybu, kter<EFBFBD> je jiz v seznamu <EFBFBD>kolu TODO
* Tato chyba byla opravena v aktu<EFBFBD>ln<EFBFBD> verzi
* Tato chyba byla jiz opravena ve verzi, kter<EFBFBD> zat<EFBFBD>m nebyla
ofici<EFBFBD>lne uvolnena
* Pozadavek na dals<EFBFBD> doplnuj<EFBFBD>c<EFBFBD> informace:
+ Operacn<EFBFBD> syst<EFBFBD>m
+ Verze PostgreSQL
+ Test reprodukuj<EFBFBD>c<EFBFBD> chybu
+ Lad<EFBFBD>c<EFBFBD> informace
+ Backtrace v<EFBFBD>stup debuggeru
* Jedn<EFBFBD> se o zat<EFBFBD>m nezjistenou chybu, pak muzete cekat
+ Z<EFBFBD>platu odstranuj<EFBFBD>c<EFBFBD> chybu, kter<EFBFBD> bude vlozena do dals<EFBFBD> velk<EFBFBD>
nebo mal<EFBFBD> verze
+ Informaci, ze se jedn<EFBFBD> o chybu, kterou nelze okamzite resit a
je proto prid<EFBFBD>na do TODO
1.9) Kde najdu informace o zn<EFBFBD>m<EFBFBD>ch chyb<EFBFBD>ch nebo nepodporovan<EFBFBD>ch vlastnostech?
PostgreSQL podporuje rozs<EFBFBD>renou podmnozinu SQL:2003. V nasem TODO
naleznete seznam zn<EFBFBD>m<EFBFBD>ch chyb, chybej<EFBFBD>c<EFBFBD>ch vlastnost<EFBFBD>, a pl<EFBFBD>ny do
budoucna.
Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
* Pozadavek je jiz v TODO
* Pozadovan<EFBFBD> funkce nen<EFBFBD> chten<EFBFBD> protoze
+ Duplikuje jiz existuj<EFBFBD>c<EFBFBD> funkci, kter<EFBFBD> respektuje SQL
standard
+ Implementac<EFBFBD> funkce by se pr<EFBFBD>lis zkomplikoval k<EFBFBD>d bez
relevantn<EFBFBD>ho pr<EFBFBD>nosu
+ Funkce by mohla b<EFBFBD>t nebezpecn<EFBFBD> nebo nespolehliv<EFBFBD>
* Pozadavek je prid<EFBFBD>n do TODO
PostgreSQL nepoz<EFBFBD>v<EFBFBD> syst<EFBFBD>m pro sledov<EFBFBD>n<EFBFBD> chyb, protoze jsme zjistili,
ze je efektivnejs<EFBFBD> pr<EFBFBD>mo reagovat na maily a udrzovat aktu<EFBFBD>ln<EFBFBD> TODO. V
praxi je snaha o co nejrychlejs<EFBFBD> resen<EFBFBD> chyb, a chyby, kter<EFBFBD> by se
mohly projevit u mnoha uzivatelu jsou opravov<EFBFBD>ny velice rychle. Jedin<EFBFBD>
m<EFBFBD>sto, kde lze dohledat vsechny zmeny, rozs<EFBFBD>ren<EFBFBD> a opravy v PostgreSQL
je CVS log. Pozn<EFBFBD>mky k verzi "Release notes" nezachycuj<EFBFBD> vsechny
zmeny, k nemz doslo.
1.10) Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
PostgreSQL obsahuje vynikaj<EFBFBD>c<EFBFBD> dokumentaci zahrnuj<EFBFBD>c<EFBFBD> manu<EFBFBD>l,
manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nky a testovac<EFBFBD> pr<EFBFBD>klady. Pod<EFBFBD>vejte se do adres<EFBFBD>re /doc.
Manu<EFBFBD>l je pr<EFBFBD>stupn<EFBFBD> online na http://www.postgresql.org/docs.
K dispozici jsou zdarma dve online knihy na adres<EFBFBD>ch
http://www.postgresql.org/docs/books/awbook.html a
http://www.commandprompt.com/ppbook/. Dals<EFBFBD> literaturu lze zakoupit.
Nejpopul<EFBFBD>rnejs<EFBFBD> je od Kerryho Douglase. Seznam dostupn<EFBFBD> literatury je
na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
kolekce technicky orientovan<EFBFBD>ch cl<EFBFBD>nku tematicky spojen<EFBFBD>ch s
PostgreSQL na adrese http://techdocs.postgresql.org/.
R<EFBFBD>dkov<EFBFBD> klient psql m<EFBFBD> \d pr<EFBFBD>kazy pro zobrazen<EFBFBD> informac<EFBFBD> o typech,
oper<EFBFBD>torech, funkc<EFBFBD>ch, agregacn<EFBFBD>ch funkc<EFBFBD>, atd. Pouzijte \? pro
zobrazen<EFBFBD> dostupn<EFBFBD>ch pr<EFBFBD>kazu.
Dals<EFBFBD> dokumentaci najdete na nasem webu.
1.11) Jak se mohu naucit SQL?
Pod<EFBFBD>vejte se do v<EFBFBD>se uveden<EFBFBD> dokumentace. Dals<EFBFBD> online knihou je
"Teach Yourself SQL in 21 Days, Second Edition" na adrese
http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
S., et al., Addison-Wesley. Dals<EFBFBD> The Complete Reference SQL, Groff et
al., McGraw-Hill.
Dals<EFBFBD> online tutori<EFBFBD>ly jsou dostupn<EFBFBD> na adres<EFBFBD>ch:
* http://www.intermedia.net/support/sql/sqltut.shtm
* http://sqlcourse.com
* http://www.w3schools.com/sql/default.asp
* http://mysite.verizon.net/Graeme_Birchall/id1.html
1.12) Jak se mohu pripojit k t<EFBFBD>mu v<EFBFBD>voj<EFBFBD>ru?
Prostudujte si Developer's FAQ.
1.13) Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
Software muzeme porovn<EFBFBD>vat z nekolika ruzn<EFBFBD>ch pohledu: vlastnosti,
v<EFBFBD>kon, spolehlivost, podpora a cena.
Vlastnosti
PostgreSQL nab<EFBFBD>z<EFBFBD> vetsinu funkc<EFBFBD> funkcionality velk<EFBFBD>ch komercn<EFBFBD>ch DBMS
syst<EFBFBD>mu jako jsou: transakce, vnoren<EFBFBD> dotazy, spouste, referencn<EFBFBD>
integrita a sofistikovan<EFBFBD> syst<EFBFBD>m zamyk<EFBFBD>n<EFBFBD>. Poskytujeme urcit<EFBFBD> funkce,
kter<EFBFBD> ostatn<EFBFBD> syst<EFBFBD>my bezne nepodporuj<EFBFBD>. Napr. uzivatelem definovan<EFBFBD>
typy, dedicnost, pravidla (rules), a MVCC architekturu.
V<EFBFBD>kon
V<EFBFBD>kon PostgreSQL je srovnateln<EFBFBD> s ostatn<EFBFBD>mi komercn<EFBFBD>mi nebo Open
Source datab<EFBFBD>zemi. V nekter<EFBFBD>ch pr<EFBFBD>padech je rychlejs<EFBFBD>, jindy
pomalejs<EFBFBD>. N<EFBFBD>s v<EFBFBD>kon je obvykle +/-10% vuci ostatn<EFBFBD>m datab<EFBFBD>z<EFBFBD>m.
Spolehlivost
Uvedomujeme si, ze datab<EFBFBD>ze mus<EFBFBD> b<EFBFBD>t stoprocentne spolehliv<EFBFBD>, jinak je
nepouziteln<EFBFBD>. Snaz<EFBFBD>me se, aby kazd<EFBFBD> verze byla dobre otestov<EFBFBD>na a
obsahovala minimum chyb. Kazd<EFBFBD> verze je minim<EFBFBD>lne nekolik mes<EFBFBD>cu v
beta testovac<EFBFBD>m rezimu. Do produkcn<EFBFBD>ho rezimu se dostane, az kdyz
nedoch<EFBFBD>z<EFBFBD> k dals<EFBFBD>m zmen<EFBFBD>m nebo oprav<EFBFBD>m. Ver<EFBFBD>me, ze jsem v<EFBFBD>ce nez
srovnateln<EFBFBD> s ostatn<EFBFBD>mi datab<EFBFBD>zemi v t<EFBFBD>to oblasti.
Podpora
Na nasich internetov<EFBFBD>ch konferenc<EFBFBD>ch se setk<EFBFBD>v<EFBFBD> velk<EFBFBD> skupina v<EFBFBD>voj<EFBFBD>ru
a uzivatelu pri resen<EFBFBD> vyskytuj<EFBFBD>c<EFBFBD>ch se probl<EFBFBD>mu. Nase internetov<EFBFBD>
konference umoznuj<EFBFBD> kontakt velk<EFBFBD> skupiny v<EFBFBD>voj<EFBFBD>ru a uzivatelu.
Nemuzeme garantovat opravu chyby, ale komercn<EFBFBD> DBMSs tak<EFBFBD> vzdy
negarantuj<EFBFBD> resen<EFBFBD> probl<EFBFBD>mu. Ver<EFBFBD>me ale, ze d<EFBFBD>ky pr<EFBFBD>m<EFBFBD>mu kontaktu na
v<EFBFBD>voj<EFBFBD>re, nasi uzivatelskou komunitu, manu<EFBFBD>lum, a dostupn<EFBFBD>m zdrojov<EFBFBD>m
k<EFBFBD>dum m<EFBFBD>me leps<EFBFBD> podporu nez ostatn<EFBFBD> DBMSs. Pro ty, kter<EFBFBD> preferuj<EFBFBD>
komercn<EFBFBD> "per-incident" podporu, existuje spolecnost<EFBFBD>, kter<EFBFBD> ji
nab<EFBFBD>zej<EFBFBD> (FAQ sekce 1.7.)
Cena
PostgreSQL lze pouz<EFBFBD>vat bezplatne (a to i pro komercn<EFBFBD> pouzit<EFBFBD>). Tak<EFBFBD>
muzete neomezene pouz<EFBFBD>vat n<EFBFBD>s k<EFBFBD>d ve sv<EFBFBD>ch produktech s v<EFBFBD>jimkami
specifikovan<EFBFBD>mi v nas<EFBFBD> licenci (preb<EFBFBD>r<EFBFBD>me BSD licenci).
1.14) Je PostgreSQL pripraven na aktu<EFBFBD>ln<EFBFBD> zav<EFBFBD>den<EFBFBD> letn<EFBFBD>ho casu v nekter<EFBFBD>ch
zem<EFBFBD>ch?
Poc<EFBFBD>naje verz<EFBFBD> 8.0.[4+] podporuje PostgreSQL letn<EFBFBD> cas tak<EFBFBD> pro USA.
Podpora letn<EFBFBD>ho casu (daylight saving time) pro Kanadu a Z<EFBFBD>padn<EFBFBD>
Austr<EFBFBD>lii je obsazena ve verz<EFBFBD>ch 8.0.[10+] a 8.1.[6+] a vsech
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch verz<EFBFBD>ch. Stars<EFBFBD> verze pouz<EFBFBD>valy syst<EFBFBD>movou datab<EFBFBD>zi
casov<EFBFBD>ch z<EFBFBD>n obsahuj<EFBFBD>c<EFBFBD>, krome jin<EFBFBD>ho, informaci o tom, zda se pro
danou casovou z<EFBFBD>nu rozlisuje mezi letn<EFBFBD>m a zimn<EFBFBD>m casem.
_________________________________________________________________
Dotazy na klientsk<EFBFBD> rozhran<EFBFBD>
2.1) Kter<EFBFBD> rozhran<EFBFBD> jsou pouziteln<EFBFBD> pro PostgreSQL?
PostgreSQL se distribuuje pouze s rozhran<EFBFBD>m pro jazyk C a embedded C.
Vsechna dals<EFBFBD> rozhran<EFBFBD> predstavuj<EFBFBD> nez<EFBFBD>visl<EFBFBD> projekty, kter<EFBFBD> je treba
st<EFBFBD>hnout z internetu samostatne. Osamostatnen<EFBFBD> techto projektu
umoznuje nez<EFBFBD>vislost v<EFBFBD>vojov<EFBFBD>ch t<EFBFBD>mu a moznost vyd<EFBFBD>vat nov<EFBFBD> verze bez
ohledu na vyd<EFBFBD>n<EFBFBD> nov<EFBFBD> verze PostgreSQL.
Nekter<EFBFBD> programovac<EFBFBD> jazyky jako je napr. PHP obsahuj<EFBFBD> rozhran<EFBFBD> pro
PostgreSQL. Rozhran<EFBFBD> pro jazyky jako je Perl, Tcl, Python a mnoho
dals<EFBFBD>ch jsou dostupn<EFBFBD> na adrese: http://gborg.postgresql.org v sekci
Drivers/Interfaces.
2.2) Jak<EFBFBD> n<EFBFBD>stroje lze pouz<EFBFBD>t pro PostgreSQL a web?
Dobr<EFBFBD>m <EFBFBD>vodem do problematiky datab<EFBFBD>z<EFBFBD> v prostred<EFBFBD> webov<EFBFBD>ch str<EFBFBD>nek
muze b<EFBFBD>t web http://www.webreview.com.
PHP (http://www.php.net) je vynikaj<EFBFBD>c<EFBFBD>m rozhran<EFBFBD>m pro tvorbu webu.
Pro slozitejs<EFBFBD> <EFBFBD>lohy se casto pouz<EFBFBD>v<EFBFBD> Perl a jeho BDB:Pg rozhran<EFBFBD> s
podporou CGI - CGI.pm nebo mod_perl(u).
2.3) Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
K dispozici je rada grafick<EFBFBD>ch n<EFBFBD>stroju podporuj<EFBFBD>c<EFBFBD>ch PostgreSQL a to
od komercn<EFBFBD>ch nebo open source v<EFBFBD>voj<EFBFBD>ru. Podrobn<EFBFBD> seznam naleznete na
adrese http://www.postgresql.org/docs/techdocs.54.
_________________________________________________________________
Administrativn<EFBFBD> dotazy
3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
Pri spousten<EFBFBD> configure nastavte parametr --prefix
3.2) Jak nastavit pravidla pro pr<EFBFBD>stup z jin<EFBFBD>ch stanic?
Ve v<EFBFBD>choz<EFBFBD> konfiguraci, PostgreSQL umoznuje pouze pripojen<EFBFBD> z
lok<EFBFBD>ln<EFBFBD>ho uzivatele prostrednictv<EFBFBD>m Unix domain sockets nebo TCP/IP
spojen<EFBFBD>. Bez modifikace listen_addresses v souboru postgresql.conf, a
povolen<EFBFBD> adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
PostgreSQL z ostatn<EFBFBD>ch stanic. Zmena v<EFBFBD>se zm<EFBFBD>nen<EFBFBD>ch parametru vyzaduje
restart datab<EFBFBD>zov<EFBFBD>ho serveru.
3.3) Jak vyladit datab<EFBFBD>zi na vyss<EFBFBD> v<EFBFBD>kon?
V<EFBFBD>kon syst<EFBFBD>mu muzete ovlivnit ve trech oblastech:
Zmeny dotazu
* Pouzit<EFBFBD>m indexu vcetne c<EFBFBD>stecn<EFBFBD>ch a funkcion<EFBFBD>ln<EFBFBD>ch
* Pouzit<EFBFBD>m COPY m<EFBFBD>sto opakovan<EFBFBD>ch INSERTu
* Sloucen<EFBFBD>m mnoha SQL pr<EFBFBD>kazu do jedn<EFBFBD> transakce sn<EFBFBD>zen<EFBFBD>m rezie na
commit
* Pouz<EFBFBD>v<EFBFBD>n<EFBFBD>m CLUSTERU, pokud nac<EFBFBD>t<EFBFBD>te vets<EFBFBD> pocet r<EFBFBD>dek podle indexu
* Pouzit<EFBFBD>m klauzule LIMIT v poddotazech
* Pouzit<EFBFBD>m predpripraven<EFBFBD>ch dotazu
* Pouz<EFBFBD>v<EFBFBD>n<EFBFBD>m ANALYZE. Tento pr<EFBFBD>kaz aktualizuje statistiky, kter<EFBFBD> se
pouz<EFBFBD>vaj<EFBFBD> pri optimalizaci dotazu
* Pravideln<EFBFBD> pouzit<EFBFBD> VACUUM nebo pouz<EFBFBD>v<EFBFBD>n<EFBFBD> pg_autovacuum
* Odstranen<EFBFBD>m indexu pred rozs<EFBFBD>hl<EFBFBD>mi zmenami v datech
Konfigurace serveru
Urcit<EFBFBD> parametry v souboru postgresql.conf maj<EFBFBD> vliv na v<EFBFBD>kon serveru.
Detaily naleznete v pr<EFBFBD>rucce Administr<EFBFBD>tora v Server Run-time
Environment/Run-time Configuration. Dals<EFBFBD> koment<EFBFBD>re naleznete v
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
V<EFBFBD>ber hardware
Vliv hardware na v<EFBFBD>kon serveru je pops<EFBFBD>n v dokumentech
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
a http://www.powerpostgresql.com/PerfList/.
3.4) Jak<EFBFBD> m<EFBFBD>m lad<EFBFBD>c<EFBFBD> prostredky?
Nastaven<EFBFBD>m log_* promenn<EFBFBD>ch v konfiguraci serveru si vynut<EFBFBD>te logov<EFBFBD>n<EFBFBD>
dotazu a procesn<EFBFBD>ch statistik, kter<EFBFBD> V<EFBFBD>m mohou pomoci pri laden<EFBFBD> a
optimalizaci v<EFBFBD>konu.
3.5) Co znamen<EFBFBD> "Sorry, too many clients", kdyz se zkous<EFBFBD>m pripojit?
Prekrocil jste v<EFBFBD>choz<EFBFBD> limit, kter<EFBFBD> je 100 soucasne pripojen<EFBFBD>ch
uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
3.6) Proc je nutn<EFBFBD> dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze pri upgradu PostgreSQL?
Zpusob c<EFBFBD>slov<EFBFBD>n<EFBFBD> je pops<EFBFBD>n v dokumentaci na
http://www.postgresql.org/support/versioning. Instrukce k proveden<EFBFBD>
migrace na vyss<EFBFBD> verzi jsou takt<EFBFBD>z v dokumentaci na adrese
http://www.postgresql.org/docs/current/static/install-upgrading.html.
3.7) Jak<EFBFBD> hardware bych mel pouz<EFBFBD>vat?
Jelikoz PC jsou vetsinou kompatibiln<EFBFBD>, lid<EFBFBD> maj<EFBFBD> tendence verit, ze
vsechna PC jsou stejne kvalitn<EFBFBD>. Coz nen<EFBFBD> pravda. Pameti ECC, SCSI a
kvalitn<EFBFBD> z<EFBFBD>kladn<EFBFBD> desky jsou mnohem spolehlivejs<EFBFBD> a v<EFBFBD>konnejs<EFBFBD> nez
lacinejs<EFBFBD> hardware. PostgreSQL pobez<EFBFBD> na vetsine hardwaru, nicm<EFBFBD>ne
pokud je pro V<EFBFBD>s spolehlivost a v<EFBFBD>kon syst<EFBFBD>mu dulezit<EFBFBD>, je dobr<EFBFBD>
venovat cas nalezen<EFBFBD> vhodn<EFBFBD> hardwarov<EFBFBD> konfigurace. Na nasich
elektronick<EFBFBD>ch konferenc<EFBFBD>ch muzete diskutovat o vhodn<EFBFBD>ch konfigurac<EFBFBD>ch
a znack<EFBFBD>ch.
_________________________________________________________________
Provozn<EFBFBD> dotazy
4.1) Jak z<EFBFBD>skat pouze prvn<EFBFBD> r<EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> r<EFBFBD>dek?
Pokud potrebujete pouze nekolik r<EFBFBD>dku a pokud v<EFBFBD>te kolik, pouzijte
SELECT LIMIT. Pokud bude mozn<EFBFBD> pouz<EFBFBD>t index shoduj<EFBFBD>c<EFBFBD> se s ORDER BY,
je mozn<EFBFBD>, ze se nebude prov<EFBFBD>det cel<EFBFBD> dotaz. Pokud nezn<EFBFBD>te pocet
z<EFBFBD>znamu, pouzijte kurzor a pr<EFBFBD>kaz FETCH.
Pro v<EFBFBD>ber n<EFBFBD>hodn<EFBFBD>ho r<EFBFBD>dku pouzijte pr<EFBFBD>kaz ve tvaru:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.2) Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek, indexu, datab<EFBFBD>z<EFBFBD>, a definovan<EFBFBD>ch uzivatelu.
Mohu videt dotazy, kter<EFBFBD> pouz<EFBFBD>v<EFBFBD> psql pro zobrazen<EFBFBD> techto informac<EFBFBD>?
V psql pr<EFBFBD>kazem \dt z<EFBFBD>sk<EFBFBD>te seznam tabulek. <EFBFBD>pln<EFBFBD> seznam pr<EFBFBD>kazu psql
z<EFBFBD>sk<EFBFBD>te pr<EFBFBD>kazem \?. Alternativne si muzete prostudovat zdrojov<EFBFBD> k<EFBFBD>d
psql - soubor pgsql/src/bin/psql/describe.c, kter<EFBFBD> obsahuje SQL
pr<EFBFBD>kazy, kter<EFBFBD> jsou generov<EFBFBD>ny pro z<EFBFBD>sk<EFBFBD>n<EFBFBD> v<EFBFBD>stupu psql "backslash"
pr<EFBFBD>kazu. Tak<EFBFBD> muzete nastartovat psql s parametrem -E, kter<EFBFBD> zpusob<EFBFBD>
zobrazen<EFBFBD> vsech SQL pr<EFBFBD>kazu, kter<EFBFBD> se odes<EFBFBD>laj<EFBFBD> na server. PostgreSQL
tak<EFBFBD> podporuje SQL standard INFORMACN<EFBFBD> SCH<EFBFBD>MATA (standardn<EFBFBD> syst<EFBFBD>mov<EFBFBD>
tabulky). Klasick<EFBFBD>m dotazem do syst<EFBFBD>mov<EFBFBD>ch tabulek z<EFBFBD>sk<EFBFBD>te pozadovan<EFBFBD>
informace o strukture datab<EFBFBD>ze.
Syst<EFBFBD>mov<EFBFBD> tabulky PostgreSQL (mimo r<EFBFBD>mec SQL standardu) pouz<EFBFBD>vaj<EFBFBD>
prefix pg_. Pro zjisten<EFBFBD> struktury datab<EFBFBD>ze je muzete pouz<EFBFBD>t tak<EFBFBD>, i
kdyz preferov<EFBFBD>ny jsou dotazy do informacn<EFBFBD>ho sch<EFBFBD>matu.
Seznam vsech datab<EFBFBD>z<EFBFBD> z<EFBFBD>sk<EFBFBD>te pr<EFBFBD>kazem psql -l
Dals<EFBFBD> inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
Obsahuje ilustracn<EFBFBD> SELECTy potrebn<EFBFBD> k z<EFBFBD>sk<EFBFBD>n<EFBFBD> informac<EFBFBD> z syst<EFBFBD>mov<EFBFBD>ch
tabulek datab<EFBFBD>ze.
4.3) Jak zmenit datov<EFBFBD> typ sloupce?
Ve verz<EFBFBD>ch 8.0 a pozdejs<EFBFBD>ch jednoduse:
ALTER TABLE ALTER COLUMN TYPE
V stars<EFBFBD>ch verz<EFBFBD>ch:
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 tab DROP COLUMN old_col;
COMMIT;
Po zmene spustte pr<EFBFBD>kaz VACUUM FULL, aby doslo k uvolnen<EFBFBD> diskov<EFBFBD>ho
prostoru pouzit<EFBFBD>ho v tu chv<EFBFBD>li jiz neplatn<EFBFBD>mi z<EFBFBD>znamy.
4.4) Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost r<EFBFBD>dku, tabulky a datab<EFBFBD>ze?
PostgreSQL m<EFBFBD> tato omezen<EFBFBD>:
Maxim<EFBFBD>ln<EFBFBD> velikost datab<EFBFBD>ze: neomezena (existuj<EFBFBD> 32TB db)
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky: 32 TB
Maxim<EFBFBD>ln<EFBFBD> velikost r<EFBFBD>dky: 480GB
Maxim<EFBFBD>ln<EFBFBD> velikost polozky 1 GB
Maxim<EFBFBD>ln<EFBFBD> pocet r<EFBFBD>dku v tabulce: neomezeno
Maxim<EFBFBD>ln<EFBFBD> pocet sloupcu v tabulce: 250-1600 podle typu
Maxim<EFBFBD>ln<EFBFBD> pocet indexu na tabulce: neomezeno
Ve skutecnosti nic nen<EFBFBD> neomezeno, limitem b<EFBFBD>v<EFBFBD> vzdy dostupn<EFBFBD> diskov<EFBFBD>
pamet nebo velikost operacn<EFBFBD> pameti. Pokud m<EFBFBD>te nekterou z techto
hodnot neobvykle velkou, muze doj<EFBFBD>t ke sn<EFBFBD>zen<EFBFBD> v<EFBFBD>konu.
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky je 32 TB a nevyzaduje podporu velk<EFBFBD>ch
souboru operacn<EFBFBD>m syst<EFBFBD>mem. Velk<EFBFBD> tabulky se ukl<EFBFBD>daj<EFBFBD> do nekolika 1 GB
souboru takze limity souborov<EFBFBD>ho syst<EFBFBD>mu nejsou podstatn<EFBFBD>.
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky a maxim<EFBFBD>ln<EFBFBD> pocet sloupcu muzeme
zectyrn<EFBFBD>sobit nastaven<EFBFBD>m velikosti bloku na 32K.
Indexy jsou povolen<EFBFBD> pouze na sloupc<EFBFBD>ch jejichz d<EFBFBD>lka je mens<EFBFBD> nez
2000 znaku. Pokud tuto d<EFBFBD>lku prekroc<EFBFBD>me a index potrebujeme pro
zajisten<EFBFBD> jednoznacnosti, je vhodnejs<EFBFBD> pouz<EFBFBD>t funkcion<EFBFBD>ln<EFBFBD> index nad
MD5 funkc<EFBFBD> nebo fulltextov<EFBFBD> index.
4.5) Kolik diskov<EFBFBD>ho prostoru je potreba k ulozen<EFBFBD> dat z norm<EFBFBD>ln<EFBFBD>ho textov<EFBFBD>ho
souboru?
PostgreSQL vyzaduje az petin<EFBFBD>sobek diskov<EFBFBD>ho prostoru k ulozen<EFBFBD> dat z
textov<EFBFBD>ho souboru.
Napr<EFBFBD>klad, uvazujme soubor se 100 tis<EFBFBD>ci r<EFBFBD>dky obsahuj<EFBFBD>c<EFBFBD> na kazd<EFBFBD>
r<EFBFBD>dce cel<EFBFBD> c<EFBFBD>slo a textov<EFBFBD> popis. Text je v prumerne dvacet bytu
dlouh<EFBFBD>. Textov<EFBFBD> soubor bude 2.8 MB dlouh<EFBFBD>. Velikost datab<EFBFBD>ze
obsahuj<EFBFBD>c<EFBFBD> odpov<EFBFBD>daj<EFBFBD>c<EFBFBD> data bude zhruba 5.2 MB.
24 bytu: hlavicka r<EFBFBD>dku (priblizne)
24 bytu: jedna celoc<EFBFBD>seln<EFBFBD> polozka a jedna textov<EFBFBD>
+ 4 byty: ukazatel na str<EFBFBD>nku k entici
------------------------------------------------------
52 bytu na r<EFBFBD>dek
Velikost datov<EFBFBD> str<EFBFBD>nky PostgreSQL je 8192 bytu (8KB)
8192 bytu na str<EFBFBD>nce
---------------------- = 158 r<EFBFBD>dek na str<EFBFBD>nku
52 bytu za r<EFBFBD>dek
100000 r<EFBFBD>dek
----------------------- = 633 str<EFBFBD>nek (zaokrouhleno nahoru)
158 r<EFBFBD>dek na str<EFBFBD>nce
633 datov<EFBFBD>ch str<EFBFBD>nek * 8192 bytu na kazdou str<EFBFBD>nku = 5,185,536 bytu (5.2 MB)
Indexy nemaj<EFBFBD> tak velkou rezii, ale mohou b<EFBFBD>t tak<EFBFBD> velk<EFBFBD>, protoze
obsahuj<EFBFBD> indexovan<EFBFBD> data.
Hodnoty NULL jsou ulozeny v bitmap<EFBFBD>ch, takze zab<EFBFBD>raj<EFBFBD> jen velmi m<EFBFBD>lo
diskov<EFBFBD>ho prostoru.
4.6) Muj dotaz je pomal<EFBFBD> a nepouz<EFBFBD>v<EFBFBD> vytvoren<EFBFBD> indexy. Proc?
Kazd<EFBFBD> dotaz nemus<EFBFBD> nutne pouz<EFBFBD>t existuj<EFBFBD>c<EFBFBD> indexy. Index se pouzije
tehdy, kdyz je tabulka vets<EFBFBD> nez urcit<EFBFBD> minim<EFBFBD>ln<EFBFBD> velikost, a dotaz
vyb<EFBFBD>r<EFBFBD> pouze procentu<EFBFBD>lne malou c<EFBFBD>st r<EFBFBD>dku tabulky. To proto, ze
n<EFBFBD>hodn<EFBFBD> pr<EFBFBD>stup k disku dan<EFBFBD> cten<EFBFBD>m indexu muze b<EFBFBD>t pomalejs<EFBFBD> nez
line<EFBFBD>rn<EFBFBD> cten<EFBFBD> tabulky nebo sekvencn<EFBFBD> cten<EFBFBD>.
PostgreSQL rozhoduje o pouzit<EFBFBD> indexu na z<EFBFBD>klade statistiky pr<EFBFBD>stupu k
tabulce. Tyto statistiky se shromazduj<EFBFBD> pr<EFBFBD>kazy VACUUM ANALYZE nebo
ANALYZE. D<EFBFBD>ky statistik<EFBFBD>m m<EFBFBD> optimizer informaci o poctu r<EFBFBD>dek v
tabulce a muze l<EFBFBD>pe rozhodnout o pouzit<EFBFBD> indexu. Statistiky se uplatn<EFBFBD>
pri urcen<EFBFBD> optim<EFBFBD>ln<EFBFBD>ho porad<EFBFBD> a metody spojen<EFBFBD> tabulek. Statistiky by
se meli aktualizovat opakovane, tak jak se men<EFBFBD> obsah tabulek.
Indexy nejsou obycejne pouzity pro setr<EFBFBD>den<EFBFBD> nebo spojen<EFBFBD> tabulek.
Sekvencn<EFBFBD> zpracov<EFBFBD>n<EFBFBD> n<EFBFBD>sledovan<EFBFBD> explicitn<EFBFBD>m tr<EFBFBD>den<EFBFBD>m je obycejne
rychlejs<EFBFBD> nez pouzit<EFBFBD> indexu na velk<EFBFBD> tabulce.
Jinak je tomu v pr<EFBFBD>pade pouzit<EFBFBD> LIMIT a ORDER BY, pri kter<EFBFBD>m se
vetsinou index pouzije, jelikoz je v<EFBFBD>sledkem pouze mal<EFBFBD> c<EFBFBD>st tabulky.
Pokud si mysl<EFBFBD>te, ze optimizer mylne zvolil sekvencn<EFBFBD> prohled<EFBFBD>v<EFBFBD>n<EFBFBD>
tabulky, pouzijte pr<EFBFBD>kaz SET enable_seqscan TO 'off' a zkuste zda je
prohled<EFBFBD>v<EFBFBD>n<EFBFBD> s indexem rychlejs<EFBFBD>.
Pri vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> na z<EFBFBD>klade vzoru jako je napr. oper<EFBFBD>tor LIKE nebo ~ se
indexy pouzij<EFBFBD> pouze za urcit<EFBFBD>ch skutecnost<EFBFBD>:
* zac<EFBFBD>tek hledan<EFBFBD>ho vzoru mus<EFBFBD> b<EFBFBD>t ukotven k zac<EFBFBD>tku, tj.
+ vzor LIKE nesm<EFBFBD> zac<EFBFBD>nat %
+ ~ regul<EFBFBD>rn<EFBFBD> v<EFBFBD>raz mus<EFBFBD> zac<EFBFBD>nat ^
* vzor nesm<EFBFBD> zac<EFBFBD>nat intervalem, napr. [a-e]
* vyhled<EFBFBD>van<EFBFBD>, kter<EFBFBD> nen<EFBFBD> Case sensitiv jako je ILIKE nebo ~*
nepouz<EFBFBD>v<EFBFBD> indexy. Muzete ale pouz<EFBFBD>t funkcion<EFBFBD>ln<EFBFBD> indexy, kter<EFBFBD>
jsou pops<EFBFBD>ny v sekci 4.8
* pri inicializaci datab<EFBFBD>ze (initdb) mus<EFBFBD> b<EFBFBD>t pouzito C locale nebo
vytvorte speci<EFBFBD>ln<EFBFBD> text_pattern_index, kter<EFBFBD> umozn<EFBFBD>, pri
respektov<EFBFBD>n<EFBFBD> zm<EFBFBD>nen<EFBFBD>ch podm<EFBFBD>nek pouzit<EFBFBD> indexu operac<EFBFBD> LIKE. Pro
vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> cel<EFBFBD>ch slov je mozn<EFBFBD> a v<EFBFBD>hodn<EFBFBD> pouz<EFBFBD>t fulltext.
4.7) Jak zjist<EFBFBD>m, jak se vyhodnocuje muj dotaz?
Pod<EFBFBD>vejte se do n<EFBFBD>povedy k pr<EFBFBD>kazu EXPLAIN.
4.8) Jak pouz<EFBFBD>t case-(in)sensitive regul<EFBFBD>rn<EFBFBD> v<EFBFBD>raz? Jak pouz<EFBFBD>t index pro case
insensitive hled<EFBFBD>n<EFBFBD>?
Vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> prostrednictv<EFBFBD>m regul<EFBFBD>rn<EFBFBD>ch vzoru zajistuje oper<EFBFBD>tor ~,
kter<EFBFBD> je case-sensitive. Jeho case-insensitive varianta je oper<EFBFBD>tor
~*. Case-insensitive variac<EFBFBD> oper<EFBFBD>toru LIKE je oper<EFBFBD>tor ILIKE.
Case-insensitive vyhled<EFBFBD>n<EFBFBD> se res<EFBFBD>:
SELECT *
FROM tab
WHERE lower(col) = 'abc';
Tento dotaz nepouzije standardn<EFBFBD> index. Mus<EFBFBD>te pouz<EFBFBD>t tzv.
funkcion<EFBFBD>ln<EFBFBD> index:
CREATE INDEX tabindex ON tab (lower(col));
Pokud index vytvor<EFBFBD>me jako unik<EFBFBD>tn<EFBFBD>, tak muzeme ukl<EFBFBD>dat retezce
obsahuj<EFBFBD>c<EFBFBD> mal<EFBFBD> i velk<EFBFBD> p<EFBFBD>smena, ale nikoliv retezce, kter<EFBFBD> se od sebe
odlisuj<EFBFBD> jen v mal<EFBFBD>ch a velk<EFBFBD>ch p<EFBFBD>smenech. K zajisten<EFBFBD> z<EFBFBD>pisu retezce
obsahuj<EFBFBD>c<EFBFBD> pouze mal<EFBFBD> nebo pouze velk<EFBFBD> p<EFBFBD>smena pouzijte CHECK kontroly
nebo triggery.
4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
retezce, pokud mohou obsahovat NULL? Lze tr<EFBFBD>dit podle toho, jestli je polozka
NULL nebo ne?
Pokud chcete testovat hodnotu NULL pouzijte oper<EFBFBD>tor IS:
SELECT *
FROM tab
WHERE col IS NULL;
K spojen<EFBFBD> retezcu, kter<EFBFBD> mohou obsahovat hodnotu NULL, pouz<EFBFBD>vejte
funkci COALESCE(), napr.:
SELECT COALESCE(col1, '') || COALESCE(col2, '')
FROM tab
Pokud chcete tr<EFBFBD>dit podle hodnoty NULL, pouzijte v<EFBFBD>raz IS NULL nebo IS
NOT NULL v klauzuli ORDER. Hodnota pravda m<EFBFBD> prednost pred hodnotou
false a tedy pokud pouzijete:
SELECT *
FROM tab
ORDER BY (col IS NOT NULL)
tak z<EFBFBD>znamy s NULL budou na zac<EFBFBD>tku setr<EFBFBD>den<EFBFBD>ch dat.
4.10) Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi ruzn<EFBFBD>mi znakov<EFBFBD>mi typy?
Typ Intern<EFBFBD> n<EFBFBD>zev Pozn<EFBFBD>mky
VARCHAR(n) varchar n urcuje maxim<EFBFBD>ln<EFBFBD> d<EFBFBD>lku
CHAR(n) bpchar retezec je do dan<EFBFBD> d<EFBFBD>lky rozs<EFBFBD>ren mezerami
TEXT text bez omezen<EFBFBD> d<EFBFBD>lky
BYTEA bytea pole bytu nespecifikovan<EFBFBD> d<EFBFBD>lky
"char" char jeden znak
Na intern<EFBFBD> n<EFBFBD>zvy muzete narazit v syst<EFBFBD>mov<EFBFBD>m katalogu nebo v nekter<EFBFBD>ch
chybov<EFBFBD>ch hl<EFBFBD>sen<EFBFBD>ch.
Ctyri prvn<EFBFBD> typy jsou tzv. varlena typy (prvn<EFBFBD> ctyri byty na disku
jsou obsahuj<EFBFBD> d<EFBFBD>lku, ostatn<EFBFBD> obsahuj<EFBFBD> vlastn<EFBFBD> data). Skutecne obsazen<EFBFBD>
prostor je tedy o neco m<EFBFBD>lo vets<EFBFBD> nez deklarovan<EFBFBD> velikost. Na druhou
stranu, dels<EFBFBD> retezce jsou komprimov<EFBFBD>ny, takze obsazen<EFBFBD> prostor na
disku muze b<EFBFBD>t mens<EFBFBD> nez se cek<EFBFBD>.
VARCHAR(n) je vhodn<EFBFBD> pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> ruzne dlouh<EFBFBD>ch retezcu u kter<EFBFBD>ch
zn<EFBFBD>me d<EFBFBD>lkov<EFBFBD> omezen<EFBFBD>, TEXT pro retezce bez omezen<EFBFBD> d<EFBFBD>lky (maximum je
jeden gigabyte).
CHAR(n) se pouz<EFBFBD>v<EFBFBD> pro ulozen<EFBFBD> stejne dlouh<EFBFBD>ch retezcu. CHAR(n) dopln<EFBFBD>
mezerami na specifikovanou d<EFBFBD>lku, VARCHAR(n) hodnoty se ukl<EFBFBD>daj<EFBFBD> tak
jak jsou. BYTEA je pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> bin<EFBFBD>rn<EFBFBD>ch dat - non ASCII hodnot.
Vsechny zm<EFBFBD>nen<EFBFBD> typy maj<EFBFBD> podobn<EFBFBD> v<EFBFBD>konov<EFBFBD> charakteristiky.
4.11.1) Jak vytvorit serial/auto-increment polozku?
V PostgreSQL muzete pouz<EFBFBD>t datov<EFBFBD> typ SERIAL. Jeho pouzit<EFBFBD>m se
automaticky vytvor<EFBFBD> sekvence. Napr<EFBFBD>klad:
CREATE TABLE person (
id SERIAL,
name TEXT
);
je automaticky transformov<EFBFBD>no na:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
Podrobnejs<EFBFBD> informace najdete v manu<EFBFBD>lu v popisu pr<EFBFBD>kazu
create_sequence.
4.11.2) Jak z<EFBFBD>skat hodnotu SERIAL po vlozen<EFBFBD> r<EFBFBD>dku?
Nejjednoduss<EFBFBD>m zpusob, jak z<EFBFBD>skat vygenerovanou hodnotu typu SERIAL,
je vyuz<EFBFBD>t klauzuli RETURNING. Pro tabulku z 4.11.1 vypad<EFBFBD> takto:
INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
Tak<EFBFBD> muzete pouz<EFBFBD>t funkci nextvall() a jej<EFBFBD> v<EFBFBD>sledek pouz<EFBFBD>t v pr<EFBFBD>kazu
INSERT, nebo zavolat currval() po proveden<EFBFBD> pr<EFBFBD>kazu INSERT.
4.11.3) Nezpusob<EFBFBD> currval() a nextval() probl<EFBFBD>my ve v<EFBFBD>ce uzivatelsk<EFBFBD>m
prostred<EFBFBD>?
Ne, currval vrac<EFBFBD> vzdy hodnotu, kter<EFBFBD> byla vygenerov<EFBFBD>na pro v<EFBFBD>s.
4.11.4) Proc nen<EFBFBD> vygenerovan<EFBFBD> c<EFBFBD>slo pouzito pri prerusen<EFBFBD> transakce?Proc
vznikaj<EFBFBD> d<EFBFBD>ry v c<EFBFBD>slov<EFBFBD>n<EFBFBD> prostrednictv<EFBFBD>m sekvence nebo typu SERIAL?
Pot<EFBFBD> co sekvence vygeneruje nov<EFBFBD> c<EFBFBD>slo, tak se nedoch<EFBFBD>z<EFBFBD> k zamcen<EFBFBD>
sekvence a necek<EFBFBD> se na <EFBFBD>spesn<EFBFBD> nebo ne<EFBFBD>spesn<EFBFBD> dokoncen<EFBFBD> transakce.
Odvol<EFBFBD>n<EFBFBD>m transakce, kter<EFBFBD> si vyz<EFBFBD>dala c<EFBFBD>sla sekvence se tato c<EFBFBD>sla
nen<EFBFBD>vratne ztrat<EFBFBD>.
4.12) Co to je OID? Co je to CTID?
V pr<EFBFBD>pade, ze tabulku nezaloz<EFBFBD>me s atributem WITHOUT OIDS, tak m<EFBFBD>
kazd<EFBFBD> r<EFBFBD>dek unik<EFBFBD>tn<EFBFBD> identifikacn<EFBFBD> c<EFBFBD>slo OID. Toto c<EFBFBD>slo je 4 bajtov<EFBFBD>
cel<EFBFBD> c<EFBFBD>slo, kter<EFBFBD> je jedinecn<EFBFBD> v cel<EFBFBD> instalaci. Pretece po 4
miliard<EFBFBD>ch r<EFBFBD>dku. PostgreSQL pouz<EFBFBD>v<EFBFBD> OIDs jako intern<EFBFBD> linky v
intern<EFBFBD>ch syst<EFBFBD>mov<EFBFBD>ch tabulk<EFBFBD>ch.
K z<EFBFBD>sk<EFBFBD>n<EFBFBD> unik<EFBFBD>tn<EFBFBD>ho c<EFBFBD>sla v nesyst<EFBFBD>mov<EFBFBD>ch tabulk<EFBFBD>ch je vhodnejs<EFBFBD>
pouzit<EFBFBD> typu SERIAL nez OID, jelikoz sekvence SERIAL se pouz<EFBFBD>v<EFBFBD> pouze
pro jednu tabulku a je tud<EFBFBD>z m<EFBFBD>ne n<EFBFBD>chyln<EFBFBD> na pretecen<EFBFBD>. Pokud byste
se toho ob<EFBFBD>vali, pouzijte typ SERIAL8.
CTID se pouz<EFBFBD>v<EFBFBD> k identifikaci konkr<EFBFBD>tn<EFBFBD>ho fyzick<EFBFBD>ho r<EFBFBD>dku. CTID se
men<EFBFBD> pokud je r<EFBFBD>dek modifikov<EFBFBD>n nebo znovu nacten. Pouz<EFBFBD>vaj<EFBFBD> ho indexy
jako adresaci fyzick<EFBFBD>ch r<EFBFBD>dku.
4.13) Co znamen<EFBFBD> chybov<EFBFBD> hl<EFBFBD>sen<EFBFBD> "ERROR: Memory exhausted in
AllocSetAlloc()"?
Pravdepodobne jste vycerpal dostupnou virtu<EFBFBD>ln<EFBFBD> pamet, nebo tvuj
kernel m<EFBFBD> pr<EFBFBD>lis n<EFBFBD>zk<EFBFBD> limity u urcit<EFBFBD>ch zdroju. Pred startem
PostgreSQL vyzkousejte:
ulimit -d 262144
limit datasize 256m
Mozn<EFBFBD>, ze se projde pouze jeden pr<EFBFBD>kaz - z<EFBFBD>lez<EFBFBD> to na vasem shellu.
Mel by zvednout limity datov<EFBFBD>ch segmentu vasich procesu na dostatecne
velkou hodnotu a snad umoznit dokoncen<EFBFBD> dotazu. Zmena limitu se bude
aplikovat pouze na aktu<EFBFBD>ln<EFBFBD> proces a na vsechny nove vytvoren<EFBFBD>
procesy. Jestlize m<EFBFBD>te probl<EFBFBD>m s SQL klientem, protoze v<EFBFBD>m server
vr<EFBFBD>til pr<EFBFBD>lis dat, zkuste to pred startem klienta.
4.14) Jak zjist<EFBFBD>m, kterou verzi PostgreSQL pouz<EFBFBD>v<EFBFBD>m?
V psql napiste:
SELECT version();
4.15) Jak vytvorit sloupec, kter<EFBFBD> bude implicitne obsahovat aktu<EFBFBD>ln<EFBFBD> cas?
Pouzijte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
4.16) Jak prov<EFBFBD>st vnejs<EFBFBD> spojen<EFBFBD> (outer join)?
PostgreSQL podporuje standardn<EFBFBD> SQL syntaxi pro vnejs<EFBFBD> spojen<EFBFBD>. Zde
jsou dva pr<EFBFBD>klady:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
nebo
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
Tyto identick<EFBFBD> dotazy spoj<EFBFBD> sloupec t1.col k sloupci t2.col, a jeste
vr<EFBFBD>t<EFBFBD> vsechny nesp<EFBFBD>rovan<EFBFBD> r<EFBFBD>dky t2 (ty, kter<EFBFBD> nedohled<EFBFBD> v t2). RIGHT
JOIN by pripojil vsechny nesp<EFBFBD>rovan<EFBFBD> r<EFBFBD>dky z t2. FULL JOIN vr<EFBFBD>t<EFBFBD>
vsechny sp<EFBFBD>rovan<EFBFBD> r<EFBFBD>dky i vsechny zb<EFBFBD>vaj<EFBFBD>c<EFBFBD> r<EFBFBD>dky z obou tabulek.
Kl<EFBFBD>cov<EFBFBD> slovo OUTER je voliteln<EFBFBD>. Bezn<EFBFBD> operace JOIN se tak<EFBFBD> oznacuje
jako vnitrn<EFBFBD> spojen<EFBFBD>.
4.17) Jak prov<EFBFBD>st dotaz napr<EFBFBD>c nekolika datab<EFBFBD>zemi?
Neexistuje z<EFBFBD>dn<EFBFBD> zpusob, jak se v dotazu odkazovat na tabulky z jin<EFBFBD>
nez aktu<EFBFBD>ln<EFBFBD> datab<EFBFBD>ze. A to protoze m<EFBFBD> syst<EFBFBD>mov<EFBFBD> tabulky ulozen<EFBFBD>
nez<EFBFBD>visle v kazd<EFBFBD> datab<EFBFBD>zi a nen<EFBFBD> tak <EFBFBD>plne zrejm<EFBFBD>, jak by se dotaz
proveden<EFBFBD> napr<EFBFBD>c datab<EFBFBD>zemi mel chovat.
Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomoc<EFBFBD>
funkc<EFBFBD>. Druh<EFBFBD> zpusob je simult<EFBFBD>ln<EFBFBD> pripojen<EFBFBD> klienta ke vsem
relevantn<EFBFBD>m datab<EFBFBD>z<EFBFBD>m a sloucen<EFBFBD> v<EFBFBD>sledku na strane klienta.
4.18) Muze funkce vr<EFBFBD>tit v<EFBFBD>ce r<EFBFBD>dku nebo sloupcu?
Jde to jednoduse pomoc<EFBFBD> set-returning funkce. V<EFBFBD>ce na
http://www.postgresql.org/docs/techdocs.17.
4.19) Co je pr<EFBFBD>cinou chyby "relation with OID xxxxx does not exist"?
Nechten<EFBFBD>m vedlejs<EFBFBD>m efektem kesov<EFBFBD>n<EFBFBD> SQL dotazu v PL/pgSQL funkci je
probl<EFBFBD>m s neplatn<EFBFBD>mi odkazy na docasn<EFBFBD> tabulky, kter<EFBFBD> byly od prvn<EFBFBD>ho
spusten<EFBFBD> funkce zruseny a znovu vytvoreny pred dals<EFBFBD>m spusten<EFBFBD>m
PL/pgSQL funkce. Resen<EFBFBD>m je pouz<EFBFBD>t pr<EFBFBD>kaz EXECUTE a to proto, ze
prov<EFBFBD>dec<EFBFBD> pl<EFBFBD>n SQL pr<EFBFBD>kazu spousten<EFBFBD>ho pr<EFBFBD>kazem EXECUTE se vytv<EFBFBD>r<EFBFBD>
pokazd<EFBFBD> znovu (neukl<EFBFBD>d<EFBFBD> se do cache).
Tento probl<EFBFBD>m by se nemel vyskytovat u PostgreSQL verze 8.3 a vyss<EFBFBD>ch
verz<EFBFBD>ch.
4.20) Jak<EFBFBD> jsou moznosti replikace datab<EFBFBD>z<EFBFBD>?
Replikaci datab<EFBFBD>ze umoznuje nekolik technoligi<EFBFBD>. Kazd<EFBFBD> m<EFBFBD> urcit<EFBFBD>
v<EFBFBD>hody a nev<EFBFBD>hody.
Master/Slave replikaci podporuje jeden hlavn<EFBFBD> server, kter<EFBFBD> prij<EFBFBD>m<EFBFBD>
pozadavky na z<EFBFBD>pis a cten<EFBFBD>, a nekolik podr<EFBFBD>zen<EFBFBD>ch serveru, kter<EFBFBD>
umoznuj<EFBFBD> pouze cten<EFBFBD> (SELECT). Nejrozs<EFBFBD>renejs<EFBFBD>m volne dostupn<EFBFBD>m
resen<EFBFBD>m tohoto typu je Slony-I.
Replikace typu Multi-master podporuje existenci nekolika serveru s
povolen<EFBFBD>m z<EFBFBD>pisem na v<EFBFBD>ce replikovan<EFBFBD>ch serverech. Toto resen<EFBFBD> zvysuje
z<EFBFBD>tez serveru, protoze je nutn<EFBFBD> synchronizace serveru.
Nejrozs<EFBFBD>renejs<EFBFBD>m volne dostupn<EFBFBD>m resen<EFBFBD>m je PGCluster.
Jeste existuje nekolik komercn<EFBFBD>ch a hardware resen<EFBFBD> replikac<EFBFBD>
podporuj<EFBFBD>c<EFBFBD>ch ruzn<EFBFBD> modely replikace.
4.21) Proc v dotazu nejsou rozpozn<EFBFBD>ny n<EFBFBD>zvy m<EFBFBD>ch tabulek nebo funkc<EFBFBD>? Proc
jsou velk<EFBFBD> p<EFBFBD>smena v n<EFBFBD>zvech automaticky prevedena na mal<EFBFBD> p<EFBFBD>smena?
Nejcastejs<EFBFBD>m duvodem nerozpozn<EFBFBD>n<EFBFBD> n<EFBFBD>zvu objektu bylo pouzit<EFBFBD> vlozen<EFBFBD>
n<EFBFBD>zvu sloupce nebo tabulky mezi uvozovky pri zakl<EFBFBD>d<EFBFBD>n<EFBFBD> tabulky. Pokud
se n<EFBFBD>zev zap<EFBFBD>se mezi uvozovky, pak je case sensitive, a v dusledku
toho je nutn<EFBFBD> n<EFBFBD>zvy techto sloupcu nebo tabulek v SQL pr<EFBFBD>kazech tak<EFBFBD>
vkl<EFBFBD>dat mezi uvozovky (pokud obsahuj<EFBFBD> velk<EFBFBD> p<EFBFBD>smena). Nekter<EFBFBD>
programy, jako je napr<EFBFBD>klad pgAdmin, automaticky pouz<EFBFBD>vaj<EFBFBD> uvozovky.
Takze pokud chcete, aby syst<EFBFBD>m identifikoval identifik<EFBFBD>tor, mus<EFBFBD>te:
* nepouz<EFBFBD>vat uvozovky v pr<EFBFBD>kazu CREATE TABLE
* v identifik<EFBFBD>toru pouz<EFBFBD>t pouze mal<EFBFBD> p<EFBFBD>smena
* v dotazech vkl<EFBFBD>dat identifik<EFBFBD>tory do uvozovek