Sunteți pe pagina 1din 324

Manual del usuario de PostgreSQL

El equipo de desarrollo de PostgreSQL

Editado por

Thomas Lockhart

Manual del usuario de PostgreSQL


      !#"$
 %'&()*+,$-/.()

0%132547698;:<>=@?
:2BADCE8;FGC8;:6/H 25478ICEJ%C#KMLENNEOQPRN
S138#:T0 192 476/8;:2UT 1GV#CET3WX:;Y
:TZ1RS AD:I[4/U8;1G\ S]

Tabla de contenidos

^_`badce fghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghg
??
i g%jkl cfm_n9l eIfkgZghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZg
??
o9" p ,  qsrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
t  u v()Qw v3Q drZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr
??
x d-/Q  s t .  xyrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
3Q d3z%{wrZr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr ??
3Q d!
"D$|r rhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr
} -9 d->~ v Q~u dErhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
d-/ rhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
9 rhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 rZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
??
& E*+rhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??
 %-/rhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr
 !# % *+ d) )5*+  v 
d -9  % % r rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 rZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
xE()Qsx-9d 3QE%'r rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
??
g%^e klIa%e ^yghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghg
??
  u DrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
-9u   urhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
-9u )  d3 dEud'rhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr
*+ )QXrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
*+ rhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
) )Q rZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
) %) ,Q  B)rZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
) %) ,Q)Q r rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
) %) ,Q )  %) DrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
) %) ,Q , vQs ) 
 r7rZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
) %) , vQ } Exr rhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
%*+,x  *+)rhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
*+wrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 *+)r7rhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr ??
  Br7r rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
??
 B) ~rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
*+ QXr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr ??
 )  )-9) 
r7r rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 )  }  B-9DrhrhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
$Q dI Qu|rZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
-9 /@r7r rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr
??
$Q~*r7rZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
g%al av)
gZghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghg
??
*+ -s&
x rhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr
??
&() v!# #&#x rhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr ??
) d x&
x XrZrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
()%E-9Q B&
x @rhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr
Q #&*+ &
x )r rhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
Q #&*+ v5) BrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
Q #&*+ Q rhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr ??
??
&*+ v) drhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
) )~rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr
t  d&
x rZrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
*+ QE-&
x r rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
??
)Br7rhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
$) v!# *+ )rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??

t  yrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr
??
Q(rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
xrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr ??
-9 Xr rhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr
??
5  d E.,)| }  /3 drhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
r7rhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr
??
) drhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
g%camfcghghg ghghghgZghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghg
??
$ -9
 -9 B d)-9 wrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
  B, d)  rhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr
  B,) *+p -/rhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
  B, d*+pd -/~rhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
  B, )Q u%, v  d*+rhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
  B,5 rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
  B,5~ &wrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
??
g%_kn9e fkd gZghgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghg
??
 )-/) s!
"D$rZrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
 )-/) s% *+d -9srZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
!# ) )-9 )
r7rZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
 )-/) s  -9())
yrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 )-/) s *+QrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhr ??
 )-/)  *+pd -9#rZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 )-/) s  5rZrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
g%fk%c9e km~l e5f g ghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghg ghghghghgZghghghg ghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghg
??
)-9 Q, d)  rhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr
 rZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 d) r7rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
  Br7r rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
??
-9 d*+ )Q -9)u dErhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??

I *+rZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
 )-/) rhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??

I *+rZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr
d3 Qs -9)  %rhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
??

I *+rZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr
)  , rhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
??

I *+rZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
g%kme5n9dn95a%, 9Rg ghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghg
??
g%a%l5ce n/dBg ghghgZghghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghg
??
g%ckn9eIa)ghghgZghghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghg ghghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghg
??
i g _ l e5;,c9e fkfkn/_cckn9fkl cf fkl5cfm~ a~fkn9_cckn9e5a_ l e
,c/e;kghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZg
??
5)Q -9-9rhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??
} *+ d)  )-9-9)/rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr
u   d-/Q ~-9 rhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr ??
u  %3%*+ )   r rhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
t    x )rZrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
t    v)u d  rZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
t    v)u d rhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
t     v)-9 rZrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??
() d   s v-9)3Q )-9w % s d d
)u d -9-9r rhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZ??
r ??
iBi gfk_cakmf9_kl fckfgZghgZghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghg
??
i g m`+e5ke;/l can/e km~_kava9~m~al fgZghgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghg
??
 d-9 t   QrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr
??

D-9-9)  } Q ) u  t %3 d,  rhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
} -9-9 D~ ) t   % )r7rZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr
??
u d%E t   QrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
u d%E&#@rZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr
  -9-9  ) t   QrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
??
i g `ban>ka`+e5dkl f%kme 9n/fghghg ghghghgZghghghg ghghghgZghghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghg
??
i g jk9l5c_n9n/e fk ^gZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghg ghg
??
} t &yrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr
??
 }  rhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 } & } t $ } rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 } D!# } rhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
t  r rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr
$ !#wr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
$!#& rhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 5&brZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
  rhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 } & }  } &rZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 } & } & } t } !#wrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
 } & & rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
 } & DrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??
 } & rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
 } &$ } } rhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
 } &  } & rhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 } & $rZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhr ??
 } &!
" |rhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??
 } && } t $)rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
 } && } t $) } !rhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
 } &&  rZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
 } && rZrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
 } D!# } rZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 } 5!#& } rhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
 $ } rZrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
$&brhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 }  } &+rZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
 } & } t } !
rZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
M & rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 DrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
M r rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
M$ } } wrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
  } & rZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr ??
 D$~rZrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
M!#"DD rZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
M& } t $)rhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
M&  rhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
M& rhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr ??
M!# rZrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
M5rZrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhr ??
??
 rZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
$ } rZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhr ??
& rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr ??
} &rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr
??
!
 &r rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
$ !
& r rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
$ } rhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
$ D rhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
rZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr ??

&5 rhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhr
!
&rZr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZr ??
 Mrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhr ??
$$ t } r rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
??
!#$ &rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??

!#$ &| & rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
!#&~rZrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
!# r rhrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr ??
& } &r rhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhr ??
$5!#& rhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
D } &brhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
} DwrhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhr ??
i g  e n9a n9e fk%g ghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghg
??
rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
createdb
rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
createlang
rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
createuser
r rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
dropdb
rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
droplang
rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
dropuser
r
h
r
h
r
h
r
Z
r
Z
r
h
r
h
r
h
r
Z
r
rhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
ecpg
rZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
pgaccess
r rhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
pgadmin
r rhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
pg_dump
rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
pg_dumpall
r
h
r
h
r
h
r
Z
r
Z
r
h
r
h
r
h
r
Z
r
h
r
h
r
h
r
r
rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhr ??
psql
r
h
r
h
r
Z
r
h
r
h
r
h
r
r
rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
pgtclsh
r
h
r
h
r
h
r
h
r
Z
r
h
r
Z
r
h
r
Z
r
rhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
pgtksh
Z
r
h
r
h
r
Z
r
Z
r
rhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
vacuumdb
i g  e n9a n9e fk%m%/e 9l `+agZghgZghgZghghghg ghghghgZghghghg ghghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghghg ghghghgZghgZghgZghghghgZgZghghgZghghghg ghghghgZghg
??
r rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
initdb
rZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhr rhrhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhr ??
initlocation
Z
r
h
r
h
r
Z
r
Z
r
h
r
h
r
h
r
Z
r
rZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
ipcclean
rhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhr ??
pg_passwd
rZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
pg_upgrade
Z
r
h
r
h
r
Z
r
Z
r
rhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhr ??
postgres
Z
r
rhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
postmaster
D i gda_ma~m~n9aRfcag ghghghgZghghghg ghghghgZghgZghgZghghghgZgZghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghgZghghghg ghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghg
??
),()ErhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhr ??
)%E } QE%),rhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
)  Q -9 , ) d, v d-/()
Q *+wrhrZrhrhrhr rhrhrhrZrhrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhr ??
 rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrZrhrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZrhrhrZrhrhrhr rhrhrhrZrhrhrZrZrhrhrhrZrhrZrhrhrZrhrhrhr rhrhrhrZrhrhrhr rhrhrhrZrhrZrhrZrhrhrhrZrZr ??
,e  e fca% asgZghghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZgZghghgZghghghg ghghghghgZghghgZgZghghghgZghgZghgZghghghg ghghghgZghghghg ghghghgZghghgZgZghghghgZghgZghgZghghghghg ghghghgZghghghg ghghghgZghgZghgZghghghg ghghghgZghg

??

Sumario
Q  d3%ERE)*+ )Q D dM  EQ*+ )Q  )-9 w *+ 
 %-/ |)u E% %5)M t .  x/  ) dE| d*+ -/() 
-9)-9 Q   %  -9)  ) %dI Q   ()E *+ d
 %3) ~ b )%v dv Qv-/*+ -9 r  B-9  EQ D ) I
!
"D$z #!
"D$
) d  )-9-9) d3x  d) DQv QrdQ
 d!"$b  | -/ d) )Q  w*+)-/x-9 dEQy -/y)
 t dE.  x#r

Captulo 1. Introduction
 w-/ *+ d)   )*M)   %E d)3Q *+ *+ )*+ d)  %3 d
QQ !#"D$@E)*+ )Q  % +)u dE  E)
t .  dx
r9  !#"$+ QD Q   d  r  r/x -9 y  
 ) ) -9() !
Q E%. Q#  )u dEv%
)*+-/% v -9 wDd }  )-9 x -9Q~ 5)u  -9
} u)d|  )| D }  }  -9)b 5)u Q-9 
} *+)w } %~ )-9 -/)~  )-9~ !# %x!#$ 5)-#r

Qu es Postgres?

$X *+%X '*+) d)*+ )Qw t   % X %-/) QE%-/) d t !#h
  *+   s   v-/) )w-9 d-/-9 v d-/) s-/)*+
 BX   -/)  d)    D    d-/-9Xr
 *+%-9*+ -9 D-9
  d3
v v v)-9 x d) *+pdE-9~  )    %)  d) -9 )%
-9Ed-9 pd d3-/%) % D*+) QE%x -9()r#Q ) *+ )Q  ->)-9   d
*+  w) d-/ )~%s-9-9) ,5 Q E%, -9 D vQr*+
 M d-9) 3Q xb*+  duw d 
 *+-9% Q) /r
!
M *+-9*+| D()D*+ )-9)% d3Q*+-9Q*+p +()%-/ *+ x|-9
*+ *+ d) -9 D-9  -/%-/) rd3Q dv  -9 ) d)-/-9) 
 %)-/)-9E%w3  )Q -9  |-/)-9 Q%-/) dw-9 d )u
yw   vs  s    ) dX5%-/*+ d) v d
3Q *+
-9 
()  )-9
 
)-/) 
Q-/%E-9Q BQ-/%s Q )-9wx

-9)

d3QE-9-9) s )QE)Q
3E% /s QE 
d,   d
5)Q E% )-9-9)%
 ,-9 -9 dE -9,-/-/%~3Q d w-9Q w  t  d, %  )Q
-9 -9*+  
   E    r Q  D   Dpd3Q+ d d) d  I dE%-/*+
9    s~       D + ) dE)|b +%u -9()
 d~%E  ) 
Q d t   Q' d-9)% ' -9) r  Q )  )-9-Q  -9
  w3|s *+ )y ~  w E d) %dI Qr w() -9()

 )% t %3 d Q-9*+ d-/ d()b)-9E -9 /) *M ) -9-Q  -/
   vQ ,  ) )rr

Breve historia de Postgres

!
Q *+   t %3 ds Q %-/)  E  % I Q-/)-/y-/
*+  !#"$+ x du d*+ )Q *+%y  z{   u%y    Q 
 d d-/  t dE.  x#r b-9 -9 D )p -9 D QEpd  !#"D$
 d) d3Qs w  wQ -9 dEQy*+u)d()x M  -9 )
M-9)  -9)-/  )-9*+   u )) )|-/%3 y) !#"D$5)
-9 x ) -/)  %3Q)-/-9) x x| )-9) dv )   
-9)Q)Q*+p -9 %*+D-9I  D s )-9 -9 ) I ' s*+-9
   u%  %Q-/xxQ() r
)-/ x ) 

El proyecto Postgres de Berkeley


$v*+ d*+ )Q-9  t !w3Q ds-9*+ )D z& r>$-9)-9 Q,)-9 
E d *+    )Q d(
') +*,  -.y /10 2-)3  x )-9| *+ d
7    rB 8) 3Q *+ D 
  )-/% /-/ 4
') 50  2-) 6*D +
:

;
*





<
b

 /= ) :0  >- :?$  ~ @ #  r%$y-9x
  -/QM d3 *+*+ )Qb 9
')
   d-9    , w*+-9 )%*+ )    d %  dA
') +0  2-)3 , 9
-<
$ @" #  r
Q ()%3,us u3) *+ )Q  d3 w d) )-9 r/E*M ,3
 d*+ y     -9) z &Bx  *+QE% d )  )-9 }
 ,
    /E0  2-)  d
!
 "z &&r$)*+'v dE d -/Qv C
'D) ! ,
),-/,  s Q E, F
 ) "z & z)r>   d3Qv~ )w-9Q-/v 
*+ 
$ 9 @ = <0  2-)3 H?,   @ # 

3Q *+ , @2 G /;
?,   J$0 K 3  JL,  )  -M NM O1)  (*D  B   @ # ,  xM9pdX3 dQ sE   s  )   8)|# I d
 )D zz D)-9E%)r$   /-9 zz x 8) )v*+ d*+ )
 %-/s*+  d@   @ *+-9 )*+ d) / D Q d-/ Q ,-9)  %@*+ EIE
xM 3Q *+y  -9  y  ~)  duXr% *+xEQ ~  )Q ~u d
) s() w d)%*+ )Q ~Q z{v5u *+%Q 3 v-9 d)  *+ EIE%'
EQxwr
Q , *+w  vw*+ *+ d) -9 *+ -/(),-9-9) , v)u d -9
xy -/-9r)  v d9 3Q *+ ~) v ))-9 #    d v
*+)QE%-/  d)*+ )QM *+Q d -9-9) )   w   
*+ )Q  d 'xu3Q *+%, ) *+-9 -9)rE&*+p y (~  
~-/*+D )() *+ )Q d -/% u u )u  r )%*+ ) d 5 QE
5) E*+% M&# d-/()) d  P Q *+ )Q %E,5) E*+ Q  *+ -9
x++-9*+ d-/%@r%Q ~ +y3 dv XE)-9  v QE dXx d-/Q
-9 ) -/ -9*M  -9!#   dS R ~) ds zz r
% *+ 8)~ s-9*+ ) s  E Q E)@-9%3 s -/ )Q zz r ) 
 D()u|   D *+)Q )*+ )QM -9x|%vQ d~ D D d3Q+-9 
)Q *+     d-/%E s)u  -9r>  d3    -9 d3Q
-9
% x -9QQ *+)-9*+ d) v-9w dEr r
Postgres95
 zzd } ) d UTxV5x () $W8) y )Qp  Q  v )  ~!
"D$|wQ
 dr  z{~   -9D~-9)Q) X-/y ~ d%E   v )-9) ~ |
()  d-9 d+ *+ )-/*+ + -9 ) )Q  *+)-9x-9  
 
-9)  s t .  x
r
-/+   z{y  % Q| } !# xb3  %*+ 8)M  -9M d  { Xr
-9()~-9*+~ )w*+ EIE+  )*+ d) |x| -9  *+) d)*+ )
 XrdQ z{u r r y3 EI -9   db E)   { X *+vE% d+ -9)I
t )-9()*+.-9*+E%-9 Q ur r }  d*+ |-/ d-/-9 M dE B@p  %
 y)-9 ,*+ EIE

Y
Y

Z

X d)   -/)  w   d   d *+dM-9!#"D$ *+ d*+ ) %+
 u r$3 -9)3 Qy)  3EQ() M  d!
"D$ u *+%
I  +  *+ % +Q z{-9+ )-/) v!#"$ )
  @r $%~ )-9) d /v  db *+ d*+ ) %rd&#*Mpd  8)%
)~*+ *+ )Q-9 v-/% 3  D t r$)   libpq E*+%) -9
) vv*+%, d3-9 s d r
}  *+ E*+ D*+) E%-9) D)-9 xM +)  u|*+

psql
%E d %-9)3 Q!#"D$)Q E%-/Qu 3)w  readline r

Y
Y

D)y)  u dE ) dE  libpgtcl y-9 )Q ww d&-9 r%D
()  v Q d*+ -9()EQ~)  u, d) &-9~)Q -9 @-9 *+
Q@Q z{v  *+ tcl
!
v duw)Q  ~-9dI Qs) dr$dI  E%) , v5)u 5  d
,)-9*+ -9)*+ E+*+%-/ d) dI  E) dy ,3Q *+b +%-9()u
)u dE   d*+) r
!# | *+)Q*+p d *+b | y+)u  M) %)-/%' y 
  ) s-9*+   d3-9 r
!#   x-9y d
-/  )Q   u Q  E%
)  -/ d)%,-9-Q Q
-9-9*+ ) ds v!#"D$x   z{)r
!
v Q *+. ~5 du w t ! *+. ~w-9*+-9r9  z{~Q*+
p v X-9*+D-/y y-/-,y-9() ' #()% 3 -9  
 d*+
 ) -9 uE%  )Q + r

Y
Y
Y

PostgreSQL
 z%z
3 () u )Q   )*+ =[Q z{]\)  D )   *+
Xr d*+ D)  u)*+ /Q !#"D$9  Q d -9 )Q s   
)xu dE) *+ -9 )Q -9+-9%-/) !#"D$r } )*+*+|Q *+()-9
*+   )*+  u EQ   r duu )Dvv -9  )-93 d 
)*+ )Q v' x d-/Q  r
E)Q  d3%E 3Q d3z%{M3 ()%())-9p|  )Q-/%x d) ) 
 d*+ M d-9 *+Q wQr +  !#"$
p ) ()D%3%y
 *+ )Q-9-9 d  -9@x-9-9d B% )   dQE%Q~-/)Q) D @@ /r
$)-/ *+ EI, Q !#"D$)-9 x

Y
Y
Y
Y
Y

$~   w DQ()%3 Q w d-/)Q D-9)-9  )-9*+  
u ) -/  *+Q ~-9-9  ~3y -9Q E-9)Q) , x ) -9)
 d)  )Q -9Q -9  3Qx *+ -9% y d 
-9 )Q s  ,^ *+*+ )QE%3 s s% @ dE*+) d-/ s3) -/)
  %r
!
~()*+ *+ )Qy*+ )Q -9d-/Q Q-/s *+Q w #)-9 x )
 -9)  %39u ) -Q9 d3Q-/-9) su%  X-9*+ -/) )Q
x /,5Q  r
!
()" 8)w )-9) X ) -9  d3Q)!
"D$z d)-9 x )-9u 
*+
 d) -9  )Q -9*+% E% Q-/% )  d3
-/)
u  Qsx ) v  )Q s)sx( #% -*+ dr
$sQ,)Q )s()y*+ EI%)-/ x ))  uQ,  d-/()
()E
)*+xEQ ~v , d*+pd -/%-9) dr
$u -/ d@-9b X*+Qv Qw()b)-9 d*+ ) %y*+d
*+ d) w M  % X
x bQ *+ wE)   w()D>Qy . & X   w   u d
 r  )r

Acerca de esta versin

Q !#"D$ Q) -/ r#3Q *+%) ' -9E yu  r { 
 d!"$r
_

!
 3%E  ,~ B v~~u 3  ~-9*+  !#"$r
*+   D   } *M)3QE%u   %  E*+%vEQr
 ) dE%    d ~QE v-9    '3Q *+-/*+Q ~D)
-/
 v-9*+  ~w -#r

Recursos

 *M)   ~%)) y  )Q  d


&
Q
5)Q -9-9~)  us  r -/  -9d-/Q  -9u)%r
~ 3 
5) *+-9 ) dE
%E  3 %E)-9 x v-9*+),xQ  r
~ d
E*+%
5) *+-9%u)%E*M  -9-9) dr5)-9 x )b 
x #Q )| w )-/) # dE ~)Q 5%-/ dxy   8) ~-9
-/) r
~  } *+) 
5) *+-9 ) -9x*+)QE%-/r$ ~ v  3EQXr
~  %
5) E*+%-/ G    r
 y-9 *+ )Q d%E  
w dE)    %-9)QE x )bx -9Q+   a `y) E*+%-/
 0
-9D 9 r } -9
 dI   #+ -9-9) dw% /-9  c
 b =
 e0
-9D 9 r
 *+ d) )-9  dd
 b 
)    /)-/
}
: 
g )9*+ r -9 d ~ v-9*+%)r -9Q %*+ ) )-/  fb
}  d*+ s vp  ~*+%) %()x  -9 3,   ~ v3 dEu vx w~w) %
-9x d  Q 
*+y 
$)% *+)  *+  -/)  d) *+) *+-9  -9
*+)r
} "D5 / )Q    
$~ -9-/ v  )    )Q  } " -9)  d) v    ~ d )Q d)
 x ,3 )Q   vQ )   vu @-9~Q E*+~ dy   v v  r
$ }   } 
$-9()u%*+$ }   }  Q|) w )-9)
  -/) r

h

!#
3Q  s3Q dKi#-9)Q ) )5*+-9    )QE -9) '))
-/ x rx -9Q%*+*+())-   w-9)  d) d()Q-9y vs3Q
 -9 D  -9QE)-9@r }  Ev )-9)QQ) ) *+-9r
$  E 
$w3Q ~-/ d   d) kj -9()u ml d    d '%Ew-9) Q' 
  )Qr

DQ 6n
Q @   -9 w -9 dEQr *+QB  )  s-9*+ )
  %E 3EQ r } *+ D   *+ d  s   *+ 
  ) d Q%Ey    y%x  d)x v*+ b -/ *+ d) -9
 bQ~ -9 Xr )3  D-9)Q     )rd!# ) | d
3-9  |   )M  p-9 *+   -9E Mx|-9)QE x)rd!# 8) )  u
-/%Ed-9 Q-/%,%-9() Er
} %   '-/-9)  d# dE d)-/  d -/)-9E d-/-9) 
x-9*+s*+ ) ,ww-9 *+ )Q-9)   ~ s )w  d)~ *+w v *+ dr
  -9>7) -9()u  wwQ v-/ , ,   d '%Ew-9*+ )
3 ,   r

Terminologa

-9 *+ )Q-93  )Q  5   #     y)Q   %v-/*+*+  )
    ) %Q r M    ~3 ) %*+~  -9Q  
  w % Q w )*+*+*+  ) Q  p *+)b )Q) E*M
*+ d-/-9    d,-/I ) -9)-9 Qy ~*+)x  w 
Q ) r
    )9  3Q dy  ds  *+ postgres   |  ] 8) 
-/() d 3 d@ Q@x)   r *+D    E  
Q )D  -/% ))  ,*+ -9)*+ Q -9-/x   -9-9  
-9 %   s ,@QX , E*+%EQE%Er }  d*+/%%  d  ~ ,  @ ,
 *+ w EI -9 QsE%*+  w D    ) *+ )Q ) QM) 
   ErB& )D |-/  d) D   3  d   w     )*+*+
      Eb )5   -9)-9-9*+ / r%   3 %Eb  dE7
 d) @  d) -9'    g !#*  )Q v-/ d%) ,   r
B  o D     B   D    /  t } B ' 3) )
      9D  DE
  ) %  '-9y*M -9)*+()%-/ d-9 *+@ ) -9   
|w |Q r/ t }   d ~ 8))  du  E, d*+p Qy -9EQy*+
 d)Q x*+)Q ) d y-9Q )Q %3 d, Q)Q~ 3@-9 createdb r
 postmaster  -9 d3y   -9 -9*+ )  dEQD -9) ) -/ d )5() /
s Q-/) X 3Q *+Q rG$-9-9) X ) d)3 ,-9) -9 % post   *+)  d) v 3Q' ,  /s d
3Q *+~x v-/*+ )-9-9 )Q
master
~-9 ~-9. )rd postmaster   d -9 Qu~ *+ )Q~  D
)  s d) @E)  )Q3 -9*+ *+ d) 'r !# d*+%9 -9)

*+ )Qs s) d-/ dE3 v) d) wQE%Q%@-9u,Qs-9 )   v)
  EI -9  ~wv*+) ~' d5 d-/QXr
-9. d) DQ v *+ EI -9 Q postgres  d  M  d D EI -9  % d
   3 %E -9Q *+ d) +  | s) p  Q | + ) d M 3 %E MQ 
-/y 
)*+  ~   -/*+ y% *+ )Q r!
y d*+%()-9 X Q 

*+)w  Q5 /-9*+ xy   w w-9~-9 Q*+ d#3Q


   ) Q~ -9*+ d)D 3Q*+ Q  Xr

Notacin

[)rhrhr \ /usr/local/pgsql/  ) v ~ )*M ~ ~-9()  ~ 3w%Ew  / )Q

-9*+)5% (  -9Q()*+ v d       r
M)@-/-9()  d#[<p2\xq[r#\ )-/ )M  -9u 
-9) r    d-9 )Q wu # [<s2\(
x [<t2\ x   D-9)Q )Edu dEQ-9 # [du
\
)-9~   v d   ' )~ ,-9)    v3 d Eu  -9 dr
@ EI *+Bp ) d3# [# \,d
x [ \  , 3%D%Es%   /3) X )r
[du
\~    d) r
$w EI *+*+3QE% ) ~ EI -9    d3 u%Ev-9  ) %wxb*+dr%$
 d) ' EI -9  %  ~-9  )Q~ d
)  %Ey d- %,v
 [Hw6\r$%, ) 
EI -9     v-9  )Qv d#   3 %E     %Edy -9 )'o
 ["Xx\
*+ )QED    ) d EI -9 Q  |-9  )Q| y   u d
 %Ed -9 /y
 [z\r$ ) ~ !
"D$ d3Q -9 )y
 [{D|\+)
 %Ed -9 ds')*+Q% ) ) 
-9) Q@r
Nota: En el momento de escribir (Postgres v6.5) la notacin de las rdenes flagging
(o flojos) no es universalmente estable o congruente en todo el conjunto de la documentacin. Por favor, enve los problemas a la Lista de Correo de la Documentacin (o
Documentation Mailing List) 13.

Y2K Statement (Informe sobre el efecto 2000)


Autor: Escrito por Thomas Lockhart 14 el 22-10-1998.

  b  %   u *+ )&# d*  3Q d!


"D$
-9) d y-9b y3  %  Q -9*+  u-9-9
%Ed) x+ d3)+ -9*+ %*+ )Q )*+ d) Xrd!
| *+
y *+*+ )Q w d3-9 )

Y
Y
Y

   )  ' d#Q9u )Q~ dD d% d  ~ 3EQ ,   dX d3 u d*+
  zz %)  d) -9) %)-/v )) *+ y 
-9   s d
-9)-9,-/%*+, v -9()v Q)  ) D % v r
  s w  )5*+ )  d) -9)3Q)-9  #Q )-9 w) *+  w 
 *+ # d -9  d )-9    '     B)%  -9*+
  u dE) y 3Q d -9 )Q  +u E%-/Q  rE*+
() d d3 dE%  *+ 3Q  )%vw    v()%x) %
xD -9%-/-9Qu '  ' d %' -9E   r
|     Q  -9      ()-9 D D -9()  
  -9E )+)*+   8)+  %-9 *+ )Qw d y 
3 %E R -9  Q vQr3~ 8) -9E -9)*+ 3
wQE%)3-9|)-9Qu d z B )y  8) % `# E}r [B  % \w3 ~)Q  Q~-9*+
[ z B d  \%*+ )Qs  y [ z % \w )Q  Q~-/*+V [  z   \)r

$~ *+%w Quw% d -9  % ! 5Q *+y dEQu   X  
Qps)3Q~  @ d-9)@-9 )-9 ~  -9()-9 m s   d
 )xw  /-/ d) *+ , d% d -9  d  -9)  r
E Q%3 ~&() ) +dI -9I T x&()  5) Q  B W w d )3-9 |*+
)w3 v  ) y d d-/Q % Q-/ *+ )Q v y   ~Q ) ~   wu d'-9 
 3 -9 -9  %-9@    v)()x   v%Er

Copyrights y Marcas Registradas

 = $%>( :1  " 1E@ - ) + 1   5d$E9;  # Df K9E


@V ) f  w% B % y 96  9 /3 9 -)   $E #  ~ >@d - ) #J]-)9$ # J
 3  ) v@, ,E )-   D+B $ 5   F :F9 -) 5 ]-< 1 K>
B 69o9$ 9 v@a~3     # v k-)  r
Q !#"D$Q ) x(). zz d XQ !#"D$ )-#rxD QE x I
 pdE*+)s w-9 )-9~ t dE.  x#r
Q z{+  ) x()d zz %5{+  )Q  |bD)u   
))r !#   E%  -9*+-9-9x+QE -9   5Q xb
-/ *+ d) -9|-9 %   sQ#3|))+%
xM M%-/  d) 
-9EQ# *+ w    w*+) d)| -9x()X ) )Q Q  Ed x
s s  ) d yQs%s-9r
))-/D~)u dEy  )v ()%E )   8)%-9 
-9    d ) ) /3 d Q' -9Q/) -9   -9 d3/-9-9 )Q 
-9) @ d) )-9 x ) -9-9 )Q ~    d3 Q   y ~ Q ~3   ~x
-/ *+ d) -9)B)-9 3D)u ()) -9 s sQ 
 8)r
$)u E%  ) ()  d3 -9-/%*+ )Q 5 d-/ d-9    d)Q)
-9 x ) *+Q)-9*+ d) y)Q*+-9Q| -/*+ -9
xM-9d-9-9 *+  d *+)Q@r%  %      x
  3 )Q ;
  Q)x-9 m  x)u E%b  E)D)Q ) )) )
-9 *+%) )*+ ) %x-9 d-9)*+ Q*+ )Q*+-/%-/r
D) d )*+-9y 3Q w  )$Qr%!
)%!# } )!#  !|xb!#3
*+- d ) !# -9x3Q *+5)-#r    Q) } () } ,xbD$
& +3*+%-9d 3Q @ Q  *+ ) sr } 5! x5M*+
-9@  d  Q -9.%G Xr !# d*+-9 dQE  d!# Q
 )Qr

Notas

r()Q sZ#3R   r 


r()Q sZ# . Qsr !r t  .  dx
r  & %
  #Q r ()Q*+
r()Q sZ#|r   )r -9*
)r()Q sZ#|r ) *+r -/*
{)r()Q sZ#|r 3-#r d s # a^ #! 
 .^()*+ r ()Q*+
r*+ X x
~) *+r -9*
B)r()Q sZ#() R,r -/r  G.  dx
r  se #Qx@
&)r    r 
z)r*+ X  I  d) m w  /3  r 
 r%() Qsh
yr   !#"$r
*+()-
#3 5 ) dE

9 r *+Q@  I5-9aw    r 


 %r () Qsh
yr   !#"$r
*+()-
#3 5-9
 %r *+Q@ -9aw    r 
)r%*+Q@ -9.()%Ew *+) r -/Q -9(r 
{)r%() Qsh
yr     r #-/# 3 d #QQx r () *
 r%() Qsh
yr ) sr #  % 
x  d r ()Q*+
B)r%() Qsh
%)  r  dE r -9*
 #x .@r ()Q*+

Captulo 2. Sintaxis SQL


D)~ -/-9 ~) %#, d) E% !#"$r
!
"D$+*+)  |-/I )R % rB) ) I d3QD-9*+   su%E   d 
K " r>!#  *+  # d3) , *+pd -9xy-/ d*+ )Q r 3Q, Q B*+ 
 ' d*+' d3Q -9 L `d dy' -9 u-9Q ')-9  *+ Q  'Q
 % 3 5 )-9) x  dr

Palabras Clave

!
"D$z  ) 0  B ;E EM ds d) I M   M  ) d  )-/  -9-/Xr
}  )    3   X-9 )-/M   M -9 QM  )
 -9  -9) d#Qr  D -9u C  #3  ]-) -/ @)-9
  v y-9 Q,-/)Q #Q  d) 3)-9  -9-9 d) ds% EXr
Q s*+ *+ )QD  -9Q Qy #Q ) ~ ) >Q d!
"D$z xy!#"D$  )
 >Q r }  )  *+ d) ~ d ) Q )| Q+ %+ d ) + Q*+ *+ d)
 %-/y-9*+ 
 ) I ,  )Q   D~-9-9 7 -9,  )
 3Q dr
5) E*+%-/ y D-9u  !#"D$z x!#"D$   Eu)D * # ~ $
*D9 O1 $J%% r

Palabras clave reservadas


!
"D$z xy!#"$   ) d 0B+K '    s-/  ds) d3Q *+ s)-9*+
 )Q-9)-/    , y )Q  8) d )*+ d)  d | d-9 -9
) !#"$rBQ dQ )  -9u %-/) d-9+*+*+  -9-/) rB
 -9 ;  %'-9u )  y dE*+Qv)*+ v Q'-9*+
 )    b )-93v  b dE*+Qv  d    d ~ -9 *+)  r d
-9 3  } ! r
Sugerencia: Cualquier cadena puede ser especificada como un identificador si va entre
doble comillas (como esa). Se debe tener cuidado desde tanto un identificador ser
sensible a las maysculas / minsculas y contendr espacios en blanco u otro caracteres
especiales.

$'  d) ,%d, d3 dEu) Q )3   u %, !#"$z
) v!#"$ Qs d  *+Q,~3 d Q   Qs v-/ *+) D) )Q-/%
 d
ABORT ANALYZE
BINARY
CLUSTER CONSTRAINT COPY
DO
EXPLAIN EXTEND
LISTEN LOAD LOCK
MOVE
NEW NONE NOTIFY
RESET
SETOF SHOW
UNLISTEN UNTIL
VACUUM VERBOSE

$  )Q v v  uv D  ~b *+pd%Edv d3 dEud
!
"D$z |!#"D$ x|   dE*+Q   D  pdb  ) -/*+| d    d  -/ *+) 
)-9*+ )Q-/d
CASE COALESCE CROSS CURRENT CURRENT_USER
DEC DECIMAL
ELSE END
FALSE FOREIGN
GLOBAL GROUP
LOCAL
NULLIF NUMERIC
ORDER
POSITION PRECISION
SESSION_USER
TABLE THEN TRANSACTION TRUE
USER
WHEN

$  )Q v v  uv D  ~Q*+p +%Edv d3 dEud
!
"D$z !#"D$
ADD ALL ALTER AND ANY AS ASC
BEGIN BETWEEN BOTH BY
CASCADE CAST CHAR CHARACTER CHECK CLOSE
COLLATE COLUMN COMMIT CONSTRAINT CREATE
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURSOR
DECLARE DEFAULT DELETE DESC DISTINCT DROP
EXECUTE EXISTS EXTRACT
FETCH FLOAT FOR FROM FULL
GRANT
HAVING
IN INNER INSERT INTERVAL INTO IS
JOIN
LEADING LEFT LIKE LOCAL
NAMES NATIONAL NATURAL NCHAR NO NOT NULL
ON OR OUTER
PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC
REFERENCES REVOKE RIGHT ROLLBACK
SELECT SET SUBSTRING
TO TRAILING TRIM
UNION UNIQUE UPDATE USING
VALUES VARCHAR VARYING VIEW
WHERE WITH WORK

$D  )Q    u% !#"$z )%Ed-/%u   u


Q ' dD
  y-9*+)*+   )-9y QE% -/ d *+ @v )-9

length
CHAR_LENGTH CHARACTER_LENGTH

Z

$3  )Q % @  u %X s!#"D$z w!#"D$ )w%d@-9u ,  ud
 3Q d  M  -9*+ )*+ + MQ +Q -9 B *M | d  Q
Q E)% u@#)Qu@
BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT

$  )Q y%dy-9u M d3 dEudQ)  M!#"D$z !#"D$ ) %E
-9u w +  rB ()-9   D b 3)| Du M3Q d3 d+ *+*+ ) 
~ -9EQ ~ u r {  D3 dE ,  u), 
 X
Nota: Algunas de estas palabras clave representan funciones en SQL92. Estas funciones
estn definidas en Postgres,pero el interprete no considera los nombre como palabras
clave y las permite en otros contextos.

ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG


BIT BIT_LENGTH
CASCADED CATALOG COLLATION CONNECT CONNECTION
CONTINUE CONVERT CORRESPONDING COUNT
DATE DEALLOCATE DEC DESCRIBE DESCRIPTOR
DIAGNOSTICS DISCONNECT DOMAIN
ESCAPE EXCEPT EXCEPTION EXEC EXTERNAL
FIRST FOUND
GET GO GOTO
IDENTITY INDICATOR INPUT INTERSECT
LAST LOWER
MAX MIN MODULE
OCTET_LENGTH OPEN OUTPUT OVERLAPS
PREPARE PRESERVE
ROWS
SCHEMA SECTION SESSION SIZE SOME
SQL SQLCODE SQLERROR SQLSTATE SUM SYSTEM_USER
TEMPORARY TRANSLATE TRANSLATION
UNKNOWN UPPER USAGE
VALUE
WHENEVER WRITE

Palabras clave no-reservadas


!
"D$z x!#"$ Q ) 0Bo% D     ()-9(y()u v -9E d*+ d))D
 () ~)  v ()-/( % Ms )Q dEr3  s   ~  ) d )
-/y  % -9 d+ ) d) I  *+p |3     %,-9*+ )Q-9
 dr9Q Q ) D%Ed-/%u -9 -9bD*+3*+ d3Q-/-9+ Xrd
 -9 ; d3Q ,-9u  v   dy 3-9*+)*+ v -/ *+) %r
$  d) D%E-9u y)   u  Q )3%-9u )
   u !#"D$z )!#"D$
ACCESS AFTER AGGREGATE
BACKWARD BEFORE
CACHE CREATEDB CREATEUSER CYCLE
DATABASE DELIMITERS
EACH ENCODING EXCLUSIVE
FORWARD FUNCTION

Z

HANDLER
INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
LANCOMPILER LOCATION
MAXVALUE MINVALUE MODE
NOCREATEDB NOCREATEUSER NOTHING NOTNULL
OIDS OPERATOR
PASSWORD PROCEDURAL
RECIPE RENAME RETURNS ROW RULE
SEQUENCE SERIAL SHARE START STATEMENT STDIN STDOUT
TRUSTED
VALID VERSION

$  d) %E-9u w)   udv Q Ed-9u   u


 !#"D$z !
"D$
ABSOLUTE ACTION
CONSTRAINTS
DAY DEFERRABLE DEFERRED
HOUR
IMMEDIATE INITIALLY INSENSITIVE ISOLATION
KEY
LANGUAGE LEVEL
MATCH MINUTE MONTH
NEXT
OF ONLY OPTION
PENDANT PRIOR PRIVILEGES
READ RELATIVE RESTRICT
SCROLL SECOND
TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER
YEAR
ZONE

$  ) dv-9u )  d Eud w   %*+pdM+%Ed-9u
)   u %3 !#"$z !#"D$
COMMITTED SERIALIZABLE TYPE

$,3  )Q %d-9u v)   u  )Qy ~!#"$z !


"D$ )y
-9u  v)) )w-93  yQ 
ADA
C CATALOG_NAME CHARACTER_SET_CATALOG CHARACTER_SET_NAME
CHARACTER_SET_SCHEMA CLASS_ORIGIN COBOL COLLATION_CATALOG
COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME
COMMAND_FUNCTION CONDITION_NUMBER
CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME
CONSTRAINT_SCHEMA CURSOR_NAME
DATA DATE_TIME_INTERVAL_CODE DATE_TIME_INTERVAL_PRECISION
DYNAMIC_FUNCTION
FORTRAN
LENGTH
MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MORE MUMPS
NAME NULLABLE NUMBER
PAD PASCAL PLI

ZZ

REPEATABLE RETURNED_LENGTH RETURNED_OCTET_LENGTH


RETURNED_SQLSTATE ROW_COUNT
SCALE SCHEMA_NAME SERVER_NAME SPACE SUBCLASS_ORIGIN
TABLE_NAME
UNCOMMITTED UNNAMED

Comentarios

 / d@ )3 d-/  d)-/QE  ,-9-9 d BX -9  D s 
D /,
() ~) ) )r&*+p  v3EQ~ v%Ev rh
- This is a standard SQL comment
// And this is another supported comment style, like C++

&#%*+pdyEQ*+    v v-9*+ ) %Es%


   rh
/* multi
line
comment
*/

Nombres

)*+ w |!#"D$+ d )D -9  )-9 w-9E%- d d ) *+pdE-9*+ ),   } 
} & } $) -9*+ ))b~ -/%E-9Q B~5%) *+pdE-9Xr#w d -9  }  } & }
$  y d)+  ) dM @*+*+ )Q   y*+) %v @ d*+ }  } & }
$    y-/%*+E -9*+)b  #define -#
-9. B)s
)-9  #/  r (r
!
dx# 3^ Q~-9) -/*+ -9 -9Q %5%p  -9Xr
 )-9)Q  @)*+   d -9)Q ) d -9-9Q  BD   d) 
-9*+yD |-9*+r EI *+)*+  | %-9*+   d
-9)Q )  ~-9 -9Q  )|uv-/*+|v -9*+ dE)b  Q-#rd 3%)
 v p -9)-9)r

Constantes

E  " E   $ #    -9 )%3B )Q @x)*+ d
xQ d  D   ,
 D-9*+   )Q r%$ ) )Q ~ *+p b  d b   -9-9-/ bQM
-9Q# -9    ~ ) d B )Q-9|*+ d-/ dx )D*+) Q*+ -/ d) r
$'-9)Q) ds*+-9 , v -9E d*+,I `%-9)3Q)Q s d#-9  QEQ
*+ %) r

Constantes tipo Cadenas


  >  y3 d-/  d)-/%  ' -/%Ed-9  d } ! *+ %@-9*+*+
 s v # r Esto es una cadena !"D$z  *+Q   ws-/*+*+   d
 d3Q~)-9  )|-9 d)Q -9 )b-9*+D*+ x%-/ d) d5 r

Z_

r   y-9*+y*+  d QD -9 )


Diannes horse
 )-9) %Ee / rhr Dianne\s horse r )-9  )-9)QEE  )
-9) %)   -9 /)Q -9 ~-9) |E%r$D-9-9  /D)*+*+ 
 %*+pdy  )-9 ' dv-/% )~ /-9 s  )w-/)QEwv  \tab r

Constantes tipo Entero


  1>  # y 5;  #   )-9 -9-/ Q } ! 5 )Q -9*+ r$
E%)D u du%Du  y  ]B& d &%   B "&  B)r#Qu
 ) d) 3Q *+w  uDxw*+  )w()>r
 -9   | s ) d*+y  d |3 dD  -9-9%EM)& Q) )
)Q-9 -9 )!#"D$z  )~) -9 d
   
int8 4000000000 - string style
4000000000::int8 - Postgres (historical) style

Constantes tipo Punto Flotante


/ ]-9 5> $ # -/)  y )  )Q )  )Qb -9*+x )
 -9*+
~)Q-9-9 )Q-9~-9 
  d) ~ E*+QX
{dig}.{dig} [e [+-] {dig}]

)
dig w) *+  r  *+ 3)-/   ) dig ~ )+M*+
 rDQ |   )-9 -9*+y*+)*+   p ,  x d3 p s
p  # r) d3-9) rdDM d#) )Q M*+%) Q ) D )D*+) D)3 dEQ r 
  () @))X-/%Ed-9   v)-9  dv-/% ))r
D)-9)3Q)Q s s w    Q) s X %   # &r  Q s   ,  d-/-9
-9Q*+ )Q  )w)Q-9 -9 d)v v!#"D$z )Q-9    
float4 1.23 - string style
1.23::float4 - Postgres (historical) style

Constantes Postgres de tipos definido por el usuario


D)M-9)3Q)Q | Q 9 B 9      3%)  %)% )+ 3
  d) ,) -9) 
type string
string::type
CAST string AS type

@uv  )QM -9 )y y-9*+b ) y Q) y-9)u dE


 +*+ type r    %| ~ )-9) )Q   |)-9@r $yQ
   v*+QE )y()x*+  d| ~  y ~-9)3QQ    d v3 d 
-9 Q v  v  *+ -9*+ d) 5Xr

Zh

Constantes de tipo Array


  D>  # D U  G @  -9    Q  d)-9 'Q'Edx -9) )
 d, -/% B)% d -#r> *+Q ) dE -/ %   @-/)  ~Edx ds d  ) 
{val1delimval2delim}

)
delim d~ d d*+ %  |*+-9 )% db-/ pg_type rB E
 Q -9)Q   d-9-9 '-/*+)rB| Q d*+ -9)3Q)Q  w %Ex

{{1,2,3},{4,5,6},{7,8,9}}

 -9) %)  d *+ )) d3 )vE%x  -9)3Q  yQ ' Ex
   r
Db  d*+ )Q+  )y xM)u %X  d x+   Q d)  *+-9 ~ *+Q
E% *+   |3 d|3 |%E| duQw d*+D *+$  d-9  d-/Q
-9, d-/)-/% r

Campos y Columnas
Campos

 9; ,-9    @QE Q  )w-9 %~ )   ) 
D


 )Q-/%s)-9| ) %)-/   8)   Q%v%v)Q)-9


  *+Q-/%*+ ) r>$ s)  %  vx  ) d )w) M   r

#*+
 ) -9@ v~ )-9-9)  %)r
#*+%
 ) -9@ v~ )-9-9Er
-9*+
 ) -9@ -9*+) )Q w )-9-9r
-9*+
 ) -9@ -9*+)Xr
E*+) *+-9M w Q-9*+-9) Q $ $ B JJe]-<J rB
  d*+b    B d) b)Q )*+ )Q -9*+ )) )-9 QbQ abstime r
$ ) -9  ' )-9-9) d'x-9*+)3y  QrE$'QE%)3%-/-9) 
 )% -9  )-9*+ d) v d*+ )@{  r

Columnas
D) E ;  v-9)3Q x v v  ~ E*M)
instance{.composite_field}.field [number]

D) instance  )Q-9 )v-/%3 -/)-9  x *+ )Q ) v-9*+  -9 
 -9 ) %)-/%  -93 r y)*+  uE%  d )u
) )-9 |  Q   ~-9 w ), d)-9y -9  

~% v-/%u  ,  &Xr  x  &|   dy /-/ d dy )
 *+ %-/-9  B*+ ) ' 'u B ) %)-/    E
-9 %    d-9Ed-9|!
"D$r composite_field -9*+y ~ ) ~ -9*+
    v  #*M ) ,   ws3 -9 us-/%*+s -9-9)QE Q,
-/%3 
d   du%-9*+-9*+   Xr)*+ d) field  -9*+)*+
 %3  ~ *+-9 # /-9-/))r3!# field  vQ array )Q)-9  
 ),-9) number )-9 )  d*+ )   d-/-9 ) x#rB!#))3 )-9

)*+  )Q)-9 ,3  uu yQ,s  *+ )Qs d%E x#r

Operadores

    d dE% d ) )X  3    3 !#"D$r
~ w  dE% /s d B)-9)3 Q+I  %/3  r>vwQ~ vs 
  ) )  -9)   *+)   *+ EI -9 Q-9)
 Qy -9 pg_operator -9r%$p )Q     % 
  *+ )Q vs   y  ) r

Expresiones

!
"D$z  dE*+Q 3    EQE%)3 E*+%,Q  %%r $  )   
-9)Q )   /v5u ~I  93  *+%v  %  x )-9) v >  Q )
*+) *+-9 r
D)~ d# / , )~ v  d) d
^ )
-9) %) 
QE Q
a_expr binary_operator a_expr
a_expr right_unary_operator
left_unary_operator a_expr

 *+ d 
 B)  )-9 
 B)   dd-9

 3 xy() *+()%M -9) )Q xbQ Qr$wQ w-9 w   B
) '   B'y  B-9Qu%*+ )   /')' )#I )'
  /-9() 3 #I x| )%E~   d  B#I r $  )Q w -9-9) dv()%
 ~3Q) %s-9) dr

Parmetros
D 09 9;  5  3)-9 %E*M  w d )5 )-9!#"$r &-/%*+ ) s d3Q
@ d  s )-9  d-/%E-9  )-9!
"D$r $5*+-/%Epd) 

Z


$number

 EI *+-/) *+s~ d)-/ w )-/)

%-9*+

dept

CREATE FUNCTION dept (name)


RETURNS dept
AS select * from
dept where name=$1
LANGUAGE sql;

Expresiones Funcionales
D)1
 3  >  
)*+   )~ )-9 d
!#"D$   ~@3 , 
  *+ )Q, )Q pB)Q 
function (a_expr [, a_expr ... ] )

 EI *+ 
  )Q ~-9-9 ~~-/ Ev 
   *+ %@
sqrt(emp.salary)

Expresiones de Agregacin
D) 3 4" 3- -)   / )Q-9-9  ) )-9   -9
 up v ww3 d -9-/)%~y-9)  r)y5 )-9 % -9  -/
*+  d )Q,w yu v-/*+ *+w*+  vw )Q)r
$~) %#, ~ d#    -9 ,~  ) 

aggregate_name }expression

aggregate_name $$ expression

& expression
aggregate_name 5 !#&

aggregate_name
)
aggregate_name   -9+ u*+ )Q  )
x expression 

-9 %   @  y   ~)-/)Q )w~3 u ~)) ~  B  d-9r
$E*+ dE5*+v  # /  d-9*+v d-9vQE%upd' Q%
D% d) M # d3 u  u uw)) Xr$|  )| *+M 
*+'~wE*+ dEd  } $$ ds' d -9 Xr>$~Q -/ dE *+~*+wvw d-/
|  | ) -/ u 3Q)Qy d)  |sx)) Xr$+ *+
*+*+~v %-/%E-9 ) %' )QE -/yu@) 
) `%
)D3  -9-9 yuX  -9-9D  )QB ) dE%*+ ) D 'Q

~  -9-9 )Q r
) EI *+9-/ ) #  u  u d%)*+ dv  %% ,%X ' ) " `3-/ )   du  u

,)*+  |y | )QM) | ) d) `-9 )Q 3Q)-9   du  u d
)*+ D v )Qsu% ))   r

Lista Objetivo
D)    I 
  )3QD )y*+ d *+ )Q E%,-9*+x )Q
pB)Q #-9v )w   d w5*+)
a_expr [ AS result_attname ]

)
result_attname dw )*+  dXQ QM   ()y+-9 BM M )*+
  %      x #Q d+ -/%3 D ) )Q )-9 -9 %-r !# result_attname M  y  )Q  )Q-/ d a_expr  d -9) d) + )*+
 QE QM @-9  3 *+y-9*+b )*+  -9*++  QXr!#+3 y 
)*+D' d5 d-/QD   ,3 a_expr     Xr

Calificadores
D >  ~>9 -9)33Q  M-9    d)*+ d -/% 3 -9) -9 %s  
-9
&
} y

D)-/% 3    a_expr    du%-9*+ 
) )-9r

Lista From
$   / d )D D
* ,  d3Qw *+)

3  S/99

boolean

3 @-/I )Rb

r/ d-9*+r ,  /

[ class_reference ] instance_variable
{, [ class_ref ] instance_variable... }

)
class_reference d, ~ *+
class_name [ * ]

$V   *4s )  )M*+vu%E d~)Q)-93  E%)M   -9


 D)-9 class_reference rdD) %*+pd+    d   u D3Q)-9
  )|  wy-9 ~      IM ~-9 w)-9%~ 
Q dE%  v ()  )-9~  d-/-9)D  )Q 3-9 3 r

Z

Captulo 3. Data Types


-/ Q() v  Q~ x ,ud   r
Q ()%-9( ,,)Qu Qy x u% Q+  ErD *+xb)
j FME
E -/*+*+)| d3-9   () d r
 x QQ  )y () F
5 () w-9)Q X%  x # () 5) -9Q))-9 !
"D$+3Q))-9*+
)-9 3 )~3  9)  rR!#*+ ,  XQx -/ ) d-/Qx~Q~!#"D$z
-9*+%  Qx r#5Q() w-93 d3)QQx D )  x!#"D$z x) %M% *+ 
 B-9Qx) y)% u   Qx r9)xyQ() ~ Q |Qx ()u vu   )
*+Qr>y u Q u  x ,  Q()  )   w   # -9(s )|-9
 Q()%()u v3 du dE%#3I  , @ *+Q%3 -9( () v% %) *+ vQx r
a a i gf9l5c%al av



Postgres Type

 

SQL92 or SQL3 Type

 -9     

 -9Q) @  )

-9()

-/()%E-> 

   )Q(-9()-9 d
 )
5u Ev)  .
() /3
-/-9   )
-9 d)@  ()  *+
x
d#%-/) *+ - 'xD{Mz%
{
 Q) )) *+ Q(
 -9
   -93
 Q)5)) *+ 
5u 3~) Q.
() /3
) d+Q5x )  
3) M x )  
) A
 & xQ )Q  d
))IQ ) v  )
) ~ *+ d))  )
!
 x -9  d)-9x
#%-/) *+ - 'x{D{Mz 
{
 )|-9 | d*+ d % (  )

-9
-9-
d

Q

 /-9*+

 d-/*+%5 

Q)&

 &

Q
    v -

) 
)
)Q
) &
)
 
*+) x
) *+ d (

3*+%)
) )Q  d

 -9*+ z %
) *+ dE-9 h

Description

Z

'

Postgres Type

)

SQL92 or SQL3 Type

x
  
Q*+
Q*+ 
Q*+  *+
u -9()

Q*+
)Q u
Q*+  %*+Q( *+ v%)
-/()%E-> uEx)5

Description

 *+ QE-)  )

-/ | *+ d - ( 


%)
)  @ |5@) ))
-9  B d)-/
Q*+ v%x
 )   Q*+ v
% #Q*+
u  d)Q(y-/(E%-/Q 
 )

Nota: The cidr and inet types are designed to handle any IP type but only ipv4 is handled
in the current implementation. Everything here that talks about ipv4 will apply to ipv6 in a
future release.

a a gf9l5c%_kn9l e fkfk9l akl


    )*+

Postgres Function

-/  /)#^  

SQL92 Constant

d d)F
Q*+ # )F

Q*+  *+#)F

-9  /)^Q
-9 E /)# ^Q*+
-9 E /)# ^Q*+ Q*+

Description

 )*+ v-9 E d)


 
Q -9  )Q)3%-/Q
Q*+ v)-9 E ) )-9Q
Q )|Q*+ v)-9  )
QE%)3%-/Q

Q ,(),5 d  / () v  #) ,t !D du d*+ d)>r   !#"D$
-9) E*+)-9 d
 3Q)Q)EQ)vX!#"$z % w Q r } Q() (+  u
)!
"D$z -/*+)-9 9Q()   '3*+ s -9 Q() ,3Q)()-9(D %-/)  
)()-9(() u Q() (     )3Q))r  )*+.
 d  Q;  y-9) E* yQ()  w Q R a `#() u Q () d3 wQ )M yxy|Q  d5  
@3  v-9 %)v x-9  ds)). x  )QQ() * r
', () ) )    )-9 )-9 ))b +Q()   x  r @r )Q
 dE')   )))) *+  *+  I-9() -9.)r>!#*+  ()  Q')
)-/Q)s r @r %Q)|*+ Q-9  ) E *  ) Q*+ w dEI-9() -9.)
 () )Q  Q*+u) d# -9 Q dr *+ |3x d*+3X  d#*+  ()
) *+ - Q53*+ vQvQx ds*+%x )Qxy )   u   yr
  ()%*+ Q() ) %)    )-/Q)' ,))u   r&()dQ()  d3 
   5 )-9Q*+x ~ /-/() d-9*+ QQ() vE)) >r

_

'

Nota: The original Postgres v4.2 code received from Berkeley rounded all double precision floating point results to six digits for output. Starting with v6.1, floating point numbers
are allowed to retain most of the intrinsic precision of the type (typically 15 digits for
doubles, 6 digits for 4-byte floats). Other types with underlying floating point fields (e.g.
geometric types) carry similar precision.

Numeric Types

 *+ -v x -9)3X@Q@)  5x )Q  dE)5 )b ()Q xQ


 ))) *+ r



a a gf9l5c%6_`+ce ns)


Numeric Type

 /-9*+

Storage

uE%

Q
  &
)
)Q

wx d
&wx d
x 
wx 

)&

&wx 

) *+ -

uE%

  

wxQ 

Description

3 dI -9 d
 -9
@ ; -93
@ ; -93
   B-9
 
-9()-9 v 
# d  B-9
 dEx E%)
# d  B-9
3 dI -9 d
 -9
5 )  @
-9  /  )-9

Range

)*+

 d-/*+%%-/ d
{~ d-/*M
-9 
% B &~   % B B
 ] B & d  &~Q
   Bd &   B

5 w &~ d-/*+%
-9 
)*+
Q

  ]B& d B

&() y) *+ dE- x ()u y5 X ,,-9E ))bQ()*+  - dEQE )-9
 E  %)  >  .7  # ;
  >  *M v) E*+Qr
 )r @QV
 I   9 v;
&() s)# & x *+x) u sQ5*+)-/   X-/*+ 3 
@ ()r

The Serial Type


&() , Qx X -9 -93  x ,-9)Q -9Q xw  @ * Q()   )-9*+
) ) r 5
X x-9x  Qw-9 d ' )    )  @ Q , )QE dr Q() s-/  )
*+ *+ d) Q) -9 x)
CREATE TABLE tablename (colname SERIAL);

s d  u ))Q -9 x)


CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename

_

'

(colname INT4 DEFAULT nextval(tablename_colname_seq);


CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);

Atencin
The implicit sequence created for the serial type will not be automatically removed when the table is dropped.

5*+-9) d   )-9 ,3  ) () v 


 ) Q*+ -9x () wQ
-9)Q))+  x v rd!#Q()  )+-9*+*+w -9  d 
. x 
CREATE TABLE tablename (colname SERIAL);
DROP TABLE tablename;
CREATE TABLE tablename (colname SERIAL);

&()    d)-/  *++ () Q )Q -9 x b ) FF^
:
r

Monetary Type
Obsolete Type: The money is now obsolete. Use numeric or decimal instead.

&() *+) x x   '!


 x -9  )-9x (y  -9*+#) d B )QQr
5Q ss-9*+ |Q(!
D ^$ D } $| () d () v*+) xyQx v3() M 3 vQ() ~*+
) QEx-9)u )Q) ) |   E   r
a a gf9l5c%fk%l5a%c)
Monetary Type

*+) x

Storage

wx 

Description

   B-9

Range

% B%& d r &vQ
  Bd&  r B

) *+ - -9  () v*+) xyQx %)() +    r

Character Types

!
"D$z  d) d' DE*+ExD-9()-9 d x E-9())u%-9() rEQ  EQ' () d
 Qx d3QQb () *+ y ) dE% d#, x )()-9( ). yu-9()v )
   %  @*+)   -9 /|Q() v3% )Q() v dr
a a gf9l5c%a%can9lIc)
Character Type

_Z

Storage

Recommendation Description

'

Character Type

Storage

Recommendation Description

-9()
-9()

 xQ
 xQ 

#! "D$z
!
"D$z

5 -9*+Q
-9*+Q

Q #
u -9()

5   xQ 
  xQ 

t -9()-/
!
"D$z -/*+Q

#! ) v-9()-/Q 
   d)Q(%).
 
X  )Q(
@%E d5 d)Q(y (
*+

&()  v)  () d,   d)Q(-9()-9 d x r3&() w)*+ w x ~)x()) w 
) Q() u    (| -9'Qx    w) dE)%,)%*+ r
5
)X) d)    Dx ()  )   Erd # ~ d)Q(v-9  d) x ) % % -9()
 ()   I d d)-9  ) }  } & } $ rE&()' -9*+ Q*+ )*+x
-9())  Q    %3 r
a a gf9l5c%^n9eIa l a%can9l c)
Character Type

)*+

Storage

Description

 x d

&() x  -/()%E-9Q 
)Q ) x

Date/Time Types

Q !#"D$  ,Q() v5  )!#"$|% )| *+ vQx r
a a gf9l5c%^al Re `+w)%
Type

Q*+  *+


)Q Eud
d
Q*+

Description

Qv-9)Q))
 (Q )|Q*+
5'Q*+ v)Q u
'% v-9) %))
)xyQ 
Qv-9)Q))
)xyQ*+ s () vx

&~x d

Storage

"B vt

Earliest

% x 
x d
~

B"& % % x d


"B vt

~x d

% d  r 

Latest Resolution

} { 

B& d
 B B }
 {z) {zr zz

Nota: To ensure compatibility to earlier versions of PostgreSQL we also continue to provide datetime (equivalent to timestamp) and timespan (equivalent to interval). The types
abstime and reltime are lower precision types which are used internally. You are discouraged from using any of these types in new applications and move any old ones over when
appropriate. Any or all of these type might disappear in a future release.

__

*+-

x  +
*  x
*+-

'

Date/Time Input
 |)Q*+ +) -9-9 Q  *M)x ) | *+Q')-9 )5!
-9*+%  /!#"$ -9*+Q dBQ )   ) () rE&()  dE)w*+) (
)xb ) -9 *+  Q()  I  Q )  Q+ -9 xb()
@()  )Q E d srB&() D-9*+*+) SET DateStyle TO US  SET DateSty -9 Q() u)D [*+) (+  %$x \Q() -9*+*+) SET
le TO NonEuropean
3 d ~ () u)v
 [ x+ d5 D*+) <( \)r%&()  E*+ dwQ()
DateStyle TO European
 d >r
 /  )
) 9 Q() D -93)  @% #Q*+ ) %) Q() D
!
d  @ 1
-9) Q*+ v) r
d*+ *+  ()X)xQ DQ*+ ) @) d v  D )-93 d) 3)    d3.
 d#3Q)r
date

&()    v)  s @ () v  x r


a a gf9l5c%^al vjk_l
Example

I) %ExV& zzdz


zzz d &
e)& zz%z
&

zz%z
& z%zz
zzz)r d &
zzz d &
zdz  &
zzz)r d &
zdz  &
I) %EVx &%zz t

Description

)*+  
! # & d *+Q% I dE 
D! `% % }     y*+
  %< `%  |% }   !*+
e! `% d5
  )  x &~)x*+
d')x)x d
! # & % x Q *+) (%%x
! # & d x Q *+) (%x
d')x)x d
)xx 
zz~   () -/*+*+ 

a a gf9l5c%^fkl DceIal e fk


Month

} 
}  
-9 /*+ 
 G x
I) %Ex
I x
I )

_h

Abbreviations

} 
} 
d d
 
 
 

'

Month

-9(
u *+ 
-/Q d
!  *+ d

Abbreviations


u
-/
!# %!# 

Nota: The month May has no explicit abbreviation, for obvious reasons.

a a i gf9l c^afvDce5a%lIe fk


Day

! )x
)x
&
 x
) d3 x
&() 3dx
Edx
!Q x

Abbreviation

!


&
 %&#  d
 
&() &() Q&() 

!
%

time

&()   u *+ v) Qr


a a i9i g"f9l5c%^e `+wjk_l
Example

) {)  r B&dz
) {) 
) {
{ d
) { }
) {v

d 
d

Description

5! #& d
5! #& d
! #& d
! #& d
!#*+  ) {"` }  ,)Q B-9)u 
!#*+   {`%) )( *+ ) :{ %
!#*+  % 
!#*+   d %
!#*+   d %

'

timestamp

@%) X5s ()  *+ d3Q*+Qx -9) v@D-/)-9Q )Q+X% )Q*+


  xQ)% AD  BC5 d x )'Q*+ %) r !
d y yr
&() 
1999-01-08 04:05:06 -8:00

y+u%Q*+ Q*+u  @()-9( y ! -9*+)>r5Q)@ () M  d


*+
January 8 04:05:06 1999 PST

s  r
a a i gf9l c^e `bffk~jk_l
Time Zone

!#&
&) 
& %
&

Description

-9-!#Q)G&*+
! # & d Q   @!
&
5! # & d Q  5@!#&
5! &  Q   !#&

interval

) dEu-9  -9  (Q() v5)yx)Q


Quantity Unit [Quantity Unit...] [Direction]
@ Quantity Unit [Direction]

()   Quantity ~rhrhr -1 0 1 2)rhrZr ` Unit  second minute hour day week month

9% du )' @ (  )Qa` Direcyear decade century millenium


/
%

y




'

d

+
*

#
x
r
ago
tion
Special values

&() y )!#"$5-9*+Q y )-9 )-9 3 d  ~ *+ y) s v ()
-9 ))% Qx  CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP r
Q !#"D$ EQs u 
 -9
-9) )Q -9)u d) )-9 r
a a i gf9l c/^)|^n9e ad)a%l5>e5`+vfk9l akl
Constant

-9 ER )
-9(

)) x
I) x

_

Description


 ) )-9  *+ d G 
z B  w%     )x *  *+
 
$Q @ ()%Q() 'uQ*+ 
E Q() () u *+ d

'

Constant

Description

)u
)
Qdx
Q*+E
x  )x

5 d )Qx


 )Q)3%-/QQ*+
)() x
)()Q*+E
)()x Q  x

 u ()  () u  )   current  u d du dEx *+ Q()
now
u  X d  u r !#vx xv)#Qw  now D*M
-9Q)rR #-/ E
x   @ ))Q  CURRENT_TIMESTAMP%()-9(s  u d))Q now r

Date/Time Output
Q  *+Q-/%  Q) Q()   3Qx '5! &  d!#"$ 5)  /QE )
^ al ^lI r>&() v d5% , () v ! *+Er
Q %) *+)% )yQ() 
a a i gf9l c^al  e `+v_l _l^l 
Style Specification

!
!#"D$

3Q da
dE*+<

Description

5! #& d Q)
&
  )3Qx
)3Qx
)%Qx

Example

z zBd  B
 B) z z"B
 d- B
!#&
B)r  r zz B

B) B  &
)B B % r !
&
)B B ~ zzB
B) )B  r  !#&

&() +  vvQ() b% |) *+ M x yv-9  b)x  () MQ |Q*+ +%E
-9-9%)-/  ( () v%u  *+ d
&() b!#"D$  x ()  ) ))    ! u)Q()-9(   dE*+) d
() Q() s*+)Q(+ xsu-9u )r3 !
d u w Q #&*+ )  ()
 (),  Q)yQ; -9 )Q E d Q) u  r
a a i gf9l c^al ~cmcfk%klIe fk
Style Specification

 G 
w!

Example

B) d zzB {) B)  r 
&
 B) z z"B B B) % r % !#&

) dEu Q .. Q() )  E*+% B # -9 () )Q'.
-9)u  d x dE)xr5 ! *+ v ( v Q )..

week



century



[ Quantity Units [ ... ] ] [ Days ] Hours:Minutes [ ago ]

&()  % 3 du dE%


%xQQI -9 () v%  -/ v) 
Q*+ Qx d

'
Y
Y

&() w } &!#& 
$ b u)*+ )u%Ed  +x () -9. )M -9Qx|Q
*+Q @3Q sr
&()  } &!#& 
$ M u)*+ )u%E w  +xQ() w5) d)b |M 
 %EQ sr
^ s5 ^E 
! "D$-9*+*M)r

Time Zones
Q !#"D$ ) %uQ -9*+%  Q(!#"D$z  )Q5Qx-/%,  r
 du dQ/Q() s!#"$z  )%D()@*+
Q ) *+ sQx @)-9%  r
&
Du s d*+s

}  () (| () Q wQx  )()u w%M-9Q M *+ )
Q() w *+  x -9
 r
Y &() v   *+ v%)  -9 w-9)Q)))Q  'Q 3 d * &#D& r
&*+ D) + ()  )E-/%+()u )|*+ d))| ) d3v-9Q Q(bQ %
sQ*+ ~3)-9 ~Q() wQ  )*+xu%ExyQ() ( () ~x Q(|%x()u) *+
 )%E dr
&#bG Q()  Q-9   )  !#"D$-9Q Q*+ %) w)x ( )
 *+ Qx d()-9(-9)QQ(Q ) *+ d)) *+ -9@Q*+ 5v)xM x
-9)Q))y)xQ  *+ r9 EQ() QQ*+ w%) v  u | *Q() v ) 
x)  )xQ * *+ ) -/% Q )() d)-/ -/%y()) x()3%u)
 *+ v%)Q()   -9  ()u>r
Q !#"D$  )Q*+ b%) M v *  () + ) x)   ) x3Q * 
Q  Q d z % )  &5) d~ () Qx-/ y*+  w)#  x xQ *+ r
Q s ()) %Q   *+  Q  -9  %)   )u 3
)% &*+ ~5& r
} ,Q %)Q*+ y% Q )Q )x)u dE,D& @% )Q x.) 
 )-9( d&*M + & r&*+ dy -9)u  dQ-/%sQ*+ | () MQ

 Eu  d   ) d)QQ() -9 ) )Q ) () d)-/ x   yQ()  u X *+
) r
&()  % 3 du dE%
%xQQI -9 () vQ*+ v) v ()u

Y
Y
Y

&() v& )u)*M )uE%   |xQ() v-9. )| d-/Qx3Q*+ d' Q 
Q() v   *+ v) r
&() w & d)u)*+ )u ~3 d () w-9 ) 3 dbx  y )b *+ w)
) E*+% QQ() v-9. d) -9)) -9 r
^ ,j
(,F
F  QsQ() v *M v) v 'Q()  sr
&() v!#"$-9*+*+) 

5)u%Q*+ ) ~3 -9 d)Q()  *+ )  -9*M  & *+3x d*+
)xx r
Nota: If the compiler option USE_AUSTRALIAN_RULES is set then EST refers to Australia
Eastern Std Time, which has an offset of +10:00 hours from UTC.

_

'

Internals
Q !#"D$+  :  d ,% # *M -9-9 Q)r/&() dx()u Q() -/ 
  x~
-9 -9 x~ -9 )@#-/%-/ Q)w%)xQ ,*+ s -9 /) ()D B dt Qw )) 
 () 5 Q  % )Q() v3 *+ Q())Q() v ) (Q() vx @ % {)r {v%xr
 -9)u d) )  Q() zQ(-9 )Q Exb*+%.  ) d d )b d) ' )
-9) ) ) ( E)-9)) ~Q 
Q*+ v()) dEr

Boolean Type

Q , Q, () ~!#"$  Qx r3-9()u v) v)x  %
 d
   D  Rr }  () Q  ).)</@)*+ *+ d) dy)X)  Q 
!#"$ ` D$$' dQI -9 u  Q Q rE-/%  y)xD %  )
) d # /s%%x u Q Q~  -/*+Q v ( (),Qx r
 3 d x ) E r
a a i gf9l c,,ff a%k)
State

Output

Input

&
R 



& D
S#"   ]xx a

} $!#" ]   <  )L

Geometric Types

*+  -Qx d d B )s  *+ ))%'3 @dI -9 r
&() y*+ )%*+ ) %
 x %Q() v)  E*+, () %3, @Q() vQ()  x r
a a i gf9l c f`+l ce ns)%
Geometric Type

Storage

Representation






xQ 
x 
x d
xQ 
  yxQ 

hx
5
5

d (
x

  y
xQ 
 % yxQ 

ph hx  rhrhr r

hx  rhrhr

-9-

~x 

 hx h |

)
)
 

d (

h x
hx
hx
hx

 h h x 
 h h x 
% Z5 hx 
 rhrhr

Description

)3-9
)) ~)
)Q v) ~3 d*+ d)
-9Q) %'
 | (y *+
Qx
 d (
x *+ 
-9 |% (
-/  -/ d) @)
 

_

'

} E -9(3 dXX )-/Q))b Qud   dE E*uE  *+  -v


E% )s -9(3-9) )Q) Q)%) Q *+)))Q 3 d-/Q)r

Point

)Qs%  () v )*+ d) 


Q *+ d)3) )-9.  d*+ d -Qx r
))s d-/ | )Q() v )yx) 
( x ,
x ,
where
x
y

y )
y
is the x-axis coordinate as a floating point number
is the y-axis coordinate as a floating point number

Line Segment
$)  *+ )Q   %   /3 d) dMx))Qr
 , -9 d )y () v )3x)Q
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1
,
x2 , y2
where
(x1,y1) and (x2,y2) are the endpoints of the segment

Box

t  #    B  |x,))Q()-9( Q v-9) s) () vr


ws d-/ | )Q() v x)Q
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1
,
x2 , y2
where
(x1,y1) and (x2,y2) are opposite corners

t  #   Q  )+Q() x)Qrd&() -9) ~%    b) Q|Q
 ()   -9) %)yQ()  ()-9E) 3Er Q() -9) Q() v-9
  )Q  %  () v ' d ))  d()-/) s  Q *+) | *Q() v) 
)  r

h

'

Path

 ()D   /3 d)  x-9)) d-/Q  QD) r (-9 x  <G()  Q()
E,),)Q () y3 d )s-9)) d-/Q %) -9 D ()  Q() 3,)
)) v-9)) d-/Q r3 )-9Q) popen(p) ) pclose(p)    MQy5-9 
Q(M   d+-9 
) )-9 ) isopen(p) ) isclosed(p)  w  
 3 d -9 d ()  x v~   dEx#r
Q(ys -9 | )Q() v )yx)Q
( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
( x1 , y1 ) , ... , ( xn , yn )
( x1 , y1
, ... ,
xn , yn )
x1 , y1
, ... ,
xn , yn
where
(x1,y1),...,(xn,yn) are points 1 through n
a leading "[" indicates an open path
a leading "(" indicates a closed path

 ()'     3) ( E3x)Qr Q Q()  u 3)EX Du r 3 d
w *+ 'Q()()-9(|()%|) ~ )y ) () d3= -9 D  #)Q  
-9 )'Q() ) *+ )Q3) () dQ() 3')Qw  dx+y-93)M )
() r &X() D Q b5 )-9Q upgradepath ~  Q|-9u dE ()v *+ %)
  dM * u r  d r

Polygon

x)   / )Q x QD) rx)D3(  %x -/)
   u d)' |-/ Q()3 ' DQ Q5 d /)Qx+)()u  () d '
 )  ) dr
x,3 d-/  3) () v )yx) 
( ( x1 , y1 ) , ... , (
( x1 , y1 ) , ... , (
( x1 , y1
, ... ,
x1 , y1
, ... ,
where
(x1,y1),...,(xn,yn)

xn
xn
xn
xn

,
,
,
,

yn ) )
yn )
yn )
yn

are points 1 through n

x) ~ Q @ ) () Ex)Qr  w ()3Q du dE)Es u r
3 d + E*+ x)()-9(()) b d) /) () d3Q() M3vv#
'-/) d3d () x ,-9)Q B5 dx-9)% ) () d3rE&()
   )-/Q upgradepoly X3   ~-/)u 
x) *+ )  d
* ;u r Q  r

Circle

 -9    / )Q |xw-9 )Q @)))|~ r


-9-9 s -9 | )yQ()  x)Q
< ( x
( ( x
( x
x

,
,
,
,

y ) , r >
y ) , r )
y ) , r
y
, r

h

'

where
(x,y) is the center of the circle
r is the radius of the circle

-9     3) () v3x)Qr

IP Version 4 Networks and Host Addresses

&() -9w x y3Q d) d E. d-/     ) d *+  Q)
)QQr%&() ) Qx   ~() w))  . )Q  )b*+
uEd  d B )QQ   /3 d))*+ v()3& s

| / r
a a i gf9l c/j,dc9e fk )
IPV4 Type

CIDR

-9

u%E

Storage

) Q.

Description

) 

uE%

) Q,)()Q

&() y-9vQx y() D ) Q.@r#&() 5*+ v d-/ x)-/%3 ) d E.
 x.x.x.x/y ()  x.x.x.x ~ () ) Q.b) /y wQ() ) *+ QwQ()
) Q*+.r# /y *+Q -9-9 Q  )3 *+ ) * Q()  ~-93 
)*+)xQ * -/ d ()%,, Q )  b)-9  %s d,%, () -9Q  DQ()
) >r
  *+ v d#*+ 
a a i gf9l c/j)5a`+I
CIDR Input

z r  &)r
z r  &
d &)r
d &
d &)r r
d r r
d r
d

hZ

Range

X| 
-/.

X|5
-/.

CIDR Displayed

z r d &)r
z r d &)r
% &)r 
 &)r %
% &)r r
 r r
 r d
 &

'

inet

&() ) dQx  d)   ())  's () ) E*+%  s()
)-9 )b ()  x y ) Q()r Q  ()x )Q+3Q  
D ) Q.3 x ()    () -/Qx rE&() )  x *+XQQ() -9Qx
-/ d (),Q()  Q() ()-9 y))  dXr# )-9 ) d#,   -s ()
uE   *+ d) ,) () v sr
&() ) ) *+ Q()s )-9  x.x.x.x/y () d x.x.x.x sy)Q ) )()
) y w () D) *M d v () ) Q*+.r% 'Q() /y EXw d5@Q 'v  % 
r    Q () /y %E),))) d|) /32 r>&()sQ() v x Q   
/32
~ ())()3) x vxI  u)Q ()  sEEr

h_

'

hh

Captulo 4. Operadores
-/ , dE ,) ds d  r
Q -9) D)*+ w , @ ,  /r  @  /@  %
 -9 w d dX-9QM d3Q *+ pg_operator r  )QE d pg_operator
)-9 x ))*+  -9 *+ d)    *+ *+ )Q d) E%,x-9  
 sQ  d) x)r
Eu Qs%su)Q  
  -/)-9 d)-9 3QE6
 [yuu
\~  
SELECT oprleft, oprright, oprresult, oprcode
FROM pg_operator WHERE oprname = ||;
oprleft|oprright|oprresult|oprcode
-----+-----+------+----25|
25|
25|textcat
1042|
1042|
1042|textcat
1043|
1043|
1043|textcat
(3 rows)

$  E  d )u-9w  Bs  ) )*+ ~  '
 *+X
select * from emp where salary < 40000;


QM*+)   E  d *+|5 )-9)    *+ *+ )Q 
 E% /s d-/Qd*+ ) r  -9~  ) ~)Q  ()~%3G
select * from emp where int4lt(salary, 40000);

psql

  )  -9*+) mm v*+ ' d s  Br

Lexical Precedence

$,  B,  d) )~ -9 / )-9~     ~-9-9v )Q d


3 dErE$v*+%
xM |y E% dQ ) b*+*+b -9 / )-9+x3-9 urQ 
 %-/d d-9*+ *+ d) s-9D) Qur@ EI *+%  B %)
6fx w6Q ) D ) -9 / )-9  B)Q s   ,@  d )o 6{D=x w6{9r
a a i gcmkm~fca%mfc cn9 m%kn/e amn9cn9eIkl 
Elemento

pr

Precedencia

Descripcin

   d

-9)  -9 !#"$  


-9)u  Qs
 *+Q  x

   

Elemento

Precedencia

,X


Descripcin

   d


 d d-9()
   d
 d d-/()
%   
%   
   

 *+ % d,  


*+ ) )%E
Q *+)-9  -9
) )-9-9
-9*+  ) u
*+  -9-9)u3
-/)% 3Q-9-/
 d3v& % } $!#
 d3 $$
Q ) & $$
)Qu,x d),
#I'*+ d*+
-/)Q) )
-/)-9)-9~ Q
 d3  )
 
) %-/
)Q  -9-/-9
)-/

5!
5 ! D
$$
& $$
IQ, *+, E% /

t )&
$ 

  -9()
  -9()
   d
   d

&
}

Operadores generales

$D  /*+   @  % ) )*+ d QD Q
)Qu   vu%y  sQ) *+p -9,() wsQQ # *+ r
a a gf9l5c%%cal fc
Operador

6{
; w
w

w6{
uDu
nn {
D
h

Descripcin

d)@   q
)@ %   q
 q
 q
%x   q
x@    q
)-9 d)~ )
&|
*+

Utilizacin

6 {
;w

w6{

3Q ],uuU!#"$e
nn {
-/x9h*+-h() *+e
X-/xXx

n D

Operador

D
n
n D

 -9 n DAXmXx


 ()*aS(G r   ()*+r
 ()*aSvR r  &()*+%r 
 ()*aHn (R r  &()*+%r
 ()*aHn +R r  u* r

Descripcin

Utilizacin


 -9*+
)-9)-9v   d
3 d)3 vv*+x -##*+) 9 )-9)-95 d
3 d)3 vv*+x -##*+) 9 -9)-9  v  
3 d)3 vv*+x -##*+) 9 -9)-9  dv  
3 d)3 vv*+x -##*+) 9-

Operadores numricos
a a gf9l5c%%camfc,k_`4ce n9f
Operador

nn
X
X

u9
Du u/

Descripcin

-9Q
-9 
 E%
   
 
&
 )-9
 -/%-/
!# *+
d 
u
) d)-/%-/)Q 
$Q*+)Q E%
@ }  Q
) )-9-9
~-9  
~-/-9

Utilizacin

n n
{fX

X)r {





r
#`{r
{)r
rd
| r
u9 {)r
uu9 Br

Operadores geomtricos
a a gf9l5c%%camfc,f`Nl ce n9f
Operador

Descripcin

Utilizacin

&#Ed)-9

&
d)3%-/

-9)@#Q-9

Operador

-9)@#Q-9
)  -9-9


;
A
A w
aw

w;w
w
q

 *+ dD  ) 


)
 ) *+%s#*+
!
3  dE) vq
!#   ) v@
   dq
!#   ) v@
  /-/()%q
 )-9~ d) 
} ~   ~ q
Q~ ID q
} ~ d -9()v q
Q~ )-9*+w q
) dE -9~3 3  dE)

q9

()E%)Qq

q9.u

  )-9 q

~
q~u
q~uu

h

Descripcin

$)Q | -9-9 ) d /)-9


,u  -9q
 q

) )

)Q

 h Gh  
r R h  ) 
 h d G h 
r R h  ) 
5 % h d5 R h f
r R h  ) 
% h d5 R h 
r R h  ) 
5 Z d h 
5 % h h 
 h % Z5 
 G  )  
5 % h d5 R h  
% h d5 G h -9Iy,
5 h R h -9Q
5 % h d5 R h -9Q1A
5 % h d5 R h -9Q
5 % h d5 R h -9Q1Aw
5 % h d5 R h -9Q
  G h -97-/ 4
aw
5 { %  G h -97-9 
%  G h -97-/ 4;
5 { G h -97-9 
 % R h -9-9 N
5 h{  G h -97-9 
5 {% %  G Z -/7-9 Nw;w
5 G h -97-9 
5 Z{  G h -/7-9 V|
5 %  G h -97-9 
5 d% h d R h  q
5 h Z G h ->Q"`
 G  ) q/
 G  ) 
5 % h d5 R h  q9.u
5 % h d5 R h  
#  h  G h d (
w
 G ) q~u
 G  ) 
d h G h  q~uu
5 d h G Z 3 d
% R  )QC
5 %  G h -97-9 
f % G h -9-9 
Utilizacin

D{

Operador

Descripcin

 B-9

% h d5 Gh )V{
5 h Rh )
Utilizacin

Operadores de intervalos de tiempo

Q   )Q u'   *+ Q)Q EuB '  d  'Q # *+
) Dx) d3Q|Q Qb-/*+D D*+D*+ Er
xu
 E% /sE  vQXr
a a gf9l5c%%camfc,mve5kl ca%5f,m~l e `bf

Operador

6{
;w
{
w
w6{
w
;
u
D{
qew

Descripcin

) uD*+ )'   q
5)Q u%*+ d) %
  q
) uD) %
  q
5)Q u%    q
) uD*+x'   q
5)Q u%*+x' 
  q
)u  @w ) dEu
  *+
5)Q EuD*+ )'   q
*+ d) ) u
 B-9
& *+ ) D 
) uq

Utilizacin

Operadores IP V4 CIDR
a a gf9l5c%/%ca mfc%j | jF
Operador

Descripcin

d)@  

6{

)@ %  
 
 

Utilizacine

z r dd )& r
z r )& r
z r dd )& r
z r )& r
z r d & r
z r )& r

r {Gh -91
r Gh -/
r { GZ -/y
 6{
r { Gh -/
r { Rh -9o
 {
r { Gh -/

h

w6{

Operador

w
;w
;
; 6{
w;w
w;w6{

z r d )& r r {"Gh -91w6{


z r )& r r {Gh -/
%x  
z r d & r r {Rh -91w
z r )& r r Gh -/
   
z r d )& r r {Rh -9y;w
z r d )& r r Gh -/
3Q~-9) )
z r d & r r {" Gh -91;
z r )& r G h -9
Q~-9)Q ) dy , % z r d )& r G h -91;6{

z r d )& r G h -9
)  )
z r d )& r G h -/1w;w
z r d )& r r {G h -/
)Q ) v s   
z r dd )& r G h -91w;w6{
z r )& r G h -9
Descripcin

x@   

Utilizacine

Operdores IP V4 INET
a a gf9l5c%/%cmfc,j | j F
Operador

d)@  

6{

)@ %  

 
 

w6{

x@   

%x  

;w
;
; 6{
w;w
w;w6{

Descripcin

 
3Q~-9) )
Q~-9)Q )  %
)  )
)Q ) v s 

Utilizacin

z r dd )& r r { Gh  5
z r )& r r Gh ) 
z r d )& r r {GZ ) 56{
z r d )& r r {Gh ) 
z r d & r r {Rh ) .{
z r )& r r {Gh ) 
z r d )& r r {"Gh ) Ew6{
z r )& r r {Gh ) 
z r d & r r {Rh ) Ew
z r )& r r Gh ) 
z r d & r r {"G h ) E;w
z r )& r r G h ) 
z r d & r r {" G h ) E;
z r )& r G h ) d
z r dd )& r G Z ) 5;6{
z r )& r G h ) d
z r d )& r G h ) 5w;w
z r d )& r r {G h ) 
z r d )& r G h ) d5w;w6{
z r d )& r G h ) d

Captulo 5. Funciones
-/ %s )-9) ds  )  d  r
 |) v*+ -9()v v % -9)u dEbQQ -9)
r-9)   )D   -9-9 )-9) dr }  ) )-/) 
 %*+ d Q) QE%upd  E% dwx    v-/ *+ d) 
-9*+ dE r

Funciones SQL

[ )-/) v!


"D$\-9)  -9-9) dw )v Q)@!#"D$z    Q ) )

 %# %   w )-9) s    v)   y *+ *+ d) %s-9*M3*M s )


-9) r
a a i g_kn9e fk%,^
Funciones

 } $! 
 list

Retorna

) $

input  $

$ $)5 input value



} !#
expr expr
& expr p rhrhr r

$)!
 expr 

Descripcion

 Q)~ *+ 
u) D$
~ 
 d E) D$ 
input

Ejemplo

 } 
$ ! 
 r" ]|


{

c2
$$5  }
c1

value

 Q)~w  /3 } !


 c1 {

vw*+ 
&  *+ -9(<
-9 ~u d  dE $#! )*+Q-/(<


Funciones Matemticas
a a g_kn9e fk%,al `4 l e n9a
Funciones

   %#&

Retorna

  #&%  #&

 &

 #&

Q )

 &

Descripcion

 *+ d)3)w
) )
 -9-9
 *+ ))w 
) *+ 
) )
 -9-9
-9)u    d) 
~ )Q  Q)

Ejemplo

  r %

 r  r

Q %

Funciones

Retorna

)Q  dE  

)

Q )

%

Descripcion

9- )u EQ v  )Q 


~ )Q  Q)
 -/Q)u) v v v ) d )Q

Ejemplo

Q 

) d dE r d

String Functions

!
"D$z  d) )-9) , Q  D-9y)Q#  d-/-9)r }  )3y*+ d*+ ) %
3%)QE )-9) ds3Q d,$,  & #QD3EQs%E!
"D$z -9()
u-()%xQ #Er
a a g^ % ^l ce k_kn/l e fk
Funciones

-9() ^ ) ()  ) )Q


-9()-
 )Q
Q 3 ^ ) () QE)

Retorna

Descripcion

 E QE)

3Q)

-9)u  v d  


*+)-9 %
%*+-9 )~ Q*+8)
 
Q  
-/%~w3-9
    d#Q
 -9-9
QE   Q #Q
 -9-9
Ew-9 -9 d 
 d#Q

-/Q ^ ) ()  ) )


3Q)5QE)
 )

)Q

 3Q)  )


) rEp7 )r

 )

p *

 )
QE*+Kp  d)VuGQE)VuGR(<r
p QE) r * 3QE)
   /
 d#

)IQ   d#Q


)I  d  

Ejemplo

-9() ^ ) ()# Q 


-9()  ^ ) ()# I3]

 dE#& 
-9Q #^% ) ()# I3 ]
3Q)#

&*4

 QE)#&*4
*  %
 *+ Q(FS
*
&#*+S

-9)u dEQ v     #Q*4


*+x-/ 

$*+x )-9) dv Q    ) dvEQQ #Qu-() x-9()


r }  )s3| %s)Q )*+ )Q wEv*+ *+ )Q% )-/) s ~ d#Q!#"$z
 -9EQEr
a a g_kn9e fk%,m~%l5f
Funciones

-9()5Q %

Retorna

-9()

Descripcion

Ejemplo

9- )u EQ v  d#Q -9()E# QE)


Q-9()

Funciones

-9()5ud-/()%

Retorna

)Q-/%5Q 

Q 

 Q BQh) hQ 

Q 

QE*+ Q #QhQ #

Q 

Q #Q3 Q  hQ 

 

IQ  h)Qh d#

 d#

 *+  Qh 

 

-9()

    d#Qh)Kphh)r Q #
Q #Q -9()

 d#

Q #Q ud-9()

 d#

QE)
Q IQ #Qh *+hQ

Q #

u-() -/()%

u-9() 

u-()  

u%-9()d

Descripcion

/- )u  v 
u-()~ -9()
E*+ dE~ d ~
-9vv
*+x-/ 
 d ) -9E%-/Q G d
w%   vw
)Q 
 -9-9
 d-/  -9E%-/Q G d
w%   v d
Q #Q
-/%~  Q #Q
 -9-9
  ) -9-9 dG 
w  B-9()w~
)Q 
 -9-9
 -9Q  -9-9 dG 
w  B-9()w 
Q #Q
d#QE%     
 -9-9
-9)u Q v-9()wQ
Q #
-9)u Q vu%-9()X
QQ #
-9)u dEQ v-9()-9 
~ )
-/)u  v-9()@w 
u-()
-9)u dEQ v d#~ 
u-()

Ejemplo

-9()E ud-9()

u-9()X )$
) -9#  ()*+a
#()mh q9q
 *+## *42S
3Q)#()Q(<2$
E()mh2S
EQ*+ *+#2S
 QE#()
Q()   h{
 d#Q#-9()QE)
 d#Q uR-/()%

u-9()X )$
 )Q # d {

u-() -/()%
 )
u-()  3Q)$

$y*+x 5 )-9)  -9 *M )  )wQ  +QE%Q%Edy 


*+ )Q,-9() xu-9() r

Funciones de Fecha/Hora

$D )-/)   -9())#Mu d   -/I Q () E*+ d) D%E
*+) @uE,  % #&*+ r
a a gal Re `bw_kn9l e5fk
Funciones

Retorna

Descripcion

Ejemplo

Funciones

Descripcion

Ejemplo

Q*+ 
d % Q*+ hdQ  *+

  u*+  ,x


8)

 #)F2 z%{B 


 Rh % Q*+

Q Q*+  Q*+

Q  *+

-9)u EQ v *M v Q  


Q Q*+
* #)FGh %3Q*+
+

Q Q*+ Q

Q  *+

-9)u  vQ 


Q Q*+

 *+ d  Q Q*+

Retorna

 *+

Q Q*+ Q hQ*+  d *+

  &
 


Q ^ EQ  QhQ Q*+


 &

Q ^ EQ  Qh *+ d3d

-9)u  vv3Q*+

Q
*+ #)FGh  d *+

Q  
*+ #Qx$Rh Q

-9)u EQ v% Q*+ 


  d *+ d zz"&
Rh % Q*+
 B"Gh Q*+ `
-/ v -9()

Q ^ k F
2 )(Rh d Q*+
-/ v()E

Q ^ EQ#() ]2


()
*+)aGh Q*+ 

Q ^Q )-9# *+) <( 2 )FRh  *+


Q Q*+
Q ^ Q )-/ Q  h% Q*+

-9()~  )-9

 Q*+



  *+) q

3)
Q #)xRh  *+

 Q Q*+



)w()w) wq

)
Q #)xRh Q Q*+

 Q*+ 



)w()w) wq

 Q*+  *+ d3

 d *+

-/)u  v~ Q*+

Q*+ )   *+

 *+ 

-9)u dEQ v
Q*+ 

) d#
()}Rh  *+ d
 Q*+ #
()} Rh  *+ d
 *+ d3)#
() Ea Gh  d *+

E )-9) 
) date_trunc)D *+ d)    3 df x d]
*+) (<ex$() date_part
L*+) Q 
xF -9)-9*+y*+ d3 -9d-9)Q
 y  -9   -/ d) x$ < *+ ) *4; $ *+ -9 xA *+-9 -9)G r date_part  
*+ 5 F %Es d E)%) %s , *+)6 -/(< %Es d E)%)  )X 
zB 5%Ew% Q*+ C d-9(< w  )' dQQ ~3 d )QE)-9 E5 

 *+ d3

Funciones de Formato
Author: Written by Karel Zak 1 on 2000-01-24.

$ )-9) d *+ u d | -9I )  w() E%*+ ) %D-9)
u EQuQ Qx d  
Q*+ B)  % %) *+ - vQ   *+Q x-9)u  
 Q  5*+ dw3 % Qx  r
a a g_kn9e fk%,m~fc`+al f
Funciones

Q ^-9() Q Q*+


Q #

Retorna

Q #

Q ^-9()  *+ d3Q*+ Q #


Q #
Q ^-9() ) %Q 
 
Q^-9()    

Q ^-9() ) *+ -/


Q #
Q ^% Q*+ Q B
Q #

 d#
Q #
Q Q*+

Descripcion

Ejemplo

9- )u dEQ vQ Q*+ 


 )
Q ^-9()#)FGh % Q*+
  !
!
-9)u dEQ Q*+  *+  L ^-9())
~ )
  !
!
-9)u  v )#)# &  L ^-9() {%" zzz
~ )

 -9)Qu) Q # &w~QE) zL z%^z -9 ()z   {r &

-9)u dEQ v) *+ -


 )
-9)u  vQE)
Q Q*+

Q^% ; Q% 

Q

-9u dEQ v )y


Q

Q ^Q*+  %*+  Q


Q #

Q

-9u dEQ v )y


Q*+  *+

Q ^) *+   d#Q


Q #

) *+ -

-/)u  vQE)y


) *+ -

 L^ -9() d {)r &d


zz%z z z%!e
 L^ Q Q*+ # { %v " 
, F
 L^ Q { %  
,
 L^ Q*+  *+ {
- d " D 
,
 L^ ) *+ #  hd{)r d&
 zz zzdz z!

E , )-/) s  *+Q d


3 d ) *+ )QD s E*+% -9 
r
a a gfc`bal e nl _csaca~mal l e `bl5fn9ac5c9e kg
Format-picture

Descripcin

)( w 

()w 

*+) Q  I{z

%
%

Format-picture

!#!
#! !
!!


,
,

&
)Q(
*+) (


*+

},
x
x

x
x


"

Descripcin

3 d )  {z


3 d )%3%
*+ )-9() # & d zz
 8) ~*+%sQ -9-9*+
 8)5v*+, 
Q*+ Qs 
8)
 *+ Q 
" 8)
Q*+Q 
" 8)
)*+ v-9*+ Q d*+ d3 z  d  
 s-9-9 dG , y*+x3-9 
)*+ v-9*+ Q d*+ d3 z  d    
*+ '-9-Q  *+x-9 
)*+ v-9*+ Q d*+ d3 z%5 d  
 s-9-9 dG , y*+)-/ I
)*M v% /u 
*+   QEd
 ,-9- d  *+x3-9 
)*+ v Bu 
*+ d3  d   ) d
*+ '-9-Q  *+x-9 
)*+ v /u 
*+ d3  d  
 s-9-9 dG , y*+)-/ I
*+ , % 
)*+ v-9*+ d  ;z  Q 
 s-9-9 dG , y*+x3-9 
)*+ v-9*+ Q Iz  Q dE  
*+ '-9-Q  *+x-9 
)*+ v-9*+ d  ;z  Q 
 s-9-9 dG , y*+)-/ I
)*+ v% /u 
%  Q 
 s-9-9 dG , y*+x3-9 
)*+ v Bu 
  Q dE d
*+ '-9-Q  *+x-9 
)*+ v /u d
   Q 
 s-9-9 dG , y*+)-/ I
~ 
 8) % %
~ 
*+   d
~ w *+%) #B`%!# { %
3 d*+)~ *+ d
)*M  w *M)~  8)
-9 )Q ~  
Q %) ,  )  %B t
 %EQ 
*+ s d)*+ E%*+) 5 , `%# { 

&#v *+Q -9   dE*+Q + , #Q  + d r93 #I du
v )w) % E*+% -9 
re 5
 , #Q r
a a g^_ da%cavfc`+al e n/l _)caca~malI l e5`+vl fn9a c5)c9e fkg
Sufijo


&

Q(


!#

Descripcin

*+  )% d


) *+ )
  
Q
) *+ )
) dE'
Q
5  *+
-/)*+  %
5*+ -9Q  Dr>&()
& ^ } &)&5
& ^ } &)MQ~ -9
y)-9  w-9)
 3%)r    3%
-/*+E*+  d*
5*+ -9  r
 *+ v )*+ *+ )
)

Ejemplo

) (
&
&
)Q( x

!


    3%-9*+ V# EI *+


D
D#K!
!
3 )   y d)  v-9*+ s3%, xy)y Q-9 @r3!#   d d -9+Lv
   :  EI *+
)Q(EvR r%r

 d#X  L^ -9()  wQ !#"D$bQQ #Q3(3   )Q #Q )Q w-9*+
*+%xy  d)   |   ~ dQ  )y ) dE Qd-9*+y. x
5*+ ;-9  % EI *+ d % a , R rr
a a gfc`bal e nl _csaca~k_`+c@ e kl 3fa%l7Rk_`bce n9l fn/ac %c9e fkg
Format-picture

>r  
% -9*+*+


Descripcin

u' Q))-9 
)*+ d
 -9-9 v sx)  %
) d ~ -9s )-9
-9*+z% D    -9s
)-9 w-9 
 )Q -9*+
 E%X v  *+ 
 Q)~ u) dQu )
E%-/. Q
 Q)~ u) d% u-9 d)
*+ ) ~-9 d
*+*+) d 5 ~-9 

Format-picture

$
!
,
& 'Q(



Descripcin

 )Q -9*+
~-9 
 %EX v , 3v-9 
 Q)~ d)*+ )s dw-9
 -9-9~ 
)*+ V
 
  )~ )*+ w-9
 -9-9~ 
)*+ V
 |  3Q d!
"D$
 )
  )~ )*M#*+ ) dy
3-9 d3 d-9-9v)  d!
"D$
 )
 Q)~ )*+ dD-9*+)*+ 
*+) )*+    @ )Q x z%z z
-9)u Q v )*+ w)*+ d)
)-9)u Q')*+ s*+ d) ,   v-9 
x)*+ s -9*+    !#"$
 )
`%) Q)~ u%
  d
*+  -9  )1
<
d
)*+ :
z s   d,1
1
r>
 L ^-9() ) w  :
1

x ) 
 -9*+BI ) # EI *+V
  zz)r z z"z /r
) *+ s-9 )Q-/r>%()w)
 r

  Dy) E*+% Du1! "$L#))-9()y) *+ d%`d L^-9()E 


!#zzdzz  -/ 

-12

% )Q^-9()  "5zzzdz  -9 


-

12

r -9 ) *+ v v


 d)  yz d -9 v  d) v   ~ ' *+    
 1zGr
a a i gl fn9a c5k `b;f9g
Input

Q^-9() )  %x/   !#!


Q ^-9() )  x/%y   !%!e
Q ^-9() r ] zz)r z%z
Q ^-9() r ] z)r z%z
Q ^-9() r  r z
Q ^-9()  " zzz zzz)r z
Q ^-9()  " zzz zz%zr z

Output
Tuesday

, 05:39:18

Tuesday, 05:39:18
-.10
-.1
0.1

0012.0

0012

Q^-9()&{%zzz"
Q ^-9()  &{] zz"z
Q ^-9() &{% zwz~z
Q ^-9()  &%{  zZzz "z
Q ^-9()  &%{  z z%zz
Q ^-9()  &r {  z%zzr z%zz
Q ^-9()  &r {  z%zz zz%z
Q ^-9()  " &r {2 z zzdz zzz
Q ^-9()  &{] zzz%!
Q ^-9()  &{] zzz%
Q ^-9() &{% zzz%#
Q ^-9() &{% $zz"z
Q ^-9() &{% ! zzz
Q^-9() &{]! zzz
Q ^-9()  &{] z! zz
Q ^-9()  &{] zzz%
Q ^-9() &{% $zz%z
Q ^-9() &{%
Q ^-9() &{% 
Q ^-9(){)r  
Q ^-9() &  zzz% <(
Q ^-9() &{%  M) *+ d  zzz]
Q ^-9() &{r &    ; -9*+  zzdz
Q  -9*+ r z%zz
Input

Q^-9()  " zzzdzz


Q ^-9()  r %zz%zz z"
Q ^-9()  r %{ z%zz

Output
485
-485
4 8 5
1,485
1 485
148.500
148,500
3 148,500
485-
485-
485
+485
+485
-485
4-85
<485>
DM 485

CDLXXXV

CDLXXXV
V
482nd
Good number: 485
Pre-decimal: 485 Postdecimal: .800
12000
12400
125

Funciones Geomtricas

$  *+p  -9)Q


## #) d
Q()x)+-9-9 ~  d) | 
-9I )   )-/) s) u %r
a a i9i g%_kn9e fk% f`4lIce n9a
Funciones

Retorna

Descripcion

Ejemplo

Funciones

 / 

 %#&

Retorna

 / -/-9

 &

# h



-9 )Q 5

Descripcion

 v d d-/Q  

Ejemplo

 d# % h  Gh 

  -9-/ 

 d# % r GZ -/-9


##  h  2 r { r { h 

)

 -9 ) 


)Q E d-/-9
 -9 d) 
-9 )Q d
dI Q

-9 )Q 5-9-

)

-9 )  
dQ d 

*+ d I-9-9

 %#&

-9 )
Q E#5  r  Gh -9-

() () 

 &

 %*+ 8)u  -9


  )( 
 -9 d) 
()Q 5 h d Rh 

-9  Q(



  w-9 E%wq

-/
 #  h  h  G  (

 d)  (



 Qw  q

 ) ()  

 #&

3
 )#p7  h % h  r#Gh Q(

 ) () % (

 &

)I  w)   ) ()#


 I GZ 3 d
 *+ ) 

-93 d5% (

-9 )
Q E#5  h  R 

*+ Q d-9-9  


 *+ d
Q E#5  r  Gh -9-

)QQ  w  

 ) ()#5  h  h Gh  (

Q(

-9)u Q vQ(


-9 


 )#p7  h % h  r#Gh Q(

)  h 

)

)  -9-9

)  Q(

)

)*+  v ) 

) #
ph   h % r#Gh Q(

 ) Q(

Q(

-9)u Q vQ(





 )#5  h % h  Gh Q(

)Q#
 I GZ 3 d25 h
 h  Rh  

Funciones

Retorna

 &

Descripcion

Q()5

 &

Q*+8)()) 

 5-9-

 
-9-9 

Ejemplo


 # r Gh -/-9

Q() h d Rh 

a a i g_kn9e fk m~n9fkc/e kmvl e f f`4l ce n9f


Funciones

# -9-

Retorna

# ) h)



-9)u Q v ) 


 -9 d) 

# x



-9)u Q D


 -9 d) 
#  h  h  Gh x

-9-/ dI

-9-9

-/)u  vv-/-9 

-9-/ dI)  &

-9
-9 #  h  Gh 

-9-9

-9)u dEQ v~-9-9 

-9
-9 # d Gh ) r 

 5

 

-9)u Q v)   #5


 I GZ 
 

 5)Qh)

 

-/)u  v~ 

Q() x

)

-/)u  v~ (

Q()#  h  h  R x

) -9-/

)

-9)u  v~ )Q


-9 ) 

)Q#  r  Rh -/-9

)  h 

)

-/)u  v~ )Q


) dE -9-9

) x

)

-9 )Q )

) #
 I GZ 3 d
 h  Gh 3 d

x)5

x

-/)u  v x


-9   ) 
) #  h I GZ 



Descripcion

9- )u dEQ v-9-9 


 -9 d) 

Ejemplo

#  r Rh -9-9
# d Gh )  Rh )

3 d#
 R )  Gh )

) # % h d h Gh x

Funciones

x)5-9-9

Retorna

Descripcion

x
) npts -9-9

x

-9)u dEQ ~) x


)   r  Gh -9-
npts

x)5 (

x

-9)u  vvx x


)#  h  h Gh % (

x

Ejemplo

9- )u Q ~) x


-9   ) 
) #  r  G -9-/

a a i g_kn9e fk m~n/l _)a e%a n9e k f`4l ce n9a
Funciones

Descripcion

Ejemplo

 u /EQx x x

-9)u Q v u r


x

 u  
x# d h d Z Gh x

E )% () Q(

 (

-9)u   u r


Q(

 d
Q()#  Gh  Q(

E
x x

x

-9)u dEQ v u r


x

 d
x#  Gh x

Descripcion

Ejemplo

 () Q(

Retorna

 (

 d3Q( 
 Iu r 5*


Q()#  Gh  Q(

Funciones PostgresIP V4
a a i g_kn9e fk f/l c9j

Z

Funciones

%-9 -9

Retorna

%-9 ) 

 d#

()3Q ) 

Q 

 d#

9- )Q x ~



 -9--9  9-  # z r % &r r {) 
-9*+ d#Q
-9)Q x ~
 
 -9--9  -9  # z r % &r r {) 
-9*+ d#Q
  ~ d-/-9
()3-/*+Q  
() Q# z r  &)r r { 

Notas

Funciones

*+. ) -/

Retorna

Descripcion

Ejemplo

*+. ) ) 

)Q

-9-9 ~w)Q 
 
) d *+.

*+
. )# z r &r r { "

) Q*+. ) d

Q #

-9)  x ~ )  *M3. ) Q


-9*+ d#Q
*+ . z r  )& r r {) 

)

9- -9 vw) 
 
) d *+.

*+
. )# z r &r r { "

r*+ X .. ~>r Q-9 sr -9

_

h

Captulo 6. Conversin de tipos


$@-9)  !#"$y   d)d)Q )-9)%*+ )Q )  d   *+ -95 d B)Q Q
 Qv )*+*+ d# d3r Q ~ D) v -9) w%E du% %
 B)    -/) d)%5 d d) d,Qr
|*+ -9()v-9 M  %E)) -9 QD-9*+ ) , Q  d*+ -9)*+
-9)u  Qr!# *+B-9)u *+-9  % Q '  d
 s -9 d@ d3 Q@ )-9)  r   QX   d I  %
   *+  )-9)u  Q "E
 -9 b dD ))  -9-/D*+ -9)*+x-9)u d)-/) D y-/)u 3
 ~  d3Q dr E Q%3 w -9-9) -9 ) )Q   D d  
x M M *+wMQ ) *+) *+-9    Q
 -9-93% )-9) sx E%  dE*+Qr
$w  *+'Q ) w*+ d  ds ~EQ*+ d#%-/Qs 3%s
~-9)u *+-/Q~ vQr

Conceptos generales

!
"D$M s  ) I -9| ) )-9 ~ E)r } -9wQy  d) ~-9
+  D%    D Q *+)-9*+| D-9*+ x-9*+3  *+ 3%>rd  
  d)   *+y Q  3     ~*+ -/()+*+%~ ) x  #     
*+ *+ d) -9)  ,t !rE@D )Q v*+x %, dE-9)u  XQ
D  X   D  d )@)E*M d)  X%3Q)Q ,*+ EI X   )
)*+s()  -9s    dE*+Q  /3) -9|Q )Q*+ %-/% 
)-9) d3 w*+*+w*+) ~ -/ d -9Q, )s  3 %EXr

)%@   -9-9~s  *+ d) spd#-9 -/)-9-/Q , )
*+ )Q # d) d  d3-9 ))*+ Dx% D-/%u r#$|*+xE| 
   +-/)u   +-9 )% +*+ s ErB) d) I D  )
-9!#"D$ dE*+Q   d-/-9)*+  Q-/y-9 )%r *+ -9)*+ d' 3%
3Q ds~)-9@
)% d
-9*+)-9 -9 XrE' EI *+~-9) Q)
tgl=> SELECT text Origin AS "Label", point (0,0) AS "Value";
Label |Value
----+--Origin|(0,0)
(1 row)

  d) s-9 /)%  D d#x Q)Er3!## Q)D   -9-9 )Q)-9 


dQw ).D X%3)v)-9*+ )Q rGQ     , du ,Q xw-9*+
  -9E *+s% )Q r
x|-/ QM-9)Q -9-9)  )*+ )Q ~ !
"D$w-9  dw    /Q) %w
%, -/)u 3 vQ, 
)%   
 
   E*+Q vQ) y d# /) d-/|  / ~ y *+ d) -9*+
-/ E% /s s *+ )Qr
$*+),~ )-/) 
E  
 *+v Q,   ,  -/)    /@ -9
-/I )  D )-/) rd$%*+D5 )-9) v  ) d+ )|*+ *+ d) 
y-9  d3@+-9 %   -9) Q d3 d-/-9@   dQb%y 
-/) ,) d y d d*+)r

dI Qu, v-9) Q


D)~ d-/%E->!
"D$ !# &M) ~   %,  )-9) Qw )wQ)r
$D  )  M-9) Qb d 3 dI  x  -9)u  @M%
-/ *+), 
dQ d u  !# &Xr
) Q,
d+y   yQ   ) ) -9- !
$ & 
  d-/ dv-/*+b )-9-9Q )Q -9 *+)%3DQ -9-9 3 !#
$ & d dy >Q Q,x-9)u EQs~ -9I )Q ) *+ r
-9()v ~ ~ -9)u E Qw )  ~ -9)u )-9)  )-9
  w   M s 3Q *+ w )-9) dx dE /   r/x%
 () d Q-9 X d ,-9)u dE%E *+ EI ,%X-9)u )-9) 
 sQ)Qu,  )% !
"D$z -9*+*+)Q) d dEx  >r
))    y-9)u d)-/   Q~w )-9  -9)u 
 ~ yQ*+%| |y *+ d) y-9*+y y ~E xy %*+ w*+*+
*+)        )Xr !
-9)    D-/     )-9   D-9 *+ 
-9EQ  d~ ) )-9 D-9)u dEuxM  3 d  d))
 *+) )r3Q3*+ E*+%-/ @))w @ d~ E%v
3%  ~-9u + ~ M-9   *+Q )Q )
    @s*+*+,-9-9   -9, *+) ~Q)3 ) r
)% Qu  D )-9y-9)% *+ I 3Q *+~
-9) -9Qv-9 -9     %)X!#"$rx-9)-/D-9 d  , )
 )QE)) *M E-9 *+  -x    B) r v-9Q  -/w #-9 -/
 ~ 3 d5) ) Q ) w (
 Qy I L ' d-9   %Ew u d*+  
  )Q D~-9)% r D A  I ) 
 , v 
    I L  
 d# ) *M     d d|   w )%'  ) wu-9) 
-9b b  )| d 3 %E   + u E -/b ))-93 -9)
*+ )QEv   v   Q ) u%E~Qw )v  3 | dEb*+ vx
  Er
$  ) *+    Q ) d+ v -9 -9| )-9Q D
 | -9 , v u d *+ d) ,   %s  ) s%*+ s-/ 
 -9)   )Q-/% E|5%-/*+ d) + sx  )QM%) 3 %E )
-9 -9r

Guidelines
&#s s -9)u dE| ~Q d3Q 8)s d) )y  )Q u dE
)-/

Y
Y
Y
Y

$s-/)u 3) *+-/Q)  dE ) d,) )-/D |   %y ) )Q w
*+  B-9 r
$' s )X 
 E% -9  ' 
%)d@)D  ) -9)-9*+ )
QvE%  y  %Q % y @  )Q I   v  r
)Q ~  B) -9|Q*+ -93Q) u  d| '-/)u 
Q3 d*+   d), )  y ,   Q
33D-9)u dE
) d-/ d3%E r
$vQ~ d)v   |)| d3Q+ -9)rB| ) 3Q d
)Q ) v) ~) *+-9 v, -9) s d)  Q Q ~ vw-9
-9-9MEMyQ  /)x% -9) *+-9 y%3% y d
)-9) ds)  dy -9 %@r
y d dE() , )-/  D d)% sy  EI -9 Q,3 )D-9)3 Q)
) -9 d3Qy-/)u 3*+-9   r d3Qy*+)  )-9)3 Q d3Q
-9)3Q xv vx d3Q+% d3 d) )-9 ~-/)   d  ddE

M-9)3 *+  d*+  D dM ),x+ d, )-9)  w-9)u 
)) d-/ d3%E d) D w-9) Q)r
} -9)*+ d) d) )-9)  )E*+*+ d) y     )-/)u 3*+-9 
%E ) )-9)x d) )-9  )   ) ) )-9+ -/Q-/+ 
 D *+ )Q-9 -9  X)%w  y v  )  u5 )-9xb)
 d@) )-9w*+s )v-/)u 3*+-9 w )~ )-9)Q )r

Operadores
Procedimiento de conversin
ca%mfc'm~aI_an9e k
r ) -9-9)w d -9~  I  v -9Q d-9QD  *+w^ QEr
)r!#) | *+ )Q w | dE%,)  ).)) d) )-9   *+
  v , *+*+    v  D *+ d) Xr
@r5)u Q  *+ ) 
x -9 I 3Q w #%-/Q-9| |  -9 
 ) vvp 
*+*+x~    -/)*+ Q uXr!

D()% d) )-9 )u dEQ 
 *+ )Qs d%E
 )% 'x 3v  v Er
r t 3-9~ d*+ Q'>Q  r
)ry-9  )w w Qs, E% /s-9 d
*+*+)*+ r
@r!#3M()x b E%s d+       D d) D  
3 d' E%x ) ~  @ dQ)    @ E%@r
-#r sQX dE% /X-9XQ Q X*+% d#-9 X  r %
 )()xI  d -9Q,xyQ~3  )Q ~@r!#y   dw 
-/%)Q% w   dQ     d@r
r!#%D *+ d) v s )QE, o
  ).)<  B-9 ds@-9)Q
) -/*+M d)) *+ -/QE) d*+ Q-/ 3 d5 ) rB!#()x
)v*+ -9 -9Q %3B*+ yQ )DX d# 3 %E  ) 
 dEX   ~  -9-9-9E -9Qv)    d d -/v*M,3Qr
!
+ d3Q  )Q  )-9Q % )Q)-9 %3)y  + dI M
-/ *+)  )Qv    u*+ )Q  d
  ).)< /r
r-9 D d)-9)Q-/+v>Q  dv Q*+ d#-9Qx   >Q Q+ 
   dI  s-9-9Q  -/ *+)  w uXr !#% u
  *+  -9)%  
)   dv)) ) d) )-9 3  d) v 
Er

Ejemplos

eOperador
LmF<xDAexponente
LD L6]DL<<,DD<mFA<mL$LLx4;$D4.#L:L#.
S]4m<""}m<yDV#mD,m<mmm<y:4+" D4<+]Cm1]DamcDa
<aDm#.
tgl=> select 2 ^ 3 AS "Exp";
Exp
-8
(1 row)

, a4<]%<"<mm<6<fD<<$ amNfmDaL =4L:D]%D


VmfL<amf5$Dm$m<y
tgl=> select float8(2) ^ float8(3) AS "Exp";
Exp
-8
(1 row)

tgl=> select 2.0 ^ 3.0 AS "Exp";


Exp
-8
(1 row)
Nota: Esta ultima forma es la que tiene menos sobrecarga, ya que no se llama a funciones para hacer un conversin implcita de tipo. Esto no es una ventaja para pequeas
consultas, pero puede tener un gran impacto en el rendimiento de consultas que abarquen muchas tablas.

Concatenacin de cadenas
< ;}m<Smdam4mm1DaV<#xD %"$K"6LN#mDLd"m"<D4 mL1L4(L
#mDL=L4Dm%=]<mLDf]<fm#]<D4 m"=L#mD4am9]}Hm}L
aD}+LmL5D]%LE<m]#L6D<
cD4<VamFaDmD"
tgl=> SELECT text abc || def AS "Text and Unknown";
Text and Unknown
----------abcdef
(1 row)

C a1a]e<mm<Lv4m daeSm}1mDcLD LoD1<am#:eLD LoS


CA$LE$D4]<#LKeSmaaD41D1aD<VLD]%L]$aom<# D
;L4C:#mD#S%


:L<#]<mcLmD5am]}D]m]
tgl=> SELECT abc || def AS "Unspecified";
Unspecified
------abcdef
(1 row)

; a#~af<,<m<D<1Dma:<mma~$D~#mH=a:D6<=a6<;aDmD"
CmD~(mfL<aDm#< f]a#f4<]%]$<"mmL+Da=]LmL6LD L
<m]#L6]mm5FmL~$DyD5m~$D4]<#LE}Lx1#mHVm#<D4 mo mm$
e3mDVD#]3mUD dm"5]<Em#<D4 m]a#]"D da#yL<aDm#<
Nota: Si un usuario define un nuevo tipo y define un operador || para trabajar con el,
entonces esta consulta tal como esta escrita no tendr xito. El analizador tendra ahora
tipos candidatos de dos categoras, y no podra decidir cual de ellos usar.

Factorial
a #%4Dm;mmD} dDcm<#] ]}"<# ]amU%%]mm<m4]<#]"eLD Lo# m
a#5D<mfamdD 5<LS mdD5D]%DU5DLa#Um<~aLm4<
D<;]<# =D =.# mm$D=L4DA<c4FLD L%.]mdDAD
4<<D4]%mx<x]<#LLDL} ]ym<< ;L<.]%m]}," D4<FDA<
D ymd]."m"mLFe# m3
tgl=> select (4.3 !);
?column?
----24
(1 row)
Nota: Por supuesto, esto conduce a un resultado matemticamente sospechoso, debido
a que en principio el factorial de un nmero no entero no est definido. De cualquier
modo, el papel de una base de datos no es ensear matemticas, sino ms bien ser
una herramienta para manipular datos. Si un usuario decide obtener en factorial de un
nmero real, Postgres intentar hacerlo.

Funciones

#H 
 
DD}dD<f< y]yFLmL$;Lam}4fD DL

DD}dmd4 LE]<# 
 



<cD<1mm}1DDvm+#D<m<+LC4m}A<L4:,V4ma4
<D4VyeD4]<#Le
o=aLm=<=D<#D<mLV]mmma#"Daa#6aSmLvmDU~m<# 5DD
}]vL<.]%mL}"DLD6Dc UaemL5mDL~<;DD]CavL<$ #mL
 =DF#L=m";#D<mL<,mL,aD},4,]D m#L,D FmL;#mDL
=D;D:}H<x<xaDa#1SD m:xam.}mDm<;DaU<am
$DfDF<mad]}yaLe#mHCDD1a]vL<.]%mo
6Dm$Dm yD:mL5" D4<+D]<# :}Lc#mD;a<LmLmam
mU$D4]<#LUD5<# 6<Dm#L,"#L UL4fLm"<<D
4 m"a%m<$]4]# m~VDa#D<~Kee<"VD<f4"m11 m]aS
4:fD(#mHxDD<mxH5].DaD%mLea=DDdDA LEmc,$D
mm]mLA #,<FDD=}]5Dm,}.<a=D (4:Hm}
}Lm;<,D<1 m<#L<+am<1]S3#mH;H ] mLH:m1LmA<1
<# y$Dy<~]%1y#mHVa<LmU
$ aco<m"#4LqoKDacCmD,4,].UDUaD}x]
3#mD;D# mLDy:#]$L mymD4<f]}D:SDa< m% ee<"
4~D1D<mD}L<C<"C<m<D<S<<5ayDD1DF LK
Ejemplos

eFuncin
Lm<qDfactorial
<A#D<m##L%m"+D<mA Em9D DL m9A]}Um"
am$Dm<5<aDm#"6<$m #]FD#L4m"4<#:L$D4]<#;m<  dm<<
tgl=> select int4fac(int2 4);
int4fac
----24
(1 row)

V]~:<<C# <a# 4;DL+]e<mmLo


tgl=> select int4fac(int4(int2 4));
int4fac
----24
(1 row)

FFuncin
y#Dsubstring
<m<
m ]1ND D]mN4aLmAD<C#m]<
eD4<"1mDsubstr
~#S$Cm<<
e~mm4=D<=L<a#<fd"<fdmDc}maDmD.mDc~aDa
m4<yFmfD<md#D<mLx"<my1mDU


tgl=> select substr(1234, 3);


substr
---34
(1 row)



eSmy<1+]m <d4;mD$< ]L4VDDaUcS"};:D1$<


1D<dm"]<#L<]~]"<mmLUm<#]<# f<$ #m md"mDVSK
tgl=> select substr(varchar 1234, 3);
substr
---34
(1 row)

mV$Dy]~%"<}#L%AHve<mm"o<

tgl=> select substr(text(varchar 1234), 3);


substr
---34
(1 row)

Nota: Hay algunas estrategias en el analizador para optimizar la relacin entre los tipos
char, varchar y text. En este caso, la funcin substr es llamada directamente con una
cadena varchar en vez de hacer una llamada para realizar una conversin explcita.

"aLmf#D<mLF5mm4dLFFm<e<"mmLUm<#< f<$ #m mVy#S




tgl=> select substr(1234, 3);


substr
---34
(1 row)

]m4<#yay ]Dd4

tgl=> select substr(text(1234), 3);


substr
---34
(1 row)

Resultados de consultas

#H ! "


DD}dDFaDa#yS#;F]]}DmU

 Ce5<a m;m<#<f<$ #mvmfSDamLDm ]]4<#1L#mDeaDm#"o
$#DL:%4HmA<$<"]m"3
# CHDaDmxdD#mH(;mL<D
L4D<CmL<$mD %o<#L<ym<#<C<L<# ~D<C#D<mL4$DaDa#,mVm<m#D
LCeAm}4;<L4$$D1S#mD,mEL+$D4]<#LaH%m4,S<4
#mDCLaD<VDF<;Lxmdm<m~
&

Ejemplos

DAlmacenamiento
%CDCLmD4<cdemvarchar
HcL44.<$%+mCam$Dm<CL<aDm#FaD%C$DC
aDm#<Vm<yL4 '<DDo
tgl=> CREATE TABLE vv (v varchar(4));
CREATE
tgl=> INSERT INTO vv SELECT abc || def;
INSERT 392905 1
tgl=> select * from vv;
v
--abcd
(1 row)

Consultas UNION

,L<a#DmL )(+*-,.( :mxDm] <,(D"<#F$D=:4:DL}mm=$$D,<


#mDL5ma#m<~FDx]}DmU
#H   /.0+132+0
C4H D]damL6mDL~axm]<#m5D dL5m~ ]}Dm<
 C<$m E~aDmyDEm~mDaDm .
(+*,4( D ~aD} md]mDdD5m~D m4
m"aDmd xV1mdmD4<fyaDmHU

Ejemplos
Tipos sin especificar
tgl=> SELECT text a AS "Text" UNION SELECT b;
Text
--a
b
(2 rows)

UNION simple
tgl=> SELECT 1.2 AS Float8 UNION SELECT 1;
Float8
---1
1.2
(2 rows)

5

UNION
L5mDL5transpuesto
] .(+*,.( aF#L%"+dKDa%aymL~mD5myD m4 dmDayc
.(6*-,.(
tgl=> SELECT 1 AS "All integers"
tgl-> UNION SELECT 2.2::float4
tgl-> UNION SELECT 3.3;
All integers
-------1
2
3
(3 rows)

< ;a# $;m <#m$;<<"mmL~Dm;a~a6<34 L%5mD<D


DLD]a#(]d41mmHDm(Vm#<mVD }m$;aDVNH<mLK
"m$Dm~4Le}=Da<34 L 5#mDFD<F<4L:D<am]mL  # =D<
#"$m.
tgl=> CREATE TABLE ff (f float);
CREATE
tgl=> INSERT INTO ff
tgl-> SELECT 1
tgl-> UNION SELECT 2.2::float4
tgl-> UNION SELECT 3.3;
INSERT 0 3
tgl=> SELECT f AS "Floating point" from ff;
Floating point
----------1
2.20000004768372
3.3
(3 rows)

7

8

Captulo 7. ndices y claves (keys)


Autor: Escrito por Herouth Maoz 1

Nota del Editor: Este artculo apareci originalmente en la lista de correo, como respuesta a la pregunta: "Cual es la diferencia entre las restricciones PRIMARY KEY y
UNIQUE?".

Asunto: Re: [PREGUNTAS] PRIMARY KEY | UNIQUE


Cual es la diferencia entre:
PRIMARY KEY(campos,...) y
UNIQUE (campos,...)
- Son sinnimos?
- Si PRIMARY KEY ya indica una clave (key) nica, entonces porqu
existe otra clase de clave llamada UNIQUE?

: 9C;9$VD m<9%=9c]=>;94@?$?;?L=94@?LA%CBDD9 ?4@99Cm<m9EBD:9x@;9<"@?


%4@;?L>;e<D43?VD1m<mDF9"mLxa9;eGBD:9dD]%D?L:9<
: 9Vam4@;mV?L4m:9mD<m9C94@?G$ .(6*-H;; %U:?(#m<:9" 9CBD$:?LI;9
m<m 9mLDJ ;96 ?K;BD4: 9< oam4@ ;m4<L BD: 9 ]a# mmLD6m< m 96
@ ?H%4
@;?LN M ?C< ?BD: 9f ? ;mmL:: ;9aO 9@ 9dF ?K;mmxaym<mDF 9fP ?v4 ?CG BD
<D43 ?;<m ?LS BDyQ ;9f ;9.:D%< 9% 9. a 9f ;9$1aR BDD 9fF> ;9]= ?<
e4 9" ?L4 9@ ;mm 9m;Sm$~ B6 9 96 ?K;mmLV< 91S 94m. BDV: ?L4~D<mF ?U
?L BD> Uf@ 9 9 BDV BDaO W:BD< 9: ?A BD Bm] 9c< ?LmDF 9"O BD: 9C ? ;m]mLS 94mNa> 9
T
9@ 9fDym<m 9 ;9< 5< BD W:?C< 95m m ;LA 9"$]"}ay#m]<F ?L6 ? ;m] ?L<J ;;9"< 9
953:m< 9= ;9YXEm 93S BDZ ;9, BD=m<d> ;$<D43 ?   #># E ;9= BD BDa#]N<]}mS 9YM
:?V;9d BDy#m<1> ;L<D43 ? [  
xaS 9( ? < 9> ;CBDD B@9  ?9a> ;m] ?L: 9\;9; ? ;m] ?L<@ ?=A BD: ?L4 ]Se@ ?L) ;? 9. ?
:?L 9a BD 9< ?L6 B ;?L: ?L46a> 9FD<m ?L<3 ?CG ;9f 9ady 9S ?}emF]4 9"
?<m< BD@ 9V?L# 9C 9" ;9CI ;9C 9a; 9S ?yaD. 9;9VS 9 ;9C ? ;m] ?L<y@ ?:A B
:?4$ A ?a 9d 9aS 9<#:m<Dm]<#$
D< 9"}_ 9AD]A 9",a=D<mF ?Lo> ;5: ?4` ;9A ?K;mmL: ?D<> 9a;m4< ;9
] ^ ? ;mmLQ b< ?L%4@ ;?Lo}L 9;m BDmmm 9( 94 9,a ;~: ?L4(\ ;9N ?K;mm
3:m. 9dDG ;9ZXEm 9o@ ?vc  ?K;? 9
N 9"Dxa BDm 9fam< ?;9f4ma< 9= ? ;m]mL<D ?K;?c BD
?+ BDF: ?4ym#<$D d m]<# 9E> ;e: ?L4y}a 9dD<m ?C: ?VW:9MVD3 ? ;m]< 9<
?o
e ]A BD4m]<
;9$D%m< 9"% 9<
f O
9y@ 9" 91m<m 9h ;9d@ ;9ZMC@ 9 9y]]3m%aG 9da ;;9<
g D 9
E

?Lam ;m $-?< B@MCm  ;%.O 9S B@9;mm 9]%


@

g
V
?


O 9]D 9]+ 9;?L (F 6


(
g
94P ?Ec BD<m BD
f O
BDD 9F ?< ?49;m%: 9"#m 9d@ 9 9G9"D_ BD: 9f ;9.
g R
BD]caC 9S B@9;mm> 9" ?5am4DR MVF B@9"< ?V< 9<< 9FD B( 9;?LvD<m ?U
g @
9;?] (c 6
g ^ DS 9F
i

5#  k j#=l% hm lK hnomp

N B 9"<?`9;9CDBD<S9V T @?L:BDV:?Aa]<]NF;9$y:?LD<m9dS@;mm9"4<#
q
;94}m<S9SmCa< 9f H @Uc@BDVW:9MBD(<<],BD\;?Lm<m]CD]<
G;9=m4@;m4]<9mL(aD]F9<a H 4:?cDD<G;9,m4P;m4<S9m<am4@;m4<Z;9
> ;9] ?L<]<# ;?L 9S ?E M6;9= 9add 9S?}@?a$J9]D9Z<m6:?L#D<m?aLD]?
;?r
m<Dm]L BDD 9 ?L5 ?L< ?C ;9$E H D?Lam4H :D<mF?L
da 9= ? < 9@ BDDf]# B@9vD} BD] 96]` BD: 9= 9" ;9,P ?E4] ?cd B@9;m BDmE ?L4
m: 9mN=F ?K;BD4@ 9aK 9VD]A 96, BD: ?(< 9VBDs <m;ND 91 ?K;BA: 9S@ ?1: ?
m<m:D ?LN}m:
?`BD: 949M BD 9 B,F 9" 9m4@ ;m]4< 9"mL4. BD eE  d ;m. ?#@ 9 9
D 4m#m< BDr ;9Ua BD] 9 BD 9@ 9# BD<4]<#5a> 9) W< W:9r BD: 96 ?L%< 964D
m<# ^ ;m BD: ? e5  d=@ BDFD3 ?L@ ?L K ?: 9 ;my4 9<ma< ?LJ 9m ?L: 9;maS 9;mE ?< ?
>;9k;m< 9: 94m<S ?cZ BD: 9; ;9$d` ;9;4]< ?  9D m<m@ 9;3 A ?L4]F 9<}< ?L:#]<%"
BD:
9 ?L DcaD 9;m"@ ?L+ ]4@ ;?
CREATE MEMSTORE ON t table u

COLUMNS t cols u

#a91:?C5<m<BD:9Z?Lc>9;m}m:?4BD A@;? %K
] rW<W:?=B@9< ?ZBDaV a9LBD:9F;9".5D m<9 9J?ZBD:9?4m:9mLVD<m9594@?L}
;9(aDmD9m H :?9mx]<m<BD:9A@9"%xBDxaa9(a9P?vBDw<m?9 BD;9
?<mL
;?L 9" ?L;@ ?f4 ?6 ;9( ;9.ca> 94"]m<F BD` BD: 9Da BD 9
a BD< 9;cb
BD1a BDa BDmO BDA 9o ? ?V ;9$1a BD< 9  9GBD: 9f ?4m: 9mLF1 94@ ?L~ B
^ D e
:?(]yD<m 9: ?#m.; BDaDmD 96: 9 9 ] am4@ ;m]4<#;F ?L4m<4 9V?L#]<6 9 ?L
BDA 9"<
?dD 96 ?L4m: 9mQ bKm4 9" ?L}a BDm] 5 BDJ ;9J?L<mr ;?U 9S ?U}a 964
Dm<#]#<D%f BDZ ?LD 9v@ ?LQ ;?64 ?L6 BDfD B eE @d . ;mdD ?L@ ?La ?: 9,: M9=a> 9YBD
m<m
;9E?L) d d ,YeE B~m<$<6F ?L< ?=%4@ ;?LF ?YBD eE  d 1m<#a ;mm$<6 BD
 . <maLam4D BF ?L: ?m4<S ? 9"}<@ ?a,]A> ;PW<]F W:?x= BD. BDa#s W:9#S B@9 ?
9% 9]y$Da BD] 91F ?LI ;9V4ma< 9C ?4m: 9mL]aD mD 9; ;9$22F $ ^ D<; ?I ;9
SD m< 9>%K
$

Notas

<]?KBDW:y ?KBD<9;3 ?LD:B~ 9 ;

xW

Captulo 8. Matrices
Nota: Este debe convertirse en una captulo sobre el comportamiento de los matrices.
Voluntarios? - thomas 1998-01-12

@?a$~D 4m#fBDZ;?O9 m BS?L BD:9;m<aS9<9,a>9"(D<m ?L?<?+BD:9,<9%m


<B@;m#mm4]<a ?@ 9;"L ;?<m BDcS 9O?= 9"% 9"z ;m$ BD];a 9 a< 9 m]o~ B@9;m BDmH#m
@?)$#m<F ;B@M< ?#m@ ?LED<m ?L5P ?o> ;{BDD B@9  ? %K%@ 9 9y ;BDa 9"vD B+BDD ?"H%m4] ?;> 9< ?L
BD:
9d ;9a1 ?x< 9%mE:#m@ ?L6 9a$
CREATE TABLE SAL_EMP (
name
text,
pay_by_quarter int4[],
schedule
text[][]);

9:F?L<DB@;m91O9 m 9:>9 EBD:9y;9aJ;;9<9 9: ^  d F?LBD:9y9]:91Dm@? #3|


$#:
94> %#N BD: 9;< 9 m. BD<mm4]<} ?L: 9;<fm@ ?  8 $#@9M  M B@9 #]%#SBD= ]Da<S9;a;
D9;9  ?=# m4a# 9;> ;]4@ ;m> 9 ?YM.BD: 9:< 9# m:$m4<a?.:9;m@? 3| $#aW< B@;m>%#>;
B 9k;$H ]}<S 9> ;W:? 9  ?F}]< 9: 9;$> ;.]4@ ;m> 9 ?U ^ W:?L 9)W:9< ?LO 9;m BD: ?x
}~) @
 a BDCF B@9"< ?Aa6 9"$ 9> ;m4]< ?LY 96BD: 9c< 9# m$<  9< ? ;?f 9k;?d<#
;;9$
Mq;?Lca@ 9 9< ?LC ?L  ?< 9"S$J BDa#]  ?L: ?A> ;J;m]< B@9a oaS ?: ?]C< B@M
m#<#yO ;9dam<#m~ BDyaG BD# ;mm 9y@ 9 9ym<m 9;mm 9va#3 BD BD 9
INSERT INTO SAL_EMP
VALUES (Bill,
{10000, 10000, 10000, 10000},
{{"meeting", "lunch"}, {}});
INSERT INTO SAL_EMP
VALUES (Carol,
{20000, 25000, 25000, 25000},
{{"talk", "consult"}, {"meeting"}});

@?~#]S?F@?a#RBD#;mmk94;9V?..]<mL4.":B4]9"mLA 9D9 9,<BD:?KV@99);9


<9%maaS ?9a_ BD: 9(< 9 mAx > ;m4]< ?LC ?Am< 9( ?L
9  9>M  MqD: 9;mm 9( ?L
9  9aMh2 ^ W:?L 9<@
?L< ?L) W:9G 9;m BD: 9, ?<D B@;m 9"D ?L C ^  dD m43 ?<< ?L}
# 9< ?L=< ?I9]R 9BD> ;m4]< ?N BD: 9x ;9=< 9"# mY 9+;9x$< a 9c ?<D B@;mS 9
D BDD 9`;?L,: ?L4 ],+ ;?L;4@ ;m> 9" ?= B@M ?;@ 9 ?L,F 9"4$ 9"3 ?q]q> ;va BD< ?N# m
4a#
SELECT name
FROM SAL_EMP
WHERE SAL_EMP.pay_by_quarter[1] tRu
SAL_EMP.pay_by_quarter[2];
+----+
|name |
+----+
|Carol |
+----+

9damBDm]<#y?L<AB@;mS9fBDD9y>;L@9"?;>;Lv# m4a#1D1?L ?LJ;?L~]4@;m>9 ?L




SELECT SAL_EMP.pay_by_quarter[3] FROM SAL_EMP;

+----------+
|pay_by_quarter |
+----------+
|10000
|
+----------+
|25000
|
+----------+

{9"4$m]A@?L<?LG9"Dr9 m#9 94]<#.9;ma#m<S91@??L<1);9;<9# m.?DBD


<9%m aS 94 ?L<D B@;m 94 BDD 9(> ;ED m4;a ;m4<S ?q` ;99< 9`  ;;5@ 9 9\;?
D m43 ?E ?L~@ 9ER ;9fa< 9": 9<
SELECT SAL_EMP.schedule[1:2][1:1]
FROM SAL_EMP
WHERE SAL_EMP.name = Bill;

+-------------+
|schedule
|
+-------------+
|{{"meeting"},{""}} |
+-------------+

Captulo 9. Herencia

:< ?Ly ?L ;9a 9;;9a


?<m<.;9"F9"Dm9;m]Z;?:]}S9 ?LBD=A?L
9"4$m]cB@9 ( 9SBD9;m4capitals
<k;9d;9a capitals RW<] ] 9v cities
CREATE TABLE cities
name
population
altitude
);

(
text,
float,
int

- (in ft)

CREATE TABLE capitals (


state
char(2)
) INHERITS (cities);

)n# #p S? ?LY;?L)9# m BD?LY$#:94]


a#C 9A ?L: BD: 9Fm<aS 9< 9x
;L#mP?c>;K 9# m BD?V:94y~#SNBDx#@?C
@?L@B@;9#?L<N9;m#mSBD>%<G;9f;9a capitals

9S ?;: 9"#m ?,:@ ?L} ]E@ 9 9: 9cities


:9" ** DO;?L<$mSBD(9"%9] ;m$ ;m@?;>;{9 m BS?
@?L@ B@;9# ?Lf@ ? 9 BD9#mP ?A 9S?a$9"4^ m:9"#m?.@9"9C<D43?LfV@BD<S?A ?LS9<#
,@ ? ;mDmamLE ^ ]4 capitals m<. BDI 9 m BDS ?x 9La 9 BD< BDa# 9V> ;
a 9" ?9;o BDFD <$ ?La#Y BD: 9FF ;9"}C@ BDD W<] 91DC<m< BD@ 9+?N 9  9
? 9v
;9aa> M.BD: 91 ?L<A B@;mS 9d@ BDDE W:9D ]]
< 9: 9<S ?.91S ? 9"C ;9vm<a 9< 9EJ BD: 9
;9a1 ?< ?49f ?L 9Q ;95m<}S 9< 951D BD~]}<Dm<#]S

la jerarqua de la herencia es un grfico dirigido y acclico.
?5Nota:
@
]4@En;?{realidad,
;9=amBDm<fF?L<DB@;m9,<BD<9=S? 9L;96BD 9D~amSB@9 9J9YBD:9Y9;mm
BDDRdDm]Q?C4
SELECT name, altitude
FROM cities
WHERE altitude > 500;
+-------+-------+
|name
| altitude |
+-------+-------+
|Las Vegas | 2174
|
+-------+-------+
|Mariposa | 1953
|
+-------+-------+

@?J?3?`;9" ?e@99<?L<#9J;?1:?L4 ]1;?L 9R;91BD 9am<;B M<@?\;919


Dm 9k;m=Ca 9" ?< BDF]a#v ;? 9;mm 9" 9Y 9+BD 9;mm BD@ ?d<m< 9F ;?. cDm]}: ;9
?<D B@;m 9fa 9.
SELECT c.name, c.altitude
FROM cities* c
WHERE c.altitude > 500;

?;BDyBD>;m$R;?Vam BDm<$
+-------+-------+
|name
| altitude |
+-------+-------+
|Las Vegas | 2174
|
+-------+-------+

 

|Mariposa | 1953
+-------+-------+
|Madison
| 845
+-------+-------+

|
|

e ;a D
m<m ; D ; < m ;= mm %afD?
N L  = a= DCa#]9 Ly a 4V F =   C <] ]<9<>dqcities
BDW:9
 ~<]6 D .   mm  
E F  E %<D 4m#]`;9
D# mm "mLF   e L L# a" L C D]c}] E

@B
F9 B );9 ? DB@; 9
a9>; k9
^ B@ a;:
cities
M ? 9 ; 9 ;9
B
@?
9 ?
>;;9 v; 9
9 B@=9
6W
G;9
B M 9)W <? J9 :
9 ; 9 ?4$- R /.
M
+L
B ; 9
R
3 k9 D ? <?? 3?
? <? @B
)K
w.Q

Captulo 10. Multi-Version Concurrency Control (Control de


la Concurrencia Multi Versin)

mm 3a ?O ?L< BD%< M4E ?<3 ? ; $dqX1L %EG BD: 9c#<m 99 9< 9: 9c@ 9 9V4%?9
Da ?<]:YBD:9; 9}f= 9S?:\BDA<S? :?x<B ;mBDDB@9%?UX_9md  W<]
dD L ?L:9 ?4;9fmA@;m4<S9mF@99d@?L} ]

dB ; X
;9
S9
W:9
3? @?

Introduccin

m#< 9F ;9c< 9M?L 9c ?3 ?=ama< 9=C 9afDc 9" ?Lf BD6 BDA 9"9 ;? BD> ?L
@99xa;5?L<#3?K;+x?L<FBD <9D@?La#;<9<#m]<`;9(?<ama#]<9AD;?; 9S?LVBD
<?D> ;?V< B@;mm.]%amLE a ?Vam<mo 9d BDy4m]<# 95}:F ?L<D B@;m 9ZBD: 9f 9a1: 9m}" 9@ 9
# 9<D 9mx$Z BD: 9,m< 9 ;? 9" ?LJ $BD: 9  "+R  E+# %H ?< ?ca. BD 9
#m]4@ ?<9# a.am9#]<y B]< 9F> ;Ua 9 ?\9 B@9; ;?=@ 9 ?L= BD6 W:9MN@ ?Ly 9 S ?U
a ?x$m 9; BD4 ;9V 9.A 9mL4.a 9 9S ?1m< ?L<}ma<1 BD,@ BD4a~ 9BDD 9 ?LyP ?
;9G9S B@9;mm>
9"mLcE ? 91# 9<D 9mC ?L< BD%<:]6 ;9y4ma< 9d@ ;9y 9S ?aD3 ?L@ ?L  ?L
:9< ?   , ##   ll%$ @ 9 9y 9@ 9yaamxR ;9f 9a1D1 9S ?
9=D%m.m@ 9k;$m#]< 9f]<#d< B@;m#m$ am\ MF> ;.< ?L> ;?cD= ;?L BD> ?F~ BD=]\ ;?L: ;?
BD> ?L dX1:  m 9 ?` BD: 9A ?.A B@;mS 9<$-;m]S BD 9k%D 9S ?V: ?q< 9  ?<Dm ?
?` ;?1 ;? BD> ?:D m 9@ ?Z ;9,a%mS BD 9=f 9S ?E Mxfa=< ?L ?+;9.;m] BD 9;: BD< 9
;? Ba 9Z;9da%mS BD 9GM;9d]} m BD 9d: BD< 9f ;? BDa 9Z;9 ;m BD 9<
^

Aislamiento transaccional

;a#. 9 ^ ( *D{* , H VD<~FB@9"#3?d<m$>;m]oL9mD;94m<S?f9"<A9"?L:9;;-BD<


m~#_W<W:?+BD6]VaD<m ?LvB]<9:<69<D9?L<v?L<FBD <
a ?LLW<]FW:?L5:?Ca>9:?L6D?E
;m BD 9E3D BD 9"}
: 91# 9<D 9m6 ;m 9S ?Ea m ?L5P ?_ BD: 9d 9"<A 9"mLC: ?V]}D] 9"P 9]: ?V BD%D 9 9
;m BD 9E:
?VH#m ;m]
: 9F 9<D 9mL9 BD> ;m$V 96;m1@ 9 ?Lf BCD$ 94]<#V W:9 =9;m> m ?<MA< BD<# 9
BDG W:9Fam ?V< ?LmDF 9" ?5@ ?LC BD: 9d 9"<A 9"mLx BD D 9 9<

;m BD 9y3 9<S 9a<
9
: 9V 9"<A 9"mL4 BDa ;m.) 9% BDS 9E BD: 9F ?L<D B@;m 9$] ?K;m$m< ?BD ?LS BDS ?(,
;9;
BDxD 9#ma 9 BD: 9F ?L<mmL cD} B] 9\M< BD<# 9( B+ ? 9"@ ;9 BD
A 9"#ma 9
;9d ?<DmmL W:9F}m@ ?Vm<a  9 9"5P ?h ? 9y# 9<D 9mLF BD%D 9 9
?L1B@93?F<m.a;m1Y9"mA;9"4m<?MABD1? a@?L<m<O9?<]ya=a m(4
9
9% ?U
$
#R 0+#  >J d  < !"V  " F! 
Lectura "sucia"

Lectura no
repetible

Lectura
"fantasma"

&

Lectura "sucia"

Lectura no
repetible

Lectura
"fantasma"

SBD91:?CBD%D9 9 @?L}m ;m
@?Lam ;m
@?Lam ;m
S BD 91F BD D 9 9 ( ?@?am ;m
@?L}m ;m
@?L}m ;m
S BD 91Dm ;m ( ?V@?L}m ;m
@?Lam;m
( ?C@?L}m ;m
  9>;mm 9" ;m
( ?V@?Lam;m
( ?C@?L}m ;m
( ?V@?Lam;m
@?a$Q ?L]O ;m BD9dBD%D9 9RMC<m$>;m5R9"mA;9"4m<?V}]%9k;mm9 ;m
Nivel de lectura cursada

K# K  ]:> ;<<m$> ;<Z 9mD ;94m]< ?x@ ?L5# ?c]A@ ?a$E B@9< ?+BD: 9 9<
mLqaF ]FBDS9x]qa#c<m$>;m@;9F?<DB@;m9}K;?.C 9S?,BD A9" ?)9"<#,CBD6;9
< m 1 4<k 9 9OM;: BD< 9y$6< 9S ?v3D BD ?L}H<{ ;?E 94 ?L+V 9"<A 9" ?L<+ ?<
 <#5 D%D 9 ?L5 BD 9"<#R ;9y%] BmLDR ;9d ?<D B@;mS 9<
e: B: 9 ;9C] BDa ;m 9VP ?J BD: 9CF ?L<D B@;m 9C4m]<# 9y},% BD 9VBD: 9C]F ;9" 9]m /.@+L5
$? F
 E z ? @ R2+/) +LE %D]}am< ?+9S B@9;mm> 9" 9;@ ?Lr BD: 9 9<D 9mL
?< BD ]<#f: ?FF BD D 9 9S<S ?<R ;9,a BD<@ 9# 9<D 9m BD,m<<. 9S B 9k;mm> 9Ea 9
@;9yaD 93R 9y BDR ;9R? 9y 9<D 9mV} BD%aO ?;@ 9e c 9D ?,: BD:@ 9]a ;9y 9<D 9
mx BDdaD 9f@ BDyH ?L 9= 94 9 ;9,@ ;9< x 9D ?Cy BDdad B a $MCa ;9f@ ;9
?L 9 9;Sm}@ ?L6%4@ ;?L$: ?\W:9Cam ?( ?L% 9 9;@ ?LE ;9V?L# 9V 9<A 9"mL: %# ;9V ?<D B@;mS 9
a% ]F BDS 9@ 91@ 9 96aS 91@ ;9OM,}6 ?4H ?L 9  BDE ;9:: BD 9 ;9:D 9#ma 9L ;91 ?L<mm
dD} BD 9, ;9; ?L<A B@;mS 9< ;9;: BD] 9=$ }mLA ;9,@ ;9;D 9m} 9G ;9, ?<mmL<La
9 B@9;mma
9 9 $? ?  9 9 ?< 9 9 9dP 9 9y}]h 9S B@9;mm 9: 9%K
]< 9V]4F BD]< 9V BD4 ;?yD B@;m 9: ?y. ;9% BDmLN4 DP R ? 10 Q $#F ?L< BD: 9
?<D B@;m 9k%<: ?V}y$ 6 9"]a 9@ ?5@ ?L+# 9<D 9 ?<]5 ?L< BD%<
Gl
3l
D9
? DB@; 9 ?
B
B

Nivel de aislamiento serializable

9 =lK D3?L@?a?L:9a;o<m$>;o4"Y9;mS?V9"mA;9Am<?N9"<A9?L:9;3"OB@9< ?
BD:
9x9"<A9"mLqax9>;o<m$>;o}]%9;mmk9 ;m:;9x?.AB@;mS9a ;?$6;?L; 9S?=BD D9 ?
9<fVBD;9c#9<D9mF?L4m<MN:BD<9x$V<o 9S?L=DB?L=<;?L,94?d
# 9<D 9 ?<] ?L<F BD <; B D 9 ?LV BD 9< ;9(  BDmL ;9(# 9<D 9mEe@ ?L) ;?
9"< ?L]}f<m.a ;.< B@;9);9=% BDmL(f 9"<A 9 ?L<6](a mSF ?L< ?Fa ;9 9<D 9 ?L
<5- BD] 9]F% BD 9@ 9r BDF]# ER ?L# 9"Fa m6 ;BD 9v1 ?< BD <#]4<$
e_ BD: 9@ ;9] BDa ;m 9F@ ?LZ BD: 9xF ?L<D B@;m 9x BD 9"<# ;9% BDmL6 BD: 9x ;9 9mL /.
+L5 $? F
@ 5 N ?+  J 2+x/.@+L5 %<a,am<@ ?69 B@9;mm 9] 9=@ ?LQ BD: 9; 9<
D9mLNF ?L< BD%]<#;: ? B D 9 9z ;9C}] BD< 9C 9<D 9mL4 BD 9S 9V) 9 B@9;mm 9"6]}S 9
@;9VaD 9 V 9V BD4 ;9?L# 9C 9<D 9mNa BD%a. ?(@ 9e  9D ?(D; BDV@ 9 ;9C# 9<
D9mL BDVaD 9C@ BDD3 ?L]E 9CF 9"4$ 9"O ;9c@ ;9< a ;U 9D ?A4 BD: 9c 9<D 9m
?< BD ]<#1a:F BD a BD: 9d# 9<D 9mFa  9;mm 9 ;ma d@ 9 9 9y ?LF> ;L4<D 9a
ERROR:

Cant serialize access due to concurrent update

@?L BDBD:949<D9mL a 9;mm9 ;m:?PBD<?LmDF9, ;9"c949 9]c@?)?9


# 9<D 9 ?<]5]}P BD~D1BDG;9d9"<A9"mLxa]%9;mmk9 ;mOW:9M 9f4D]9@?o
Nota: Tenga en cuenta que los resultados de la ejecucin de SELECT o INSERT (con
una consulta) no se vern afectados por transacciones concurrentes.

Bloqueos y tablas

@?a$G?#;9 ?Ld<?L ?d; ;?LBD>?4@9"9;F?L<#3?K;9>;@9]A??<BD ]<#49V;?L


9S ?:4S 9 ;9 ^ ;m BD: ?y,]}S ?Ly< ?L ?LyD, ;?L BD> ?\;?LR 9 BDm=@ ?a$R 9BDS ?4
#m 94]<#4 9<y4 ;9C% BDm4 BD: 9C ;9 9]mL<.4m< 9d BD4 ?L#3 ?LfD ?D3 ?L@ ?
 ?: 9@ ?6P 9 9y}]Q BDD 9 ?L~@ ?LQ ;9L 9@ ;mm 9 ?<]SaN ? ?LE ;?L6< ?L ?Ly ;? BD> ?6$#S]D ?
@9 9 ^ aa{ W:9@ ? %9" BDm%m@ ?E6 BDF# 9<D 9mca1 9<#m]<+ W:9a 9 ;9y BD 9mL
R ;9d 9<D 9mLE
;? BDa ?S 94mxaZ BDD 9= ?4@ 9"%mmx ;BDam 9f@ 9 9= ?L<#3 ?K;9Q 9]}
^ ]4Dy
D?vJ ;mS BD 9 a m BD 9J9R;9oD$: 9o6 9" ;9"o4 BDC BD ?L4@ 9 #m ?U }~4S ? ?
a1@ ?L<1c< 9 W:9ym<4] 9S 94<1a@ BDE BDG BDc BD@ ;?E# 9 ?)?V9S B 9k;mm 9@ ?o

Bloqueos a nivel de tabla

aazW:9a3 ?L
C< ?L ?V@ 1 ;? B@>?V9DBD%m ?.9BDS?4"#m9<<S:D?L :9 ;9"+B@Ga#V}]< ?
?L<D B@;m 9@ 9SS@?a# 34;mm >9`aS? ;?B@a?V D@BD, x B@A+W:9M 9`%BD9" ?
F
BD:
9d  ;99amLE
?L<m ?L6 ?L ^ F ]a S ;BD}m @ ? o
O
^

 L
^ BD m ?6@? r  R 2+x/) +L5 M 2+R)rD @99f ;99?L:

ROW SHARE MODE


< 9 F ?L<m ?L6?L;?L6<?L ?L S;BDam] ?M ^ a ;BDam ?LFo

e ?K zW:9k3 ? F

e ?K

IN

;BDam ?LF
?49"BD>3 /) +LE F  E 130 Q M 2+R.Q @99y ]F;9k9]?:]

IN ROW EXCLUSIVE MODE


OW:?LF 9f ?L` ;?L6< ?L ?L{ W:93 ?L${W:93 e ? S;BD}m@? ;BDam] ?VM ^ 
F]} S ;BD}m  ?L v

zW93 ?L
?\9BDa3 R1 LEv10+F M @2+R)r @99V ]F;9k9]?:] IN SHARE
@

MODE
}I   ?L<m??;?F<?L ?L e ? S;BD}m@?E{W:93 e ? S;BD}m@?
 ;BDam  ?LF 4M ^ F]} S;BD}m ?Lv
zW93 e ? S;BD}m@?
?VS?<9 2+R)r

d ] ?:]

@9k9 ;9c9

IN SHARE ROW EXCLUSIVE MODE

} OV?L<m?;?V;?E<?L ? e ? S;BD}m@?{W:93P?L$]zW:9k e
}m ?L$ ;BDam] ?VM ^ a SF;BDam:?o

?K

;BD

SF;BDam ?LF
?VS ?< 9 2+R)r @9k9d ];9c9?:] IN EXCLUSIVE MODE

< 9J; ?<DmS ?= ?4 ;?U<? ?L e ? F{W:93 ?L$ e ? S;BD}m ?L${W:93 ?L$
W:9k e ?K SF ;BDam  ?L $ S;BD}m ?LM ^ a ;BDam] ?o
z
^

a ;Bam ?L


?VS?<9 )KE w.Q +R2+\)rD  )R/)/. M 2+R.Q

W:?LF 9f ?L e ? F{ W:93 ?L $ e ? S;BD}m ?L$S{W:93@?{W:93 e ? S ;BD}m
O
?  SF ;BDam  ?LF VM ^ F]} SD;BDam] ?o

Nota: Slo AccessExclusiveLock bloquea la declaracin SELECT (sin FOR UPDATE).

Bloqueos a nivel de fila

a #@?; 6 ;?B@a?5DO@3?L BDF]CB@9< ?,9<@?L5m<S> :?E EBD:9y@;9dD?69"SB@9;mm9]


?LG$?x ? 9 ?O?<99 ?LR@99D>J9B@9;mmk9 ?LD%a ?La# 31:?\3:Y4<<?K%9
<m<BD:9,m<? <9mL(D? 3d@;9<?LmDF9" 9JMF ]}Sd<?@?c:?c#:Z;m4EP99Za;
<D< >3?; y ;9"5 ;?L B@>9" 9~amFm< 3< <S ?V y ;?L B@>?U
e` 4 9k ?LSS < 9YxF B@]< 9f B@Y  Rv2+/) +L5 < ?LmDF 9k%Z ;9~ ;9"D >;
 ?: 9@ 95< 9k]< ?K;9aS@ 1 9k;< ?L ? B@yD GaF m 6 + >;Lma ?o
?L6 ;? B@>?J 9,<m >;$ y@ ;9=: ?69  9Z9Y;?L6 9S ?~F ?L<D B@;m 9@ ? }S ?6A ?L\ BDD 9 ?LJ @9k9
;? B a9aF mS B 9 6J ;3 ;{ 6 D<m 9< . $

Bloqueo e ndices

D< d L} ]
  = ]} L
 a %m f = " L  " "}
L  d  y4] L V  ] m<Dm ym  <  ] F a 
?L~m>3<]~@?5 G<mEA?Lx<9:%9 ?L~ O;9damBD<Sd<9:>9<
Q =m\ M e #{ a
* <m
>;~ A ;? B@a? \<m 4@ >;~ @? O ?L< @9 #mmL ] ;BDam.m@ 9
@9k99D?
( m
; B@9 aF
mS B 9 ;< ;?L B@>?x# ]: .;BD 95 D @BD: = B@);9;  ;99amL4D)W:9M 9
% 
BD 9 ?U
9 ;9
^ B B@ @?  E@3? P? ? :9 ;? B@>?+@99Z; SB@9  SB@9 9 ? J
:?V? B@ 3R9 D{@99 9 9
? ? O
9 F A?49;z
F <P; < S9 ?V 6 @? 3

<mQW:9DW
VBDA 9>;o ;?LB@>?I9F<ma;o Dm:9P9969D?<;SB 9 a%mSB@9. ;U ;? B@>?
{
# : O;BD9v D@BDE :B@ ;9 Dm:9 W:9M 9f}m@?V@3?LF]A9"P9<
?E ;?L B@>?LL 9d<m >;L EDm: 9 @3?L BDF ]C< % ? v ?< B@]<9dB@R;?L~ ;?LB@>?LL9

<m a;@ Rm<m RP>3?4@B@] + @3? ?L 9Uc @BD< ?L6< B@> S ?a
*

 3F

LBDA 9" ;?LB@>?LC96<ma;S LDm:9 5?@9%mm S;BD}m$ 9V.;?9F]A?L


{
G;B@9 a%mSB@9.}@? ;?LB@>?L:DZ;;]9"`9=9 ?Cm<<D99<]<d ]A@BD]6
B@G>;eS B@@;?m<m1Da9dm<D>%S9 ?4?V BDaF9" ?o
?6 <m 6S3@3?K@? ?L:9I;9N469k;m94?<B@3<9Nam@3??9,ca9@?
<B@>%S ?L}

Chequeos de consistencia de datos en el nivel de aplicacin

    La# , L " ;  aH}m  9 ]< +<m


m 4 < q A "< "mL< LC " L  L D 4 < m  
 a m L L <  " " "}Sa  = 6  m
D a C
am$<mD f a f
m ]< ]ma    . ] y d  m.m Dx 
 Dy V c  mL C < mL9  ]< < %  E<U
a# L m : :  L  mm  L  1 < mLC L< < < 
1 y]} d  f  V e
@99)9D  B@9k%D f );9.Sm}S < 9 YBD:9V@;94M`@3?S >;9;?L<949SB@9;mm9?L::?<
B 3< av  >9<BDD 94 @  R2+/.@+L5 ?qBD: 9 ]F ;9kc9m@ A @? 2+R
9P?KD 9 9 }S ?c  dS : > D ( B@<S 9, B@9<@ ?c a ?S 3?E ]< ?K : ?:D
.Q 4E
a#]6
@? S 9< ?V9P;mmF 9" ?L: r W:9 9d@ ?a 3r BD# ;mmk 9< ?.>;L< ? ?VA a% 9k;mm 9 ;$

@? 3 :? ;? B@>9 ;?


9 S?
S :>
FB@ 9`a;
a;
 9 B +;9 ); B@9 )
`9 D;9
 S? \;9 S9 A9
h;?
9 ? ;> ? @?K.B :9 9 D9
w@B@
D>
D? 3>  ? L@?KQ? 9
? S9 J@9;9 c9
B :9 @;9Y @ B a; 9Z@?Kr R S? :?
9 B@ 9 @;9Z3>9; < R
S9Z +>; <? < ? B@ D ?K; 4$B
 <@?
D@B
B@V;9 ;99
?<;9 S9 D9
? < 99 :@? O <@;?K%
B@V;9
@;9G E@3? 
9 ?K9 ? h?.9 B@9; k9 ? : Q@? _;9 9 D9
? FB@3 SO9 S
B@
S9 DG;; R9 9 ?.? DG@93

Nota: Antes de la versin 6.5 Postgres usaba bloqueos de lectura, as que la consideracin anterior es tambin vlida cuando actualice a 6.5 (o superior) desde versiones
anteriores de Postgres.

Notas

<9=;m?U 9"m<yZ S 3B

Captulo 11. Configurando su entorno

a 9:DmLCS9"9:A?L 3L<?,F?L<DB@9UDB+@3? H?.]<?K%:?L@<?L ?;B@O@B@@9OBDD9


9@;mm9a?L:V m<a%9(@`BDAB@9 ?ULz+9ABD<xB@@?a# 3VW:9A}m ?? 39<]<
m<a9;9@?4M499.F9] ?UKO?L<AB@;mSG;9 YB@9y >; ^ 4m<ma9 ?KhM4;9E:?S95 :m<aS9;9m
@99y
>o< ?Cm<aS 9;9o@ ?a# 3
@?a 3. . BD: 99@;mm 9mLF ;m ]< D > $m ? %eE ?< ?vBDA B@9  ?L BD}S  aK ;?9:  amS 9\9
D ?s9+;9`P9%S CF ;m ]< c 6;9xm<a 9;9"mL $BD % < @;? 9@;mm 9mLq ;m < 6) >;o< ?
<m ?KVm< a9m ?
%K.@
99N}m< P;mm 9;9F ?D 9+ 9"A BD4 3< ?LF B@@ ?La# 3FD IW:9
m<a 9;9@ ?`]s a;D psql
]S ?K% ?
emI 4 9 ?L ?<@  a9V>;H 3S ?  ?

>/usr/local/pgsql
9;A BDam BD ;?@?KEa;H:
?4 3 a;H 3a ?K  ?A ?L< ;@ ?L} 3]
/usr/local/pgsql

a#+ a9;m< <S xm<a 9k;9 ?Ue{ ?L ?4 ;?LC ?< 9"< ?@ ?a 3D xm<a 9;9"w
]q
>;+ 3 ?K  ?


N
<

9.] B@<S 9=

B@=

9':9 ha d 3S ?  ?9; @9S W

D/usr/local/pgsql/bin
B A W:a;;3h
BD# ;mmk 9`BD: 9 9  9<S x a; a >;>M A W:a;;mDS 9;v ?< ? csh ? tcsh<  a9
9':9
set path = ( /usr/local/pgsql/bin path )

 <DFW:a3?
fDBN3?K ?@a%D?L:9;3:BDD94BD:9,9 9<f >; ? B@ :,DW:>;;m
 sh ksh.login
?


 a% 9k':9
bash
\a;
? <?

$ PATH=/usr/local/pgsql/bin:$PATH
$ export PATH

9;eDF
W>3?
cD B 3aS ?  ?VP> A ?L:
9;3 G9W:?K9 6 9 a;9<E9DBD43<?L~B@
B@W:99':.profile
9"m ?>;U3aS? ?Nm9 C@?a3Z9FDBq@9"WE ^ ]4a:W:9k]<?=3B ]<
]< < .]- a3< 996 ?<D B@9kOBD: 9c 9k% 9] ;V >;DD W:>;;6??<D B@9kRBD:9C9k%9";
4<S ? : ?K+9;?\;9 ? 4aS C@ ? BD< <S ?o"U: ?]<# ]< ?<@;]9<]<V>;@;m#m<?
D
9] ?,A ?L 3L< ?,< ?mD 9UD B6@9S WC 6D} B@ 9  >9 ?.A B@;mS 9_;9h Dm: 9v@ >;
<9: B@9;e <m, B@y a %m cD BD W:>;; 9< ]5@ yF ?L<m: B 9k%
e >;:9D4m<m}S 9 ? ~ =D BNam# ?(: ?x ?<D B@% ;91 ?D 9: ?L< ?$ : ]< @? ~ ]- ]S ?LL BDm
:S < 9V B@43>9;mma 9J9;m B: 9 93>9;4]@ ? J% < @;?L$a a;HD >%$m ?K6 ; 9D 1 ; 9"
?LR R BD: 94 BDm: 93]< ?S 9e: ]F ]}mS 9 4 ]A @]mD 9L>;H 9;?K~ .;9 9  9 ;= )<S ?K%: ?
@Y ,  ?q
a;+: ?4 3x +;94 BDm: 9A B@xa % ;9( 9D F F 9S ?LSe@ 9( 9k% 9] ;x
<S ? :
?A@ = ,4e @B@ S 94mD >1:  ]A 9  9<]@ 9CF B@am  ?<@ ?Z ]}S 9BDa ]
m< ]< 999< 9EBD: 99@;mm 9mI M3]m )>;D< <D 9a C@ .>3? 6 B@Vm ; B@V: ?@B@]
?: S 9 ?V >; postmaster  >9 ?L<A B@;mS 9Um<<  9S 9< . 6F ?L a;N94m<maS 9@ ?
1D B}m ?VP99G9A ] B@9 D : B@dD B`< ?K : ?VafF ?K]a 9"< < 1F ?L<D B@9 ?U

Captulo 12. Administracin de una Base de Datos


Nota: Actualmente esta seccin es una copia disfrazada del tutorial. Ser necesario ampliarla. - thomas 1998-01-12

 o d
= a#mLx  $ fm<a 
 ;$ # v K   < 
m( = La# a m D   : f  :m<a     "4m<ma  
      , # ov  +U# K  <  mm " 
4m<ma m( = ]  . L < ( = = ,  f = " L D D

 : m$ $ 1 U ] E  E 1  L V ] L D 
D % , 1 < LE E E m. ]$  mm y
y   
4m<ma m   a# a C % m < = c ]< L:4ma  m$  
am} 
m
4m.m} " L 3
9 YB@9y >; ^ 4m<m}S 9 ?K+ >;e@ ?La# 3 H (S 9" 9G]a ?L6 Dm?L~?Lx<9"~ ]9;;
9Z@ D9 B@ >; 
L3 D@? D9 ;G@?KC;9
 >9k; G;9
S9
l
;9
@? 3 K9; B :9 9 D 9 S?
S9;9 9 EPB@
AaJ9
9 9 EP?
? S9 @> D? :9 ;;9 9 9G>; 
@9 3 D@? D9 ; 9
R;9Z9
E
9
A >; 9Y a; <? < S?`
B@ D F3a9);9 9 D 9 ?
^ B B DB@9 ?
DR;R@B@ @ 9@ ; ?4@99 3>9 :B@ 9 9 D @9 ? QM ? :B@ ? LB DB@9 ?
B AB@9k ? B@ S 9G;? ?
@? E@ ; ?.@B@ E3>9; a9_;9 <9M ? =9 E;9 Q;9 ? 3
9
9 9 J
@? 3 N@>3? :?K <9k; <  :?  );?
<? O@ ; ? @
S <9 ?K@>9 ? B@G>;K9
S9 ? ;? F9k;

Creacin de Bases de Datos

9+ 9D+ : 9?L+D13>9C ]<3?,  ?La# 35F?L6>;e?L<9< ? F3!RkFk !"


h
BDV BD# ;mmS 9% ?YW:] W:?.@9k9D BD4m<aS 9k@;914ma< 91- BD<mLCB@>9:@@?L} ]}
createdb
9
@9 # o
O;9 ;m: >9f@ 1 ?< 9<@ ?
;D< ?S ? 1 @ ?a# 3d  4aS 9: ?K  < ?P99 B@VF B@9;m BD >9C V;?d ?d4 ?L ?L
BD< ?L:  M)>;kBDA B@9  ?= B@6 9O>;"F ?L< 9< ?,  ~D >P>;  #   6@ ?L} 3]}F ?)W:9 >
?S <m
?4@%m$ ; ?VP? h@9  1@ >;eD B@@> BDA B@9  ?.@99y 3>9U 9D 5 1 9S ?
@995F 3a9>@BD: 96 9D 5 5@ 9 ?L_ ;;9"< 9 9L4m J9r@9 # < r;9J;m: >96@ 5F ?L< 9< ?La ]} m 9
% createdb mibd

S:>h>;e4ma<?3DB@;m9@? ]<3?;

MVP99G?

psql

aF m 9

* CREATE DATABASE mibd;

e5:? #]:<a;J@ m$;?:D9%?P9943>9a4BD:9 9D( A 9S?aoa%<>;~amBD<S


<<D9a$
% createdb mibd
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mibd.

@?a3Q;G@> 4mS13>9UB@9;mBD>v<D<>3?V :9"A]5@1 9S?r+BDFAa%$m ?KMBDa


D>%4 9BD ?L4mF 9"< < .>;@94m<ma 9 ?K: );9C 9D ; 9S ?y B@V9 9] 9c@ F 3a9>% ?L
:?4 3E O;9~ 9D ]5 : 9S ?E  CF ?L< < 9kh@?KCBD: 9G; 9 M4a#" ;mm4mS 9 ?LL 9GBD: 9
;?<mS B(S ?L 9;L
#k  99"S >]S



Ubicaciones Alternativas de las Bases de Datos

E @?Lam;=3>9QBD:9; 9Af = 9S?E]BD;BD 9~m>3<S,@>;.B@=B@, am:9 ?6@99


>;@S? B@9<S4;9Cm<}S9;9mLE e B@> ,B@VFB@9;BD>:?L<DB ;mS99;9C 9D; 9"?L
Z
W:]W:9+3>9k;m<<.9FS9.]f >;<?L?Ky V;9c 9DC@C@9?La< V<9":>9C B@6a;_;BD 9
?L< 1D >9d 3>9 9R;9d 9D 1 y 9" ?LE  R@a%4m C>;K9 D ?.9;e< ?S ?KK
9r BDmF 9 ?L: r 9;m a%: 9"#m 95 y 9D ~@ y 9 ?L6D y 3>9]` MCA ?L\ 3 > m 9r @? +<  ?V
BD:
9c 9  9 ;V VaS 9 ?A B@C 96>;UF 9"4m: ?<9A ?K;BD ?9;;BD 91 ?L< CA V9;m< 9"F ]: 9  ;9
9D = f 9S ?LS a 9, 9k% 9 ;d Ya 9" ?c  ZW:9 >5am ?x D<m 9.9"< :@ Y99< 9>L>;
<?S ?KEM>;;B 9L@99, ?<@ .9@BD<S 9; ] Y@> 4m J]} m B@9 ]a Y;9;F B@]< 9; >;:9D
4m<ma 9 ?KQ@?L} ]SaE ?<D B@;mS f ?L` a;9D4m<m}S 9 ?KC;?LF 9k;$D ?L 3GBDm 9 ?L: J @3 ?L<
D B@9 9 @99x 9D =@ c 9" ?LS{ 6@B@] 6BDD 9y B@9;m BD ay: ?4 3c c 9  9 ;V$ ;mm ?
@99Cm<m
9G;?LF 9;]Y 9;mS > : 9#m ?L} 9BD< B@CD 63]F ?L4 < 96BDD 9y: ?L4 3= V 9  9 ;
?+ >;z@3]e ?V"  ^ ^ G@99 $mS 9v ?L< BD} ?L: ~F ?L+ ?S 9~ 9  9 ;S
Nota: En versiones antiguas de Postgres, tambin se permita el uso de nombres absolutos de fichero para especificar diferentes locales de almacenamiento. Aunque es
preferible el uso de variables de estado ya que da mayor flexibilidad al administrador local para gestionar el espacio en disco, tambin es posible usar caminos absolutos para
especificar ubicaciones alternativas. La Gua del Administrador discute como activar esta
funcionalidad.

@? E9"?:]d D B@ m 9vM4 ,m< m 99CB@9;mBD>94m:??(9 9 ; )a9 ?


9: 9fA O;G9 ] 9]+ 9;eD: 9;K9;m BD: ?L6 94m: ?Lr 9m ?: 9;]S% 9Q BD$m 9 ?L: r 9;m a%: 9"#m 9
 cD >@3>@9kc9 9Q %  BD 9"< ? initlocation
@99c 3>9aGBDq 3>9C 9;m< 9  94 <S ?<BD 9<@ ?s;9F 9  9 ;V  ^ ^  $# B@@996a
Z% < @;?F : Z>;< 9;?K /alt/postgres%#{ 9D ] B@3D d B@ /alt/postgres Sma ZMxA
@B@
Va m R a;96@9 # y@ ;9c B@<S 9x a;_9"4m<ma 9 ?Ky V ?La# 3S@ ?La >  ?K
<<S " a O;9Z;m: >9d@ 1 ?< 9. ?a a %m 9
% initlocation $PGDATA2
Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base

@99=3>9arBD:9; 9Df f 9?LE]\>;$3>9= 9;m<9:94]<?69;mS> :9m9=@ ^ ^  N 9


@9 # U
G;9G;m: >9d@ yF ?L< 9< ?La BDA Ga;e}m BD <S dF ?L< 9< ?U
% createdb -D PGDATA2 mibd

 4ma<?9 @9 v

MVP99GW:9 >h;?

psql

]} m 9

* CREATE DATABASE mibd WITH LOCATION = PGDATA2;

e":?=:J>;N@ m$;?=:D9 ?Y@996F3a9H 9DU @9?La> E>;"}m BD<S:<]<A9KS


% createdb mibd
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mibd.

 

eKa;;?L9;a;m ?C:?6SmaG?6>;<?L?KE ;9f 9Dd y 9S?~:?c#]: 9BD?K%mk9amL\@99


<S 96
a; ?4a %m hcD BD 3 ?K% ?La a%R ;?Cam BD . $
% createdb -D /alt/postgres/data mibd
ERROR: Unable to create database directory /alt/postgres/data/base/mydb
createdb: database creation failed on mibd.

Acceso a una Base de Datos

:9dGW:9M9yF3a9 ?4BD:9f 9A: 1 9S?L}@B@] O9 a;91 R;95amBD<S~-?K <9

%
B@r;r@> 4m
% 
BD 9< ?G;?L_ @3?L 9< 9D< ?L<m ? 3] E ?La# 3 $@?KP S@;?
m<S3? BDkmS9_M S]FBDS9oF?L<9< ?L6 H m<a9"m9<<S$ % psql
%m ]< ?vBD
@3?L 9< 9 B +BDA +;9\;mm 3>9@FDBD BDm:9 *  H aS9\;
f a
@a%4mS Q<$ 9<
?< 9< ?Lo H a 5s M 3m:;?L3DB@;mS9P?LMd<<D9ao +B@a;m9
cD B`@3?L
9< 9< aS 9dm< a% 91D ymaF BDS y< 9r 9< @;m 9< <S R] ;9yA ]mL` UU
@B@ d B@>3>r9k9< 9> psql @99)]{ @a%m< ]< 9r;?LO % < @;?LO \ a f< 9: B@9;3 ;Da ;
@B@
A aC9m 9" ?4@9k9R;9f 9D 1 1 9" ?L~4m\ a m$ ]< ?4a;LF ?L< 9< ?U
f

% psql mibd

za%1D9;BD 9 ?;?+>;LamBD]<y<]<A9a$
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: mibd
mibd=>

a(Dm4 ?K;?m<m9 B \a;6<?L<m?KV;?aFBDW:9<MB@@B@ \]} m.@m@?V H


<S3?( 4BD3>9V VS9" 9aS?B@V<9<:V>;<?<mS?% ; @?L 9"<9
3D@?L<
9Cm ?L= 4a9@B@V?4]<9?Lv;9c 99m<a%m 9:{C@? R psql
S]<@;?LP@B@
?S :
>9M BD 9dD ? 3R;9fam<S 9Sm~ : 9  ?L~ ?L< 9< ?L~ H y@ ?a 3r @?Kv< ] ?V 
mibd=> \h

: 9(xa%4m:@xm<3?L BD,DBDV?L<DB ;mS94q>;E3F9( S9 9 ?@B@ 6@9D9Z>;


?<S<m ?49;LAa%$m ?Kv :@?a# 3ra%m<@?o
mibd=> \g

a ?.;:mR9k;D> .m ?KoB@1  E@3?D9UDB@Dm ?o eeS> 4m:9yDB@m ?;?6PBD<?


MF?<9e:?:]F]}mS9)>;<?<9"< ?+:e <
@3?D9 Y9BDS?4m9<<S);?LO@m ?L
B@yS >%4: ( ?L` @BD<S ?Mc ?L< 9<a@ 99Z;psql
a>C@]#m ?L:
J 9Z@9k% + GBDxDF W>3?Sm 9< ?
4 $m W:a?Lk F d :m< 3?L BD ;95m<S >9"m 9< <S k a m 9.
mibd=> \i miFichero

 &

@991D9;m+

psql

 

MV3  D9h9

<mSka%m 9

mibd=> \q

D: 9;mm 9 O M);?4W:9 E 3 ]A 9a_91D BFD W:>;;S ?L<9< ?L$# 9k9> ?L3?L+F?L<9< ?L
.psql
Da;ma%m 9V 94<S9" %BDS9VDa;3 % s;?LZ@]m ?Ld H qD4@B@] .BDD9O;mm 3
<<S 6]A @9" ?\9 ;9< ?<$D @9 ?L<S 9 B@;9 ?K3f:B@9Y;m:a9D%a"O?L<<S9 ?, VBD:9
;m:
a9dA :m<m 9FF ?L+ a{ ?L ?V;? B@G9@9k9y@D@BDE R;95 ?Lr9M 9QMW:9aS9 >;eD
;9Y;m: >9=D > =m$: ?K9" ?o}@ 99=F ?L< <S 9  ? d 9  9J ;: >9L ?c <S 3?C BD: 9.;: >9=D
BDA 9G :22
M

Privilegios para Bases de Datos

Privilegios para Tablas

Destruccin de una Base de Datos

e_BDaq)>;h9"4m<ma9 ?Ky +;9F 9Dc@F 9S?L;4$DP@B@ C ]}S3BD;9BDA9"< ?I>;


am BD <S y ?< 9"< ? <mD
% dropdb mibd

a ?<39F}m9<]<C?L ?L);?,DW:>3? <m`9D?L9" ?=?L;9F 9Dc C 9S?ZMN:?


@?L %CAah3B@@>9] ?a 1<9":>9dB@y  :AaCW:W:?F?LF<BDFW:9ZP]<mS9mE

 5

Captulo 13. Almacenamiento en disco

a9=DmA:]F]}9,AaLaF m9. .F?L<9 .9k;m?c fm<?K%<9mL\;9. ^ H T X ?K;BD<


9k% ?LD U6< W:?L< 9 [[ ] A

 7

 8

Captulo 14. Instrucciones SQL

a 9.;9(m<? <9mL +3>3]<9@99`;9;m<a3BD?@; F H D? @?K 9@9.@?


@?a3
ABORT
Nombre
ABORT

d <D9?+FB@ A?

^ ? 9G;9 9

Synopsis
ABORT [ WORK | TRANSACTION ]

L $

Inputs

( ? :

Outputs

]< K y ] m ;a ]~?L<@;S9 ?V?L]mS?o

ROLLBACK
dq A9 S B@a; ?

eL

C .  L  ]c  m < $

NOTICE: ROLLBACK: no transaction in progress ROLLBACK


:?4W:9M S9 A9
? : L B D?V9 SB@9; < S

Descripcion

  , < ?(B@ D?MF9BDA9=B@dS? 9"E;9J9"SB@;mm9?L:JW:W:9


f "<  Lx "c a9%S9:9 }S1?L<9< ?V]~m ]<#m?V]x?L<@?K%S94<S?9;
 <
y H [ MVa9G@3D<:A?K;9<]<G@?KC9?L:QW<ma?K mF9"S
Q2+Q DW:9 G;9 9 D9
.
@?Kh;9 S9 A9
?
D>9
? <9 @? R+
2 Q.R

Notas
;mm R2+x1

y 4m:9hmS?LA9"<<OBD:9f9<D9?LE

@99 S>

 i

Utilizacion

@99R9 ?K%S9o?L ?r;?L694?


ABORT WORK;

Compatibilidad
SQL92
a f?<9<@?`]RBD:9.S<a?L4@?a3 H I@3D]<Y@? L9?L:EW<maS? m9} R2+
a;LF ?L< 9< ? H [  BDm 9;<S $
r)R ]r

MODIFICAR GRUPO
Nombre
MODIFICAR GRUPO

_BDDB@9%?LC9GBDc 3B@@?>>;mm4m:9_BDDB@9%?LE OBDC 3B@@?

^ ':9

Synopsis
MODIFICAR GRUPO nombre AADIR USUARIO nombre de usuario [, ... ]
MODIFICAR GRUPO nombre ELIMINAR USUARIO nombre de usuario [, ... ]

Entradas

L; :?4 3y >;e 3B@@?V9f<?LmD9%

nombre

D B@9  ?E B@: 9 9yD>9':9m ?LC?4a;mm4m:9 ?L~ a;3B@@?UK ?LE:?4 3E EBDAB@9
% L~@ 6Sma#%

nombre de usuario
?

Resultados

]< K mm Ca ;9y9k%9mLcB@yF?K39

MODIFICAR GRUPO
dq A9 SG3
:?




Descripcin

D 6 4
" D % L DC
mm4m 
5 DF oa  4m<ma  E 1  E :  L   D a  E
D D D % DC ,  D o m <  mm4m D D
DF Cam$<mD f y mm4m D ]F}L4ma +
D 9 r `Rr`E6@99:F3>9k BDc3B@@?;:B@?.M r)+RQ\J@99O>;mm4m:9BD
3B@@?U
9@a;N9':9 @B DB 9k ? C9EB
3B@@?Y?)>;
9
2++1 1R)+R/) 2 DJB D9R@99 9
x
;? RB
3B@@?
;?4;? L9
9 ?K3 9 D 9 ? r@
B@ 6B D9 9Z?K
B@P? :? 3>9E DOB DB@9 ? * B@9; < S >a;
:
9 _9RB B DB@9 ?
^ ':9 @B B DB@9 ?)9OB
RB
B@@? :?
9 B@ DG>;
:G9k; B DB@9 ?4
<?

Forma de uso

DBDDB@9 ?LL9ZBDF3B@@?U

^ ':9

MODIFICIAR GRUPO personal AADIR USUARIO karl, john

m; m4m:9BD`BDDB@9 ?@GBDx 3B@@?

MODIFICAR GRUPO trabajadores ELIMINAR USUARIO beth

Compatibilidad

Sm

SQL92

 

( ?)> ASJ;9G?K

2++1 1R.+R/. 2

C H [ ; ?<>P?, J3;9"h+am4;9%

MODIFICAR TABLA
Nombre
MODIFICAR TABLA

@?KD@9 ~ G;9E<?LmD9?L:~ RS9 ;9

Synopsis
MODIFICAR TABLA tabla [ * ]
AADIR [ COLUMNA ] columna tipo
MODIFICAR TABLA tabla [ * ]
MODIFICAR [ COLUMNA ] columna { SET DEFAULT valor | DROP DEFAULT }
MODIFICAR TABLA tabla [ * ]
RENOMBRAR [ COLUMNA ] columna A nueva columna
MODIFICAR TABLA tabla
RENOMBRAR A nueva tabla

 

Entradas

L; :?4 3y RBD+S9 ;9 >SmD:SG@99y<?LmD9;9.

tabla

4 3y OBD:9fF?K;BD4:9f:B@9 ?VM 9Z>SmD]:$

columna
( ?

@?C R;9d:B@]9f?K;BD4:9<

tipo

 V L4 3G@99GBD:9f? ;BD4:9ZM 9Z>SmAS:S$

nueva columna
( B@ ? :?

 V L4 3G@99G;9Z9" ;9<

nueva tabla
( B@ ? :?

Resultados

]< K mm:?C R;9yF?K;BD4:9Y?V;9 S9 ;9dB@yDGW:9 3:?L4 9 ?U

MODIFICAR
dq A9 SG3

]<A9KSG3mm:?Ca ;9G9 ;9 ?4;9f? ;BD4:9f:?A?Lx.k;mm 9

ERROR
dq

Descripcin

4 ]<mmLA D  m ]   ]
 D f ] 1 D4
 D < d4ma fam mE
6S  
%4 L
mm4m  
  4 D4 <  4 Lc ]   qa mm ] 
mm  ;m< =  S , D
D ; < L4 , D 
F D ; D4 4 =}m4 , , LmD =<m< D F 1 L: L ]<m L ]
"    <  y L L  f D4 % "  d L4ma #
" ] D~ 1  y L < %  " o
D S  :A aha; 3>9] ?K+ R]A S9 S9 ;9 @99 @?L >o949oAB`aB@]<9<

9);9
ZB :94S9 ;9.a D : 9)?
x2++1 1R))r 9
AADIR
9':9 EB :9 :B 9 ? ;B
:9Z9 ;9R9 ;9GB A9 @?4;9
<9
:S9
B@
r
COLUMNA
V 9`?K
;@a S+@? :>Y?va;
:9Z;?
9;? 3 )P?
 FS? \;9 F?K;B MODIFICAR
:9 ( ? S D COLUMNA
B@<;?
9;?K @?K  S?
;? D<9k@; 99 9<;9
; :>9 B@
D> :B@ 9
9 F;9kB AB@;9
9B D9 B@Y>; :?
3 ZB :94S9 ;9
? )B :9 F?K;B
:9 9

B@ D <RENOMBRAR
?
:B@
B ? Y;? 9k? F? :
? G
;9Z9 ;9G9  9 :9
D <? ? {;9ZS9 ;9Z?;9 ?K;B
:9)P> <9 : > >;
<?6 P?M
9 <9':? D@B
@ B@G DS F? <9 ? D>9 B@9 ?

Notas

W:R@9;9"9y;9
5<B@MBDD9 9 @?K;?CB@yD1  O?4%
COLUMNA
am
BD ]< ?49OBDC:?L4  JBD:9RS9;m 9:m<mF9:B@E;9G?K V ] L%S]B S9 DD?L JD9
9"
;9RMVS?L 9C ;9Q 9 ;9"5 B OD]c 9aS?.>;;9 ]6;9+>9B@91DBD B@:ak@? o ]FS?a>;
9S%m
B@S?c: ?xD > ) 9':9m ?69)?63: ?L4 9@ ?6A<m< BD: 9 Z;9:D BDF ;9"A ]S D ?Fa < @3



D:  EW:9>oFB@9"< ?,AO9':9 E?<?LmDF9GBD9k m B@?)6BD:9dDB@@>;9D$ e:?4Q9Dm


;9Q
@3 BD: 9Q + ;9E >9 B@=9dA BDD  B ]: y ?L< ?
SELECCIONAR nueva columna DESDE SuperClase*

:?(BD<?:9k%<P? B@4;91DBD;9A]RW:9 %<P>m ?BDs9k m B@?xB@D4<?:S9 9


6
;9fD B@@> ;9D $
 ;9 @3]A ]: m< @;< : S9mL<k ;9EF ;9kBD B@;9C @?Ko   ?)M4;mm4 9" ? 9C @99R;9y: B@ 9
? ;BD4: 9VD >94m: ? 9 9"S D ]v @B@ YBDA 9kE;94?   PONER VALORES POR DEFECTO
x2++1313R..Q @99J@?L: >@;?Lv 9;? 3] @?KD   ?=4_ 9  $ D V S<
9"4$m]F
B@G9 B@9;mmk 9h;9"L ;mm: >9"L >SmD ]: L 9 ;?L6: B@ ?L6 9;? 3]r @?KE ]- ]D ?LN BDA 9"< ?
E r @6 %
D S  FA a)>;E 3>9 ?Kf ;9A ;9D `@99\@?L >f 94 9)a;r]} B@< 9< e ]: ?4 9
B 9k;m BD > @9S EBD a B@]< 9y >;SF 9k# ;?L ?, JBDCamD ]< 9d: ?)D #R @> 4 #m ?U% 9O 
  6  <3  # ]: y4~m< ?K < 9mx R;9Q W:>3]< 9"5D BDD  B@: S
  9"A Z9 R1 ).Q @99.BD: 9@ a HmLA4O 9"< @;m 9; Z;?LG 9k BD< : S?:$ ;mm
?LS
Moda de uso

@99R9':99 BD:9f?K;B4:9f@R#P?X

^ e O ^ e

D  <

9 B :9ZS9 ;9

MODIFICAR TABLA distribuidores AADIR COLUMNA direcciones VARCHAR(30);

@99R3:?L4 9BD:9f? ;BD4:9ZamD]:


MODIFICAR TABLA distribuidores RENOMBRAR COLUMNA direcciones A ciudad;

@99R3:?L4 9BD:9Z9" ;9 >SmAS:S$


MODIFICAR TABLA distribuidores RENOMBRA A proveedores;

Compatibilidad

SQL92

9)?  
D49DBD4m 9?L<;94>S>DmLA fB@;:?xA?K@?KS94;?L19"
;? 3]4
@?KfAADIR
?sMCOLUMNA
;m49?L:aUF?L<?qDa{@;mm94"V9 m 9$L 9?  
MODIFICAR
]A
FD BD4mam.F ?< @;a9<
COLUMNA
H [k ]D @m 9Y9;m BD: 9 9@9m 9] E 9"m= ?: 9;]E @99 x2++1 1R)x)r K 
5 B@y: ?V]A + ?L 9 91 3 9"< : :A ?K@?KS9 9Q @?K+@ ?LD # 3 H 6
:



MODIFICAR TABLA tabla AADIR definicin de limitacin de tabla


MODIFICAR TABLA tabla ELIMINAR LIMITACION limitacin { RESTRICT | CASCADE }
':9 L?`>;mm4m:
9JBD: 9V;mm4 S9mN .S9 ;94$# ?L< ?\BD: 9V;mm4 S9mN ,F ?L< @3? 9"
 ^ mL<z;m49mL(D<m9z?6;mmA9mL( Z?  ]`a{S9k':9% @99f3>9h?6>;mm4m:9rBD:9
;mm4 9mLCD<m
9] 3>9a ?)>;mm4m: 9 BD <m D<m ?La 3D @]F m 9< : SJ$# > r
}-~ G%K
9k9V 94 9E?K9d ;9D 4;mm4 S9 ?L: f: ]F ]} S93 39EM<3 9a 9J;9
9
;9RBDA 9. ?V?K3?LL @9 < a3?Lr @9k9R;9 Q \ V `?  ]E
?KC S ]< @;? P99R>;mm4m: 9vF B@9k;m BD >C;mmA 9mL` ]6 B: 9ZS9 ;9 distribuidores

CREAR TABLA temp COMO SELECCIONAR * DESDE distribuidores;


ELIMINAR TABLA distribuidores;
CREAR TABLA distribuidores COMO SELECCIONAR * DESDE temp;
ELIMINAR TABLA temp;

MODIFICAR TABLA tabla ELIMINAR [ COLUMNA ] columna { RESTRICT | CASCADE }

mm4m D 6 D4  D  <
% ]  ] 
m 
" y  1  " ] " <

mm4m:9@BD:96?K;BD<9

;
:9@B :9 ? ;B
:9 rB :9JS9 ;9 O?K  : < : @9k9La;
> DS :SR
;9Z9 ; 9 D>3 39
9 MV3 F9k z9 9

CREAR TABLA temp COMO SELECCIONAR did, ciudad DESDE distribuidores;


ELIMINAR TABLA distribuidores;
CREAR TABLA distribuidores (
did
DECIMAL(3) DEFAULT 1,
name
VARCHAR(40) NOT NULL,
);
INSERTAR DENTRO distribuidores SELECCIONAR * DESDE temp;
ELIMINAT TABLA temp;

9=;9BDDB@;9.@993:?L4 9y? ;BD4:9.Mv9";9",A?L>N]<}?L:.@99F ?LD# 3 H


H [k : ?V;9"L @3?L a$

MODIFICAR USUARIO
Nombre
MODIFICAR USUARIO

&

Lm9;9dm<?K%<9"mL@R;9dB@:S9f RBDDB@9%?

d?

Synopsis
MODIFICAR USUARIO nombre de usuario
[ WITH PASSWORD palabra clave ]
[ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ]
[ VALID UNTIL abstime ]

Entradas

L; :?4 3y >;zBDDB@9 ?VB@M ?5 >S9;;E9+9dD>+<?LmD9 ?LS

nombre de usuario

9d:B@9Z@9;9 c9f;91B@y9 9yAaCBDD9 9G]+D9fB@:S9<


eE ^  
(+, eE ^  
D S9f ;9BDD B@;9d@ D:  ;9C 9@9"m 9" VBD BDD B@9  ?@99Ca9>1 9"A]f 9k?LS
eeD GD @]mD 9d eE ^  > >;KBDD B@9  ?V@?L %y D< +D BDr @3? D 9E 9D E 1@ 9?L
D 9< ? (6, e5 ^  ND f < ] 9)9YB\ BDA B@9  ?6;9,F 9k@9am 94 d 3>9E 9D ~
9?L

eE ^  e
(+, eE ^ 
e
D 9: ;9BDD B@;9: >S> 4m: 94aP BD BDD B@9  ?`D 4 9B@S? m 9@ ?9;F 3a9>~: B@ ?LG BDD B@9
% ?LE>
;4ma< ?+ A G ?KDm+ W:9 A a9" 4C 9;NBDA B@9  ?.BDcA B@@a3BDA B@9  ?; B@R@B@
R@9D 9_@?KC]<m< 9f@ R?L 9r ;9Q 3D  m ?L: 5 R9 D ?U

palabra clave

V   D?L:9;m<]:;9W:?K9%C]s;9C B@4;9@9;9 c9C;9; 4]AS4BDDB 9k%?


H 3.

abstime

@9  W:9V$M ?K
>{ 
9

Resultados

]< K mm Ca ;9y<?mD9mL`E?K3S9<

MODIFICAR USUARIO
dq A9 SG3
:?

< a 6

mm fa D  mD  = Sm  1  ~ ~ 

ERROR: MODIFICAR USUARIO: usuario "nombre de usuario" no existe


d D9 L>3?K@
3
? >;NB DB@9 ?Z D@
9 ? :?Y> DJ .;9 9 D 9S?

&k&

Descripcin

D : 4 L m L5 y  y D D "
% ( V L #  6e D D 4 D c  C C L ] 4 m
$ $ L C ] "5 y " Dm  " ]6  y    E m  ] L
D % L~a
] F 4 U D " 1  $
D 9 Q E r}@9k9C3>9aRBD9:B@?<BDDB@9 ?M r)J@@99>;mm4m:9
BD+
BD B@9  ?U
9_;? r9S B@? @O;9 B@ :S9 EB 6B DB 9
x2++131R)q/ /.)R12 DEB A9 P99 9

? ? D 3 H
K;?<B
DB@@>3B DB@9 ? 4B :9 9 D @ @9? Z@B@ 9
9O@
; ? JM - FW:9 @ F9 B
@9
G@9;9 9 ;9  ?  D9Z?K
, :9 9 < : ;?
B AB@9k ?
K;?V@B@ 9
9 AB`@
3?K 9 @9;9 9 F;9 

Modo de uso

O949_;9Z@9k;9 91;9: RBD+BDDB 9k%?U


MODIFICAR USUARIO davide CON PALABRA CLAVE hu8jmn3;

O949_;9f9;mm ]y RBDBDDB@9%?4W:9D9G;9dW:9

MODIFICAR USUARIO manuel VALIDO HASTA 31 En 2030;

O949J;9C9;mm  .BDsBDAB@9 ?\W:9"AS9;9CW:9 D@]mD9< ?B@VABv9B@S? m9mL


>ND 9a9)9k;
 ?L 9f >;f Gd9M?V [[ G BD 9<@ ?;9f ?L: 9)W:?K9% 9f B@Z : W:?K9
4E B@G>; U
MODIFICAR USUARIO chris VALIDO HASTA 4 May 12:00:00 1998 +1;

D D f ]m 9 :F3>9k_? S?LrBDAB@9 ?LLMV:B@9~ 9DE : 9?L

99 B B DB@9 ?V;9 9@9

MODIFICAR USUARIO miriam CREATEUSER CREATEDB;

Compatibilidad

 ] 2++1 1R./
D % L dm<@;<]:9mLE
SQL92

? W:9M\?
( 
B AB@9k ? L9G;9

/.ZR12

N H [k D; AS9< 9 %9;9c D<mm

BEGIN
Nombre
BEGIN

E?4]<9 BD:9Z9<D9?+F<?L ?V]<9 :9 ?

Synopsis
BEGIN [ WORK | TRANSACTION ]

&5

Inputs
,.er
e ^ (

^ ~ *-,.(
9k;9 9"5;9R?KD?:9k; ( ?V:+S?o

Outputs

 }m<mo9dB@GBD:9f:B@]9G9<D9?L+W:9dam ?V?L<<9 9.

BEGIN
D?

Vm<Dm y D
: " ] " <

<  

    o%

<D9?L]cFB@ D?V:?

NOTICE: BEGIN: already a transaction in progress


AS?
F9 B@GB :9Z9 D9
? 6M 9 DS9 +@3? 3 D? 9GS9
A G9 - D9 9

Descripcion

@? U ]FS?]@?D# 3 H %B@9R;9Q9<D9?:]r] ;5~ l% " $-S94VF?L


:?m ?(F ?L< ?9kB S?LF ?L44S+]v?K3?LfamD<9"f 9D @9?LD%a s?K9Z@9k;9 c9a
9 9YD 9@ ?x ZBDD B@9  ?`O S]FB@S9 ?6]AABsP?KD9)9<D9?MBDA?L44oDY%B
9xm<
@;mm 9< ]: 69;+D: 9;v >;D 9SB@?s$#ah ;9`%  BD ? B@6>S ?LA 9"D 6? S3?< ?L ?A
% 
B@96BD 3?K;;m 9 %K 5 +130 m<m 9`BD: 9+9<D 9 ?L9@ 6BDD B@9  ?<q< ?L ?I< 9 : 9
?LL3 $F ?L ?R ;?LG ]D 9 ?L: YBD B@9  ?Ly ]D @B@: )BD4 ?L< 9< ? 5 +130 A )%  B@99
s
BD: 9S9"<A 9" ?Lv BD<m 9+W:9D 96BD a{@;mm S? }o: r  zVQ P ?<9" ?KV;96% 
B ?LE] ?LG ]D 9 ?LR 4< ?L ?`]<F 9" : 9 ?FD .%  B@S94< BD W:?< 9R 9Dm ?LK @?K B@.;9
9<D 9 ?FD 9k 
?L44 @3 BD >3RBD: 9Y9 m.m 9]Aam$<mD 9#m 9= y: Mc yma ?o} 9
% 
BD ?x d< B@;# @;]O D 9 ?L6@ : 3?C@ ZBD: 9YS9"<A 9" ?L` S94 ` J 3 B@>%m@ 9Z@99
;9d
?<amD ]<= 9= B@9<@ ?VD y 94 9c< BD W:9L S9 ;9Q 3>;9 ?L: 9 9]S
 e5
;6<m >;6 <9"mA ;9"4 : ?q@?KV  D S? I;9"6 9<D 9 ?: + ] @ ?LA  3] H x
, dd *   L ?L< Z;9 ?L<A B@;S9: : S3?c Z;9.S9"<A 9" ?L(D ? ;?+ : Y( B@: S9.^ ;?L
94 ?= ?L<D ? ;mm 9" ?Y 9": f V;9+ S ]F BD ?Lq V;9c ?<D B@;9. ^ }_ @B@a<@  Y B@ ;mm 9

wrR)0 .RQ12+01 2+ LQ12+0 R13. 1Q)r BDD ?A@ D @B@d@ 5@
]F ]a 9Y 9"mA ;9"4 : ?4@ 6S9"<A 9" ?L: =< 9Z %m B@3?D ?US 9= ?L<D B@;9, a;_ @?
+10 av:
@ er* ^ * ^ H D ? ;?S< 9q
 B@: 9;?Lc 94 ?LC ?<D ?K;mm 9 ?L6 9: SC x B@\;9
9<D 9 ?.
: S>9: ?L4 < J$-3a9>;m< : S 9: ]v L;9E%  BD ?LV@ >;N@ m< >PD 9 ? d
6
BD: 9ZS9<D 9 ?FD >  9;mm 9] ;>%K
eh ;9\9<D 9 ?
D S9( ?<D ?K;m 9" 9@ ?LD # 3a H
9D  B@9kc9( B@`S? 94 ;9. 9 B@9k;mm 9
 ?: ,D >9" W: W:9Z ?av: ?N B@c<m< BD: 9x 6a;;9Y ;?ND >9< 9Y S9"<A 9 ?L: Y  :  ;9
@3? H 
9] ]A S9< 9k ^ *# $9S?4F 9F ?L<amA S: S 9mD ;9 9 MV B@9 ;>%
]49DE9 Q @99ym<?K%<9"?L69<@;m9" 91D?L3E>; ;?LB@>? OS9 ;9v B@9:SOBD:9
<D9?E
 ;mm }I?4r  zVQ @99Ra%4m:9kCBD:9 S9"<A9?LE
Notas

e
9

&k7

Utilizacion

@991?<]<9B9YS9<D9?LF RBDDB@9 ?o


BEGIN WORK;

Compatibilidad

 D <a N < K L #  ~
(<m<   "< ? E
5SQL92

mm ( ,m<m " LA D <  L(a ]  =m mm =94M+]


%4m  L D ] 
V L

?
); B 9 S @ ? D 3 H
B
? <9
( ?\W:9M
+130 B :9a{S
9 ?
ZB :9)9 D9
?
 <@3Y DS9 <@
;
H
[ z;9
+10 a{@; S?+
a
:9 @?4? F? B  AS9 ? R2+x1 ? ?
R2+ Q.R

Nota: Muchos sistemas de bases de datos relacionales ofrecen una caracteristica de


autocommit como una comodidad.

@? 6>?L ;9V@9;9"9 BEGIN  B@;mm9 9.@99m>3:S @3?K@?L}S?L N H s4 m


?U H B ] 9`9$mD 9 ?I@99FB@xD>9BDm 9@?D?s9FaD9 6;9.9<D9?:,D9:#m9
B 9"< ?4S9D ;9 R9@;mm9?L:E 1 9D1@y 9?L
H [k 9"4 + ] BD >31 eQ* ^ *- ^  P99yA aha;$<m >;L G9mD ;94 ]: ? G9<D 9
 ?+ @?K+ ]- ]D ?U

CLOSE
Nombre
CLOSE

>9 BDFB@ A?K

Synopsis
CLOSE cursor

Inputs

L; <43: GBDFFB@ D? 9>?49d>9kK

cursor

&8

Outputs

]<A9KSy ]B@a;?;a a;B@ D? hEFa9 ?.>S?LD9<:S$

CLOSE
dq

y y da

 d  

dam V  U

NOTICE PerformPortalClose: portal "cursor" not found


AS9Z9;>S9 D 9 K>;
:? DS9 ;99 ?4?VM 9ZW:9
? >9 ?

cursor

Descripcion

mm       1  D4 B@ A ?KJ9 >?U D @B@1 = B@;D >9V 


 o . 4 ]
  ]=DBam BD:S)a;3 9B@%D?Ky  > 9
v  C "< V y v ] ]}  U
4;?LA;m<@;mmS?G%B@S9 ?`P99;9 9B@ A?KO9"$aS?xFB@9<@?\BD:9VS9<D9?Ls]
a%4m:
9@ 9G@?KCBD R2+x1 ?4B R2+@ r)R
; a9.;? R3 B@3? D?+9 D? 9 @? ? <B
2
R
9 :?I>; B@ A?K :? D@>  ?K@>9 ? :
D> a9 :? B 9 ? :? 9 9 Aa : F S9 ?

Notas
@
?D3:?:\BDBDwD9" ?9 B@ A?K 2+@0 a{@;mmS? _BDFB@ D? ,A?L<am >9
9 >?;
B@9< ?.~@  ;99] ?U  ;mmF R>;zD 9" ? F R )1 @9k9d@;9c9BDB@ A?K%
Utilizacion

O>9>h>;eB@%D?KC;m9W:?L<9<
CLOSE liahona;

Compatibilidad

] rS? S9;m<:Sy?<P9#m ;y?LF H [

SQL92

R 2

CLUSTER
Nombre
CLUSTER

@?K@?K?L:9 9$mD?V O9;m<9:9aR9 3B@@9 ?.$#F;=BDS> m<%9;LD> .m@? %

&ki

Synopsis
CLUSTER indexname ON table

Entradas

L; :?4 3y RBDFm<m$

Nombre del indice

L; :?4 3y RBD:9ZS9 ;9<

table

Salidas

4]:?ARW<m?V>SS?D9<:S$

CLUSTER
;K9 3B@@9

ERROR: relation t tablerelation_number u

inherits "table"

KCv{L J_G LKCCCcJFQZzGD{K-DPkCF@Sz F_kC


D D@
-FF


v{L J_G

ERROR: Relation table does not exist!


KCv{L J_G kE-c c>OkQEFO JQFQzOc-CEF
ODzF>
DF_ 
 
{LKE_R

Descripccion

,   ]mD 
 < L
5 < , L ]6 
"m     Em<m  ]mD 
Em<m  "
am V ]<m  classname
OBD:9 ?.BD:9d;9D:DG9 3B@@9>]5Dam9<:SG3>?K ::9 91 9D9< ?LAO6;9dm<?K%<9"?L
>;Um<m $ ;9 3B@@9"4 : ?<]) D 9m ?o ?K9Y @9k;9 9a.4 : S9", B@+;9F ;9D 6
9B@9;mma
9 9N ;?L1F 9"4$ ?L: ?FD ?< 9" 3B@@9 ?L ( ?CA YW:9 =<m< BD4m: S: ?F f< 9: S: >
9
B@@9" 9U: B@ 9Um<D S9< 9 ?ZSB@@;9 9 B@9;mmk 9 93k BD: ?d BD >3 @B@ Qa9 B@@9;9
9: B@9;m< : SR S ]F B@S9< ?Va;LF ?L< 9< ? 1: B@ ?U
<
9 9 @?K
9 D9 ? D
/ <9 @9Z9 @? A  B@ 9 3B@@ ;9 ;9 D D@
R
9@3?K <9 9 < :S` q>
;
` D@
9 ?v@?
; table
 `W:9 >
indexname
?
?4M9G

Notas

9Z9" ;9)9"FSB@9;m<:S D9=? D=9 9Z9YBD:9.S9 ;9Z]<@? 9;$F?L\a;?K x >;m<me@a
@B@D Y]:
?4 9.9,D BN: ?L4 3Y? mm: 9;3@ ?KJ]D 9)9k ?<{ ?L ?LO ;?O @34mD ?L: ?< m
?LL M4? S3?5m<m 5A GH > c B@9< ?;D G%  B@9 a; 9" 3B@@94 ]: ?V$# ;BDD a%m< %K
6 ;?L6 9D ?r F B@G9 : L 9GBD: 9Z;mm: >95A ?K;9r 9;>9S?Ka9< ]: y ]: 3?; GBD: 9 ;9" 9k >;
? 
]< 9 B@9;D 4;?Lf 9k?L ]v >;D ;? 9k;U 4;9S9 ;9C: ?ym< @?KS9: S$"emI A 9k ?L$}
&

# ]  ]< <  
m  L1 : : B@)94?KS?LaKM`W:9MBD4m<m,B@Y;?
 " 1 ] D "5 D
5
, S3?<;BD9kZ]>;v B@ R / 5@ , 9M BD 9]);?L;F9"A?L);?L;B@+B@;mm9)BD
m<m.@994a{S9k>~<BDFW:9" ;mm:a9y@.BD:99";9"K?\BD<BD<m?A9;?K )BD4m<m4#
<B@;# @;]Z ;mm: >9"d ?s ;9d B@VF ?Lm<m  R / E 9M B@ 994@?  B@VBD: 9C  >;Dm<m
m : m 9a;rS? S9;E `@9m: 94 $# ma ? %E@99\;9@ m< >9\;mm: >94 ?q
;9A B@( ?Lm<m ]
?L
9E ;9"E ? S9E ;mm: >9: B = ?m<m ] @3? 9 ;< : S)]A S M 9)\ ;9,4ma< 94@9m: 9, >;
?K9k;mk
9W:?K9< ?49F ]A ?LQ 9dma ?VM9"F a;>9< ?4;9yF ?L<D B@;9<
+9M;
?L~< 9: a9"C @99R9 B@P9U 9?LK 9GP%m< >9 ]5 ?L6 >;e ?< 9"< ? R / E  B@
3>?K :
: 9.;94S9 ;9.?K%mm: 9;H ?L< ;94?K : 9 ?LA >;<m<DmF , B@)D @]mD B@]S A S94@B@]
D>P;]: 9E. 9" ;9"U 9"<  @?  B@L;9 ;mm: >9UD 6 9. 96 BDaF 9< a ra; ;? 9k; r;9ES9 ;9
\
?K ( =m<DmF ]z Mxa: >;< ;?L 9k;< Z;9.S9 ;9.]D 9@ D ?  : 9 9{ ;9O : S9" 9O ]A S9 ]
@9m:
9L 9k;>9S?  9a" GD Sy< ?@ ?6W:9MBD: 9Y@9m: 9f yma ?3 B@:a9@ 9 @? +F 9" 9 ;mm: >9
<?$m 9<@ ?D # 3R # ]: .BD: 9 9 W:z @>3?+;9< 9M ?K% 9V@ )BD: 94S9 ;9 9< ,: ? 9 9)
;9d
9 W:$
9: >9 @9k9R9 3B@@9o 9S?LL Q B@ ;mm 9
, S9d<
 : O
949)9  >r9.9; B :? 9S? <9
9 B@@9 >  :
99 a
;zB A? R
/ @

SELECT columnlist INTO TABLE newtable


FROM table ORDER BY columnlist

B@ B@;mm9Za;$?Lm?c@Z?K :9"a? d@?D# 3L`;9=;9BDDB@;9 ,4eE, e   @99ZW:9>


?m<m Q;?L6m<m ]}N MC B@Z]6< BD W:?c< 9r 9Hm ?@99d 9S?5 D?K :9 ?L D@B@
? 9\;9<9 ;9($ % 9_ B@ ;mm 9 .z5 )rD 31 0+) @99\3:?L4 9=?L<? temp
;969
;9c$ % 9 MI]F 3F9y B@9;m BD a1m<m $ ;BD<m ?<@3? ;]< 9+]= B@C: ?D V ?<D> 9
;? ,4*# Z9W<
]\ 9 a;9: ] O / E  >  9=D >Q9Dm ?P?  B@Z;9=< 9M?K  9; ;?L
9S?Q M 9ZW:9cam ??K ]: 9: ?a MCD GB@# ;mmk 9 >;Lm<m G>SmD : S$


Nota de traductor: Un ndice agrupado es aquel que llegado al final de su rbol b-tree
no contiene un puntero a una pgina de disco en la que est la tupla, sino la propia tupla.

Utilizacion

4:S?V O;9 3>;9?L6<@;>9@?5 9D9< ?LAOFAB`9S mB@S?VD9;9 ?

^ 3B@@9

CLUSTER emp_ind ON emp;

Compatibilidad

V<m< BD`]AS9SB@? R;< B@9a

SQL92

( ?VW:9kM

5 ] x H [

R /

&k

COMMIT
Nombre
COMMIT

mm

<D9m+9SB@9;

e >9; k9 ;9 S9

Synopsis
COMMIT [ WORK | TRANSACTION ]

Inputs

,.er
e ^ (

^ ~ *-,.(
9k;9 9yF;9"O? D?L:9;3 ( ?V:G]-]FS?U

Outputs

]<A9KSy ]B@a;?;a ;9ZS9<D9mLcDG3>9;mma9fF?L+>S?U

COMMIT
dq

eL

.  L  ]   o

NOTICE: COMMIT: no transaction in progress


:?4W:9MS9 A9
? : L 6@3? 3 D?

Description

mm
< m  3  L Lc "4  mm  L
<
mL9 Lq$m}m ]   <   ]a N c  m C F C < 9ao
  D f "m y dA  Dm <
9 B@9; N? ? +;?
F9
? +3>9a; 9 ? 6@?K4;9I9
2+x1 3>9; 9;9I9 D9
R
D9
D?
; Y96;9 Y? S9 YS9 D9
? : PM D 99 : 9 B@ D ? D> 9
D
@3? @B EB :9 F9 9 G;9
B :9

Notes

9P9;9 9o;9 ,.er M; e ^ ( ^ : *,4( D?V <9a9 ?=m<?K%<9k#m9aaM)@B@] 
D>h?L4 m 9
D RQ zVr @9k9R9 ? 9khBD:9 S9<D9mLE

&

Usage

@99RW:9>?L ?LJ;?L~94?LL@a%<9:]:]S
COMMIT WORK;

Compatibilidad

SQL92
M
H [k D? ;?6]A@]mD9 ;95 ?L6? <9a
COMMIT
<: S1 ?< @9k#m ;$

COMMIT WORK

K@? h;?C 4ar?KS9;m

COPY
Nombre
COPY

O?KD9f 9S?Lr]:31DW:>3?LLMV9 ;9

Synopsis
COPY [ BINARY ] table [ WITH OIDS ]
FROM { filename | stdin }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS null string ]
COPY [ BINARY ] table [ WITH OIDS ]
TO { filename | stdout }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS null string ]

Inputs
 *-( ^ e 

"4$ < 
m  

4 ] F $ c =  Lae % <
y  ] ~$m % La  D o 1 L

L L : 9S?L
U

O9
9Ya; ? <@?K9
 :? >; ? <9S? 9 <@?
?K k9 ?9)? ? O;?
9 9; <9  :9 DO?4;>> D ? <4
? ? >S?
:9k ?  +; B 9 ? <
? S>{S?

L; :?4 3y RBD:9ZS9 ;9GamDS:


*  ,4*#
?KD 9Z>;Lm : m 9@ ? o R?L]S a?Cm: S> :?VD<m?$ ,.*
O

table

d  1 <

%@99 9 9 ;9

& 

9 3B@9Z9D?K;B@9 ]x?K%9? <= >;eDFW:a3?V R]:9 9R?VD9;mm 9<

filename

APm9d B R;9Z:9 91.]:y RBDF?< BDS??VS> 4m:9;3

stdin

m9d B R;9fA9k;mm 9d9 9 BDFF?L< BD?V?VS>%4m9;3

stdout
AP

.( 99S>+ B 1 >;mm4S9 ;?~F9"<@?5 R]:9 9R?VD9;mm 9<

delimiter

]  H  F ~ 
. ] ] 
#    <
6  
#  L  <m m a   # %  L D f "  d  

null print

:9 9 :9J@99r3>@3 A :S9 9;?K3 (


; 9k;? :@? - FS?R _
L$ 9 D D;9 DW
\N
@B@ R@3 F  >@? h <@;? B :9 F9 :9 
9  9
( % k@? 9 ? : rW A 9

Nota: En una copia de entrada, cualquier dato que coincida con esta cadena ser
almacenado como un valor NULL, por lo que debera asegurarse de usar la misma
cadena que us para la copia de salida-

Outputs
COPY

9d? D9fDy?L<@;>VD9#ma9S? 9<:S$


d D f m

]xm<m9 9 ]6>;L<<D9ay R>3? %

ERROR: reason
9 ? 9 9; ; .@?KC;9Z9

Descripcin

 :    +   #   LE eam  d  <m   <


%
m<m " %$m   U
a m 6 DVD o "D
~ U %] ]  $m}m
S $m S L4 : L
:  mD %
a
D A ;$m C H $m %H  mD
Lf Ly 

mm "mLF m  e %$m .m 
W:>3? >; AS <9 @O9 W ? C DS9
2+ <B@  9S? Q :S3OS9 ;9 @? D 3 QM
R
9 R2+
9E9; Aa ?K @? D 3 @
B J;>9E?Y F 9 L?Y9EB
W:>3?
; FW:a? W:9
D>  9 < :
;E@99E>; D> ? M)>; :?
3 ? <@;>S?.W:9 J D@
9 D
.a;P@B :? @
AS9 >; D> ?
D4
D@
F9
?
;? 9k? 9
stdin stdout
R;9 9k@; F9
;  :R9; D> ?K$P?
 > D9%

Notes

9G@9k;9 91;9O *-(
e  ?L ;mm 9Y9yB@G?L ?LL;?L~@9?L~DO9;m<9:6?4;>9F?<?4?
Sa?Lvm: 9  ?C ]V ;BD 9^ 6F?L<?)a{S?o D?Y]h>;m ?;4"h%kDm ?fB@E>;S?L<@?KS94:S?
:? < 9; d ,  @>3?>; 3DB@;9" ?C:?6~>9k;m<:Z@?K9 ;M+;?LDW:>3?~]:
9"
?ED ?+ 9; ?4~ 9< Q 9BD< B@G]A SGQ BDF 9F S?Kv B@y@ >@< : R;?L6 9S?Lr ]xD 

? U  ]F S? B@9< ?,D : ? H 9GBD6 a{S?,A EBDD 9GBD6 9" B@;9" ? $#F {#c %$ ?L< ?@ >;mm4 9" ? % ;
@
&&

>;mm4S9 ?KE@B@] ;949 D)@?K:B@9;mBDaE?K3?F9k9]>J<@;a9< ?\;94@9;9 9;9


 *-(  ; * d * : e D@ ? 99 a3@ : 3?c ;?L: 9< @?6 d 9?L B@Z3D B@;]
?m<m vF ?L+ >;L >;mm4 S9 ?KvD > 6 ]<F a9 ?LQ : 3:F ?L4 ;;9
+9c
VW:9 > A V@ m< >3?BD  lK5 llK  ]9 B@9;m BD >O9 ;9c B@M?L= 9;? 3]fD >9v ;m ?L
@?K R2+
M  $$" ll%  ;9O9 ;9EV ;91 B@D  9M 9V 9:m<D >9 ;?L+ 9;? 3]S
;eD > .m ?Kv:  a 9Z;?LL @a%4mD ?L < )9 ]F B@9] ?L6D ? 31 B@9;m BD a+D W:>3?V B@y 9M 9 9
;>> D R?V]}
m %D :F ?L+ D y ?L< 9< ?U
;94@9k;9
9;F ;9" *-(  , * d * @ e  D @mD 9VBD4 99"F SF B@D .BDD 9 4 @9k9, >;mm
4 9kE: S3 ? ;BD4: 9DA 4]D @m 94 9  ?Ld 99 F3G I ;9V 9 : 9V@ >;mm4 9" ? 9
D? ;?A GBDD 9 >;K@ m< >o 99F SF%


Sugerencia: No confunda COPY con la instruccin \copy de psql.

?Fm< ? 9.3] ;9,< 9 ?L: O @?K5 ?6]\;9?K;BD4:9m\4 9k ?Lz@B@@


:
R2+
m<?9@3?4:?L5mAP99" ?
a# ]: ;9"Z ?K@>9 ?: ] s >; @ m<>Oa3?K% AS?A:?P?L BD4@3? ;]<9 ]va;

R2+
9D ? R2+ R2+ P>3?a;H D #m:?L@?KDB@@B@DS?$D> 4@9k 9a;m<:S<?mD9 ?
q
>;5 9A ? `BD R2+ Q2  .O/./. @B@ `BDD 9 D `@99;mm< D 9Y9 BD: 9A ?KD 9
9;;mm 9
m ?69, B@Ya;< 3F S?  ?F Z9 9a ?c >;$A a%$m ?K5 d@ ?D  3:: ?+6: ? < 9;m< : S)a;
4ma< ?V B@Ra;e 3 ?K  ?; O9 9 S ? >;zBDD B@9  ?> a;z3D B@;9 ?, :F ?KD 9_>;eD W:>3?; foo
$#}m
9':9 ym< ?K%< 9"mL 6;9`3B@9%LPB ] F 9kG;BD 9 93D B ;S9: ?;m: D @a9@ ?) @99
>;BDD B@9  ?4m:
9 >#m@ ?o ]A Sc 9D ?LP ] ;BD 9y : 9 9 9 ?, ? $PGDATA/foo
@? h;?V : >9;m" ] >=9GBDD 9 D G;9 3B@9f ?< P;>9ZS9;e foo
?
?CA 1 a=9y a O>;LA a%$m ?Kk 9;
D @mD
9_;?~ W:>3?LL 9yF ?KD 9%
?LyD W:>3?L BDD 9 ?Ly ?L< ?\9 BD< : S?G @99 R2+  ]< ]}mD E?xD >J9 ]}m ;.P?
@9d
;9,4 BDm: 9,A a%$m ?K5 f 9D f@ = 9k?L}N ` ;?:Dm} ?LO ;? 9;]E ?6\ BD(}mD S< 9
1D W:>3?5 R3]6
OB@9< ?(A < @;=>9BD: 9c ?: amLq: {* ]P MNA D @]mD 96BD9DF W:a3?<?] >m ?LDm W:?
DF W:a?VA Za m$ Y ` ;9,4" BDm: 9 ?L< dD Y]A Z %  B@9< ?6a;$D > $m ? : ?6\ ;9=4
BDm: 9f >;zBDD B@9  ?o










File Formats
Format
Text
O
B@9< ?;DGBDD9 R2+ Q2 am+;9 ?KDm *( ^ e  k>;LDFW:a?]:>9 ?.<@%d9 91@;9
$#m<A S9< 9%I
BD: 9VD ?K;9;mm:>9$?N9 9VBD:9V@4;9d?K;BD4:9G$-9k m B@?K%oAa@99 94@?K
>;e
99 >o >;m4 9 ?K%K ?L~99a5 >;mm4S9 ?K]5m:S> :?LJ$;?599FS>3~m:S> :?
B@x ?Lm<m@ 9F ?L
>;+@ >;mm4 9" ? %~D @3  F  >;oF 9k9 S>y 999 ) $#F c %K ?L
9;? 3~@ R9S%m B@S?D ?x 9 : 9]5 RS>{S?V : a9@ ?Q @?Kh;9d BD<mLx@ 1D 9;mm 9 9D ?L 9" 9
?4 9 9.BD: ?( Y;?G # @?Ly .9S%m B@S?o]@ 9 BD<mLN =A 9;mm@ 9V@994BD<  @?(: ?  >9
9S9>v
1 : >9>;L 99] a+ 99R9S%D "]A S1D > d : >9 ?.@? hF ?< 9"< ? R2+
;e ? < 9S?V@991F 9@ 9dm<D 9< 9Z




t attr1 uRt separator uRt attr2 uRt separator u ... t separator uRt attrn uRt newline u

&&A&

;em :mDF9" ? vD1aB@9Z+>;K@ m<D?V O;9Z;mm:>9"B@9< ?AOD@mDF9 *  ,.*


e R2+ ]<=9CABqD9;mm 969+;9cD9;mm 96DS9< 9R]v;BD 91 V9+BDDW:>3?LP<$9 BD:9
99cm< >#m 9$#F ec %LMsBD @BD: S?D  BDm ?L 6BDq 99 >1 FD 9;S?@ +;mm: >9` BD: 9
;mm:
>9(D >@9k9@ 9U B@9< ?sa%4m: 9AD B A 9k;mm 9<em4 ;9 < : Sa O2+ D \ ;>M < ?9@
BD:
9=A 9;mm@ 9ZD 9<@ 9k D @>9 Z B: 9= 99dm< >#m 9YM6BD` @BD: ?CD  BDm ?LE @?KQBD(D@
;mm:
>9 ?L< ?Y;?h S3 P%m< >3?Lo 99D S>3U rBD: 9R;mm: a9O@9k96m<m 9:>;" >;"DF W:a3?o3m
4
9z ?L R2+ a%4m: 9k%V $M\9CF ?L: m: B@9mLs a%4m: 9 V ;99P;mmF 9"mLNA a%$m ?K%vaDA
<
B@: S9 BD , 9": E y B@yA O< B@: 3OD 9f 9 : 91 B@ym<m 9Z>;eDx 1D W:>3?o
;"F 99]F S>H 9k96m< >#m 9E : J? S3?oam<mo 9 ?L ]A @] 9k; ;F 9k9 S>H 9k96m< >
#m
9R;m a9;SA E3>@3A ]: 9d ?L< ?@ ?E 99]EF ?L<D  B@#m 9Q $#F @e ;eF 9k9] >_S9 B@;9 ?KUA
3>:3]A ]:
9, ?< BD: 9, 99,m< am 9)M`BD S9 B@;9 ?K% 4 99 F~( );mm: >9,D )3>P
D: 9C ?L< ?<BD: 9F 9k9Cm< >#m 9MIBD 4;mm: >9.E B@9< ?AD V 9 9] 9k?Lf VS>N?
:?F ]: >9" ?J @? 5@ ?LA ]::  a 9k%, ?< ># ra;< 99] a5 99=m< >m 9) BD P9
1 99r @99 9D  B@9o B@yD 1 9 B@6 9 ]F B@9: 9< ]: $D $# 91A ]F B@]< 9fF ( Ua < @3
Dm: >@3>S9 V ?< ?<BD: 9C 99Cm< am 9M<BDF 9k9 >: ( 3 @?K1 ?< @9k#m ;mm 96 9
D? ;BDmx4E : >9;KEF @ (  %






Binary Format
( >;< 9D ?F R2+ qQ10+. ;?LG P%m< a?L: B@93?c M ]: >;<D W:>3?FA a%) >;<: BD< a?
Vm<D9<9Y]>;UDFW:a?Ue >;U:B>3?<=>3?L:a;o?<9"< ? R2+ xr10+) ;>>
W:9D9;B@,D.]<FB@]:3Z>;HD4 >;<DW:>3?U ?K3?x9A?LL@%S9k%, );=>>~B@9< ?FAY;>9
D 1:
BD< >3? 1m<D 9"< 9"Sa ?LL 3]A S9: SE 9?LQ + >;LDF W>3?VD 1m: ? 9 E
;. ?K%< 9k?+@99,F 9@ 9,m<D S9< 94\ >;<D W:>3?] ?< ?xam B@$ ( K D = B@)]A S, ?K%< 9k?
 (D >;D  BDm ?  | l% ,  $ 9"C 9: m 9 V : a9"C AF B@9k3?9 M ]camam$: ? D
: ?L4m: 9+ BDm: #k + ;9Z9" 9k;e B@yam B@$
$
#R R"  !: "L d  D a"6@-D> "V d "
+ >;K@ m< D ?V a;D W:>3?
BDm:
#
BD< >3?V OB@@;9
:
99d 9 9RB@@;9
@
BDm:
#
?L<$ SBD ?K9;L O;9 B@@;9f@ 1 9S?

BDm:
#
m : m 9 ?KC$#aeD GD @mD 9%
BDm:
#
BD< >3?; G9S%m B@S?5: B@;?
:
BDm:
# #22 BDm: #k
BD< a3?5 G9S%m B@S?a" ?: S9< ? a
:
 >3?

JSB@@;9d
9S9










!"

%$

de datos binarios
Alineacin
z
?L 3ZBD@?Ly{BD< # az;?LR9 m B@?L:  M ]1DY9;mm:>9\A 3B P?1 =FB@9S3?c MS
?LZ 9S%m B@S?d VF 9k9] >3dD 9k;mm: >9s 3B@@?L= 4BD9D?K;?4 MS$ s;9F<9kM?K=9C
;9O
?K914 BDm: 9a S? ?LR ;?G 9S%m B@S?1<9M ? 3]1@)BD4 M ;D.9k;mm:>9]43B@@?Ly@
B 9k3?F MS ( K D  B@4;?LG 9 m B@?Ly .;?L<$ SBo( 9%= 9 ;;$ : I @3D ]m ?Ld );9
;?< SB4
>; 9S%m B@S? N;9< 9k m 6D ?L(am< @;< ]: =F 9@ : 96F ?L: m: B@9 >; >;< ]: ?
# @?
R;9d< 9k m<

&&5

Usage

;HamBD]:V%<@;?? D9VBD:9S9 ;9V9V;9CD9;mm 94D9<@9KBDD9< ?\BD:9V 9k9V>#m9;


?< ? >;mm4S9 ?K+ 19<@?U
COPY country TO stdout USING DELIMITERS |;

@991? D9k+ 9S?E OBDDW:>3? <)9 ;9G9 ;9d


F?KBD:M
COPY country FROM /usr1/proj/bray/sql/country_data;

" D ] ,  "   L ; ~ D  L D  ; a
#    f  < d 4m m  d m mm K
+9.9 B@:B < S <@;? @ 9S? O9 B@9 ? R@99 D> ?K 9 ? O94B :94S9 ;9 @
$ 9 ? B@G  : +;9 D @
B
9 RS>
:9
 +; 9 @; <9Z; :>9%

AF
AL
DZ
...
ZM
ZW
\.

stdin

AFGHANISTAN
ALBANIA
ALGERIA
ZAMBIA
ZIMBABWE

?L64ma<?: 9k?L}S?L<?cA9k;mm 9)]?K%<9k?cm:9 ?BD:9,4BDm:9=m:B@  . ?L


9S?=D c< B@D 9 S9"=A ad ;S9 ?fF ?L >;UF ?L< 9< ? < "w#  9S9 ;9:63
9< @?LA {>;P%m< a?6]
M+>;<D 
BD< ?+ text }{ ?L 9O ;9@ ;9O  : `BDA9;?
:B@;;]` a;aF FE 9< @?Uchar(2)
( K D d ?< ?6a;$ 9< @? char(2)
D #Y
3>;;]: ?C ?x: B@;?E W:9"A S9
9;m
9<a 9h;?L6 B@9S3? M ]L Ma;e 9< @?V Oa{S?Vr @3 m ?V@?K+D B`;?.$ SBD6
&

355
006
A
\0
L
\0
G
...
\0
\0

\0 \0 \0 027
\0 \0 \0
A
N
I
S
T
\0 \0 006 \0
B
A
N
I
\0 006 \0 \0
E
R
I
A
\n
\0 001 \0 \0
\0 \f \0 \0

\0 \0 \0 001
F \0 \0 017
A
N 023 \0
\0 \0
A
L
A 023 \0 \0
\0
D
Z \0

\0 \0 \0 002
\0 \0 \0
A
\0 \0 001 \0
\0 \0 \v \0
\0 001 \0 \0
\0 \v \0 \0

\0 \0 \0
F
G
H
\0 \0 002
\0 \0
A
\0 002 \0
\0
A
L

\0 \0
\0 002
\0
Z

A
M
\0 006
B
A

A 024
\0
Z
E

\0
\0
I

Z
\0
M

B
\0
B

I
\0
W

\0
W

Compatibility

m f  ]<9

SQL92

( ?Va DSR;9 D :

R2+

]x H

[

&&k7

CREATE AGGREGATE
Nombre
CREATE AGGREGATE

 D:GBD:9f:B@9dBD<mF G9 3 9 ?

Synopsis
CREATE AGGREGATE name [ AS ] ( BASETYPE = data_type
[ , SFUNC1 = sfunc1, STYPE1 = sfunc1_return_type ]
[ , SFUNC2 = sfunc2, STYPE2 = sfunc2_return_type ]
[ , FINALFUNC = ffunc ]
[ , INITCOND1 = initial_condition1 ]
[ , INITCOND2 = initial_condition2 ] )

Entradas

L; :?4 3y R;9y-BD<mL@R9 ]9] ?V9f3F9%

name

;K#@? 1 9S?VBD< 9<]:9;eD?L O>;LB@G?K@>9 D9y-BD<mL@R9 ]9] ?U

data_type

9y BD<mc@ OD S9 ?, OS9<m}mLc B@EW:9d O;;9"< 9%D E@9919 9:9<@?,:?:B@;?

a +;9x? ;BD4:9AB@:S$N?<9BD:99 9] ;x >;C@? sfunc1_return_type
?L< ?VP%m< >h9 BD< : ?.Ma; 9< P? ?L< ?CD  BD< ?49 B<]:?U
F

sfunc1

;K#@? B@>;? R;9 P%m<a9dBD<mL O9<m}mLE

sfunc1_return_type

9y BD<mc@ OD S9 ?, OS9<m}mLc B@EW:9d O;;9"<9%DE@9919 9:9<@?,:?:B@;?



G;9f? ;BD4:9Y?K%m E}{?L<9ZBD:9=9k%9 ;: G#@? sfunc2_return_type ??
9
BD< : S?.BD<mF ?VMC  B@>;m OBD: 9f 9  9 ; >;L4ma<?#@?U

sfunc2

\#@? B@>;S?4@?KC;9yA]BD< 9fBD<mF GS9<m}mLE

sfunc2_return_type

9 BD<mND: 9;P;;9< 9@ 9491 ?< > ES?@ ?G;?19<@?Ld Y:S9" 9< DS9BD<

mL,  Q3]m. ?L_9 BD<:S?D r;?L_@?L sfunc1_return_type M sfunc2_return_type

ffunc

L; 9;?Kom<m=9;K@99G>;K9BD<]:?; R;9Z@ m<>9dBD<mF GS9"<mamLE

initial_condition1

&&8

L; 9;?Kom<m=9;L >;K9BD<]:?; G;9dD BD< 9fBD<mLF RS9"<mamLE

initial_condition2

Outputs

]<A9KSy ]B@a;?;a a;?L<9< ?Ay?L<@;>S9dD9#m9S? 9<]:$

CREATE
dq

Description

  
< ; D<  "
1 E
1 E %4 D 
mm 9 V  ]f D< < 4 ] "d D<  ]=  ] ] U m D "= < L f
  
= " V L
]  Fm L<m  
;Dm %m DmLA  $e$ = D     c , ] a D D<mA   
A C 4
    D U L < 1 5
1 5
a L "~  m #m 5   
: 96 BD<m; r9 3 9@ ? PB@ r3B@a%:W:9D9JS]UBD<?:]a ?LoBD<?:]o LS9.
m}mLF GD S9 ? sfunc1 M sfunc2
@a SZ9)B \B DB@9 ?6?+@3? 9 <9 @? ra{S >C;9 B
? :9
R L <)++ +L
; 9
@? D 3
 ? :B@ 9 B
? : V9  9 ? ^ ; B :9 B
? : @
9  9 ?@9k96 @? 9 A ? <?
M
A sM9
D@?
; Y
avg(float8)
;9
AS B
9 D
A : min(int4)
:B@ ? O @? R
? D :  9)B :9 B
@Y9 3 9
? B@ :? DV@3? @?K ? :9 @B@ VB D9 DV>; ? <9 ? R r .++ @+L
@99
@3? P? ? :9C;9 99 DS> D 9 D>9 :9

sfunc1( internal-state1, next-data_item ) --> next-internal-state1 sfunc2( internalstate2 ) --> next-internal-state2

D f D<mxD:9;e y;mB@;?L ffunc

MVB :9 B

ffunc(internal-state1, internal-state2) --> aggregate-value

 1  V Ly   
 ] m   < L
6    " L+m % D  D  Lo L  D  L v D<  o
<mamE
D 9E BD<?:]~ GS9<m}mL+W:9F RS:>h;9E}m BDm:>SJP?KD@9P]S
?LO 9 BD< : ?L: sfunc1  A a temp1 >;# @? sfunc1_return_type M
f
C# @?

; 9;?KH  B@>;S?y@  ED >< >;a# P?
column_value
M
D >%G
BDA 9" ?V ?< ?V@%m< data_type
ah9k
BD< : S?V] ;9G@3? Sm< 9 ;;9< 9 9G9 sfunc1 sfunc1_return_type

BD< ]: ?GMd 9;?KH ] B@a;?d@ sfunc2 W:96@ ED > temp2 @ >;a# P? sfunc2_return_type
f ;>9
?_ 9 BD< : S?Z@9k9J;9 BD<mL; ~k ;mF B@;?d: 9k;W:9 ~D >
M
M=D BV
9;?K
f
temp2
] B@a;?=  6D >_BD  @?, 9"A 6 @ ?D # 3C $#: ?,:  D 9  9< temp1

:
S data_type
B@EW:9

am ?V]D @m 9@ ?4@?KC ^  %a
. (  =A aLD @m 9@ ?xa@ MxA ?K;?(aP 94 9":- BD< ?L: y )S9"<mamL4
f *-( ^
D S9
?;A ?L+ D @mD 9 9
@? D 3 3>94W:9 DS9 ? 9 9 ; OS <@?K9; R$  9 R9 B@ F? <?
M
%
temp1
@99 <9 :S :> 3 DB@;9 P?
:a <9 ? hB D9 ? ? <)
? 9 B < :S? h@? P
;9 B
temp2
? :
9

&&ki

: 9cBD<m V93]9:?<@B@ V3 B@>%:A?K;?IBD:9?4@?=?L<m?:fm<m9k;aPBD:9


@9919 91BD<mLF OS9<m}mLE D9EDRD@]mD9MV9;m<9:9V6;9d 9D1  9S?
?<?F9"<@?5 R@?VS>NK
Notes
D +R2+\)++1 +LE @99d DW:9UBD<?:]6 R9"3 9] ?o
R @?am ;4D@]mD96B<?L:y 49 3 9 ?B@4]<9Nm> D91F?L<$m:9?:]d
BD<?L:1 YD9 ?+MBD<?L:yD:9;@?KE S@;?;9;-BD<mL4 .9 3 9 ? count
3
BD >3({ ) (  $BD: 9N- BD<mL Am< ]< : S? %G@a3?: ?{ . ( ?w *-( . ( :
4 : S9; B@\;9( BD<mL +9 3] 9] ? sum 3 BD >3cz . ( $BD: 9( BD<m^ 9Dm
m: % P>3?C: ?Fz . (  <: *-( ^ . (
M+;9, BD<mLA Z9 3 9 ? avg 3 BD >3 9: S?
;91
?1 BD< ?: ]d YD 9" ? ?L< ?\BD: 9V *-( ^ . (
$BD: 9V BD<N =m.mamL: %CP99
@3?@
B 1D B]A B@;S9 ?U q B@9;m BD >y 9D ?LP 9;U< : ?L. BD: 9F ;9= BD< ?: ], VD 9 ?
 A a+ D<m 9"k MC B@9;m BD >o{ ) (   RS: >>;L ? 3D @?L< : S *-(6*  ,.(F) 

Usage

 "
1 D D<  ]o "    D ~ " L  
%  5 D V45  LS
  , $

X >9 DCa; 9PB@;? r;9 B


? : Q9 3 9 @? );9JYB 9 a; @3? 9 <9 @? $
. '
% @99 <P;? GB D?

? <@;a?

$3 

Compatibilidad

1 E
1 E

SQL92

1
1

E ]hBD:9Oa{S<amLC >;;< B 9KS6 ~@?D3


5 ]x H [

R L 6)++ +L
L
R
`.
++ @+
L

CREATE DATABASE
Nombre
CREATE DATABASE

O3>9RBD:9f:B ]9y 9A: y 9S?

Synopsis
CREATE DATABASE name [ WITH LOCATION = dbpath ]

Inputs

y:?4 31@G;9d 9D1 1@9?LL9yF3a9

name

&&

Sm

 

( ?Y> ASJ;9O?K

 9)BDm 9m\ 9;a%: 9k#m 9Y@99)9;< 9F ]: 9>r;9,: B@ 9,9"Af d 9S?LE>;$amAS<9
R9DW<m?LSAX >o4r9 >;9]:GP?am ;JP?L ;<9

dbpath

Outputs

]< K y ]

;a ;9Z?K cDy?<P;>9yA9k#ma9?K%9"<:

N ]

. ]$ ]  ~ 5 

CREATE DATABASE
dq A9 S B@a
;?

A  V ( LX >

ERROR: user username is not allowed to create/drop databases


+9 \ :>.a;J@ ; ? AP 9;
 @99 F3a9> 9 D 9 ?

e ^
Q xJh r}

L 1a D f  1 : L  

Sm $

ERROR: createdb: database "name" already exists


AS?V? B@3 KB :9 9 D 9? r;;9 <9 9
M 9 > D

name

ERROR: Single quotes are not allowed in database names.


ERROR: Single quotes are not allowed in database paths.
9 9 D @9?
M
:?@B
? : :> ?
;;9
<@;
DS?`
<@3
;E@9name
9 B@R;? dbpath
? 9 ? DW:>;; B@ 3>9 6>; 3 S? ? O;9 9 A
9S? Q@B@ 9 6 B@9k D <? ? A B@3?

 f , L
D 4 L ] ~ 4 1am  
m am<Dm
: L~  < E  e 1 ] e  , y "
1  ]  %  % 1 y L ] U

<}mLA < 4m  mD "


 # 54  K . L
K%  ]
y 1m L      d ] 1 ]
d
  < m $

ERROR: The path xxx is invalid.


9)>{P9
a; 9
:?+ D@
F9 ?
W:9 9;;9 ?6$ >
O9 9 S?+>; F?
<? % E? <@3B@ O;9G3B@9 B@ :S? B ?4?.dbpath
9 D B@3 D B@R;9 
9 9 ; O :?K :?
9 ;9 B@GW:9ZW: W:?43 >3
9 a DS

e  D
1 E

. mL  ] mm  %  Dm 


d 4m
< mLE
K %m

ERROR: createdb: May not be called in a transaction block.


Q  :B :9S9 A9
;? B Va{@; S9\ q B
:?PB@ ;;9 <9kY9
@ <a
?4W:9 GS>
:9 AO;9Z9 D9
R L `+L.Q
ERROR: Unable to create database directory xxx.
ERROR: Could not initialize database directory.
AS? < D9 4 D
 <3>;9 ? :9 ? ?
AB
 :S Z@a
D? D? 3)>;
3 DS? ? 9?
AB
 :SO D@9 ?Z V>;
F? aBV?K3? h@3? ; <9 4>; DS
<9 FW:a?
;{B DB@9 ? 9 S?)>; B@R D ?   ?)>; D> ? 9 D @ 9S?
OS :>h9  D?49Z;9 ;? 9; 9
+ D@
F9 9

Ld < a  44y   L  Ly LNm< DD   %4m Ld L


  , ~ Lam< DD    ] ma L L  ]   Sam 
y 6D L D ; K S  y < $m U    : L
   
L mm mL  mD " $

Description

1 E
D V  V  ; ; L1@ ?D # 3 H 6 ;D a9 ?KOP9A 9.9
D 3 V d  f  1 : L
@B@ ZD@mDF9k%DZBD:94;?LF9k;mm9m\9;> :9m9.@99]K@?KL%<@;?LK9;m<9:9kr;9 9
Dc V 9k?LY v B9maF ?4m a]:  963B@9F  VW:9 ay}m@ ?<@3>@9a9 9c ?L ;96?  ]
# lK#
a9VB :9 :B@ 9 9 D 9?
L v+L)r
R
D>ha;K@3? a9 ? R;9 :@
B 9 9 D 9?

&&k

e@;93B@S9F?L:#]:BD:9C 9k9 ;9@9S >;9:S>9VDVm:>@3>S9V?<?<BD:9C9 9 ;;


:
S? : ? B@f@  1D >+ ?L: ?m 9Z@?Kh>;P?L D ?D > $m ?KK G]A S9f ? < 9 >; 94m<mD S9
?Kv G;9y 9"A 1 1 9S?r @B@ O% > >UF ?L: S?K;A ?L 3R;9r ;? 9;mmk 9 ?L: 5 B@G@B@] cD >
F9 9"Sk $ : 9a;mL9@ VBD B@9  ?<@B@ VD > @?KR% < @;?L   ^ ^ 
%+e >;D > .m
?K D #:F ?L< D ;9@ ?; ?L
$# ?D 9:
B@:: ?;D EW:9"F E@?K   ?K%#
D6@a%4 Sv 94m ;?,ALLOW_ABSOLUTE_DBPATHS
?L4 3= 3B@9+9D ? ;B@S?aDm@ : #mD 9 ?L) @? GBD: 9F 9969;
:
@ m< D= ?V$~ %
=%K
/usr/local/pgsql/data
%(

)(

1 E
Q BD: 9Z>N<amLF >;K;< B@9aS1 1@?D3
D 1 3?K@:99" 9AO@99G>;mm4m:9kC;9d 9Dy : 9?L
;@3?L 9< 9, 3>9>S ]O BDAaF  @D W:>;;< ?L<A S3BDm ?`9k;] @? LYD=F?L<9< ?LKMxB@
D1m< ;B@MG@?K+ ?KSD 9.
SmA SI 9D @ S?yA ?L 3D  B m 9s m:  m 99 4;?Lf 9S?Ldm< @;mm 9 ?LZ ]s a;_BDD ?(@
;?
9;mmk 9 ?: C 9k;> : 9m 9"C @99G;9+ 9D E  9?LQ D @mD 9 ?+ ?LF: ?4 3E E3B S9
9D ? ;B@S?a{
M`P? 5 ]- ]F S?CD ?K;?BD: 9, 9% 9" ;f@ Y ?K%: ?F ?: ?Lm 9)@? ra;:@3? D ?CD > $m
?KE@B@] ;D >O]A Pm 9 94@994BD: 9;?LF 9;mmk 9mI 9;S> : 9#m 9<F X_a9V;9YBD 9C >;@94m
<mD 9 ?Kh@9k9d4"5m< ?K < 9mE
Notas

R L `+L)r

Uso

@991a9_BD:9f:B@9d 9D1 y 9S?LS


olly=> create database lusiadas;

D f  d  1 :   D

@99 3>9aCB :9 :B@ 9 9 D 9S? r +B +939Z9;S> :9 9

~/private_db

$ mkdir private_db
$ initlocation ~/private_db
Creating Postgres database system directory /home/olly/private_db/base
$ psql olly
Welcome to psql, the PostgreSQL interactive terminal.
(Please type \copyright to see the distribution terms of PostgreSQL.)
Type \h
\?
\q
\g
olly=>

for help with SQL commands,


for help on internal slash commands,
to quit,
or terminate with semicolon to execute query.

CREATE DATABASE elsewhere WITH LOCATION = /home/olly/private_db;

CREATE DATABASE

&& *

Compatibilidad
SQL92
BDCEGFIHKJ)LEMEONPQC@RTSUWVCYX[Z[\]_^\a`D]_^b]dce]df\aEOUTgIhMij kWlGmN%PQCRTS UWVCnEOo!pHKq!S NKEOUWLErEOU
EONgIhriEGJsLS UWVS tuEGJX[Z[\]e^e\nfX[vD\wx]nl

CREATE FUNCTION
Nombre
CREATE FUNCTION

y{z

EO|UWEOJ_S}UWEG~2pUWPQLHKC@U

Synopsis
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
[ WITH ( attribute [, ...] ) ]
AS definition
LANGUAGE langname

CREATE FUNCTION name ( [ ftype [, ...] ] )


RETURNS rtype
[ WITH ( attribute [, ...] ) ]
AS obj_file , link_symbol
LANGUAGE C

Inputs
name
EUWS RTECWS}2pUWPQL2HKCUDL2CrPQtAEGS L2E@l

ftype



EdVS L2SL!E}CupUWPQLHKC@UYSt<!pRTEOUW
LJ l

L2@EOJ)Ct

4Q- ,QG1 ? l

qbS NHKVnL2@E[J)pP

opaque
S t Gl

HKUWVHKPQS LEOJL

S LL

EHKUWpLuL@EOJRTS @E}@S J)ECt_P.CRTNKEOF


E2pUbP.LHKC@UTSP.PQEO%L2JS t<@pRTEOUWLJC@uSUYHKUW

S JP


rtype


EtAEGL2ptAUVS LSL!E@l

L2@EO

QCt

setof type

EC@pL
 pLWL!ERTS @EJsEGP.HK|EOVS J_S
!SJsE
L2@EOPQCRTNKEOF

opaque
EOt L

tAEGL2ptAUSJ)EOLWCbHKL2EGRTJs tAS L

setof

RTC@VHK|EOt%HKUWVHKP.SL2EOJuL

SLIL

E2pUWPQL2HKCUr~DHKNKN

S UDS}J)HKUW@NKEHKL2EORl

6Q6

attribute

UCLHKC@UWS N%HKEOPQECWHKUW2CtARTS L2HKCUS @CpLbL

C@UWNKMS LL2tAHK@pL2E_PQpt
t<EGUWL2NKJ)p
CtAL2EOVHKJ
pUWPQLHKC@UMS NK~DS @J t<EOLpt
UWJuL

definition

HKUWVHKPQS L2EGJL

iscachable
iscachable
EOUr!HKq!EOUrL
E_J)S RTE_HKUWpLq!S NKpEOJu2Hl E!l QHKL

EGt
~DHKJ)EpJsEHKUW2Ct
RTSL2HKCUUWCLV
HKt<EO P)LNKDt<EOJ)EOUWL

iscachable

E2pUWPQL2HKCUl

L2C@UWC~~

J)Lt
HKUWrVEO|UWHKUWrL

S LL

E_J)S RTE_t<EO J)pNKLI~

E
CL2HKRTHKEOtpJ)EOJ

L2CrtAEGEOq!S NKpS LE[SPQS NKNCWL

VC@EGJ_UWCLVCVS LS @SGJsE


NKC
C@@pJCtCL
HKUnHKLJ_St
S RTEGL2EGtNKHKJ)L)l

E[2pUWP.LHKCUWpJsEGV2C@t CL2HKRTHKS L2HKC


Ul

EpUWPQLHKC@ UWL

S UTHKUWL2EGt
UWS N2pUWPQL2HKCUUWS RTEO!L

EOL

EOtHKL%HKJ_J)S 2E

E[ RTEGS UWHKUWVEOEOUWVJCUL

ErS L

ENKS UW@pS @E!l


2LbRTS M@E

LCS UCGEGP.L|NKEGbSUgIhMiao!pEOtA.!CtLEOFLHKUS

t<C@PQEOVWpt
SN@NKSUW!pS @E!l

obj_file
link_symbol


HKJ2C t
RC@@L

EOUL
UW S RTECL
L

E[]dfP.NKSpJsEHKJp
J)EOVCtV@UWS RTHKPQS NKNK@2NKHKUW!EOVNKS UW@ pS @E2pUWPQL2HKCUWJ

E
Ua
2pUWPQLHKC@UUWSRTEHK
L
EegIhri2pUWPQL2HKCUl

ENKS UW!pS!EJ)C@pt<PQE
P.CVEHKJdUWCL
L
EeJ)L2tAHKUW

HKJL

EeUWS RT
EC@IL

EJ)S RTESJL

Ee|NKEePQCUWL2S HKUWHKUW

obj_file
IHKJL
EdCGEGP.LJNKHKUWJ)!RT@CN

link_symbol
E[2pUWPQL2HKCUHKUL
ENKS UW@pS @E[J)C@pt<PQE[PQCVE!l

E}V @UWS RT
HKPQS NKNKDNKC@SVS @NKECGEOPQL2IS UWV

HKP

HKJeL

EJ)S RTESJeL

EUWS RTEC%L

langname

RTS @En

sql

Ctr

internal

P.t<E.S LEOVnt<CP.EGVpt
SNINKS UW@pS!E@lsgIEOE

~

EOt<E

HKJL

EYUWSRTEC@S

plname Mlname
2CtVEGL2S HKNKJ l

e

Outputs
CREATE


HKJHKJ_t<EGL2ptAUWEOVHKWL

EP.CRTRTS UWVPQCRTNKEOL2EGJ_J)pPQPQEOJ)Js2pNKNKIl

Description

X[Z[\]_^\@MDX[
^ADS NKNKC~DJ[SMCJsL@
tAEGJpJsEGt_L2CDt<EO
@HKJsLEOt_SdpUWPQLHKC@UT~DHKL
gp@J)EOo@pEOUWL2NKQL

Notes
eEGEGtLCL

HKJ_pJsEGtHKJ_L2t<EOSGL2EGVS JL

E}P

EC~DUWEOtC@WL

SrVSL2S @SGJ)E!l

E2pUWPQL2HKCUl

S L2
EGtHKUnL

2pUWP.LHKC@UWJe2C@t2pt
L

E}

4 : W; ?<!d

;4W;AQM

? ; :

[1!=5 ?

C@UnEOFILEOUWVHKUWDCJ)L2@t<EOJq!HKS

EOt HKUW2C@tARTS LHKC@UC@UD~DtAHKL2HKUWEOFILEOtAUWS N2pUWPQL2HKCUWJ l

MJ)E`DZ[D@MDX^eADLCVt<CpJsEGt<VEO|UWEOVn2pUWPQL2HKCUWJl

C@J)L!t<EOJS NKNKC~DJ2pUWPQLHKC@UMCqbEGt
NKCS V HKUW@QL
VHKEOt<EGUWL pUWPQLHKC@UWJJ)CdNKC@UWrS JL

pJsEGVn~DHKL
~DC
L2HKRTE@l

PQS pL2HKCUD2C@t

internal

2pUWPQLHK C@UWJPQS UWUWC@


L

internal
Cd!EGL@St<C@pUWVL

L2@EOJeS JeS tALWC%L

EO

SL2.!HKq!EL

EUWS RTEOJ)2 L

S LIHKJs.L

EJ)S RTEUWS RTE_P.SUM


 @E_pJ)EOV2CtJ)EOq!EOt
SN

S q!EVHKJsLHKUWPQL!St<!pRTEOUWLL! %EOJ l

SUWVn2NKS UW@pS @E[2pUWP.LHKC@UbJs

SqbEL

EJ)S RTEUWS RTE~HKL

HKJ2S PQHKNKHKL2dRTpJ)L@@E

C~DEOq!EOt
l
CpLbPQS pJ)HKUWd EOtAt<C@tAJ S LNKHKUW

EGRVHK2EOt<E.UWL UWSRTEOJ22C@t%EOF S RTNKEO.pJ)EL


EGUnJ)EOPQHK2L

C@J)EUWS RTEGJ_HKUL

ES t<!pRTEGUWL

gMPQNKS pJ)ECX[Z\]_^e\


!dDX[^AD
lGuL
UWS RTECWL

EpUWPQLHKC@UHKJ_L

EJ)S RTES JL

EOUC@q!EOtANKC
S VHKUWghMi2pUWPQL2HKCUWJ[~DHKL
HKUWJ)L2 S UWPQEC@L
HKUnL

EOUX[Z[\]_^\@MDX[^ADS J)J)pRTEOJ[L

EghMinUWS RTE@l

E}X[Z[\]_^\T @dDX[^eADJ)!UWLS FMLCEOUWJ)pt<EL

2NKS UW!pS @E}2pUWPQLHKC@UWJ)@@HKq!EdEOSP

E2pUWP.LHKC@UrS[VHKJsLHKUWPQLUWS RTEOS UWVpJ)E


L

S t<Et<EOJ)CNKq!EOVnL2CrL

gPQNKS p
JsEHKJNKEO2LEORT
LL

2NKS UW@pS!E

ES NKLEOtAUWS LHKqbE_2Ct


RC@@L

E]MfPQNKS pJ)E

SL%C@q!EOtANKCS VEOVgIhriY2pUWPQL2HKCUWJUWS RTEGJ

EPQCt
t<EGP.L!V@UWS RTHKPQS NKNKNKHKUb!EOVCGEOPQL2J l

pUWPQLHKC@UPQS UWUWCLWt<EOLptAUSJ)EOLbC@Wq!S NKpEOJ l

Usage

CrP.t<EGSOLESJ)HKRTNKEgIhri2pUWPQL2HKCU

CREATE FUNCTION one() RETURNS int4


AS SELECT 1 AS RESULT
LANGUAGE sql;
SELECT one() AS answer;
answer
---1

HKJEGFIS
RT
%NKEDPQt<EOS LEOJdSY2pUWPQL2HKCU@PQS NKNKHKUW
SntACpL2HUWE2tACR{SpJ) EOt<2P)t<EOS LEOV
J

NKHK@t
St
Il
VHK@HKLIHKUdL

HKJ_%S t
LHKPQpNKS tutACpLHKUWE[PQS NKPQpNKS L2EGJSP

EGP.rVHK@HKLWS UWVnt<EGL2ptAUWJ

MmDHK%L

E[P

S t<EOV
EOPQ

Ee2pUWPQL2HKCUMS tAS RTEOLEOtJuHKJuPQC@tAt<EOPQL>l2LIHKJuHKUWL2EGUWVEOVr2C@tWpJ)EeHKUrSeDmaPQC@UWLtAS HKUWL>l

CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS bool


AS /usr1/proj/bray/sql/funcs.so LANGUAGE c;
CREATE TABLE product (
id
char(8) PRIMARY KEY,
eanprefix char(8) CHECK (eanprefix ~ [0-9]{2}-[0-9]{5})
REFERENCES brandname(ean_prefix),
eancode
char(6) CHECK (eancode ~ [0-9]{6}),
CONSTRAINT ean
CHECK (ean_checkdigit(eanprefix, eancode))
);


HKJEOFS RTNKEPQt<EOS LEJ


Sd2pUWPQL2HKCUYL

L2@EMPQCRTNKEOF@S UWVaL

SL%VCEOJL2@


E}PQC@UWq!EOtAJ)HKC@UY@EGL2~DEOEGUL

EM HKUWLEOt
UWSN%L2@EMCHKUWL>l

RTHKPQS NKNKYNKCS VEOVC@GEOPQLL

S L~DS J[PQC@RT%
HKNKEOV2tACRJ)C ptAPQE!l!
Ct[C@ J)L!t<EOJ[LCY|UWVSL2@
E

PQC@UWq!EOtAJ)HKC@UD2pUWPQL2HKCUS pL2CRTS LHKP.SNKNK.L

E[J)o!N2pUWP.L
HKC@
U

t<EOL2ptAU L!EGS UWVCq!EOt


NKCS V HKUWaHKJrpUbS qbCHKVS @
NKE@l
pJsHKUbL

EpJ)EOtVEO|UWEOV

EdpUWPQLHKC@UHKJHKRTNKEORTEOUWLEOV@nSV@UWS

E[JsEGP.CUWV2C@tARC@WL

E]MfPQNKS pJ)E[HKUDL

S JLC

SqbEL

E[J)S RTEUWS RTE[S JL

En2pUWP.LHKCUUWSRTEHKJCq!EOtANKC@S VEOV@

EghMinVEG|UWHKLHKC@U

CREATE FUNCTION point(complex) RETURNS point


AS /home/bernie/pgsql/lib/complex.so, complex_to_point
LANGUAGE c;


E[VEGP.SNKSOtAS LHKC@UDC%L

E2pUWP.LHKC@UDHKJ

Point * complex_to_point (Complex *z)


{

6 6

Point *p;
p = (Point *) palloc(sizeof(Point));
p->x = z->x;
p->y = z->y;
return p;
}

Compatibility
SQL92
X[Z[\]_^\n!dDX[^ADHKJeSCJsL@tAEGJ_NKS UW@pS @E[EOFL2EGUWJsHKCUl

SQL/PSM
Nota: PSM stands for Persistent Stored Modules. It is a procedural language and it was
originally hoped that PSM would be ratified as an official standard by late 1996. As of
mid-1998, this has not yet happened, but it is hoped that PSM will eventually become a
standard.

ghMiIgX[Z[\]_^\n@MDX[^AD

S J_L

E2C@NKNKC~DHKUWJ)@UWL2S F%

CREATE FUNCTION name


( [ [ IN | OUT | INOUT ] type [, ...] ] )
RETURNS rtype
LANGUAGE langname
ESPECIFIC routine
SQL-statement

CREATE GROUP
Nombre
CREATE GROUP
y

t<EOS[pU@t<pCUWpEGqbC

Synopsis
CREATE GROUP name
[ WITH
[ SYSID gid ]
[ USER username [, ...] ] ]

Entradas
name
mNUWC@RT@t<EVEON@t<pCul

gid
iSnPQNKS pJ)pNKS

SYSID

pEOVEJ)EOt}pJ)S VSnS tASnEGNKEO!HKt}EONUWpRTEGtACHKVVEGN!t<pCaCJ)L2

!t<EOg hMiVEON@t<pCUWpEOq!Cul)mNpJsCVE[EOJ)LSPQNKS pJspNKS}EGJeCPQHKCUWS Nl


mUPQS J)CDVEUWCDEGJsEGP.H|PQS teEGNbUWpRTEOt<CDHKVVEGNb@t<pC@JsES J)HK!UWSt
SdEON!UWpRTEGt<CRTS!Ct
!SSJsHK@UWS VCrRTS JpUWC@EORTEG SOUWVCC@t Wl

username
dUWSNKHKJ)L2SVEdNKC@JpJ)pS tAHKCJ}SHKUWPQNKpHKt[EOUEGN@t<pC liCJpJ)pS tAHKC@JL2HKEGUWEOUo!pEEOFHKJsLHKt
S UWL2EGJeVEHKUWPQNKpHt
NKCJEOUDEGN@@t<pC l

Salidas
CREATE GROUP
EGUWJsS>Eo@pE[JsEGt
SVEOq!pEGNKL2CMJ)HKEORTt<E[o!pENKS}Ct<VEOULEOtARTHKUWS}PQC@UDEOFHKL2Cul

Descripcion

m

mrdEOtARTHKL2EPQtAEGSOtupU@t<pCdUWpEOq!CMEGUNKS@S JsEVEVS LC@J l


C@UWJ)pNKLENKS!pHKS

VEONS VRTHKUWHKJ)Lt
SVC@t%S t
S}HKUW2CtARTS PQHKC@UWEOJJsC@t<EEON!pJ)CVE@t<pC@JS tAS}t<pEG@SdVE}SpL2EOUW
L2HKPQHKVS V_l
mJ)L2SCt<VEOUDJ)C@NKSRTEOUWLEC@VtASJ)EOt E
EOPQpL2SVSCtpUDpJ)pSt
HKCrS VRTHKUWHKJ)L2tAS LHKqbCul
MJ)EM

@2%r[

x%S t
SPQS RT@HKS tNKS%EOtAL2EOUWEGUWP.HKSVEpU!t<pCMM

S tAS@Ct
tAS t pUD!t<pCul

Uso
t<E.S tpUD@t<p%Cq!S PQHKC

CREATE GROUP staff

t<E.S tpUD@t<p%CPQC@UDRTHKEORY!t<CJ

CREATE GROUP marketing WITH USER jonathan, david

Compatibilidad
SQL92
mUYNKS JEGJsEGPQHK|PQS PQHKCUWEOJ[VEdgIhMij kdUWCnEOFHKJ)L2ENKSrHKUWJ)L2t<pPQPQHKCbUTX[Z[\]_^e\aDZ[Dd_l.mN%P.CUW
PQEOL2CMVENKC@JCNKEOJEOJJ)HKRTHKNKS tS NP.CUWPQEOLCVE!t<pCJl

CREATE INDEX
Nombre
CREATE INDEX
y

CUWJ)L2t<pHKtpUDKUbVHKP.EJ)EGP.pUWVSt
HKCul

Synopsis
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
[ USING nombre_acceso ] ( columna [ nombre_operador] [, ...] )
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
[ USING nombre_acceso ] ( nombre_funcion( r">columnale> [, ... ]) nombre_operador )

Entradas
MBhMMm
t<C@C@PQS_o!pEeEGNJ)HKJ)L2EGRTSP.CRTt<pEO@EeJ)HOEOFHKJsLEOUdq!S NKC@t<EGJuVpNKHKPQS VCJEOUMNKS_L2S@NKSP.pS UW
VCJsEDP.t<EOSDEONUWVHKPQE2J)H!SnEOFIHKJ)LEOUVS LC@J)_aPQS VSq!EOo!pEnJ)EDSWS VEOUVSL2CJ liC@J
HKUWL2EOUWLCJVE[HKUWJ)EOtALS tCrS PQL2pS NKHKS tuVS L2CJeVpNKHKPQS VCJe@EOUWEOtAS tA UpUDEOtAt<C@t
l

nombre_indice
mNUWC@RT@t<EVEONUWVHKPQE[o!pEJ)E[VEG!EP.t<EGS t<l

tabla
mNUWC@RT@t<EVE[NKSL2S @NKS%S t
SNKSo!pEJ)Eo!pHKEOt<E[PQt<EOS tupUDKUWVHKP.E@l

nombre_acceso
mNuUWCRT@t<EVEONRTOL2CVCTVErSP.PQEOJ)Cno!pEJsEpLHKNKHK S tAS tASEONKUWVHKPQE!lOmNRTOLC@VCYVE
S PQP.EGJsCDVEVEO2EOPQLCEGJ

mmlCJ)L2@t<EOJ[t<C@Ct<PQHKC@UWSLt<EOJRTOLC@VC@J[VEMSP.PQEOJ)CDS tAS

KUWVHKPQEOJJ)EOPQpUWVS tAHKC@J l

emm
pUWS}HKRTNEORTEOUWLS PQHK@UVE[NKCJ_@Lt<EOEOJVE[SNKL2SPQCUWP.ptAt<EOUWPQHKSVEiE

RTS UW2bS Cul

emm
2RTNKEORTEGUWL2S}tAL2t<EOE.JeEOJ)L2 UWVS tupLHKNKHK S UWVCEONS NK@Ct
HKLRTCVES tAL2HKPQHKUPQpS VtAGL2HKPQS
VE[pL2LRTS Ul

gI
dUWS}HKRTNKEORTEGUWL2S PQHKUDVE[NKS JeVHKJ)EOtAJsHKCUWEOJeNKHKUWEOS NKEGJ_VEiHKL2~DHKUl

columna
mNUWC@RT@t<EVE[pUWS}PQCNKpRTUWS}VE[NKS}LS @NKSWl

nombre_operador
MUWSPQNKS J)EVEC@EGt
S VCt<E.J_S J)CP.HKSVSWl>EOS[RT J_S!S>CrS tASC@L2EOUWEGtRT JeVEOLS NKNKEOJ l

nombre_funcin
MUWSr2pUWPQHKUVEO|UWHKVSCtEGN%pJspS tAHKC@o!pEMVEGqbpEONKq!EMpUTq!S NKCto!pErpEOVEJsEGtHKUW
VEOFSOVCul

Salidas
CREATE

mNRTEOUWJ)S)E[VEOq!pEONKL2CrJ)H@EGNKUWVHKPQEJ)E

S}PQt<EOS VWCPQCUnOFHKLC l

ERROR: Cannot create index: index_name already exists.


gEt<EOJ)EOUWL2SEOJ)L2EEGt
t<Ct J)HEOJeHKRTCJsHK@NKEPQt<EOSGtEONUWVHKPQE!l

Description
X[Z[\]_^\nAD`D\P.CUWJ)L2t<pWEpUDUWVHKPQE

nombre_indice

EOUDNKS

tabla

EGJs%EOPQHK|PQS VS@l

Sugerencia: Los ndices se utilizan principalmente para incrementar el rendimiento de


una base de datos. Sin embargo, un uso inapropiado de los ndices dar lugar a una
base de datos ms lenta.

mUNKS[t
HKRTEGt
SJ)HKUWL2S FHKJRTC@J)Lt
S VS[S UWLEOJ)ONKCJP.SRTC@JPQNKS q!EOJSt
SEONIUWVHKPQEJ)EEGJ)EOPQHK|PQS U
PQC@RTCYUWCRT@t<EOJVErPQC@NKpRTUWS !pUWSPQC@NKpRTUWSpEGVErL2EGUWEOtLS RT@HKOUpUWSPQNKS J)ErVErCEOtAS
VCtAEGJrSJsCPQHKS VS@lMUWSPQNKS J)EVEDC@EGt
S VC@t<EOJMJ)EpLHKNKHK SYS tASnEOJ)EGP.HK|PQS t}NKC@JrC@%EOtAS VC@t<EGJ
o!pEJ)EpL2HKNKHK S tA UrS tAS[pUUWVHKPQESt
LHKPQpNKSt>l<C@tuEAEORYNKC@pUUWVHKPQE@Lt<EOEJsC@t<EEGUWL2EOt<CJ
VEdPQpS Lt<C@ @@L2EGJVEO@EOtAKSdpL2HKNKHKS tNKSMPQNKS J)E

@EOJ)LSP.NKSJsEVEMCEOtAS VCt<EJ[HKUWPQNKp@E

int4_ops

2pUWP.HKCUWEOJVErPQC@RTSt
S PQHKUS tASEGUWL2EGtACJVErPQpS L2t<C @!LEOJ lGiSPQNKS J)ErVErCEOtAS VCt<EOJ[VE
VEO2E.P.LCEGJ_NKS}S %tACHKSGVSS tASEOJ)E[LHKCrVEVS LC@J l
mUNKSJ)EO!pUWVSJ)HKUWLS FIHKJRTC@J)Lt
S VSS UWL2EGJs!J)EVEO|UWKSpUKUWVHKP.ErPQCRTCYt<EOJ)pNKL2S VCVErpUWS
2pUWP.HKUVEG|UWHKVSCtuEONpJ)pS tAHKC
pUWSrUWHKPQSrPQNKS J)E!lQmJ)L2CJ

S NKHKPQS VSS[pUWCdCdRT JS Lt


HK@pLC@JVE

nombre_funcion
pEOVEOUpLHKNKHK S tAJsES tASMPQCUWJ)EO@pHKtpUYS PQPQEOJ)C

5!><IQ@@>Q@.5A

t
HKVCTSnVSL2CJ@S J)S VCJdEOUCEOtAS VCt<EJMo!pEUWC@tARTS NKRTEOUWLEt<EOo@pEGt
HKtAKSGUS NK@ULHKCVE
L2tAS UWJ)2C@tARTS PQHKUS tASS NKHKPQS tANKC@JSNKS}@S J)E[VE[VS LC@J l

C@J)L!t<EOJt<CCtAPQHKCUWSRTOLCVC@JVES PQP.EGJsC@Lt<EOEOt
Lt<EOE

SJ

St
SNKC@JUWVHKPQEOJJ)EOPQpUWVS

t
HKCJ lOmNRTOL2CV
CYVErS PQP.EGJsCn@L2t<EOEdEOJ}pUWSHKRTNKEGRTEOUWL2SP.HKUVErNKC@J@L2t<EOEGJVErS NKL2SPQCUWPQp
t
t<E.UWPQHKSVEMiE

RTS UW2bS CulmN%RTGL2CVCVES PQPQEOJ)CntAL2t<EOE}HKRTNKEGRTEOUW L2SEG


NWS NK@C@tAHKL2RYCVEMStA

L2HKPQHKUPQpS VtAOLHKPQSdEGJsL UWVStVEpL2LRTS Ul.mN!RTGL2CVCVES PQPQEOJ)C

S J

EOJ_pUWSMHKRTNKEGRTEOUW

L2SP.HKUVENKS JeVHKJsEGt
J)HKCUWEOJeNKHKUWEOS NKEOJVEiHKL2~DHKUl>EOUWPQHKCUWS RTCJ_NKCJ_S NK@Ct
HKLRTCJ_pLHKNKHK S VCJ
J)@NKS RTEGUWL2ES tASHKUWVHKPQS to!pEL2CVCJEOJ)LC@J_RTOL2CVCJVES PQPQEOJ)CJ)CUPQCRTNKEOLS RTEOUWLE}VHKUW
RTHKPQC@J) UWCrUWEOPQEOJ)HKLS UDJsEGtCL2HK RYHK
S VCJe%EOt
HKVHKPQS RTEOUWLE[2PQC@RTCrEOJeEONPQS J)C@%C@tE
EORTNKC
VE[NKCJ_RTGL2CVCJVE[S PQPQEOJ)CMVE

S J

EOJ)L2 LHKPQC@>l

Notas
mNC@LHKRTHK S VCtVE_PQC@UWJ)pNKLS JVE_C@J)L!t<EOJ P.CUWJ)HKVEOtAS tAo@pEEOJ)LpJ)S UWVCKUWVHKPQEOJu!Lt<EOE_EOU
pUn@S tAtAHKVC@OJsHKEGRTt<Eo!pEpUS Lt
HK@pLCHKUWVEGFIS VCEOJ)L2HKUWq!CNKpP.tAS VCEOUDpUWSdPQCRTS tAS PQHK@U

  

o!pEpL2HKNKHKPQEpUWCrVE[NKCJJ)HK!pHKEGUWL2EOJ 

RT@S JePQNKS J)EOJeVEPQS)S}2@CFIbJ)C@%C@tAL2SUnUWVHKPQEOJEOUDEGN!LHKCVEVSL2CJ

!t<EGJliSDVHK2EOt<EUWPQHKSDEOUWLt<EEONKNKSJEOJo!pE

caja (box)

EOU C@J)L

EOJ)P.S NSDPQCC@t<VEGUWS VSOJdVEPQS)S

SP.HKS

bigbox_ops

C@LS UWLEo!pEJ)EpVHKEOJ)EOUDt<CVpP.HKt EOUDRTpNK

S @S
CI%S t
S[HKRTEOVHKtEOFP.EGPQHKC@UWEGJ_VEpUWL2C


C@LS UWLERTp@tAS UWVEOJ lIgIHEGN
   pUWHKVS VEGJ}PQpS VtASO

L2HKNKHKPQS PQHKCUWEOJ)J)pRTS JMt<EGJsLS JVEPQC@Ct<VEOUWS VSJMVEDpUWLC

PQS RTCYS NPQpS NJsEpUWEOUaJ)pJt<EOPQL2GUW!pNKCJdEOJ}VESNKt<EVEGVC@tVEk Wl


VS JCRTS @Ct2%VEO@EOtAKSDpJ)L2EOVpL2HKNKHKS t
J)C@CtAL2SUWVHKPQEOJ_tALtAEGEEOUDVSL2CJ

bigbox_ops
l
poligonales

lIiSDPQNKS J)EDVEC@%EOt
SVC@t<E.J

poly_ops

mN CLHKRTHK S VCtVEDPQCUWJ)pNKLS JdVEC@J)L!t<EOJdPQCUWJ)HKVEOtAS t


o!pEEOJ)L2DpL2HKNKHKS UWVCpUHKUWVHKPQE
t
Lt<EEDJ)HKEORTt<EDo@pEpUS Lt
HK@pLCaHKUWVEGFIS VCTEOJ)L2HKUWq!CNKpP.tAS VCEOUpUWSPQC@RTSt
S PQHKUo!pE



pL2HKNKHKPQEpUWCVE[NKC@J_J)HK!pHKEOUWLEOJ

mN C
LHKRTHK S VCtVEDPQCUWJ)pNKLS JdVEC@J)L!t<EOJdPQCUWJ)HKVEOtAS t
o!pEEOJ)L2pL2HKNKHK SUWVCTpUKUWVHKPQE
S J

J)HKEORT%tAEo@pEpUaS L2tAHK@pL2CVEONKUWVHKPQEEOJ)L2HKUWq!CNKpP.tAS VCYEGUapUWSDPQC@RTSt


S PQHKUao@pE

pL2HKNKHKPQEEONCEOtAS VCt

PQLpS NKRTEOUWLEO JsNKC EONeRTOL2CVCVES PQPQEOJ)C

PQNKS q!EOJ l

pEOVEGUEOJ)EOPQHK|PQS t
MLHKNKHKPQE[

emm

J)C@%C@tAL2SKUWVHKPQEGJRTpNKL2HK2PQC@NKpRTUWSblWgIE

S J)LS



iS}PQNKS J)EVEC@EGt
S VCt<E.J

S tASEONKHKRTHKUWS tpUUWVHKPQE!l

int24_ops

J)EpEOVEpLHKNKHK S t%S t
S}PQCUWJ)L2t<pHKteKUWVHKPQEGJJ)C@@t<EVS



L2CJ}HKUWLk !Tt<EOS NKHKSOt[PQCRTS tAS PQHKC@UWEGJ}PQC@UWLtASVS L2CJ}HKUWL EOUPQpS NKHK|PQS PQHKCUWEOJ}VErP.CUWJ)pNKL2S J l


gHRTHKNKS t
RTEGUWL2EG

int42_ops



J)C@CtAL2SKUWVHKPQEOJuJsC@t<EVS L2CJ HKUWL [o@pEVEG!EGUrJ)EOt%P.CRTS tAS VCJ

PQC@UDVS LC@JHKUWLk}EOUDNKS JeP.CUWJ)pNKL2S J l


iSJ)HK!pHKEGUWL2ENKHKJ)LS}JsEGNKEOPQLbVEGqbpEGNKqbEL2CVC@J_NKC@JeUWCRT!t<EGJ_VEC@EGt
S VC@tG

SELECT am.amname AS acc_name,


opc.opcname AS ops_name,
opr.oprname AS ops_comp
FROM pg_am am, pg_amop amop,
pg_opclass opc, pg_operator opr
WHERE amop.amopid = am.oid AND
amop.amopclaid = opc.oid AND
amop.amopopr = opr.oid
ORDER BY acc_name, ops_name, ops_comp

Usage
S t
S[PQtAEGS tupUDKUWVHKPQEEOUDEONPQS RTC



ttulo

EOUDNKSLS @NKS

pelculas

CREATE UNIQUE INDEX ndice_ttulo


ON pelculas (ttulo);

Compatibilidad.
SQL92

m

mDB

BDC

aEOJepUWS}EGFILEOUWJ)HKUVEGNNKEOUW!pS>EVEC@J)L2@t<EOJ l
m
z

SpUDPQC@RTSUWVCX[Z[\]_^\nAD`D\EOUDghMij kbl

CREATE LANGUAGE
Nombre
CREATE LANGUAGE

y{z

EO|UWEpUUWpEGqbCrNKEOUW@pS)ES tAS2pUWPQHKCUWEOJ

Synopsis
CREATE [ TRUSTED ] PROCEDURAL LANGUAGE langname
HANDLER call_handler
LANCOMPILER comment

Entradas

edg

m
z

TRUSTED

EOJ)EOPQHK|PQSo!pEEONRTS UWHK%pNKS VC@tS tASEONNKEOUW@pS)EnEOJrJ)EO!pt<CEOJrVEOPQHKt

o!pEUWCC@2t<EOPQE[SpUpJspSt
HKCUWCt
HKq!HKNKEO@HKS VCUWpEOq!S J_2pUWPQHKC@UWSNKHKVS VEOJeJ)C@@t<EOSJsSUW
VCDNKS Jt<EOJ)L2tAHKPQP.HKCUWEOJVE}S PQPQEOJ)CulgIHbEOJ)L2SMS NKS @tASEOJCRTHKL2HKVSMEOUWL2CUWPQEOJ[S Nbt<EG!HKJ)Lt
S teEGN
NKEOUW@pS>EGJ)@NKCpJ)pSt
HKCJ[P.CUTtAHKq!HKNKEO!HKCVEJspEGt<pJspS tAHKCDC@J)L!t<EOJ[CVtA UYpL2HKNKHKS t
EOJ)L2E[NKEGUW!pS)ESt
SPQt<E.S t UWpEGqbSJ_2pUWPQHKC@UWEGJ_2PQC@RTCEONNKEOUW@pS)E5)l

langname
mNeUWCRT!t<EVEGNeUWpEGqbCNKEGUW!pS)Et<CP.EGVHKRTEOUWLS NlBDCJ)EVHK2EOt<EOUWPQHKS URTS @JsPQpNKS J
VERTHKUWJsPQpNKS JEOUnEON!UWC@RT@t<E}VEONbNKEGUW!pS>E!lQMUnNKEOUW@pS)Edt<CP.EGVHKRTEOUWLS N!UWCDpEGVE

tAEGV%EG|UWHKtpUWCVE[NKCJNKEGUW!pS)EOJeHKUWPQC@tACt
S VC@JeVE[CJsL!t<EGJl)CJsL@tAEGJl

B
z

im

call_handler

call_handler

EGJ[EONWUWCRT@tAEdVEdpUWSMpUWPQHKCUt<EOq!HKSORTEOUWLEMt<EO@HKJ)L2tAS VSdo!pEMJ)EOtA

NKNKS RTS VS[S t


SE
EOPQpL2S t NKCJ_t<CP.EGVHKRTHKEOUWLC@Jeil



comment
mNS t<@pRTEOUWL2C

LANCOMPILER

EOJNKSPQS VEGUWS[o!pEJsEGt
[HKUWJsEGt
LS VCSEOUEONIS Lt
HK@pLC

VENKSUWpEOq!SEGUWL2tAS VS

COMPILER
EOJ)L2E[SL2tAHK@pL2CrS tASUWHKUW@U|Ul

pg_language

LAN-

PQLpS NKRTEOUWLECJ)L2@t<EOJUWCTpLHKNKHK S

Salidas
CREATE
mJsLERTEOUWJ)S @EEOJVEOq!pEONKLCJ)HEONNKEOUW@pS)EEOJPQtAEGS V%CP.CUDOFHKL2Cul

ERROR: PL handler function funcname() doesnt exist


mJsLEEOtAt<C@t EOJVEGqbpEONKLCJ)HNKS2pUWPQHK@U

Descripcin
MLHKNKHK S UWVCaX[Z[\]_^\

2bUWCEOJEOUWPQCUWL2tAS VSWl

funcname

]MDDd]MD\%pUpJ)pS tAHKCC@J)L!t<EOJrpEOVEnt<EG!HKJ)L2tAS t}pUUWpEGqbC

NKEOUW@pS)EdEOUTCJsL@tAEGJl

PQCUWL2HKUWpS PQHKUW!NKS J2pUWP.HKCUWEOJ%tACPQEOVWHKRTHKEOUWL2CJL2tAHK!@EOtAepEO

VEOUnJsEGteVEO|UWHKVCJEOUEGJsLEUbpEGqbCDNKEGUW!pS)E!lQmNbpJ)pS tAHKCDVEO@EL2EGUWEOtetAHKqbHKNKEG!HKCJ[VEJspEG
t<pJspS tAHKCrCJ)L2@t<EOJS tASt<EO@HKJsLtAS tupUUWpEOq!CNKEGUW!pS)E!l

Escritura de manipuladores PL
mNWRTS UWHK%pNKSVC@t_VENKNKS RTS VSJS tASMpUTNKEOUb!pS)Ed%tACPQEOVHKRTEOUWLS NWVEO@EJ)EOtEOJ)PQtAHKL2CDEOUTpU
NKEOUW@pS)EPQCRTHKNKS VCTPQC@RTC5at<EG!HKJ)L2tAS VWCEOUCJ)L2@tAEGJdP.CRTCpUWS2pUWPQHKUJ)HKUS t<@p
RTEOUWLC@JVEOq!C@NKq!HKEOUWVCTEGN LHKCTC@So!pEO%pUaPQC@UWLEOUWEOVCtS tASLHKC@JdUWCTVEG|UWHKVC@JCTEGJs
EOPQHK|P.SVC@J lllOmJ)LCTEOq!HKL2So!pEEON RTSUWHKpNKS VCt[VENKNKS RTS VSJ}J)EOSNKNKS RTS VCVHKt<EOPQL2S RTEGUWL2E
PQC@RTCrpUWS}pUWPQHKUVEOJ)VE[PQC@UWJ)pNKLS J l
gHUrEORT@StA@CNKCJS t<!pRTEGUWL2CJ VEG@EOUJ)EOt%JspRTHKUWHKJQL2tAS VCJ EOUrNKSNKNKS RTS VSPQpS UWVCpUWSpUW
PQHKC@UTiaCt<C@PQEOVHKRTHKEOUWL2CL2tAHK@!EGtEGUTEON%NKEOUW@pS)EMC@2t<EOP>HKVCCt_EON%RTS UWHKpNKS VC@tJ)EOSrEAEG
PQpLS VCul

pS UWVCEOJuNKNKS RTS VCC@tEGN @EOJ)L2CtVE_Lt


HK@!EGt
J)EON UWHKPQ CdS t<@pRTEOUWL2CEOJEON
LC@RTSVS}VENKS}EOUWL2tAS VS}VE}%tACPQEOVWHKRTHKEOUWL2C!J

pg_proc

VEONC@GEOLC
z
CVSNKSdVEG RT JHKUW2Ct
RTSP.HKUVEON

@EOJ)L2CtVE[L2tAHK@!EGt
JeEOJEOUWPQC@UWLtAS VSEOUDEONpUWLEOt<CM!NKC@S NptAt<EOUWL

t
HK@@EOt
z

SL2Sl

pSUWVCaEGJrNKNKSRTS VCVEOJ)VEDEGN!EOJ)LC@t}VEpUWPQHKCUWEOJ)uNKC@JMS t<@pRTEOUWL2CJMJ)C@UEON


CGEGL2CDVENKSrEOUWLt
SVS

pg_proc

VEON
z
VEGNbt<CP.EGVHKRTHKEOUWLC@EONWUWRTEOt<CDVES t<!pRTEOUWLCJ[EGUWL2t<EO

@S VCJSNKS2pUWPQHKC@UiGNKC@JeS t<!pRTEGUWL2CJEOUpUWSEGJsLt<pP.Lpt
S[!RT@tA SNKpEOJpUpUWLEOt<C
S[pU@CC@NKEGS UWCVCUWVE[NS2pUWPQHKUHKUW2CtARTSJ)H@EGNqbSNKC@t VE[t<EOLC@tAUWCMEOJeEONq!S NKC@t BDdiiVE
gIhMil

mJt<EOJ)CUWJ)S @HKNKHKVS VYVEON@RTS UWHKpNKS VCteVENKNKS RTSVS JC@L2EGUWEOteNKSEOUWLt


S VS

"

DSUWS
gVEON

X[Z[\]_^\!dDX[^e<D

VErNKS

L2S!NKS

pg_proc

NKHK S t EONS t<@pRYEOUWL2CL2HK%C@J_VEt<EOL2CtAUWCVEONt<CP.EGVHKRTHKEOUWLCNKNKS RTSVC l)iS}PQNK pJ)pNKS

pg_proc

VEGNut<CPQEOV%HKRTHKEGUWL2CTEGJsLS tA@S J)S VSEOUEONS Lt


HK@pLC

prosrc

lmJ)L2CpEOVEJ)EOt%EONOL2EOFLC}2pEOUWL2EeEGUrEGN NKEOUW@pS)E_t<C@PQEOVHKRTEOUWL2SNGRTHKJsRTC2PQC


RTCEO
Uni
o!pE

PQNKpUWSdt<pLSSMpUn|P

EOt<CCPQpS NKo!pHKEGtC@LtASMPQCJsSo!pENKEHKUWVHKo!pEdSN

S UWVNKEOt

S PQEOt EOUVEGL2S NKNKE@l

Notas
MLHKNKHKPQEX[Z[\]_^\n@MDX[^AD

S t
SP.t<E.S t pUWS}2pUWPQHKUl

#]dDDM]dD\DS tASEONKHKRTHKUWStNKEOUW@pS)EOJeVE[t<CP.EGVHKRTHKEOUWLC l

MLHKNKHKPQE`DZ[D

eEGRTKL2SJsESNKS}L2S@NKS

pg_language

S tASRY J_HKUW2Ct
RTSP.HKU

Table
= pg_language
+-----------------+-----------------+-----+
|
Field
|
Type
+-----------------+-----------------+-----+
| lanname
| name
| lancompiler
| text
+-----------------+-----------------+-----+

| Length|
|
|

32 |
var |

lanname |lancompiler
-----+--------internal|n/a
lisp
|/usr/ucb/liszt
C
|/bin/cc
sql
|postgres

bSo!pEEON RTS UWHK%pNKS VC@t2P.S NKN

S UWVNKEGt
S tASpUNKEOUW@pS)EVEtACPQEOVHKRTHKEGUWL2CJ}VEO@EJ)EOt

t<EO@HKJsLt
SGVCdEOUCJ)L2@t<EOJEOUEGNINKEOUW@pS)E

EOt<EOVSL2CVS JNKS JPQS %SOPQHKVS VEGJMtAEGJsLtAHKP.PQHKCUWEOJ

VE[NKS J2pUWPQHKC@UWEGJVE[5l
PQLpS NKRTEOUWLEOQNKS J VEG|UWHKPQHKCUWEOJSt
SpUrNKEOUW!pS>EVEet<CPQEOVHKRTHKEOUWLC@J UWCpEOVEOUMJ)EOtRTC
VHK|P.SVSOJepUWS}q!EOo!pE

S UDJ)HKVCrP.t<EOSGVS J l

Uso
mJ)L2SEGJepUWS}NKSUWL2HKNKNKS}St
S[pURTSUWHKpNKS VCtEOUD

#include
#include
#include
#include
#include
#include
#include
#include

"executor/spi.h"
"commands/trigger.h"
"utils/elog.h"
"fmgr.h"
/* for FmgrValues struct */
"access/heapam.h"
"utils/syscache.h"
"catalog/pg_proc.h"
"catalog/pg_type.h"

Datum
plsample_call_handler(
Oid
prooid,
int
pronargs,
FmgrValues
*proargs,
bool
*isNull)
{
Datum
retval;
TriggerData
*trigdata;

if (CurrentTriggerData == NULL) {
/*
* Llamado como una funcin
*/
retval = ...
} else {
/*
* Llamado como un procedimiento "trigger"
*/
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
retval = ...
}
*isNull = false;
return retval;
}

gCNKS RTEGUWL2EMpUWCJ}CPQC@JRTHKNKEOJVErNKKUWEGS J[VErPQ@VHK@CLHKEOUWEOUo!pErJ)EOtS WS VHKVSGJEGUqbEGVE


NKC@J_pUWL2CJSt
S}PQCRTNKEOLS tEGN!iYPQS NKN

S UWVNKEOtEOS}X[Z[\]_^\Y!dDX[^e<DSt
S}HKUW2Ct<

RTS PQHK@UDJ)C!t<EP.CRTCPQCRTHKNKS tANKCEOUDpUDRT@VpNKCPQS t<S @NKE!l


iCJuJ)HK!pHKEGUWL2EOJuPQC@RTS UWVC@JEOUWLC@UWPQEOJutAEG!HKJ)Lt
S UEGNONKEOUW!pIEeVEet<CPQEOVHKRTHKEOUWLCJuVERTpEOJ)L2tASW

CREATE FUNCTION plsample_call_handler () RETURNS opaque


AS /usr/local/pgsql/lib/plsample.so
LANGUAGE C;
CREATE PROCEDURAL LANGUAGE plsample
HANDLER plsample_call_handler
LANCOMPILER PL/Sample;

Compatibilidad
SQL92

$]MDDd]MD\EOJpUWSEOFL2EOUWJ)HKUVE_C@J)L!t<EOJ l<BDCEOFHKJ)L2EpUWS[J)EOUWLEOUWPQHKS[X[Z[\]%
&]MDDd]MD\EGUgIhMij k@l

X[Z[\]_^\
^e\

CREATE OPERATOR
Nombre
CREATE OPERATOR

y{z

EO|UWEpUUWpEGqbCrC@%EOt
SVC@t VEpJ)pS tAHKC

Synopsis
CREATE OPERATOR name ( PROCEDURE = func_name
[, LEFTARG = type1 ] [, RIGHTARG = type2 ]
[, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
[, RESTRICT = res_proc ] [, JOIN = join_proc ]
[, HASHES ] [, SORT1 = left_sort_op ] [, SORT2 = right_sort_op ] )

Entradas
name
mNC@EGt
S VC@t SVEO|UWHKt
l>[OSUWJsERTJ_S @SACNKC@JePQS tAS PQL2EOt<E.J_%EOt
RTHKLHKVCJ l

func_name
iS2pUWP.HKUpL2HKNKHK SVSS tASHKRTNKEGRTEOUWL2StEOJ)LE[CEOtAS VCt>l

type1
mNuLHKCTVErNKSS tAL2EdHK o!pHKEOt<VSVEGNuCEOtAS VCt@JsH
t<CP.EGVE!lOmJ)L2SCPQHK@UaVEO@EOtASJsEGt
C@RTHKLHKVS}S tASpUDCEOtAS VCtpUWS tAHKC%C@tNKSVEOt<EOP

type2

S@l

mNL2HKCY%S t
SMNKSS tAL2EdVEOt<EP

SVEGN%C@EGt
S VC@t@J)Ht<C@PQEOVE@lGmJ)L2SCPQHKUaVEG!EGt
SrJ)EOt

C@RTHKLHKVS}S tASpUDCEOtAS VCtpUWS tAHKC%C@tNKSHK o!pHKEOt<VSbl

com_op
mNP.CRTRTpL2SVC@tS tASEOJ)LEC@EGt
SVC@t
l

neg_op
mNUWEO!SVC@t S tASEOJ)LE[CEOtAS VCt>l

res_proc
iS2pUWP.HKUEOJ)L2HKRTS VC@tASVE[t<EGJsLt
HP.PQHKUJ)EGNKEOPQL2HKq!SS tASEGJsLECEOtAS VCt>l

join_proc

A<AA>A<AAA

E[C@HKUJ)EONKEGPQL2HKq!HKL2EGJsLHKRTS LC@t2pUWPQL2HKCU2Ct[L

HKJdC@EGt
S LCt>lOA<A>AA<AAA>iS

(')'*')')'

pUWPQHKUDEOJ)L2HKRTS VCtVE

gIDmg
UWVHKPQSo!pEEGJsLECEOtAS VCt J)CCt
LS}pUSNK!Ct
HKLRTC

S J

C@HKUW.l

left_sort_op
rEGt
SVC@t o!pECt<VEOUWSEONLHKCVEVS LCrVENKSS tAL2E[HKo!pHKEOt<VSVE[EOJ)L2E[CEOtAS VCt
l

right_sort_op
rEGt
SVC@t o!pECt<VEOUWSEONLHKCVEVS LCrVENKSS tAL2E[VEGt<EP

S}VE[EGJ)L2ECEOtAS VCt
l

Salidas
CREATE
EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN@CEOtAS VCt EOJeP.t<E.S VCrP.CUDOFHKL2Cul

Description
X[Z[\]_^\D\Z[]_^DZVEG|UWE_pUMUWpEOq!CC@EGt
S VC@t
t
SVC@tuJ)EPQC@UWq!HKEOtALEEOUDJ)pt<CHKEOLS tHKCul
mN CEOtAS VCt

name

name

lmN pJ)pS tAHKCo!pE_VEO|UWE_EONC@%EO

,+

EGJpUWSJ)EOPQpEOUWPQHKSDVE

S J)L2SDL2t<EOHKUWLSaVC@J kPQS tAS P)L2EGt<EOJPQC@UP.pSNK

o!pHKEOtASPQC@RT@HKUWSP.HKUVE[NKCJ)HK@pHKEOUWLE!

#./&10*

24365&87:9;'=<

b[

Nota: No se permite ningn caracter alfabtico en un nombre de operador. Esto permite a Postgres analizar la entrada SQL en elementos sin requerir espacion entre cada
elemento.

*0 EOJPQC@UWq!EOtALHKVCSM>uEOUNKSdEGUWL2tAS VS CteNKCo!pEJsCUYEOUnPQC@UWJ)EOPQpEOUWPQHKS

mN@C@EGt
S VC@te

EOo!pHKq!S NKEOUWLEOJ l

C@teNKCRTEGUWC@JpUWCVE}im

CD

VEO@EOUnJsEGtVEO|UWHKVCJ l.S tASC@EGt


S VC@t<EOJ

@HKUWS tAHKC@J)S RT@


CJ[VEO@EOtA S UTJ)EOt_VEO|UWHKVCJ lS t
SdCEOtAS VCtAEGJpUWS tAHKC@J[Ct_NKSrVEOt<EGP
NKS RTEOUW
LEMim
VEOt<E.P

SJ)C@

VEO@EGt
SJ)EOtVEO|UWHKVC@RTHKEOUWLt
SJo!pEdEOUC@EGt
SVC@t<E.J[pUbS t
HKCJC@tNKS

S}JsCNKS RTEOUWLEe2

SRT!HKGUWEGNWt<C@PQEOVHKRYHKEOUWL2C

eVEO@EOtAKSJsEGtVEG|UWHKVC l

func_name

VEO@E

S @EOt_J)HKVCDt<EOq!HKSORTEGUWL2EMVEO|UWHKVCpLHKNKHK

S UWVCX[Z[\]_^e\!dDX[^e<DVEO@EJ)EdVEG|UWHKVC%S t
SdS PQEOLSGtEGNbUWRTEOt<CDPQC@tAt<EOPQL2CVE
S t<pRTEOUWLC@J_@HKEGUpUWCrCVCJ))l
mNCEOtAS VCt}PQCRTRTpL2S VC@tVEO@EOtAKSDJ)EOt}HKVEOUWL2HK|PQS VCaJsHEGFIHKJ)LEpUWC@uSt
So!pEnC@J)L!t<EOJ
pVHKEOJ)ETHKUWqbEGt
LHKtDEONCt<VEOUxVENKC@JnC@%EOtAS UWVC@JJ)H[NKC

VEGJsEGSWlWCtDE
EORTNKCeEON[CEOtAS VCt

VEO@EGt
S}t<C@@S @NKEORTEGUWL2E}L2EGUWEOtepUCEOtAS VCtePQC@UWRTpLS VCteS t<EOSG

S t<E.S 2RTEOUWC@t<2o!pEG

?dl

RTS @C@t<2o!pE
RTEOUWLE!

"0,0,1,1"::box

ErEOJ)L2S2Ct
RTS@EONC@%L2HKRTHK S VC@tVErPQC@UWJ)pNKLS J%C@VtAKSrP.CUWq!EOtAL2HKtNKHK!t<EG

@(@(@

MYBOXES.description

MYBOXES.description A(A(A

"0,0,1,1"::box

mJ)L2CY%EOt
RTHL2ENKSE
EOPQpPQHK@UaVErPQ@VHK@CTS tASpL2HKNKHKSt[J)HKEORTt<ErNKSNKL2HKRTSt<EOt<E.J)EOUWL2SP.HKU
J)HKRTNKHK|PQS}S NK@CEGNC@LHKRTHK S VC@t
l

ED2Ct
RTSJsHKRTHKNKStJ)HEOFIHKJ)LEDpUCEOtAS VCtUWEO@S VCt}EGUWL2CUWPQEOJMVEO@EOtA SnJ)EOtHKVEOUWLHK|P.SVC l
z

;EOFIHKJ)LEOnL2SRT@HKOUYpUTCEOtAS VCteS t<EOSG


?0 _lQmNUWEG!SVC@tEOtARTHKL2ES NC@LHKRTHK S VCt JsHKRT%HK|PQS t

gp%C@UW@S RTCJo@pEpUTCEOtAS VC@tIS t<EOSG2HK!pS NK


UWC@2HK@pS NK

NOT MYBOXES.description === "0,0,1,1"::box


S

MYBOXES.description !== "0,0,1,1"::box

gHEGNUWCRT@t<EVErpUaCEOtAS VCtP.CRTRTpLS VC@tEOJ}J)pRTHKUWHKJ)L2tAS VCbCJ)L2@t<EOJNKCY@pJsPQSEOUEON


PQS L2GNKC@@CulGgHbEOJEOUWPQCUWL2tAS VCDEdUWCDLHKEOUWES UYpUTPQC@RTRTpLS VCtGNWRTHKJ)RTC@@EGUWL2CUWPQEOJ[NKSMEGUW
L2tAS VSdVEON%PQCRTRTpL2S VCtEOJ[S PQL2pS NKHKS V%S%S t
SML2EGUWEOtEON%t<EOPQHKEOUYPQt<EOSGVCCEOtAS VCt_P.CRTCJ)p
PQC@RTRTpLS VCt>l
mJsLCJ)ES %NKHKP.SSNUWEO@S VC@tLS RT@HKOUl
mJ)L2CDEOJ%S t
SdEOtARTHKLHKteNKSrVEO|UWHKPQHKUYVEdVC@JCEOtAS VCt<EJo!pEJ)C@UTPQCRTRTpL2S VCt<EOJVE}NKCJ
UWEO@S VCtAE.JVEPQS VSTpUWCVENKCJDC@Lt<C@J l@mNtAHKRTEOtdC@EGt
S VC@tMVEO@EOtAKSYVEOtdVEO|UWHKVCJ)HKU
pUaPQCRTRTpL2S VC@tCTUWEO@S VCt[2PQC@RTCJ)EOSS t<CWHKSVC@>lpS UWVCTEGNuJ)EO@pUWVCTCEOtAS VCt[EOJ
VEO|UWHKVCJ)EDVEG@EUWCRT@t
St}EGNtAHKRTEOt<CP.CRTCEONPQCRTRTpL2S VCt}CUWEG!SVC@t
l mNtAHKRTEOt<C

BWl CG EOJ)L2CrL2S RT@HKGU2pUWPQHKCUWS}S tAS

J)EOt
S PQL2pS NKHK SGVCrP.CRTCpUDEO2EOPQLCrNKS LEOtAS Nl>2mUCJsL!t<EGJ

J)HKRTNKEORTEOUWLEo!pES RT@CJ_CEOtAS VCt<E.J_J)Et<EO|EOtAS US NCL2t<C>l


iCJrJ)HK@pHKEOUWL2EGJLt<EOJdEOJ)EOPQHK|PQS VC@t<E.JrEOJ)L2 Ut<EGJsEGUWL2EOJd%S t
SS pFIHKNKHKStS NC@LHKRTHK S VC@tVE
PQC@UWJ)pNKL2SJDS Nt<EOSGNKHK S trpUWHKCUWEOJ2KCHKUWJ)>lbCJsL@tAEGJDJsHKEGRTt<ETpEGVEEOq!S NKpS tMpUWSpUWH@U
2Hl E!l .t<C@PQEOJ)S UWVCpUWSPQNK pJ)pNKS[PQCUVCJq!S tAHKS @NKEOJuVEL2pNKS JJ)EOSt
SGVS JCtupUCEOtAS VCt

$D

o!pEt<EOLC@tAUWCMpU@CC@NKEOSUWC@WCtJ)p
@JsL HKL2pPQHKUnHKLEOtAS LHKqbS
PQS SO}VE}pLHKNKHK S tpUnS NK@Ct
HKLRTC

S J

EBF>l

rB

VEORT J)C@J)L!t<EOJEGJ

Dg

C@HKUWJsHK@pHKEOUWVCNKS JNKUWEOS JVE

@S t<C@uVEG@EDJ)S @EOt}J)HEOJ)L2SEGJsLtAS L2EG!HKSEOJMS NKHKPQS @NKE!lImJMS NK@Ct


HKLRTC

S J

GHBF2 J)HKUEORT

C@HKUS PQLpSNEOJ

J)C@NKS RTEGUWL2EPQC@tAt<EOPQLCS tASYC@%EOtAS VC@t<EGJo!pEt<EOt<E.J)EOUWL2SULEOJ)L2JVEnHK!pS NKVS VuS VEORTJNKS


HK!pSNKVS VVEONL2HKCTVEVS L2CVEO@ErJ)HK!UWHK|PQS tHK@pS NKVS VSUWHKq!EON VE@HKLJ}VENKSt<EOt<E.JsEGUWL2S
PQHK@UaVEON LHKCul2C@tE
EORTNKCpULHKCTVEVS LCYo!pEP.CUWLHKEOUWED@HKLJUWCTpL2HKNKHK
S V
CJo!pEUWC
L2HKEGUWEOUt<EOE.t<P.pJ)HKUaS tASML2EOJ)LJVErHK@pS NKVS VC@VtAKSMUWCYJ)EOtpJ)S VCnEO UEG N
HKUWVHKPQS VCt

gmgHKUWVHKPQSS NC@%L2HKRTHK SVC@t[VErP.CUWJ)pNKL2S J}o!pEpU

S J

SJ

C@HKUb)lOmN

CHKUaC@pVEJ)EOt

pL2HKNKHK SVCrVE[2C@tARTS}J)EO@ptASCtEGJ)L2E[CEOtAS VCt


l
E[2C@tARTSStAE.PQHKVS NKCJ_VC@JCEOtAS VCtAEGJVE[CtAVEOUHKUWVHKPQS US NCL2HKRYHK S VCtVEP.CUWJ)pNKL2S J
z

J)HNKSEOJ)L2tAS LEO@HKSRTEG PQNKS t<C@t<VEGUWS tEOJ pL2HKNKHK S @NKE_do@pECEOtAS VCt<EOJ VEG!EGt


SOUrJ)EOtpL2HKNKHKS VC@J
S tASCtAVEOUWS t NKS JPQNKS J)EOJeVENKCJVC@JeCEOtAS VCtAEGJ lsiC@JeC@EGt
SVC@t<EOJeVECt<VEOUDVEO@EOtAKSGUJsEGt
J)pRYHKUWHKJsLt
SVC@J[J)CNKS RTEOUWLEMS tASrpUTCEOtAS VCt_VEdHK@pS NKVS VVEG@
EOt
S UTt<EGEGtHKt
J)EMSMC@%EO
t
SVC@t<E.J_RTEGUWC@t<2o!pESt
S[NKC@J_L2HKCJ_VE[NKS}S tAL2EHK o!pHKEOt<VSVEOt<E.P

S}t<EOJ)EOPQL2HKq!SGRTEOUWL2E@l

gHCL2tAS JEOJ)L2tAS LEO!HKSJ}VErpUWHKUJ)C@UaPQC@UWJ)HKVEOtAS VS JtA PQL2HKPQS J)!C@J)L!t<EOJP.SRT@HKS t


EGNuCLHK
RTHK S VCtEOULHKEORTCdVEE
EOPQpPQHK@U%S t
SpL2HKNKHKS t
NKSJMtAEGo!pEOtAHKt
UEOJ)EOPQHK|PQS PQHK@US VHKPQHKC@UWS N
PQpSUWVCpU

CEOtAS VCtMJ)EOSTVEO|UWHKVCul

2C@tAL2pUWS VS RTEOUWLEO NKSPQCRTpUWHKVS VxHKUWqbEGJsLHK!SVC@tAS

HKUWq!EOUWL2SrUWpEGqbSJEGJsLtAS L2EG!HKS JVEMpUWHK@UHKUW2t<EOPQpEOUWLEORTEOUWLEOnNKS@EOUWEOtAS NKHKVSVS WS VHKVSdVE


EOJ)L2tAS LEO@HKS JVEO|UWHKVS JeCtEONpJ)pS tAHKCUWCRTEGtAEGPQENKS}PQC@RT%NKE
HKVS Vnt<EOJ)pNKL2S UbL2E!l
iS JVCJ[NKLHKRTS J[HKEOS JVEdNKSrEOJ)EOPQHK|PQS PQHKUYEOJ)L UTt<EOJ)EOUWLEOJS tASMo@pEMEON%CL2HKRTHKS VCt
pEOVS[EOJ)L2HKRTS tNKC@JeLS RTS WCJ_VENKC@J_tAEGJspNKLS VCJ l>gHpUWS}PQNK pJ)pNKSVE[NKS}2CtARTSW

MYBOXES.description A(A(A

"0,0,1,1"::box

EOJ)L2t<EOJ)EOUWLE_HKUNKSPQpS NKHK|PQS PQHKUWGEGUWL2CUWPQEOJ)CJ)L2@t<EOJpEGVE_L2EOUWEGto!pEEGJ)L2HKRTS tNKS2tAS PQP.HKU

emgo@pEDJ)S LHKJs2S PQEOUaNKSPQNK pJ)pNKSWl iS2pUWPQHK@U

VEHKUWJsLS UWPQHKS JdEOU

res_proc

VEO@E

J)EOtpUWSd2pUWP.HKUtAEG!HKJ)Lt
S VS}NKCo!pEJ)HK@UWHK|P.So!pE}@SdEGJsL}VEO|UWHKVSpL2HKNKHKS UWVCX[Z[\]_^\
!dDX[^AD2S PQEOLSS t<!pRTEOUWLCJVEONWLHKCDP.CtAt<EOPQL2CDVEOq!pEONKq!EpUUWpRYEOt<CEGUYpUWLC


CL2SUWL2E!lmNCL2HKRTHK SVC@tJsHKRT%NKEORTEOUWLENKNKSRTSSDEGJsLS2pUWP.HKUWbS J)S UWVCNKEEONS tA RTEOLt<C
I
JG   !RTpNKLHKNKHKPQSEON t<EGJspNKLS VC}CtEGN LS RTS WC}VE_NKSt<EONKSP.HKUMS tASC@@LEOUWEOtEGN VEGJsEGS VC
UWpRTEOt<CMVEHKUWJsLS UWPQHKS JeEOJ)L2HKRTSVC l
pS UWVCDS RT@CJ[C@EGt
SUWVC@J[VEONbC@EGt
SVC@t_PQC@UWLHKEOUWEGUTqbSt
HKS @NKEGJVEdHKUWJ)L2SUWP.HKS@EONWCL2HKRTHK
S VWC@teVEG@EEOJ)L2HKRTS teEGN!LS RTS WCVENKSdpUWHK@UtAEGJspNKLS UWLE!l)iS2pUbP.HKUrC@HKUWt<C@P[t<EOLCt
UWS tS
C@Lt<CDUWpRTEOt<CnVEGP.HKRTSN%o!pEMJ)EOtArRTpNKLHKNKHKPQS VCCtNKS JPQS t<VHKUWS NKHKVSGVEOJ[VEdNKSJVC@J[PQNKS J)EOJ
EOUWq!pEONKLS JeEGUDEONP.RTpLCVEONLS RTS WCMEOJ)EOtAS VCul
iSVHK2EOt<E.UWPQHKSEOUWLt<E[NKS}2pUWP.HKU

my_procedure_1 (MYBOXES.description, "0,0,1,1"::box)


EGN@CEGt
S VCt

MYBOXES.description === "0,0,1,1"::box


EOJ}o@pEOC@J)L!t<EOJHKUWL2EOUWLSC@%L2HKRTHK S tC@EGt
SVC@t<E.JTpEGVErVEOPQHKVHKtpLHKNKHK S tpUaUWVHKP.ES
t
St<EGJsLt
HKUb!HKt[EGNuEGJsSP.HKCnVE@Jso@pEOVSP.pSUWVCYS S tEOPQEOUC@EGt
S VC@t<E.J l gIHKUEORT@S t<!C!UWC
J)EHKUWL2EOUWLSdC@LHKRTHK S t2pUWPQHKCUWEOJ)JsCUEAEGP.pLS VS JeRTEOVHKSUWL2E2pEOtA S}@t<pL2SWl

VEORT J) NKS J

2pUWP.HKCUWEOJepEOVEGUL2EOUWEGtPQpS NKo!pHKEOt UWRTEOt<CrVES t<!pRTEGUWL2CJRTHKEOUWL2tAS Jeo!pENKCJCEOtAS VC


t<EOJEOJ)L2 Ut<EGJsLtAHKUW!HKVCJ_SpUWCCVCJ l

Notes
eEG|Gt
S J)EnS N_PQS KLpNKCJ)C@@t<ECEOtAS VCtAE.JEOUNKJ

QAW @M

AA r[!5

S tASYRT JHKUW

2C@tARTS PQHK@UleEO|OtAS J)EdS`DZ[DaD\Z[]_^DZS tASr@Ct


tAS t_CEOtAS VCtAE.J[VEO|UWHKVCJCtEON
pJspSt
HKCMVEpUWS@S J)E[VE[VS L2CJ l

Utilizacin Usage
mNJsH!pHKEOUWLE}P.CRTS UWVCVEG|UWE[pUnUWpEOq!CCEOtAS VCt2 S t<EGSO2HK@pS NKVS V S tASEGN!LHKCVEVS LC

}l

CREATE OPERATOR === (


LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <,
SORT2 = <
);

Compatibility
SQL92

X[Z[\]_^\xD\Z[]_^eDZHKJDSCJ)L2@t<EOJEOFL2EGUWJ)HKC@Ul

EGt<EYHKJUWCX[Z\]_^e\xD\Z[]_^DZ

J)L2S LEORTEOUWL!HKUghMij k@l

CREATE RULE
Nombre
CREATE RULE
y

EO|UWEpUWS}UWpEGqbSt<EO!NKS

Synopsis
CREATE RULE name AS ON event
TO object [ WHERE condition ]
DO [ INSTEAD ] [ action | NOTHING ]

Inputs
name
mNUWC@RT@t<EVE[NKStAEG!NKSSPQtAEGS t<l

event
mqbEGUWL2EpEGVE[J)EOt

select update delete

insert

object
rGEOPQLWpEGVE[J)EOt

table

table column

condition
pS NKo!pHKEOtAS}PQNKS pJ)pNKSdgIhMi

Dmml

new

current

pEGVEOUDS S t<E.PQEOtEGUnNKp@S tVE

pUWSdq!S tAHKS @NKEVE}HKUWJsLS UWPQHKS A<_J)HKEORTt<Eo!pEpUWSMq!S tAHKSO@NKE}VE}HKUWJsLS UWPQHKSdEOJS VRTHKJ)HK@NKE


EOUgIhril

action
pS NKo!pHKEGt
SdPQNKS pJ)pNKSrgIhril

new

current

pEOVEOUS %S t<EPQEOt_EOUNKp!S t_VEpUWSrq!S

t
HKS @NKEnVEnHKUWJsLS UWPQHKS A<rJ)HKEORTt<Eo!pEpUWSTq!S t
HKS@NKEnVEnHKUWJ)L2S UWPQHKSTJ)EOSTS VRTHKJ)HK@NKEEOU
ghMil

Salidas
CREATE
EGUWJsS!E[VEOq!pNKL2EJ)HNKSt<EO@NKSEOJPQtAEGS VSPQCUDOFHKL2Cul

Description

LK

A@[ <<

mNCJ)L2@t<EOJ

EGt
RTHKLEo!pEpUWSS PQLHKC@UaS NKL2EGt
UWSL2HKq!SJ)EOStAEGSONKHKS VSEOUap%VS L2EGJs

HKUWJ)EOtAL2JCVEGNKEOL2EGJEOUnL2S @NKS J_CP.NKSJsEGJl

PQLpS NKRTEOUWLEJsE}pL2HKNHK S Ut<EO@NKS J_S tASdHKRT%NKEORTEOUWLS t

q!HKJsLS JVEL2S@NKS J l
mNOJsH!UWHK|PQS VCVEepUWSt<EO@NKSEOJuo@pEPQpS UWVCpUWSHKUWJ)LS UWPQHKSHKUWVHKqbHKVpSN EGJ S PQPQEOV%HKVS QS PQL2pS
NKHK S VSGHKUWJ)EOtALS VSC@C@tAtAS VS EOFHKJ)L2E}pUWSMHKUWJ)LS UWPQHKSMS PQLpS N!2St
S}PQCUWJspNKLS J)S PQL2pSNKHKOS PQHKC
UWEOJ@CtAt
S VC@J)!rpUWSUWpEOq!SHKUWJ)L2SUWP.HKSSt
SS PQL2pS NKHKSOPQHKCUWEOJ_rS WS VHKVC@J)>l
gIHIEON
EOJ)EOPQHK|PQS V%CEOUNKSP.NKS pJ)pNKSnMB

NKS

condition

EOJ)EGP.HK|PQS VSDEOUNKSP.NKS pJ)pNKS

emTJ)C@UYq!EOt<VSGVEOtAS JSt
SNKSdHKUWJsLS UWPQHKSdS P.LpS N!NKSMS tALE

action

event

Dm

VENKSdt<EO@NKSdEGJE
EOPQpL2S VSWl

UWLEOJ)GJ)HKUEGRT@S t<!CGNKCJqbSNKC@t<EOJuVENKCJPQS RTCJVENKS[HKUWJ)L2S UWPQHKSS PQL2pS N ICrNKSUWpEOq!SHKUWJ)


L2SUWP.HKSJ)CUDJspJ)LHKL2pHKVCJCt
iSS tALE

action

current.attribute-name

new.attribute-name

VENKSYt<EO@NKSJ)EE
EOPQpL2SYPQC@UEONeRTHKJ)RTCHKVEOUWLHK|P.SVC@tdVEnPQC@RTS UWVC

L2tAS UWJ)S PQPQHK@Uo!pEEGNP.CRTS UWVCrVE[pJ)pS tAHKCo!pEPQS pJ)NKSSP.LHKq!S PQHK@Ul

Notas
mJ EGt
LHKUWEOUWLE_NKS%tAEGP.SGpPQHK@UrP.CUt<EG!NKS JVE_gIhri_l<gIHEON RTHKJ)RTCdUWCRT@tAE_VE_PQNKS J)E_C}q!S tAHKS @NKE
VE}HKUWJsLS UWPQHKSS StEOPQEdEGUYEON

INKS

event

NKSrS tAL2E

condition
action
ErCtARTSRT Jt<EOPQHKJsS

PQC@UWJ)HKVEOtAS VCJ[L2CVCJVHK2EOt<EOUWLEOJ[Lp%NKS J l

VEdNKSMt<EO@NKS J)CU

J)CUNKS J
z
UWHKPQS JL2pNKSJo!pEDJ)CUPQC@RT%S t
LHKVS JEGUWL2t<EP.NKpJspNKS J l C@tE
EORT%NKC@NS JJ)HK!pHKEOUWLEOJMVCJ

new

current

t<EO@NKSOJeL2HKEOUbEOUnNKSRTHKJsRTS}J)EORTUWL2HKPQSWl

ON UPDATE TO emp.salary WHERE emp.name = "Joe"


DO UPDATE emp ( ... ) WHERE ...

ON UPDATE TO emp-1.salary WHERE emp-2.name = "Joe"


DO UPDATE emp-3 ( ... ) WHERE ...

m
lGgIHKUTEOJ)LErL2S!@NKS
z
NKHK S VSrEOUaSVHKP.H@US NP.CRTS UWVCYVErpJspS tAHKCYPQpS UWVCEON
EGUaNKSS tALE
S VSMt<EO@NKSpEOVEdL2EOUWEGtEGNLS YCPQHKCUWS NBDg

JsEGt
St<EGSO

action
event
condition
VE[NKS}t<EO@NKSSS t<EP.S Ul NKLEOtAUWS L2HKq!S RTEGUWL2EONKS}%S t
LE
JsEGt
}t<EGSONKHK S VSEOUDNKp!StVEGN
action EDpJ)EOtPQC@RTRTSUWVlUL HKJ
PQC@RTS UWVCVEGNpJ)pS t
HKCulImUEOJ)L2ENKL2HKRTCaP.SJsCNKSnHUWJsLEOS VC@_L

NKS LEOtPQS J)EOGL

action

pEOVE[J)EOt NKS}S NKS@t


S[P.NKSqbE

NOTHING

pS UWVCJ)EeEONKHK@EeEOUWL2t<ENKC@JuJsHKJ)LEORTS J VEet<EOEOJ)PQtHKL2ptASt<EO@NKS JVEeHKUWJ)L2S UWPQHKSS tAS_pUWSS %NKHKP.S


PQHK@US tAL2HKPQpNKS tVEpUWSdt<EO@NKS t<EOPQpEOt<VWEOJ)Eo!pEEOUEGN!J)HKJ)L2EORYSdVEt<EOEGJsPQtHKLpt
S

current

J)E

t<EO|EOtESNKS}t<EGNKS PQHK@USNK!pUWCJ_PQpS NKHK|PQS VCtAEGJeRYHKEOUWL2tAS Jeo!pEEOUDEONJ)HKJsLEORTS}VEHKUWJ)LS UWPQHKS J


J)E[t<EO|EOt<ESpUWS}HKUWJ)LS UWPQHKS}2L2pNKS >l
mJ}RTpHKRTCtAL2S UWLEUWC@LS to!pEEONuJ)HKJsLEORTSVEt<EOEOJ)PQtAHKL2ptASUWpUWP.SVEGL2EOPQLS tAUWHut<CP.EGJ)S
t
t<EG!NKS JP.HKt<PQpNKS tEGJ l CtE
EORTNKCWSpUWo!pEPQS VSpUWSVENKS JJsHK@pHKEOUWLEOJVCJt<EO@NKS JP.CU
S PQEOLSOVSJeCtCJ)L2@t<EOJ) EONPQC@RTS UbVCVE[t<EOPQC!HKVS[PQS pJ)S t
NKSP.SKVS[VE[C@J)L!t<EOJ}



M,NHOQPR,SUTV%,TWO\M,NOQPRXS YN[Z*S\O^]_a`bZc_,de`#Z)_,fLZ)gR,bHfhYNfLNi\bR,j)W
\

CREATE RULE bad_rule_combination_1 AS


ON SELECT TO emp
DO INSTEAD SELECT TO toyemp;
CREATE RULE bad_rule_combination_2 AS
ON SELECT TO toyemp
DO INSTEAD SELECT TO emp;
mJ)L2E[HKUbL2EOUWLCVE[C@L2EGUWPQHK@UVE[VSL2CJ_VEGJsVEmn%tACq!C@PQS tANKSP.SKVSVECJ)L2@t<EOJ l

SELECT * FROM emp;

mJUWEOPQEOJ)S tAHKCTLEOUWEOtEGt
RTHKJ)CVEVEO|UWHKPQHK@UVEt<EG!NKS JEGUpUWSDP.NKSJsES tASCVEOtVEO|UWHKt

kdmlM\S tASYRTCVHK|P.S t

pUWSTtAEG!NKSYEGUEONl@gIEnVEO@EnpLHKNKHK S tMEGN_PQCRTS UWVCDZ[]dD^Z[\


EOJ)L2CJeEOtARTHKJsCJ l

mNCOEOLCEGUpUWStAEG!NKS[ghMinUWCrpEOVE[J)EOt pUWUWS}t<EO2E.tAEGUWPQHKSSpUDS tAt


SGrUWCpEOVEL2EGUWEOt
S tAORTEGL2t<CJl

StL2EVEON P.SRTCC@HKVGNKCJS L2tAHK@pL2CJVEGNJ)HKJsLEORTSUWCdpEOVEOUrJ)EOtt<EO2EOt<E.UWPQHKS VCJEOUUbHKUW


!UrNKp!S t%EOUMpUWS[t<EO@NKSWlmUWLtAEC@Lt
SJP.CJ)S J EGJsLCJ)HK!UWHK|PQS[o@pENKS J pUWPQHKCUWEOJVE_HKUWJ)L2SUWP.HKSJ
2C@teEAEGRTNKCD

foo(emp)

VCUWVE

NKp!StVEGUWL2t<CMVE[pUWS}t<EO@NKSWl

emp

EGJpUWSrPQNKS J)EOUWCpEOVEOUJ)EOteNKNKSRTS VS JEGUYUWHKUW!U

mNJsHJsLEORTSS NKRTS PQEGUWSEONL2EOFLCYVErNKSt<EO@NKSYNKCJNKS UWEGJVErPQCUWJ)pNKL2SPQC@RTCYSL2tAHK@pL2CJVE


L2EGFILC lmJ)L2CTHKRT%NKHKP.SDo!pENKSP.t<EOSP.HKUVEt<EO!NKSJ}pEOVE2S NKNKS tJ)H NKSt<EO!NKSRT J}JspJq!S tAHKS J
HKUWL2EGt
UWS Jt<EOt<E.J)EOUWLS PQHKC@UWEOJ_EOFP.EGVE.USNK!UDq!S NKC@to!pEEOJeVEONCt<VEOUVEpUWS !HKUWSbl

Uso

[n2CE!

DS PQEOtuo!pEgIS RC!LEOUW@SEONRTHKJ)RTCS)pJ)L2EVEJsSNKS tAHKCo!pE

CREATE RULE example_1 AS


ON UPDATE emp.salary WHERE current.name = "Joe"
DO UPDATE emp (salary = new.salary)
WHERE emp.name = "Sam";

Un2C@Et<EOPQHKq!ErpUaS>pJ)LEVErJsSNKS t
HKCbEONEOq!EOUWL2CJsEGt
q!EOt<VSGVEOt<CnTNKS
En2CEnNKSdUWpEOq!SMHKUWJ)L2SUWP.HKSMt<C@pEGJsLSdEOJ)L2 UVHKJs%C@UWHK@NKEOJ[S tASNKS Jt<p

NRTHKJ)RTCTL2HKEGRTCTo!pE
HKUWJ)L2S UWPQHKSdS PQL2pS NWVE

L2HKUWSJ_VEEAEGP.pPQHKUlQCtNKCLS UWL2CEOJ)L2EUWpEGqbCJsS NKSt


HKCrEOJJ)pJ)L2HKLpHKVCEOUNKS}S tALEVES PQPQHK@U

onCESgSRl

VENKStAEG!NKS[o!pE[EOJJ)p@J)HK!pHKEOUWLEORTEOUbL2EE
EOPQpLS VSWl<mJsLC%tACS @S[EGNJ)S NKS tAHKCrVE

(n2C@EPQpS UWVCEOJS PQPQEOVHKVCu

DS PQEOtuo!pEHKNKNC@L2EOUW@S}EONJ)S NKS tAHKCMVE

CREATE RULE example_2 AS


ON SELECT TO EMP.salary
WHERE current.name = "Bill"
DO INSTEAD
SELECT (emp.salary) from emp
WHERE emp.name = "Joe";



=n2C@EeEGNGS PQP.EGJsCS NGJ)S NKS tAHKCVEEORTNKEOSVC@JEOUdEONOVEGS tAL2SGRTEOUWLC}VEPQS NK SGVC

EOUWEO@S tbS
z

VEOq!pEONKq!EEGN@UWCRT@t<EVEONpJ)pS tAHKCS PQLpS NK>

current_user

CREATE RULE example_3 AS


ON SELECT TO emp.salary
WHERE current.dept = "shoe" AND current_user = "Joe"
DO INSTEAD NOTHING;

t<E.S tpUWSq!HKJ)L2S}VE[EORTNKEGS VC@JLt


S@S)SUWVCrEGUEGNVEOS tLS RTEOUWLEVEp@pEGL2EGJl

CREATE toyemp(name = char16, salary = int4);


CREATE RULE example_4 AS
ON SELECT TO toyemp
DO INSTEAD
SELECT (emp.name, emp.salary) FROM emp
WHERE emp.dept = "toy";

CVCJ_NKCJUWpEOq!CJ_EGRTNKEOS VCJVEO@EOU

pCWl   CrRTEOUWCJl

S PQEOt

CREATE RULE example_5 AS


ON INERT TO emp WHERE new.salary > 5000
DO UPDATE NEWSET salary = 5000;

Compatibility
SQL92

XZ[\]_^e\Z[\
\EOUDghMij k@l

mNPQCRTS UWVC

EOJpUWSEOFL2EGUWJsHKUxVETCJ)L2@t<EOJBDCEOFIHKJ)LENKSaJ)EOUWLEOUWPQHKS

X[Z[\]_^\nZ[

CREATE SEQUENCE
Nombre
CREATE SEQUENCE
y

t<EOS[pUWS}UWpEGqbSJsEGP.pEGUWP.HKSVE!EGUWEOtAS VCtVEUWpRTEOt<C@J

Synopsis
CREATE SEQUENCE seqname [ INCREMENT increment ]
[ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
[ START start ] [ CACHE cache ] [ CYCLE ]

"

Entradas
seqname
mNUWC@RT@t<EVE[pUWS}J)EOPQpEOUWPQHKSo@pE[JsEGt
SPQt<EOSGVSWl

increment

iSPQNKS pJ)pNKS

EOJCPQHKC@UWS Nl.MUnqbSNKC@teCJ)HKL2HKq!C

S tASdpUWSdJ)EO

INCREMENT incrementSt
SpUWSJsEGPQpEGUWPQHKSdVEGJsPQEGUWVEOUWL2E@lQmNbq!S NKCtC@t

P.pEGUWP.HKSS J)PQEOUWVEGUWL2EO pUWCDUWEO@S LHKqbC


C@RTHKJ)HKCUnEGJ_pUWC2 >l

minvalue
iSrPQNKS pJ)pNKSC@%P.HKCUWS N

MINVALUE minvalue

VEOLEOtARTHKUWSEON%q!S NKCtRTHKUWHKRTCo!pEMpUWS

HG+B_S tAS_J)EOPQpEOUWPQHKS J

JsEGP.pEGUWP.HKSepEOVEe@EOUWEOtAS t
lmNOq!S NKCt%Ct%CRTHKJ)HCUrEGJuk
S J)P.EGUWVEOUWLEOJVEOJ)PQEOUWVEGUWL2EOJ)t<EOJ)EGP.LHKq!SORTEGUWL2E!l

maxvalue
MLHKNKHKPQENKSPQNKS pJ)pNKSCPQHKCUWS N

S tAS[VEGL2EOtARTHKUWS tuEONqbS NKCtuRTS FHK

MAXVALUE maxvalue
G+B }}St
SJsEGP.pEGUWP.HKSJS J)PQEOUW

RTCS tASpUWSJsEGPQpEGUWPQHKSWl>C@tCRTHKJ)HKCbUJsCUk
VEOUWLEOJVEOJ)PQEOUWVEGUWL2EOJ)t<EOJ)EGP.LHKq!S RTEOUWLE!l

start

iS}PQNKS pJ)pNKSC@PQHKCUWS N

S@HKNKHKL2SNKS}J)EOPQpEOUWPQHKSd%S t
S}o@pE}PQCRTHKEOUWPQE}EOU

START start

P.pS NKo@pHKEOtMNKp@S t
l!mN_q!S NKCtMVEHKUWHKPQHKCC@tdC@RTHKJ)HKCbUEOJ
S J)P.EGUWVEOUWLEOJ

maxvalue

S tASNKSJ_VEGJsPQEOUWVEGUWL2EGJl

minvalue

S tASYJsEGPQpEGUWPQHKS J

cache
iS}C@PQHKCU

CACHE cache

EGt
RTHKLEo!pENKC@J_UWpRTEOt<C@J_VENKS}J)EOPQpEOUWPQHKS}J)EOS US NKCGS VCJ

%tAE.S NKNKCPQS L2EGV TS NKRTS PQEOUWS VC@JEOURTEORTCt


HKSSt
SpUS PQPQEOJ)CYRTS J t
S %HKVC lOmNq!S NKCt
RTHKUWHKRTCMEGJ 2J)C@NKCJ)EpEOVEe@EOUWEOtAS tpUrqbSNKC@tPQS VSqbEG QHl E!lJsHKUrPQS P

EO}EOJL2SRT@HKEOU

EONq!S NKC@tCtCRTHKJ)HCUl
im
iSS NKS @tSPQNKS q!EM2@EO!~DCt<V imapEGVEMJ)EOtpLpNKHK S VSrS tASrEOtA
RTHKLHKtSNKSJ)EO
P.pEGUWP.HKSeP.CUWL2HKUWpStPQpS UWVCEGNq!S NKCt%VE

maxvalue

C}EONOVE

minvalue

SJ)HKVC}S NKPQS UW

S VWCnCtpUWSrJsEGP.pEGUWP.HKSMS J)PQEOUWVEOUWLEdCnVEOJ)PQEOUWVEOUWLEdt<EOJ)EGP.LHKq!SORTEOUbL2E!lGgIH%EONbNKHKRTHKL2E
EOJS NKPQS UW SV%COEONIJ)HK@pHKEOUWLEUWpRTEOt<Cd@EOUWEOtAS VCJ)EOtAS[PQpS NKo@pHKEGt
So!pES tAS
C

maxvalue

J)EOSLC@RTSVCPQC@RTCS t<C@%HKSOVCul

minvalue

Outputs
CREATE
EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN@PQCRTS UWVCrEOJ_EAEGP.pLS VCMPQC@UDEOFHKL2Cul

ERROR: Relation seqname already exists


gHNKSJ)EOPQpEOUWPQHKS}EOJ)EGP.HK|PQS VWS@SEGFIHKJ)L2E@l

ERROR: DefineSequence: MINVALUE (start) cant be >= MAXVALUE (max)


gHEONq!S NKCtVEHKUWHKPQHKCEOJ)EOPQHK|P.SVCrEGJsLS2pEOtASVE[tAS UW@C l

ERROR: DefineSequence: START value (start) cant be < MINVALUE (min)


gHEONq!S NKCtVEHKUWHKPQHKCEOJ)EOPQHK|P.SVCrEGJsLS2pEOtASVE[tAS UW@C l

ERROR: DefineSequence: MINVALUE (min) cant be >= MAXVALUE (max)


gHEONq!S NKCtRTHKUWHKRTCRTS FHKRTCJ)CUnHKUWPQCUWJsHKJQL2EGUWL2EOJ l

Descripcion

qDM\DX[\rHKUWLt<C@VpPQHKtASpUWS[UWpEOq!SJ)EOPQpEOUWPQHKS@EOUWEGt
S VC@tASVEUWpRTEOt<C@JuVEOUW

X[Z[\]_^\f\

L2t<CVENKSdS PQL2pS N!@S J)EVEVSL2CJ l.mJ)L2CDHKRTNKHKPQSdNKSMPQt<EOS PQHKCUE}HKUWHKPQHKS NKHK S PQHKCUVE}pUWSMUWpEGqbS


L2S!NKSVEpUWS}NKHKUWEOS}PQC@UEONUWCRT@t<E

seqname

lsiSJ)EOPQpEOUWPQHKS}@EOUWEOtAS VCtASJ)EOt
S}%tACHKEOVSOV

VEONpJ)pS tAHKCo!pEEAEGP.pLSEONPQC@RTSUWVC l

EOJ)pEOJVEo!pE}J)EPQt<EOS}pUWSJ)EOPQpEOUWPQHKS IpEOVEpL2HKNKHKS tNKS2pUWP.HKCU

nextval(seqname)
currval(seqname)
pEOVEJ)EOtMpLHKNKHK S VSTS tASTVEOLEOtARTHKUWS tMEGNUWpRTEOtAxVEOq!pEGNKL2CCtrNKSTpNKL2HKRTSNKNKS RTS VSYS
z

S tS C@@LEOUWEOtpUWSUWpEOq!CTUWpRTEOt<CTVENKSJ)EOPQpEOUWPQHKSWliSpUWPQHKCU

VEOJ)VE[NKSJ)EOPQpEOUWPQHKS}EOJ)EGP.HK|PQS VS[EOUNKS}J)EOJ)HKC@UDEOUDPQptAJsCul>iS2pUWPQHKC@U

nextval(seqname)
pEGVEJ)EOtepLHKNKHK S VSdS tASPQC@UW|@ptAS t_EON!q!S NKC@t_S PQLpS N
setval(seqname, newvalue)
VENKS[J)EOPQpEOUWPQHKSEOJ)EOPQHK|P.SVS!l>iSJ)HK!pHKEGUWL2E[NKNKSRTS VSS
VEOq!C@NKq!EOtASEGN
nextval(seqname)
q!S NKC@t VS VCMRTS JeNKSJ)EOPQpEOUWPQHKSVEHKUWPQt<EORTEOUWLCul
MLHKNKHKPQE[pUWS}PQC@UWJ)pNKL2S}2o!pEGt
@bP.CRTC

SELECT * FROM sequence_name;


S tAS[C@L2EGUWEOt NKC@JeS tAS RTEOLt<CIJ_VEpUWSJ)EOPQpEOUWPQHKSWl

S tAL2EVE[C@L2EOUWEGtNKCJS tAS RTEOLtACJCt


HK

!HKUWSNKEOJ)pEOVE[pLHKNKHK S t

SELECT last_value FROM sequence_name;


S tASC@@LEOUW EOt%EON pNKLHKRTCdq!S NKC@t%S JsH!UWS VC%C@tPQpS NKo@pHKEGtt<CP.EGJsCEGUrEGN J)EOtAq!HKVC@t2@S PQ@EUWV>l
L2CrC@@LS HKUDL

ENKSJsL!q!S NKpE[S NKNKCPQS L2EGVn@S UW@S P.@EOUWVl


S tASORTEOLt<C@Jeo!pEpEGVEOJpL2HKNKHK St

gEpL2NKHK SY@S)CUWHKq!EON_VEn@NKC@o@pEYS tAS


!EGUWEOtAS VCt>l

S @HKNKHKLS tdRTpNKLHKNKEOJNKNKSRTS VS JrJ)HKRTpNL2S UWEGS JSTpU

Atencin
Se pueden obtener resultados inesperados si una configuracion de cache mayor que uno es utilizada por un objeto secuencia que sera usado concurrentemente por multiples procesos en el servidor (backends).
Cada proceso en el servidor (backend)asignara valores de secuencia
"cache" succesivas durante un acceso al objeto secuencia e incrementara el ultimo valor (last_value) del objeto secuencia en conformidad
con esto. De este modo, el siguiente uso de cache-1 de nextval dentro de ese proceso en el servidor (backend) devolvera simplemente los
valores asignados sin tocar el objeto compartido. Asi pues, los numeros asignados pero no utilizados en la sesion en curso se perderan.
Mas aun, aunque se garantice por multiples procesos en el servidor
(backends) la asignacion de distintos valores de secuencia, los valores
pueden ser generados fuera de secuencia cuando los procesos en el
servidor (backends) son tenidos en cuenta. (Por ejemplo, con una configuracion de cache de 10, el proceso A puede reservar valores 1..10
y devolver un nextval=1, entonces el proceso B puede reservar valores
11..20 y devolver un nextval=11 antes de que el proceso A ha generado
un nextval=2.) Asi, con una configuracion de cache de uno es seguro
asumir que los valores de nextval seran generados secuencialmente;
conuna cache configurada mayor que uno solo podrias asumir que los
valores de nextvalue seran todos distintos, no que seran todos generados de un modo puramente secuencial. Tambien, last_value reflejara el
ultimo valor reservado por cualquier proceso en el servidor (backend),
tanto si ya ha sido devuelto por nextval como si no.

Notas

qDd\DX[\DS tASEGNKHKRTHKUWS tpUWSJ)EOPQpEOUWPQHKSWl

eEGRTHKL2S J)ESEGJsLS VCr`DZ[Df\

S VSt<CP.EGJsCMEOUEGNJsEGt
q!HKVCt2@S P>!EOUWVWpLHKNKHK SJ)p
t<C@%HKSPQS P
t<C@JSJsHK@UWS VCJ l.iCJUWpRTEOt<CJo!pE}EOJ)L2S UnEOUYNKSdPQS P

ESt
S[S NKRTS PQEOUWS tuUWpRTEO

E}%EOt<CUWCJ)CUYpLHKNKHK S VCEOUnNKSMJ)EOJ)HKCU

EOUPQpt
J)CrJsE%EOt<VEOtS UW VSUWVCrPQCRTCt<EOJ)pNKL2S VWCq!S PQHKCJsuEGUNKSJsEGP.pEGUWP.HKSbl

Uso
t<E.S}pUWSJ)EOPQpEOUWPQHKS}S J)P.EGUWVEOUWLE[NKNKS RTS VS

PQC@RTEGUW S UWVCrEOU b

serial

CREATE SEQUENCE serial START 101;


gEGNKEOPQPQHKC@UWEEONJsHK@pHKEOUWLEUWpRTEOt<CVEEOJ)L2SJ)EOPQpEOUWPQHKS

SELECT NEXTVAL (serial);


nextval
----114

MLHKNKHKPQE[EOJ)L2SJsEGP.pEGUWP.HKS}EGUpUWS}BDgIm

INSERT INTO distributors VALUES (NEXTVAL(serial),nothing);

CUW|!ptAS t EONqbSNKC@t VENKSJ)EOPQpEOUWPQHKSVEGJspEGJ_VEpUr@eM

CREATE FUNCTION distributors_id_max() RETURNS INT4


AS SELECT max(id) FROM distributors
LANGUAGE sql;
BEGIN;
COPY distributors FROM input_file;
SELECT setval(serial, distributors_id_max());
END;

Compatibilidad
SQL92

qDM\DX[\nEOJ_pUWSEOFL2EGUWJ)HKC@UnVENKEOUW@pS)E}CJ)L2@t<EOJ lQBDC

X[Z[\]_^\f\

qDM\DX[\DEOUDghMij k@l

%

S EOJ)LS VCX[Z\]

^e\nf\

CREATE TABLE
Nombre
CREATE TABLE
y

t<EOS[pUWSUWpEOq!S}L2S @NKS

Synopsis
CREATE [ TEMPORARY | TEMP ] TABLE table (
column type
[ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ]
[column_constraint_clause | PRIMARY KEY } [ ... ] ]
[, ... ]
[, PRIMARY KEY ( column [, ...] ) ]
[, CHECK ( condition ) ]
[, table_constraint_clause ]
) [ INHERITS ( inherited_table [, ...] ) ]

Entradas

mM

gEPQt<EOSNKSnL2S @NKSJsNKCS tASnEOJ)LSnJ)EOJ)HK@UWuEOJMEONKHKRTHKUWSVSnS pLC@RTL2HKPQS RTEOUWLEPQCUEON


|UVENKSJ)EOJ)HK@UlQiS JLS @NKS JeEOtARTS UWEOUWLEOJEGFIHKJ)LEOUWL2EGJPQC@UEON@RTHKJ)RTCUWCRT@t<EUWCJsCU
qbHKJ)HK@NKEOJeRTHKEOUWLt
SJ_NKSLS @NKE[LEORTCt
SN@EGFIHKJ)LE!l

table
mNUWC@RT@t<EVE[pUWS}UWpEGqbSPQNKS J)E[CrL2S!NSSPQtAEGS t
l

column
mNUWC@RT@t<EVE[pUDPQS RTCul

type
.< b< @M

mNOL2HKC}VEONGPQS RTCulpEOVEHKUWPQNKpHKtEOJ)EOPQHK|PQS VC@t<E.JVES tAt


SlCUWJ)pNKL2EeNKS
A< [@

S tASRT JeHKUW2C@tARTS PQHK@UDJ)C!t<EL2HKCJS t


tASG!J l

m

di

value

MUq!S NKC@tCtVEGEGP)L2CnS tASEON%PQS RTCulOCUWJ)pNKL2ErNKSPQNK pJ)pNKS


HKUWCtARTS PQHK@Ul

m

di

St
SMRT J

column_constraint_clause
iSPQNK pJ)pNKSMCPQHKC@UWSNbVEt<EOJ)L2tAHKPQPQHKC@UWEGJPQCUWJ)L2tAS HKUWLEOJ)EOPQHK|PQSdpUWSdNKHKJ)L2SdVEt<EOJ)L2tAHKPQ
P.HKCUWEOJ[VEHKUWL2EO@tAHKVS VCPQC@RT%tApEG!SMo!pEMNKS J[UWpEOq!S JHKUWJ)EOt<PQHKCUWEOJ[CnS PQLpS NKHK SGP.HKCUWEOJ
VEO@EOUJ)S L2HKJ)2S PQEOtS tASo@pENKSDHKUWJ)EOt<PQHK@UaCTNKSDSP.LpS NKHK SGPQHK@ULEOUW@SOFIHKLCulSVSt<EOJ)
L2tAHKPQP.HKUVEO@EnEOq!S NKpS tAJ)ESTpUWSYEOFtAEGJ)HK@U@C@CNKEOS UWSbl

column_constraint_clause

pUWo!pEgIhrijkYtAEGo!pHKEOt<ENKS

S tASt<EO2EOtAHKt
J)ESEGJ)EP.SRTCJ)@NKSRTEOUWLEOCJ)L2@t<EOJ

EOtARTHKL2Eo!pETRTNKL2HKNKEGJPQS RTC@JJsEGS U

t<EO2EGtAE.UWPQHKS VCJVEOUWLt<CVEYpU

UWHKPQCP.SRTC

P.CUWJ)L2tAS HKUWL
l)CUWJspNKLENKS}PQNK pJspNKSP.CUWJ)L2tAS HKUWLW%S t
SRT J_HKUW2Ct
RTSP.HKUl

table_constraint_clause

iSrPQNK pJ)pNKSrCPQHKC@UWSNrBg

2B

EOJ)EOPQHK|PQSrpUWSrNKHKJ)LSVEtAEGJsLtAHKP.PQHKCUWEOJ[VEdHKUW

L2EO@tAHKVS Vo!pENKS JUWpEOq!S JHKUWJ)EOt<PQHKCUWEOJCdNKS JS PQL2pS NKHK SP)HKC@UWEGJeVEO@EOtA UJ)S LHKJ)SP.EGtS tAS
o!pEnpUWSTJsEGUWL2EOUWPQHKSYHKUWJ)EOtALCpVS L2EnLEOUW@SYOFHKL2CulS VSntAEGJsLtAHKP.PQHKUVEO@EnJ)EOtdEGqbS
NKpS VSnSYpUWSEGFIt<EOJ)HKU@C@CNKEOS UWSWlIgEDpEOVEOUt<EO2E.t<EOUWPQHKS tRTNKLHKNKEOJrPQS RTCJPQCU
pUWSrUWHKPQSt<EOJ)L2tAHKPQP.HKUlGgI@NKCJ)EMpEOVEdVEO|UWHKtpUWSUWHKPQSPQNK pJ)pNKSMe2
C@tLS @NKS e

[m

column

2pUWS[t<EOJ)Lt
HKPQPQHK@UVEL2S @NKS S UWVD

[m

[m

pUWSDt<EOJ)L2tAHKPQPQHK@UVEPQS RTC_J)C@URTpLpS RTEOUWLEEGFIPQNKp!EGUWL2EGJl CUWJspNKLENKSDPQNK pJspNKS


VE[t<EOJ)L2tAHKPQPQHK@UVELS @NKSSt
S[RT J_HKUW2Ct
RYS P.HKUl

BDme

inherited_table

iSPQNK pJ)pNKS[CPQHKC@UWS NBDme


NKS J_PQpS NKEGJeEGJsLS}L2S!NKS

gEOJ)EOPQHK|P.SpUWSPQC@NKEGP.PQHKUVE_UWC RT@tAEGJVE_L2S@NKSVE

EGt<EOV%S}LCVC@J_NKC@J_P.SRTC@J l)gIH@SNK!UPQS RTC

EGtAEGVSOVCS S t<E.PQE

RT JVEpUWSq!EO C
J)L2@t<EOJHKUW2C@tARTSVEpUEOtAt<C@t
lC@J)L!t<EOJEGt
RTHKLES pLCRT L2HKPQS RTEGUW
L2EeS
NKSLS @NKS_PQt<EOSOVS
VE

EOt<EOVSGt2pUWPQHKC@UWEOJuVENKS JuL2S @NKSJJ)pEOtAHKCt<EOJuSEGNKNKSEOUdNKSEGt


StAo@pS

EOt<EOUWPQHKSWl

Aside: La herencia de funciones se realiza siguiendo las convenciones del Common Lisp
Object System (CLOS).

Salidas
CREATE
EGUWJsS>EVEGqbpEGNKL2CMJ)H@NKS}LS @NKE[J)E

SPQt<EOS VWCPQCUnGFIHKLC l

ERROR
EOUWJ)S)EVEGqbpEONKLCdJ)HINKSPQt<EOS P)HKUVENKS[LS @NKS2S NKNKSWlmJ)LERTEOUWJ)S)E[q!HKEOUWEUWCt
RTS NRTEOUW
L2ErS PQCRTS WS VCnCtS NK@UaLEOFL2CnEOFNKHKP.SL2HKq!C@!PQCRTC

ERROR: Relation table

o@pE}CPQpt
t<EEGULHKEORTCVEE
EOPQpP.HKUWJsH@NKS}L2S@NKS}EOJ)EOPQHK|P.S VS!S

already exists
EOFIHKJ)LE[EOUDNKS@S J)EVEVS LC@J l

ERROR: DEFAULT: type mismatched


gHbEON%L2HKCnVEMVSL2CJCEON%q!S NKCtC@tVEO2EOP>L2CUbCPQC@tAt<EOJ)CUWVEdS N%LHKCVEMVS LC@J[VENKS
VEO|UWHKPQHK@UDVEONPQS RTCul

Description

r\aHKUWLtACVpPQHKtApUWSUWpEOq!SP.NKSJsEdCYL2S!NKSrEOUNKS@S J)ErVEMVSL2CJS PQLpS NlGiS

X[Z[\]_^\a^b]Mc

L2S!NKS[J)EOt
C@J)EOVSCtEGN@pJ)pS tAHKCo@pE[HKUWL2t<CVpP.ENKS}JsEGUWL2EOUWPQHKSWl
S VS

type

pEOVEJ)EOtpUaL2HKCJ)HKRTNKEOWpULHKCPQCRTNKE
C2JsEGL2eCTpUaL2HKCS tAtAS lOS VS

S Lt
HK@pLCrpEOVEJ)EOt EOJ)EOPQHK|P.SVCdS tASJ)EOt UWCUWpNKCpEGVE[LEOUWEOt pUqbSNKC@t CtVEGEGPQL2C
EOJ)EOPQHK|PQS V%C%C@t NKS

ts

e .@A@

T

Nota: Al igual que en la versin 6.0 de Postgres, consistant array dimensions within an
attribute are not enforced. Esto cambiar probablemente en las versiones futuras.

iSPQNK pJ)pNKSYC@PQHKCUWS N2BDDm


NKC@J_PQpSNKEOJ_EG
J)L2S}PQNKS J)E
VEPQS RTC

gEOJ)EOPQHK|P.SYpUWSYPQCNKEOPQP.HKUVEnUWC@RT@t<EGJVEnPQNKS J)EOJrVE

EOt<EOVS}SpLCRT L2HKPQS RTEGUWL2ELC@VC@JNKCJPQS RTCJ l)gHPQpS NKo!pHKEOtUWC@RT@t<E

EOt<EGVS V%CSS t<EPQE}RT JVEpUWSq!EO C@J)L!t<EOJHKUW2CtARTSdVEpUEOt


t<Ct<lQCJ)L2@t<EOJ

EOtARTHKL2ES pL2CRT LHKP.SRTEOUWL2ES


NKSPQNKS J)EPQt<EOS VS
NKSEOtAS t<o!pSVE

EOt<EOUWPQHKSWliS

EOt<EGVS tu2p
UWPQHKCUWEOJeVE[PQNKS J)EOJJ)pEOtAHKC@t<EOJEOU

EOt<EOUWPQHKSVE2pUWPQHKCUWEOJJsE

S PQEJ)HK@pHKEOUWVCdNKS JPQCUWqbEGUWP.HKCUWEOJ

VEONC@RTRTCUniHKJsnMGEOPQLWgI!J)LEORiMg<l
S VSDUWpEOq!SnLS @NKSnCPQNKS J)E

table

EGJdP.t<EOSV%SSpLCRT L2HKPQS RTEGUWL2EP.CRTCLHKCulC@t}L2SUWL2C

pUWSCRTJHKUWJ)L2SUWP.HKSJVEdNKSP.NKSJsEdJsCUS pL2CRT LHKP.SRTEOUWLErpULHKCpEOVEGUTJsEGtpJ)S VS J


EOUCL2tAS J%M

EUWEG~

Uu

@2%s

LS @NKE[HKJPQt<EOSGL2EOVDS JS

r\_l

J)EOUWLEOUWPQHKS J_X[Z[\]_^\n^b]Mc

EOSD~DHKL

UWCMHKUWHKL2HKS NVSL2S@l>M
UWS[
L2S @NKS[UWCrpEGVELEOUWEOt RT J

B  }P.SRTC@J_t<EGS NKRTEOUWLEO EOJ)L2Cq!HKEOUWENKHKRTHKLS VCCteEON EOP Co!pE}EON@RT FIHKRTCLS RTS WC


VE[pUWS}LpNKSVEO@E[J)EGtRTEOUWCto@pE(
G j k[!@LEOJ)OEOt<CrEGJsLENKKRTHKLEpEOVE[J)EOtPQCUW|@ptAS VC
VE

SpUL2S RTSWCTRTEOUWCt}EGUS NK@pUWCJMJ)HKLHKC@JIldUWSL2S @NKSDUWCpEOVEL2EGUWEOtEONuRTHKJ)RTCaUWCRT@t<E


o!pEpUWSLS @NKSVE[PQS L NKC!CrVEONJ)HKJ)L2EORTSbl

Clusula DEFAULT
DEFAULT value

Entradas
value

iC@JeCJsHK@NKEGJq!S NKC@t<EGJeSt
S[NKS}EOFt<EJ)HKU

pUNKHKLEOtAS N

pUWS}pUWPQHKUDVEpJspSt
HKC

pUWS}pUWPQHKUDUWHKNKS VHKP

m
z

Mi

2q!S NKCt%C@tVEO2EOPQL2CbJ)C@U

Salidas
BDHKUW@pUWSWl

Descripcin

m

iSPQNK pJ)pNKS

Mi

S J)HK!UWSTpUWSYq!S NKCtdC
tMV EO2EOPQLCaSYpUPQS RTC2SLt
SqbGJVEnpUWS
z
imAlmN LHKCVEVS L2CTVEpUq!S NKCt
VEO|UWHKPQHK@UVEPQS RTCTEGUNKSDJ)EOUWL2EGUWP.HKSm
m
CtVEGEGP.LCMVEO@E[PQCt
t<EOJ)CUWVEOt S NLHKCVE[VSL2CMVE[NKS}VEG|UWHKPQHKUnVEGNPQS RTC l

MUWS_CEGt
S PQHKUrVEHKUWJ)EOt<P.HKUM2BDgIm

o!pE_HKUWPQNKp@SpUrPQS RT%CJ)HKUrpUMq!S NKC@tWEOJ)EOPQHK|PQS VC

CtVEO2EOPQLCS J)HK!UWSt
EON!qbSNKC@tBMiiYS N!P.SRTCJ)HbUWCDJ)ENKEt<CCtAPQHKCUWSpUnq!S NKC@teEGFINK
J)HK!UWHK|PQSo!pEro!pEdEOJpUq!S NKCtPQCUWJsLS UWLE!l

PQHKL2CulGgH%EGNqbS NKCtC@tVEGEGP.LCEOJ[pU

literal
CMpUWS
J)HK!UWHK| PQS
niladic-function
user-function
Cq!S NKCtEGJ_EGN@VE[NKS2pUWPQHK@UEOJ)EOPQHK|P.SVSEOUDEGNRTC@RTEGULCVE[NKSHKUWJsEGt<P.HKUl

gHEONq!S NK CtCt VEO2EOPQL2CdEOJpUWS


o!pEVHKP

DS rVC@JeLHKC@JeVE2pUWPQHKC@UWEOJeUWHKNKS VHKPI

UWHKNKS VHKP_MgIm

MemB

Mg mxMdgm

C@UWJ)pNKLENKS J_2pUWPQHKCUWEOJ_MemB

MgIm

gmgg2rB MgIm
LCVS q!KSUWCJsCCt
LS VS J

gg

m MgIm
LCVS q!KSUWCJsCCt
LS VS J

UWHKNKS VHKP_VS LEOLHKRTE

MemB

C@UWJ)pNKLENKS J_2pUWPQHKCUWEOJ_MemB

MemB

C@UWJ)pNKLENKS J_2pUWPQHKCUWEOJ_MemB


MemB

mg

C@UWJ)pNKLENKS}2pUWPQHKUDMemB

mg

eBWl CGsCJ)L2@t<EOJ EGqbS NKSL2CVS JNKS JEOFI%tAEGJsHKCUWEOJCt%VEO2E.PQL2C}EGUd EONORTC@

mUdNKS_q!EOtAJsHKUMS PQL2pS NG2q

RTEOUWLCEOUo!pENKSLS @NKSEOJVEO|UWHKVSWlCt[LS UWLC@!NKS J[2pUWP.HKCUWEOJo!pErJ)C@UUWCUWPQS P


PQC@RTC

CURRENT_TIMESTAMP

EOS@NKEO

pEGVEOUUWCYt<CVpP.HKtEONEO2EGP.LCVEGJsEGS VCulGS t
SrEONP.SJsCS t<

[v

L2HKPQpNKS tb
V

EeLHK C@JVS LE!IL2HKRTEeQJ)EepEOVEL2tAS @S)S tbJsC@t<EeEOJ)L2EPQC@RTCtAL2S RTHKEGUWL2CpJ)S UW


V C



di

tw

xv

5UWC@~D EOUdNKp!S tbVE

m

}i

yw v

UWC~D _C

m

Mi

MemB

m
z

m%g

z
z
mJ)L2Cd2pEOtA S[CJ)L2@t<EOJSPQCUWJsHKVEOt
St NSPQC@UWJ)LS UWL2EP.CRTCMpUL2HKCMJ)L2tAHKUWMS J)P.CUWq!EOtAL2HKtANKSS N
q!S NKC@t L2HKRYEOJ)L2S RTnEGULHKEORTCrVE[E
EOPQpPQHK@Ul

Uso
S t
SS J)HK!UWStdpUq!S NKC@t}PQC@UWJ)LS UWL2EPQCRTCq!S NKCtdCtVEO2EOPQL2CS tASNKCJPQS RTCJ
OpUWS}P.SVEUWS}SNP.SRTC

number

CREATE TABLE
did
number
total
);

did

did

S UWV

video_sales (
VARCHAR(40) DEFAULT luso films,
INTEGER DEFAULT 0,
CASH DEFAULT $0.0

S t
SS J)HK@UWS tupUWSJ)EOPQpEOUWPQHKSEOFHKJ)L2EOUWLEPQCRTCrq!S NKCt C@tuVEGEGP.LCdS tAS[EGNP.SRTC
NKHKL2EGt
S N%S t
S[EONPQS RTC

name

OrpU

did

CREATE TABLE distributors (


did
DECIMAL(3) DEFAULT NEXTVAL(serial),
name
VARCHAR(40) DEFAULT luso films
);

Column CONSTRAINT Clause


[ CONSTRAINT name ] { [
NULL | NOT NULL ] | UNIQUE | PRIMARY KEY | CHECK constraint } [, ...]

Entradas
name
MUUWCRT@t<E[S tA@HKL2tAS tAHKCrVS VCMSNKSt<EOJ)L2tAHKPQP.HKUVE[HKUWLEO@tAHKVS VngIHUWCJ)E[EOJ)EGP.HK|PQS

na-

J)E@EOUWEGt
S}VENKCJUWCRT@tAEGJVEN!LS @NKSPQS RTCJ)INKCo!pE}S J)EO@pt
S}pUWHKPQHKVS VYSt
S

me l
name



wbl

BDdii

{z

mNP.S RYCpEOVE[PQC@UWLEOUWEOtqbSNKC@t<EOJBMiil J)LSEOJeNKSCP.H@UC@tVEO2EOPQLC l

BD

BDMii
mNPQS RTCUWCapEGVEDPQCUWL2EOUWEG tq!S NKCt<EOJdBDdiilImJ)LCaEOo@pHKqbSNKESnNKSt<EGJsLt
HKPQPQHKUVE
P.SRTCrDm

column

BD

BDMii>l

MBhMMm
mN@PQS RTCVEO@EPQCUWL2EGUWEOtepUq!S NKCtUWHKPQC lQmUCJ)L2@t<EOJEGJsLCEOJ2CtA S V%C%C@teRTEGVHKC
VE[NKSPQt<EOS PQHKUHKRTNKKPQHKLS}VE[pUDKUWVHKPQEUWHKPQCJ)C!t<ENKS}L2S @NKSWl

e2

[m

mJ)L2EPQS RTCdEOJpUWSPQNKS q!Et


HRTS t
HKSGNKCMo!pEHKRTNKHKPQS[o!pE[NKSpUWHKP.HKVSVEOJ2Ct
SV%S[C@t
EONJsHKJ)LEORTSTo!pECL2tAS JL2S @NKS JpEOVEGUPQCUW|S t[EOUEOJ)LErP.SRTCYPQC@RTCYHVEOUWL2HK|PQS VCt

UWHKP.CrS tASNKC@Jet<EO@HKJ)L2t<CJl>C@UWJ)pNKLE

mS tASRTJ_HKUW2Ct
RTS PQHKUl

constraint
iSVEO|UWHKPQHK@UVE[NKS}t<EGJsLtAHKP.PQHKUl

Descripcin

iSP.NKpJspNKSC@%P.HKCUWS NIVEt<EOJ)Lt
HKPQPQHK@Ur2MBDg

2B

EGJ)EOPQHK|PQSt<EOJ)L2tAHKPQP.HKCUWEOJCdq!EOtAHK|P.S

o!p}VEO@EOUnP.pRTNKHKt_NKSJ[UbpEGqbSJHKUWJ)EOt<P.HKCUWEOJCDNKS JSP.LpS NKHK SGPQHKC@UWEGJ[%S t


Sdo!pEpUWSMCEOtAS
PQHK@UVEHKUWJ)EOt<PQHK@UCVESP.LpS NKHK S PQHKULEOUW@SnOFHKL2CulS VSDt<EOJ)L2tAHKPQP.HKUVEG@EEGqbS NKpSt
J)ES
pUWSEOFt<EOJ)HK@U@C@CNKEOS UWSbl C@UpUWSUWHKP.St<EOJ)Lt
HKPQPQHK@UJ)ErpEOVEGUat<EO2E.t<EOUWPQHKS tRTNKLHKNKEOJ
S Lt
HK@pLC@J l
mNpJ)CMVE[e2
S LHK@NKE[PQC@UDEONpJ)CVE

mPQC@RTCrt<EOJ)L2tAHKPQP.HKUVEL2S @NKS[EOJRTpL2pS RTEGUWL2EHKUWP.CRT

mPQC@RTCrt<EOJ)L2tAHKPQP.HKUDVE[PQS RTCul

MUWS}t<EOJ)Lt
HKPQPQHKUnEOJ_pUWSdt<EG!NKS}PQCUnUWCRT@t<E!spUnCGEGL2CgIhMiTo!pES @pVS}SVEO|UWHKtPQCU pUW

L2CJ[VE q!S NKCt<EOJq! NKHKV
CJC@UWHKEGUWVCNKRTHKL2EGJSdNKC@Jt<EOJ)pNKL2SV%CJVEdNKS JCEOtAS PQHKC@UWEGJ[BDgIm
M
z

mCt
z

mim

mnJ)C@tAEpUWS}L2S @NKSWl

mFHKJsLEOUrVC@JRTS UWEGt
SJ VEVEO|UWHKtut<EOJ)L2tAHKPQP.HKCUWEOJVEHKUWLEO@t
HKVSV<t<EGJsLt
HKPQPQHKCUWEOJVEL2S@NKS Go!pE
q!EOt<ERTCJRTJ_S VEGNKSOUWLEO t<EGJsLt
HKPQPQHKCUWEOJVEPQS RTCo!pES J)S RTCJ_SqbEGt>l
MUWS}t<EOJ)Lt
HKPQPQHKUnVEPQS RTCEGJpUWSt<EOJ)L2tAHKPQP.HKUVEHKUWL2EO@tAHKVS VYVEO|UWHKVS}PQC@RTC%S t
LEVENKS
VEO|UWHKPQHK@UVEPQS RTCrNK@HKP.SRTEOUWL2EJ)EPQCUWqbHKEGt
LEEGUpUWS[t<EGJsLt
HKPQPQHKUVEL2S @NKSUWS VSRT J
J)EOtPQt<EOSGVSWl>iS Jet<EGJsLtAHKP.PQHKCUWEOJeVE[PQS RTCVHKJsCUWHK@NKEOJeJ)C@U

e2

[m

em@mmBDmg
MBhMMm
Dm

BD

BDMii

Nota: Postgres todava no soporta (en su versin 6.5) restricciones de integridad especificadas por REFERENCES. Se acepta la sintaxis pero se ignora la clusula (disponible,
en cambio, a partir de la versin 7.0)



Restriccin NOT NULL


[ CONSTRAINT name ] NOT NULL

iSt<EOJ)L2tAHKPQP.HKUB

BDMiiEOJ)EOPQHK|PQSDpUWSDt<EO@NKSDo@pEDC@NKHK!SDo!pEDpUaPQS RTCP.CUWLEOUW@S

Hz

UWHKPQS RTEOUWLEMq!S NKC@t<EOJUWCUWpNKCJl J)LSEOJUWHKPQS RTEOUWLErpUWSrt<EOJ)Lt


HKPQPQHK@UTVEMPQS RTCnUWCJ)E
EOtARTHKL2EP.CRTCt<EOJ)Lt
HKPQPQHKUVE[L2S@NKSWll

Salidas
status

ERROR: ExecAppend: Fail to add null value in not null attribute "column".
mJ)L2EEOtAt<C@t%C@PQptAt<EEGULHKEORTCVEE
EOPQpPQHK@UrP.pS UWVCJs E_HKUWLEOUWLSHKUWJ)EOtAL2S t%pUq!S NKCt
UWpNKCrEOUDpUDP.SRTCo!pEPQCUWL2HKEGUWENKS}tAEGJsLtAHKP.PQHKUBD

BMiil

Descripcin

Uso

EO|UWHKtVCJt<EOJ)L2tAHKPQP.HKCUWEOJVEP.SRTCrB

z
PQpSNKEOJJsE[UWC@RT@tASW

BDdiiEGUNKSL2S@NKS

CREATE TABLE distributors (


did
DECIMAL(3) CONSTRAINT no_null NOT NULL,
name
VARCHAR(40) NOT NULL
);

Restriccin UNIQUE
[ CONSTRAINT name ] UNIQUE

Entradas

MBDg

name

MUWSEGL2HKo!pEGL2S}S tA@HKL2tAS tAHKSVS VSS}pUWSt<EOJ)Lt


HKPQPQHK@Ul

"

pUWSVENKS J

distributors

Salidas
status

ERROR: Cannot insert a duplicate key into a unique index.


mJ)L2E}EOtAt<C@tCP.ptAt<EEOULHKEORTCVEEAEGP.pPQHKUJ)HbJ)E}HKUWL2EOUWLSdHKUWJsEGt
LS tpUnqbS NKCteVp
%NKHKP.S VCrEGUpUDPQS RTCul

Descripcin
iSt<EOJ)Lt
HKPQPQHK@UdBDhMMm

EGJs%EOPQHK|PQSpUWSYt<EO@NKSYo!pEnC@NKHK!STSYpU!t<pCVEnpUWCCRT J

PQS RTCJeVEpUWSL2S @NKSSP.CUWLEOUWEOtqbS NKCt<EOJUWHKPQC@J l


iS JdVEO|UWHKPQHKCUWEOJVED
PQS RTCVEDNKSJrPQCNKpRTUWS JMEOJ)EOPQHK|P.SVS JdUWCaLHKEOUWEGUCt<o!pHKUWP.NKpHKt
p
UWStAEGJsLtAHKP.PQHKUBD

BMiiPQCUWJsLt
SHKUWL!%S t
SJ)EOtHKUWPQNKpVC@JEGUpUWSt< EOJ)L2tAHKPQP.HKUrMBD2hrdml

EGUWEOtRT JVEMpUq!S NKCt


 UWpNKCYEGUpUPQS RTCn
J)HKUaNKSt<EOJ)Lt
HKPQPQHK@UBD
t<EOJ)L2tAHKPQP.HKUdBDhM dmlA
PQC@UWq!EOUWLHKC@Ul)gIEOE[L

HKJVEOq!HKS LEOJ2t<C@RL

BDMii@UWCq!HKCNKSNKS

EgIhMij kVEO|UWHKL2HKCUW@pL!HKJeSRTCtAEJ)EOUWJ)HK@NKE

EJ)EOPQL2HKCUC@UDPQC@RT%S L2HK@HKNKHKL2C@t RTCt<EVEOLS HKNKJ l )l

S VSnt<EOJ)L2tAHKP.PQHKUVEP.S RT%CMBhMMm

VEO@EnUWCRT@tAS tMpU

PQS RT%Co!pEEOJVHKJsLHKL2UWCVEGN

PQC@U pUWL2CrVE[PQS RTCJ_UWCRT@tAS VCJeCt P.pSNKo!pHKEOtCLt


S[tAEGJsLtAHKP.PQHKUDMBD2hrdmCMe2

mVEO|UWHK2S JCtNKSLS @NKSWl

Nota: Postgres crea automticamente un ndice nico por cada restriccin UNIQUE, para
asegurar la integridad de los datos. Vea CREATE INDEX para ms informacin.

Uso
EO|UWEpUWSt<EOJ)L2tAHKPQPQHK@UrVE_P.SRTCMBD2hrdmS tASNKSLS @NKS[VHKJsLtAHK!pLC@tAJ lAiS J t<EOJ)L2tAHKPQPQHKC@UWEGJ
z

VE[PQS RTCMMBhMMmnJ)CNKCJ)C@UVEO|UWHKVS JJ)C!t<EpUDPQS RTCrVE[NKS}LS @NKSW

CREATE TABLE distributors (


did
DECIMAL(3),
name
VARCHAR(40) UNIQUE
);
NKCo!pEEGo!pHKq!S NKE[S}NKSJ)HK@pHKEOUWL2Et<EOJ)Lt
HKPQPQHK@UVE[L2S!NKSb

CREATE TABLE distributors (


did
DECIMAL(3),
name
VARCHAR(40),
UNIQUE(name)
);

La restriccin CHECK
[ CONSTRAINT name ] CHECK
( condition [, ...] )

Entradas
name
MUDUWCRT!t<ESt
@HKLt
SGtAHKCVS VCMS}NKSt<EOJ)Lt
HKPQPQHK@Ul

condition
pS NKo@pHKEOtEOFt<EJ)HKUPQC@UWVHKPQHKCUWS Nq! NKHKVSo!pEJ)EEGqbS NKpESpUt<EOJ)pNKL2SVC}@C@CNKEOUWS UWCul

Outputs
status

ERROR: ExecAppend: rejected due to CHECK constraint "table_column".


mJsLEEOtAtACtCP.ptAt<EEOULHKEORTCMVEEAEGP.pPQHKUJ)HIS NK@pHKEGUHKUWLEOUWL2S[HKUWJ)EOt
LS tupUq!S NKCt
HKNKEG!S NIEOUDpUPQS RTCrJ)pIEGL2CSpUWStAEGJsLtAHKP.PQHKUDDml

Descripcin
iSt<EOJ)Lt
HKPQPQHK@UTDm

EOJ)EOPQHK|P.SrpUWStAEGJsLtAHKP.PQHKUJsC@t<EMNKCJ}q!S NKCtAEGJ%EOt
RTHKLHKVCJ}EOUpU

PQS RTCul>iSt<EOJ)L2tAHKPQPQHK@UDmL2S RT@HKGUJ)EEGt


RTHKLE[PQC@RTCt<EOJ)L2tAHKPQP.HKUVE[LS @NKSWl
iS Jt<EGJsLHKPQP.HKCUWEOJVEYPQS RT%CDmVETgIhMij kYJ)NKCpEGVEOU

J)EGtMVEO|UWHKVS JJ)C@t<ETpU

PQS RTCDVEMNKSML2S @NKS J)CNKS RTEOUWLEMpEOVEGUTt<EOEOtAHKtAJsEdSrpUTPQS RTCulGC@J)L2@t<EOJ[UWCL2HKEOUWEdEOJ)L2S


t<EOJ)L2tAHKPQP.HKUl

Restriccin PRIMARY KEY


[ CONSTRAINT name ] PRIMARY KEY

Entradas

MBDg

name

MUDUWCRT!t<ESt
@HKLt
SGtAHKCS tASNKSt<EOJ)Lt
HKPQPQHKUl

Salidas
ERROR: No se puede insertar un valor duplicado en un ndice nico.
mJsLC}CP.ptAt<EeEOUdLHKEORTC}VE_E
EOPQpPQHK@UMJ)H SNK!pHKEOUdHKUWLEOUWLSHKUWJ)EGt
LS t%pUMq!S NKC@t%VpNKHKPQS VC
EOUpUWS}PQC@NKpRTUWS}J)pIEOL2S}SpUWS}t<EGJsLt
HP.PQHKU

aml

Descripcin
iSt<EOJ)L2tAHKPQP.HKUYVE}PQS RTCe2

mEGJs%EOPQHK|PQSdo!pEdpUYPQS RT%CVEpUWSdL2S!NKSdJ)C@NKS

RTEOUWLEpEOVEPQC@UWLEOUWEGt q!S NKCt<EOJUWHKPQC@J2UWCdVpNKHKPQS VCJs!MUWCMUWpNKC@J}l


iSVEO
|UWHKPQHK@UVENKS
PQC@NKpRTUWSdEOJ)EOPQHK|P.SVSUWCLHKEOUWE}o!pEdHUWP.NKpHKtepUWSdt<EOJ)L2tAHKPQP.HKUEGFINKPQHKL2SdBD

J)EOtHKUbP.NKpVSEOUDpUWS}t<EOJ)L2tAHKPQPQHK@Ue2

BDdiiYS t
S

[ml

gNKCrJsEpEOVE[EGJsEGP.H|PQS t pUWS}UWHKP.SP.NKSqbEt
HKRTSt
HKS2

amWC@tL2S @NKSbl

Notas
C@J)L!t<EOJMPQt<EOSnS pLCRT L2HKPQS RTEGUWL2
EpUUWVHKPQEUWHKPQCS tASnS J)EO@ptAS tNKSHKUWL2EG!tAHKVS VVENKCJ
VS LC@J l>2EOSNKS}J)EOUbL2EOUWPQHKSem

mnB
z

e
m

iSt<EOJ)L2tAHKPQP.HKUVEPQNKS q!EtAHKRTS tAHKS2

[m!VEO@EUWC@RT@tAS tpUPQCU pUWLCdVEPQS RT

CJo!pEUWCTJ)EOS UPQCUWL2EOUWHKVC@J}%C@t[UWHKUW@pUWSC@LtASDt<EGJsLt
HKPQPQHKUdBD2hrdmVEO|UWHKVCJ}CtNKS
RTHKJ)RTSnLS @NKS %@Sno@pEDt<C@VpPQHKtAKSDpUWSnVpNKHKPQS PQHKUVEDUWVHKPQEOJdEOo@pHKq!S NKEGUWL2EOJdap
UWSnJ)C
@t<EPQS t<@SS VHKPQHKC@UWSNuEOUaL2HKEGRTCTVEE
EOPQpPQHK@Ul gHKUEORT@S t<@C@bCJsL!t<EGJ}UWCNKCYVEOJ

S @HKNKHKLS

EOJ)EOPQK|PQSORYEOUWL2E@l

Clusula CONSTRAINT para tablas


[ CONSTRAINT name ] { PRIMARY KEY | UNIQUE } ( column [, ...] )
[ CONSTRAINT name ] CHECK ( constraint )

Entradas

MBDg

name

MUDUWCRT!t<ESt
@HKLt
SGtAHKCVS VCMS}pUWSt<EOJ)Lt
HKPQPQHK@UDVEHKUWL2EO@tAHKVS Vl

column

Dblll F

mN_UWC@RT@t<EYVENKC@JDPQS RTCJS tASTNKC@JD


o@pETVEG|UWHKRTCJpU

Dm

[m!pUWS}t<EOJ)Lt
HKPQPQHK@UDBD

constraint

UWVHKP.EYUWHKPQC. S tASNKS

BDMiil

MUWSEGFIt<EOJ)HKUD@C@CNKEOS UWSS}J)EOt EOq!S NKpS VCrPQC@RYCNKSt<EOJ)L2tAHKPQPQHK@Ul

Salidas
iS JCJ)HK!NKEGJ_J)S NKHKVSJS tASNKSPQNK pJ)pNKSVEt<EGJsLtAHKP.PQHKUVE[LS @NKS JJ)C@UDNKS JRTHKJ)RTS Jeo!pE[S tAS
NKS JS tAL2EGJePQCt
t<EOJ)CUWVHKEOUWLEOJeVE[NKSPQNK pJ)pNKS}t<EOJ)L2tAHKPQP.HKUVEP.S RYC l

Descripcin
MUWSdt<EOJ)L2tAHKPQP.H@UYVEL2S@NKSrEOJpUWSMtAEGJsLtAHKP.PQHKUYVEHKUWL2EO@tAHKVS VVEG|UWHKVS VJ)C@tAEpUWCnCRT J
PQS RTCJeVEpUWSL2S @NKS@SJsE@l>iS JP.pSL2t<CMqbS tAHKS PQHKCUWEOJVEt<EOJ)L2tAHKPQPQHKC@UWEOJVEL2S @NKSJ)CU

MBhMMm
Dm

e2

[m

!MmB

[m

Nota: Postgres todava no soporta (en su versin 6.5) las restricciones de integridad
FOREIGN KEY. El compilador entiende la sintaxis de FOREIGN KEY, pero solo imprime
un aviso e ignora la clusula. Las claves ajenas pueden ser parcialmente emuladas por
medio de triggers (Consulte la sentencia CREATE TRIGGER).

Restriccin UNIQUE
[ CONSTRAINT name ] UNIQUE ( column [, ...] )

Entradas

MBDg

name

MUDUWCRT!t<ESt
@HKLt
SGtAHKCVS VCMS}pUWSt<EOJ)Lt
HKPQPQHK@Ul

column
MUDUWCRT!t<EVE[pUDP.S RYCEOUDpUWSLS @NKSWl

Salidas
status

mer)S UWUWCL%HKUWJ)EOtALWSVpNKHKPQS LE[@EOHKUWLCS}pUWHKo@pE[HKUWVEOF%l


mJ)L2E}EOtAt<C@tCP.ptAt<EEOULHKEORTCVEEAEGP.pPQHKUJ)HbJ)E}HKUWL2EOUWLSdHKUWJsEGt
LS tpUnqbS NKCteVp
%NKHKP.S VCrEGUpUDPQS RTCul

Descripcin

iStAEGJsLtAHKP.PQHKUMBhMMmEOJ)EOPQHK|P.SpUWSt<EO@NKSEOUNKSo@pEpU@tApCdVEpUWC
PQC@UWJ)L2tAS HKUWL Js%EOPQHK|EGJSt<pNKErL

EMBhMMm

S LS@t<C@paCCUWEC@tCRTJPQS RTCJVHKqbEGt
J)CJVErpUWSLS

@NKS}pEOVEPQCUWL2EOUWEGtJ)C@NKCqbS NKCt<EOJeUWHKP.CJ lsmN!PQCRTC@tALS RTHKEOUWLCVENKS}t<EOJ)L2tAHKPQP.HKUVEL2S!NKS


MBhMMmYEOJEGNbRTHKJ)RTCDo!pE%S t
SNKSdt<EOJ)L2tAHKPQP.HKUVE}PQS RTCIP.CUYNKSCJsHK@HKNKHKVS VS VHKP.HKCUWS N
VE[S %NKHKP.S tANKCMSRT JeVE[pUDPQS RTCul
CUWJ)pNKLENKSJ)EOPQPQHK@UJ)C@@t<E[NKSt<EOJ)L2tAHKP.PQHKUDVE[PQS RTCrMBD2hrdmnS tASRTJ_VEGL2S NKNKEGJl

Uso
EO|UWEpUWSt<EOJ)L2tAHKPQPQHK@UDVE[LS @NKSdBDhMMmEOUDNKSL2S@NKSVHKJ)L2tAHK@pL2Ct
J
z

CREATE TABLE distributors (


did
DECIMAL(03),
name
VARCHAR(40),
UNIQUE(name)
);

Restriccin PRIMARY KEY


[ CONSTRAINT name ] PRIMARY KEY ( column [, ...] )

Entradas

MBDg

name

MUDUWCRT!t<ESt
@HKLt
SGtAHKCS tASNKSt<EOJ)Lt
HKPQPQHKUl

column

Dblll F

iC@JeUWCRT!t<EGJ_VEpUWCCRT JePQS RTCJ_EOUNKS}LS @NKSWl

Salidas
status

mer)S UWUWCL%HKUWJ)EOtALWSVpNKHKPQS LE[@EOHKUWLCS}pUWHKo@pE[HKUWVEOF%l


mJ)L2CCPQpt
t<EEOUnL2HKEGRTCVEE
EOPQpP.HKUJ)H!S NK!pHKEGUHKUWLEOUWL2SdHKUWJ)EOtAL2S tpUq!S NKCteVp
%NKHKP.S VCEOUpUYPQS RT%CJ)pIEOLCSdpUWSMt<EGJsLtAHKP.PQHKUYVE}P.NKSqbEtAHKRTS tAHKSd

[m>l

Descripcin
iSt<EOJ)L2tAHKPQP.HKU

[mEOJ)EOPQHK|PQSMpUWSdt<EO@NKS}EOUNKSdo!pE}pUY!t<pCVE}pUWCDCRT J

PQS RTCJVEpUWSDLS @NKSpEGVEPQCUWL2EGUWEOtJ)@NKCq!S NKC@t<EGJ}UWHKPQC@JM2UWCTVpNKHKPQS VCJsaUWCUWp


NKC@J liS JVEO|UWHKP. HKCUWEOJ}VErPQS RTCYVENKCJPQS RTCJ}EOJ)EOPQHK|PQS VCJ}UWCTUWEOPQEOJ)HKLSHKUWP.NKpHKtpUWS
t<EOJ)L2tAHKPQP.HKUBD

BDMiiS tASJ)EOtHKUWPQNKpVSEOUDpUWS}t<EOJ)L2tAHKPQPQHK@Ue2

iSrt<EOJ)Lt
HKPQPQHKUVEdL2S @NKSMe

[m

CPQC@UTNKSdCJsH!HKNKHKVS VVEEOFL2EOUWVEOt
NKS~DHKL

[m l

EG JJ) HKRTHKNKS tSNKSt<EOJ)EOPQLHKqbSMt<EOJ)L2tAHKPQP.HKUVEMPQS RT


L

ES VVHKLHKC@UWS NbP.SSO@HKNKHKLCuEOUWPQCRTS J)J)HKUW

RTpNKL2HKNKE[P.CNKpRTUWJ l
CUWJ)pNKLEdNKSMJ)EOPQP.HKUTJ)C@@t<ENKSrt<EOJ)L2tAHKPQPQHK@UYVEPQS RTCe2

mS tASdRT JHKUW2C@RTS

PQHK@Ul

Uso
t<E.S}NKS JL2S @NKS J|NKRTJVHKJ)L2tAHK@pL2Ct
J

CREATE TABLE films (


code
CHARACTER(5) CONSTRAINT firstkey PRIMARY KEY,
title
CHARACTER VARYING(40) NOT NULL,
did
DECIMAL(3) NOT NULL,
date_prod DATE,
kind
CHAR(10),
len
INTERVAL HOUR TO MINUTE
);

CREATE TABLE distributors (


did
DECIMAL(03) PRIMARY KEY DEFAULT NEXTVAL(serial),
name
VARCHAR(40) NOT NULL CHECK (name A(@ )
);

t<E.S}pUWSL2S!NKSP.CUpUSt
tASOVE[k}VHKRTEGUWJsHKCUWEOJ

CREATE TABLE array (


vector INT[][]
);

EO|UWEpUWS[t<EOJ)L2tAHKPQP.HKUVELS @NKS[dBDhMdmDSt
SNKSL2S @NKS|NKRYJlAiS Jt<EOJ)L2tAHKPQPQHKC@UWEGJVELS @NKS
z

MBhMMm%pEGVEOUDJ)EOt VEO|UWHKVS JeJsC@t<E[pUWCCrRT JeP.SRTC@JeVE[NKS}LS @NKSW

CREATE TABLE films (


code
CHAR(5),
title
VARCHAR(40),
did
DECIMAL(03),
date_prod DATE,
kind
CHAR(10),
len
INTERVAL HOUR TO MINUTE,
CONSTRAINT production UNIQUE(date_prod)
);

EO|UWEpUWSt<EOJ)L2tAHKPQPQHK@UDVE[PQS RTCrDm
z

CREATE TABLE distributors (


did
DECIMAL(3) CHECK (did > 100),
name
VARCHAR(40)
);

EO|UWEpUWSt<EOJ)L2tAHKPQPQHK@UDVE[LS @NKSDm
z

CREATE TABLE distributors (


did
DECIMAL(3),
name
VARCHAR(40)
CONSTRAINT con1 CHECK (did > 100 AND name > )
);

EO|UWEMpUWSt<EOJ)Lt
HKPQPQHK@UTVEdL2S @NKSr
z

VE[LS @NKSe2

[m

St
SMNKSL2S!NKSM|NKRTJlOiSJt<EOJ)Lt
HKPQPQHKCUWEOJ

[mapEOVEOUJ)EOtVEO|UWHKVS JJ)C@@t<E[pUWCCRT JeP.SRTC@JeVE[NKSL2S @NKSW

CREATE TABLE films (


code
CHAR(05),
title
VARCHAR(40),
did
DECIMAL(03),
date_prod DATE,
kind
CHAR(10),
len
INTERVAL HOUR TO MINUTE,
CONSTRAINT code_title PRIMARY KEY(code,title)
);

EO|UWErpUWSt<EOJ)L2tAHKPQP.HKUVEMPQS RTCn
z

L2tAHKPQPQHKC@UWEOJVEP.SRTCe

[m

S tASNKSLS @NKSVHKJ)Lt
HK@pLC@tAJ l iSJt<EOJ)

mJ)CNKS RTEOUWLEJ)E}pEOVEOUVEO|UWHKteSt
S}pUYPQS RTCVE

NKSLS @NKS2NKC@JeJ)HK!pHKEOUWLEOJ_VC@JeE
EORTNKCJ_J)EOtAS UEOo!pHKq!S NKEOUWLEOJ)

CREATE TABLE distributors (


did
DECIMAL(03),
name
CHAR VARYING(40),
PRIMARY KEY(did)
);

CREATE TABLE distributors (


did
DECIMAL(03) PRIMARY KEY,
name
VARCHAR(40)
);

Notas
m

im2BDDm

gEOJpUWS}EOFL2EOUWJ)HKUnSNNKEOUW!pS>EVEC@J)L2@t<EOJ l



Compatibilidad
SQL92

VEGRTOJV EeNKS_LS @NKS_LEORTC


t
S NOq!HKJ)HK@NKEeNKC@PQS NKRTEGUWL2EOQgIhMij k_VEG|UWEpUWSJsEGUWL2EOUWPQHKS em
iM

mM

im rC@PQHKCUWS NKRTEOUWLEpUWS}P.NKpJspNKSMB

r

CREATE GLOBAL TEMPORARY TABLE table ( column type [


DEFAULT value ] [ CONSTRAINT column_constraint ] [, ...] )
[ CONSTRAINT table_constraint ] [ ON COMMIT { DELETE | PRESERVE } ROWS ]

S t
SdLS @NKS JL2EGRTC@tAS NKEGJsNKSrJ)EOUWLEOUWPQHKSm

mTiM

mM

imTUWCRT

@t
SpUWSrUWpEGqbSdLS @NKSMq!HKJ)HK@NKEdSdC@Lt<C@JPQNKHKEOUWLEOJVEO|UWENKC@JPQS RTCJVE}NKSMLS @NKSdnNKSJt<EOJ)
L2tAHKPQPQHKC@UWEOJ l

iSP.NKpJspNKSC@%P.HKCUWS NIMB

VEm

mr

imEOJ)EOPQHK| P.SJ)HINKS

L2S!NKS}LEORTCtAS N!VEO@Eq!S P.HKSt


J)EVEt<EO@ HKJ)L2t<CJPQS VSq!EOo!pEJ)EE
EOPQpL2SpUr
gH@J)E}C@ RTHKLENKSPQNK pJ)pNKSrBM
mim
z

m

gl

S t
S[PQtAEGS tupUWS}L2S @NKSL2EORTCtAS N

CREATE TEMPORARY TABLE actors (


id
DECIMAL(03),
name
VARCHAR(40),
CONSTRAINT actor_id CHECK (id A
) ON COMMIT DELETE ROWS;

150)

Clusula UNIQUE
ghMijkEOJ)EOPQHK|PQSS NK@pUWS J_CJ)HK@HKNKHKVS VEOJS VHKP.HKCUWS NKEOJeS tASdBDhMdm
EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHK@UVE[L2S @NKSW
z

[ CONSTRAINT name ] UNIQUE ( column [, ...] )


[ { INITIALLY DEFERRED | INITIALLY IMMEDIATE } ]
[ [ NOT ] DEFERRABLE ]

EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHK@UVE[P.SRTC

[ CONSTRAINT name ] UNIQUE


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]



CUWCu
l

JsES J)pRTE}NKSC@PQHKUYCtVEO2EOPQLC@MBr

clusula NULL
iSDtAEGJsLtAHKP.PQHKUBDdii2t<EOS NKRTEGUWL2EUWCEOJMpUWSnt<EOJ) L2tAHKPQPQHK@UWeEGJrpUWSEOFL2EOUWJ)HKUC@J)L!t<EOJdS
ghMijk_HKUWP.NKpVSCtJ)HKRTEOLt
SP.CUMNKSP.NKpJ)pNKSBD

BDMii_lCRTCEOJuEGN q!S NKCt%CtVEGEGPQL2C

S tASPQpS NKo!pHKEOtPQS RTCJspnt<EOJ)EOUbP.HKSEGJtAEGVpUWVS UWLE!l

[ CONSTRAINT name ] NULL

clusula NOT NULL

ghMijkEOJ)EOPQHK|PQSS NK@pUWSC@J)HK@HKNKVS VSVHKP.HKCUWS NSt


SB

BDdii

[ CONSTRAINT name ] NOT NULL


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

clusula CONSTRAINT
ghMijkEOJ)EGP.HK|PQSnS NK@pUWSCJ)HK@HKNKHKVS VS VHKPQHKCUWS NS tASnt<EGJsLtAHKP.PQHKCUWEOJ)aL2S RT@HKGUVEO|UWE
t<EOJ)L2tAHKPQP.HKCUWEOJVE[SJsJ)EOtALHKC@UWJ_VE[VC@RTHKUWHKCul

Nota: Postgres todava no soporta ni dominios ni assertions.

MUWSSJsJ)EOtALHKC@UEOJpUL2HKCEOJ)EOPQHKS N%VErt<EOJ)Lt
HKPQPQHK@UTVEMHKUWL2EO@tAHKVS VaP.CRTS tAL2ErEGNRTHKJsRTC
EOJ)S PQHKCMVE[UWCRT!t<EGJ_PQCUCL2tAS Jet<EOJ)L2tAHKPQP.HKCUWEOJ l>gIHKUDEORT@S t<@C@pUWS}S J)J)EOtAL2HKCUDUWCEGJ_UWEOPQEOJ)S
t
HKSRTEOUWL2EVEGEOUWVHKEOUWLEVEpUWS[S tAL2HKPQpNKS t
LS @NKS@S JsE
PQCRTCrJ)CUNKS Jt<EOJ)L2tAHKPQP.HKCUWEOJ)S J)Io!pE
ghMi2jGk}t<C@Ct<PQHKC@UWSNKS}J)EOUbL2EOUWPQHKS}m

gIgIm

MBPQC@RTCpUnRTGL2CVCS NKLEOtAUWS LHKqbC

S tASVEG|UWHKtpUWSt<EOJ)L2tAHKPQP.HKU

CREATE ASSERTION name CHECK ( condition )

iS Jet<EOJ)L2tAHKPQP.HKCUWEOJeVEVCRTHKUWHKCJ)E}VEO|UWEOUnPQCUnNKSJ_J)EOUWLEOUWPQHKS Jem


m
z

2Ba

i

eEGJsLt
HKPQPQHKUVE[VCRTHKUWHKC

[ CONSTRAINT name ] CHECK constraint


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHKC@UWEGJeVEL2S @NKSW

[ CONSTRAINT name ] { PRIMARY KEY ( column, ... ) | FOREIGN KEY constraint | UNIQUE constraint | CHECK constraint }
[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]



EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHKC@UWEGJeVEP.SRTC
z

[ CONSTRAINT name ] { NOT NULL | PRIMARY KEY | FOREIGN KEY constraint | UNIQUE | CHECK constraint }
[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

MUWSVEO|UWHKP.HKUDVE[t<EOJ)Lt
HKPQPQHK@UDVEHKUWL2EG!tAHKVS Vn2MBDg
@pL2CDCDPQNK pJspNKS
PQpSNKo!pHKEOt C@t<VEGUl

m!m
z

bpEGVE[PQC@UWLEOUWEGtpUDS L2tAHK

imTICDpUWSrPQNK pJ)pNKSrVEONbRTC@VCDHKUWHKPQHKS N%VE}t<EOJ)L2tAHKPQPQHK@UWEOU

BD
z

m!m

im

J)HK@UWHK|PQSo!pENSt<EOJ)Lt
HKPQPQHK@UrVEO@EeJ)EOtPQCRTt<C@@S VSVEOJ)pOJ VENKSEAEOPQpPQHKUVE_PQS VS
JsEGUWL2EOUWPQHKSgIhMil

m!me
z

im

J)HK!UWHK |PQSo!pEMNKSq!EOtAHK|PQS PQHK@UYVEONWPQpRTNKHKRTHKEOUWLCVENKSt<EOJ)L2tAHKPQPQHK@UY%pEGVEdJ)EOt_S %NKS


S VWC

S J)L2S}RTJ_LS t<V%EGEOt<CrUWCRT J_LS t<VWEo!pEEON|UWS NVENKSS PQLpS NL2tAS UWJ)S PQPQHK@Ul

mNIRTCVCMVEt<EOJ)Lt
HKPQPQHK@US t
SPQS VSt<EOJ)L2tAHKPQP.HKULHKEOUWE[J)HKEORTt<EpUqbSNKC@tuHKUWPQHKS NICt VEO2EOPQL2C
o!pEJ)E[EOJ)LS @NKEOPQE[S tASNKSt<EGJsLt
HKPQPQHKUSNt
HKUWPQHKHKCrVENKSLt
S UWJ)S PQPQHKUl

BD

ii2m
z

JsHK@UWHK|P.So@pEO!VEOJ)VEMEGN%t
HKUWPQHKHKCnVEMNKSLt
SUWJsS PQPQHKUW!NKSt<EOJ)L2tAHKPQP.HKUVEO@EJsEGtPQC@RT
t<C@@S VWSVEOJ)pOJeVE[NKS}EAEGP.pPQHKUDVE[PQS VSJ)EOUbL2EOUWPQHKS}gIhri_l

BD

ii
z

m@mem
z

J)HK@UWHK| PQSDo@pEO%PQCRTCJsEEOJ)LDSN tAHK UWPQHKHKCTVENSDLt


SUWJsSP.PQHKUW%NKSPQC@RT%tAC@S PQHKUVE
NKSt<EOJ)L2tAHKPQP.HKUpEOVEdJsEGtS %NKS SGVS
|UWSNVE[NKSS PQLpS NL2tAS UWJ)S PQPQHK@Ul>

S J)L2SRTJLS t<V%EOEOt<CUWCnRT JLS t<V%EMo!pErEOUEON

J)EOS o!pENKStAEGJsLtAHKP.PQHKUpEOVEJsEGtHKUWPQpRTNKHKVS}Ct

S NK!pUWSJsEGUWL2EOUWPQHKS}gIhMiYEGUDpUpUWLCHKUWLEOtARTEOVHKCVENKSL2tAS UWJ)S PQPQHK@UW EGtACMUWCS N|UWS N


VE[NKSRTHKJ)RTSWl

Clusula CHECK
ghMijkEOJ)EOPQHK|P.SSNK!pUWSPQS S PQHKVWS VS VHKPQHKCUWS NuSt
SDm

L2SUWL2CYEGUaNKSt<EOJ)Lt
HKPQPQHKC@UWEGJ

VE[LS @NKSPQC@RTCrEOUDNKS}VE[PQS RTCul


VEO|UWHKPQHK@UDVEtAEGJsLtAHKP.PQHKUDVE[LS @NKSW

[ CONSTRAINT name ] CHECK ( VALUE condition )


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

"

VEO|UWHKPQHK@UDVEtAEGJsLtAHKP.PQHKUDVE[PQS RTCu

[ CONSTRAINT name ] CHECK ( VALUE condition )


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

clusula PRIMARY KEY


ghMijkEOJ)EOPQHK|PQSS NK@pUWS J_CJ)HK@HKNKHKVS VEOJS VHKP.HKCUWS NKEOJeS tASNKS}

ame

EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHKC@UWEGJeVEL2S @NKSW
z

[ CONSTRAINT name ] PRIMARY KEY ( column [, ...] )


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

EO|UWHKP.HKUVE[t<EOJ)Lt
HKPQPQHKC@UWEGJeVEP.SRTC

[ CONSTRAINT name ] PRIMARY KEY


[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]

CREATE TABLE AS
Nombre
CREATE TABLE AS
y

t<EOSpUWS}UWpEGqbSLS @NKS

Synopsis
CREATE TABLE table [ (column [, ...] ) ]
AS select_clause

Inputs
table
mNUWC@RT@t<EVE[pUWS}UWpEGqbSLS @NKSSJ)EGtPQt<ES VSWl

column

Q| NKLHKNKEOJUWC@RT@t<EOJVEP.CNKpRT

mNUWCRT!t<EVEpUWSPQCNKpRTUWSWl>gIEpEOVEOUEOJ)EGP.HK|PQS tuR

UWSpJsSUWVCpUWS}NKHKJ)L2S}VE[UWC@RY!t<EGJ_VE[PQCNKpRTUWS}VEONKHKRTHKLS VSCtP.CRTS J l

select_clause

MUbSMJ)EOUWLEOUWPQHKSMVE}PQCUWJspNKLSrq!S NKHKVSWlsEO|Ot
SJsE}Sdgmim

S tAS

S NKNKStepUWSMVEGJsPQtAHK

P.HKUDVE[NKS}J)HKUWLS FIHKJeEOtARTHKL2HKVSWl

Salidas

r\nS}f\\X[^S tAS

eEG|Gt
S J)E[SX[Z[\]_^\n^b]Mc

S NKNKS tpUDJspRTS tAHKCrVE[CJsHK@NKEGJ_RTEOUWJ)S

EGJ_VEJsSNKHKVSWl

Descripcin

x\]MfEOtARTHKL2ESnpUWSnLS @NKSnJ)EOtPQt<EOS VWSnSS tAL2HKtVEON P.CUWL2EGUWHKVCaVEDpUWS

X[Z[\]_^\^b]dc

L2S!NKSDEOFHKJ)L2EOUWLE!l mo!pHKq!S NKEDEGU2pUWP.HKCUWS RTHKEGUWL2CaSW

ed

J)HKUWL2S FHKJ_RJeVHKt<EOPQL2S@l

CREATE TRIGGER
Nombre
CREATE TRIGGER
y

t<EOSpUUWpEOq!CVHKJ)S tAS VWC@t

Synopsis
CREATE TRIGGER name
{ BEFORE | AFTER } { event
[OR ...] } ON table
FOR EACH { ROW | STATEMENT } EXECUTE PROCEDURE
ER">funcBLE>
( arguments )

Entradas
name
mNUWC@RT@t<EVE[pUDVHKJ)S tAS VCtuEOFHKJsLEOUWLE!l

table
mNUWC@RT@t<EVE[pUWS}LS @NKSWl



}%EOt<CTo!pHKnJdPQCUpUWS

event

MUWCrEOUWL2t<E[2BDgIm

mim

mCM
z

ml

funcname
MUWS2pUWPQHK@UJ)pRTHKUWHKJ)L2tAS VS}CtEGNpJ)pS tAHKCul

Salidas
CREATE

gEVEOq!pEONKq!E[EOJ)L2E[RTEOUWJ)S)E[JsHEONVHKJ)S tASGVC@tJ)E

SPQt<EOS VCMP.CUDOFHKL2Cul

Descripcin
X[Z[\]_^\a^eZ[<DD\ZHKUWL2t<CVpPQHKtxpUUWpEOq!CVHKJ)S tAS VWC@tEOUNKS@S J)EVEMVS LC@JS PQL2pSNlmN
VHKJ)S tASOVCt}JsEDS J)C@PQHKS tPQC@UNKStAEGNKS PQHK@U

funcname

relname

aE
EOPQpL2StNKSnpUWPQHKUEOJ)EOPQHK|P.SVS

gEpEOVEEGJsEGPQHK|PQS to!pEEONVHKJ)S tAS VCtJ)EVHKJ)S t<E[VEPQpS NKo!pHKEGt


S}VE[EOJ)L2S J_VC@Je2C@tARTS J
S UWLEOJ}2m@MemVEo!pENKSCEOtAS PQHK@UaJ)EOSHKUWL2EOUWLS VSEOUapUt<EO@HKJ)L2t<CY2S UWLEOJ}VEo@pENKS J

\^e\JsEGS UHKUWL2EGUWL2S VC@J)bCrVEGJs

t<EOJ)L2tAHKPQP.HKCUWEOJJ)E[PQCRTt<pEO@EOUADf\
Z^ d`D]_^e\C`D\
pOJe

mebVEo!pENKS}CEOtAS PQHK@U

S @S}J)HKVCHKUWLEOUWL2SVS}2C@tE
EORTNKCVEOJ)pOJ_V
Eo!pE

\^\

NKS Jt<EOJ)Lt
HKPQPQHKC@UWEGJdJsEGS UPQCRTt<C@@S VSJVEDo@pEADf\Z ^d`D]_^\C`D\
J)HKVCPQCRTNKEOLS VCJ))l.gHbEONWVHKJ)S tASOVC@t_J)EdCUWEMEGUYRTS t<P

S !SU

SMS UWLEOJVEGNWEOq!EOUWLC@OJ)L2EpEOVE

J)S NKL2S tWNKSC@EGt


S PQHKUrSt
SEGNt<EO@HKJsLt<C}S PQLpSNCPQS RT@HKStEONt<EO!HKJ)Lt<C}o!pEEOJ)L2S @SHKUWJ)EOtALUWVC@J)E
2JsNKCSt
S}NKS JeCEOtAS PQHKC@UWEOJADf\Z^aDM`D]_^\>l)gIH!EONVHKJ)S tAS VCtJ)EVHKJ)S tASVEGJspGJ
VEON@EOq!EOUWLC@L2CVCJNKCJP.SRT@HKC@J)HKUWP.NKp@EOUWVCDNKSNKL2HKRYSdHKUWJ)EOt<PQHKUWS PQLpS NKHK SOPQHKUC@Ct
tAS
VCJsCUqbHKJ)HK@NKEOJ)uS tASEGN@VHKJ)St
SGVCt>l

=} LpNKC@J[VE}gu

eEG|Gt
S J)E}SrNKCJPQS

} Sr

tAHK!@EOtAJEOUTNKSd@p

QAW @M

bAQM}A [@

S tASRJeHKUWCtARTS PQHK@Ul

Notas
X[Z[\]_^\n^eZ[<DD\ZEOJepUbSEGFILEOUWJ)HKUVEGNNKEOUW!pS>ECJ)L2@t<EOJ l
gNKCrEONt<C@%HKEOL2S tAHKCMt<EONKS PQHKC@UWSVCr%pEGVE[PQt<EOSGtpUDVHKJ)S tAS VCtEGUEOJ)L2S}t<EONKSGPQHK@Ul

?Bbl O2.NKS J J)EOUWLEOUWPQHKS JVE_VHKJ)S tAS VWC@t<EGJ UWCEOJ)LUMHKRTNKEORTEOUWLS VS J l

DS J)L2SNKSq!EOtAJ)HK@UrS PQL2pS N2q

eEG|Gt
S J)E}S`DZ[D^eZ[AD\ZS tASMC@L2EGUWEOt_HKUW2C@tARTS PQHK@UTJ)C@t<EPQCRTCn@Ct
tAS teVHKJ)S tAS
VCtAEGJl

Uso
CRTt<pEO@S[J)HIEGNIPQ@VHK@CdVEVHKJ)L2tAHK@pHKVC@tuEOJ)EGP.HK|PQS VCEOFHKJ)L2EEOUrNKSL2S@NKS[VEVHKJ)L2tAHK@pHKVC
t<EOJS UWL2EGJeVE[S WS VHKt CSP.LpS NKHK S tupUWS}|NKSEOUDNKCJ|NKRTJeVENKSL2S@NKSW

CREATE TRIGGER if_dist_exists


BEFORE INSERT OR UPDATE ON films FOR EACH ROW



EXECUTE PROCEDURE check_primary_key (did, distributors, did);

UWLEOJVEPQS UWPQEONKS tupUDVHKJ)L2tAHK@pHKVCtCVES PQL2pS NKHK SGtJ)pnPQ@VHK@C !CtAt


SP.S VSt<EOEOt<EGUWP.HKSEOU
NKC@Je|NKRTJVENKSL2S @NKSb

CREATE TRIGGER if_film_exists


BEFORE DELETE OR UPDATE ON distributors FOR EACH ROW
EXECUTE PROCEDURE check_foreign_key (1, CASCADE, did, films, did);

Compatibilidad
SQL92

BDC

SX[Z[\]e^e\^Z[ADD\ZEOUDgIhrij kWl

mN J)EO@pUWVCE
EORTNKCEOFNKHKPQS VCTS LEOtAHKC@tARTEOUWLED%pEGVEHKRTNKEORTEOUbL2S tAJ)EDLS RT@HKOUpJ)S UWVC
pUWSt<EOJ)L2tAHKPQPQHK@UDVE[@Mem2B[maPQNKS q!ECtUWEGS bPQC@RTCrEOU

CREATE TABLE distributors (


did
DECIMAL(3),
name
VARCHAR(40),
CONSTRAINT if_film_exists
FOREIGN KEY(did) REFERENCES films
ON UPDATE CASCADE ON DELETE CASCADE
);

mUDPQpSNKo!pHKEOtPQS J)CINKSJPQNKS q!EOJ_2Ct


UWEOS JeL2CVS q!KS}UWCEGJsL UHKRTNKEORTEGUWL2S VSJ

mBWl C !EGUDCJ)L2@t<EOJ l

J)HK@U

CREATE TYPE
Nombre
CREATE TYPE
y

EO|UWEpUUWpEGqbCrL2HKCrVEVS LC@J@S J)E

Synopsis
CREATE TYPE typename
( INPUT = input_function,
OUTPUT = output_function
, INTERNALLENGTH = { internallength
| VARIABLE }
[ , EXTERNALLENGTH = { externallength



S J)L2S}NKS}q!EOt<

[
[
[
[
[
[

|
,
,
,
,
,
,

VARIABLE } ]
DEFAULT = "default" ]
ELEMENT = element ]
DELIMITER = delimiter ]
SEND = send_function ]
RECEIVE = receive_function ]
PASSEDBYVALUE ] )

Entradas
typename
mNUWC@RT@t<EVEONLHKCS}J)EGtPQt<EOSGVC l

internallength
MUDq!S NKC@t NKHKLEOtAS NK EONPQpS NEOJ)EOPQHK|P.SNSNKC@UW@HKL2pVYHKUWLEOtAUWSVEONUWpEOq!CLHKCul

externallength
MUDq!S NKC@t NKHKLEOtAS NK EONPQpS NEOJ)EOPQHK|P.SNSNKC@UW@HKL2pVYEOFLEOt
UWSVEONUWpEOq!CLHKCul

input_function
mNUWC@RT@t<EVE[pUWSpUWPQHKUWIPQt<EOSGVSRTEGVHKS UWL2E[X[Z[\]_^\!dDX[^eAD NKSP.pS NPQCUW
qbHKEGt
LE[NKCJ_VSL2CJ_VEGJsVE[J)p2Ct
RTSEOFILEOtAUWSSNKS}2Ct
RTSHKUWL2EOtAUWS}VE[LHKCul

output_function
mN!UWC@RT@t<EVEpUWSdpUWPQHKUWPQt<EOSGVSRTEOVHKS UWLEem

mY@MBD

MBDNKSMPQpS N@P.CUW

qbHKEGt
LEdNKCJ[VS L2CJ[VEOJ)VEJsp2Ct
RTSMHKUWL2EGt
UWSSMpUWS2C@tARTSrPQCUWq!EOUWHKEOUWLEMS tASrJ)EOt_RTCJ)
L2tAS VCJl

element
mNL2HKCrP.t<EOSV%CrEOJ_pUDS tAtAS !OEOJ)L2CrEOJ)EOPQHK|PQSEGNL2HKCVE[NKCJ_EONKEGRTEOUWLC@J_VEONS tAt
Sl

delimiter
mNP.S tA P)LEOtVEONKHKRTHKLS VCtSt
SEGNS tAt
S Il

default
mNL2EOFL2CrCtVEO2E.PQL2Cro!pEJsERTC@J)Lt
S tS tASHKUWVHKPQS tVS L2CJUWCt<EGJsEGUWL2EOJ)

send_function
mNUWC@RT@t<EVE[pUWSpUWPQHKUWIPQt<EOSGVSRTEGVHKS UWL2E[X[Z[\]_^\!dDX[^eAD NKSP.pS NPQCUW
qbHKEGt
LEdNKCJ[VS L2CJ[VEdEGJsLEMLHKCSpUWSr2C@tARTSSVEOPQpSOVSMS tASrJ)EOt_L2tAS UWJ)RTHKLHKVC@JSrCL2tAS
RT o!pHKUWSWl

receive_function
mNUWC@RT@t<EVE[pUWSpUWPQHKUWIPQt<EOSGVSRTEGVHKS UWL2E[X[Z[\]_^\!dDX[^eAD NKSP.pS NPQCUW
qbHKEGt
LENKCJdVS LC@J}VEEGJsLEDLHKCSDpUWSD2C@tARTSDS VEOPQpS VSS tASJ)pL2tAS UWJ)RTHKJ)HK@UVEGJsVE
C@Lt
SRT o!pHKUWS}SNKS}2Ct
RTSHKUWLEOtAUWSWl



Salidas
CREATE

EGUWJsS>Eo@pE[JsEVEOq!pEONKq!E[J)HEONL2HKC

S}JsHKVCPQt<EOSOVCPQC@UDOFHKLC l

Descripcin

x~\aEOtARTHKLEMS NpJ)pSt
HKCnt<EO!HKJ)Lt
StpUUWpEOq!CnL2HKCYVEMVS LC@J[VErpJ)pS tAHKCnPQCU

X[Z[\]_^\a^

C@J)L!t<EOJSt
SMJsEGtpJ)S VCEOUNKS@S J)EdVEVS LC@JS PQLpSNlmN%pJ)pS tAHKCo@pEdVEO|UWEMpUTLHKCnJ)E
PQC@UWq!HKEOtAL2EEOUJ)pt<CHKEOLS tAHKC l

typename

EOJdEONUWCRT@t<EDVEVEON UWpEOq!CaLHKCVEG@EJ)EOt

UWHKPQCVEOUWLt<CrVE[NKC@JeL2HKCJeVEO|UWHKVC@J_S tASEOJ)LS@S J)E[VEVSL2CJl

x~\aUWEOPQEOJ)HKLSEONt<EO!HKJ)Lt<CnVErVC@JpUWPQHKCUWEOJ}2pJ)S UWVCPQt<EOS LEM2pUWP.LHKC@UWS UWLEOJ

X[Z[\]_^\a^

VEnVEO|UWHKtrEONeLHKC l!iSYt<EOt<E.J)EOUWL2SP.HKU

VEpUUWpEOq!CL2HKC@SJsEEOJ)LTVEOL2EGt
RTHKUWSVSYC@t

INKSPQpS NWPQC@UbqbHKEGt
LEMNKSrt<EO%tAE.J)EOUWLS PQHK@UEOFL2EGt
UWSMVEONWLHKCSpUWSrt<EOt<E.

input_function

J)EOUWL2SP.HKUHKUWLEOtAUWS pL2HKNKHKS @NKE%C@t NKC@JCEOtAS VCt<EJM2pUWP.HKCUWEOJVEO|UWHKVS J%C@t EONILHKCul>BDS


L2ptAS NKRTEOUWLE

output_function

E
EOPQpL2SNKS[LtAS UWJ)CtARTS PQHK@UHKUWq!EOtAJ)SWl

RT@S J2pUWPQHKC@UWEGJs

NKS}VEEOUWLt
SVSNKS}VEJ)S NKHKVS}VEO@EOUDJ)EOtVEGPQNKS t
SGVS JeS tASS J)pRTHKtpUWCCVC@J_S t<!pRTEOUWLCJ
VE[LHKC

.l

opaque

iCJUWpEOq!C@J_L2HKCJVEVSL2CJ@S J)EpEOVEGUnJ)EOtVENKC@UW@HKLpVT|ISIEGUnPQp@CP.SJsC

internaEOJ_pUEOUWLEOt<CCJ)HKL2HKq!C@ICL2SRT@HKOUpEGVEOUJsEGtVENKCUW!HKLpVq!S tAHKS @NKEIEOUPQp@C


llength
PQS J)C@ICJ)L2@t<EOJS J)pRTEdo@pEdEONWUbpEGqbCDLHKCDL2HKEGUWEdEONWRYHKJsRTC2C@tARTS LCDo!pEdEONbL2HKCDVE}VS LC@J
J)pRYHKUWHKJsLt
SVCCteCJ)L2@t<EOJ)
J)EVEO@EEOJ)EOPQHK|PQS t

.lsS tASdHKUWVHKPQS to!pEpUL2HKCEGJVE}NKC@UW@HKL2pVTqbSt


HKS @NKEG

text

internallength

P.CRTC

VARIABLE

EOJ)EOPQHK|PQSVE[2Ct
RTSJ)HKRTHKNKS tpJ)S UWVCNKS%S NKS @tASP.NKSqbE

l>iS}t<EOt<E.J)EOUWL2SP.HKUEOFL2EOtAUWS}J)E

externallength

S t
SrHKUWVHKPQS to!pErpUL2HK%CYEOJpUaS tAtASOTS tASHKUWVHKPQS to!pEpULHKCYLHKEOUWErEONKEGRTEOUWLC@JVE
S tAt
SG.%HKUWVHKo!pEEONLHKCVEON EONKEORTEOUWLCVEONS tAtAS pJsS UbVCNKSS NKS @tASPQNKS q!EEONKEORTEGUWL>lCt



E
EORTNKC S tASVEO|UWHKtpUSt
tAS rVE[EOUWLEOt<CJeVEP.pS Lt<Cd@!LEOJeHKUWL 2EOJ)EGP.HK|o!pE

ELEMENT = int4

S t
S}HKUWVHKP.SteEONbVEGNKHKRTHKL2S VC@tSJ)EOtepJ)S VCEGUS tAtASO@JVEEOJ)L2E}L2HK%C@

} |PQCul>mNVEONKHKRTHKLS VCtCtVEG2EOPQL2CMEOJeNKSPQC@delimiter
RTS}2
<l

|IS t SpUPQS t
GPQL2EGtEOJ)EOP

r%P.HKCUWS NKRTEGUWL2EO

J)EpEGVE

S pUrq!S NKCt%CtWVEO2EOPQL2C[VHKJ)CUWHK!NKE_EGUMPQS J)CVEeo!pEepUMpJ)pS tAHKCo@pHKEOt


S

} |PQCS tASEOFtAEGJ)SOtVSL2CJ UWCt<EOJ)EOUWLEOJ l !mJ)EOPQHK|o!pEEGN q!S NKCt

S NK@UrS LtA@UrVE_@HKLEOJ)EOP

CtVEGEGP.LCMP.CUDNKS}S NKS @tASPQNKS q!E

DEFAULT

\y =\y:[\cx;Jr*aI pL=ayp)y*p{JH JxJ;*aI*=*p{Jp)yhxay


*ay\=\y[
iCJS t<@pRTEOUWLC@JnC@PQHKCUWS NKEOJ

send_function

receive_function

JsCUpJ)S VC@J

PQpSUWVCEGN!t<C!tAS RTSVE[S NKHKPQS PQHK@Uo!pEVEORTS UWVSNKC@JJsEGt


q!HKPQHKC@J_C@J)L2@t<EOJ_tAEGJsHKVE[EOUpUWS
RT o!pHKUWS[VHK2EOt<EUWLE!l
mUEOJ)L2EPQS J)C@ONKS[RT o!pHKUWS[EOUNKSPQpS N J)EE
EOPQpL2S[C@J)L!t<EOJpEGVEpJ)S t
pUa2Ct
RTSL2CYSt
SEGNLHKCTVErVSL2CJ}VHK2EOt<EOUWLErVEONpJ)S VCYEGUaNKSRT o@pHKUWSDt<EORTCLSWlOmUaEGJs
L2EPQS J)CnEOJ[PQCUWqbEGUWHKEOUWL2EdP.CUWq!EOtAL2HKtNKC@JHKLEORTJ[VEdVSL2CJSMpUWS2C@tARTSEGJsL UWVS tePQpS UWVCJ)E

;} |PQC

EOUWq!HKEOUVEOJ)VErEGNJ)EOtAq!HKVCtS NPQNKHKEOUWLErTPQC@UWq!EOtAL2HKtANKCJ}VEON2Ct
RTSL2CEGJsL UWVStS NEOJ)EGP

VE[NKS}RT o@pHKUWSdPQpS UWVCrEONJ)EOtAqbHKVCtt<EGP.HK@ENKC@J_VS L2CJeVEOJ)VE[EONPQNKHKEOUWLE!l)gIH@EGJ)L2S Je2pUWP.HKCUWEOJ


UWCrEGJsL!UEOJ)EOPQHK|PQS VS J)GJ)ES JspRTEo!pE[EON2Ct
RTSL2CMHKUWL2EGt
UWCMVEONLHKCMEOJS PQEOL2SG@NKE[EGUL2CVS J
NKS JS t<o!pHKL2EGP.Lpt
SJVErRTo!pHKUWStAEGNKEOq!EOS UWLEOJ lOCt[EAEORYNKC@bNKCJ}PQS tAS P.LEOt<E.J}J)HKRT NKEOJUWCTJ)E

,

L2HKEGUWEOUYo!pEdP.CUWq!EOtAL2HKt_J)H%JsES J)SdVEOJ)VEdpUgpUW rSMpU

}

L2HKCJeJ 5l



mJ)LS L2HKCUW@EOt<CRTpP

CJCL2t<CJ

r
S C@PQHKCUWS NK

mN

HKUWVHKPQSYo!pENKC@JC@%EOt
SVC@t<E.JpUWPQHKCUWEOJo@pEYpJ)S U

PASSEDBYVALUE

EOJ)L2EL2HKCVEVS LC@JMVEO@EOUS J)S tNKCJS t<@pRTEOUWLC@Jdt<EO2EGtAE.UWLEORTEOUWLECtq!S NKCto!pECt

} SCtuqbS NKCtLHKC@JPQp!St<EOt<E.J)EOUWL2SP.HKUHKUWLEOtAUWS

t<EOEOt<EGUWP.HKSbl

EOJ)EP.pEGUWL2SVEo!pEUWCdS J)S t
z
EOJVE[RT JeVEPQpS LtACd@@L2EGJl

S t
S}UWpEGqbCJLHKC@J!SJsEGIpUnpJspSt
HKCpEGVEVEO|UWHKtCEOtAS VCtAEGJs 2pUWPQHKC@UWEGJDPQC@U pUWL2C!J
pJsSUWVCrNKSJ_2S PQHKNKHKVS VE.JeS t<C@%HKS VSOJeVEOJ)PQtAHKL2S JEOUDEOJ)LSJ)EOPQP.HKUl

Tipos de Array
mFHKJsLEOUVCJepUWPQHKCUWEOJ!EGUWEOtAS NKHK S VSGJHKUWP.CtAC@tAS VSJsGS t
tAS @ HKUrS tAt
S!GC@pLbS tAS[NKSPQt<EOSG
PQHK@Unt
%HKVS}VEL2HK%C@JVESt
tAS VE}NKCUW@HKL2pVq!S tAHKSG!NKE@lQmJsLS J2pUWPQHKC@UWEGJC@%EOt
SUnEGUnS tAtAS !J
VE[PQpS NKo!pHKEGtLHKCC@J)@t<EOJEOFHKJsLEOUWLE!l

Tipos de objetos grandes

G j k!@LEOJ lgIH UWEOPQEGJsHKLSnpUaL2HKC

MUaL2HKCCJs@t<EOJdt<EO@pNKS t[J)NKCpEGVEJ)EGt}VENKCUW!HKLpV

RTS @C@tVEO@EnPQt<EOS t}pULHKCVECGEGL2C@tAS UWVE!lmNeHKUWL2EGt


2S PQE%S t
SYEGJsLCJL2HK%C@JEOJ)L2Y RT
NKHKS RTEOUWLEEOFNKHKPQS VCrEOU

QAW !d

L2HKCJeVE[CGEGL2C@t
SUWVE[EOJeJ)HKEORTt<E[

WAQ}M< [@ lsiS}NKC@UW@HKL2pVYVELC@VCJNKCJ


iWml

Ejemplos
mJ)L2EPQC@RTSUWVCTPQtAEGSEONL2HKCTVEVSL2CJ}@CFnTVEOJ)pOJpJ)SEONL2HKCTEGUpUWSVEO|UWHKPQHK@UaVE
PQNKS J)E!

CREATE TYPE box (INTERNALLENGTH = 8,


INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes (id INT4, description box);

mJ)L2E[PQCRTS UWVCrP.t<EGSpUDL2HKCS t
tASGVE[NKCUW@HLpVnq!S t
HKS!NKEPQC@UDEONKEGRTEOUWL2CJeEOUWL2EGtACJ

CREATE TYPE int4array (INPUT = array_in, OUTPUT = array_out,


INTERNALLENGTH = VARIABLE, ELEMENT = int4);
CREATE TABLE myarrays (id int4, numbers int4array);

mJ)L2E[PQCRTS UWVCrP.t<EGSpUDL2HKCVE[COEOLC@t
SUWVE[rNKCpJsSEOUDpUWS}VEO|UWHKPQHK@UDVEPQNKS J)E!

CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout,


INTERNALLENGTH = VARIABLE);
CREATE TABLE big_objs (id int4, obj bigobj);

Notas
iCJeUWCRT@t<EOJeVE[L2HK%C@JeUWCpEGVEOUEORTEG SOtCtEGNP.S tA PQLEOtu!pHKUD@S)Cr2 !rJsNKCpEG

[+ PQS tA PQL2EGtEOJ l>mJ)L2CrEOJeVEO@HKVCMSo!pECJsL!t<EGJ_PQt<EOSJ)HKUHKUW2C@t<

VEOULEOUWEOt pUWS}NKCUW!HKLpVVE



RTS tpUnL2HKCS tAtAS S tAS}PQS VSL2HK%C@S JsEPQCUpUYUWCRT@t<Eo!pEPQCUWJ)HKJsLEdEGUEON!UWC@RT@t<EVEON


L2HKCr@S J)E[t<EOPQE.VHKVCVEpUn@pHK@UD@S)Cul

x~\nS tAS@Ct
tAS t pUDL2HKCrEOFIHKJ)LEOUWLE!l

eEG|Gt
S J)E[S`DZ[D^

=} LpNKCnVEdrGEOLC@J

EOSrLS RT@HKOUX[Z[\]_^e\a@MDX^eADbX[Z[\]e^e\aD\Z[]_^eDZnEONPQS
t
SUWVEOJ)iStAEMGEOPQL2J) EGU

QAb< @M

<W<.}dA [@ l

Compatibilidad
SQL3

x~\nEOJepUDEONKEORTEOUWLCVE[ghMi+bl

X[Z[\]_^\n^

CREAR USUARIO
Nombre
CREAR USUARIO
y

tAEGS UWVCMpUUWpEGqbCrpJspSt
HKCrVE[@S J)EVE[VS L2CJ

Synopsis
CREAR USUARIO nombre de usuario
[ CON
[ SYSID uid ]
[ PASSWORD palabra clave ] ]
[ CREARDB
| NOCREARDB ] [ CREARUSUARIO | NOCREARUSUARIO ]
[ EN EL GRUPO nombre de grupo [, ...] ]
[ VALIDO HASTA abstime ]

Entradas
nombre de usuario
mNUWC@RT@t<EVEONpJ)pS tAHKC l

uid
iSrCt<VEOU

SYSID

pEGVEdJ)EOtpJ)S VSrSt
SMEOJ)P.C@EOtEON%HKVEOUWLHK|PQS VC@tVEdpJ)pS tAHKCCJsL

!t<EOg hMiVEONpJ)pS tAHKCo!pEJsEEOJ)LSP.t<EOSUWVC lBDCEGJUWS VSUWEOPQEOJ)S tAHKC}o!pEP.CtAtAEGJs%C@UWVSS

a

NKC@JuHKVEOUWLHK|PQS VCt<EOJVEepJ)pSt
HKCJVEedBD .%EOt<CS NK@pUWS J %EOt
J)CUWS J EGNKHK!EGUrRTS UWLEOUWEOt
NKC@JeUWRTEOt<C@JeHK@pS NKEOJ l
gHUWCrJsE[EOJ)EOPQHK|P.S OJsEpJ)S tACtVEO2EOPQL2CMEONUWRTEOt<CRTJeSNKL2CrS J)HK!UWS VCrRT JepUWC l



palabra clave
HKVENKS[S NKS @tS[P.NKSqbEVEON pJ)pSt
HKCul
gIHIUWCdq!SSpJsS tuSpLEOUWLHK|P.S PQHKUCtuS NKS @tS[P.NKS
qbE_pEGVECRTHKL2Ht EGJsLSC@PQHKUWOVECL2tAS[RTS UbEOt
SEGNpJ)pS t
HKCUWCdJ)EOtAP.S  SVE_P.CUWEOPQLS t
P.CUEONJ)EOtAqbHKVCtVErS pL2EGUWL2HK2S PQHKUTVErS NKS @tASOJPQNKS qbE@lGHKtAEdEOU@

,C

@SWl PQC@UW2 GCnNKS

pHKSVEONS VRTHKUWHJsLt
SVC@t S tASRTJeVEGL2S NKNKEGJeVEPQC@RYCpJ)S tRTEGP.SUWHKJsRYC@JVES pLEOUWLHK
|PQS PQHKUl

m

m
z

BDMm

mJsLS Jr@t<VEGUWEOJMVEO|UWEOU
NKSYPQS S P)HKVSVVEnpUpJspSt
HKCaS tASnPQt<EOS t}@S J)EOJMVEVS LC@J l

m
WEGNupJ)pS tAHKCTVEO |UWHKVCTLEOUWVtAEOtARTHKJ)CTS t
SPQt<EOSGt[J)pJ
z
t<C@HKS Je@S J)EOJ_VEVS L2CJ l.dJsSUWVCBDMm
m
TJ)EVEOUWEG!S tA}SpUp
J)pS tAHKCNKSdPQS
z
S PQHKVSOVVEdPQtAEGS t@SJsEGJVEMVS L2CJ lGgIHJ)ErCRTHKL2ErEGJsLSCtAVEOUW@BDMm
m
JsErpJ)S
z
C@t VEO2EOPQLC l
gHJ)EEOJ)EOPQHK|PQSm

m

m}
gIm

BDMm

m}gIm

mJsLS JeC@t<VEGUWEO
JVEOLEOtARTHKUWS UDJsHSpUpJ)pSt
HKCMJ)ENKEEOtARTHKL2HKtAPQt<EOS tuUWpEOq!CJpJ)pS tAHKC@J l
mJsLSdC@PQHKU

S tA UVEGNWpJspSt
HKCDpUYJ)pEOt<pJ)pS tAHKCo@pEMCVt
dS J)S teCt_EOUWPQHKRTSMVE

L2CVS JNKSJ t<EOJ)L2tAHKPQHKC@UWEGJVES PQPQEOJ)C lgIHJ)EC@RTHL2EYEOJ)L2STCtAVEOUJsEPQC!EOtATNKSCt<VEOUVE

BDMem

mdg mPQCRTCqbSNKC@t CtVEGEGP.LCMVEONpJ)pS t


HKCul

nombre de grupo
mNUWC@RT@t<EnVEpU@t<pCVEOUWLt<CaVEGNP.pSNeJ)EnPQCNKC@PQSS NpJ)pS tAHKCPQC@RTCapUUWpEGqbC
RTHKEORT@t<C l

abstime

iSCt<VEOUM

i

CUWEpUq!S NKC@t%S @J)C@NKpLCMSNKS2EOP

SEOUNKSo!pENKSS NKS @tS


z
P.NKSqbEdVEON%pJ)pS t
HKCnHKEOt<VEMJ)paq!S NKHKVEOWl.gHJ)ErCRTHKL2ErEGJsLSCtAVEGUTEONNKC@@HKUqbSNKVt
MS tAS
JsHKEGRTt<E!l

Resultados
CREAR USUARIO
EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN@PQCRTS UWVCrJsEPQCRTNKEOLSJ)S L2HKJ)2S PQLC@tAHKS RTEOUWLE!l

Descripcin
m

dgI

NKSpHKSDVEON

S pL2EGUWL2HK|PQS PQHK@Ul
MJ)E

S WSVHKt
npUUWpEOq!CpJ)pS tAHKCSYpUE
EORTNKCVEDCJ)L2@t<EOgIhMiluEGS J)E

VRTHKUWHKJ)Lt
SVC@tSt
SRT JdHKUW2Ct
RTSP.HKUJ)C@@t<EEONuRTS UWE
CVEpJ)pS tAHKC@JdNKS
z

EO@E[J)EOtupUJ)p%EOt<pJspSt
HKCMVE@SJsEGJeVEVS LC@JS tASpJsSt EGJsLE[PQCRTS UWVCul

2@2%

pJspSt
HKCn

ure S tASPQS RT@HKS tNKSSNKS @t


SDPQNKS q!ENC@JMtAHKqbHKNKEG!HKCJVEpU


S tASEONKHKRTHKUWS t_SMpUpJspS tAHKCuldJsEdwxD`DA@AX[]dZDZ[dS

t
SSWS VHKtCTEGNKHKRTHKUWS t[SpUpJ)pS tAHKCYVECL2t<CJ}@t<pC@J lCJ)L2@t<EOgIhriq! HKEOUW EPQC@UpUJ)PQt
HK%L
>AQ2A!<A

o@pEL2HKEGUWENKS[RTHKJsRTS[2pUWP.HKCUWS NKHKVSVDo!pEEOJ)L2EP.CRTS UWVCd2VE

EOP

CONKNKS RTSSEOJ)LE

PQC@RTS UWVC@bEOt<CMpEOVEJsEGtE
EOPQpL2SVCrVEOJ)VE[NKSNKHKUWEGSVE[PQC@RTS UbVC@J l



Modo de uso
t<E.S tpUDpJ)pS tAHKCJ)HKUDS NKS @tASPQNKS q!E!

CREAR USUARIO jonathan

t<E.S tpUDpJ)pS tAHKCPQC@UDS NKS@t


S[P.NKSqbE@

CREAR USUARIO david CON PALABRA CLAVE jw8s0F4

t<E.S t pUDpJ)pS tAHKCrPQCUDpUWSS NKS @tAS[PQNKS q!EOPQp@SPQpEOUWLSEOJeqb NKHKVS

  !l

S J)L2SEON|UWS NVEONk

  GkNKS}P.pEGUWL2SUWCrEOJeqbSNKHKVSW

BDCL2EOJ)E[o@pEpUnJ)EO@pUWVCVEGUWL2t<CMVEONS WCrk

CREAR USUARIO miriam CON PALABRA CLAVE jw8s0F4 VALIDA HASTA 1 En 2002

PQtAE.S tpUWSPQpEOUWL2SP.CUNKSo!pEEONpJ)pS t
HKCrpEOVSP.t<E.S t@SJsEGJeVEVS LC@J

CREAR USUARIO manuel CON PALABRA CLAVE jw8s0F4 CREARDB

Compatibilidad
SQL92
BDCEGFIHKJ)LE[NKS}C@t<VEGUDX[Z[\]_^\nMf\ZEOUDghMij k@l

CREAR VISTA
Nombre
CREAR VISTA
y

CUWJsLt<pHKtpUWS}LS @NKSq!HKt
LpS N

Synopsis
CREAR VISTA vista COMO SELECCIONADO query

Entradas
vista
mNUWC@RT@t<EVE[NKSqbHKJ)LS}o!pEJ)EqbSSPQtAEGS t<l

"

consulta
MUWSPQCUWJspNKLSEOUDghMinHKUWVHKPQSNKSJ_PQCNKpRYUWS Jr|NKSJ_VENKSqbHKJ)LSWl
HKtAH S J)ES}NKSdCt<VEOUDgImimMB
z

S tASRT J_HKUW2C@tARTS PQHK@UnJ)C@@t<ENKCJS t<!pRTEGUWL2CJ

qb NHKVC@J l

Resultados
CREADA
mNRTEOUWJ)S)E[tAEGP.HK@HKVCrJ)HNKS}qbHKJ)LSJ)EP.t<EGSJ)S L2HKJ)2S PQLC@tAHKS RTEOUWLE!l

ERROR: Relacin view ya existe


mJsLEEOtAt<C@t CP.ptAt<EJ)H@NKSq!HKJsLS}EOJ)EOPQHK|PQS VS@SEOFHKJ)L2EEGUNKS@S J)E[VE[VSL2CJl

AVISO creado: el nombre atribuido "column" tiene un caracter desconocido


iSqbHKJ)LSJ)EOtA[PQt<E.S VSL2EOUWHKEGUWVCdpUWSPQC@NKpRTUWS[P.CUpUPQS tA PQLEtuVEOJ)PQCUWC@PQHKVCdJ)HIpJ)L2EOV
UWCNKCEGJs%EOPQHK|PQSWl>CtEAEGRTNKC@ EONJ)HK@pHKEOUWL2E[P.CRTS UWVCrVSpUnEGt
t<Ct.

CREAR VISTA vista COMO SELECCIONADO


Hola Mundo
RTHKEOUWL2tAS Jo!pEEOJ)LE[PQC@RTS UbVCUWCNKC

S PQE!

CREAR VISTA vista COMO SELECCIONADO Hola Mundo::texto

Descripcin
kM<f^b]

X[Z[\]dZ

VEG|UWHKtApUWSq!HKJ)L2SYVEDpUWSL2S @NKSnCPQNKS J)JlImJsLSq!HKJ)L2SUWCaJ)EnRTS L2EGt


HKS NKHK

S2KJ)HKPQS RTEOUWLE!l)mJ)EOPQHK|PQS RTEOUWLEOpUWS}PQC@UWJ)pNKLSdt<EGEOJ)P.tAHKLS!EGUWEOtAS}S pL2CRTS LHKP.S RYEOUWL2EpUWS


t<EO@NKSS tASRTS UWLEOUWEOt NKS JeC@%EOt
SP.HKCUWEOJeE
EOPQpL2SVSOJeEOUDNKSq!HKJ)L2SWl

Notas
BDCt
RTS NKRYEOUWL2EGNKS J_q!HKJ)L2S}J)CUDVE[J)@NKCNKEOPQL2ptASWl

kMAf^!]S tASVEOJ

MJ)E[NKSC@t<VEOUD^AZ[]dZ

S PQEOtJsEVE[NKS}qbHJsLSWl

Modo de uso
t<E.S tpUWSq!HKJ)L2S}PQCUWL2EGUWHKEOUWVCLCVS J_NKSJ_EGNKKPQpNKS JVE[CRTEOVHKSW

CREAR VISTA clases COMO


SELECCIONAR *
DESDE pelculas
DONDE clase = Comedia;
SELECCIONAR * DESDE clases;



codigo |ttulo
|did| date_prod|Clase
-----+-----------------+--+-------+-------+---UA502 |Bananas
|105|13-07-1971|Comedia
C_701 |Theres a Girl in my Soup|107|11-06-1970 Comedia

|Dur
| 01:22
| 01:36

Compatibilidad
SQL92

kMAf^!]

ghMijkEOJ)EOPQHK|PQSS NK@pUWS J_PQS SGPQHKVS VEOJEOJ)EGP.|P.S JSt


S[NKS}C@t<VEOU%XZ[\]}Z

CREAR VISTA view [ columna [, ...] ]


COMO SELECCIONADO expresin [ COMO nombre de columna ] [, ...]
DESDE tabla [ DONDE condicin ]
[ CON [ CASCADA | LOCAL ] COMPROBAR OPCION ]
iS JPQNKS pJ)pNKSJeCPQHKCUWS NKEOJeS tASL2CVCJ_NKCJPQC@RTSUWVC@JegIhrij kJ)C@U

MM

M2rB

mJsLS}CP.HKUDEOJeS tAS

S PQEOt q!HKJsLS Jt<EOUWC@q!S @NKEGJl

CVC@J_NKC@JeBDgIm

aemBDM

EOUNKSq!HKJ)L2SJ)EGt
S UPQPQCRTt<C@@S VCJS tASS J)EO@pt
Sto!pENKCJ_VS LCJeJ)S LHKJ)SP.EGUNKS JPQC@UWVHK
P.HKCUWEOJeVEO|UWHKVS JEOUDNKS}LS @NKSWl
gIHUWCNKCrP.pRTNKEGUW NKS}tAEGUWC@q!S PQHKUUWCJ)EOtAE
EOPQpL2S VS!l

iM

i
CRTt<C@@S t NKS}HKUWL2EG!tAHKVS VnVE[EOJ)L2SqbHKJ)LSWl

g

CRTt<C@@S tNKSMHKUWL2EO@tAHKVS VaVEEOJ)L2SMqbHKJ)LSPQpS NKo!pHKEGtq!HKJ)L2SrVEOEOUWVHKEOUWL2E@l


z

J)ES J)pRTE[J)H!UWH

gI

UWHiM

inJ)C@UEOJ)EOPQHK|PQS VSOJ l

DECLARE
Nombre
DECLARE

y{z

EO|UWEpUPQptAJ)C@tS tASS PQPQEOJ)CrS}pUWSLS @NKS

Synopsis
DECLARE cursorname [ BINARY ] [ INSENSITIVE ] [ SCROLL
] CURSOR FOR query [ FOR { READ
ONLY | UPDATE [ OF column [, ...]



g

] ]

Inputs
cursorname

mNUWC@RT@t<EVEONPQptAJ)C@tSJ)EOtpJ)S VCMEOUDJ)p@JsEGP.pEGUWL2EOJeCEOtAS PQHKC@UWEOJe@m

B

all


t<Cq!C@PQSo!pEEONPQptAJ)C@tL2tAS HK@SVS LC@JeEOU2C@tARTS LC@HKUWS tAHKCEGUDqbEGVE[2Ct
RTS LCLEOFL2Cul

BDgImBDg

[m

ghMij kMS NKS @tASrPQNKS q!EMHKUWVHKPQS UWVCno!pErNKCJVS LCJt<EOPQpEOtSVC@JVEON%PQptAJsCtUWCnVEO@EOU


JsEGt SEGPQL2SGVC@JCt S P.LpS NKHK S P>HKC@UWEGJ_VEGJsVECL2t<C@Jt<CPQEOJ)C@JCMP.ptAJ)C@t<EOJ l
!So!pE[NKS[C@EG
t
S PQHKUnVE}NKCJPQptAJsCt<EOJCPQpt
t<EVEGUWL2t<CVENKS J_L2tAS UWJ)S PQPQHKC@UWEGJsEOUC@J)L!t<EOJEOJ)L2EJ)HKEORT
t<EEOJeEONPQS J)C l>mJsLSS NKS @tASPQNKS q!E[UWCL2HKEOUWE[EO2EOPQL2Cul
geMii
ghMijkS NKS@t
SDPQNKS qbEHKUWVHKPQS UWVCo! pENKCJMVS LC@JdVEG!EGUJ)EOt}tAEGP)pEOtAS VCJdEOURTNK
L2HKNKEGJ|NKS JrC@tdP.SVSC@%EOt
SP.HKU!m

albSYo!pEEOJ)LCEOJJsHKEGRTt<EEOtARTHKLHKVCCt

CJ)L2@t<EOJEOJ)L2S}SNKS @t
S[PQNKS qbEUWCLHKEOUWEEO2EOPQLC l

query
MUWSdPQC@UWJ)pNKL2SrghMiNKSMPQpSNb t<CqbEGEOtASMNKS J|NKS JSMJsEGt@CqbEGt
UWSVS JCt_EONWPQpt
J)Ct
leEG
EGt
HKtAJ)EMS NPQC@RTSUWVCYgImim

St
SrRTS !Ct[HKUW2Ct
RTS PQHKUaSP.EGt<P)SVErNKCJ}S t<@pRYEOUWL2CJ

qb NHKVC@J l
em

rBiI
z

ghMij kMS NKS @tASrPQNKS q!ErHKUWVHKPQS UWVCno!pErEONPQpt


J)CtJ)EOtASpJ)S VCEGURTCVCYJ)CNKCYNKEOPQLptASWl
bSo!pEEGJsLEDEGJrEGNUWHKP.CaRTC@VCaVES PQPQEOJ)CaVEPQptAJ)C@t}VHKJ)CUWHK@NKEEOUCJsL@tAEGJrEGJ)L2S
S NKS @tS}PQNKS q!E[UWCLHKEOUWEEGEGP.LCul

M
z

gIhMij kS NKS @tAS}PQNKS qbEHKUWVHKPQS UWVCo!pEEGNbPQpt


J)CteJ)EOt
SpJ)S VCSt
SS PQLpSNKHK SOteLS @NKS J l
bSo!pENKSDSP.LpS NKHK SGP.HKUaVErP.ptAJ)C@t<EGJ}UWCYEOJ)LSDSP.LpS NKRTEOUWLErJ)C@CtAL2S VSDEGUaCJsL@tAEGJ
EOJ)L2SSNKS @t
S[PQNKS qbEt<C@q!CP.SpURTEGUWJsS>EVE[EOtAt<C@t HKUW2C@tARTS LHKqbCul

column
C@NKpRTUS 2J) SDJ)EOtS PQL2pS NKHKGS VS J lObSo!pENKSS PQL2pS NKHKSOPQ HK@UaVErPQpt
J)Ct<EOJ}UWCEOJ)L2SS PQ
L2pS NKRTEGUWL2EJsCCt
LS VSDEOUC@J)L!t<EOJdNKSPQNKS pJspNKSM
EOtAtACtuHKUW2C@tARTS LHKqbCul

mt<CqbCPQSpURTEGUWJsS>EVE

Outputs
SELECT
mNRTEOUWJ)S)E[VEOq!pEONKL2CrJ)H@EGNgmim

EOJE
EOPQpLS VCEGFIHKLC@J)S RTEGUWL2E!l



NOTICE BlankPortalAssignName: portal"cursorname" already exists


mJsLEEOtAt<C@t CP.ptAt<EJ)H

cursorname

@S}EOJ)LSVEOPQNKS tASOVCul

ERROR: Named portals may only be used in begin/endtransaction blocks


mJsLEEOtAt<C@t CP.ptAt<EJ)H@EONPQpt
J)CtUWCrEOJ)L2S}VEGP.NKSt
SGVCVEGUWL2t<CMVE[pUL2tAS UWJ)S PQL2HKCU@NKC@PQ l

Description

(]dZ[\EOtARTHKL2ESpUpJspS tAHKCTPQt<ESt[PQpt
J)CtAEGJs!NKCJPQpS NKEOJpEOVEOUJ)EOt[pJ)S VCJ}%S t
S

`D\X

t<EOP)pEOtAS tpUEOo@pEOUWCaUbRTEGt<CaVE|NKS JrSNKSq!EODt<C@q!EOUWHKEGUWL2EOJMVEpUWSPQC@UWJ)pNKL2SnRTS J


EOFL2EOUWJ)SWliCJPQpt
J)CtAEGJpEOVEGUVEOq!CNKqbEGtVS LC@J@SJ)EOSEOUrCtARTS L2CdVELEOFILCCdEOU2CEORTS LC

@

@HKUWS tAHKC

iCJ_PQpt
J)Ct<EOJP.CRTpUWEOJ_t<EOL2CtAUWS UVS LC@JeEOUD2C@tARTS LCLEOFILC!S}J)EOS
VEnPQC@VHK|PQS PQHKCUVEGEOUWVHKEOUWVCEOUP.CRTCEONeC@J)L!t<EOJ@S PQ!EGUWV

gI2WpnC@Lt<CEOJ)o!pEORYS

2pEnPQt<EOS VC lb STo!pENKCJ

VS LC@JdEOJ)LS U@pSt<V%S VCJMUWS L2HKq!S RTEGUWL2EEOU2C@tARTS LCa@HKUWSt


HKCEONJ)HKJ)L2EGRTSVEO@E
PQC@UWq!EOtAJ)HK@UMS tASet<CVpPQHKt%2C@tARTS LCLEOFL2Cul

S PQEOtpUWS

VEGRTS J)sNKC@JuCtARTS L2CJVEeL2EGFILCJ)C@UMS_RTEGUWpVC

RTS @C@t<EOJMEOULS RTS UWCo@pEJ)pJrP.CtAtAEGJ)C@UWVHKEGUWL2EOJEOU2C@tARTS LC@HKUWS tAHKCul@dUWSYq!EOYo!pEnNKS


HKUW2C@tARTS PQHK@UMq!HKEOUWE_EOUM2C@tARTS LCL2EGFILC@QNKSS NKHKPQS PQHKUrPQNKHKEOUWLE_C@Vt
HKSUWEOPQEOJ)HKLS t%PQCUWqbEGt
LHKt
NKCJ

SpUa2Ct
RTSL2CY@HKUWS tAHKCYSt
SRYS UWHKpNKS tANKC@J lNKC@JP.ptAJ)C@t<EOJB

VEGqbpEGNKqbEGUNKCJ}VS L2CJ

EOUpUWS}t<EOt<E.J)EOUWL2SP.HKUD@HKUWS tAHKSUWS L2HKq!SWl


CRTCE
EORTNKCOJ)HIpUWSP.CUWJ)pNKL2SVEOq!pEONKq!E_pUq!S NKC@tVEpUWCdVEGJsVEpUWSP.CNKpRTUWSHKUWL2EO@EOt
pJsLEOVC@@LEOUWVtAHKSDpUaJ)L2tAHKUWVE5 P.CUpUPQptAJsCtVEGSpNKLRTHKEOUWL2tAS Jdo!pEPQC@UpUPQptAJ)C@t

h 2@!LE[HK@pSN@SpUPQCUWL2t<CNK

@HKUWS tAHKCrpJ)L2EGVC@@LEOUWVtAHKSpUDqbSNKC@t

iCJrPQptAJsCt<EOJMB
L2SNKEOJPQC@RTC

psql

VEO@EOUJ)EOt}pJ)S VC@JrPQpHKVS VCJsSRTEOUWLE!l

>l

NKHKPQS P.HKCUWEOJrVEpJ)pS tAHKC

UWCDJ)CUYPQC@UWJ)PQHKEOUWLEOJVE}NKC@JPQpt
J)Ct<EOJ@HKUWS tAHKC@JEGJsEGt
SUno!pENKC@JVSL2CJ

q!EOUW!SUEOUD2C@tARTS LCL2EGFILC l
iStAEGWt<EOJ)EOUWLS PQHK@U

VETNKCJJ)L2tAHKUWEOJDUWEOpLt
S N_t<EOJ)EOPQL2CSNKSaStAo@pHKL2EOPQLpt
SGRTHKEOUWLtASao!pE

NKSt<EOt<E.J)EOUWL2SP.HKU!HKUWSt
HKS%pEOVEVHK2EOtAHKt}EOUWLtAEDVHK2EOt<EOUWLEOJMS t<o!pHKL2EGP.LptAS JrVERT o!pHKUWS J

>K 2A}r5.>@AA2@A << <A<A@Q


Q QAr5Q

QAW<A@AA@A }AQAA!QdA@2

@.<Q

>@AAQA

lOC@tPQC@UWJ)HK!pHKEGUWL2EGbJ)HJ)pRY o!pHKUWSPQNKHKEOUWL2EMJ)paRT o!pHKUWSJ)EOtAqbHKVC@tpJsS

VHK2EOt<E.UWL2EOJt<EOt<E.JsEGUWL2S PQHKCUWEOJE@l lG@HK@2EOUWVHKS UW_PQCUWL2tASNKHKL2LNKEO2EOUWVHKSUW2@t<C@@S @NKEGRTEOUWL2E


pJsLEOVUWCnVEGJsEGS tASMJ)pJ[VS L2CJ[VEOq!pEONKLC@J[EOUY2CtARTS L2C@HK UWS tAHKC lGgIHKUYEGRT!S t<!CNKCJPQptAJ)C@t<EOJ
@HKUWS tAHKC@JpEGVEOUJ)EGtpUnC@PQCDRT JEO|PQHKEOUWLEOJ@Sro!pE

S RTEOUWCJCqbEGt

EGS VYVEO@HKVCSdNKS

PQC@UWq!EOtAJ)HK@UDEOUDNKS}Lt
S UWJ)2EOt<E.UWPQHKS J_VE[VS LC@JeVEONJ)EOtAq!HKVC@t S NPQNKHKEOUWLE!l

Sugerencia: Si usted pretende mostrar los datos en ASCII, recuperarlos en ASCII le


ahorraran un poco de esfuerzo del lado cliente.

Notes
iCJPQptAJ)C@t<EOJJ)CNKCEGJsLS UVHKJsCUWHK@NKEOJEOUNKSJLtAS UWJ)S PQP.HKCUWEOJ lAdJ)S tS tAS

@ 

u[2

St
SVEO|UWHKtpUL2tAS UWJ)S PQL2HKCU@NKCP. l

mUgIhMij kNKC@JdPQptAJ)C@t<EOJEGJsLS UVHKJ)CUWHK@NKEOJdJ)CNKCaEOUaS NKHKPQS PQHKC@UbEOJgIhri2mgIhriEORT@EO@HK

Z)gfLj)SefWpU

VS J lmiCJ)L2@t<EOJ@S PQ!EGUWVUWCTHKRT%NKEORTEOUWLSnpUPQCRTS UWVCTEOFNKHKPQHKL2CD\


PQptAJ)CtJ)EMPQCUWJ)HKVEOtASrS @HKEOtALCPQpS UWVCEOJ)LEdEOJ[VEOPQNKS tASGVC lGgIHKUTEORY!StA@C

EGN%t<EOtC

ecpg

J)EOJ)S VCtEORT@EO@HKVCVEgIhMiT%S t
S}CJ)L2@t<EOJ)J)C@%C@tAL2SdNKSP.CUWq!EOUWPQHK@UVE}P.ptAJ)C@t<EOJ_ghMij k}
HKUWPQNKp!EOUWVCS o!pEGNKNKC@J_o!pEHKUWqbCNKpPQt
SUNKCJeP.CRTS UWVCJ



mi

mnMmBal

Uso
S t
S[VEOPQNKS tAS tupUDP.ptAJ)C@tG

DECLARE liahona CURSOR FOR SELECT * FROMfilms;

Compatibilidad
SQL92
ghMijkEOtARTHKL2E}PQpt
J)Ct<EOJ_J)CNKCDEOUngIhMiYEORT@EO@HKVCDEGUnRTCVpNKCJlQC@J)L2@t<EOJEGt
RTHKLEPQptA
J)C@t<EOJ%S t
SJ)EOtupJ)S VCJEOU2Ct
RTSHKUWLEOtAS P.LHKq!SWlghMij kEOtARTHKL2E
PQptAJsCt<EOJEORT@EG@HKVC@JCdRTC
VpNKS t<E.JS tAS}S PQL2pS NKHK SGteHKUW2Ct
RTS PQHKUVENKS@S J)EVEVS LC@J l
J)C@UDVE[J)CNKCNKEOPQLptASWl>iSS NKS @tASPQNKS q!E[2B

CVCJ[NKCJPQptAJsCt<EOJCJ)L2@t<EOJ

aEOJpUWS}EOFL2EOUWJ)HKUnVE[C@J)L!t<EOJ l

DELETE
Nombre
DELETE
y

C@tAtAS|NKSJ_VEpUWSL2S @NKS

Synopsis
DELETE FROM table [ WHERE condition ]

Inputs
table
mNUWC@RT@t<EVE[pUWS}LS @NKSEGFIHKJ)LEOUWL2E@l

condition
mJsLS}EOJpUWS}PQC@UWJ)pNKLS}ghMiVE[J)EONKEGP.PQHKUDNKSPQpSN@VEOq!pEGNKqbENKS J|NKSJ_SJ)EOt@C@tAtAS VSGJl

eEO2EOtAHKtAJsES NPQCRTS UWVCgImim

S tASpUWSRTS!CtVEOJ)P.tAHKPQHKUVENKSPQNKS pJ)pNKS

Dm

eml



Outputs
DELETE count
EOUWJ)S)E}VEGqbpEONKLCDJ)H%NKC@J[HKL2EGRTJJ)C@UT@Ct
tAS VCJEOFHKL2CJ)S RTEOUWLE!lmNbqbS NKCt
P.SUWL2HKVS VDVE[|NKS Je@C@tAt
SVS J l
gH

count

count

EGJNKS

= OUWHKUW!pUWS}|NKS}2pE[@C@tAtAS VSWl

EGJ

Description

\^\@C@tAtASNKS J|NKS J_o@pE[JsS LHKJ)2S PQEOUNKS}PQNKS pJspNKS

`D\

gHbNKS

.@ 
Q

2P.NKpJ)pNKS

DmmVE[NKSLS @NKSEOJ)EOPQHK|PQS VSWl

DmemuEOJ)L2SMS pJsEGUWL2EOEONWEGEGP.LCDEOJ[@C@tAtAS teL2CVS JNKS J[|NKS JVENKS

L2S!NKSbl
mNt<EOJ)pNKL2S VCMEOJpUWS}LS @NKSq!S NKHKVS O%EOt<Cq!S PQHKS!l

Sugerencia: TRUNCATE es una extensin de Postgres el cual provee un mecanismo


ms rpido para borrar todas las filas de una tabla.

S t
SrRTC@VHK|PQS t[NKSLS @NKSpJsLEOVVEO@ErCJ)EOEOtS PQPQEOJ)CYVErEOJ)PQt
HKLptASSDNKSRTHKJ)RTS bS J)HP.CRTC
S PQPQEOJ)CrVENKEOPQL2ptASSPQpS NKo!pHKEOtL2S!NKSP.p@CJ_q!S NKCtAEGJJsCUnNEOHKVCJ_EOUDNKS

condicion

Uso
Ct
tASLC@VCJNKCJe|NKRTJ_EOFP.EGL2CMNKCJRTpJ)HKP.SNKEOJ

DELETE FROM films WHERE kind A(@


SELECT * FROM films;

Musical;

code |title
|did| date_prod|kind
|len
---+-----------------+--+-------+-------+---UA501|West Side Story
|105|1961-01-03|Musical
| 02:32
TC901|The King and I
|109|1956-08-11|Musical
| 02:13
WD101|Bed Knobs and Broomsticks|111|
|Musical
| 01:57
(3 rows)

Ct
tASPQCRTNKEOLS RTEOUWLENKS}L2S @NKS

films

DELETE FROM films;


SELECT * FROM films;
code|title|did|date_prod|kind|len
---+---+--+------+---+-(0 rows)



Compatibility
SQL92

ghMijkEOtARTHKLE[pUnPQCRTS UWVC
z

mim

mCJsHKPQHKCUSVC

DELETE FROM table WHERE CURRENT OF cursor


VCUWVE

cursor

PQC@tAt<EOJ)CUWVE_S[pUPQptAJ)C@tS @HKEGt
LC lmUrCJ)L2@t<EOJNKCJPQpt
J)Ct<EOJHKUWLEOt
SP.LHKq!C@J

J)C@UDVE[J)CNKC@2NKEOPQLpt
Sbl

DROP AGGREGATE
Nombre
DROP AGGREGATE
y

mNKHKRTHKUWS}NKS}VEO|UWHKPQHK@UDVEpUWS2pUWPQHKUnS @t<E@S VS

Synopsis
DROP AGGREGATE name type

Entradas
name
mNUWC@RT@t<EVE[pUWS}2pUWPQHKUVES @tAEG!S VWCEGFIHKJ)LEOUWL2E@l

type
mN@LHKCVEpUWS}pUWPQHKUnVE[S !t<EO@SGVCEOFHKJ)L2EGUWL2E!l)2[OSJsENKS}

QAW< !d

AA [@

S tASRT JeHKUW2C@tARTS PQHK@UDJ)C@tAENKCJeL2CC@J_VE[VSL2CJs>l

\y =\y:[\c\y*caJp?a {,IJIa*h{\(*y:) I)JyJ\=y:[\

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN@PQCRTS UWVCrJsEEAEGP.pLSJ)S LHKJs2S PQLC@tAHKS RTEOUWLE!l

WARN RemoveAggregate: aggregate agg for type does not exist


mJsLERTEOUWJ)S)E[SS t<EPQEJ)HNKS2pUWP.H@UDS @t
S!S VS[EOJ)EOPQHK|PQS VSUWCrEOFHKJsLE[EOUDNKS@SJsEVE
VS L2CJ l



Descripcin
`DZ[D]dDDZ[\D]_^\EONKHKRTHKUWSt
dL2CVS JNKS Jt<EGEOt<EOUWPQHKS JSdNKSrVEG|UWHKPQHKUYVEpUWSM2pUWPQHK@U
VES !t<EG!S VWCrEGFIHKJ)LEOUWL2E@l
S tAS[EAEGP.pLS tuEOJ)L2SCtAVEGUEONIpJ)pS tAHKCdS PQL2pS NVEO@EJsEGt EGNIt<C@%HKEOL2S
t
HKCrVEONS @t<EO@SOVC l

Notas
MJ)E

eIM[[e

S tASPQt<EOSGt2pUWPQHKC@UWEOJeVE[S!t<EO@S VCul

Uso
S t
S[EONKHKRTHKUWS tEONS @t<EO!SGVC

myavg

VE[LHKC

int4

DROP AGGREGATE myavg int4;

Compatibilidad
SQL92
BDCMEOFIHKJ)LE[NKSJ)EOUbL2EOUWPQHKS}`DZ[D]MDDZ[\D]_^\EOUgIhMij k ONKS[J)EOUWL2EGUWPQHKSEOJpUWSEOFL2EGUWJsHKU
VE[NKEOUb!pS)EVE[CJ)L2@t<EOJ l

DROP DATABASE
Nombre
DROP DATABASE
y

mNKHKRTHKUWSpUWS@S J)EVEVS LC@JEOFHKJ)L2EOUWLE

Synopsis
DROP DATABASE name

Entradas
name
mNUWC@RT@t<EVE[pUWS}@S J)E[VE[VS LC@JeEOFHKJ)L2EOUWLE[o!pEJ)EVEGJsSEOSEGNKHKRTHKUWS t
l



Salidas
DROP DATABASE
mJsLERTEOUWJ)S)EJ)EVEOq!pEONKq!EJ)H@NKSCt<VEOUJ)EE
EOPQpL2SJ)S LHKJ)SP.LCt
HKS RTEGUWL2E@l

ERROR: user username is not allowed to create/drop databases


EO@EL2EOUWEGt_EONbtAHKq!HKNKEO@HKCnEOJ)EGP.HKSNbm
z
ex e nl

S tASEONKHKRTHKUWS t_@S J)EOJVE}VS LCJl.EOt

ERROR: dropdb: cannot be executed on the template database


iS@S J)E_VEVS L2CJ

UWCdpEOVE_J)EOt%EONKHKRTHKUWS VSWlBDCEGJP.CUWq!EOUWHKEOUWLE

template1

ERROR: dropdb: cannot be executed on an open database


B

pEOVEPQCUWEOPQL2S tAJ)ES}NKS@S J)EVEVS L2CJeo!pEo!pHKEOt<EEONKHKRTHKUWS t


lsmUDJ)pTNKp!St2

P.CUWEOPQLS t_S
UWpEOq!C l

template1

S PQEOtANKC l

S}VE

CnPQpS NKo!pHKEGtCL2tASr@S J)EMVEMVS LC@J)@nE


EOPQpL2S tEON%PQCRTS UWVCVE

ERROR: dropdb: database name does not exist


mJsLERTEOUWJ)S)ECP.ptAt<E[J)HNKS@S J)E[VEVSL2CJeEGJ)EOPQHK|PQS VSUWCEOFHKJ)L2E@l

ERROR: dropdb: database name is not owned by you


EG!E[JsEGtEONt<CHKEOL2St
HKCrVENKS}@S J)EVEVS LC@J lsgIEOt EON!%tACHKEOLS tHKCUWCt
RTSNKRTEOUWLE}J)HK@
z
UWHK|PQSo@pE[L2S RT@HKOUDNKS
SPQt<EOSV%Cul

ERROR: dropdb: May not be called in a transaction block.


DSVE_PQC@RYNKEOL2Stt
HKRTEGt<C}NKSL2tAS UWJ)S PQP.HKUMEOU%tAC@tAEGJsCS UWL2EGJ VE_CVEOtEAEGP.pLS tEGJsLE
P.CRTS UWVCul

NOTICE: The database directory xxx could not be removed.


NKSD@S JsEVEVS LCJ2pEONKHKRTHKUbS VS2SDRTEOUWCJdo!pE

S !SDS S t<E.PQHKVCC@Lt<CTRTEOUWJ)S)EVE

EOtAtACtAGEGt<CEONVHKt<EGP.LC@tAHKCVCUWVEJsES NKRTSP.EGUWS @EOUMNKC@JVS LCJUWCdpVCdJsEGtEONKHKRTHKUWS VCul


z

EG@E[@C@tAtAS tANKCrRTS UWpSNKRTEOUWL2E@l

Descripcin
`DZ[D`D]e^b]Mc]Mf\YEONKHKRTHKUWSMNKS JEOUWLt
SVS JVEPQS L NKC@@CDVE}pUWSM@S J)E}VEVS L2CJEOFHKJ)L2EOUbL2E
@CtAt
SEONVHKt<EOPQLC@tAHKCo!pEPQC@UWLHKEOUWENKCJrVS L2CJ lIgIC@NKSRTEOUWL2EDpEOVEJsEGtEAEGP.pLS VCCtEGN
t<C@%HKEOL2SGtAHKCVENKS@S J)E[VEVS LC@J2UWC@tARTS NKRTEGUWL2Eo!pHKEGUnNKSPQt<EO>l

Notas
mJ)L2SC@t<VEGUUWCr%pEOVEJ)EOtuEAEGP.pLS VSRTHKEOUWLt
S JJ)EEOJ)L2[P.CUWEO
PQL2SVCdSNKS@S J)EVEVSL2CJC@GEO
L2HKq!Cul.CtNKCLS UWLC@pEOVEJ)EOteRT JPQCUWqbEGUWHKEOUWL2EpJ)S teEONbJ

EGNKNWJ)P.tAHKL

.

o@pEEORTNKEGS

EOJ)L2EP.CRTS UWVCul
[OS J)EeEO2EOtLC

e

Uu

S tASRT J HKUW2Ct
RTS PQHKUJ)C@tAE_PQCRTCMPQt<E.S tpUWS@S J)E

VE[VSL2CJl



Compatibilidad
SQL92
iSJ)EOUWLEOUWPQHKSd`DZ[D`D]_^b]Mc]Mf\nEGJpUWS}EOFL2EGUWJsHKUVENKEOUW@pS)E}VECJ)L2@t<EOJ) UWCEOFHKJ)L2E
EOJ)E[PQC@RYS UWVCEGUgIhMij kWl

DROP FUNCTION
Nombre
DROP FUNCTION
y

mNKHKRTHKUWSpUWS2pUWPQHKUnVEpJ)pS tAHKCEGJsPQtAHKL2SEOUD

Synopsis
DROP FUNCTION name ( [ type [, ...] ] )

Entradas
name
mNUWC@RT@t<EVE[pUWS}2pUWPQHKUEGFIHKJ)L2EGUWL2E@l

type
mNL2HKCrVE[NKCJS tA RTEOLtCJ_VE[NKS2pUWP.HKUl

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMJ)H@NKS}Ct<VEOUJ)EPQC@RT%NKEOL2SJsSL2HKJ)2S PQL2Ct
HKSRTEOUWL2E@l

WARN RemoveFunction: Function "name" ("types") does not exist


mJsLEMRTEOUWJ)S)EJ)ErC@@LHKEOUWErJ)HKNKS2pUWP.HKUEOJ)S PQHK|P.SV%SUWCYEGFIHKJ)L2EdEOUNKS@S J)ErVEMVS LCJ
S PQL2pS Nl

"

Descripcin

eMY@MB
z

MB

EONKHKRTHKUWSt
NKS Jet<EO2Et<EOUWPQHKS JeS}pUWS}2pUWP.HKUEOFHKJsLEOUWLE!l)S t
S}EAEGP.pLS t

EOJ)L2SdCtAVEOUnEGNWpJ)pS t
HKCVEG@
EJ)EOteEGNWt<CHKEOL2SGtAHKCVENKSd2pUWP.HKUliCJLHKC@JVE}S t<@pRTEOUWL2CJ
VE_EOUWLt
S VSVENKS2pUWPQHK@U

S UVEEOJ)EOPQHK|PQS tAJsEG.VS VC}o!pEJsCNKCdNKS2pUWPQHKUPQC@UrEON UWC@RT@t<E

VS VWC@ NKC@J_L2HKCJ_VES t<!pRTEGUWL2CJ_VSC@JeJ)E[EONKHKRTHKUWS tAWl

Notas
[OS J)E

e de

S tAS}RT JHKUW2Ct
RTS PQHKUJ)C@tAENKSPQt<EOSGP.HKUYVE2pUWPQHKC@UWEGJVE

S @tAE.@S VCul

BDCJ)E

SP.EGUPQC@RYtAC@S PQHKCUWEOJS tAS}qbEGt


HK|PQS teNKCJL2HKCJVE}VS LC@J)IC@EGt
S VC@t<E.JCRTOLC@VC

VE[S PQPQEOJ)CMtAEGNKS PQHKC@UWS VC@JPQC@UDNKS}2pUWPQHK@UDo!pE

S}VEEONKHKRTHKUWS tAJ)E!l

Uso
mJ)L2SCt<VEOUEGNKHKRTHKUWS}NKS}pUWPQHKUDt
S HKP.pS Vt
SGVSW

DROP FUNCTION sqrt(int4);

Compatibilidad
SQL92
`DZ[Dn@MDX[^AD

EOJ_pUWSEOFILEOUWJ)HKUnVENKEOUW@pS)EVE[C@J)L!t<EOJ l

SQL/PSM

ghMiIgEOJupUrEGJsLS UWVS tW t<CpEOJ)L2C}St


S
iSJ)EOUWLEOUWPQHKS
z

eMY@dBD

MB

S@HKNKHKL2S t%NKSEOFILEOUWJ)HKCUWS NKHKVS VVEeNKS2pUWP.HKCUWEOJ l

VEghMiIg

L2HEOUWEOUDNKSJ)HK!pHKEGUWL2EJ)HKUWL2SFIHKJ

DROP [ SPECIFIC ] FUNCTION name { RESTRICT | CASCADE }

DROP GROUP
Nombre
DROP GROUP
y

miHKRTHKUWS}pU@t<pC



Synopsis
DROP GROUP name

Entradas
name
mNUWC@RT@t<EVE[pUD@t<pCEOFHKJ)L2EGUWL2E!l

Salidas
DROP GROUP
mNRTEOUWJ)S)E[VEOq!pEONKL2CrJ)H@EGJe@t<pCEOJEONKHKRYHKUWS VCJ)S LHKJs2S PQLC@tAHKS RTEOUWLE!l

Descripcin
`DZ[DDZ[DdEONKHKRTHKUWSEGN%!t<pCEOJ)EOPQHK|PQS VCDVEMNKSM!SJsEVEMVSL2CJl.iC@J[pJ)pS tAHKC@J[VEON
!t<pCrUWCJ)EEONKHKRTHKUWSUl
MJ)E

en[

S tASSWS VHKtuUWpEOq!C@Je!t<pCJ)[d

@HKS t NKSEOtAL2EGUWEOUWPQHKSSpUD!t<pCul

Uso
S t
S[EONKHKRTHKUWS tpUD!t<pCu

DROP GROUP staff;

Compatibilidad
SQL92
BDCEGFIHKJ)LE[EONPQC@RTSUWVC`DZ[DDZ[DdEOUDgIhrijk!l

"

2@2%[}

xS tASPQS RT

DROP INDEX
Nombre
DROP INDEX
y

mNKHKRTHKUWS}pUHKUWVHKPQS}VENKS@S J)EVE[VSL2CJ

Synopsis
DROP INDEX index_name

Entradas
index_name
mNUWC@RT@t<EVEONHKUWVHKP.ESEONKHKRTHKUWS t
l

Salidas
DROP
mNRTEOUWJ)S)E[VEOq!pEONKL2CrJ)H@EGNHKUWVHKPQEEOJeEONKHKRTHKUWS VCrJsSL2HKJ)2S PQL2Ct
HKSRTEOUWL2E@l

ERROR: index "index_name" nonexistent


mJsLERTEOUWJ)S)ELHKEOUWENKp@S tJ)H

index_name

UWCEOJpUHKUWVHKP.EVE[NKS}@S J)E[VE[VS L2CJ l

Descripcin
`DZ[DrAD`D\n EONKHKRTHKUWSpUdHKUWVHKPQEeEOFHKJsLEOUWLEeVEONGJ)HKJ)L2EORTSVEe@S J)EVEVSL2CJlhMpHKEOUdE
EOPQpLE
EOJ)L2EP.CRTS UWVC

S}VE[J)EOt EONt<CHKEOLS t
HKCMVEONUWVHKPQE!l

Notas
`DZ[DnAD`D\aEOJpUWS}EOFILEOUWJ)HKUnVEGNNKEOUW@pS>EVE[C@J)L!t<EOJ l
[OS J)EeEO2EOtL2C

e2

S tASRTJeHKUW2Ct
RTSP.HKUJsC@t<E[PQC@RTCP.t<EOSGtKUWVHKPQEOJ l

Uso
mJ)L2E[PQCRTS UWVCrEONKHKRTHKUWS tA}EONKUbVHKP.E

title_idx

DROP INDEX title_idx;

"

Compatibilidad
SQL92
ghMijkVEO|UWE[PQCRTS UWVCJPQC@UDNKCJ_o@pES PQP.EGVEOtuS}pUWS@S J)E[VEVS L2CJetAEGNKS PQHKC@UWS N@EOUWGt
HKPQSWl
iCJ[UWVHKPQEOJJ)C@UpUWSMP.St
S PQLEtAKJ)LHKP.SMVEOEGUWVHKEOUWLEdVENKSrHKRTNKEGRTEOUWL2SP.HKUW@CtNKCo!pEUWC
EOFHKJsLE[PQCRTS UWVCJ_CrVE|UWHP.HKCUWEOJ_EOJ)EOPQK|PQC@JeS tASNKCJ_UWVHKPQEOJ_EGUDEONNKEOUW@pS)EgIhMij k@l

DROP LANGUAGE
Nombre
DROP LANGUAGE

mNKHKRTHKUWSpUDNKEOUW@pE
S}t<C@PQEOVWptAS NVEO|UWHKVCCtEGNpJspS tAHKC
y

Synopsis
DROP PROCEDURAL LANGUAGE name

Entradas
name
mNUWC@RT@t<EVE[pUDNKEOUW@pS)Et<CP.EGVpt
SGNEOFHKJsLEOUWLE!l

Salidas
DROP
mJsLERTEOUWJ)S)EEOJeVEOq!pEONKLCrJ)HEONNKEOUW@pS)EEOJeEONKHKRTHKUWS VCrJ)S L2HKJ)2S PQL2CtAHKS RTEOUWLE!l

ERROR: Language "name" doesnt exist


mJsLERTEOUWJ)S)EL2HKEGUWENKp!StJ)H!EGN@NKEGUW!pS)ENKNKS RTSVC
VE[VS LC@J l

Descripcin

"

t<EOq!HKRTEOUWLE[t<EOJ)!HKJ)Lt
S VC l

name

UWCJ)EEOUWPQpEOUWLtAS}EOUDNKS}@S J)E

&]MDDd]MD\nEONKHKRTHKUWSt
}NKSVEO|UWHKPQHK@UVEGN!NKEOUWpS>Et<CP.EGV%ptAS N

`DZ[DZ[DX[\`DdZ[]
NKNKS RTVC

name

Notas

]dDDd]D\EOJ[pUbSEOFL2EOUWJ)HKUTVEdNKEGUW!pS)EMVE

iSrJ)EOUWLEOUWPQHKS`DZ[DZ[DX[\`DMZ]
C@J)L!t<EOJ l
[OS J)EeEO2EOtuLC eI

M[

S tASRY JeHKUW2CtARTS PQHK@UJ)C!t<EP.CRTCMP.t<EOStNKEOUW@pS

EGJ_t<CPQEOVptS NKEGJl
BDCYJ)Et<EOSGNKHK SUWHKUW!pUWSDPQC@RTt<C@S PQHK@US PQEOt<P)SVErJ)H EOFHKJ)L2EGUa2pUWPQHKC@UWEG
J}CTt<CP.EGVHKRTHKEOUW
L2CJVEOJ)EGUWP.SVEUWSVC@J%C@teEOq!EOUWLCJEOJ)PQt
HKLC@JEGUEOJ)LENKEOUW@pS>E@l.S tAS}t<EO

S @HKNKHKL2St
NKCJJ)HKULEO

UWEOt}o!pEEONKHK RTHKUbS tdat<EOPQtAE.S tLC@VSJNKS JM2pUWPQHKC@UWEGJsEGNL2tAHK@pL2Ca!t<C@PQJdt<CNKS UWaVENKS J


2pUWP.HKCUWEOJ

SaVEJ)EOtS)pJ)LS VCS tASEGNUWpEGqbCHKVEOUbL2HK|PQS VC@tVETCOEOLC

VETNKSaEGUWL2tAS VS

@ NKS UW@pS!EVEONNKEOUW@pS)Et<C@PQEOVptASGN@UWpEGqbSRTEOUWL2E[P.t<E.S VCul

Uso
mJ)L2E[PQCRTS UWVCrEONKHKRTHKUWS}EONNKEOUW@pS)EigIS RTNKE@

DROP PROCEDURAL LANGUAGE plsample;

Compatibilidad
SQL92

4#]dDDM]dD\DEOUDgIhrijkWl

BDCEGFIHKJ)LE[EONPQC@RTSUWVC`DZ[DZ[DX[\`DMZ[]

DROP OPERATOR
Nombre
DROP OPERATOR
y

hMpHKL2S}pUDCEOtAS VCtVE[NKS@S J)E[VE[VSL2CJ

Synopsis
DROP OPERATOR id ( type | NONE [,...] )

Entradas
id
mNHKVEOUWL2H|PQS VCt VEpUDC@EGt
S VCt EOFHKJsLEOUWLE!l

"

type
mNL2HKCrVE[NKCJS tA RTEOLtCJ_VE[NKS2pUWP.HKUl

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMJ)H@NKS}CEOtAS PQHKUEOJ_EGFIHKLC@J)SWl

ERROR: RemoveOperator: binary operator oper taking type and type2


does not exist
mJsLERTEOUWJ)S)EJ)ERTpEOJ)L2tASJ)HEONCEOtAS VCt@HKUWS tAHKCEGJs%EOPQHK|PQS VCMUWCEGFIHKJ)LE!l

ERROR: RemoveOperator: left unary operator oper taking type does not
exist
mJsLERTEOUWJ)S)EJ)ERTpEOJ)L2tASJ)HEONCEOtAS VCtpUWS tAHKCHKo!pHKEOt<VCMEOJ)EOPQHK|P.S VCrUWCrEOFHKJsLE!l

ERROR: RemoveOperator: right unary operator oper taking type does

not exist
mJsLERTEOUWJ)S)EJ)ERTpEOJ)L2tASJ)HEONCEOtAS VCtpUWS tAHKCVEOt<EP

CEGJsEGPQHK|PQS VWCUWCEGFIHKJ)LE!l

Description
`DZ[DDD\Z[]_^eDZo!pHKL2S[pUC@%EOtAS VC@tVENKS[@S J)EVEVS LC@J lASt
SE
EOPQpL2StEOJ)L2EP.CRTS UW
VCMpJ)LEOVVEO@EJsEGtEGN@t<CHKEOLS tAHKCrVEGNC@EGt
SVC@t
l

iSrPQS NKHKVSVVEMVEGt<EOP

CnCHK o!pHKEOt<VCVEMpUCEOtAS VCtpUWSt


HKCHK o!pHKEOt<VCCVEOt<EP

EOPQL2HqbS RTEGUWL2EGOpEOVEJsEGtEOJ)EOPQHK|PQS VSPQCRTC

NONE

C!tAEGJ)

Notas
iSVEGP.NKS tS P.HKU`DZ[DD\Z[]_^DZEOJpUWS}EOFL2EOUWJ)HKUnVE[NKEOUW@pS)EVE[C@J)L!t<EOJ l
CUWJ)pNKLE

e

W

CtHKUW2Ct
RTSP.HKUDJ)C@@t<E[PQRTCPQtAEGSOtC@%EOt
SVC@t<E.J l

mJt<EOJ)C@UWJ)S @HKNKHKVSVVEONpJ)pS tAHKCrt<EORTCq!EOt P.pS NKo@pHKEOtRYOL2CVCVE[S PQPQEOJ)CrP.NKSJsEGJeVE[C@%EO


t
SVC@tuo!pEVEGEOUWVSGUDVEONC@%EOt
SVC@t o!pEJ)E[o!pHKLul

Utilizacin
hrpHKLSEONCEOtAS VCtVE[CL2EOUWPQHKS

a^n

S tAS

int4

DROP OPERATOR ^ (int4, int4);

hrpHKLSEONCEOtAS VCtpUWSt
HKCrHK o!pHKEOt<VCMVE[UWEG!S PQHKUn

"

bS tASEOFt<EJ)HKCUWEOJ@CC@NKEGS UWS J

b !

DROP OPERATOR ! (none, bool);

hrpHKLSEONCEOtAS VCtpUWSt
HKCrVEOt<E.P

CVE[2S PQL2CtAHKS N

bS tAS

! i

int4

DROP OPERATOR ! (int4, none);

Compatibilidad
SQL92
BDCEGFIHKJ)LE[pUDP.CRTS UWVC`DZ[DD\Z[]_^DZEOUDghMij k@l

DROP RULE
Nombre
DROP RULE
y

hMpHKL2S}pUWS}t<EO@NKSEGFIHKJ)LEOUWL2EVE[NKS}@S J)E[VE[VSL2CJ

Synopsis
DROP RULE name

Entradas
name
mNUWC@RT@t<EVE[pUWS}t<EO@NKSEGFIHKJ)LEOUWL2E[S tASo!pHKLS t
l

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMEOUDPQS J)CVE[o@pENKSC@%EOtAS P.HKUDJ)EOSEOFHKLC@J)SWl

"

ERROR: RewriteGetRuleEventRel: rule "name" not found


mJsLERTEOUWJ)S)EJ)ERTpEOJ)L2tASJ)HNKS}t<EO@NKSEOJ)EOPQHK|PQS VSUWCrEOFHKJsLE!l

Descripcin

\o!pHKLSpUWS[t<EG!NKSVEON J)HKJsLEORTS[VEt<EO@NKSGJVECJ)L2@t<EOJEOJ)EOPQHK|PQS VCulACJsL!t<EGJ

`DZ[DDZ[

VE
S tASOVEDS %NKHKP.St
NKSHKUWRTEOVHKS LS RTEOUWLEDao!pHKLS t
t
SDJ)pVEO|UWHKP.HKUVENKC@JrPQS L2NKC@@C@JdVEGN
J)HKJsLEORTSWl

Notas

\EOJpUWS}EOFL2EOUWJ)HKUnVE[NKEOUW@pS)EVE[C@J)L!t<EOJ l

iSVEGP.NKS tS P.HKU`DZ[DZ[

\S tASHKUW2Ct
RTS PQHKUDJsC@t<E[PQ@RTCP.t<EOSGttAEG!NKS J l

CUWJ)pNKLEX[Z[\]_^\nZ[

MUWSq!EO[o!pEJ)Eo!pHKLS}pUWSt<EO!NKSOEONS PQPQEOJ)CrSNKSHKUW2C@tARTS PQHK@U


EOJ)PQt
HKLCr%pEGVE[VEGJsS %S t<EPQEOt
l

Utilizacin
S t
S[o!pHKLS tNKSt<EO@NKSVEt<EOEOJ)PQt
HKLpt
S

newrule

DROP RULE newrule;

Compatibilidad
SQL92

\EOUgIhrij kWl

BDCEGFIHKJ)LE`DZ[DZ[

DROP SEQUENCE
Nombre
DROP SEQUENCE
y

hMpHKL2S}pUWS}J)EOPQpEOUWPQHKSEGFIHKJ)L2EGUWL2E

Synopsis
DROP SEQUENCE name [, ...]

"

HKJ)L2tAHKP.S}o@pENKSt<EO@NKS

S @S

Entradas
name
mNUWC@RT@t<EVE[pUWS}J)EOPQpEOUWPQHKSWl

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMJ)H@NKS}J)EOPQpEOUWPQHKSJ)EEONKHRTHKUWS}EOFIHKLCJsSRTEOUWL2E@l

WARN: Relation "name" does not exist.


mJsLERTEOUWJ)S)EJ)ERTpEOJ)L2tASJ)HNKS}J)EOPQpEOUWPQHKSEOJ)EOPQHK|PQS VSUWCEGFIHKJ)LE!l

Descripcin

qDd\DX[\o!pHKL2S[pUWSJ)EOPQpEOUWPQHKS@EOUWEOtAS VCtAS[VEUWRTEOt<CJVENKS[@S J)EVEVS LC@J l

`DZ[Df\

CUDNKS}S PQL2pS NHKRTNKEORTEGUWL2S PQHKUnVENKS J_J)EOPQpEOUWPQHKS JePQC@RTCLS @NKS JEOJ)EOPQHKS NKEGJs Lt
S@S)SHK!pS N

r\_l

o!pENKSVEGP.NKSt
SGPQHK@Un`DZ[D^b]Mc

Notas

qDd\DX[\EOJpUWS}EOFL2EGUWJsHKUDVENKEOUW@pS)EVE[CJsL@tAEGJl

iSVEGP.NKS tS P.HKU`DZ[Df\

qDM\DX[\S tASC!LEOUWEGtHKUW2Ct
RTSP.HKUDJsC@t<E[PQ@RYC

CUWJ)pNKLE[NKSVEOPQNKS t
SP.HKUDX[Z[\]_^\f\
PQtAE.S tpUWSJ)EOPQpEOUWPQHKSWl

Utilizacin
S t
S[o!pHKLS tNKSJ)EOPQpEOUWPQHKS

serial

VENKS@S J)E[VEVSL2CJ

DROP SEQUENCE serial;

Compatibilidad
SQL92

qDd\DX[\DEOUDgIhMij kWl

BDCEGFIHKJ)LE`DZ[Df\

"

DROP TABLE
Nombre
DROP TABLE [Eliminar Tabla]
y

mNKHRTHKUWS}L2S @NKS JVEpUWS}@SJsEVE[VS LC@J

Synopsis
DROP TABLE nombre [, ...]

Entradas
nombre
mNUWC@RT@t<EVE[pUWS}LS @NKSq!HKJ)L2S}EGFIHKJ)LEOUWL2E%S t
S[EONKHKRTHKUWS tANKSWl

Salidas
DROP
mNRTEOUWJ)S)E[VEOq!pEONKL2CrJ)H@EGNP.CRTS UWVCrPQC@UWPQNKp@CEOFHKL2CJsSRTEOUWLE!l

ERROR Relation "nombre" Does Not Exist!


gHNKSLS @NKSCrqbHKJ)LS}EOJ)EOPQHK|PQS VSUWCEGFIHKJ)L2E[EOUDNKS@S J)E[VEVSL2CJl

Descripcin

r\nEONKHKRTHKUWS}LS @NKS Jeq!HKJ)L2S JeVE[pUWS}@S J)EVEVS L2CJ l)gCNKCJ)pnt<C@HKEGL2S tAHKCMC~D

`DZ[D^b]Mc

UWEOtApEOVEVEGJsLt<pHKt_pUWSMLS @NKSMCq!HKJ)L2Sbl.dUWSMLS @NKSMpEGVEJ)EGteqbS PQHKS VWSdVEJ)pJ|NKS J)EOt<C

\^e\el

UWCVEGJsLt<pHKVS pJ)S UWVC`D\

gHWpUWSrL2S @NKSSrJsEGtVEGJsLt<pHKVSLHKEOUWEMpUKUWVHKP.EdJsEGP.pUWVSt
HKC@EOJ)LEMVEO@EMJ)EOtt<EORTCq!HKVCntAHK
RTEOt<CuliSt<EORTCP.H@UVEJ)C@NCapUUWVHKPQEJ)EOPQpUWVS tAHKCTUWCS 2EOP)LSnEONuP.CUWLEOUWHKVCVEDNKSDLS @NKS
J)p@@S PQEOUWLE!l

Notas

r\T]^\Z

CUWJ)pNKLS teEGUX[Z[\]_^\T^b]Mc
CRTCVHK|P.StLS @NKS J l

""

r\YS tASdHKUW2Ct
RYS P.HKUJ)C@t<E}PQCRTCDP.t<EGSOt

^b]Mc

Uso
S t
S[VEOJ)LtApHKtVC@JeLS @NKS J)

cintas

UY_aj),fL_,]g_yYSefNj

DROP TABLE cintas, distribuidores;

Compatibilidad
SQL92

ghMijkEOJ)EOPQHK|PQSS NK@pUWS J_PQS SGPQHKVS VEOJS VHKP.HKCUWS NKEOJS


z

eM

iWm

DROP TABLE table { RESTRICT | CASCADE }

emg

e2

J)EG!ptASo@pEJ)CNKCMpUWSLS @NKSJ)HKUq!HKJ)L2SJVEOEGUWVHKEOUWLEOJCt<EOJ)L2tAHKPQPQHKC@UWEOJ VEHKUWLEO@tAHKVS V

pEOVSJ)EOtVEOJ)LtApHKVSWl

g

pS NKo!pHKEGtq!HKJsLS}Ct<EOJ)Lt
HKPQPQHKUVE[HKUWLEO!tAHKVS VJ)EOtAKS[L2SRT!HKEGUDEONKHKRTHKUWS VSWl

Sugerencia: Por el momento, para eliminar una vista dependiente se debe eliminar esta
explicitamente.

DROP TRIGGER
Nombre
DROP TRIGGER
y

Ct
tASNKSVEG|UWHKPQHKUnVE[pUDVHKJs%S t
SV%Ct

Synopsis
DROP TRIGGER nombre ON tabla

Entradas
nombre
mNUWC@RT@t<EVE[pUDVHKJ)S tAS VCtuEOFHKJsLEOUWLE!l

"

tabla
mNUWC@RT@t<EVE[pUWS}LS @NKSWl

Salidas
DROP
EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN@VHKJsSt
SV%CtJ)E@C@tAtAPQCt
t<EOPQLSORTEOUWLE!l

ERROR: DropTrigger: there is no trigger name on relation "table"


mJsLERTEOUWJ)S)EJ)EVSPQpS UWVCMEONVHKJ)S tAS VWC@tEOJ)EOPQHK|P.SVCrUWCEGFIHKJ)LE!l

Descripcin
`DZ[DD^Z[ADD\Z@C@tAtAS t
LC@VSJNKS Jt<EO2E.tAEGUWP.HKSJEOFHKJsLEOUWLEOJSNKSVEG|UWHKPQHKUVEpUVHKJ)S
t
SVC@t
l>S tASCVEOtE
EOPQpL2S t EOJ)LE}PQCRTS UWVCrEON!pJ)pS tAHKCSP.LpS NVEO@E[J)EOtEON@t<C@HKEGL2S tHKCVEON
VHKJ)S tASOVCt
l

Notas
`DZ[Dn^Z[ADD\ZEOJpUWS}EOFL2EOUWJ)HKUDVEONNKEOUW@pS)E[VE[C@J)L!t<EOJ l
CUWJ)pNKLE[XZ[\]_^e\^eZADD\ZS tASC@@LEOUWEOtuHKUW2Ct
RTSP.HKUSP.EGtAPQSVEPQ@RTCMPQtAEGSOtuVHKJ)S
t
SVC@t<E.J_2Lt
HK@@EOtAJs>l

Utilizacin
EOJ)L2t<p@EEONVHKJ)S tAS VCt
z

if_dist_exists

EOUDNKSL2S@NKS

films

DROP TRIGGER if_dist_exists ON films;

Compatibilidad
SQL92
BDCEGFIHKJ)LE[UWHKUW@pUWSVEGP.NKSt
SGPQHK@U`DZ[D^Z[ADD\ZEOUgIhrij kWl

DROP TYPE
Nombre
DROP TYPE

EOL2HKtAS}pUDL2HKC VEO|UWHKVCrC@tEONpJ)pS tAHKC@ VE[NKCJPQS L NKC!CJVEONJ)HKJsLEORTS


y

Synopsis
DROP TYPE tipo

Entradas
tipo
mNUWC@RT@t<EVEONLHKCPQS LS NKC!SVC l

Salidas
DROP

mNRTEOUWJ)S)E[o!pEJ)EC@@LHKEOUWEJ)HEONP.CRTS UWVC

SJ)HKVCE
EOPQpLS VCMP.CUDOFHKL2Cul

ERROR: RemoveType: type tipo does not exist


mJsLERTEOUWJ)S)ECP.ptAt<E[J)HEONL2HK%CVS VCMUWC

S}J)HKVCrEOUWPQC@UWLtAS VC l

Descripcin

r~e\nt<EOLHKt
SpULHKC VEO|UWHKVCCt EONpJspSt
HKC VE[NKCJ_PQS L NKC!CJ_VEGNJsHKJ)LEORTSWl

`DZ[Dn^

MULHKCpEGVE[J)EOttAEGL2HKtASOVCUWHKPQS RTEOUWLECtJ)pnVpEOWC l

Notas
iSPQNK pJ)pNKS
z

eM

mEOJpUWS}EOFILEOUWJ)HKUVEONNKEOUW@pS>ECJ)L2@t<EOJ l

r~e\YS tASC@@LEOUWEOteHKUW2Ct
RTSP.HKUTJ)C@@t<EPQC@RTCPQt<ES tL2HK

CUWJ)pNKLEdEGNbPQCRTS UWVCX[Z[\]_^\^
CJl

mJ[t<EOJ)C@UWJ)S @HKNKHKVSVVEON%S pLC@tt<EOLHKt


SGtPQpS NKo@pHKEOtC
EOtAS VCt2pUWP.HKUW!S @t<E@S VC@RTOLC@VC
VE[S PQPQEOJ)CJsp@LHKCP.NKSJsEo!pEpJ)EOUEONL2HKCro!pE

S}J)HKVC@CtAt
S VC l

gHIJsEt<EOLHKtASpUDL2HKCrt<EOVEO|UWHKVCEONPQCRTC@tAL2SRTHKEOUWLCVEONJ)EOtAq!HKVC@t J)EOtAHKRTt<EOVEOPQHK@NKE!l

Uso
S t
S[t<EOL2Ht
S tuEONLHKC

caja

DROP TYPE caja;

Compatibilidad
SQL3

r~e\nEOJepUWS}PQNK pJ)pNKSVE[gIhMi+Wl

`DZ[Dn^

DROP USER
Nombre
DROP USER
y

EOL2HKtAS}pUDpJspSt
HKC

Synopsis
DROP USER nombre

Entradas
nombre
mNUWC@RT@t<EVE[pUDpJ)pS tAHKCEOFHKJ)L2EOUWLE!l

Salidas
DROP USER

mNRTEOUWJ)S)E[o!pEJ)EC@@LHKEOUWEJ)HEONpJspS tAHKC

SJ)HKVCt<EOLHKt
SVCrPQCUGFIHKLC l

ERROR: DROP USER: user "nombre"


does not exist

mJsLERTEOUWJ)S)ECP.ptAt<E[J)HUWC

S}J)HKVCEGUWPQC@UWLt
SVCEONpJ)pS tAHKCVSVC l

DROP USER: user "nombre" owns database "base_datos", cannot be removed


EO@EOtAEONKHKRTHKUWS te%t
HKRTEOt<CNKSM@S J)EVE}VS L2CJEGt
LEOUWEOPQHKEOUWLES NbpJ)pS tAHKCCRTCVHK|P.S t
z
Jspnt<CHKEOLSOtAHKC@ SUWL2EOJeVE[CVEOt t<EOLHKt
StS NpJ)pS tAHKC l

Descripcin
`DZ[Ddf\Z

t<EOLHKtASnVENKS@S J)EDVEVS L2CJdEONpJ)pS tAHKCaVSVC lBDCat<EGL2HKtASnLS @NKS J)q!HKJsLS JMp

C@Lt<C@J C@GEOLC@Jo!pEEOtAL2EGUWEO PQSOUS NpJ)pS tAHKC l<gH EON pJ)pS tAHKCdEOJVpEGWCMVEpUWS@S J)EVE_VSL2CJs
J)E[t<C@VpPQHKtApUDEOtAt<C@t
l
MJ)E

e

e S tASnSVHKPQHKC@UWS tUWpEOq!CJpJ)pS tAHKC@J)DM

2!2W



S tASrRTCVHK|P.StNKS Jt<CHKEOVSGVEOJVEMpUpJ)pSt
HKCulGC@J)L!t<EOgI
hMia
q!HKEOUWErPQC@UpU@pH@U
@AA

o!pEdLHKEOUWEdNKSdRTHKJ)RTS2pUWPQHK@UYVEEGJsL EdPQCRTS UWVCD2VE

EOt<CMo!pEpEOVEJsEGtEAEGP.pLS VCMVEOJ)VE[NKS}J

EGP

C@HKUWq!CPQSrEOJ)L2EPQC@RTSUWVC@

EONKNl

Uso
S t
S[EONKHKRTHKUWS tNKS}PQpEOUWL2SVE[pUDpJspS tAHKCu

DROP USER juan;

Compatibilidad
SQL92
BDCEGFIHKJ)LE[PQC@RTS UWVC`DZ[Ddf\ZEOUDgIhrijk!l

DROP VIEW
Nombre
DROP VIEW
y

EOL2HKtAS}pUWSq!HKJ)L2S}VEG|UWHKVSEOUDpUWS}@S J)E[VE[VSL2CJ

Synopsis
DROP VIEW nombre

Entradas
nombre
mNUWC@RT@t<EVE[NKSqbHKJ)LS}VEO|UWHKVSWl

Salidas
DROP

mNRTEOUWJ)S)E[o!pEJ)EC@@LHKEOUWEJ)HEONP.CRTS UWVC

SJ)HKVCE
EOPQpLS VCMP.CUDOFHKL2Cul

ERROR: RewriteGetRuleEventRel: rule "_RETnombre" not found


mJsLERTEOUWJ)S)ECP.ptAt<E[J)HNKSq!HKJsLS}VS VS[UWCEOFHKJ)L2E[EGUDNKS@S J)E[VEVS LCJl

Descripcin
kdA\

`DZ[D

t<EGL2HKtAS[pUWSq!HKJ)L2S[VEO|UWHKVSEGUpUWS@S J)EVEVS LC@J l


S tASCVEOtuEAEOPQpLS tuEOJ)L2E

PQC@RTS UWVC@VEG@EOt
JsEGtEGN@VpEGWCVENKSq!HKJsLSWl

Notas

x\VE[CJ)L2@t<EOJeL2S RT@HKOUEONKHKRTHKUWSqbHKJ)LS J l

iSPQNK pJ)pNKS}`DZ[D^b]dc

&kdA\

CUWJ)pNKLEX[Z[\]_^\

S tAS[pUWS}EGFINKHKPQS PQHKUDVE[PQC@RTCrJ)EP.t<EGS UqbHKJ)LS J l

Uso
mJ)L2E[PQCRTS UWVCrtAEGL2HKtAS tANKSq!HKJ)L2S}NKNKSRTS VS

variedades

DROP VIEW variedades;

Compatibilidad
SQL92

&kdA\

ghMijkEOJ)EOPQHK|PQSS NK@pUWS J_2pUWPQHKC@UWSNKHKVS VEOJS VHKPQHKCUWS NKEOJS tAS}`DZ[D

DROP VIEW vista { RESTRICT | CASCADE }

Entradas

emg

e2

J)EO@ptASro!pEJsEGS UTVEOJ)L2t<pHKVSJ[UWHKPQS RTEGUWL2EqbHKJ)LS J[JsHKUTCLt


S JNKHKJ)LS J[VEOEOUWVHKEOUWL2EGJ

JsHKUDt<EOJ)Lt
HKPQPQHKC@UWEGJ_VEHKUWL2EO@tAHKVS Vl

g

m
z

pS NKo!pHKEGt_qbHKJ)LSo!pEdJ)EMt<EG|EGt
SSrEGJsLSrJ)EOtArLS RT@HKOUTEGNKHKRTHKUWS VS IS NWHK@pS N%o!pEMPQpS NK
o!pHKEOtt<EGJsLtAHKP.PQHKUVE[HKUWLEO@t
HKVSVl

Notas

PQLpS NKRTEOUWLEO S tAS}t<EOL2HKtASGtpUWSqbHKJ)LSdt<EO2E.tAHKVSEOUnpUWS@S J)EVEVS LCJC@J)L!t<EOJ_EOJ)L2SVEO@E


J)EOtEGNKHKRTHKUWS VSEGFINKPQHKL2S RTEGUWL2E!l

END
Nombre
END
y

iNKEOq!SSPQS @CrNKSL2tAS UWJ)S PQPQHK@UDS PQLpSN

Synopsis
END [ WORK | TRANSACTION ]

Entradas

Me

BDg

MB

SNKS @t
SJePQNKS q!E[CPQHKC@UWSNKEOJ l)BDCLHKEOUWEOUDUWHKUW@UnEGEGP.LCul

Salidas
COMMIT
mJEGNuRTEGUWJsS>Eo!pEJ)EVEGqbpEGNKqbEJ)H NKSLt
SUWJsS PQPQHKUJ)E

SNKNKEGqbS VCYSPQS @CYPQCt


t<EGP.LSO

RTEOUWL2E@l

NOTICE: COMMIT: no transaction in progress


gEVSPQpS UWVCUWC

S UWHKUW@pUWSL2tAS UWJ)S PQPQHK@UEOUDPQptAJsCul

Descripcin
\D`

EOJepUDJsHKUWUWHRTCVE[CJ)L2@t<EOgIhriS tAS

Notas

iS JS NKS @tSJ_PQNKS q!E

MJ)E

@ 

M

2
l

BDg

2rB

J)CUnt<pHKVCJ)S J) pEOVEGUJsEGtCRTHKL2HKVS Jl

St
S[S @C@tAL2StpUWSLtAS UWJ)S PQP.HKUl

Utilizacin

S t
S

S PQEOt o!pEL2CVCJNKCJ_PQS RT@HKCJ_J)EOSU%EOtARTS UWEOUWLEOJ

END WORK;

Compatibilidad
SQL92
\D`EGJpUWS[EGFILEOUWJ)HK@UVE_CJ)L2@t<EOgIhrio!pEt<C@Ct<PQHKC@UWSpUWS[2pUWPQHKCUWS NKHKVS VEOo!pHKq!S NKEOUW
L2ES

EXPLAIN
Nombre
EXPLAIN
y

pEGJsLtASEONNKS UDVEE
EOPQpP.HKUDVE[NKS}J)EOUWLEOUWPQHKS

Synopsis
EXPLAIN [ VERBOSE ] consulta



Entradas
[mergIm
S UWVEOtAS%S t
SRTC@J)L2tAS tEONNKS UDVEGL2S NKNKS VCrVENKSPQC@UWJ)pNKL2Sbl

consulta
pS NKo!pHKEGt

consulta

Salidas
NOTICE: QUERY PLAN: plan
NKSUVE[PQC@UWJ)pNKL2SEGFINKP.HKLCMVEON@S PQ!EGUWVnCJ)L2@t<EOJ l

EXPLAIN
S UWVEOtASEGUWqbHKSVSNKpEO@CVERTCJ)L2tAS tAJsEEONNKS Ul

Descripcin
mJ)L2EPQCRTS UWVCRTpEOJ)Lt
SEON@NKS UVEE
EOPQpPQHK@Uo!pE}EON!%NKS UWHK|P.S VC@tCJ)L2@t<EOJ@EOUWEOtAS}S tAS
NKSP.CUWJ)pNKL2SVS VS@lmNuNKS UVEEAEGP.pPQHKURTpEOJ)L2tASDNKSDRYS UWEOtASEOUao!pEJsEGt
UEOJ)PQS UWEOSGVS J
!SJ)EOSEOJ)PQS UWEOCnJ)EOPQpEOUWPQHKS Nu%NKS UWC@!EGJsPQS UWEGCYC@tKUWVHKPQEGbEGL2PIl
y
JsHJ)E[t<EO2EOt<E.UWPQHKS UDqbSt
HKS JLS @NKS J)NKCJ_S NK@Ct
HKLRTC@J_VE[pUWHKUno@pEJsEGt
UpLHKNKHK S VC@JS tAS

NKS JL2S @NKS Jt<EO2EOtEGUWP.HKSVS J

S @tApStuNKS J_LpNKS JetAEGo!pEOtAHKVSGJ_S tASPQS VS[L2S @NKSVE[EOUWLt


SVSWl
iSS t
LERT JPQt
HKLHKPQSVENKS[t<EOJ)EOUWLS PQHKUEOJEONP.CJ)L2CMEOJ)L2HKRTSVCMVEE
EOPQpPQHK@UVENKSP.CUWJ)pNK
L2So!pEEOJNKSJ)pC@J)HKPQHK@UVEONNKSUWHK|PQS VCtJ)C@tAEEON L2HKEGRTCdo!pELC@RTS tAPQC@tAt<EOtNKSPQC@UWJ)pNKL2S
2RTEOVHKVCEOUpUWHKVS VEOJVE}PQS Lpt
SdVE !HKUWSJVEdVHKJsPQC)l.mUYt<EOSGNKHKVS VJsERTpEOJ)L2tAS UYVCJ
UWRTEOt<CJ>EGN@LHKEORTCrHKUWHKPQHKS No!pELC@RTS}VEGqbCNKq!EOtAJsENKStAHKRTEOt L2pNKS EONLHKEORTCLCL2S NS
t
SVEGqbCNKq!EOtLC@VS JdNKSJL2pNKSJl S t
SDNKSDRTS !CtAKSDVENKS JdP.CUWJ)pNKL2S JdNKCo!pEHKRTCt
LSEGJdEON

eg

L2HKEGRTCL2CL2S NKWEOt<CTEOUS NK!pUWCJdPQS J)C@JdPQCRTCpUWSDJ)p@PQCUWJ)pNKLSnm

gEONuNKS UWHK|PQS VCt

EOJ)PQC@@EOtAEON@RTEOUWCtLHKEORTCHKUWHKPQHKS N@EOUDq!EO}VEONRTEOUWCtLHKEORTCLCL2S
N@2!S}o!pEEGUnLCVCPQS J)C
EONE
EOPQpL2CtJ)EVEOLEOUWVtAVEOJ)pOJVErC@@LEOUWEOtNKSt
HKRTEGt[L2p
NKS)l
EON%UWRTEOt<CnVEMLp%NKS J[SVEOq!C@NKq!EOtPQC@UpUWSPQNK pJ)pNKSi2

S RT@HKOUWbJ)HudVlNKHKRTHKL2S

EONNKSUWHK|PQS VCttAEGSONKHKSpUWS

HKUWL2EGt
CNKS PQHKUSt<C@HKS VSrEOUWLt<EMNKCJ}VCJPQCJsLC@J|UWS NKEOJ}%S t
SMEOJ)L2HKRTStPQp NVEMNKCJ}NKS UWEGJ
EOJt<EOS NKRTEOUWLE[EGN@RTEGUWC@JePQC@J)LC@J)Cl
iS}CP.HKUY[mMgmYEORTHKLENKStAEGt<EJ)EO UWLS PQHKUHKUWLEOt
UWSdPQC@RT%NKEOL2SVEGN! tA@CNbVEON@NKS UWEOU
q!EOVErpUt<EOJ)pRTEOU2YNKCYEGUWqbSS NS t<P

HKqbCnNKC@VEONCJ)L2RTS J)LEOt[LS RT@HKOUW>lGMJ)pS NKRTEGUWL2E

EOJ)L2SC@PQHKUEGJ_UWHKPQS RTEGUWL2ELHKN@%S t
SNKSPQC@tAt<EOPQP.HKUDVE[EGt
t<CtAE.Je2VEO@p!bVECJ)L2@t<EOJ l

Notas
mFHKJsLEMEOJ)PQS J)SVCPQpRTEGUWL2S PQHKUEOUC@J)L2@t<EOJPQC@Ut<EOJ)EOPQLCnSNKSpLHKNKHK S PQHKU%C@tS tAL2EVEON
C@%L2HKRTHK S VC@tuVE[NKS[HKUW2C@tARTS PQHKUVEPQC@J)LC@J l)UW2Ct
RTSP.HKU@EOUWEOtAS NJ)C@@t<ENKSEOJ)L2HKRTSP.HKUVE
PQC@J)L2CJeS tASNKSCL2HKRTHKS PQHK@UDVE[NKSJePQCUWJ)pNKLS JepEOVE[EGUWPQC@UWLt
St
J)E[EOUNHK!t<CJ_VE[L2EGFILC@JVE
@S J)EOJVErVS LC@J lOeEG|Gt
S J)ErSNKCJ}PQS L2pNKCJ}J)C@@t<ErUWVHKPQEOJYEONC@LHKRTHK S VC@t!EOUWGL2HKPQCYVE
PQC@UWJ)pNKL2SJ_VENKS

[!5 <

<W<.dQOQ

S tASRTS!CtHKUW2Ct
RTSP.HKUl



Uso
S t
SRTCJ)L2tAS tepU%NKS UVE}PQC@UWJ)pNKLSrS tASpUWSMPQCUWJspNKLSrJ)HKRTNKE}J)C@@t<E}pUWSMLS @NKSP.CUYpUWS



G

UWHKPQSP.CNKpRTUWS}VELHKCHKUWL } k |NKS J

EXPLAIN SELECT * FROM foo;


NOTICE:

QUERY PLAN:

Seq Scan on foo

(cost=0.00..2.28 rows=128 width=4)

EXPLAIN

S t
SNKSMRTHKJsRTSrL2S @NKSdPQC@UYpUTUWVHKPQE%S t
SdNKC!tAS t_pUWSrPQCUWVHKP.HKU

]MA

\e

A@ Q5

EOUNKSrPQC@UWJ)pNKLS

RYC@J)L2tAS tApUDNKS UDVHKJ)L2HKUWLCu

EXPLAIN SELECT * FROM foo WHERE i = 4;


NOTICE:

QUERY PLAN:

Index Scan using fi on foo

(cost=0.00..0.42 rows=1 width=4)

EXPLAIN

A@
Q5
]dARTC@J)Lt
S tATNKCJ)HK!pHKEGUWL2ES tASYpUWSTPQC@UWJ)pNKL2STo!pEpLHKNKHKP.EpUWS

S tASLEOtARTHKUWS tGSt
SNKSRTHKJ)RTSLS @NKSP.CUpUUWVHKPQESt
SNKC@@tAS tpUWSPQCUWVHKPQHK@U
EOUNKSTP.CUWJ)pNKL2S \

2pUWP.HKUDVE[S @t<EO@S P)HKU

EXPLAIN SELECT sum(i) FROM foo WHERE i = 4;


NOTICE:

QUERY PLAN:

Aggregate (cost=0.42..0.42 rows=1 width=4)


-> Index Scan using fi on foo (cost=0.00..0.42 rows=1 width=4)

BDL2EOJ)Eo!pENKCJUWRTEOt<CJEGJsEGPQK|P.CJRTCJ)L2tAS VCJ) S UnNKS}EGJsLtAS L2EG!HKSVEP.CUWJ)pNKL2SdJ)EONKEOPQ


PQHKC@UWS VS pEGVEOUYq!S tAHKS teEOUWLt<EdVCJqbEGt
J)HKCUWEOJ[VEdCJ)L2@t<EOJ[VEO@HKVCDS NWRTEACtAS RTHKEOUWLCnVEGN
NKS UWHK|PQS VCt>l

Compatibilidad
SQL92

]dA

BDCEGFIHKJ)LE[pUWS}J)EOUWL2EGUWP.HKS\e

"

VEG|UWHKVSEOUDghMij k@l

FETCH
Nombre
FETCH

gIEONKEGP.PQHKCUWS|NKS J_pJ)S UWVCrpUDP.ptAJ)C@t


y

Synopsis
FETCH [ selector ] [ count ] { IN | FROM } cursor
FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor

Entradas
selector

selector

VEO|UWE[NKS}VHKt<EOP>P.HKUVE[@m

!M

al>pEOVEJsEGtpUWS}VENKS J_J)HK@pHKEOUWL2EGJ

JsEGNKEOPQP.HKCUWSNKSJ)!J)HK@pHKEOUWL2EG2Jsb|NKS J l
mJEONq!S NKCtuCt VEO2EOPQL2CdJ)HJ)ECRTHKL2E

tor

selec-

J)EONKEGP.PQHKCUWS}NKS 2J)W|NKS 2J)bS UWLEOt


HKCtA2EOJ))l

emi

[m
S NKS@t
SJ)HKUDJ)HK!UWHK|PQS VCrBC@HKJ)E~DCtAV%S t
SP.CRTS LHK@HKNKHKVS VnPQCUgIhMij kWl

count

count

VEOL2EGt
RTHKUWSYPQp UWLS Jr|NKSJ

S o@pEYJ)EGNKEOPQP.HKCUWS t
lpEOVEnJ)EOtpUWCVEnNKCJJ)HK

!pHKEOUWLEOJ

MUYEGUWL2EOt<CPQCUTJsHK@UWCo!pEMEOJ)EOPQHK|PQSMPQp UWLS J|NKS J

S o!pEdJ)EONKEGPQP.HKCUWS t
l
EOJ)E
z
PQpEOUWLSVEno@pEpUEGUWL2EOt<CaUWEO@S L2HKq!CEGJEOo@pHKqbSNKEOUWL2EnSnP.SRT!HKStEGNeJ)EOUWLHKVCaVE

@M

ii



EGqbpEONKq!ELC@VS JeNKSJ_|NKS Jet<EOJ)L2S UWLEOJ l


z

BDm

[Tbl

mo!pHKqbSNKEOUWL2ESEOJ)EOPQHK|P.StpUDPQC@pUWLuVE
M

[%,Tbl

mo!pHKqbSNKEOUWL2ESEOJ)EOPQHK|P.StpUDPQC@pUWLuVE

cursor
mNUWC@RT@t<EVE[pUDPQptAJsCtS!HKEGt
LC l

Salidas
!\^eX[vt<EOLC@tAUWSEGNt<EOJ)pNKLS V%CnVEMNKSPQCUWJspNKLSVEO|UWHKVSCtEONPQptAJ)C@tEOJ)EGP.HK|PQS VCulGgIH%NKS
PQC@UWJ)pNKL2S}2S NKNKSJsEGt
URYC@J)L2tAS VCJeNKC@J_JsHK@pHKEOUWLEOJ_RYEOUWJ)S)EGJ

NOTICE: PerformPortalFetch: portal "cursor" not found


gIHGEON

cursor

UWC}EOJ)L_t<EOq!HKS RTEOUWLEVEGP.NKSt
SGVCulmNPQptAJsCtWVEO@EJ)EOtWVEOPQNKS tASOVCVEOUWLt<C

VE[pUD@NKC@o!pEVEC@EGt
SP.HKU2L2tAS UWJ)S PQL2HKCUD@NKC@PQ@>l

NOTICE: FETCH/ABSOLUTE not supported, using RELATIVE


CJ)L2@t<EOJeUWCJ)C@CtAL2S}EONCJ)HKPQHKC@UWS RTHKEGULCS @J)CNKpL2CrVE[NKCJPQpt
J)Ct<EOJ l

ERROR: FETCH/RELATIVE at current position is not supported


gIhMij kYEOtARTHKLEYVEOq!C@NKq!EOtMVE2Ct
RTSTt<EO%EOL2HKVSnEONPQptAJsCtMEGU

J)p

CJ)HKPQHK@U

SP.LpS NK

pJsS UWVCrNKS}J)HKUWLS FIHKJ

FETCH RELATIVE 0 FROM cursor

CJ)L2@t<EOJS PQL2pS NKRTEGUWL2ErUWCTJ)CC@tAL2SEOJ)LErPQC@UWPQEOLCWVE

EGP

C@bEONqbSNKC@tP.EGt<CEOJ)Lt<EG

JsEGt
q!S VWCYS tASHKUWVHKPQS to!pEL2CVS JNKS J|NK SJVEO@EGUJ)EGtVEOq!pEONKLS J[YEOJEOo@ pHKq!S NKEGUWL2ErS
EOJ)EOPQHK|P.S tbNKSS NKS @tAS_PQNKS q!E

iilgHJ)E

SpJsSVC}NKSS NKS @tAS_PQNKS q!Eeemi

2[mQC@J)L2

!t<EOJuS J)pRTEo!pEEON pJspS tAHKCdVEOJ)EOSpUPQCRTC@tALS RTHKEOUWLCMPQCRTCdEOUgIhrij kMVEOq!pEONKq!E


EOJ)L2E[RTEGUWJ)S)EVE[EOtAt<C@t
l

Description
!\^eX[vEOtARTHKLESYpUpJspS tAHKCVEOq!C@NKq!EOt|NKSJpJ)S UWVCapUPQptAJsCt
lmNUWRTEOt<CVE|NKS J
VEOq!pEONKLSOJEGJsL EOJ)EOPQHK|PQS VCYRTEOVHKS UWL2E
EOJMRTEOUWCtdSL

@t
SrP.NKSqbE

S U

lOgIHEONUWRYEOt<CYVE|NKS J}t<EOJ)LS UWL2EGJ}EOUEONP.ptAJ)C@t

J)NKCJ)EOtA UJsEGNKEOPQPQHKC@UWS VS JrNKSJVHKJ)CUWHK@NKEOJ lgpJ)LHKL2p@EOUWVCaNKSS NKS

iiEOUNKp!S tVErpUUWRTEOt<CYt<CqbCPQS t
ro!pEJsEGS UVEOq!pEONKL2SJLC@VSJNKS J|NKSJ

t<EOJ)L2SGUWL2EGJEOUEGNbPQp
t
J)Ct
lQiS JHKUWJ)L2S UWPQHKS JpEOVEOUJ)EOtJ)EONKEOPQPQHKCUWS VS JEGUS RT@SJVHKt<EOPQPQHKC@UWEGJ
S PQHKS[SVEONKSGUWL2E[
!M

S PQHKSS L2tA J2@M

>lAiS[VHKt<EOP)PQHK@UCtuVEO2EOPQLCEOJ

Sugerencia: Se permite especificar nmeros negativos en el contador. Un nmero negativo es equivalente a modificar el sentido de las palabras clave FORWARD y BACKWARD.
Por ejemplo, FORWARD -1 es igual aBACKWARD 1.

Notas
EOJ)EPQpEOUWLSnVEo!pEDNKS JS NKS @tAS JPQNKS q!E!M

J)CUEOFL2EOUWJ)HKCUWEOJ
z
z
C@J)L!t<EOJ lsiS}J)HKUWL2S FHKJgIhrij k}L2S RT@HKGUEOJ_J)C@Ct
LS VSIEOJ)EGP.HK|PQS VS}EOUNKSJ)EO@pUWVSd2Ct
RYS
z

VEONPQCRTS UWVCulsOS UWJ)E[RT JeS @S)CrVEOL2SNKNKEOJL2EGRTS JeVE[PQC@RTSL2HK@HKNKHKVS V_l

MUWSq!EOdL2CVS JNKS J|NKSJJsE

S UYJ)EONKEGP.PQHKCUWS VCLC@VC@JNKCJVEORT JSP.PQEOJ)CJVE}2EOL2P

UWCVEO

q!pEGNKqbEGU|NKSJl
C@J)L!t<EOJ_UWCJ)C@CtAL2SNKS}PQS t
SP.LEOtA JsLHKPQSVES PQL2pS NKHKS tNKCJVS LCJEOUpUnPQptAJsCt !So!pEq!CNK
q!EOtSRTS EGS tNKS J_S PQL2pS NKHKGS PQHKCUWEOJVEONPQptAJsCteEOUNKS JLS @NKS Je@S J)EUWCEOJ%C@J)HK@NKE}C@tt<EG!NKS
!EGUWEOtAS NKPQC@RTCrJspPQEOVE[L2SRT@HKOUDEOUDNKS J_SP.LpS NKHK SGPQHKC@UWEGJVE[
NKS Jeq!HKJ)L2S Je2[m
!pHKEGUWL2EOONKC@J_pJ)pS tAHKCJ_VEG!EGUEOFNKHKPQHKL2S t PQC@RTS UWVC@JeM
z

)lAC@tP.CUWJ)HK

mnS tASJ)pJsLHKL2pHKtNKC@J_VS LC@J l

iCJePQptAJsCt<EOJJ)@NKCrJsNKCJ)E[VEO@EOtAKSGUDpJ)S tuVEGUWL2t<CMVE[Lt
S UWJ)S PQPQHKCUWEOJ)!S[o!pENKC@JeVS LC@Jo!pE
S NKRTS PQEOUWSGUnS@SOt<PQS URTNKL2HK%NKEOJPQCUWJspNKLS JeVE[pJ)pS t
HKCul

# S tAS}RTCVHK|P.StNKS}C@J)HKPQHKUYVEONPQpt
J)Ct
lQ   VEO|UWHKt
}pUPQptAJ)C@t
lseEG
u [  2 %S @ ux S tASRTS @CtHKUW2Ct
RTS PQHKUS PQEOt<P)SVENKS J


MJ)S t!
|Ot
SJsES

L2tAS UWJ)S PQPQHKC@UWEGJl

Uso

iCJJsHK@pHKEOUWLEOJEAEGRTNKC@Jt<EOPQCt
t<E.UpUWSdL2S!NKSpUWJ)S UWVCpUnP.ptAJ)C@t
l

E2CNKNKC@~DHKUWEOFS RT

NKEOJL2tAS q!EOtAJ)EOJSL2S@NKE[pJ)HKUWSPQpt
J)Ct
l

-montar y usar un cursor:


BEGIN WORK;
DECLARE liahona CURSOR
FOR SELECT * FROM films;
-seleccionar las primeras cinco filas en el cursor liahona:
FETCH FORWARD 5 IN liahona;
code |title
|did| date_prod|kind
|len
---+---------------+--+-------+-------+---BL101|The Third Man
|101|1949-12-23|Drama
| 01:44
BL102|The African Queen
|101|1951-08-11|Romantic | 01:43
JL201|Une Femme est une Femme|102|1961-03-12|Romantic | 01:25
P_301|Vertigo
|103|1958-11-14|Action
| 02:08
P_302|Becket
|103|1964-02-03|Drama
| 02:28

-Seleccionar la fila anterior:


FETCH BACKWARD 1 IN liahona;
code |title
|did| date_prod|kind
|len
---+---------------+--+-------+-------+---P_301|Vertigo
|103|1958-11-14|Action
| 02:08

- cerrar el cursor y commit work:


CLOSE liahona;
COMMIT WORK;

Compatibilidad
SQL92
Nota: El uso no embebido de los cursores es una extensin Postgres. La sintaxis y el
uso de los cursores est siendo comparada en contraposicin a la forma embebida de
los cursores definida en SQL92.

ghMijk%EOtARTHKL2EEON!C@J)HKPQHKCUWS RTHKEOUL2CS @J)CNKpL2CVEGNbPQpt


J)CtS tAS!m

DLS RT@HKOUnNKSMNKC

PQS NKHK SGP.HKUVE[NKCJ_t<EOJ)pNKL2SVC@JEOUDq!S tAHKS @NKEOJEOFNKKPQHKLS J l

FETCH ABSOLUTE #
FROM cursor
INTO :variable [, ...]

gri

mNPQptAJsCt[VEG@ErJsEGtCJ)HKP.HKCUWS VCS NUWRTEOt<CYVEr|NKSS @J)C@NKpLCTEOJ)EOPQHK|P.SVC l

CVC@J

NKC@JuUWRTEOt<C@JuVEe|NKS J EOUMC@J)L!t<EOJuJ)C@UMUWRTEOt<CJ t<EONKS LHKqbCJ)QC@t%NKC}L2SUWL2C}UWCJsE_J)CC@tAL2S


EOJ)L2SPQS tAS P)LEOtAKJ)L2HKPQSWl

variable

S tAHKS @NKEO2J)bCOEOLHKq!CVEON

CJ)L>l

GRANT
Nombre
GRANT

pJspSt
HKCJ

CL2Ct<!St
HKq!HKNKEO@HKCJVE[SP.PQEOJ)CMS}pUDpJ)pS tAHKCpUn@t<pCCrSL2CVCJNKCJ

Synopsis
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }

Entradas
privilege
iC@JeCJsHK@NKEGJtAHKqbHKNKEG!HKCJeJsCU

gmim%

PQP.EGJsCrSLC@VS JeNKS JPQC@NKpRTUWSJVE[pUWS}LS @NKSWIqbHKJ)LSEOJ)EOPQK|PQSWl

BDgIm
2UWJ)EOtAL2S}VS LC@JEGULC@VS J_NKSJePQCNKpRTUWS JVEpUWS}L2S @NKSEGJsEGPQK|P.Sbl

PQL2pS NKHK SL2CVS JNKS JeP.CNKpRTUWS JeVEpUWSLS @S NEOJ)EOPQK|PQSWl

mim
z

m
mNKHKRTHKUWS}|NKSJ_VEpUWSLS @NKSEOJ)EGP.|P.Sbl

edim

EG|UWENKSJ_t<EO@NKS JVE[NKS}LS @NKS q!HKJ)L2S}2PQEOt J)EOUWL2EGUWP.HKS}em


z

mMim)l

ii
MLC@t<@S}L2CVCJ_NKCJtAHKq!HKNKEO!HKCJ)

object
mNUWC@RT@t<E[VE[pUDC@GEOLCS No!pEJsEo!pHKEOt<E[PQCUWP.EGVEOt EONS PQPQEOJ)C l>iC@JCJsHK@NKEGJ_CGEGL2CJ
JsCU

L2S @NKS

JsEGPQpEGUWP.HS

qbHKJ)LS

HKUWVHKPQE

Mi2
MUWSS @t<EGqbHKS P>HK@US tASt<EOt<E.J)EOUWLS tSLC@VC@J_NKC@JepJspSt
HKCJ l
eMM

group

dU

grupo

S N_o@pEnJsECL2Ct<!SUtAHKq!HKNKEO@HKC@J l@mUNKSSP.LpS Nq!EOtAJsHKUW EONe!t<pCVEO@E

S @EOt JsHKVCPQt<EOSOVCEOFNKKPQHKLS RTEOUWLE[PQC@RTCJsEVEOJ)PQt


HK@E[RTJ_S VEGNKS UWL2E@l

username
mN!UWC@RT@t<E}VEpUnpJspSt
HKCDS N!o!pEJ)E}o!pHKEOt<E}PQC@UWPQEOVEGtet
HKq!HKNKEG!HKCJl.Mi2EOJpUWS
S @t<Eq!HKS Lpt
S%S t
S[t<EOt<E.JsEGUWL2S tSL2CVCJ_NKCJpJ)pS tAHKC@J l

Salidas
CHANGE
EGUWJsS>EVEGqbpEGNKL2CMJ)ENKSS PQPQHK@UDJ)E

St<EOS NKHKSOVCrJsSL2HKJ)2S PQL2Ct


HKSRTEOUWLE!l

ERROR: ChangeAcl: class "object" not found


EGUWJsS>EdVEOq!pEONKL2CnJ)HEGN%C@GEOLCYEOJ)EOPQHK|PQS VCUWCEOJ)L2rVHKJ)C@UWHK@NKErCnJsHEGJHKRTCJ)HK@NKE
VS tuNKC@J_t<C@q!HKNKEO@HKCJ_S@t<pCCpJ)pS tAHKC@JeEOJ)EOPQHK|PQS VCul

Descripcin
DZ[]MD^YEGt
RTHKLES NPQt<EOSGVC@tuVE_pUCGEOL2CdEGNVS tEGt
RTHKJ)CJEOJ)EOPQK|PQC@J S[LC@VCJNKCJpJspS
t
HKCJ2Mi2@CMSpUP.HKEGt
LCdpJspS tAHKCMCM@t<pCul>MJ)pS tAHKC@JVHKJ)LHKUWL2CJ_SNIPQtAEGSOVCtupEOVEGUUWC
L2
EGUWEOtEGt
RTHKJ)CJVE_S PQP.EGJsCS[RTEOUWCJo!pEEON P.t<EOSGVCtJ)ENKCJPQC@UWPQEOVS pUWSq!EOo!pEEONCGEGL2C
SJ)HKVCPQt<EOS VWCul
MUWS_q!EOeo!pEepUrpJ)p
S tAHKCLHKEOUWEetAHKq!HKNKEO@HKC@JuJsC@t<EpUMC@GEOL2CQLHKEOUWEeCJsHK@HKNKHKVSVVEeE
EOPQpL2S t
EOJ)EdtAHKq!HKNKEO@HKC lGBC

S nUWEOPQEOJ)HKVS VV
EdPQCUWP.EGVEOt_tAHKqbHKNKEG!HKCJSN%P.t<E.S VCtVEdpUTCGEGL2C!EON

PQtAE.S VCteC@L2HKEOUWES pLC@RT LHKPQS RTEOUWLE


EONCGEGL2Cul

MgNKC@JtAHKq!HKNKEO@HKC@J)pEOVELS RT@HKOUYEGNKHKRTHKUWS t

Notas

PQLpS NKRTEOUWLEO!S tASP.CUWPQEOVEGt[tAqbHKNKEG!HKCJ}EOUaC@J)L!t<EOJSDJ)CNKCTS NK@pUWS J}PQC@NKpRTUWSJs

EVE

PQtAE.S tpUWSq!HKJ)L2So!pEPQC@UWLEOUW@SNKS JdPQCNKpRTUWS JMVEOJ)EOS VS J)WPQCUWP.EGVEOtt<CqbHKNKEG!HKCJdJ)C@@t<E


EOJ)Sq!HKJ)L2SWl

[Pj)R?S tASC!LEOUWEGtRT JeHKUW2C@tARTS PQHKUnJ)C@tAENKCJeEOtARTHKJ)C@JVE[NKC@J_C@GEOLC@J_EOFHKJsLEOUW

MJ)E

L2EGJ

Database
= lusitania
+------------+------------------------------+
| Relacion
|
Conceder/Eliminar Permisos
+------------+------------------------------+
| mytable
| {"=rw","miriam=arwR","group todos=rw"}
+------------+------------------------------+
Leyenda:
uname=arwR - se conceden privilegios a un usuario
group gname=arwR - se conceen privilegios al un GRUPO
=arwR - se conceden privilegios a PUBLIC
r
w
a
R
arwR

|
|

SELECT
UPDATE/DELETE
INSERT
RULE
ALL

Sugerencia: Actualmente, para crear un GRUPO ha de insertar los datos manualmente


en la tabla pg_group como sigue:
INSERT INTO pg_group VALUES (todos);
CREATE USER miriam IN GROUP todos;

[OS J)ENKS}JsEGUWL2EOUWPQHKS}mmS tASq!EOt PQCRTCEONKHKRTHKUWS tNKC@JetAHKqbHKNKEG!HKCJVES PQP.EGJsCul

Uso
CUWPQEOVE[tAHKq!HKNKEO@HKC@JeVEHKUWJ)EOt<PQHK@UDSLC@VC@JeNKC@J_pJspS tAHKCJ_VENKS}L2S @NKS|NKRTJs

GRANT INSERT ON films TO PUBLIC;

CUWPQEOVE[LC@VCJeNKC@J_t
HKq!HKNKEO@HKJ)CS NpJ)pS tAHKCr5RTS UWpEONKJ)C@@t<E[NKSq!HKJ)L2S}5!HKUWVJs

GRANT ALL ON kinds TO manuel;

Compatibilidad
SQL92

iSJsHKUWLS FHKJeVEgIhMij k[%S t


S

EOtARTHKLEEOJ)LS @NKEOPQEOtVEGtAE.P

CJeJ)C@tAEPQC@NKpRTUWS JHKUWVHK

q!HKVpS NKEOJ)rEOtARTHKL2EEOJ)LS @NKEOPQEOtuEONtAHKq!HKNKEO@HKCVEPQCUWP.EGVEOt EONRTHKJ)RTCtAHKqbHKNKEG!HKCrSC@Lt<C@J

GRANT privilege [, ...]


ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]

iCJMPQS RT%C@JdJ)CUPQC@RTS LHK@NKEOJMPQC@UNKC@JMVENKSnHKRTNKEGRTEOUWL2SP.HKUVEC@J)L!t<EOJ)PQCUNKS JdJ)HK


!pHKEGUWL2EOJeHKUWPQC@tACt
SP.HKCUWEOJ

privilege
ghMij k%EOtARTHKL2E[%t
HKq!HKNKEO@HKC@J_S VHKPQHKC@UWSNKEOJSNKCJRTEOUWPQHKCUWS VCJ

gmim%

em@memBmg
EOtARTHKLHKVCYS tAS

S PQEOtt<EOEOt<EOUWPQHKSSSNK!pUWSCYLC@VS JNKSJPQC@NKpRTUWSJVEMpUWSL2S

@NKSbq!HKJ)L2SEGJsEGPQK|P.SEOUDNKHKRTHKL2S PQHKCUWEOJeVEHKUWL2EG!tAHKVS Vl


Mg

m
EOtARTHKL2HKVCdSt
SpJ)S tpUVC@RTHKUWHKCOpUrP.CU pULCVE_P.St
S PQLEOtEGJs.PQC@LE
CdCL2tAS VpPQ
PQ
HKUlGgIHWpUTC@GEOLCnEGJs%EOPQHK|PQSrSNK!Co!pEMUWCJ)EOSrpUWSML2S @NKSWIq!HKJ)L2S
SVE[EOJ)EOPQHK|PQS t JsCNKCdg

ml

privilegio

object
D

mF

im

table

gIhMij kEGt
RTHKLE[S VHP.HKCUWS NKRTEOUWLENKSSNKS @t
S[P.NKSqbEUWC2pUWP.HKCUWS N

TABLE

magIm

gIE[%EOt
RTHKLEpJ)S t EONpEG!CrVEPQS t
SGPQL2EGtAEGJeEGJs%EOPQHK|PQS VCul

Mii

MB

gIE[%EOt
RTHKLEpJ)S t NKS}JsEGP.pEGUWP.HKSVE[PQC@LE
CEOJ)EOPQHK|PQS VS@l

Bgi

MB

gIE[%EOt
RTHKLEpJ)S t NKS}P.CUWq!EOtAJsHKUDVEpEO@CVE[PQS tAS PQL2EGt
JEOJ)EGP.HK|PQS VS@l

M
z

2B

gIE[%EOt
RTHKLEpJ)S t EONVC@RTHKUWHKCEOJ)EOPQHK|P.SVC l

MB

gIE[%EOt
RTHKLEPQC@UWPQEOVEOt EONRTHKJsRTCt
HKq!HKNKEO@HKCSC@Lt<C@J l

INSERT
Nombre
INSERT
y

UWJ)EOtAL2S|NKS JeUWpEOq!S JeEOUpUWS}L2S @NKS

Synopsis
INSERT INTO table [ ( column [, ...] ) ]
{ VALUES ( expression [, ...] ) | SELECT query }

Entradas
table
mNUWC@RT@t<EVE[pUWS}LS @NKSEGFIHKJ)LEOUWL2E@l

column
mNUWC@RT@t<EVE[pUWS}PQCNKpRTUWS}EOU

table

expression
MUWSEGFIt<EOJ)HKUDCpUDqbSNKC@t q! NKHKVCJ_S}S J)HK@UWS t EOU

query
MUWSPQCUWJspNKLSq! NKHKVS@lEGSrNKSHKUWJ)L2t<pPQHKUagImim
S t<!pRTEOUWLCJeq! NKHKVCJ l



column

S tASrpUWSRTEACtVEGJsPQtAHKPQHK@UTVE

Salidas
INSERT oid 1

EGUWJsS>EdVEOq!pEONKL2CJ)HJsCNKCJ)E

SHKUWJ)EOtALS VCpUbS|NKSWl

|NKSHKUWJsEGt
LS VSWl

INSERT 0 #

EOJEGN%UWRTEOt<CnM

oid

VEdNKS

EGUWJsS>EnVEGqbpEGNKL2CJ)HeJ)E

SHKUWJ)EOtALS VCRTJVEDpUbST|NKSWl

HKUWJsEGt
LS VS J l

EOJrEONUWRTEOt<CVED|NKS J

Descripcin
ADf\Z^EOtARTHKL2EdNKSHKUWJ)EOt<P.H@UTVEdUWpEGqbSJ|NKS JEOUTpUWSPQNKS J)EdCnpUWSL2S!NKSblGgEpEOVEdHKUW
J)EOt
LS tpUWSM|NSrSMNKSMq!EOMCDq!S tAHKS JPQCRTCEGNWt<EOJ)pNKL2S VCVEpUWSMP.CUWJ)pNKL2SWl.iS JPQCNKpRTUWS J[EOU
EONt<EOJ)pNKL2SVCrpEGVEOUJ)EOtNKHKJsLS VS JEOUDPQpS NKo!pHKEGtCtAVEOUl
S VSPQC@NKpRTUWSTo!pEnUWCEGJsLnt<EOJ)EOUWLEEOUNKSYNKHKJ)LSYVEnC@tAHK@EOUJsEGt
YHKUWJ)EOtALS VSpJ)S UWVCaEO
N
m di
z
S SGt
NKSUWpEGqbSP.CNKpRTUWSJ)HJ)EDHKUWJ)EGt
LSnpUBDdiiEGUpUWS

q!S NKC@tdC@tdVEO2EOPQL2C o!pET%pEG VEJ)EOtMLS UWL2CpUqbSNKC@tM%C@trVEGE.PQL2CVEOPQNKS t


SV%C
C@HKEOUBDdiilCJ)L2@t<EOJdt<EOP
PQC@NKpRTUWS}VEGP.NKSt
SGVSPQC@RTCBD

BMiil

gH!NKSrEGFIt<EOJ)HKUYS tASdP.SVSdPQCNKpRTUWSUWCEOJVEON!L2HKCVE}VS LC@JPQC@tAt<EOPQLC@IJsEHKUWL2EGUWL2S tArpUWS


PQC@EOt<PQHKUVE[LHKC@J_S pL2CRTS LHKP.SRTEOUWLE!l
EO@ELEOUWEOtWt
HKq!HKNKEO@HKCJuVEeHKUbJsEGtAPQHKUdEOUdNKSL2S @NKS_%S t
SS WS VHKtbEOUdEONKNKS.SJsHGPQCRTC}tAHKq!HKNKEO!HKCJ
z

VE[J)EONKEGP.PQHKUEGUDP.pS NKo@pHKEOt L2S @NKSEGJs%EOPQHK|PQS VSEOUpUWS}PQNKS pJspNKS

Dmml

Uso
UWJ)EOtAL2SpUWS}|NKSEGUDNKSL2S @NKS

films

INSERT INTO films VALUES


(UA502,Bananas,105,1971-07-13,Comedy,INTERVAL 82 minute);

mUEGJsLE}JsEG!pUWVCDE
EORT%NKCnNKSdP.CNKpRTUWS
CtVEGEGP.LCMVE[BDdii

date_prod

J)ECRTHKL2EEOUWLC@UWPQEOJLEOUWVtAMEGNbq!S NKCt

INSERT INTO films (code, title, did, date_prod, kind)


VALUES (T_601, Yojimbo, 106, DATE 1961-06-16, Drama);

UWJ)EOtAL2SpUWS|NSJsHKRT%NKEEOUDNKSLS @NKSVHKJ)L2tAHK@pL2Ct
J) UWCL2Eo@pEJ)C@NKCJ)E[EGJs%EOPQHK|PQSNKSPQCNKpRTUWS

name

VE[2Ct
RTS}o!pENKSP.CNKpRTUWSC@RTHKLHKVS

did

JsEGt
SS JsHK@UWS VSP.CUDJ)pq!S NKCt%C@tVEO2EOPQL2Cul

INSERT INTO distributors (name) VALUES (British Lion);

UWJ)EOtAL2SqbSt
HKS J|NKS JeEOUNKS}L2S@NKS|NKRTJeVEOJ)VENKS}L2S @NKS

tmp



INSERT INTO films SELECT * FROM tmp;

UWJ)EOt<PQHKUTEOUTS tAt
S @J2q!EOS



QAW !d

<A [!5

S tASrRTS!CtHKUW2Ct
RYS P.HKUTJ)C@@t<E

NKC@JeS tAt
S!J)>

- Crea un tablero de juego vacio de 3x3 para cruz y raya


- (todos estos querys generan el mismo efecto)
INSERT INTO tictactoe (game, board[1:3][1:3])
VALUES (1,{{"","",""},{},{"",""}});
INSERT INTO tictactoe (game, board[3][3])
VALUES (2,{});
INSERT INTO tictactoe (game, board)
VALUES (3,{{},{},{}});

Compatibilidad
SQL92
ADf\Z^EOJL2CL2SNKRTEOUWL2EPQCRTS LHK!NKEPQC@UDgIhrijkWl
iS JCJ)HK@NKEOJNKHKRTHKLS PQHKC@UWEGJ_EGUNKSJ_PQS tASOPQ
L2EGt
HKJ)LHKP.S JVENKS}P.NKSpJspNKS

query

EOJ)LS UVCP.pRTEGUWL2S VS JeEGU



LISTEN
Nombre
LISTEN
y

eEOPQHK@HKtSqbHKJ)CMVENKSUWCL2HK|PQS PQHK@UVE[pUWS}PQCUWVHKPQHK@U

Synopsis
LISTEN nombre

Entradas
nombre
BDC@RT@t<EVENKSPQC@UWVHKPQHKUnVE[UWC@LHK| PQS PQHKUl

"

Salidas
LISTEN
EGUWJsS>EVEGqbpEGNKL2CMPQpS UWVCJ)E[PQCRTNKEOLS}EOFIHKLCJsSRTEOUWL2EEGNtAEG!HKJ)LtACul

NOTICE Async_Listen: We are already listening on nombre


gIHEOJ)LE@S PQ!EOUbVY@S2pEt<EO@HKJ)L2tAS VCMS tASJ)EOtS q!HKJ)S VCMPQpS UWVCJ)EUWCL2HK|PQS}EOJ)S}PQC@UWVHK
P.HKUl

Descripcin

Af^\
VHKPQHK@U

t<EO@HKJ)L2tAS[SNI@S PQ!EGUWVDCJsL!t<EGJeSt
St<EOP)HK@HKt S q!HKJsCdVENKSUWCL2HK|PQS PQHK@UVEpUWSPQCUW

nombre

e~

S VSq!EOdo!pEdEGNbPQCRTS UWVCDD^e<

nombre

EGJHKUWqbCPQS VC@SrJ)EOSdCtEGJsLE}@S P.@EOUWVTp

C@Lt<CPQCUWEOPQL2S VCSNKSDRTHKJ)RTS@S J)EVErVS LC@J)!LC@VCJNKCJ}@S PQ@EOUWVJ}o@pEEGJsL Ut<EO!HKJ)Lt


SV%CJ
S tASJ)EOt[S q!HKJ)S VCJ}VENKSUWC@LHK|P.SP.HKUVEEOJ)SPQC@UWVHKP.HKUW%t<EGP.HK@EGUaEONS q!HKJ)C@WTEOUaJspRTC@
RTEOUWLCP.SVS}pUWCVE}EGNKNKC@JUWCL2HK|PQS tASdJ)pS %NKHKP.SP)HK@Ut<CUWL2EGUWVlQOS J)EEONbLtAS L2S RTHKEGUWL2CVE

e~St
S[RTS @C@tHKUWCtARTS PQHK@Ul

DD^e<

MU@S PQ!EGUWVx%pEGVES UWpNKS tMJ)pxt<EG!HKJ)L2t<CVEYt<EGP.EGPQHK@UVES q!HKJsCVEYpUWSPQC@UWVHKP.HKU

mAf^\l

UWC@LHK|P.SP.HKUMVS VS_SLt
SqbGJuVEGNPQCRTS UWVCd

VE

J)HKRTHKJ)RTCLC@VC@J NC@J t<EG!HKJ)L2t<CJuVE

t<EOP)EOPQHKUnVE[S q!HKJ)C@JeJsE[S UWpNKS US pLC@RT LHKPQS RTEOUWLEPQpSUWVCr|UWS NKHKSEONt<C@PQEOJ)CM@S PQ!EGUWVl


mNRTOLC@VCRTEOVHKSUWL2E[EGNP.pSNNKS}S NKHKPQS P)HKUn2t<C@UbL2EOUWVnVEOL2EGP.LSNKCJeEOqbEGUWL2CJ_VE[UWCL2HK|PQS P.HKU
VEOEGUWVEVENKSDHKUWLEOtASDVEt<C@t
S RTSP.HKUVES NKHKPQS PQHKCUWEOJCJsL@tAEGJdpL2HKNKHK SVS!l CUNKS

<f^e\P.CRTCpUTPQCRTS UWVCgIhMiaCtAV HKUWS t


HKC

NKHK@t<EOt
S@JsHKPQSMNKHK!%o!!NKSS NKHKPQS PQHKUYEOUWq!KS

EGUWL2CUWPQEOJNKNKS RTSEOtAHKVHKPQS RTEOUWLESNKS[t<pL2HKUWS

PQnotifies

%S t
S[S q!EOtHK@pS tJ)HJ)E

St<EGP.HK

@HKVCnSNK!UTEOq!EOUWLCVEMUWC@LHK|P.SP.HKUlOML2tAS J[HKUWL2EGt
2S PQEOJ[PQC@RTCnNKHK@!LPQN%
t<C@
Ct<PQHKC@UWSUTRTO
L2CVCJVE}S NKL2CUWHKq!EONbS tASdEGNbRTS UWEACDVEEOq!EOUWLC@JVEUWCL2HK|PQS PQHK@UWVE

p<f^e\

EONIt<C!tAS RTSV%CtVES NKHKPQS PQHKCUWEOJUWCrVEO@EEGUWqbHKS t

EOP

mAf^\

CMd

C@P.CUYNKHK@@L2PQN
VHKt<EOP)LS RTEOUWLE!l

[OS J)ENKS}VC@PQpRTEOUWLS PQHK@UDVENKSNKHK@tAEGt


SpLHKNKHK S VSSt
S[RTS !Ct<EOJeVEOLS NKNKEOJ l

%2

e~l

&<f^e\

PQC@UWLHKEOUWEnpULt
SL2S RTHKEGUWL2CRT JMEOFL2EGUWJsCVENKSpL2HKNKHK SP.HKUVE

m%

^e<

Notas
nombre

pEOVEJsEGtPQpSNKo!pHKEOtPQS VEOUWSDq! NKHKVSDP.CRTCUWC@RT@t<EO%UWCaEGJdUWEOPQEOJ)S tAHKCTo!pEDJ)EOS

HK!pSNuS NuUWC@RT@t<EVEpUWSL2S @NKSEOFHKJ)L2EOUWLE!l gH


o!pHKEOtASTEOJUWEGP.EGJsSt
HKCo@pETJ)EOSTpU

nombre

J)EEGUWP.HKEGt
tASEOUWLt<EP.CRTHKNKNKS
J)UWHuJsHK

UWCRT@t<EqbNKHKVC@ J)HKUWCP.pSNKo!pHKEOtMPQS VEGUWSYVE

Q+

S J)L2S

PQS t
SGPQL2EGtAEGJeVE[NKS t<!Cul
mUS NK@pUWSJ}q!EOtAJsHKCUWEOJt<EOq!HKS JVErCJ)L2@t<EOJ)

nombre

VEO@KSrJsEGt[EOUWPQEOtAtAS V%CTEGUWL2t<ErPQC@RTHK

NKNKS JP.pS UWVCUWCJ)ErPQCt


t<EOJ)CUWVKSrP.CUEONUWC@RT@t<ErVErpUWSLS @NKSEOFHKJ)L2EGUWL2EO!S pUWo@pErpEGt
S
J)HKUWL2 PQLHKP.SRTEOUWL2EP.CtAt<EOPQL2CMP.CRTCUWCRT@t<E!l

P.LpS NKRTEOUWLEUWCEGJ_t<EOo@pEGt
HKVC l

Uso
CUW|!ptAS}EAEGP.pLS}pUWSJ)EOPQpEOUWPQHKS}t<EOPQEPQHKUnVES q!HKJsCuIUWC@LHK|P.S PQHKUnVEOJ)VE

psql

LISTEN virtual;

NOTIFY virtual;
ASYNC NOTIFY of virtual from backend pid 11239 received

Compatibilidad
SQL92

Af^e\UWCEGFIHKJ)LEEOUDgIhrijk!l

mNPQC@RTSUWVC

LOAD
Nombre
LOAD

StA@SVHKUWS RTHKPQS RTEOUWLEpU|P


y

EOt<CMC@GEOLC

Synopsis
LOAD nombrefichero

Parametros de Entrada
nombrefichero

BDC@RT@t<EVEGN|P

EOt<CrS tASPQS t<!SGtVHKUWS RTHKPQS RTEOUWLE!l

Outputs
LOAD
EGUWJsS>EVEGqbpEGNKL2CMEOUDPQS J)CVE[J)pPQEOJ)CEGUNKSC@EGt
S PQHKCUl

ERROR: LOAD: could not open


file nombrefichero
EOUWJ)S)EVEGqbpEONKLCJ)HEON|P
qbHKJ)HK@
NKE
%S L

..<!

QAb<A

EOt<CEOJ)EGP.HK|PQS VCrUWCEOJeEOUWPQC@UWLt
SVC l mN@|P

EOt<CVEO@E[J)EOt

OVEO@EJ)EOt EOUWq!HKS VCdPQC@UJ)pnS t<CWHKS VCrPQS RTHKUWCMPQC@RTNKEGL2C

2O%S t
SUWCC!LEOUWEGtEOJ)LE[L2HK%CVEEOtAt<Ct>l

Descripcion

S t<S}pU
|P
o!pE}EONW|P

EGtACC@GEOLC2C.l C%EOUDEGN!EOJ)SP.HKCrVEVHKt<EOPQPQHKC@UWSRTHKEOUWL2CC J)L2@t<EOJ}lQdUWS}q!EO

EOt<CEOJPQS t<S VCDEOUnRTEORTCt


HKS L2CVS JNKS JpUWPQHKCUWEOJ[VE}EOJ)E|P

EOt<CpEOVEGUJ)EOt

NKNKS RTS VSGJ lmJ)LSD2pUWPQHKCUEOJpJ)S VSS tASJ)C@%C@tAL2EVELHKC@J2pUWPQHKCUWEOJVEG|UWHKVSJ}CtEON


pJspSt
HKCul
gH@pU|P

mD]d`EON@|P

EOt<CUbCEOJPQS t<!SGVCpJ)S UWVC

EOt<CJ)EOtASPQS t<S VCS pLC@RTSL2HKPQS RTEOUWLE

NKStAHKRTEOtASq!EOo!pE pUWS}2pUWPQHKC@UJ)EOSNKNKS RTSVSCtEONCJsL@tAEGJl D]d`


S tAS_t<EOP)S t<@S tbpUr|P

EOt<CCGEGL2C JsHEOJ)L2E

pUWHKPQS RTEOUWLE[J)C@UJ)C@CtAL2S VCJe|P

pEOVE[J)EOtpJ)S VC

SJsHKVCEOVHKLS V%C}}t<EOP)CRTHKNKS VCul<CtEONORTCRTEOUWLC@

EOt<CJ_CGEOL2Cro!pEJ)C@UDPQt<EOS VWC@J_P.CUDEONNKEOUW@pS)E[rl

Notas

!pUWPQHKCUWEOJo@ pE}J)EEOUWPQpEOUWLt
SUEGUn|P
EOUCL2t<C@J|P

EOt<CJ_CGEGL2CUWCVEO@EOtAHKS UDNKNKS RTS tS}C@Lt


S Je2pUWPQHKC@UWEOJ

1D]M`lCt

EGtACJCGEOL2Co!pEpEGt<C@U PQS t<!SGVCJCtMRTEOVHKCVEONPQC@RTS UWVC

E
EORTNKC%LC@VS JdNKS2pUWPQHKC@UWEGJdEOUEONu|P

EGt<C

pEOVEGUNKNKS RTStSCL2tAS Jd2pUWPQHKC@UWEGJMo@pEDJ)E

EOUWPQpEOUWLt
S UTEGUNKS JNKHK@t<EOtAHKS J[J)L2S UWVS t<VaCRTS L

!CY
EOUNKS JVEON%t<CHKCCJ)L2t<@tAEGJlOmJ)LS J[UWC

VEOq!EOtHKS UDNKNKS RTStupUWPQHKCUWEOJeVEO|UWHKVS JEOUCL2t<CM|P

EOt<CMPQS t<!SGVC

l>mJ)L2CrEOJS J)HC@t<o!pEJsH

EOJ[t<EOPQSOt<@S VCEON%PQS t<@SOVCtVEON%C@J)L!t<EGJUWCnEOJ)L2S%tAEGSOtAS VCS tASrt<EOSGNKCP.StNKS J[NKNKS RTSVS J


VEOJ)VENKS J2pUWPQHKC@UWEGJrEGU

EGUEONUWpEOq!CEOJ)S PQHKCVEVHKt<EOPQP.HKCUWS RTHKEGUWL2CVE

AS @tASt<C@NKEORTS J l

t<EOP)S t<@S VCOEOUWLC@UWPQEOJ_UWC

!HKP

lIgIH

UWCaEGJ

EOt<CJC@GEOLCVEG@EOUJ)EOt PQC@RTHKNKSVC@JS tASP.CUWL2EGUWEOt P.CVHK@CJ)HKUVEO%EOUWVEOUWPQHKSVE[CJ)HK

PQHKC@UlsC@teEA EGRTNKC@IEOUEOJ)L2SP.HKCUWEOJ

mIVEO@EpJ)S t
z
EOt<CJ_CGEOL2CS t
S[J)EOtPQS t<@SOVCJ l

PQC@RTHKNKS|P

/bin/cc

PQC@UNKSdC@PQHKCU

H

gHEOJ)L2S[EOUWJ)S UWVCMEOUCtAL2S tu
CJsL@tAEGJeS[pUWSUWpEOq!S%NKS L2S 2CtARTS D]d`
2C@tARTSLS No!pEJ)C@%C@tAL2E

Uso
S t<S}EON|P

-G 0

PQpS UWVC

VEO@EL2tAS @S)S tVE

J l

EOt<C

/usr/postgres/demo/circle.o

LOAD /usr/postgres/demo/circle.o

Compatibilidad
SQL92

D]d`

BDCEGFIHKJ)LE[EONPQC@RTSUWVC

EOUDgIhrijkWl

LOCK
Nombre
LOCK

mFNKKPQHKLS RTEOUWLE[@NKC@o@pEOS}pUWS}L2S!NKSVEOUWLtACMVE[pUWS}LtAS UWJsSP.PQHKU


y

Synopsis
LOCK [ TABLE ] name
LOCK [ TABLE ] name IN [ ROW | ACCESS ] { SHARE | EXCLUSIVE } MODE
LOCK [ TABLE ] name IN SHARE ROW EXCLUSIVE MODE

Entradas
name
mNUWC@RT@t<EVE[pUWS}LS @NKSEGFIHKJ)LEOUWL2E%S t
S!NKCo!pEGS t
l

mg ggI

m

m
z

Nota: A este modo de bloqueo se accede automticamente sobre tablas que estan siendo consultadas. Postgres libera automticamente los bloqueos accedidos ACCESS
SHARE despues de que se haya hecho la sentencia.



HKPQLCnJ)@NCPQCU
idgI[mlIgIE%tAEGL2E.UWVEtACLEO@EOtpUWSLS @NKSDo!pEDEOJ)LJ)HKEOUW
VCPQCUWJspNKLS VS}VE[J)EOUbL2EOUWPQHKS J_P.CUWPQpt
t<EOUbL2EOJ_]
 ^e\Z^!]Mcr
 \`DZ[D^b]Mcr
 \nm
k ]%
mJsLE}EOJEON!RTC@VCVE@NKCo!pEOCRTEOUWCJtAEGJ)L2tAHKP.LHKq!CEONbPQpS N!EOUWL2tASdEOUPQCU
EON RTCVC

X[Mdw

gI

mgIgnm

J)C!t<ENKSRTHKJsRTS}LS @NKSWl

mn
z

Nota: Se accede automticamente por cualquier declaracin SELECT FOR UPDATE.


HKPQL2CJPQCUNKCJRTCVCJ_VE[!NKCo!pEOCrmidg2[mn

CU

idg2[m
m

eiMgI[ml

mg gdm

Nota: Se accede automticamente por cualquier sentencia UPDATE, DELETE, INSERT.


HKPQL2CJ_PQCUNKC@JeRTCVC@JgI mOgI em meiMg 2[mmidg [m
idgI[mlOEOUWEGt
SNKRTEOUWL2EJ)HK!UWHK|PQSDo!pEpUWSDL2tAS UWJ)S PQPQHK@UaS PQL2pS NKHKGSDCTHKUW

CU

mgIgm

JsEGt
LSS NK@pUWS JL2pNKS JeEOUDpUWSLS @NKSWl

g

mn
z

Nota: Se accede automticamente por cualquier sentencia CREATE INDEX


HKPQL2CJPQCUNKCJrRTC@VCJre midg2[mgI me miMgI[m%me
mg gMme
 iMgImlsmJ)LE}RTCVCt<CL2EG!EpUWSLS @NKSdPQCUWL2tASS PQL2pS NKHK

CU

idg [mY

S P)HKCUWEOJPQCUWPQptAt<EOUWLEOJ l

g

mne

idg2[m


HKPQLC@JdPQCUNKCJdRTC@VCJde meiMg 2[mWg embgI me mid
eiMgI2[mn mg gMmeiMgI[m_lsmJsLERTC@VCEOJRT J_t<EOJ)L2tAHKPQL2HKq!Co!pEEON

CU

g2[m m

RTC@VCTgI

emVEO@HKVCYSo!pEJ)@NKCT%pEOVEJ)C@CtAL2S tEGJsLE@NKC@o!pEGCpUWSLt
SUWJsSP.PQHKU

C@t q!EOl

eiMg[m
m


HKPQLC@JMPQC@UNKC@JdRTCVCJde gI
me
 iMg 2[m!m
 idg2[ma

CU
e

S URTJt<EOJ)L2tAHKPQL2HKq!Co!pEYOJ)EV EgI

P.CUWJ)pNKL2S JePQC@UWPQptAt<EOUWL2EGJegImim

idg2[mn

mg gm

me
 iMgI[mWgI emWg em
idg2[maRTCVEOJ lOmJ)L2ErRTCVCYEGJ
m
 idgIm@NKCo!pEOSL2CVS JNKS J

embe

mggm
mx

!Md
z

ml

Nota: Se accede automticamente por las sentencias ALTER TABLE, DROP TABLE,
VACUUM .

mJsLEeEOJEONORTCVC}VE@NKCo!pEOCRTJut<EOJ)Lt
HKPQL2HKq!C}EOJHKUWPQC@RTSL2HK@NKE_PQC@UML2CVCJ NKCJuVEGRT J
RTC@VCJVE@NKC@o@pEOCt<C@LEO@EpUWSDLS @NKSD@NKCo!pEOSVSVEPQpS NKo!pHKEGt[C@LtASCEOtAS PQHK@U
P.CUWPQpt
t<EOUWLE!l

Nota: Este modo de bloqueo se accede tambin por un LOCK TABLE sin cualificar.
(i.e. el comando sin una opcin de bloqueo explcita).

Salidas
LOCK TABLE
mN!NKCo!pEOCJsES PQL2HKq!PQCUGFIHKLCul

ERROR name: La tabla no existe.


EGUWJsS>EVEGqbpEGNKL2CMJ)H@EGN

nombre

UWCEGFIHKJ)L2E@l

Description
C@J)L!t<EOJJsHKEGRTt<EnpJsSYEGN_RTCVCVEn@NKCo!pEOCRTEGUWC@Jt<EOJ)Lt
HKPQLHKqbCaPQpSUWVCNKEEOJC@J)HK@NKE!l

DX(l

r\LC@RTSRYEOVHKVS J[S tASrPQpS UWVCJ)EMpEOVSMUWEOPQEOJ)HKL2St_pURTCVCVEM@NKCo!pEOC

^b]Mc

RTS Jt<EOJ)L2tAHKPQL2HKq!C l

z
UWEOPQEOJ)HKLSS J)EG!ptAS tbNKSEGFIHKJ)L2EGUWPQHKSVE_VS L2CJEOUrpUWSLS @NKSS tASNKSVpt
SP.HKCU

C@t E
EORT
 NKCpUWSSNKHKP.SP.HKUE
EOPQpL2S[pUWSL2tAS UWJ)S PQPQHK@UEGUEONIUWHKq!EONVES HKJ)NKS RTHKEOUWLCrm
M

z
VENKSLt
S UWJ)S PQPQHK@Ul<S tAS[EGNKNKCrLDCVt
S JpJ)S tuEONIRTCVCMVE@NKCo!pEOCMgI

mJ)C@@t<ENKSLS @NKS

S UWLEOJ VEeNKSPQCUWJspNKLSWlAmJsLC}t<CL2EO@EOtANKCJVS LC@JuVE_P.S RY!HKCJPQCUWP.ptAt<EOUWLEOJ %tACCt<P.HKCUWS


t
PQpS NKo!pHKEGtC@LtASMCEOtAS PQHK@UnVEEOJ)PQt
HKLpt
SJ)C!t<E}NKSL2S @NKSPQCUVS LC@JEOUJ)pTq!EOt<VSGVEOt<CEGJs
L2SVCMSP.LpS NKC@t<o!pEEONRTCVCrVE@NKCo!pEOCgI

emEOJHKUWP.CRTS LHK@NKE[PQC@UPQpS NKo@pHKEOtue

eiMg[mTS PQP.EGVHKVCCteNKC@J o@pEEOJ)tAHK@EOUWI#DX(l^b]Mcr\Qab]Rab


m

fvD]MZ\w

D`D\aEOJ)EOtAS tA

en sentencia

S J)L2So@pErJsEt<CVp P)SCYJ)Er@S)EO_PQpS NKo!pHKEGtCEOtAS PQHK@U

VE[EOJ)PQtAHKL2ptASPQC@UWPQptAt<EOUWL2E@l

Nota: Para leer datos en su verdadero estado actual cuando ejecutas una transaccin
en el nivel de aislamiento SERIALIZABLE tienes que ejecutar una declaracin LOCK
TABLE antes de la ejecucin de cualquier sentencia DML, cuando la transaccin define
qu cambios concurrentes sern visibles por ellos mismos.

VEGRTOJMVENKCJMt<EOo!pEOtAHKRTHKEOUWLCJt<EOPQE.VEOUWLEOJ)J)HpUWSL2tAS UWJ)S PQPQHK@Uq!SnSP.SRT@HKS tVS L2CJ


EOUpUWSDLS @NKSDEGUWL2CUWPQEOJJ)EVEO@EOtAKSS PQPQEOV%EGtS N RTCVCTgI

m

idgImS tAS

EOq!HKL2StPQC@UWVHKPQHKCUWEOJVEpUWLCRTpEOtAL2CPQpS UWVCVCJLt
S UWJ)S PQPQHKCUWEOJPQCHKUWP.HKVEGUWL2EGJHKUWL2EGUWL2S U
@NKC@o@pEGS tNKSL2S @NKSrEOUTRTCVCgI

maYEGUWL2CUWPQEOJHKUWLEOUWLS UPQS RT@HKS t_VS LC@JEOUTEOJ)LSL2S @NKS

S RT@S J}2HKRTNKHKPQHKLS RTEOUWLEOeS PQPQEOVHKEGUWVCTS N RYC@VCVE@NKCo!pEOCe


HKUWPQC@RTSL2HK@NKEPQC@UDEGN@@NKCo!pEOCrg

idg mo!pEEOJ
m

eml

S t
SPQCUWL2HKUWpS t_PQCUYNKC@JpUWLC@JRTpEGt
LC@J2PQpS UWVCVCJL2tAS UWJ)S PQPQHKC@UWEGJJ)EEGJsEGt
SUNKSdpUWS
SNKS}CL2tAS bL2EGRTS}L2tAS L2SVCrSt
tAHK@S VEO@EGt
SOJeJ)EO@pHKtVC@Jet<EO@NKS J!EGUWEOt
SNKEOJeS t
SEOq!HKL2S t PQC@UWVHK
PQHKC@UWEOJeVE[%pUbL2CRTpEOtALCT

iS JL2tAS UWJ)S PQPQHKC@UWEGJuLHKEOUWEOUMo!pEeS PQPQEOVEOtbS@NKCo!pEOCJ VEeNKCJuRTHKJ)RTCbJCOEOLCJ EOUMEONORTHKJ)RTC


Ct<VEOUl
CtdE
EORTNKCuJ)HpUWSYSNKHKPQS PQHK@US PQL2pSNKHKOSYNKS|NKSYTVEOJ)pOJMS PQLpS NKHK SNKS|NKSYk
2EOUnNKSrRTHKJ)RTSLt
S UbJsS PQPQHKUWEOUWLC@UWPQEOJ[NKSrJ)EG!pUWVSMS NKHKPQS PQHK@UYUWCVEO@EGt
SMS P.LpS NKHK SGt_NKS
|NKSekJ)HEONKNKCYq!SSS PQLpS NKHK S tNKS|NKSRT JLS t<VEM2EGUpUWSLt
SUWJsSP.PQHKUaJ)HKRTNKEG)lOmU
PQS RT@HKC!VEO@EOtA SS PQL2pS NKHK SGtNKS|NKSDekEGUEGNRTHKJ)RTCTCt<VEOUPQC@RTCEOUNKSt
HKRTEGt
S
S %NKHKP.S P>HK@Ul


HKPQL2HKq!CbJJ)NKCJ)H

HKP.LHKq!C2Hl E!l)CVt
SJ)EOtJ)CCt
LS VCCtJ)NKCpUWS}L2tAS UWJ)S PQPQHK@U

iS JLtAS UWJ)S P.PQHKCUWEOJVEG!EGt


SOUTt<CPQpt
S tAJ)E}VC@J[RTCVC@J[VE@NKC@o!pEGCnPQCU
pUWCVE[EONKNKC@JeEOJ_S pL2C2P.CU

PQS VSq!EO >lgIHEOJ)LS UHKUWq!CNKpP.tAS VCJRTCVC@JVE@NKCo!pEOCdRTNKL2HKNKEGJ)GEOUWLC@UWPQEGJNKSJL2tAS UWJ)S PQ


PQHKCUWEOJ_VEO@EOtAKSGUJ)HKEGRTt<E[S PQPQEOVEOtutAHKRTEOt<CSNRTC@VCRT JtAEGJsLtAHKP.LHKq!C l
dUE
EORT%NKCMSt
SEGJsLS[t<EG!NKSJ)EVHKMSUWL2EOJPQpS UWVCJsEVHKJ)PQpL2HKdEON pJ)CdVEON RTCVCMgI

eiMgI[mDRTE
C@to!pEEONRTCVCgI
m

em

ml

Nota: Postgres no detecta puntos muertos "bajar" una transaccin a la espera para
resolver el punto muerto.

Notas

DX(lxEOJpUWS}EGFILEOUWJ)HKCUnVEGNNKEOUW!pS>ECJ)L2@t<EOJ l
mFP.EGL2C}%S t
SNKCJRTC@VCJVE@NKC@o!pEGC

mgg[g

idg mDL2CVC@JNKCJVEORTJ
^b]Mcr
 \aJ)C@UPQC@RTSL2HK@NKEOJPQC@U

em_m

DX(l

RTC@VC@JVEr@NKC@o@pEOCYVEMCJ)L2@t<EOJNKS JJsEGUWL2EOUbP.HKS J
S o!pEONKNKCJet<EOJ)EOUWL2EGJeEGUDrtAS PQNKE!l

DX(lxpUWPQHKCUWS}JsNKCVEOUWL2t<CrVE[Lt
S UWJ)S PQPQHKC@UbEOJ l

Uso
NKNKpJ)L2tAS LE[S}gI

mnNKCP.C@UStAHKRTS tA@EOLS @NKE~

EOU!CHKUWLCEGt
2Ct
RHKUWJ)EOtAL2JeHKUWL2CS

2C@t<EOHK@U@EOLS @NKE!

BEGIN WORK;
LOCK TABLE pelculas IN SHARE MODE;
SELECT id FROM pelculas
WHERE name = Star Wars: Episodio I - La amenaza fantasma;
- Haz ROLLBACK si el registro no fue devuelto
INSERT INTO comentarios_usuario_pelculas VALUES
(_id_, GUAY! Llevaba tanto tiempo esperndola!);
COMMIT WORK;

CRTSpU@NKCo!pEOCrg

emDe

idgI[mP.NKSqbEVELS @NKS%t
HKRTS tAHKSP.pS UbVCrq!S @S JS
m

S PQEOt pUWSC@%EOt
SP.HKUDVE[@Ct
tAS VCu

BEGIN WORK;
LOCK TABLE pelculas IN SHARE ROW EXCLUSIVE MODE;
DELETE FROM comentarios_usuario_pelculas WHERE id IN
(SELECT id FROM pelculas WHERE clasificacin < 5);
DELETE FROM pelculas WHERE clasificacin < 5;
COMMIT WORK;

Compatibilidad
SQL92

1DX(l

BDC

x\

^b]dc

EOUgIhrij kO o!pEpJ)STEOUPQS RT@HKCf\^

^Z[]MDf]dX[^AD

St
S

EOJ)EOPQHK|PQS tUWHKq!EONKEOJ}VEPQCUWPQptAt<EOUWPQHKSEOUaL2tAS UWJ)S PQPQHKC@UWEGJl BDCJsCL2t<CJLS RT@HKOUNKSLEOUWEORTCJ)


q!EOt

S tASRT JVEOLS NKNKEOJ l

MOVE
Nombre
MOVE

pEOq!E[NKSCJ)HKP.HKUVEONPQpt
J)Ct
y

Synopsis
MOVE [ selector ] [ count ]
{ IN | FROM } cursor
FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor

Descripcin
mkd\

wx

%EOt
RTHKLES NpJ)pS tAHKCRTCqbEGtrNKS%C@J)HKPQHK@U

VEONPQptAJsCtrpU

UWRTEGt<CEOJ)EOPQK|PQCVE

mkd\T2pUWPQHKC@UWSrP.CRTCEONWPQC@RTSUWVC!\^X[v@EOt<CJ)NKCCJ)HKP.HKCUWSEONbP.ptAJ)C@t_UWC

|NKS Jlwx

VEOq!pEONKq!E|NKS J l

@

t S

S tASVEOLS NKNKEOJVE[J)HKUWLS FIHKJ_pJ)Cul

Notes

mkd\EOJpUWS}EOFL2EOUWJ)HKUnVEONNKEOUW@pS @ECJ)L2@t<EOJ l

wx
teS

!

St
SpUWSrVEOJ)P.tAHKPQHKUTVENKCJ[S t<!pRTEGUWL2CJqbNKHKVC@J l2t_SM

|UWHKtpUDPQptAJ)C@t
l>2tS

u[2

@ I

L2tAS UWJ)S PQPQHKC@UWEGJl

Usage
CUW|!ptAS t pJ)S tpUDPQpt
J)CtO

BEGIN WORK;
DECLARE liahona CURSOR FOR SELECT * FROM films;
-Saltarse las 5 primeras filas:
MOVE FORWARD 5 IN liahona;
MOVE

-Fetch la 6



fila en el cursor liahona:

S t_VEG

S tASRY J_HKUW2Ct
RTSP.HKUDS PQEOt<P)SVE

FETCH 1 IN liahona;
FETCH
code |title |did| date_prod|kind
---+----+--+-------+-------+---P_303|48 Hrs|103|1982-10-22|Action
(1 row)

|len
| 01:37

- cierra el cursor liahona and commit work:


CLOSE liahona;
COMMIT WORK;

Compatibility
SQL92

BDC

S DJ)EOUWLEOUWPQHKSMgIhMij kw

mkM\lQmUnPQS RT@HKC@IghMijkdEGt
RTHKLEC@UWEL2CD@\^X[v|NKS JVE

pUWSC@J)HKPQHK@US @JsCNKpLSMVEGNbPQpt
J)Ct2RTCq!HKEOUWVCDHKRTNKKPQHKLS RTEOUWLEEGNbPQpt
J)CteSpUWSMCJ)HKP.HKU
PQC@tAt<EOP)LSWl

NOTIFY
Nombre
NOTIFY

UWC@LHK2l

gEObS NKSLC@VCJNKCJ_t<CUWEOUWVJ)@SP.@EOUWVJ)SNKS}EGJsPQpP

SVE[pUWS}PQCUWVHKPQHK@U

Synopsis
NOTIFY name

Entradas
notifyname
BDC@LHK|P.S}NKS}PQCUWVHKPQHK@UDS}J)EOt J)EOWS NKS VSbl

Salidas
NOTIFY

PQpJ)EVE[t<EOPQHK@CrVE[o!pEEONPQCRTS UWVCUWCL2HK2

S}JsHKVCE
EOPQpL2SVC l



Eventos Notify

iC@JeEOq!EOUWLC@JJ)C@UDt<EOSt
LHKVCJeS[NKC@Je2t<C@UWLEOUWVJ)o!pEEOJ)L USNKSEGJsPQpP

S EONPQRTCJsH

P.SVSS NKHKPQS PQHKCU2tACUWLEOUWVt<EOS PQPQHKCUWSVEOEGUWVEVEJ)pnt<C@@tAS RTSOPQHKUl

Descripcin

e~EOUWq!KSdpUEGqbEGUWL2CDUWCL2HK2SMPQS VS}SNKHKPQS P.H@Unt<CUWL2EGUWVo!pEt<EOq!HKSO


#Af^\
S tASNKSP.CUWVHKPQHKUUWCL2HK2EOJ)EOPQ|PQSEGUaNKS
notifyname
@S J)E[VE[VSL2CJEOUDP.ptAJ)C l
mNbPQCRTS
UWVCDDD^A
RTEOUWLE

SE
EGPQpLS VC

iSHKUW2Ct
RTS PQHKUa%S J)S V%SS N2t<CUWL2EOUWVS t
SrpUEGqbEGUWL2CnUWC@LHK2THKUWPQNKp!EEONUWCRT@t<ErVEMNKS
PQC@UWVHKPQHKUUWCL2HK2MMEON

VENKSUWCL2HK|PQS PQHK@UVEONt<CPQEOJ)C@S P.@EOUWV.l<mJSJspUWLCVEON VHKJsEG


z
WS VCtVE[NKS}@S J)E[VE[VSL2CJ_EGN@VEO|UWHKtNKCJ_UWCRT@t<EOJ_VENKS JP.CUWVHKPQHKCUWEOJo!pEJ)EOtA UDpJ)S VS J
EOUpUWS}@S J)E[VEVS L2CJeVS VSo!pEJ)HK!UWHK|PQSP.SVSpUWSWl
CRTpUWRTEOUWLEO EONUWC@RY!t<EVE[pUWS}PQCUWVHKPQHK@UUWCL2HK2EGJ_EONRTHKJ)RTCo@pEEGN@VE[S NK@pUWS}L2S @NKS
EOUNKS@S JsEnVEYVS L2CJ)EON_EGqbEGUWL2CUWCLHKEGJsEGUWPQHKS NKRTEOUWLEY J)HK@UWHK| PQSYDEPQS RT@HKS VCaOJ)L2S
L2S!NKSEOP

S NKEpUTqbHJsLS CDS tASdqbEGtNKCJ[P.SRT@HKC@J).lEOt<CDVHKP

SrSJsCPQHKS PQHK@UTUWCEOJC@NKHK!S VS

e~#Af^e\lGCtEAEGRTNKC@!pUTVHKJ)EOWSVC@tVE@S J)EOJ[VEdVS LCJ

CtNKCPQC@RTS UWVC@JDD^e<

CVt
SdpJ)S t_q!S tAHKC@JUWC@RT@t<EOJVE}PQC@UWVHKP.HKUTVHK2EOt<E.UWL2EOJ%S t
SdJ)EOWS NKS teVHKEGt<EUWLEOJLHKC@JVE
PQS RT@HKC@JeEOUpUWS}RTHKJ)RTS}L2S@NKSWl

e~t<C@q!EOE[pUDRTCVCJ)HKRTNKEVEJ)EOWS NKS tuCpUDRTEOPQS UWHKJ)RTCrVE[PQC@RTpUWHKPQS PQHKUnEGUWL2t<E

DD^e<

t<C@PQEOJ)CJu22HKUWL2EOtAt<CP.EGJsJuPQC@RTRTpUWHKPQS LHKC@UWS t
SeEONP.CU pUWL2CVEet<CPQEOJ)C@Juo!pE_S PQP.EGVEOU
SNKSRTHKJsRTS@S J)E_VEeVS LC@JuC@J)L2@t<EOJ lAgIEepEGVEOUMP.CUWJ)L2t<pHKtRTEOPQS UWHKJ)RTCJVE_RT J SNKL2CUWHKq!EON
pJsSUWVCLS @NKS J_EGUnNKS@S J)EVEVS LC@JeS tAS}S J)S tVS LC@JSVHKPQHKC@UWS NKEGJ_2RT J_S NKNK}
VEpUnRTEGt<C
UWC@RT@t<E[VE[PQC@UWVHKPQHKUbVEGJsVE[EONUWCL2HK|PQS VC@tS NCrSNKC@J_o!pEEOJ)L2GUDSNKSEOJ)PQpP

\~

Sbl

pS UWVCDJ)EdpJ)SDD^A S tASdJsEGWS NKS t_NKSrCPQpt


t<EOUWPQHKSdVEdPQS RT@HKCJ[EOUTpUWSrLS @NKSrEGUTS t<

e~

L2HKPQpNKS tpUWSTL2GP.UWHKPQSYLHKN_VEtAC@t
SRTS PQHK@UEOJC@UWEGtrDD^e<
VHKJ)S tASOVS}CtS P.LpS NKHK SP.HKCUWEOJeVENKS}L2S@NKSWl

EGUpUWSYUWCt
RTSTo!pEEOJ

EEOJ)L2S}RTSUWEOtAS NKS}UWC@LHK|PQS PQHKUnEGJS pLC@RT

z
L2HKPQSPQpS UWVCMNKS[L2S @NKSPQS RT@HKS OMEON%tAC@t
S RTSGVCtVENKSSNKHKPQS P.HKUUWCMpEOVECNKqbHKVS t
J)EVE
EONKNKCrVE[2C@tARTSS PQPQHKVEOUWLS Nl

e~HKUWL2EOtAS PQLS[PQC@ULt
SUWJsSP.PQHKCUWEOJghMinVEpUWSRTS UWEGt
S[HKRTC@tAL2SUWL2E!l
tAHKRTEOt<CJ)HJsE
\~ VEOUWLt<CYVEpUWSL2tAS UW J)S PQPQHK@ UW!NK CTEOq!EOUWLCJUWC@LHK2TUWCTJ)C@UatAEGS tLHKVC@J

DD^e<

E
EOPQpL2SpUDD^eA

S J)L2SaSYRTEOUWCJro!pEnNKSL2tAS UWJ)S PQPQHK@UJ)E

S @S

EGP

CulmJ)L2CaEOJrS VEOPQpSOVC@uVS VCo!pEnJ)H

p
UWSYL2tAS UWJ)S PQPQHK@UJ)ETS @CtAL2SYUWCJ!pJ)LS tAKSYo!pEL2CVCJNKCJP.CRTS UWVCJVEOUWL2t<CVEYEGNKNKSYUWC

e~lOEOt<CnpEOVErJ)EOtVEOJ)PQC@UWPQEOtAL2SUWL2ErJ)HpUWC

p@HKEOtAS UL2EOUWHKVCYEO2EOPQL2C!HKUWPQNKp!EGUWVCTDD^e<

EOJ)L2EOJ)EGt
S UWVCTo!pENK CJdEOq!EOUWLC@JdUWCL2HK2J)EtAEGSOtALS UHKUWRTEGVHKS L2SRTEOUWL2E@lgIEO@pUWVC@WJ)HpU
@S PQ!EGUWV_SDNKSDEOJ)PQpP

St<EOPQHK@ErpUWSDJsEGWS N UWCL2HK2RTHKEGUWL2tA S JEOJ)LEOUpUWSDL2tAS UWJ)S PQPQHK@UWbEON

EOq!EOUWLCYUWC@LHK2TUW
CTJ)Et<EOS tLHKt
S N2t<C@UWLEOUWV_PQC@UWEGP.LS VC
L2tAS UWJ)S PQPQHK@UYJ)E

S JsLSpJsLCVEOJ)pOJVEo!pENKS

S @SrPQC@RTNKEGL2S VC2LS UWL2CDJ)H%J)EdEAEGP.pLSrPQC@RYCnJ)H%J)EdS @Ct


LS >l

EUWpEOq!C@NKS
z
t
SOUEGJo!pE}JsH!pUnUWCLHKD2pEOtAS}t<EOS tALHKVCVEGUWL2t<CVE
pUWSL2tAS UWJ)S PQPQHK@Uo!pE}VEOJ)pOJe2pE
S @C@tALS V%C@J)EOtAKSVEGJ)EOS @NKE}o! pErNKSUWCL2HK |PQS PQHK@UJ)EMVEOJ
EON@S PQ@EOUWVWCpEOVEDEOP

S tRTS t<P

HKPQHKEOtASrVEdS NK@pUWSM RTS UWEOtAS

SnSL2tAOJMpUUWC@LHK2pUWSnqbEGo!pE

EOt<C
y
SJsHKVCaEOUbqbHKS VC

S N2t<C@UWLEOUWV.lsC@tLS UWLCNKC@JEOqbEGUWL2CJUWCL2HK2DJ)CUJ)@NKCDt<EOSGtAL2HKVCJEOUWLt<EL2tAS UWJ)S PQPQHKC@UWEGJlsmN

\~

t<EOJ)pNKL2S VWCVEdOJ)L2CnEOJ[o!pErNKS J[S NKHKPQS PQHKC@UbEOJ[o!pErpJsSUDD^eA

St
SMJsEGWS NKS tEOUTL2HKEGRTC

t<EOSGN@VEG@EOtAKSGULtAS L2S t VE[RYS UWL2EGUWEOtPQCt


LS JJ)pJeLt
S UWJ)S PQPQHKC@UWEGJ l

e~J)EPQCRTC@tALSP.CRTCNKS JeJ)EOWS NKEGJedUWHKFdEGUpUDS J)EOPQLCHKRTCtAL2S UWLE! J)HpUWSRTHKJ)RTS

DD^e<

PQC@UWVHKPQHKUnEGJJ)EOWS NKS VSqbSt


HKS Jq!EOPQEOJ_EOUDpUWSdJ)pPQEOJ)HKUntA HKVS ONKC@J_tAEGP.EGL2Ct<EJ_pEOVEo@pE
J)@NKCt<EGP.HK@HKEOtASGU

\~

pUEOq!EOUWL2CUWC@LHK2S tASq!S tAHKS JEAEGP.pPQpHKCUWEOJVEDD^A l!C@tMEGNKNKCEOJ

RTS NKSHKVEGSYVEOEOUWVEOt}VEONUWRTEOt<CVEnUWCL2HK|PQS PQHKC@UWEGJt<EOPQHK@HKV%S J lmUPQS RT@HKC@upJ)S t<EORTCJ

e~S tASVEGJsEGt
LS tASNKSJrSNKHKP.SP)HKC@UWEGJo!pEDUWEOPQEOJ)HKL2S U%tAEGJsLS tS LEOUWPQHKUSS NK@C@

DD^e<

"

YpJ)S t<EORTCJpUCOEOLCYVEr@S J)ErVErVS L2CJ2LS NPQC@ RTCYpUWSJ)EOPQpEOUWPQHKS S tASRTS UWLEOUWEOtpU


t<EO@HKJsLt<CrVENKCo!pE

S}CPQpt
tAHKVCCrPQpS UWL2S Jq!EOPQEOJ

S}CP.ptAtAHKVC l

\~

mJpJspS NOSt
S_pUd2t<C@UbL2EOUWV!o@pEEOUWq!KSDD^A TEGJ)L2S tbONORTHKJ)RTC}SNKS_EOJ)PQpP

SVEONORTHKJ)RTC

UWC@RT@t<EUWCL2HK2lQm
UnEOJ)E}PQS J)Ct<EOPQHK@HKtA}pUEOq!EOUWLCUWC@LHK2D.pJ)L2CDHK@pSNbo!pE}NKC@JC@Lt<C@J2t<CUW
L2EGUWVJ)bSeNKSEOJ)P.pP
L2tAS @SACHKUWLHKN

SWl
EOEGUWVHKEOUWVCVEeNKSNK@@HKPQSVEeNKSS NKHKPQS PQHKUWsEOJ)L2CC@VtAS_S PQS t
t<E.S tWpU
z
C@tWE
EORTNKCQt<EONKEO@EOUWVCpUWSLS @NKS_VEepUWS@SJsEeVEVS LC@JS tAS_EOUWPQCUWL2tAS t

y
NKS[RTHKJ)RTS[S PQL2pS NKHK SGPQHK@Uo!pEOJ)ERT HKJ)RTCr2t<CUWL2EOUWVS PQS @SG@S[VEEOJ)PQt
HK@HKt
l<mUC@J)L!t<EOJ

pBWl [

CJsLEOtAHKC@t<EOJ EOJeCJsHK@NKEEGqbHKLS t VHKP

CL2tAS @S)CEGFILtASUWC@LHK|P.SUWVCJ)H!EGN@

VEGNtACPQEOJ)CrVE

z
UWC@LHK|P.SP.HKUVEON@S PQ@EOUWV!2J)pRTHKUWHKJsLtAS VCEOUrEON RTEGUWJ)S)EVEON EOq!EOUWLC}UWCL2HK2!EOJEON RTHKJ)RTC
o!pEdEGNb

VEGNb@S PQ@EOUWVVE}pUWCRTHKJ)RTCn2q!S NK!SdNKSdt<EOVpUWVS UWPQHKSGuVHKJsCUWHK@NKEdEGUYNKHK@o!>l


z
pS UWVCMJ)C@UDEONRTHKJ)RTCIEGNEOq!EOUWLCUWCL2HK|PQS PQHK@UEOJNKSt<EOPQpEOtASOPQHKUnVEONt<C@%HKCrLt
S!S>CMVE
pUWCRTHKJ)RTC@Od%pEOVE_J)EOtHK@UWC@tAS VCulA

EGJsStVE_NKCo!pEJ)EVH CEOUrEON% t
tASGC%tAEGP.EGV%EGUWL2EO

EOJ)L2CEGJpUWS[LOPQUWHKPQSJ)EG!ptASWlACJ)L2@t<EOJRTS UWLHKEOUWENKS JS pLC@2UWCL2HK|PQS PQHKC@UWEGJJ)EOS tAS VSGJVE_NKS J


UWC@LHK|P.SP.HKCUWEOJo!pE}NKNKEO@S UnVECLtACJ@S PQ@EOUWVJ)VERTS UWEOtASo!pEdUWCpEOVEOJEOt<VWEOtepUWS
UWC@LHK|P.SP.HKUYVE2pEOtASC@teHK@UWCt
SteL2pJt<CHKS JUWCL2HK|PQS PQHKC@UWEGJ l gIH!S NK!pHKEGUYEOUWLHKEOUWVE}OJ)L2C
o!pERTE[NKCEOFI%NKHKo!pEO2

Notas
name

%pEOVEJ)EOtpUWSPQS VEOUWS}q! NKHKPQS}PQC@R

EONUWCRT!t<EVENKSYLS @NKSYEOUJsl@gH

name

pUUWCRT@t<EOUWCEOJ_UWEOPQEOJ)S tAKS}pUWSt<EONKS PQHK@UDPQCU


JsEEOUWPQHKEGt
tASYEOUWLtAEVC@@NKEOJPQC@RTHKNKNKS J) UWHJ)HKo!pHKEGt
S

UW
EOPQEOJ)HKL2SpUaUWC@RT@t<EJsHKUWL PQL2HKPQS RTEGUWL2Eq! NKHKVCWJ)HKUWCo!pEpVEJsEGt[PQpSNKo!pHKEOtPQS VEGUWSVE

+PQS t
SGPQL2EGtAEGJeVE[NKCUW!HKLp Vl

S J)L2S

mUTS NK@pUWS J[qbEGt


J)HKCUW EOJtAEGqbHKSGJVEMC@J)L!t<EOJ)
VC!NKEGJrPQpS UWVCUWC

name

LEOUWSo!pErEOUWPQEOtAtAS tJ)ErEOUWLtAEPQC@RTHKNKNKSJ

S @Snt<EONKS PQHKUP.CUUWHKUW!UUWCRT@tAEnVEL2S!NKSnEOFHKJsLEOUWLEOuHKUWPQNKpJsCJ)H

J)HKUWL2 PQLHKP.SRTEOUWL2EEOtASqbNKHKVCPQCRTCUWCRT@tAE@l)mJ)L2C@SUWCEGJeUbEOPQEOJ)S t
HKCul

4B 

mUDqbEGt
J)HKCUWEOJCJ)L2@t<EOJS UWLEOtAHKC@t<EGJ_S}NKS

Wl EON@
VE[!SP.@EOUWVt<EOSGtAL2HKVCEOUnpURTEOUWJ)S)E
z
VEONO@S PQ@EOUWVrVEON2t<C@UWLEOUWVVEepUWC}RTHKJ)RTCulCtEOJ)C}UWCJsE_CVS

UWC@LHK2EOtAS_J)HKEORTt<EeEGN 

z
VHKJ)L2HKUW@pHKtNKS J}UWCLHK|PQS PQHKCUEOJVEOpUWCTRTHKJ)RTCVENKS J}UWCLHK|PQS PQHKCUWEOJdVEC@Lt<C@J}P.NKHKEGUWL2EOJ}EOU
S o!pEONKNKSJeq!EOtAJ)HKC@UWEGJl

Uso

CUW|!ptAS}EAEGP.pLS}pUWSJ)EOPQpEOUWPQHKS}NKHKJsLEOUW2EOJ)PQpP

S >UWCL2HK2@2UWC@LHK|P.S PQHKUW%VEOJ)VE

LISTEN virtual;
NOTIFY virtual;
ASYNC NOTIFY de virtual desde el pide de backend

psql

11239 recivido

Compatibilidad
SQL92

BDC

e~EGUghMij kbl

SJ)EOUWLEOUWPQHKSDD^A

RESET
Nombre
EOJ)LS pt
S[NKC@JeS tAORTEGL2t<CJeEGUDL2HKEORTCMVE[EAEGP.pPQHKUSJ)pJeq!S NKCt<EOJCtVEGEGP.LC
y
S tASNKSJ)EOJ)HKUnSP.LpS Nl

RESET

Synopsis
RESET variable

Entradas
variable


eEO|OtAS J)ES

S tASRTS @C@tHKUW2C@tARTS PQHK@UDJ)C!t<EqbS tAHKS @NKEGJeVHKJ)CUWHK@NKEOJ l

Salidas
RESET VARIABLE
EOUWJ)S)EVEOq!pEONKL2CJ)H!NKS
C@t VEO2EOPQLC l

variable

pVCJ)EOtet<EOJ)L2Spt
SGVSEOFHKL2CJsSRTEOUWLEdSJ)pTq!S NKC@t

Descripcin
Z[\f\^

t<EOJ)LS ptSnq!S tAHKSO@NKEOJdSDJ)pJdqbSNKC@t<EOJ%C@tVEO2EGP.LC lEO|OtAS JsES

%S t
SRTS @CtAEGJ

VEOLS NKNKEOJuJsC@t<E_qbS NKCt<EOJEGt


RTHKLHKVCJdCtVEO2EOPQL2Cul<Z[\f\^YEOJ pUWS[2Ct
RTSS NKLEOtAUWS L2HKq!SS tAS

SET variable = DEFAULT

Notas
Z[\f\^EOJpUWS}EOFL2EOUWJ)HKUnVEONNKEOUW@pS)EVE[C@J)L!t<EGJ
MLHKNKHKPQE

SUWV

%S t
SRTS UWHKpNKS t EONq!S NKC@t VE[NKSJ_q!S tAHKS @NKEOJ l

Uso

mJ)L2S @NKEGP.E.t

SL2EOgIL!NKE[2EGJsLHKNKCVE2EOP
z

S bSJ)pq!S NKCtCt VEO2EOPQL2Cu

RESET DateStyle;

mJ)L2S @NKEGP.E.tEGo!CSJ)pnq!S NKC@t CtVEGEGP.LCu

RESET GEQO;

Compatibilidad
SQL92
BDCEGFIHKJ)LEZ[\f\^EOUDgIhrijkWl

REVOKE
Nombre
REVOKE

eEOq!CP.SEONt
HKq!HKNKEO@HKCVES PQP.EGJsCMSpUDpJ)pS t
HKC SpUD!t<pCCSLC@VCJeNKC@J
y

pJspSt
HKCJ l

Synopsis
REVOKE privilegio [, ...]
ON objeto [, ...]
FROM { PUBLIC | GROUP ER">gBLE> | nombre_usuario }

Entradas
privilegio
iC@JeCJsHK@NKEGJtAHKqbHKNKEG!HKCJeJsCU

gmim%
tAHKq!HKNKEO@HKCrSt
SS PQPQEOVEOtS[L2CVS JNKS JPQCNKpRTUWS J_VEpUWSLS @NKS[CMq!HKJ)L2SEGJ)EOPQK|PQSWl

BDgIm
tAHKq!HKNKEO!HCVE[HKUWJ)EOtAL2StVSL2CJ_EOUDLC@VS JeNKSJ_PQCNKpRTUWS JVEpUWS}LS @NKSEGJ)EOPQK|PQSWl


M
z

tAHKq!HKNKEO!HCS tASS PQLpSNKHK S tuL2CVS JeNKS JPQC@NKpRTUWS J_VE[LS @NKSWl

mim
z

m
tAHKq!HKNKEO!HCS tAS@Ct
tAS t |NKSJ_VEpUWS}L2S @NKSEGJsEGPQK|P.Sbl

edim
tAHKq!HKNKEO!HCS tASVEO|UWHKtt<EO!NKSJeEGUpUWSL2S @NKSCrq!HKJsLSWl)2EOOJ)E

eI}

>l

ii
EOJ)PQHKUWVEL2CVCJNKCJ_tAHKq!HKNKEO@HKC@J l

objeto
mN@UWCRT@t<EVE[pUC@GEOLCJ)C@@t<EEON@o!pEt<EOq!CP.S t EON@S PQPQEOJ)C l>iC@J_C@J)HK@NKEOJ_C@GEOLC@J_JsCU

L2S @NKEGS

JsEGPQpEGUWP.HS

qbHKJ)LS

KUWVHKPQE

grupo
mNUWC@RT@t<EVE[pUD@t<pCS NPQpS NJ)Et<EOq!C@PQS UtAHKq!HKNKEO@HKC@J l

nombre_usuario
mN!UWC@RT@t<E}VEpUpJ)pS tAHKCS N!P.pSNbJ)Et<EOq!CPQS UntAHKq!HKNKEO@HKC@J ldL2HKNKHKPQE}NKSdS NKS @tASdPQNKS q!E
di2S tASEGJsEGPQHK|PQS t L2CVCJ_NKCJ_pJ)pS tAHKC@J l
Mi2
eEOJ)PQHKUWVEEONINKCJtAHKqbHKNKEG!HKC2J)%EOJ)EGP.HK|PQS VC2Js!S}LCVC@JeNKC@JepJ)pS t
HKCJ l

Salidas
CHANGE
EGUWJsS>EVEGqbpEGNKL2CMJ)H

S}LEOUWHKVCrOFHKL2Cul

ERROR
EOUWJ)S)Eo!pEJ)EVEOq!pEONKq!EJsHEONICGEGL2CMUWCdEOJ)L2[VHKJs%C@UWHK@NKECrJ)HIEOJHKRT%C@J)HK@NKEt<EOq!CPQS t
t
HKq!HKNKEO@HKCJ_S N@t<pCCSNKC@J_pJspS tAHKCJl

Descripcin

kM$lM\EOtARTHKL2ES N P.t<EOSVC@t%VEpUWS[C@GEOLCdtAEGqbCPQS tEGt


RTHKJ)CJS J)HK!UWS VC@JS UWLEOtAHKC@tARTEOUW

Z[\

L2ESL2CVCJNKCJ_pJ)pS tAHKC@Je2RTEOVHKS UWLE[MibCrSpUDpJspS tAHKCCrSpU!t<pCul

Notas

Id%S t
SC@@LEOUWEOtRTJHKUW2C@tARTS PQHK@UJ)C@@t<EEGt
RTHKJ)CJEOUC@GEO

CUWJ)pNKLEEON@PQC@RTS UWVCJso@N
L2CJ_EGFIHKJ)LEOUWL2EGJ

Database
= lusitania
+------------+------------------------------+
| Relation
|
Grant/Revoke Permissions
+------------+------------------------------+
| mytable
| {"=rw","miriam=arwR","group todos=rw"}
+------------+------------------------------+
Legend:
uname=arwR - privileges granted to a user
group gname=arwR - privileges granted to a GROUP
=arwR - privileges granted to PUBLIC

|
|

r - SELECT
w - UPDATE/DELETE
a - INSERT
R - RULE
arwR - ALL

Sugerencia: Actualmente, para crear un grupo debe insertar los datos manualmente en
la tabla table pg_group de este modo:
INSERT INTO pg_group VALUES (todos);
CREATE USER miriam IN GROUP todos;

Utilizacin
eEGqbCPQSEONtAHKqbHKNKEG!HKCrVE[HKUWJ)EOt<PQHK@UDS}LC@VCJeNKC@J_pJspS tAHKCJ_EOUNSLS @NKS

films

REVOKE INSERT ON films FROM PUBLIC;

eEGqbCPQSL2CVCJNKCJ_tAHKq!HKNKEO@HKC@JeS NpJspSt
HKC

manuel

EOUDNKS}q!HKJ)L2S

kinds

REVOKE ALL ON kinds FROM manuel;

Compatibilidad
SQL92

kdmlM\nLHKEOUWE}P.SSOPQHKVS VEOJS VHKP.HKCUWS NKEOJ_S tAS

iS}J)HKUWL2S FHKJVE}gIhrijk}S tAS}EONbPQCRTS UWVCDZ[\

t<EOJ)P.HKUWVHKttAHKq!HKNKEO@HKC@J) HKUWPQNKpJsCS o!pEONKNKCJ_EGUPQCNKpRTUWS JeHKUWVHKqbHKVpS NKEOJeEOUDL2S @NKS J

REVOKE { SELECT |
ON objeto
FROM { PUBLIC
REVOKE { INSERT |
ON objeto
FROM { PUBLIC

[WM

uEGS

DELETE | USAGE | ALL PRIVILEGES } [, ...]


| nombre_usuario [, ...] } { RESTRICT | CASCADE }
UPDATE | REFERENCES } [, ...] [ ( columna [, ...] ) ]
| nombre_usuario [, ...] } { RESTRICT | CASCADE }

S tASRT JeVEOLS NKNKEOJEOUDPQS RTCJHKUWVHKqbHKVpSNKEOJ l

REVOKE GRANT OPTION FOR privilegio [, ...]


ON objeto
FROM { PUBLIC | nombre_usuario [, ...] } { RESTRICT | CASCADE }

eEGJsPQHKUWVESMpUYpJ)pS tAHKCnNKSdS pLC@tAHKVS VTS tASM@S tAS UWLHK SOt_EONbt


HKq!HKNKEO@HKCDEOJ)EOPQHK|PQS VCS
C@Lt<C@JepJspSt
HKCJ l>EO J)E

[WM

S tASNKCJ_VEGL2S NKNKEGJeEGUDP.S RT%C@JeHKUWVHKq!HKVpS NKEOJ l

iCJ_CGEGL2CJ_CJ)HK@NKEOJJ)CU

#FW LS @NKSWIq! HKJsLS

iWm

mgIm

PQCU pUWLC@ PQS tAS PQLEOt<EJ

M
BPQC@NKEGP.PQHKU

BDgIi

r
z

Mii

2rB

L2tAS J)NKS PQHK@U

VCRTHKUWHKC

gH!pJ)EOtAMVSpUYtAHKq!HKNKEO@HKCPQCUYNKSrCPQHK@U

L+

SdpJ)EOtAkdDpJsEGt
kdJ)EdNKCDVSdSMpJ)EOt EOUW

L2CUWPQEOJpJ)EOtAdpEGVEt<EGqbCPQS tEOJ)LEdtAHKq!HKNKEO@HKCEGUPQS J)PQS VSpJsSUWVCNKSdS NKS!tSrPQNKS q!E}

ml

gHpJ)EOtAVSpUat
HKq!HKNKEO@HKCTPQC@U

L+

SMEOJ)EOPQHK|P.S VCNKSrS NKS @tSPQNKS q!EdmgI

ROLLBACK
Nombre
ROLLBACK

gI

SpJsEGt
kD
pJ)EOtAkDJ)ENKCTVSDSDpJ)EOt bEOUWLC@UWPQEOJdJ)H

p
JsEGt
M
HKUWL2EGUWL2SMtAEGqbCPQS t_EOJ)L2EtAHKqbHKNKEG!HKC@2S NKNKS tAMJ)H
e2

2UWL2EOtAt<pRTLENKS}L2tAS UWJ)S PQP.HKUEOUDPQptAJsC

Synopsis
ROLLBACK [ WORK | TRANSACTION ]

Entrada.
BDHKUW@pUWSWl

Salida.
ABORT
EGUWJsS>EVEGqbpEGNKL2CMJ)H@NKS}CEOtAS PQHKUEOJ_EGFIHKLC@J)SWl

NOTICE: ROLLBACK:
no transaction in progress

gHUWC

S Lt
S UbJsS PQPQHKCUWEOJ_EGUt<C@@t<EOJ)CrSP.LpS NKRTEOUWLE!l

Descripcin

mc]MX(lVEGJ

Z[

S P.ENKSDL2tAS UWJ)S PQPQHK@UaS PQL2pS Nut<C@q!CP.SDo!pEDLCVS JNKS JRTCVHK|PQS PQHKC@UWEGJ

C@tAHK@HKUWS VS JCtNKSRTHKJ)RTSJ)EOS UVEGJsPQS tAL2SV%S J l

Notas
MLHKNKHKPQE

Uu

S tASL2EOtARTHKUWS tpUWS[L2tAS UWJ)S PQP.HKUVE2Ct


RTS[EOFIHKLCJsSbl

mce]dX(lnl

EOJpUJsHKUW

UWHKRTCVEZ

Usage
S t
S[PQS UWPQEONKS t L2CVCJ_NKCJPQS RT@HKCJ

ROLLBACK WORK;

Compatibilidad
SQL92
ghMijkJ)@NKCEOJ)EOPQHK|PQSNKS JVC@J2Ct
RTSJnJ)HK@pHKEOUWL2EGJ

ROLLBACK

PQpSNKo!pHKEOt C@LtAS}CtARTS NKSPQC@RYS L2HK@HKNKHKVSVnEOJeP.CRTNKEOLSWl

ROLLBACK WORK

E
z

SELECT
Nombre
SELECT

eEOPQpEOtASt<EO@HKJ)L2t<CJeVEOJ)VE[pUWSLS @NKSCq!HKJ)L2Sbl
y

Synopsis
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] )
expression [ AS name ] [, ...]
[ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[ FROM table [ alias ] [, ...] ]
[ WHERE condition ]
[ GROUP BY column [, ...] ]
[ HAVING condition [, ...] ]
[ { UNION [ ALL ] | INTERSECT | EXCEPT } select
[ ORDER BY column [ ASC | DESC | USING operator
[ FOR UPDATE [ OF class_name [, ...] ] ]
LIMIT { count | ALL } [ { OFFSET | , } start ]

] ]
]

]
] [, ...] ]

Inputs
expression
mNUWC@RT@t<EVE[pUWS}PQCNKpRTUWS}VE[NKS}LS @NKSCpUWSEGFIt<EGJsHKUl

name
mJ)EOPQHK|PQSC@Lt<CUWC@RT@t<E_S tASpUWSP.CNKpRTUWSCpUWSEGFIt<EOJ)HKUro@pEpLHKNKHKPQENKSPQNK pJ)pNKS

glmJ)L2EUWCRT@t<EYJ)EpLHKNKHK SYtAHKUWP.HKSNKRTEOUWL2EPQCRTCEOLHKo!pEOLSSt
SNKSTPQCNKpRTUWSVE
JsSNKHKVlQmNbUWCRT!t<E}UWCDpEOVEJ)EOtepLHKNKHK S VCEGUNKS JPQNK pJ)pNKS J

DmemrdC

[Bl>gHKUDEGRT@S t<!COpEOVE[J)EOtt<EO2E.t<EOUWPQHKS VCMEOUDPQNK pJspNKSJeM

mM

ml

m
iS}L2S @NKSJsEPQt<EOS[JsCNKS RTEGUWL2ES tASEGJsLSJ)EOJ)HK@UWEOJ_SpL2CRT L2HKPQS RTEGUWL2EVEGJsPQS tALSOVSSN
|UWSNKHK S t NKSRTHKJ)RTSWl

new_table

gIH@JsE}pL2HKNKHKSdNKSPQNK pJ)pNKSB

imWEONbt<EGJspNKLS VCVE}NKSPQCUWJspNKLSMJ)E}S NKRTS PQEOUWSt

EOUCL2tASLS @NKSP.CUEGNIUWC@RT@t<EHKUWVHKPQS VC l<iSL2S @NKSCOEOLHKq!Cr

JsEGt
PQt<EOS VWS

new_table

S pL2CRT LHKP.SRTEOUWL2EMUWCrVEO@EOtAEOFIHKJ)LHKtut<EOq!HKS RTEOUWLESNKSpLHKNKHK S PQHK@UVEEGJ)L2EP.CRTS UW

\X^aAD^%S t
SRT JHKUWCtARTS PQHK@Ul

VC l>C@UWJ)pNKLEEONPQC@RTS UWVCf\

Nota: La declaracin CREATE TABLE AS tambin crear una nueva tabla a partir de la
consulta.

table
mNUWC@RT@t<EVE[pUWS}LS @NKSEGFIHKJ)LEOUWL2ESNKS}o!pEJ)Et<EO|EOtENKSPQNK pJ)pNKS@eMl



alias
dUDUWC@RT@t<ES NKLEOtAUWS L2HKq!C%S t
SNKS}L2S @NKS%tAEGP.EGVE.UWL2E

table

l>gIEpL2HKNKHKS}S tASS @t<EOqHKS t

CEONKHKRTHKUWStS RT@HK EOVS VWEOJeEOUDpUWHKC@UWEGJVEOUWLt<CrVEpUWS}RTHKJsRTS}LS @NKSWl

condition
MUbSEGFIt<EOJ)HKU@CC@NKEGS UWS[o@pEVSPQC@RTCdt<EOJ)pNKL2SVCq!EOt<V%S VEGt<C}CdSNKJsC2Lt<pECt2S NKJ)EO>l
CUWJspNKLENKS}PQNK pJ)pNKS

Dmml

column
mNUWC@RT@t<EVE[pUWS}PQCNKpRTUWS}VE[NKS}LS @NKSWl

select
MUWSVEGP.NKSt
S PQHKUVE[J)EONKEGP.PQHKUn2J)EONKEGP.LbEOFP.EGL2pSGUWVCNKS}PQNK pJ)pNKSM
z

m l

Outputs
eEG!HKJ)L2t<CJ
mNWPQCU pUL2CDPQC@RT%NKEOL2CnVEdt<EG!HKJ)L2t<CJ2|NKS J)uo!pEMt<EOJ)pNKL2SUYVEdNKSMEOJ)EOPQHK|P.SP.HKUYVENKS
P.CUWJ)pNKL2SWl

count
iSPQS UWL2HKVS VnVE[t<EO@HKJ)L2t<CJ|NKS J)WVEOq!pEONKL2CJCtNKS}PQC@UWJ)pNKLSWl

Descripcin

\WX[^VEOq!pEONKq!Et<EO!HKJ)Lt<C@JVE}pUWSCRT J_L2S!NKSJlsiCJPQS UWVHKVSGL2CJSJsEGtJ)EONKEOPQPQHKC@UWSVC@J

f\

J)C@UMS o!pEONKNKCJt<EO@HKJ)L2t<CJuo!pE_PQpRTNKEOUMNKSPQC@UWVHKPQHKUEOJ)EGP.HK|PQS VS_PQCU

DmmJ)Et<EOLC@tAUWS ULC@VCJ_NKCJt<EG!HKJ)L2t<CJ l>2CUWJspNKLE

ts

e .@A@

M

memQJ)HJsE_CRTHKL2E
l

rt<EGV%EOLEOtARTHKUWS VCVEOq!C@NK

`DAf^ADX[^YEONKHKRTHKUWSt<EO@HKJ)L2t<CJuVpNKHKPQS VCJVEONtAEGJ)pNKLS VWC l<]

q!EOt
[L2CVCJNKCJ_t<EO@HKJ)L2t<CJsOo!pEPQpRT%NKS UDP.CUDNKS}PQC@UWJ)pNKL2SHKUbP.NKp@EOUWVCrNKC@J_VpNKHKPQS VC@J l
`DAf^ADX[^DEONKHKRTHKUWSdNKCJtAEG!HKJ)LtACJo!pE}PQpRTNKEOUYPQCUYL2CVS JNKS JEOFt<EJ)HKCUWEOJ[EOJ)EOPQHK
|P.S VSOJ)!RTS UWLEOUWHKEOUWVCJ)C@NKS RYEOUWL2ErEGN%t
HKRYEOtt<EG!HKJ)L2t<CDVEdP.S VSrPQC@U pUWLCYVEMVpNKHKPQS VCJ l
BDCL2Eo!pEDUWCJ)EpEGVEDt<EOVWEOPQHKtPQp N J)EOtAnEGN tAHKRTEOtt<EO@HKJsLt<C@SnRTEGUWC@Jdo!pEDJsEpL2HKNKHK
PQEdDZ[`D\Z

x~St
SdS J)EO@pt
S to!pEdEGNbt<EO@HKJsLt<CEOJ)EOS VCEGJEONbo@pEEO2EOPQLHKqbSRTEOUWL2ES %S t<EPQE
c

tAHKRTEOt<C l>CtEAEGRTNKC

SELECT DISTINCT ON (location) location, time, report


FROM weatherReports
ORDER BY location, time DESC;

t<EOP)pEOt<EGS}EON!t<EGC@tAL2EV
E[L2HKEORTC~DEGS L
PQS L2HKCUW>lQEGtACrJ)HbUWCJ)E
VEd NKCJqbS NKCt<EOJ[VEM2EOP
2EOP

EGtt<EOCt
L%RTJt<EOPQHKEOUWLES tAS}PQS VS}NKC@PQS PQHKU2NKC

p@HKEGt
S}pLHKNKHK S VCM

m
%S t
S2Ct
SGteEON@CtAVEOUnVEOJ)P.EGUWVEOUWLE
z
SMS tASrPQS VSrNKCPQS PQHK@UWJsE
p@HKEGJsEGUt<EOP>pEOtAS VCtAEGC@tALEOJVEMpUWS

SHKRTt<EOVEGPQHK!NKES tASPQS VSNKCPQS PQHK@Ul



iSPQNK pJ)pNKSrdDYEGt
RTHKLESN pJ)pS tAHKC}VHKq!HKVHKtpUWSL2S @NKSPQCUWP.EGL2pS NKRTEGUWL2E_EOUr!t<p

 Q@A!5[

CJl>2C@UWJ)pNKL2E

iSP.NKpJspNKSd

u

[2BDEGJs%EOPQHK|PQSpUWSrLS @NKSP.CUY@t<pC@JVEGt
HKq!S VS}VE}NKSdEONKHKRTHKUWS PQHKUYVE

!t<pCJVEONOt<EOJ)pNKLS VC}VE_NKSPQNK pJ)pNKStAEGqbHKSRTEOUWLEeEOJ)EOPQHK|P.S VSWl2C@UbJspNKLE

2M

r

 Q@A!5

iSP.NKpJspNKSdM

mEOtARTHKL2E}S NWpJ)pS tAHKCEOJ)EOPQHK|P.SteJsH!o!pHKEOt<E}NKC@Jt<EO@HKJ)L2t<CJCtAVEOUWS


z
VCJVERTS UWEOtASS J)PQEOUWVEOUWLECVEOJ)PQEOUWVEGUWL2EpL2HKNKHKS UWVCNKCJCEOtAS VC@t<EGJ_VERTCVC gI

 Q!<!

mgIrl
2CUWJ)pNKL2E
z

u

mNC@EGt
SVC@tMBD2MB%EOt
RTHKLEEOtARTHKLEo!pE}EONt<EOJ)pNKLS VCrJsEGS}pUWSdPQCNKEOPQPQHK@UVEt<EO@HKJ)L2t<CJ
VEOq!pEONKLC@JCtNKS JePQC@UWJ)pNKLS J_HKUWq!CNKpP.tAS VS J l>2C@UWJ)pNKL2E

mN CEOtAS VCt[2B

ts

e .@A@2M

megIm

e

m

mN@C@EGt
S VC@tem

 Q@A@rM

NKEVSNKCJdt<EO@HKJsLt<C@JPQCRTpUWEOJdSDS RT@S JPQC@UWJ)pNKLS J lI2CUWJspNKLE

l
NKEVSdNKCJt<EO@HKJsLt<C@JVEOq!pEONKL2CJCteNKSt
HKRTEGt
SPQCUWJspNKLSro!pE}UWCDJ)E

[

EOUWPQpEOUWLt
S UEGUDNKSJ)EO!pUWVS}PQCUWJ)pNKL2SWl)2CUWJ)pNKL2E  Q!<!5

iSP.NKpJspNKSD!MM

z
t<EO@HKJsLt<C@JJ)EONKEOPQPQHKCUWS VC@J l

iSP.NKpJspNKSMi

mEGt
RTHKLESDgImimW

t<EOSGNKHK S tpUa!NKCo!pEOCEOFPQNKpJsHKq!CTVENKCJ

EOtARTHKLEdVEOq!CNKqbEGteS NbpJ)pS tAHKCDpUYJ)p@PQCU pUWLCVENKCJ[t<EO!HKJ)Lt<C@Jt<C

VpPQHKVC@JCtNKS}PQCUWJspNKLSWl)2CUWJ)pNKLE

 Q!<!

MJ)LEOVVEO@ELEOUWEOt[EOtARTHKJsCVEt<EOS NKHKGS tgmim%

JsC@t<EpUWSL2S!NKSDS tASDC@VEGtNKEOEOtJ)pJ

kMmld\>l

q!S NKC@t<E.J ls2C@UWJ)pNKLENKS J_VEGPQNKS t


SGPQHKC@UWEGJDZ[]dD^Z[\

Clusula WHERE
iSPQC@UbVHKP.HKUDC@%P.HKCUWS N

DmmnL2HKEGUWENKS}2C@tARTS@EOUWEOtAS N

WHERE boolean_expr

boolean_expr

@C@CNKEOS UWCul)mURTpP

 pEOVEPQCUWJsHKJ)LHKteVE}P.pS NKo@pHKEOtEOFt<EOJ)HKUnPQp!CtAEGJspNKLS VCJ)EOSpUnqbS NKCt


C@J_PQS JsCJ) EOJ)L2SEGFIt<EGJsHKUDJ)EOt
b

expr cond_op expr


C

log_op expr
VCUWVE
PQC@RTC
VE!

pEOVE}J)EGtpUWCVE!c
 
 
 
 Y
 C@t
 pUnCEOtAS VCtPQCUWVHKP.HKCUWS N
cond_op
ii BD!O2BD
pEGVEJ)EOtupUWC
Oi2[mCrCEOtAS VCtVEG|UWHKVCMNKCP.SNKRTEOUWL2EGO
log_op
IrBD
l.iSMPQCRTS tAS PQHK@UYVEOq!pEGNKqbE
MmTq!EOt<VSGVEOt<CCD igIm22S NKJ)C

B
z
L2CVS JNKS JeHKUWJ)L2S UWPQHKS JeJ)EOt
UVEOJ)PQS t
LS VWS J_J)HNKSEOFt<EOJ)HKUDtAEGJspNKLS2S NKJ)SWl

Clusula GROUP BY
eMMnEOJ)EOPQHK|P.S[pUWS}L2S @NKS[PQC@UD@tApCJeVEOtAHKqbSV%SVENKSS NKHKPQS PQHKUVE[EOJ)LSPQNK pJ)p
NKSW

GROUP BY column [, ...]

"

eMMaP.CUWVEOUWJ)S tAEOUpUWSJ)CNKS|NKSLCVC@JS o!pEONKNKCJt<EG!HKJ)L2t<CJo@pErP.CRTS tALS UTNKC@J


RT
HKJ)RTC@Jq!S NKCt<EOJrS tASYNKS JPQC@NKpRTUWSJS @t<pS VS J liS Jr2pUWPQHKCUWEOJVES !t<EO@SGP.HKUWJsHeNKS J

p@HKEOtAS JsCUYPQCRTpL2S VS JSL2tAS q!OJ_VEL2CVS JNKSJ|NKS Jo!pE}PQC@UW2Ct


RTSUPQS VS}@tAp%C@It<C@
VpPQHKEOUWVCpUTqbS NC@tJ)EOS tAS VCDCtPQS VSMpUWCVEMNKCJ!t<pCJ2RTHKEOUWLtAS J[o!pEMJ)HKUeMM
!QpUWS2pUWP.HKUVES!t<E.!SP.HKU%tACVpPQEepUrJ)CNKCdqbS NKCtWP.CRTpLS VCSL2tAS q!OJuVEeL2CVS JuNKS J
|NKS JJ)EONKEOPQPQHKC@UWSVS J))l)pS UWVCeMdEOJ)L2dt<EOJ)EOUWLEOUWCEOJq! NKHKVC

S PQEOtet<EGEO t<EOUWPQHKS

S}PQC@NKpRTUS JUWCS @t<pS VSGJEOFPQEOLCVEOUWLt<CVE2pUWP.HKCUWEOJVE}S!t<EO@SGP.HKUW@So!pE

S @t
S

RT JVEpUDC@J)HK@NKEq!S NKCtVEtAEGL2Ct
UbCrS tASpUWSPQCNKpRTUWSUWCS @t<pS VSWl

Clusula HAVING
iSPQC@UbVHKP.HKUDC@%P.HKCUWS N@

[2BDxL2HKEGUWENKS2C@tARTS}@EOUWEOtAS N

HAVING cond_expr
VCUWVE
eml

cond_expr

PQpRTNKENKSJRTHJsRTS JePQC@UWVHKP.HKCUWEOJo!pE[NKSJEOJ)EOPQHK|P.S VS JS tAS

Dm

[2BDEGJsEGPQHK|PQSpUWSrLS @NKSP.CUY@t<p%C@JVEGt
HKq!S VSVE}NKSMEGNKHKRTHKUWS PQHK@UVE@t<pCJsVEON

t<EOJ)pNKL2S VWCVENKSPQNK pJ)pNKSt<EOq!HKS RTEOUbL2EEOJ)EOPQHK|PQS VSOo!pEUWCPQpRTNKEOUPQCU


S VSDPQC@NKpRTUWSYt<EGEOt<EOUWPQHKS VSDEOU

cond_expr

VEO@EtAEG2EtAHKtAJsEDt<EOPQHKJsSRTEOUWL2E2JsHKUSRT@HK

eEGVS V%EGJsSpUWSDPQC@NKpRTUSVE@t<cond_expr
pC@%SRTEGUWC@Jdo!pENKSt<EGEOt<EOUWPQHKSS S t<E. PQSVEOUWL2t<CYVE

pUWS2pUWP.HKUVE[S @t<EO@SOPQHKUl

Clusula ORDER BY
ORDER BY column [ ASC | DESC ] [, ...]

column

pEGVE[J)EOtL2S UWLCEGNUWC@RT@t<EVE[pUWS}PQCNKpRTUWS}P.CRTCpUDUWRTEOt<CrC@t<VHKUWS Nl

iCJ[UbRTEGt<C@J[CtAVHKUWS NKEOJ

S PQEOUT
t<EO2E.t<EOUWPQHKSrSMNKSrCJsHKPQHKUVEdHK o@pHKEGt<VSMSVEOt<EP

PQC@NKpRTUWSWlmJ)L2SDP.St
S PQLEtAKJ)LHKP.S

S uVEdNKS

S PQEC@J)HK@NKEDVEO|UWHKt}pUC@t<VEOU@S J)S VCTEOUpUWSDPQC@NKpRTUWS

o!pEDUWCaL2HKEGUWEDpUUWCRT@tAEDS VEOPQpSGVC lmJsLCUWpUWP.SnEOJMS @JsCNKpLS RTEOUWLEDUWEOPQEOJ)S tAHKC!Sno!pE


J)HKEORTt<EeEOJCJ)HK@NKESJsHK@UWS tpUMUWCRT@tAESpUWSP.CNKpRTUWSP.SNKP.pNKS VSpLHKNKHK S UWVC}NKSP.NK pJ)pNKS

gIOCtEA
l

SELECT title, date_prod + 1 AS newlen FROM films ORDER BY newlen;

B 

S tAL2HKtVENKSq!EOtAJsHKU Wl VE_CJ)L2@t<EOghMiEOJLS RT@HKOUrC@J)HK@NKECt<VEOUWSt2QPQCUM


m!
z
J)EO!UrEO
Ft<EJ)HKCUWEOJS tA@HKL2tAS tAHKSOJ)HKUWP.NKp@EOUWVCPQS RTCJo!pEUWCdS SGt<EOPQEOUrEGUEON t<EOJ)pNKL2S VWCVE
gmim%

l>C@tNKCL2SUWL2CNKS}J)HK!pHKEOUbL2EVEGP.NKS tAS P)HKUEOJeNKEO!SN

SELECT name FROM distributors ORDER BY code;

mg
2VEOJ)PQEOUWVEGUWL2EOuC g
2S J)
z
PQEOUWVEOUWLEONKpEO@CVEONUWCRT@tAEnVEYPQS VSP.CNKpRTUWSTEOUNKSYPQNK pJspNKSYM
m
 lgHeUWCJ)E
z
r%P.HKCUWS NKRTEGUWL2EMpUWSMpEOVES !t<EG!SGtNKSMS NKS @tASMPQNKS q!E

EOJ)EOPQHK|PQS @J)ErS J)pRYE

gIVEr2Ct
RTS%tAEGVEOLEOtARTHKUWS VS@l

PQS t
J)E}pUTUWC@RT@t<EVEdCEOtAS VCteVEC@t<VEOUEOJ)EOPQK|PQC l

NKL2EGt
UWSL2HKq!S RTEOUWLEO@pEGVErHKUWVHK

gI

I

EOJEOo!pHKq!S NKEOUWLEMSdMgIB

mgIEGJeEGo!pHKqbSNKEOUWL2E[SMgIB l

Clusula UNION
table_query UNION [ ALL ] table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]

VCUWVE

table_query

EOJ)EOPQHK|P.SPQpS NKo!pHKEGtVEOPQNKS tS PQHKUgImim

J)HKUNKSPQNK pJ)pNKSr

m l

mN@C@EGt
S VC@tMBD2rBEGt
RTHKLEo@pE}EGNbt<EOJ)pNKLS V%CJ)EOSpUW
SPQC@NKEOPQPQHKUVEt<EO@HKJ)L2t<CJVEOq!pEONK
L2CJdCt}NKSJdP.CUWJ)pNKL2S JdHKUWq!CNKpP.tAS VSJliC@JdVCJdgImim

Jdo!pEt<EOt<E.JsEGUWL2S UNKCJdVCJdC@EG

t
SUWVC@J[VHKt<EOPQLC@J[VENKSMBD2rBVEO@EOUTt<CVpPQHKt_EONRTHKJsRTCnUWRTEOt<CVEMPQC@NKpRTUWS J)!nNKS J
PQC@NKpRTUWS JePQC@tAt<EOJ)CUWVHKEOUWLEOJ_VEG@EOUJ)EOt VEL2HKCJeVE[VS LCJ_PQC@RT%S L2HK@NKEGJl
E2Ct
RTSt<EGVEOL2E.tARTHKUWS VS EON!t<EOJ)pNKL2S VCVEdBD2rBUWCPQC@UWLHKEOUWEtAEG!HKJ)LtACJVp%NKHKP.SVC@J
z

SRTEOUWCJ_o@pE}J)EEOJ)EOPQHK|o@pENKS}P.NKpJspNKS
gHJsEpL2HKNKHKS Uq!S t
HKCJC@
EGt
SVC@t<E.JMBD2rB
VEHK o!pHKEGtAVS}SdVEOt<EOP

iil

EOUNKS[RTHKJsRTSVEOPQNKS tAS P.H@UgImim

SWlsBDCL2E}o!pENKSS NKS @tAS}PQNKS q!E

J)E[EOq!S NKS U

iiUWCEOJ!NKC@S NKJsHKEGUWVCS NKHKPQS VWS

J)C@NKS RTEGUWL2ES N%S tVE[L2S!NKSJeVEtAEGJ)pNKLS VWCS PQL2pS Nl

Clusula INTERSECT
table_query INTERSECT table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]

VCUWVE
l

table_query

mNC@
EGt
SVC@tB
im

EOJ)EOPQHK|PQS[PQpS NKo!pHKEGtEOFt<EOJ)HK@UgImimW

J)HKUNKS[PQNK pJspNKSM

m
z

mgIm

NKEVS}NKC@JtAEG!HKJ)LtACJeP.CRTpUWEOJS}SRT@S J_PQCUWJspNKLS J l.iCJVC@JgIm

J[o!pEtAEGt<EJ)EOUWLS UNKC@JC@EGt
S UbVC@JVHKt<EOP)LC@JVEMNKSHKUWL2EOtAJ)EOPQPQHK@UVEO@EOUt<CVpPQHKtEON

RTHKJ)RTCUWRTEOt<CVEPQCNKpRTUWS J) NKS J_PQCNKpRTUWS JPQCt


t<EGJsCUWVHKEOUWLEOJ_VEO@EOUJ)EOtVE[L2HK%C@J_VE
VS LC@JPQC@RT%S L2HK@NKEOJ l

gHeJ)EpLHKNKHK S UqbSt
HKCJCEOtAS VC tAE.JDB
EOq!S NKSOUVEHK o!pHKEOt<VSSVEOt<EOP

megIm

EOUNKSRTHKJ)RTSaVEGPQNKS t
SGPQHK@U

gmim

JsE

S bSRTEGUWC@Jdo!pEJ)EDpL2HKNKHKPQEGUS tAOUWLEOJ)HKJS tASDRYC@VHK|PQS t

EOJ)L2Cul

Clusula EXCEPT
table_query EXCEPT table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]


HcH))()eHHc\ oc ()ox
table_query
h
H\\ x =hH\\HeH\:\ o Q)( HE
Ee o; ;e4H*,&\oHLL*4E,HLcH)



)\\H*HQcQEQH4=)\QE:*Qh)HcHH
 \H$cHp[=o,x*Q \H
;xc^?$HLL*$xo HQcQ ))\ ;o
He H  eH$HH !?Q\e$cm,) "HHcELm\)
Hc,

Clusula LIMIT
LIMIT { count | ALL } [ { OFFSET | , } start ]
OFFSET start


*)HeQQm
QH$H\c,EHe\eH#

Hc*
start
*count
QH[ecLrc,h,Hx(Qp[He\eHpH\\
$%&,HLQ,H{ HLcQUL) \H\\[eceHL^\H
Hc,E=(*c, co*) 
QH 'Q >cHe?QhH\c,
e(Hc) ;;c($?\p( !
QH,(
Hc)oLec\rcHL
c, 4Hr[)QH
p?eHpLecL
omc$%&aH(eH,=U)r  L)
\)x[LecLHc,mQ\)
) \
*,\LQ(
\,Qc+e
)\!
,X,1Q LHc \#& H\c,U&)c,.
- r? c "/\c*
H\\xH$
"H)Q ee
"HcQ
10)HUHe+
"H)Q e
"HcQ$&e+
"H
243c,H
U)\)[HH$Q\\[,)[x p
\ceH65 7 ;HQ=)(,Q)H,$%&a^)m\H

HL^Q*c,!e'eH(Q+)*,)eEec, \H\ *,H>?,H[
H
8,!
\c  *,H>H)HL\HQ,&H\c,: 9=H 
\eH#$
%;,<

= =e 4 
 4 *,H>?,HeLL
$%&,?
>
==\LcH*)o *a>H[+
\)!
,?H Hc, *
c!
 @
 AH  CBDC
eta E FG  HL
\
 &Q\e$cHcmeL1Hc
>H) \4H? )\&r h c,$$/
\
I;H=E*cH)H)

H,J
H m4eL
K^mHc!
\H)
Q)Q\Qcm4H,e\oHc,
po)c,[\UHL,)Q\ec)x  
HcH)):m)L,(LHmH '),QH,

Uso

(4!\

films

)\m!\

distributors M

SELECT f.title, f.did, d.name, f.date_prod, f.kind


FROM distributors d, films f
WHERE f.did = d.did
title
|did|name
| date_prod|kind
-----------------+--+-----------+-------+------The Third Man
|101|British Lion
|1949-12-23|Drama
The African Queen
|101|British Lion
|1951-08-11|Romantic
Une Femme est une Femme |102|Jean Luc Godard |1961-03-12|Romantic
Vertigo
|103|Paramount
|1958-11-14|Action
Becket
|103|Paramount
|1964-02-03|Drama
48 Hrs
|103|Paramount
|1982-10-22|Action
War and Peace
|104|Mosfilm
|1967-02-12|Drama
West Side Story
|105|United Artists |1961-01-03|Musical
Bananas
|105|United Artists |1971-07-13|Comedy



Yojimbo
|106|Toho
|1961-06-16|Drama
Theres a Girl in my Soup|107|Columbia
|1970-06-11|Comedy
Taxi Driver
|107|Columbia
|1975-05-15|Action
Absence of Malice
|107|Columbia
|1981-11-15|Action
Storia di una donna
|108|Westward
|1970-08-15|Romantic
The King and I
|109|20th Century Fox|1956-08-11|Musical
Das Boot
|110|Bavaria Atelier |1981-11-11|Drama
Bed Knobs and Broomsticks|111|Walt Disney
|
|Musical

cQo )
8,*9p\\4QO\\Hc,\
len
cHm)Q
8, 9
kind

SELECT kind, SUM(len) AS total FROM films GROUP BY kind;


kind
|total
-------+---Action
| 07:34
Comedy
| 02:58
Drama
| 14:28
Musical
| 06:42
Romantic | 04:38

cQ*Q
\[\[Q?e=Hco^U)
len
Q
 QLh\Hx(xee[cH$QH\=QPOL
M

kind

SELECT kind, SUM(len) AS total


FROM films
GROUP BY kind
HAVING SUM(len) < INTERVAL 5 hour;
kind
|total
-------+---Comedy
| 02:58
Romantic | 04:38

4ceHHE,XHQ \EQQ$"H)4UH\Hc
eHr(*L)\m=),\=(4cH\)\QR
8
9
name

SELECT * FROM distributors ORDER BY name;


SELECT * FROM distributors ORDER BY 2;
did|name
--+----------109|20th Century Fox
110|Bavaria Atelier
101|British Lion
107|Columbia
102|Jean Luc Godard
113|Luso films
104|Mosfilm
103|Paramount
106|Toho
105|United Artists
111|Walt Disney



112|Warner Bros.
108|Westward

c,E ,XHQ&QLU)\Q&
\HHU(,@ e


Hc,Lem\[Hc,\oeHe*QHQ)\Qdistributors
U,LDS HQ)actors
,!\
mUc(\HHm):
H: 'e[4@ \(*?4
T&c(Q,
-

distributors:
did|name
--+-------108|Westward
111|Walt Disney
112|Warner Bros.
...

actors:
id|name
-+--------1|Woody Allen
2|Warren Beatty
3|Walter Matthau
...

SELECT distributors.name
FROM
distributors
WHERE distributors.name LIKE W%
UNION
SELECT actors.name
FROM
actors
WHERE actors.name LIKE W%
name
--------Walt Disney
Walter Matthau
Warner Bros.
Warren Beatty
Westward
Woody Allen

Compatibilidad
Extensiones

+U\ceHQVUQ,E&)cXW Y6Z[]\$&Uc, &)LcH 'c,)V*a


U\cHLe!
\F
\He ,F
ULe(
\o Uc,4+
U^ KH
M

SELECT distributors.* WHERE name = Westwood;


did|name
--+----------108|Westward

SQL92



Clusula SELECT
1H\LK$_!`!&!\I#)eVU)U\bacTLa(HU,QH,mHc)\\V
 \?
UQ, \ !
*,HcH ce:*!
\+U   !
\$U), U/\+
U\ceH[H
eHr*d
\xHc=!
\L=)
\$UcxH
U.
\LE U\Qe
\ \ \$U(*L*
, ')Q
\H,Hc \ \!
\f\+
UEeU \H^?o ,Hc UHE.
\e
H$Hc[ U\H U
Na$m&D6UHxL,6\(LK$_@` Q+U\ UU\=:Um$%&,XU==\;

Clusula UNION
^/\QLK$_@`g3,D
Nh 

!\Q^*c!\)U\orx;m

table_query UNION [ALL]


[CORRESPONDING [BY (column [,...])]]
table_query

)coxrmNh

 UU=U+U\L!\+U+U\L

SELECT INTO
Nombre
SELECT INTO

oHHe4!\\o4,!\QUeQ\4HH

Synopsis
SELECT [ ALL | DISTINCT [ ON ( expresin [, ...] ) ] ]
expresin [ AS nombre ] [, ...]
[ INTO [ TEMPORARY | TEMP ] [ TABLE ] nueva_tabla ]
[ FROM tabla [ alias ] [, ...] ]
[ WHERE condicin ]
[ GROUP BY columna [, ...] ]
[ HAVING condicinn [, ...] ]
[ { UNION [ ALL ] | INTERSECT | EXCEPT } select ]
[ ORDER BY columna [ ASC | DESC | USING operador ] [, ...] ]
[ FOR UPDATE [ OF Nombre_de_clase [, ...] ] ]
LIMIT { contador | ALL } [ { OFFSET | , } incio ]

Inputs

LU(\$U=U)Q+Ud\[H@\[cF\Hc)\$H\H(H



i$ i#j

Outputs

LU(\$U=U)Q+Ud\[c\c6\)L\HmH\Ho

i$ idj

Descripcin

H[He(!\
 o($
\ H!\sUN
\ (\H $' *QH
k$l$m$ln6oqp ro Z
,t
 Hc,eH  L*mUD\U\m#!\cH,tHCU^cHLQm)eH
eH u\ovK

Nota: CREATE TABLE AS es funcionalmente equivalente al comando SELECT INTO.

SET
Nombre
SET

-w=x ,XOyL.z,CU({#\$zoxz.y+U|\$zFz ,^zt}*+} xVy (O{z{x\

Synopsis
SET variable { TO | = } { value | DEFAULT }
SET TIME ZONE { timezone | LOCAL | DEFAULT }
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }

Inputs (Valores de entrada)


variable
.z,CUeU\e+zF{z[e+xzHCz(L,X
value
 +zHU ?U\d\+zH(yL.zHCU LzFy+z\$z[^xxzH\?U
$
yLOz{y+z} x+}*
DEFAULT
e+
zF{z6\$zHe+
zH
z6zH(
y.
z,cUQ{c&?U\$z6\$z*z})^U
!{rex@\z~{#y+U {x\z{ U({=eUCz{dy+zHL.xx\+U {#{:U
M

@

o$,$m$$moNh$T%1
=x ,X4O} U \$x+})!} x\y6}*xzz{xQ \z

$U {#yL.zHCU {b{U

value

= x ,XO} U(\$x+}*!} x\$zF})xzHzQ^x e^z[

})!\6\$z z6zt{{U y+UL,!\Fy+U\zH({zHLJx\$U

M value

O} U(\$x$})!} xz{y+z} x

${U(y+}xD{:UURz{:^xx!\z#{x@zH@{:U(y+U^z%&3$  |{zx^U\ xO\L^z#zH@y!{U


\$z6} U\\!
} x
zHmO
} U\
{c,+
} } x\V
\$z(+
U({c,\C z{
z;^\z
= x ,XD
zH
z{c x U\$zC zyC z{zH!
}x)
\$zQ*z} >LU TN*zt}),4
*ULQU\+zO{cx\!Lz
eU({#}*!{U({y $zt\$z(!*z})HhQx^zH yCzH,@}x\$z(Qz,L!\
a

^xxO*z} !{duUL!{\$z4z{cxUDa! 7


vK
^xxO*z} !{duUL!{\$z4z{cxUL!})z>La\Cz{
$U({c,\Cz{
^xxOzHv*UQU,L!\$x} xU\ \+z(+U {ceCz{
CU y+zH
^xxO\$\>Q<>L uyL[4Czyczt{zH,@}xm."H x}*O\+z(!{d*z} !{
U\CU(y+zH

^xx4Q<>L\$\>L uyL[4Czyczt{zH,@}xm."H x}*O\+z(!{d*z} !{


hRzHLQ

^xxO\$\ Q  |yL[4Czyz{zH,@}xm."H x})Q\$z[!{d*z} !{


3
x\e+zFGU\CU(y+zH

+=@TN3
Czt}*+y+z(U {=?U\Cz{\$zF\+z*z}c^Uu8G3L $U({c,\Cz{G9
Qxx} xx!} x\$zH(*U\LQ^U|\$zoQ*z} Q{zFy+z\$z6@}z
=x ,X
\$U [? x!
\ z4\$z6zH^ U\L
U +
hEN
T;  L
x+
hEN
M To /{z(L,OzVz\. xzHz4\$z[!yx})!}
{z[L
,@ {#*z} !{xQ} UJz} x\
,^zt}*
v
\$UDy+U {cQ!
{c z{x x x
\$UUF
U y+} x
m^z{z
-o -e
Europea
o.
 x
\$U!
{re x@ e zt{#z

src/backend/utils/init/globals.c
!
{r? x!
\ z{#\$z
e+
zF{zFy+
z\$z
}*.
x
{U
globals.c

 U UeCUzt{#/*,{z<:+z
x 
z ;^e
 z4X
3 ;$ta
 
N
T e3;$$hExLTe3;+HLK$NTo$3$!hEd%&TO

!

;$(d$mNh
=x ,X4O} U \$x+})!} x\mQ^x\^zFyLFzH({zHLx\$U\

value
= x ,X4O}U(\$x+})!} x\mQ^x  zFyLFz {zHLx\$U
${QU(y+} x\V{c\Uuzt{c,O\$x{y+Ux\zO{x {zF! xx,DzH {:U(y+U^zF%&3;e )\z6z
y!
{UD\$zF} UeL!
} x\
\$zoO
}U
{c,+
} } x\V
\$z(+
U({eC zt{
$%1$rDm
+U {peUCz{$y+U {x\z{yxx.zt!U\z\$zty+zH\$zHN\$z{c|{:x{c^zHQ?U y+zxU +U+z,zHQ

yU @zm$x/>+{t>x>v!U+zx*U|} U\^xzHz[Fe@{:z4\$zF\^U {d\$z4!U\@{Ux!{


Te+'xzHz(eU({eUCz{r?x\$U {dyLQ!U!{dU x!{
M

;$$
{x4O!U\FU\L xQ\$z(x*U\Lx

+U\L\
{x^4O!U\FU\L xQ\$z(+Ue

CU ysz>;dU\)z
{x^4O!U\FU\L xQ\$z6,,x

+=@TN3
L,X4O!UQU\L xO{c&?UpU }) 8zH;eU\+z[ex@\z4\$zFzH?UU$#9
vxs{zzt{:ysz} x$})U|@U\uUxx?x\! {zHLUL,!\U|hR%18zQ Q! U\ '\$z
{:x{c^ zHQ!
{#zH
})e+
xzH
})!
{:U(9
D{zH\\u{x{1x{[.U({c,L!\U!{L x\!(y+z.x^zL,o|!U|ULxD}U^
{:x1
x{?{x.
xx k$l$o&o#p [ l. Z rl \$z4v
K$
_!` R
y!
\O
})
z4
T)
z{{ U
|
*U\LQ^ U4^ zHL x
U4$
=T3u
yLQ z
zH?
} U\.
y  x x x\@ \} U\L
K$
_@`
vx(e x!\z\$z?zULU+hE$g{:zL,6zHuz. xzH^z?\+zo!yx})!} xu\$z|}*xz
z|\!
{c!
\$U)z  x yq
8zH
z:.
xz zu\$zH$
*,C U\^ zH
\$9e x y^v
,XL$ UQ^ x}*.
zH z
$%1$
x
m&;? U\
\$z(+
hE$
\L z4zHLe+
z6\$z(O
} U
zH1
x\
#TNmLT=$aa$Te,$(
=x ,XOzHxzH(\$z(!x{c.xzUuy (,L{c!} } x\m!})

x$T

o%;%&,:

@
{F} U
{!
{O\+zU,L
{c!
} } x\^!
})zzHq{c\U!{[!{zH\@\{Q8} UQ.x,
^z\$9ozt{u\$zXzH.ysz.} U{ r$T o%&%;,zt{uzH=?U\\+z
\+z*z}c^ U
Nota: El estandar SQL92 requiere que se fije el valor de aislamiento de defecto a
SERIALIZABLE.

@

;dT$dT 
!{b} U\{c,@{#\+zo[L{c!} }x zH{cU@{:zeL!\ @{xz{b\$zFy x.zHL

x{c$} } xN%1D8 k$l$m$l$n6oCpCrk$l Y

\+zF{:z4z,z})zFzHzt{{c!} } x\

ol$m$l$o#lLCN$o#lL W l$o#n6On

$d!o

Z9

!E. x"HexU({yL.zH U({x^zHLU {UR\+zU(y^x.x!} x\e+z{:zy+z\+zHz{y+z} x$})

} U\zHv} UQ\$U

k$l$o
M

#TNm%;!ThE+o;
= x ,X4Oz{cxQ!} x/\+zH(U y^x.x!\$U\$zH(} U {czQ\$z[Oy xO\$z6\$x{:} Uz'\[Uu{zH

}*+z}x.zHz
{:zt}*+z}x

+{:UN{z.x\$z?} U.UU.xyUN\$z1} U {c^z?\$zoz}),L6\$zyx

float8
=x ,XQ
zH1}U({cz4\$z$!} } z{UzH^UxU[y x(eUy U$U,^z6zt{:y+z
} x+
})!
\$U
o+3$3E+o
= x ,XR
z{c xQ@
}x#\+zRLRzH U y x.x!\+U\#\$z} U({^zO\$zQyCU } z{c}*@\4,+yN\
^z#g} U{c ${cU&{z.x\$zX}U.U/g*,L!} }x\$zH}U({cz)\$z#zt}*L
{:zt}*+
z
}xv
\$z(O
y x

float8
= x ,.
zH#} U {c^zX\$zXy U(} z{U\$z#$3y+U,+yxeU\N\$z/\$zXyU$U,^z
zt{:ysz} x$
})!
\$U
o+3@mdH$3$
= x ,X4Oz{cxQ!} x&\+zO?FzH(U y^x.x!\$Ub{U(\CzFzH(} U {czQ\$z4yCU } z{c})!\+y

\$zHs'\+x}zD\L^zzH+yCU(} z{c!\$UV\$zg\ x\$UV\$zH+'\$x} zD8x\$zHu{})9


}U.UUO*,L!} }x/\$zv}U({czF\$z([z}),LQ{z})+zH} x(\$z6y x

vz)x\$z

float8
=x ,XX
zHb} U({cz\$zo+3\$zy U(} z{c!\Uy+UE+y/\+z'\+x}zmheUO\+zy^U
+U\^ zFz{y+z} x+
}*@ \$U
o+3dTo E#
= x ,Rz{cxQ!} xe+zOLzU(yx)x!\$U#\$zHJ} U({czO\$zOyCU } z{c#}*@\RU y+z!\$U

zH$Q})+{cQS

r ${cU{z(.x\$z4}U.UUF*aL!} } x\\$zv} U {cz4\$z($!} } z{U

{:zt}*+z}x;Oy x

float8
= x ,Xz4} U({czF\$zo+3y 4yCU(}zt{})!\4U(y+zHL!\$Up;?U\e\$z6y ^U$U,^z
zt{:ysz} x$
})!
\$U

!

$= =e$($4T

$@x

= x ,zt{cxQ!} xe+zOLzHU y x.x!\+U\#{U(\ zQz?,Q!Uz*z})^xJU\$z4N}*@}"

zHq\$x{}UX8zt{Q\$zt}x^euy+UC}xq\$z})!} "zHg\$x{}UX\$zH+ zHze+z|{:z ^xx!\


y+U\:U({r$} zHCU({b\$z4\U({b\$zo+U({c,\Cz{9

.zHz6zHy+xz@{#\$z4OF

${cU{:z.x\$z?zHy x!{b\$z?\$x{:} U(HUQ

float8
=x ,XQ
zH,Q@UDz{c^xQ!\$UN\$zo6})!} "4zH|zH;eU\e\$z?yU$Uz4z{y+z} x+}*
\+U
$T $;$K4TO
! xxOUx! xxNze+{Uuy+UdzH yx+})!\$Ud\$z[^xy+U({?\$zQyz{\$zF\Lx\$UD{zH
y x.
x
} U.
y zH.
zH^ z( U({#\L x\$U({d{zt}*+
zHJ
}x zt{@y+zHC U
8UDzt{by+U {x\ zF{c+
\$z{c!
}) xe
\$U/zt{Ue x!
\ zR{z\+x{!
\+zs
y
x$
})!
\$U
\$z^ x x=
UX\+zNzH U({F{:x
\$x{:ysU\
zF\$z4U\C UU.
"H^ U(\$UU^ x x!
\ z9

}*+z}x

D
! xx,OzH;+{Uu\$z4\ x\$U({d{:zt}*+z}xz{8,eU\+z6\$z*z})^U 9

D= =
,! xxRz+{:UD\$z6\Lx\+U {#{z})$z} xz{

$T $@mr4T
! xxNUx! xx,NzHe${Uy+U#zHyx+}*@\$U\b\$zE^xy+U({?\$zQyzt{?\$zQ\ x\$Uu\+z

'\$x} z{

D
! xx,OzH;+{Uu\$z4\ x\$U({d\$z6'\+x}zt{8,eU\$z4\$z*z})U(9

D= =
,! xxRz+{:UD\$z6\Lx\+U {#\$z6'\$x}zt{

$T $$a4T
 x x|
U/x@xx,|zH${UVy+U?zHsy x+}*!\+U\\$zExy+U({^xy+U({6\$zNyzt{FysU\\
!
x\$U$a
D
! xx,OzH;+{Uu\$z4\ x\$U({r$a8aeU\$z6\$z*zt}*^U 9

D= =
,! xxRz+{:UD\$z6\Lx\+U {x$a

$T $;p

! xxXUx@xx,XzHh${Ugy+URzHby x+}*!\+U\Qy!{U({D\+zVU \$z!}x;zHLy '} x,

8UOz{y+U({x\z?{c+y x.x$y+U$}U.yzUE!{UC\$zH!} xUz{zLyxx!{ty+zHCU4L,X\$URzH

@

D= =uzt{e x\zF\$x{c!\$zvyx+})!\$U\+z(+{chUD}*\$U^xzHzFU,CU."H^U \$U


 x x!
\ z 9
D
! xx,OzH;+{Uu\$z4U\C\$z!} xU\z{d8,eU\$zF\+z*z}c^U 9

D= =
,! xxRz+{:UD\$z6UC\$zH!} xUz{

$T $@m 
! xxQUDx@xx,QzH+{:UDy+Uzvyx+}*@\$U\e\$z?yz{d\$ze,U x\$z?e+})z(x\
y x.
z?
ysU\
} U\.
y z U!
{,^U(x
{F\$zN\+
}) z
x\@ \$U vy+zHC Umv
,X
8U/zt{Fy+U({x\ z{c+
zH
==Xz{c,? x!
\ zO\$x{c!
\$zEs
y
x+
})!
\$U
\$z^ x x=
UX\$zRzH U({F{x+\$x{y+U
z
\$z6U,C
UU.
" U(\$U(9

\$U

D
! xx,OzH;+{Uu\$z,^U(x{\+z6\+}*z[x\!\$U8,?U\$z6\$zt*zt}*^U(9

D= =
,{! xx,Oz\+{U|\+zb,^U(x{\$z4\+}*z[x\!\$U

$T $@%/dhE$,
 x x,Q
UDx
! xx,RzH+{U|ysU\zH(yx+}*@\$U\\$z6yz{\+z[xy+UDazH!} z6x^zHC})
!
!\$U(a$8a.zz,U(x9
D
! xx,OzH;+{Uu\$z4zH!} z{dx^zHC}*!\$U({#8,eU\$z4\$z*z})^U 9

D= =
,! xxRz+{:UD\$z6zH@}zt{x^zHC})\+U {

$T $

T

X

! xx,/Ux! xx)zHr+{:Uy+URzHdyx$})!\$UO\$zVyzt{D\+z&xy+UzH!} zV!{

8@{:!,U(x9

D
! xx,OzH;+{Uu\$z4zH!} z{d!{8,?U\\$zF\$z*zt}cU(9

D= =
,! xxRz+{:UD\$z6zH@}zt{!{

hE$K
=x ,XOzH(y+UC}z,,z6\$zo+{:U|\$zH; U\ x.U z"H x}U\$zH(U(y^x.x!\$U

D
 x x,V
zHh Ux.U zH"x} Ug\$zHU(y^x.x!\$UQyx{c,+} } xU\zt{|} U
!
!\!{dUUQ@{ 8,${c^z6z{x,.x"zH?U\\$z6\$zt*zt}*^U+=@TN3;$9



D

#
LUQm \.zU.zzHCU)y ! xx6zp U\ x.U zH"x} U.yLx{c
+
}} xU
z{#}U
UUQ@
{=!
\!
{dzHmQ
} U\
{c
#

D= =
,! xxRzU x,.UzHJ"Hx} UD\$zH(U y x.x!\+U\

ez?zHL})!y+',UN{U \CzhE$K\$zFhE+'F\$zH U\Q!\$U\+y4U(\zHz:Q!{bx*U\

Q!} x\{U \Cz(FU y^x.x!} x/\$zoO}U{c,

vx4e x\zQ\$z6zULU$$hRhE$K{z[L,XNzzH. xzH^zF\$z[+{cxU|\$z(V}*xz


zV\!
{c!
\+Ugz x y 
 x y^ U\Q^ x}).
zH^ zL
,X
hE$
K e U\O
\$z+
hRhE$
K
\?
z6z;Le+
z4\$z(O
} U\
zL
x
[LK

D
L$
 RHG
 8,yx.xG!\$Ud\$z4?U\{cD= x ,@\$Uy+U\xz9z?E

yx+}*@\$U\\$z[O} U{4O} U\zHLxhe+zH@{} U{!{})+\!{})+{c!{dS


x/x})+\&Q+} !{d})+{c!{=|Tm8,,z{d}U.U|aS r/8,! Tm $`@9
g
8,!
$`6Tm
 +!9 JJ a9z$Q
} U\
{c,F
3,D
 $
{c z()
zHU(\$Uy+z\$z?{:zhQ!{rL
y+x\$UEe+
zo6
x.
y zH.
z,!
} xu
\$z\$z*z})^ U ~y+zHC UE
U
z} z{c x.
zH^ z?y U(\+
} z?z@ }*H
.zH zNzH.
x{c.
U#C zt{!
\$U((y+
z{c^ U&e+
zN3,D
x.
y '^ x,)
zH z!
!
\$zE|
})
{;oN
,;$
mo<
y
zH x.
x4!
{!
{C z{c,^ z{e+
zV{zHf
x\$zH^ x})!
{
[L
K
{:z x x4
! x.
zH^ z4})
\$UN{zo@ e ,XF
} U\u
y U(\+
}) U({} U.
UD%&x})C U\L
U *,
T} } z{{:He+
z[ xz
\$zHm
zH
zHLp!
{d}U
{c,!
{\$z6z{cQ
*U\LQ

D
! xx,Oz{cQU y x.x@}x

D= =
,! xxRzt{c,OU(yx.x!}x8,?U\\$z6\$zt*z})U(9

+=@TN3
e+x?zHz[Fz{y+z} x+}*

k$l$ok$

Z+GZW W

p Ux.Uq[LK{:z xx!\Vy+UF{zH[! {U,.zzz{zH} xy} U\{c!{


}UQ+
} !{4})+
{c!
{o<
VTmN
Ly+zHC UzH+
U({c,\C z{45 7 XysU {c z xUC z{vz
y
x
}*@
\$U\
z{c,
\:Q
xyO
z{c!
{d}U
{c,!
{} U\LC z}),.
zH^ z

Outputs
SET VARIABLE

%;z{,^zF\$z?+zU{x {z[L,XOzH?U\} U\"H1xU

WARN: Bad value for variable (value)

vx(zHv} UQ\$Uu*,(v,XzH;eUbz{y+z} x+})!\$U



Descripcin
k$l$o

.U(\$x+}*L[GU {dyLH.z,CU({b\$z4} U\L!} x\yLo(e x!\z\zF{z{x\

$U({4eU\Czt{QzHxU6{z|y+z\$zgU(\zzH(^xx\$U)z k$ ZJQU {?U\Cz{Fy+z\$z


\$zH
UJ
z {zr
{c|
{:x!
} x\N
\$z#\+z*z~})^ U4 x x
\$UOY l$k+l$o :UCz{+RyLH)zH,CU({e{UD{zH
{xe zt{(Q@
+{})!
{.
x
+{:})!
{ $\^ z{zoe+
z?zH!
}*.
ysU? U\ ?{:xz.
yC z?{z?z{y+z} x$
})
} U\.
UO
}*!
\+zHF
\$z4}*!
})^ zHC z{:!\$zo.
U \$Ue+
zF{zFzH
} xzHLLQ
zH z4}U.
x!
{#{x.
y z{
k$l$ogo#p [

l)

rl

}). x4!{x\!} x\V\$zF!UQUxO\$z4\$z*z})U\$z[O{z{x

3

{:zExx|yL}). x=U@{:x\!} x.\$zN!U|U
x

{z{x\^LKq{xzH.yCzzH.ysxzD} UQ^?Uxx}xs\$z!{x\!} x\.\$zN!U\U\L x


x{c,+} }x

k$l$o;o#p [

yL[Q{z{x&LK&!}),

Notas

Qx{c,+} } x\
#z$z!{z(

k$

rl

z{=F
zH^ zH
{x/
\$z; zH\ ,^zF\+z(+
U {ceC z{
variable
ZY l+k$l$o y(.U {cU|xx} xxhU({eUCz{r!}),zt{
k$l$o

Uso

=x ,XzH(z{c^xU|\$z[Q*zt}Fa
M

SET DATESTYLE TO ISO;

! xxhE+KyLF} U\{c!{} UVFUUQ!{x,!\@{

SET GEQO ON=4;


=x ,XhE$K

Q{c&?U\\$zF\$z*zt}cU
M

SET GEQO = DEFAULT;


=x ,XpO!UQU x

z  zHz Hx*U\Lx

SET TIME ZONE PST8PDT;


SELECT CURRENT_TIMESTAMP AS ahora;
ahora
--------------1998-03-31 07:41:21-08
=x ,XpO!UQU xQyQ,,x
M

SET TIME ZONE Europe/Rome;


SELECT CURRENT_TIMESTAMP AS ahora;
ahora
--------------1998-03-31 17:41:31+02



Compatibilidad
SQL92

UQ@

zH

z zL
K$
_!`8} U\
zL
} zy+} x
\+z k$l$oXo Y rk+n6odp Z r
variable
|{x1x{Q\$zvK$_!`yL k$l$o<o#p [ l Z rl z{[x zHL.zH^z
\$x*zHCz*ze+zyszHL.
x zu{c\U^fx} U^?U\FzH^zHCU)y$z{y+z} x+}*@}xf\$zU!U
U\L x
p k Z

k$l$o

m$odp Z

rm$l$Nl$m 9

SET TIME ZONE { expresin_de_valor_del_intervalo | LOCAL }

SHOW
Nombre
SHOW

-%1+z{c,LU({y.z,CU({dzHmxzH.ysU|\$z6z ,^zt}*+} x\$z[Q{z{x\

Synopsis
SHOW palabra_clave

Entradas
palabra_clave
ez!
{z4zH(
} UQ\$U
x\ z{


k$l$o

y6U \^zHzHpQ!{dx*U\LQ!} x\V\$zU {=e.zU({#\+x{:y+U

Outputs
NOTICE: variable is value SHOW VARIABLE

%;z{,^z[\$z6{:z4\$zHe+zHz6{xU(\$UuQx\$UD xzH

NOTICE: Unrecognized variable value

%;z{,^z[\$z6{:z4\$zHe+zHz6{x?+zoUuzH1x{^z

NOTICE: Time zone is unknown SHOW VARIABLE

vx!{re x!\z{d\$z6zH^UU $UU+hE$U|zt{\$zHx\!{



Descripcin
k$

.U({c,LL)}UeL!} x\!}),b\$z&y.zHCUzHxz.y+Uf\$zVz ,^zt}*+} x

Z

\LzoF{:zt{:x

Tz{c,!{e xtezt{b{:zz{by+zt\$z!{x\: eUp+{c\$U4\$z})L!}x

Cz{c,s{c eUsy+U+\$zt*zt}cUQ}U4\+z})I!} x\DY


{U\
{zH
{x\ z{[Q!
+{})!
{U.
x
+{}*@ {

Notas
k$

Zwzt{=OzHz{x\\$zHzH\,zF\$z(+U({c,\Cz{

$zH!{z

k+l$o

>vY

l$k$l$o

k$l$o

{:z?y+z\$z

U({yL.zH,CU({EU({peUCz{
l$k$l$o[ $

yL[L,U({=eUCz{d\$z(4ex@\z

Utilizacin

%1$zt{c,LFzH(z{c^xU|\$zF*z} 68

DateStyle

SHOW DateStyle;
NOTICE:DateStyle is Postgres with US (NonEuropean) conventions

%1$zt{c,L[O} U\\@}x\$zH(U(yx.x@\$U\p zH"H^x}UD8

SHOW GEQO;
NOTICE:GEQO is ON

Compatibilidad
SQL92

U|@Ux 

k+

Z\$zHx\$U|zmvK$_!`

TRUNCATE
Nombre
TRUNCATE



-:!} x4,@\

geqo

Synopsis
TRUNCATE [ TABLA ] NOMBRE

Entradas
nombre
U\.\CzF\$z([,!\[,})

Salidas
TRUNCATE

%;z{,^z[CzH^U!\U|{x\,@\QO{x\$UUe!} x!\ O8,}*@\9zH1xU({c.zH^z

Description

Y Nrn6odl C
zH$zJz=L!y+x\.zHz=^U \!{p!{h!{\$z=?(!\ xzHzzH.x{c.Uz*z})^U
e+zuzH l$m+l$o#l y+zHCU:U^ zt} U\LCz>[m,@\Cz{cmQ@{E@y+x\$U ${EQ!{Oz*z})xU.zH
,@
e@
{x\L\$z{
o

Usage

;}):4,!\

tablagrande M

TRUNCATE TABLE tablagrande;

Compatibilidad
SQL92

rn6odl

U|zH1x{czFzLK$_!`

@

UNLISTEN
Nombre
UNLISTEN

Nz,XO\$z6y zt{pz} x\m!{xUx+})!} xU\z{

Synopsis
UNLISTEN { nombre_notif | * }

Entradas
nombre_notif
U\.
\C zF\$zoUx+})!}xVyCzHx.zH^z(CzH x{L!\
*

vzox.y+xLmU(\$U {xU({CzH x{CU {dzHzt{:})+} QyLQz{c^z6\!} z\

Salidas
UNLISTEN

T})+{zF\$z(Cz} x UD\+z(e+z[O\$z})I@}x{zFOz,z}),!\$U

Descripcin
rm$pCk$o#l$r

{:zm+{/yL/ U\LL/ zx{c U

odp W

zH1x{^zH^z

3Nm$,;$})}z

})e+xzHCzH x{c,CUOzLx{c^zHz\$z=?{z{xU!}),!\$z=+U({eCzt{zH4} U\$x} x\|\$z=U\^x$})


} x\

nombre_notif

\$z(Q{z{x&@}*
Nj 

O}U\$x} x#!{czx{} Uua a})} zH4^U \$U({U({CzH x{CU {#aIx{czzHa

} U\^xzHz[O\$x{})+{:xQ!{z^zH{cQ\$z;${Uu\+z

Notas
nombre_clase

m$p k$odl$r


r

odp W [

Uz} z{cx.zHz?Q\$z4{:zpmU.\Cz6\$z?}*!{zo?x\+U yszHCUDy+zt\$z

{zH})\+xzHb})!\$zF8{c, x9ex\Q\$z4!{c,Q@`Q}*!}{zHCzt{#\$z(U

#e@} zH\ U1Q+z{c.zHLCU z{{xx+{^z\!} z#3Nm$as{U \Cz& U1xe+z#U


z{c,
xzHL$z\$xzH\$U.8z{})+} \$U(9 o@\e@} zH\&z,z}),L$^U\Q^x}).zH^z Nr
\+U^ zHL.
x
z
m$p k$odl$r }*
3mCz{c, x} }x\\$z{z\!\zHJz{xUz{zxUCz{R\$z +U({eCzt{: e+z!} 'e+zm

e+
z4
Uu{:zQ} UCzt{:y+U\$xzHLO} U\&4,@eOzX}){Uu\+z 'O{zHzH,Czt}U.x
nombre_clase
!\!te4UD{:zF\!}),.zz

!

Usage

6{c+{:}) x x{z[mCzH x{c,CU|zLx{czz


M

postgres=> LISTEN virtual;


LISTEN
postgres=> NOTIFY virtual;
NOTIFY
ASYNC NOTIFY of virtual from backend pid 12317 received

3(Jzt+zF3Nm$,;${z6Qz,z})!\$U(y+U({^zH xU\Cz{d} UQ\$U({m$=

@\$U {

{zHLux\U

postgres=> UNLISTEN virtual;


UNLISTEN
postgres=> NOTIFY virtual;
NOTIFY
- notice no NOTIFY event is received

Compatibilidad
SQL92

U|zLx{c^z

rm$pCk$o#l+r

z$vK$_!`

UPDATE
Nombre
UPDATE

;+ {cx+z[eUCz{b\$zF} UQ!{z4!\

Synopsis
UPDATE tabla SET columna = expresin [, ...]
[ FROM lista ]
[ WHERE condicin ]

Entradas
table
U\.\CzF\$z(4!\FzLx{c^zHz

@

columna

U\.\CzF\$z(F}UQRzH

tabla

expresin
3Q
zL
yCz{xm?x\QUUeUhF{:z!{x\!\$UU[Q} U\Q
lista
{rFzHz{:xmUz{c,\\+zo+U {ceCz{re+z4y+zHL.xz!ycx}x\$z4} UQ!{
$
\$z6U,L!
{r,!
\@
{zH$O
} U
\$x} x\V
S x
condicin
U
4
{czV})+{cmofyLm\$z{})xy+} xQ!{NzH^zH{cV\$z$V})+{c
S
r

Salidas
UPDATE #

%;z
{ ,^zFU(\ z
x\$U|{x O! x\$UD"Lx^U ({'. UU
CzyCz{zHOzH;.zHCU|\+z[@{
e+zF{x\$UU!})xt\!{ vx zt{x\ 7 x\#4O*a+zo!}),x@\
#

Descripcin
$#o#l

}). x4zH;eUe\$zo6}UQ@{bz{y+z} x+}*@\{dy+Uh^U(\!{!{!{re+z6{cxG{:*,

} zH#N} U\\$x} x.\!\


\!{

LU\.zHz4z} z{xx\+x}*r!{4}UQ!{oe+zR{zH#.U(\$x+}*

[ zt*zHCz>} x!{=4x{c,!{?{z+{c4)x{QR{x,Lx{?\$z i$ idj {zH@1y $zt\$zF{c+ {^x,+x




x} Uz zH.
zH^ Uu\$z[4 x{c,@ 
UD\$zFzH zH.
zU({?UUEx{c,R} U.yzHO}U

x})Q
y+zH^ x}x
Nz z[zzHdy+z.x{U\$zFzt{:}) x xdzHE,!\OyOy+U(\$zH.U \$x+})L!!{' } U\.Uuy+z.x{U
\$z( z})F
\$zF})e+
xzHh,!
\Q
})+
 U {=? UC z{d{zHm.
zH
} xU!
\$U({zHmO
} U\J
\$x}xV
S 
x

Uso

6}). xpQy!\LQaILQ!a+y+UbaILQ^x})!a+zHmO} UQO}*zH U'


M

UPDATE pelculas
SET categora = Dramtica
WHERE categora = Drama;
SELECT * FROM pelculas WHERE categora = Dramtico OR categora = Drama;
code |ttulo
|did|fecha_prod|categora
---+------------+--+-------+-------+---BL101|El tercer hombre |101|1949-12-23|Dramtica
P_302|Becket
|103|1964-02-03|Dramtica
M_401|La paz y la guerra|104|1967-02-12|Dramtica

!

|durac
| 01:44
| 02:28
| 05:57

T_601|Yojimbo
DA101|Das Boot

|106|1961-06-16|Dramtica | 01:50
|110|1981-11-11|Dramtica | 02:29

Compatibilidad
SQL92

vK$_@`F\$zHz(O{xLx{#\$x*zHCzH^z6yL[F}*+{O3T
M

UPDATE tabla SET columna = expresin [, ...]


WHERE CURRENT OF cursor
\$U\$z

cursor

x\$zH^x$})}){U! xz^U

VACUUM
Nombre
VACUUM

$x.y+xQu!x!QQ !{z6\+zF\$^U {r+U {cCz{

Synopsis
VACUUM [ VERBOSE ] [ ANALYZE ] [ tabla ]
VACUUM [ VERBOSE ] ANALYZE [ tabla [ (columna [, ...] ) ] ]

Entrada
(


a.y+ x.zFCzy+U(^z6\$zH^!!\$U\$z6F!})xx\$!\/\$zoJ@}+y+! F} !\$(@

TT

T})
+!xG!F!{dz{c^ !\$'{c^ x}@{b\$z6} U Q
!{#+{!\$!{dy+U(zt U(y^x.x!!\$U(ys!6\$zH^zL.x
!.z =Q!{$z+}xzz#\$z#z ,^zt}^!J}U{+ $@{ezt{^!\$'G{^x} !{+ zty+cz{zH^
N\+x{:y+zt{xX
\$zFU({?\$^ U({?zHV
}@\$O}U(Q
$
{c Rx
*U L.!} xXz{=J@xU {R}+\$U
!|OysU {x xx\$!\/\$zFz ,^zt} $} x
\$z{\$z(
! xU {#y+^ U {

tabla
U\. Cz\$zo! z{y+zt}'G+}???+z?{z4?Cztx!!sz!} + +!z{c\$!
$
z{d!} z U|^ U \$@{!{r^ ! !{

@

columna
x
+
U. Cz/\$z/)} U Q.z{y+zt}'G$} X)!x!! $dz{c\$!Oz{D!} z Uy+!
U(\$!{d!{#}U(Q

!{

Salida
VACUUM

$(}U.\$UDO{:x\+U|!} zy^\+U|uO !{z4\$z6\$^U {#z{c,F{:xz\$U|x.y+x@\$

NOTICE: -Relation tabla-

$(zH} ! z!t\$U|\$z4Czy+U(^z6y+!

tabla

NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0; Tup 1000: Vac
3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188; Re-using: Free/Avail.
Space 586952/586952; EndEmpty/Avail. Pages 0/74. Elapsed 0/0 sec.

$(!x{x{y+@6

tabla

.x{c.

NOTICE: Index indice: Pgina 28; Tuples 1000: Deleted 3000. Elapsed 0/0
sec.

$(!x{x{y+@6/'\$x}z4zH^! Q\$z{c^xU

Descripcin

[w{:xL
zFy+! F\$U({ys U(y+({x U({zHm+
U({
Czt{} U\)
UU.
z\$xU|y+! FCz} .!e!.!} z
.xzH^U !U)x"y+!6Cz} U zt}*^!ex*U L.!} x/y+@6z(U y^x.x!!\+U
bNn6N

bNn6N

[! CzR} !\+D} !{zNzH.D@{:zR\$zR\$U({ x.y+x|U({6 zx{c^ U({6\$z^ {!}} xUz{

uys!{:@\${Q.!})+@xu!{Qz{c!\+'{cx} !{FzHqU {Q} ,!U U {Q\$z+{x{^zH.

!{Fz{c^ !\$'{c^ x}@{


$
.^zHx\$!{Qx}+ zHfztp.zCU.\$zU^+y+z{Rqz:.zCU.\$z|y x!{R!)!}z!\s@{RzH
U(\$!{d!{#} !{:zt{
$Qz,z} +} x\\$z

zH^z6!.z!LQzU(} x\$!\X\$z6F@{:zF\+z6\$
bNn6 [wy+ztx(\$x} .
U({@vy+CU } z{!!{d} U\{+@{\$zv+{+! xU

Notas

$Q !{z6\$z4\$U({d! xzLFz{ztvU t,zH^xJU|\$zv} U\.\$U

n6N

#zt}U.zH\$.U {6+zD@{:zR\$z\$U({4y+x} xy+@s!})xD{zx.y+x!\$D} !\+U(}zNy+!


.^ zH
zF!{Oz{c !\$'G{c x} !{RCz x
H.
z z!}) +!x!@\s!{ v
x
zH.
 !
U(V} U\J
{:+^ 
} +!+xzt.
U.
zH^ U $
@^ x} +!.
z z\$z{y++z{#\$zF} U\
n6 [wy++zt\$zF{zbz ,^z} ^ !\$QzH
y+x!J
} !{z

\$zQzH+
U {c
Czt{?U\$z{y++z{\$zQU( @d#
&
.
zCU\$zQCzH
x{c CU({
y++z\$z{:ztN
) +zH
)x\$z)z.
x xR
q} U
{+ n6N [ $
{c Uf@}*^ +!x!t)
U({u} 
,@
U\
U {\$z{:x{c^ zH.
/} U1 U(\$U({DU({} .
 xU {Cz} xzH^ z{sy+zL.
x^ x
!U(

x@!\$U(F\$z
} U\
{+ @{u\$z+
U({c,
Cz{ ^ U\.
@N!{U.
z,U Cz{D\$z} x{xU\
zt{u!dy+
zt!R@{|} U
{:+^ !{u\$zVU {
+{:+@xU({

!

Uso

$v{x+xzzFz{#z,zH.y+UD\$z6Qz,z} +} x\\$zt } U.\$U


 !{z6\$z6\$
U({d\$zFCzH
Cz{x\

bNn6

[z4! Qz

regresin=> vacuum verbose analyze onek;


NOTICE: -Relation onekNOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0;
Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188;
Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74.
Elapsed 0/0 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Rel onek: Pages: 98 -> 25; Tuple(s) moved: 1000. Elapsed 0/1 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
VACUUM

Compatibilidad
SQL92

U|ztLx{c^z6z(} U\.\$U

n6N

[zHmLK+_!`

!

!

Captulo 15. Aplicaciones


${cNz{4Nx*U(L.!} x\.\$zOCz*zzH} xy+@N!{4!y+x} !} xUz{?Vxx\+!\$z{4\$zO{U y+U(LzR\$z
+U {c
Cz{

createdb

Nombre
createdb

4CzO+zHO !{z6\$z6\$U({=+U({ zvK


-

Synopsis
createdb [ options ] dbname [ descripcion ]

Inputs
@!U({

host
${y+z} x+} Oz\U\. CzQ\$zQU({+8U({.z9s\$zQE.!+xN{:U( CzFR+zRzt{cOz,z} 

\$U({z6

postmaster

y+@!y+U(

port
+{:y+zt}x+} Xzdy++zt^Uo>Laa^zLzH?Uf/zzH{xU\$ztd$} zCU\$z/{U } zH?\$zt
\$U\.
x
xUU(} ! 3
xz/
z } +! 
zt{^ Rz{} $} 
\+Uuy+! OCz} x xb} U\
z
postmaster
LxU
z{

3@+{:zt.z

username

3{+! xU|} U\.UDz(+zF{zF} U\zt}*^

Sg@!y+!{{U C\
=+z !QF+zF{z[z} ztz6y+!{{U C\

z!zt}U
%&+z{c N} U\{+^D+z

8 @}z\$9

createdb

zz zHx!?.UU(\$zNN !{zR\+zR\$U({

@!+xz
UU.+z{c^4x OCz{y++z{c

,N@!U } ^xU\

datadir

z{y+z} x+}QGU } !x!!} xU!zt^xF\$z4O@{:z4\$z6\$^U({#y+@Qzt{^Qx{c@!} xU\\$z6

 !{:z6\$zF\$^U {

${cRz{OU(} !x!!} xU/\+zO@{^! !{\$zt{x{cz.!UuRU } !x!@}xU

\$z6z{c^Q !{z6\$zF\$^U({#zt{:y+zt} x$} !@+zFys+z\$z6{z\$x*zCzH^z

!

,$!z}U(\$x

encoding
${:ysz} x$} |zt$zt{: +zH.u\$z} U(\$x+}!} xUq\$z} ! !})zz{F+zD{z+{:@|} Uqz{cu !{z
\$z6\$^ U {

dbname
${y+z} x+} uzpU. Cz|\$z|@{:zD\+zu\+U({O+zu{z }Cz!\$ $U. zu\$z zD{z

x}UDzH^ z U(\$!{#!{d !{z{d\$z6\$^ U({x+
U({c,
zv
K/
zV
zt{^ Qx
{c@!} xU\ $!U(ysU
U\.
x{xU
z{b} zt$
6 !{z?\$z\$^ U({d} Uu
z.
x{c.
U
U.
 Cz4+z?z1+{+! xUNzHu} +{U
\$zv{x{c
zH.

description
ys}xU
D
!.
zzRz{cUVz{y+z} x+}N.} U\.z! xU+z{z @{:U(} x!\$U} U\XD !{zR\+z
\$
U({r
+zH
.
zH^ zF} zt\$
$!{dU ys}xUz{

@

-h -p -U -W

{U/ys!{:@\${#xzt@.zHz6

-e

! >

Outputs
CREATE DATABASE

$Q !{z6\$z6\+U({*+z6} Czt\$QztLx^U {.zz

createdb: Creacion de la base de datos fallida.


8a+UD\$x} z(^U \+U

createdb: Comentario a la creacion fallida. (La base de datos fue creada.)

} U.
$
zH @xUe>v\+z{} xy+} xUg
y+@ND !{zR\$zN\$ U({4+zUV|y+U(\$x\$U{:zt?} Cz!\$
$?@{:z\$z\$^U {p.x{.6y+U(\$x?! zt+{x\$UN}Czt\$4 ++z\$zt{xx!@$z1} U.\$U
vK n Z[[ l$ro Z rodk$l y+! F} Cz@zFz(} U\.zH^! xU|\$zt{:ys$zt{

vx+@.ztCU(4zHgu} U\\$xG}xUszt$ztCU(4\$zt.U\^U F\$z@{:zD\+zu\+U({Q8 !} zH\$9{z


.U {c^ @\$U $zt!{:z #
@{y+U({x xx\$!\$z{
divQj$iXQj |L| i  !
 > y+@.

Descripcion

} CzR

+zH
N@{:zO\$zR\$^ U {+
U({
zv
K $
+{+! xUV $zRz,z} Nz{c^zN} U\
createdb
.
\$U{zF}UxzLzFzVztvy+CU y+xz! xU\$zFQ !{z6\$z4\$U({
z{NV{:} xyd{zb+zz$ztJzu&} U\.\$U^vK

divQj$i<Qj:|v| i
#
! > TN{:xy++z{;U@m!\$Nz{y+z} x!
{U  Czd} Czt}xU\$zd !{z{$\$z#\$^U {+y+U(+z{c^zdDU\^CU {:.
zHU(\$U({ +{^UO{xex+} +zz
\$z zd{zzH} U !\$UQysU z{:} xyLQ+zN{:ztx\$U(s\$zb@{:z#\+z#\$
U({+z{c z ,^zt}^ 
psql
\$U({z
zHNzU({^{\$z{c^xU 1. xzH } +!+xz+} +! $xzts} U

+ !}xU
y+U s\$z*z}) UF4
! x! z
\$z6zH?U(UD\$x{y+U\x zQy+!
|Ox ztx6* U
z
\
{zF!y+x} ! H
createdb

E z{\$zt?^zL.x!Jx^z !})xU\$z4+U {c, CzHLK

psql

Uso

+!6} zt!eO !{z6\$z6\$U({


$ createdb demo
CREATE DATABASE

!

demo

libpq

^xx!\$Uz({zx\$U(bysU \$z*z})^UD\$zF !{z4\$z6\$^U {


M

$4 zt{:ys$zt{^4z{d[.x{c.Q+z6+ xzt{:zt{zHx\+UD\$z?z,z} !eztL} U\.\$U\$zvK


o#l/#oJdk$lx
n

l$

+!)} Cz@.@{:z)\$zX\$^U {
xGx!\$U&qy+U {c.!{czDzQ.!+xg8U {c9
demo
z\$zHJ
1ys$zt^ UuP 7!7@7 L xx!
\$Uuz
z{+zH.N\$zF} U \+x$} !} xU
} U\/.x !\$Oz
LATIN1
Q} U\
{+^ O{:+ ! !\$
M

$ createdb -p 5000 -h eden -E LATIN1 -e demo


CREATE DATABASE "demo" WITH ENCODING = LATIN1
CREATE DATABASE

createlang

Nombre

-TN!\$z6[+zHUuzH +,^z6\$z6y+CU .!}xVQO !{z6\$z6\$U({

createlang
+
U {cCzHLK

Synopsis
createlang [ opciones_conexion ] [ nom_leng [ nombre_bd ] ]
createlang [ opciones_conexion ] -lista|-l

Inputs
createlang

!} zy^FU({{x +xzH^z{! .zH^U {


M

langname
${y+z} x+}zU. Cz\$ztzH +,^z\$zy+CU\ .!} x\f\$zt !} z\;+zmJ/{z
\$z
x\$U
y+CzH
^ !N
y+U(
{:x
UVz{c,
\$z
x\$UVzH.
D'
z
langname
\$z6} U\.

createlang
\$U {

\+!\$\.zt

nombre_bd
${:ysz} '+} QQ+"F !{z6\$zF\+U({d{:z(JQF!!\$xz(zH +,z

@!x{c
%&+z{c 66x{cF\+z4U({bzH +,^zt{# 4x{^!!\$U({bzHuGF !{z?\+z4\$^U {\$z{cxU8+z
\$z z4{zz{y+z} x+} !\$9

createlang

.x"|!} zy U({{x+xzH^z{@L .zH^U {zHD?'z?\$z} U\.\$U({} U.U

y+!LH.zCU({\$z4}Uz1x\

!@

@!U({

host
${y+z} x+} uzU\. Cz|\$z|U({d\$z| Q! +xV{U(Cz|u+z
z{c} U
postmaster
 xzH
\$U

y+@!y++zL^U

port
${:ysz} x$} 6zvy++zLUo>v,VU|zv{U(} zH\$zv\+U\.xxUu3xRzz(+z6zt
postmasz{cQ
^ zH
\$xzH
\+U|Q!{d} U\
ztLxU
z{

ter

3U\. Cz6+{+! xU

username

3{+! xU|} U\z( $z6{:zoJOQ} Uz})@

Sg@!y+!{{U C\
=+z !QF+zF{zFy+CzH ^z6zt y+@{:{U(C\

Outputs

$.!U( 'N\$zRU({o.zH{,zN\+zNz CU b{:U.U{+$} xzH^zH.zH^zztLy+x} ^xJU({ LxUz{4!{'G


z,z} 
z
}U
))U(y+}x

zXzt#} U.

\$UL
K
} U Cz{y+U\\+xzHz
y+! [Q!
createlang
{#\$zH^ !z{ +
C+z z(^ .
 x"H
 -echo
,U !
zQ@ {#y+U({x xx\$!\$zt{
C y+! [

Descripcin
createlang

z{6|^xx\$!\y+@!!\$xQ+zHUXz+,z\$zNy+CU\ .!}xq|

 !{z?\$z\$^U({$U({c, CzHLK

plsql

pltcl

T})^+!.zH^z

createlang

} +Cz!} zy^6\$U({bzH +,z{

T+zU {|zH $,^zt{|\$zy+CU\ .!} x\&\$ztb !} zH\<y++z\$zH&{zR!!\$x\$U({\$xCz})

.zH^zN+{\$Um!xGU {4} U\.\$U {oLKgL{:zRCz} U\.xz\$+{!


y+U C+zO!} z
#iLQj$createlang
i | i y+! &Q@{
$z d
x
*U L.
!} x\
X{z xz\$z}zt+zU({|z{Q!{*a@}x\$zV+{!

Notas

3^xx} z

E!I*t 

y+!F U @eVzH +,z

Uso

+!6x{c!@

pltcl M

$ createlang pltcl

!!

createuser

Nombre
createuser

?CzF+zHU|+{+! xUU+U {cCzHLK

Synopsis
createuser [ opciones ] [ nombre_usuario ]

Inputs
@!U({

host
${:ysz} x$} Qzt\U. CzF\$zvU({cs\$z6Q@+xR{:U( Cz6Q+zFzt

postmaster

}U( Cz

y+@!y++zL^U

puerto
{y+z} x+} zty++zH^UQo>La&U.zt{U } zHdU(}!e3x/{U( Czz$+zz
$
postmaster
xz\$z6Q!{#} U\ztLxUz{

z!zt}U
%;+zt{^F!{} U{$!{#+z

createdb

zHJzFuzH'F!v !} z\

@!+xz
UU.+z{c^OCz{y++zt{^F! 

\$!} Czzt\$
$zt.x^zF!;+zHUu+{+! xU|} Cz~@ !{z{#\$z6\+U({
,N@U\} Czzt\$
a.y+x\$zF@;+zHU|+{+!xUD} zt!e !{z{\+z6\$^U {

!!!\+\$+{:zt
$zt.x^zF!;+zHUu+{+! xU|} Cz~@UCU({+{+! xU({
TU\!\$\$+{z
a.y+x\$zF@;+zHU|+{+!xUD} zt!eU\^CU {#+{$@xU({

,t@!y+y+CU.y
Lx+{zDz{y+z} x+}uzt{^zDy+!L.zCU(

x+} !} x\y+U(by+!{{U( \

.U\^ !u.zH{,zDy+CzH \$U

createuser
${c^UUDz{zt}zt{:@xUR{x;UNy+zt6+{!e!z

y+U $ztLy+!{{U C\V\+z+zHUN+{+!xU

x@!{{x\

id_usuario
$z4y+zt.x^z6zzxUCUx\)\+z4+{+!xGUD+z[UD{zFz(+z4{:z4\$Qy+U(\+z*z}c^U ${c^UU
z{r
z} z{! xU !y+zCUQ!

U {#z{x
+{c^

!@

nombre_usuario
{:y+zt}x+} Xzr
+
U. CzX\$zd+{:+@xU $U({c, CzHLK $zV{:z&))} Czt ${c^z&U\. Cz
\$z z4{z
x} U|\$zH^ CU|\$zo U(\$U {#U({z1x{c zH^ z{#zHm+
U {c
CzHL
K
vz4zQy+CzH ^!LQy+U(bU\. CzF} +! $xztbU Ox*U L.!} x/+zUu{zQ! Oz{y+z} x
+}!\+UDzH
F'
zO\$z4}U.

\$U({
$!{dU ys}xUz{

@
!{U/y+!{!\+{x^z !.zH^z6 !C> $!{#U y+} xUz{

-p -e
psql -U -W
.

x"
{zFy++-h
z\$zH+{!^@y+zt U{X+{Uuys$zt\$z6{z} U\*+{UuzHz{c^z6} U\^zU

Outputs
CREATE USER

LU(\$UuQx\$UD xzH

createuser: creation of user "username" failed


T UUUu{!xD xzH

$(+{+!xUU|*+zF} Czt\$U

vx!{z4\$4z CU ^z.z{:,z?\$z4ztCU($\$z1 @} zH\{zo.U({^ !


 @
{#y+U {x xx\$!\+z{
 > y+! [Q!

Descripcin

} CzFm+zHUD+{:+! xUU+U({c, CzHLK

$z

#div|

|r

LU(.zH^zFU({+{+! xU {#}U

usesucreateuser
@}*^x!\$UzHzHO} !{z
y++z\$z}Czt!:+zHU {${+! xU({=+U({Czt{
per
pg_shadow
z{$|zHU(U(xUR\+z{:zt1{} xy1zH^U LUR!@}U.\$UvK

createuser
E "{?\$zt?^zL.x!x^z !})xU ! >

x

\$zE+U({c, CzHLK

zHfztp.U.zHU\$zu}Czt!6+{+!xU({y+U([.z\$xUg\$zzt{^U({DU^ U({."H^U \$U({


+z

psql

#div|

TN{:'G;U!m@\$zt{:y+zt} x!

${c^Ug{x\x}

\$z zQ{z#zH} U !\$Uy+U(#zJ{:} xy++zN +zR){zLx\$U d\$zR !{z{\$zO\$U({

z{c,?} U( xzH\$UNzHD(Q@+xF!!+z4{z!} }zt\$z

T{x.x{c.U(} +!+xz!U($y+U e\$zt*z})U

|} +! $xzt! x! z6\$z4zHU(LU|\$x{y+Ux zOys!

Uso

+!6} zt!e${+! xU

joe

psql

libpq

zHO !{z6\$z4\$U({#y+U \$z*zt}*^U

{zF!y+x} 

$ createuser joe
Is the new user allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

+!D}Czt6@.x{c.U.+{+! xU

joe

+{\$UXz+y+U({.!{czt6zHq Q!+xz\$zy++zLU

P 7!7t7 @zHx^\$U|!{dy+Cz^!{dzHz(y+CU\.y ^zHxzH\+U|zH} +zH^OQ} U\{+Oz}+ {U

$ createuser -p 5000 -h eden -D -A -e joe


CREATE USER "joe" NOCREATEDB NOCREATEUSER
CREATE USER

!!

dropdb

Nombre
dropdb

U FQ !{zF\$z6\$^U({x+U({ zvKXz1x{czH^z

Synopsis
dropdb [ opciones ] nombre_bd

Inputs
@!U({

host
${:ysz} x$} XztU\. Cz/\$zU {c?\$zQ!+x){U  CzV/+z/z
zt{^"
postmaster
}U( xz
\$U

y+@!y+U(

puerto
${y+z} x+} 6z1y++zLUEo>LaUNz!{U } zH 3xQU } !1zH|ztL+z
^xzH\$z
postmaster
}U
z1xU\
zt{

3@+{:zt.z

nombre_usuario

U\. CzF\$z4+{:+! xUD}Uz(+zF{z[QQ} U\zt}*^!

Sg@!y+!{{U C\
=+z !QFxCU(\$+}} x/\+z6y+!{{:U(C\

z!zt}U
%;+zt{^FzHy+^!Q!{d} U\{+^!{+z

dropdb

zHztFuzH'F!v !} z\

@!+xz
UU.+z{c^OCz{y++zt{^F! 

x@!xzt@}*^xz
T^z{\+z6!} z! U|\$z{c^C$})^xJU(!y+x\$z6} U+.!} x/[ "{d\$z(y+CU.y

nombre_bd
${:ysz} x$} Qzt\U. Cz6\$zFF@{:zt{#\+zF\$U({d+z[QQ{z U @\$ Nz z4{:ztbQ\$z
!{dzLx{c^ zH^ z{zV
zt{c Qx
{c^ !!} x\V
\$z(+
U({
zv
K
$!{dU ys}xUz{

@

-h -p -U -W

-e

{zFy+@{:xz !.zzF

@ >

!@

Outputs
DROP DATABASE

$Q !{z6\$z6\+U({F{:x\+U| U !\$Q} UV"tLx^U

dropdb: Database removal failed.


T UUUDOx\$U| xzH

vx~{:z#y+CU(\$+} zbz CU ^{zx.U({c !LzH.zH{,z#\$zdztCU(\$ztt !} zH\


 @
{#x
*U L.
!} x\
 > y+! [Q!

Descripcin
dropdb

\$zt{^C+z4JQ !{z4\$z6\+U({r$U({c, CzHLKVzLx{c^zH^z

$z\$CU(y+!\s! !{z

$(+{+! xUD+z4z,z} ^z6zt{^z

} U\.\+U|\$z z4{:zt{+y+zC+{+!xUD\$z6O !{z6\$z4\$^U {#U|{/y+CU y+xz! xU

dropdb

z{4)zHU(U(xUV\$z{zs{} xy+!Cz\+z\sU(\$z} U.\$UmLK.\$CU ys!\s! !{z

y+U(.z\+xUX\$z ^zL.x!+xzt@}*^xU

Nzz{c^z.U \$U(eUX@!\$
{c UR{xeJ
x}
$
+z
\$z zQ{zbzH} U\^@\$Uy+U #zt{} xy++zR/{:zt
x\$U(#\$zQ !{z{?\$zQ\$ U({z{c
psql
zH1.!C} XzH&ztdU {c4\$zV\+z{cxU L. x"<} +!+xztE
!U(Ny+U(O\$z*z}) UgU} +! +xz
!xt zF\$z6zU(U|\$x{y+U\x zFy+@

{:z4!y+x} 
! >

\+z+U {cCzHLK

z{y+z} x!@zHDzH| U( !$ !{z{e\$z\$U({y+U(.z\$xUR\$zz{c^z?uU\^CU {h)"HU(\$U({

psql

Uso

+!6\$z{c^ +xQ !{z6\$zF\$U({

demo

libpq

zVzt {ztx\$U(\$zF @{:zt{#\+z6\$^U {#y+U(b\$z*z})U


M

$ dropdb demo
DROP DATABASE

+!6\$z{c^ +xQ !{z6\$z4\$U({

demo

+{\$Uz(y+U({c,.!{c^zb\$ztvU {csz\+zH@y++zLUP 7!7@7 

} U\mz x$} !} xuz} \+U|mJx{c^!!U|FQ} U\{+Ozm.!C}

$ dropdb -p 5000 -h eden -i -e demo


Database "demo" will be permanently deleted.
Are you sure? (y/n) y
DROP DATABASE "demo"
DROP DATABASE

droplang

Nombre
droplang

!

U( FVzH +,^z4\$zFy+CU .!}xV\$z6O !{z6\$z6\+U({=+U({c, CzHLK

Synopsis
droplang [ opciones de conexin ] [ nombre_lenguaje [ nombre_bd ] ]
droplang [ opciones de conexin ] -list|-l

Inputs
droplang

!} zy6U {{x+xzH^z{#!.zUDzHQ'ztO\$z6} U\.\$U {


M

nombre_lenguaje
{:y+zt}x+} )zx
+
U\. CzX\$zt#z+,zX\$zXy+CU .t}x\$ztd@} zH\+zX{z#)
 U @
y+CzH
 !L
y+U
{x
U{zXz{y+z} x+} !\$U
nombre_lenguaje
zH
O'
droplang
ztQ\$z6} U.

\$U({

\+!\$\.zt

nombre_bd
${:ysz} x$} Q\$zt{\$z6+"F !{z6\$zF\+U({d{:z6\$z z6 U( !zvzH +,z

@!x{c
%&+z{c x{c\$zRU({6zH +,^zt{4x{^!!\$U({4zHX !{zO\$zN\$U({4\$z{cxU8+z
\$z z4{zz{y+z} x+} !\$9

droplang

. x".!} zyDU {F{x+xzH^z{F!.zU({Qz.u'zD\$z} U\.\$U {F} U\.U

y+!LH.zCU({\$z4}Uz1x\

@!U({

host
${:ysz} x$} Qzt\U. CzF\$z6U({cs\$z6Q@+xO{U  CzFQ+zF} U(Cz

postmaster

y+@!y+U(

puerto
${:ysz} x$} Qzt ys$zt^U:>v,XUDz({U } zHU(} !({:U( Cz6zv+z
xz\$z6
postmaster
!{d}U
z1xU\
zt{

3@+{:zt.z

nombre_usuario

U\. CzF\$z4+{:+! xUD}Uz(+zF{z[!6O} U\z})^!

Sg@!y+!{{U C\
=+z !QFxx!!} x\$zFy+!{{:U(C\

Outputs

$ .! U '\$zDU({E.zH{,z{O\$z|zCU(4{z|z1y+x} gy+U 4{:'e{U(U { LxU.z{O@{:xJz,z} ztU


}U;
XU(y+}xG\
.
xCz,^Uzd} U\.

\+UL
K} U(Czt{:y+U\$xzzVy+@
droplang
Q
{d\$zH^ !z{ %&xCz( .
!
 x"H-echo
 ,U !

 >

!

Descripcin
droplang

zt{xx\+!\uy+!# U @szH $,^z\$zy+CU .t} x\Dz1x{^zH^zzHN4 

{z4\$z\$^U {r+U {cCzHLK

!}*^+!.zH^z4@}zty?\$U({dzH $,^zt{

pltcl
M plsql
T+z/U({uz+,z{|\$z/y+CU .!} x<\+zd !} zH\y++zt\$zH;{zN U( !\$U({D\$xCz})

droplang

.zH^z?^xx!\$U! xU {b} U.\$U({vK$~z{bCz} U\.z\$! z+{:@


y+U C+z?Cz
x!} U.
y+CU  !} xU
z{Oz{:Q@ {*,!
} x\$z#+{:@ $z NdDt | droplang
{e\$zH^!z{
i y+! =Q!

Notas

3^xx} z


L)
L t

y+! Q Cz> !bzH +,z

Uso

+!6 U !

pltcl M

$ droplang pltcl

dropuser

Nombre
dropuser

U( FV+{:+@xU+U {cCz{

Synopsis
dropuser [ opciones ] [ nombre_usuario ]

Inputs
@!U({

host
${:ysz} x$} XztxU. CzV\$z/U({c?\$zVQ@+x)zH;X+z/zt
postmaster
z,z} 
^ U

{:zz{c,

y+@!y+U(

puerto
${y+z} x+}/zy++zL^U o>Laz{U(} zHU } !b{U( zzb+z
postmaster
}U
z1xU\
zt{

z{} +} 

z!zt}U
%;+zt{^FzHy+^!Q!{d} U\{+^!{+z

@!+xz
UU.+z{c^OCz{y++zt{^F! 

!

createdb

zHz Q|zH'Q!( !} zH\

x@!xzt@}*^xz
T^z{\+z6 U !!(${+! xU(@y+CzH ^

nombre_usuario
{:y+zt}x+} Oz
+
U. zQ\$z6${+! xUU+U({c, CzHLKX+zOO{zb U( !\$U ${cz[U. Cz
\$z zDz1x{c
x6z
x
{c !@}x+
U({c,
Cz{ L
z|z|y+CzH
 !Lu

U.
 Cz|{:x:U.{:z|
z{y+z} x+}!\+U
x

UuzH
Q'
zO\$z6} U.

\$U({
$!{dU ys}xUz{

@
!{U/y+!{!\+{x^z !.zH^z6 !C> $!{#U y+} xUz{

-p -e
psql -U -W
.
x"
z{c,-h
\$x{y+Ux z{!y+zCUy++z\$zH{z} U\*+{!{#zHz{cz6} Uzt^U

Outputs
DROP USER

LU(\$UuQx\$UD xzH

dropuser: deletion of user "username" failed


T U|{!xU)!

U|{zFQ U( !\$U!(+{+!xU

4+\$UX{:z|\$zCU(^zp.z{:,^z|\$z|z CU(6\$z$ !} z\&{zL$.U {c^@\$U


{dy+U {x xx\$!\$zt{
 > ys![Q!
i$  !

Descripcin

 U @bV+{:+! xUU+U({c, CzHLKXz1x{czz

dropuser LU )zHz4U {+{:+! xU({} U

xUy+U({zz

\$zH\$zt{^C+xb+{+! xU {#\$z(+U({CzvK

dropuser

usesuper

$z

d

!{# !{z{#\$zF\$^U {#+zFz{zF+{+

!})^xJ@\$UDzVF}@{:z

pg_shadow

zt{VzHU ^U xU\$z({z{:} xy@ zt\$z\U d\+z} U.\$U LK

y+U(.z\+xUX\$z ^zL.x!+xzt@}*^xU

d

ys$z

i$

zz{c^ z.
U \$U(eUX@!\$
! > \+z+U {cCzHLK N
z{y+z} x!@zHDzH| U( !$ !{z{e\$z\$U({y+U(.z\$xUR\$zz{c^z?uU\^CU {h)"HU(\$U({ ${cUR{xeJx}
+z
\$z zQ{zbzH} U\^@\$Uy+U #zt{} xy+
+zR/
{:zt
x\$U(#\$zQ !{z{?\$zQ\$U({z{c
psql
zH1.!C} XzH&ztdU {c4\$zV\+z{cxU L
.
 x"<
} +!+xztE
!U(Ny+U(O\$z*z}) UgU} +! +xz
!xt zF\$z6zU(U|\$x{y+U\x zFy+@

{:z4!y+x} 
psql

Uso

+!6 U !@ +{+! xU

joe

libpq

\$zv{zLx\$U(b\$z6 !{z{d\$z4\$U({#y+U \$z*z}{U


M

$ dropuser joe
DROP USER

! U( !F!e+{$@xU


+
+{
\$Uqzey+U {c.
!{c zQzf
zU({czt\$zHy++zLU.P
joe
zx+} !} xuz} \$UD
x{c@!UDOF}U{+OzV} + {:U

7!7@7 }U

$ dropuser -p 5000 -h eden -i -e joe


User "joe" and any owned databases will be permanently deleted.
Are you sure? (y/n) y

!

DROP USER "joe"


DROP USER

ecpg

Nombre
-

ecpg

. z\$\+z\&LK<y+CzyCU(} z{{:U(8y+CztyCU(}zt{:@\$U p<x} U(y+U( !\$UDzmvK$9

Synopsis
ecpg [ -v ] [ -t ] [ -I include-path ] [ -o outfile ]

Inputs
ecpg

!} zy6U {#{x+xzzQ! .zHU({#zH'ztO\$z6} U\.\$U {


M

file

Outputs
ecpg

}CztLQ$} zCUDU|z{} xxLQz

stdout

8{:@x\$Qz{c,\$! 9

Descripcin

pgaccess

Nombre
pgaccess

!

4xzH^z( L!$} UDxz !})^xJUD\$zH+U({Czt{

file1 [ file2 ] [ ... ]

Synopsis
pgaccess [ dbname ]

Entradas
dbname

$
U\. CzF\$z6O !{z6\+z6\$^U {#z1x{czH^z

Salidas

Descripcin
pgaccess

y+CU y+U(C} xU\6Ox?z *![ L!+}6y+! [+U {cCz{#\$U\$z6{zFy++z\$z$zt{^xU!

!{r! @{:@zt\$x@!{\+zxb} U\{+^!{1{zt}+zHJ}x!{#u*} xUz{

^ Q*U L.Q\$z4!} }zt\$z+U {cCz{#^"{d\$z(^} (z{} Uz(+{:UD\$z ?G


pgaccess

y+zL.xz

C

T x} +!+xztb !{z{#\$zF\$^U {#zH\$zH^zL.x!\$UDU {c1z{y+zt}x+} \$UD\$x}UDU({^

zvys+z^U(Jz(y++zLUz{y+z} x+}@\$U @ztU\. Cz6\$zF+{+! xU||y+!{{:U(C\

v,z} !4 U

Ne

hR+!C\$!ey+Cz*zzH} x!{zz(!C} xJU

4Um! !{

pgaccess

y+zL.x^z

~/.pgaccessrc

T xh.+^xy+z{^! !{dy+! x{+!x!!} x1} U/Q!1x.U|\$z[VCzH x{cCU({8} U\ 

4. x@?zt^.!U/\$z!{F} U Q!{Q\$z{y+!t\$U/!{Q'z!{(zLx} !z{6+z||*U(


.
a^ CU \$+} xh
z^ UDzH
} z\$@{
T?,+{c
!\$x.
x} .
z z6O@ + Q\$z6Q} zt\$Q\$+  z4Qz\$x} x
hR+!C\$!e
*U L.
^ U|\$z(^ ! Qy+@Q} !\$( @
a.
y+U(L !6>ztLy+U(L !>L\$z6!C}x
U({z zt
U({#8aN
=~Jv
69
3{!+
CU({:I!x^ CU \$+} x+ CU({} U\.
U|y+Cz} xU +
{:ysz} x$} !6zteU(C\$zH
$
IJx^ U(\$+} x(.

+!.
z zuU({R}.
y+U {Oy+U FU({R+zuCz!xt!6
U(C\$zH
t}x
\$x} x
$
I1\+U  zF} x} u{U(Cz4z z^ UD+zQ+zt z.
U {#} .
 x!
xG{^ CU {I@{x J
\$U {zFzH
z(CzH
x{c CU({zFy++{O zt}[N
z
U( !CzH
T@\$xh
+zJ
U({Cz
x{c^ U({I
+@ \+!:
$zJ
UDCzH
x{^ CUD} U/
ztv U\^ \V
\$zCz} U\$zv ^ \
Cz@p^ ! !{d} U\V
4

!{x{^ zH^ z
z
#
U\.
 !b| U !8\$CU(y+9e^ ! !{
z} +y+z !Fx
d
*U L.
!} x&
{:U( Czu!{ ! !{x
} $ zH
\$Ugy+CU(y+xzH^ !xU(x
*U(L.
!} x\f
\+z
U({} .
y+U({!'
\$x} z{
! z9

4U}U{+!{

pgaccess

y+zL.xz
M

!@

Nzx^!z\$x^!|!.!} zH! 
bE!

EO>
C G

hR+!C\$!e*U L.
^ U {#\$z(
x{c @{
T.
@}z
!}U
{+ !{#} U\.
U x{c@{
v,z}  !} U\V
y+!L.
zH CU({U(y+} xU
!z{#\$z6zH^ @\$Qx^ U(\$+} x\$U({y+U(bztv${+! xU(I1y z,

select * from invoices where year=[parameter "Year of selection"]


dx{+!x!!} +!+xz zt{$^!\$U\$z6O} U{:+^O\$z6{zzt}} x/8{zz})^9

v,z} !} U\{+^!{\$z4!} }x8x{:zt^@+y+\$^z@\$ztzHzt9


z
N
x6} U\
{+ @{O+{
\$U)g
} U\
{c C+})^ U (
x{+!$\$zD} U\{+@{O} U\g{U y+U(Lz|\$ /
*CU ysu!xG!{:x|
\$z(^ ! !{

4U{:zt}+z}x@{:

pgaccess

Nzxr+zH!{dx{c} x!{
a
{y+zt}} xU
!bx
{c^ 
} x!{ztLx{czzt{
U( !

4UmJx{c^!{

pgaccess

y+zt.x^z
M

Nzx@{{!\$UD}U{+!{#} U\.UUJx{c^!{
dx{+!x!! !{@} U\
y+U({x xx\$!\$z{#\$z6U(C\$zH
!} xu+ !\$U
Nx{z!J
$zJ
@{=
x{c !{
x{c @{z1x{c z z{
U( !8\$CU y+9e

4U*} xUz{#

pgaccess

y+zt.x^z
M

Nzx@{
a
{y+zt}} xU! !{
U( ! !{

4Ux*U(L.z{

pgaccess

yszL.xz
M

hRzHz !x*U L.z{{:x)y+z{\+z{\$z64^! Q8 zH6{^ z9

4. x@*+zH^z^.!UDuz{cxGU|\$zF} .y+U({duzH^x+zH^!{


4!
!e
+!C\$tbx
*U(.
z{#\$z6O @{:z4\$z6\$^ U {
+CzH
x{:+!x@!: ! !{.
+zt{^ !{\$z4x.
y+Cz{xU\
zt{y+U({c {} xy

4U*U(L.+!xU({

pgaccess

y+zL.xz
M

T x*U(L.+!xU({#\$zx\$U({y+U(zt +{+! xU

3{!m. \$+U|\$z6\$x{zUD\$zF*U L.+! xU {

T} } z\$ztO} U!,^U({\$zFCzH x{cCU({#+{\$UDx\z\$z6} U{+!{

4U{:} xy{

pgaccess

NzxU({

y+zL.xz
M

$.!{} xy^{\+zx\$U {#y+U(bz(+{+! xU


%&U \$x+} ! U {

!!

y+zt.x^z

pgadmin

Nombre
pgadmin

$U({c, Cz{#z{dOz .xzQ\+z6\$x{zUu.^zHx.xzHUD\$z6 !{z{d\$z

\$^U {dy+! QSfx\$U {_!P>L_!>Lm

Synopsis
pgadmin [ nombre de datosfuente [ nombre de usuario [ palabraclave ] ] ]

Entradas
nombre de datosfuente

$
U.Cz\$z#D{x{^zH6 +U({ zvK|z1x{czH^zUENU({*+zH^z\$z@3{+! xU
nombre de usuario
3$U. Cz4\$z?+{:+@xUe!x\$UNy+! Fz1z{y+z} x$} !\+U

nombre de datosfuente

palabra clave
3J
gy+!@ g} zQe!x\+qy+@.zz{y+z} x+}!\+U
nombre de datosfuente

nombre de usuario


Resultados

Descripcin

z{
6z .
xz 4\$zy+CU y+({xU zHz !1ys!?\$x{z@>.^zHz^~D@\.xx{c
pgadmin

!e!{# !{z{d\$zF\$^U {d\$z(+U({c, Cz{ =} xU\JN ,U|Sfx\$U({_!P>L_!F|m

4! t}*^z '{cx} !{dx} +x\$!{


M

^!\+!{xLK/!zU(x@{

+^!!{4\$zOx*U L.!} x.XGT? +\$!{ys!N !{z{4\$zR\$^U {^! !{vx\$x} z{v{:zt}+z

} x!{x{^!{@y+CU .!{d\$z6@ +zt@*} xUz{DzH +,z{

+CzH^!{#|Cz{y++z{c^!{dy+! Q} U\ +!3{+! xU({:!hRC+y+U({+xxzH xU {

4UCU((\$zFCzHx{:x} U\m.z,U(O\$z4 zHz !} x\\$z4{:} xy

4U+ !} x\V\$z6@{=^! !{d\$z6%&x} U({U *,%1v {c4U*

!@

T? $\+!{!!y+@6x.y+U L^!b|z1y+U L@\$U({


T? $\+@y+! [.x !

!{z{d\$z6\$U({

a
*U L.z{Qy+Cz\$zx\$U({OzHg !{z{Q\$zD\$^U {?! !{'\$x}zt{{z} +zH} x!{zH +,z{R
x{c!{

pgadmin

{:zD\+x{^ x+ z{zy+@t\$.zH^z\$z+U {c, Cz{6Xys+z\$z{z\$z{} !v!\$UV\$z{\$zR

\$xCz~} } x/y

>$>L

Notas

y

>$>LX

y !\.x *Czzt{:ztz } U +

y !\.x *Cz~zt{:ztz } U +

pg_dump

Nombre
-

pg_dump

$^@z4O !{z6\$z4\$U({x$U({c, Cz{#Q$} zCUD\$z6{} xy

Synopsis
pg_dump [ base_de_datos ]
pg_dump [ -h husped ] [ -p puerto ]
[ -t tabla ]
[ -a ] [ -c ] [ -d ] [ -D ] [ -n ] [ -N ]
[ -o ] [ -s ] [ -u ] [ -v ] [ -x ]
[ base_de_datos ]

Entrada
pg_dump

@}} zy FU({{x +xzH^z{@L .zH^U {#\$z6O'zQ\$z4}U.\$U


M

base_de_datos
y+z} x*'} |z
+
U\. Cz|\$zDu !{zD\$z|\$U({Q+z|{zUuuz^ !z
base_de_datos
xzH

z4}U.
Uuzt{
\$!z;
!U(b\$z4
!x@ z6\$z6z U(
U|3

+z} O{(UuU {#\$^U {Uuztvz{+zH.O8!{#\$zx} xU\zt{:9

}
$x.y+xOz(z{+zH.Fzt{\$z4}Czt!U
\
+z} OQ\+Q} U.U|y+CU(y+xU({x{zLU({\$z4} !\$zH!{

,
+z} OQ\+Q} U.U|x{zLU({} UmU\. Cz{#\$z6^ x ^U({

!!

,
+y+x.
L
zQ@{6\+U  z{}U.x!{4\$zQU({4x\$zH^x$} !\$U(Cz{1.zU {4+zR{zX@{U(
.zHzz} z{!x@{ ${^UXy++zt\$z} !+{!y+CU  zH.@{Q!+} !v!? .x{.u{x$z{c|\+
JU(} !\$R} U\^ xzH
zOy+!! !{Cz{zL\+!{?+{!\$!{ysU U({?x\$zH^x$} !\+U Cz{ ${cNz N
}U
\$+}) Fz{c,
\$@z
y+CzH,

pg_dump


a} +zF} U.x!{\+U  z{#zHU({x\$zx+} !\$U( zt{

${^z6z{#zvzt{\$!

U
+z} OU({x\+zHx+} !\$U(Cz{d\$z6U(t,^zU({8,aN{9sy+@6}@\$@

{
+z} O{U(Uuzvz{+z.O8@{#\$ztxG}xUz{9UuQ\$^

tabla

+z} OQ\+Qys!6

tabla

x} QzH^z


3{N!zx} !} x\.ysU =.z\$xU\$zR} zN\$zO!} } z{U

}Jz4\$z6!} } z{U

+x\$zRU. zN\$zO+{:+! xUV

,
$y+z} x+}Fz.U \$Uz U({z8y+! H} '9

x6zU } !\$UN\$z?T${b8}U.\$U({ >L zJU( z9Fx*U(.!} x\$z4ys U(y+xzH

\$!\V\$zF[! 

.

 x")
!} zy^U({6{:x +xzH^z{6!.zU({4\$zN'zN\$zN} U.\$UVy+! y+!L
pg_dump
.
zH^ U({d\$z6} Uz1x\
M

y

husped
${:ysz} x$} Qzt\U. CzF\$zv+"t{:y+zt\X\$z6Q! +xNzO}+@v{:zFzt{Qz,z} ^\$U|zt
(z{c,
\$!z{+{!/
{U(} zHs
\+z6\$U.
x
xUU } !(3J
xNzH
zQ\$zF

$
postmaster
}U
z1x\
, J
puerto
+{:y+zt}x+} Qz(y++zt^U|\$zF,ztzo>La)UDzz{:xV\$zF!C} xJUD{:U(} z\$zF\$U.x
xUU(} !L3

xQzHu
z!}+@
zt{4
z{y+z 
\$UR+z?{:z?z*z})^ $z|
} U\J
zLxU
z{
/
)
zCUz{c
\$!O\$z/postmaster
y++zL
Uz{|P!!`@eUzx
!U R\$zV
! x! zV\$z/.
xz z
hEpX
$
8{:x(z{cO
z{c ! zt}x\$t9


3{!^zHx} !} xN}UN} zd\$z#!} } z{U

+x\$z

nombre_de_usuario clave_de_acceso

!@

Salida
pg_dump

} Cz!O+} zCUU|z{} x xLQ

stdout

La conexin con la base de datos template1 fall. connectDB() fall:


Est el postmaster ejecutndose y acceptando conexiones en el Socket
de UNIX en el puerto puerto?

U)y++\$U/x{z|!+y+CU } z{U

zHgz++"{y+z\Xy++zLU)zt{:y+z

pg_dump vxzF+{cz\Xzt{^z[.zH{,zzpostmaster
x$ $z6+z
{:z6z{czFz,z} ^\$U
postmaster
zH)zJ+"{y+z\gx\$x} !\+U (V+zN+{^z\gzt{y+z} x$} zsy++zt^U}U( zt}*^U Lx{g{:x^zN+{
}x+} !\$U({

!{x{cz.O\$z6!^zH^x}@}xzx++z4+zF+{^z\#^xzHz6@{} Cz\sz} x!z{#\$z6!

zH^x} !} x\Cz+ztx\$t{

La conexin con la base de datos base_de_datos fall. FATAL 1: SetUserId: el usuario nombre_de_usuario no est en pg_shadow
3{c
zt\
U|ysU {zz6
FzH !\$(?@x\$FzHFCz!}x
UUDz6{zLFy+zL.x
x\$UzHzt@}} z{U4+U {c, Cz{ 4U^!})zFQ{/!\.xxpg_shadow
{c !\$U(\$z[+U {cCz{

dumpSequence(tabla): SELECT fall

3N{^z\u} !Cz~} z\$zt!y+zt.x{URy+! zzs?@{:z\$z\$U({

\$z6{xz[+U({c, Cz{

?U\^!})z?{u!\.xx{c^@\$U

Nota: pg_dump ejecuta internamente las directivas SELECT. Si tiene problemas ejecutando pg_dump, verifique que puede seleccionar la informacin de la base de datos mediante el uso de, por ejemplo, psql.

Descripcin
pg_dump

z{eD^xx@xUOys!xJU(} !s? !{z#\$z#\$^U({p+U {cCz{ezHND+} zCUO\$z#{} xy

} U\^zHxzH\$U} U.\$U({?\$zO} U\{+

$U({+} zCU {\$zQ{:} xy+{U\/zHX*U(.U\$z^z^U

y++z\$z|{ze+{!\$U {bys!?Cz} U{^C+'eF !{z\$z\$^U {x} +{UDzuU\^ !{Q!+x!{b} U\


U\^ !{d!C+xz})^+@{

pg_dump

y+CU(\$+} x6!{} U{$^!{xz} z{! x!{by+! QCzH zHz th^U \$U({

U {xy+U({R\$ztx\$U({OysU 6zte+{+! xU J*} xU\z{?@ !{J'\$x} z{Cz*@\$U {J.U(y+z !\$U

!.
zH^ z ^ U(\$\$^ uz{R} U(y+x!\$zHg
*U L.
^ U.\$zU z^ U.z} +!$y++z\$z|{z
T\$x} xU
+zH.zH^z6} U ysx!\$U H. x"Hy++zt\$z6{zx.y+U L@\$U|Qzt .xzH^!{dy+! Q{/z\$x} x\
Cz{

pg_dump

z{b^x1y+! zLzsz1} UzHx\+U\+z?4 !{z?\$z\$U({+z4{z!?o.+\$!+\$z

ux{c!!} x\+z +U({c, Cz{QU

Nz{y++"{Q\$zDz,z} @

 {z|\$ztzzL.x!

pg_dump

z {:} xy+\$zO{:@x\$Rzd{x} UxzzR! N!\zLz*} x!vzt{:y+zt}x@.zH^zRRN+\$zQ!{


x.x@}xUz{#} x!\$@{#zVFy+!Lz6x*ztxU(

Notas
pg_dump

^xzHzNy+U(} !{x.x^!} xUz{ $!{?x.x^!} xU\zt{4{:+ zH/y+x} xy+!.zzO\$zQN\$x

} $!\/y+@6z !ze} xzL!{x.zH^x*U L.!} xUz{d\$zFU {#} ,@U\ U {#\$zv{x{cz.

!

U)z xzH

\+zDU {Q'
\$x} z{Fy+!C} xzt{ $
| !!q
z{F .
x{.
} x^ !\$|^z xU
pg_dump
.
zzI@U({ys zt\sx} !\$U({\+z6U {'\$x} z{dy+!C} xtz{#{:zF@.!} zH} U\.U|y+U({

pg_dump

U .z ,^OU(t,zHU({ \$z{ $U {U t,zH^U { \$z{#{U\VxeJU !\$U({{zQ\$z z

x\$x@} UVztU {#\$zF*U L..$@

Uso

+!(U } !JQ !{z6\$zF\$^U {d\$zt\.x{c.U JU\. Cz6+zFzt +{+! xU


M

% pg_dump > db.out

+!(U zQ} !tbzt{^Q !{z6\$zF\$U({


M

% psql -e base_de_datos < db.out

pg_dumpall

Nombre
pg_dumpall

+^!zoU(\$!{d!{# !{z{d\$z6\$^U {x+U {cCz{#zH!C} xJU\$z6{} xy

Synopsis
pg_dumpall
pg_dumpall [ -h mquina ] [ -p puerto ] [ -a ] [ -d ] [ -D ] [ -O ] [ s ] [ -u ] [ -v ] [ -x ]

Entradas
pg_dumpall

!} zy^FU({{x +xzH^z{! .zH^U {#\$z6Q'zO\$z4 C\$zHzt{


M


+z} O{(UuU {#\$^U {Uuztvz{+zH.O8!{#\$zx} xU\zt{:9

\
+z} OU({\+U({} U.U|x{zC} xUz{\$z6}@\$zHt{!\$zt}+@\${

,
+z} OU({\+U({} U.U|x{zC} xUz{} U&U. Cz{#\$z6^x ^U {

!

,
+y+x.
L
zQ@{6\+U  z{}U.x!{4\$zQU({4x\$zH^x$} !\$U(Cz{1.zU {4+zR{zX@{U(
.zHzoz} z{! x!{ ${cUy++z\$z4}@+{:!ey+CU( zH.!{d!L} ! !ez{cU({d\$^U {rU } !\$U({#{:x
!|ys!! @{#Czt{:ztIJ
@\$!{d+{:!\+!{d}U.
Uux\$z x+} !\$U( z{
U
+z} OU({x\+zHx+} !\$U(Cz{d\$z6U(t,^zU({8,aN{9s\$z4}@\$[^! 

{
+z} O{(Uuzvz{+z.O8@{#\$ztxG}xUz{9UuU {#\$^U {


3{N!zx} !} x)} U\)} zO\$zO!} }zt{:U

+x\$zRU. zO\$zR+{:+@xUVD} z

\$z6!} } z{U

,
${:ysz} x*'G} Qz;.U(\$U z  U {z68\$z!!\U(9

Jx^Fzt\U(} !\$UD\+z6T${b8 C\$zHJz{ >vCzHU(zt9Jz6x*U L.!} x\\$ztvy+CU y+xz!xU

\$z6^! 

pg_dumpall

^. x"H.!} zy DU({F{:x +xzH^z{F!.zH^U({QzH.D'zD\$zN(C\$zHz{6} U\.U

y+!LH.zCU({\$z4}Uz1x\

husped

z{y+z} '+} 6zt;U\. Cz?\$z4(Q!+xQzuF} +!L{z4zt{Fz ,^zt}^\$U

postmaster

z{c,\$@ez{+{!{:U(} zs\$z6\$U.xxUuU(} !(3xOzHmJztQ\$z6O} Uz1x\Va

y

puerto
${y+z} '+} zy++zL^U.a^zz=>v,;Ugzt+}ztCU.\$z\$U.xxUgU } !3x/zHfzt
}+!(zt{^ "

+!C\s
\+Uu} U\
z1xU
z{ +
\
.
zt U|z{c,
\+!\$z6y++zL Uuzt{
postmaster
P!!t`!@U|zt\
!U(\+zF
!x@ z4\$zFz U(
U+
hE/
8{x({zFQx
\$x} !\$U(9


3{!^zHx} !} xN}UN} zd\$z#!} } z{U

Salida
pg_dumpall

} CzLQ+} zCU|UDz{} x xLQ

+x\$z

nombre_de_usuario clave_de_acceso

stdout

La conexin a la base de datos template1 fall. connectDB() fall: Est postmaster ejecutndose y aceptando conexiones en el Socket UNIX
en el puerto puerto?

U&y++\$Ux{z)!ys U(} z{U

zH<QQ!+xq&y++zLU

pg_dumpall LxJzF+{c^z\Xz{cz[.z{,^ztJztpostmaster
x++zF+z
z{c^"Fz,z} ,
postmaster
\$U {zR}U( zt}*^.zH?zOzH.zJ$"t{:ysz\Vy++zLUV+z+{c^z\gz{y+zt}x+} vxJ{:g !\$z
z{y+z} x+}!\+U {

!

 ! ,U)+{u! {x{cz.u\$z!^zH^x}@}xJztx++zD+zD+{c^z\uU \^zHx\$U)@{


}Cz\$zH
} x!zt{\$z4! zH^ x} !} x\
La conexin a la base de datos base_de_datos fall. FATAL 1: SetUserId: el usuario nombre_de_usuario no est en pg_shadow
3N{^ z\#
U$^ xzH
zQ
RzH !\$4e!x\$OzXOCz!} x
$UzQ{zLOy+zL.x
x\$UDzv!} } z{U|+U({ zt{ ?U\^!})z4}U{X@\.xx{pg_shadow
^ !\$U(+U {cCz{

dumpSequence(tabla): SELECT fall

U$^xzHzOy+zL.x{UVy+@Oztz#N@{:zQ\$zO\$^U({ 4U@}*^zO{.!\.xx{^ !\$U(x$U({c,


Cz{

Nota: pg_dumpall ejecuta internamente directivas SELECT. Si tiene problemas ejecutando pg_dumpall, asegrese de que puede consultar informacin de la base de datos
usando, por ejemplo, psql.

Descripcin

{:z\$x{zqy+! $J
U(} ![ U(\$!{O!{N !{z{R\$zu\$^ U {E+
U({c,
Cz{NzH

$} zCU
pg_dumpall
L
.x"QJ+zt}U^! Dy !{!\$U(Q |} +!Jz{(U( !+y+! ^U \+!{F@{F @{:zt{F\$zR\$^U {
x
} +zzD
z{c^ z#!C}x
UR!{e(C\$zH
zt{e} U(Cz}c^ !{ey+! }Czt! UQ^ x}.
zH z
pg_dumpall
} !\$F
O\$z4!{d@{:zt{\$z4\$ U({xJ
U(} !\$!{d^ z{d\$z6} !
!eU {\$ U({

pg_dumpall

U.^U \+!{!{U(y+} xU\zt{\$z


pg_dump

\$z z'G{zU\.x^x\$U {

#zt$"t!{z6 !E

y+zCU

-f -t

base_de_datos

y+! Q!{dx*U(.!} x/} UCz{y+z})UQz{c^OU\^F^xx\$!\

Uso

+!(U } !hU(\$!{d!{#@{:zt{#\+z6\$^U {
M

% pg_dumpall > db.out

Sugerencia: Puede usar la mayora de las opciones de pg_dump con pg_dumpall.

+!(U zQ} !tbzt{^Q !{z6\$zF\$U({


M

% psql -e template1 < db.out

Sugerencia: Puede usar la mayora de las opciones de psql cuando vuelva a cargarlas.

!

psql

Nombre
-

psql

+U {cCzHLK/xzt@}*^xz[zL.x!

Synopsis
psql [ options ] [ dbname [ user ] ]

Summary

x{e
zt.
x
!  !{z\|*CU,zH\U^U4+U {cCzHLK avz! z{$U($^U4 y+z#xD+z xz{x
psql

zt!})^xJz Lx{{+zE^zH
U +U({c, CzHvK$!\){zz^zO +z  zt{:+^{ T^zxz !xy+
} 
z6*CU
N+z ,/
@\$\$xxU1xsy+CU\x\$zt{4. zdU(*.zH^}UQ.\${\#!xU(+{
{z
xz4*zt +z{r U*!} xx ^ z? x^ xu
{} xy^ {b
\/!^ U\.
 xD
Fx\$zJ
@xzH^ U *?^ !{{

Description
Connecting To A Database

U(C\$z4 U}U
z})^ Uf)\$^ !v@{:z
,
^z.zQU *sU(+r^!z*s\$! !{z^zQU({.zO\Xy+U( . z
U *rz{:ztzF\;d
+{z
.
zuU(;x^ Ug} U
z})#
!{
} 
z ^ U \;! U 
psql
U({zRys!.zHzt{=J
xN} U\Q.

\qx
zRU y^ xU\J
{:;
.
z


L
\
Cz{y+z})
x
z
-d
-h x-p
-Ux zty+Cz z\q!{
*eq!v.z
x{Q*U(
\  
\$U(z{[
U\
 zU UV
XU
y^ xUg
x+ z
e
\$^ !{z
.
z!{6z U
@  z{zNU y^ xU\+
{6!CzNCz +x z\$ \$zt*!+ {4\$UV!y+y+ *e U
U\.x\^ z6U({e
.
zy+{vxv} U\
zt}*e
x6\$U.
!x
{U } zH^ { U6{zL
z$U$ z?U } !LU({c
$zF\$z*t+s
y+U L
.
 ztbx{} U.
y+xzH,^ x.
zF\$zH^ zL.
x
z\ L
x
}z[^ zF\$^ ! t{:zF{zL
z${zt{
z?{.
z4\$zt*!+ ~}
}zt{#@ z U V\$U


zo^ UN{:y+zt} x* z?y+U(
x$.
U({
{zH,^ x
{ $
z
\$z*t+J
+{z:
.
z6x{b U(+3
xO+{zL
.
ztH z4{:.
z4x^ $z6\+ ! t{z U^ z( 
 U(
} 
 ,^+{c
} U
z})^ UD
|\$^  !{z6
\$zt
|+{zL
.
z { U +\$ @@{:z?!\.
x
x{c^ ^ U
{U +\&
zux
*U(L.
z\; U(&! U(#
 U(+F!} }zt{:{Qx
^{ L
U.{
z|U(;{U.
z$^ ysxq
U(
} N
!{UO{:z zzH
xCU.
zH;
! x! z{$
hEN
T(
T Ts
*+
h ;$
*+
hE$
)+
hR3#

Cz{y+z~})^ xJ
zt ^ U|!y+ys U(y+ x z
!+z{
psql

x{uXCzH +!4$U({c, CzHLK} xzH?4!y+y+x} ^xU\

U(#zz\#^UueU(

*e^z6} U\zt})xU/} U(+\&U\J zo.!\$z4*U(eDCz!{U\8z

.!{cztx{xU\JCx|U\m^zF{:ztz^@z} 9

Entering Queries

a/U(.@U(y+z ^xU\

psql

psql

psql

tx{:+*^+} xzHy+xxzH z{@y+U({c,

xCzH^+Lz CU \&^zL.xz

y+CU\x\$z{D)y+CU\.y ?x^z.z/U *oz/\+! !{zm

x{} + z*^} U\z})^z\#UD*U U(z\X  ^zF{c xua++a

=U(bztL.y+zt

$ psql testdb
Welcome to psql, the PostgreSQL interactive terminal.
Type:

!

\copyright for distribution terms


\h for help with SQL commands

\? for help on internal slash commands


\g or terminate with semicolon to execute query
\q to quit
testdb=>
T^zNy+CU.y;zR+{:zt=.! y+zNx#vKg $ztxzt{

C\$x
@x vxy+$xz{6!CzQ{zH:U
D
z? !} z\zH4+z \a^zL.x^x|{zH.x} U(U\x{dCzt} z\ TuzH\U *xz?\$U(z{U\
zt.
x
^ z|V +z ;$
+{R+z xz{N} g
 z{y+Cz@\fU
zF{zL
z@exzt{R*U F} ! x *x^z
+z u!{d{zHJ

\Xx U(s
z CU ^H^ zF+z uCz{+^ {#@ z4\$x{y+! z\/U^ zF{} ztzH
SzHzJztD+z Vx{6z1z} ^z\$

zz zt\V  \
  j$i

\

psql

Nj

!{Uy+U {F*U !{\}  UU(+{[UxG$} ^xU\qzHzH^{

psql Meta-Commands

T\x U()zzbx

s zx{?x^XV+Uzt\q !} {:@{:Vx{?


)zH
x
{z* $
z{zV} UQ.

\${D!Cz=.psql
! z{
psql x %&zH^  }UQ.
xzt zt{cx*U(#!\.xx{c ^xU\/U #{} xy

\${4!Cz[.
U(CzQ}UQ.
U?
psql
} 
z\/{!{U  !} {!{} U\Q.

\+{
psql

} U\Q.\x{Dys U(} z{{z{

z*U(.
$

U(*
} UQ.

\<x{^zV !} {!{*U(U(Vzt\xQ.z\$xz g/} U\Q
.\1Jzt ?zfpsql
q! .zH{ $z@L .zH^{R!Cz|{zy+! H^z\&* U
^z} UQ.\
zD
\/z!} U z u
U
.
 zbU(*JxzQ{y+!} z6} ! !})z {
LU.x} +\$zuxzt{:y+@}z|x^Uq@.zHd U(1.+{c# +U\^zxdx^{:x zu+U\^z LU
x
} +\$z|V{x
z+U zx U.{+} fg
!
.
zH Jy+Cz} zzt\xd
q !} {:@{: T
\^ x
} U\^ !x
z\.x)
{x
zR+U z{6x{4*+L zL.
U( zQ{+t,z}):^ Umo x zR{+ {c x^  xU$
{4*U(
8a
zt
x
z9
8,^ ! 9


\
8,^ z} ! !})
zFx z\n

xJ
z
digits \0
\0xdigits
\$z} x.
\t
!@U(})
!@\
U(zL@\$z} x.
digits
!v} U \+z9
*+U\^z\! .zH zHxJ{Dx^&/} U U;8

9sxx{! zHf@{N&!x@ z\/z


!+z6U(*^z[! x! z6x{=^! zH!{xzF@L .zHx{c:z@\
T .zH^{^!Cz +U\^z\x&! !} \x} {V8

9!Cz$^ ! zH&
!{/} UQ.

\x
z&^ 
x{
zFU(ysU *zQ} UQ.\X8xV !xx$JzxzQ z.U\z\$9Jx{
$
@zH@{=^z6! .zH!+z $z4! U\zFz{} !y+z?{:zt+zH} z{#!{U|!y+ysux !} e^x} {
y+!{{z\&^U zF{z

vU.zO} U\Q.\+{o! z4z4.zNU(*$&LK.x\$zH^x+z8{+} X@{?^! z4.z9$!{!


.zH $
z{z!
.
zH^ {F*U(U ^ z{\ !uC+z{6U *pL
Kq
CzH
!c\$x/
\$U + zN+U\^ z{ 
x\$zH^ x$ztQx
U(?
\$U(+Gz+U zt{|x{N} U ztC}zt\ UqU(z }@{:z = U O!bU ztQ}UQ.

M \${
\$U($ z4+U\^ z{!Czo
Us
{y+z} x!v
\/x  z} U\.
z4y+!L
U(*^ zF!
.
zH
+!{x*U(b@L .zH^{{c^U y+{?z/JU\^zd+Uzt\q !} {:@{:U(} }+ { $x{x{^!z
!{p^ zz
x
xN
U(* 
z .
zH  }UQ.

\ $
z{y+z} x!1{z $z
} z
8,^ VUQ !} {!{z{9
.! { zz
\U(*L!
.
zH^ {
\|} U x
+zt{y+! {:xL
Ku
+z xz{ \\
x*(
 $
v
!v
K

\
} UQ.

\${} 
 z6*Czz .
xGLz\XU
Qx
z c 
x

|} !{z^ zF!
.
zH {dU(*
.
zHpsql
^ 
} U\Q.

\V}
U\J
}U x
+zQ z U
\# zFzHJ
\/U * zFx
z
$z6*U U(x .zH^} U\Q.\+{#@ z?\$zz\
\a

*z} +CzH^! zU ^y+(*U(L.(x{b!x\z\$t{x^}$^UR!x\z\

x{h
U


* x
$x{R} U\Q.\fx{O zy*U 6 @} !C\s{Q} U\.y+x xx
vztz6+$ !*U(b[zz@v{:U(xGU?
xezt\${:zbxUXJ!xezt\

!@

\C title

vz=^z^xz/U(*^! z{N ztxfy+ xzt\!{z/Czt{:+#U(*?/+z U(O{z?


x{u} UQ.

\x{uz+x
!zo U
z&
.
zXU(*
$
8,$
title
title
x{?} UQ.

\g\$ztx
z{* U
!} !y xU
!1!{?x+
\pset
!{?ys zJ
xU(+{
U\
V+{z\ U{zH^ z
}@y
xU
x/
 $
%/ ! z 9
{:+} x^z

8U(

dbname username
${c! x{z{dQ} U
z}) xUmUz\$t !{z6\>LU \$ze6+{:zth.z $z4y+CzH
JxU(+{} U\zt}*^ xU
x{} U {z\ *
x{
^ z?} + zv
\$^ ! !{z=
.
z?x{!{{:.zt\
dbname *
x{U.
x z\#^ zF} +CzH
+{z
.
zFx{!{{.
z\
username
T{O{y+z} x!$C+z$ $$! Vx^ U(

)!
.
z {Ox}U
z})r U# zu\$z*!+
\$
t !{z4@{ z?\$z*!+(
+{:zte8@{U(VU +\
zo
U\ z
 D{c^ !^ x
x
U(
psql

|@L
.
zH^ {9

\connect

\c

*hz|} U\zt})xU^zH.yb*!xz\8CU.+{zL.z!} } z{{Q\$zxz\$zH^}

9^ zDy+CzH
JxU(+{O} Uz})xUx$ z|zy x*dJ\fU.x*
x{Qxx^z !})xz.U(\$z SzH
zLzt} ^ x

U x zt@}*^ x
z{:} xy y+CU(} z{{:xpsql
xQxQ.zt\$xzt{cU(yx
z U( $
x{D\$x{c x
}) xU<
!{|} U({:z
!{X+{zR} U\
zH
xz
}z/
!x
{c^  y+U {DU\^ z
U\
z4
\$!
\/Q{!*zH^ U.
zt} 
x{c ^ 
{:} xy {#!CzoJ
U\
@}} x\$z !D!}) x|
U\m^ z
 Uu
\+ t !{zFU\m^ zFU\^ z
\

\copy table
with oids
from to filename

v
1
miters characters
with null as string

b{^\$xb{c\$U(

with deli-

+z *U L.{4*CUzHJ\q8} xzH9e} U(y+ $x{6x{4XU(y+z ^xU\^$C{4)LK #N$

}UQ.\$v ex{czt!\gU(*pz !} zH\gCzt\$x/U(? xx#zN{:y+zt}x+z\q+z(\

}U{z+zH^Czt+xx !} z\!} } z{{\{y+z} x!4+{z|y+ xxzH z#!{z4@{


 zx) U(\U^zD+zD{{cz@}} z{{x z ^z| !} z\$

z6+zF\XCU(zt{x^zF\$^UDU *CU\

zt!\s{QU ?x^z{

^zF !} z\/U\^U ^zFpsql


U } !v+zF{{c^zH

$zu{\@/U *zu} U\Q.\&x{Rx!U^^UQzuLK n Z $ } UQ.\${:ztzx^{


\$z{} xy^ xU\
*U(r z6\$zH @x{ U\^ z s
 zt}@${z4U *  x{1{:y+zt}x@ ys!{x| +zt{!y+y+
U$^ z+ $} UQ.

\ ,X
y+!L^ x}+@^ zE
! x! zQ{+{c^ x ^ xU?X
C+z{4
\q !} {
!{Vzt{:} !y+zt{b\$UU
Us
!y+y+
Sugerencia: This operation is not as efficient as the SQL COPY command because all data must pass through the client/server IP or socket connection. For large
amounts of data the other technique may be preferable.

Nota: Note the difference in interpretation of stdin and stdout between frontend
and backend copies: In a frontend copy these always refer to psqls input and output
stream. On a backend copy stdin comes from whereever the COPY itself came from
(for example, a script ran with the -f) option, and stdout refers to the query output
stream (see \o meta-command below).

\copyright

vU({^zF} U y+ xJ\/\$x{c x xUzL.{#U *

!!

PostgreSQL

\d relation

vJU {D!b} U Q{DU *

8x} &} U +\ zV


@Gz
xzF$x
\$z1+U(R{zH
relation
U(\$z*!+^{vx*
NULL
 *rzuCz^xU\x{:xf*!})
m @ zJq\$zz\&x\$x} NOT
z{R!Cz|!{U.x{czt\ *xz
ztH^xU\Vx{#xzQ^z[xz\$z
x xU/
x{#!{U|{U(m
+zH} z9;^zx y+z{(\gV{y+z} x!,^x ^z{4{+}.@{

$z?} UQ.\/*U L
x{bx\$zx} !~ } UQ.zH^{#!{{U(}xz\x$^zo^! z
}U(Q
{!Cz?{U mV!\d+
{zt
Nota: If \d is called without any arguments, it is equivalent to \dtvs which will show
a list of all tables, views, and sequences. This is purely a convenience measure.

\da pattern

+x{^{!(!x!LzQe CzH H^zF*})xU{:U zHztbx^&^zQ\$^ y+z[^zU(y+z z


8QCzH
+z1y+Cz~{{xU$
9Jx{#{:y+zt}x+z\+@U\
U.
 } x|
e
CzH
^ z{b!Cz
*
pattern
{:U(m
U\

\dd object

vU({^z6\$z{} xyxU{U(*

8x} V} 
 z4RCz
+tbz1y+Cz{:{xU$
9@U(U *!
object
t,^zt}*^}Uz {Ne Cz> ^z{+*})xU{+U ysz
8
U({ y+z{vCztxU{?8,@zt{
xz{vx\+x}zt{:L{z+zH} z{(@L zQU(,z})^{:9LC+z{v\
 xe z { 9J=U(bztL.
y+z
U t,z}){Nx*rU! .zHdx{ xJz

=> \dd version


Object descriptions
Name
|
What
|
Description
------+-------+-----------------version | function | PostgreSQL version string
(1 row)

zt{} xy^xU\{Q*U(4U(t,z}){Q}g z zHzt^z\x^ ^z


.
\
n

Z[[

l$ro

Z
r

vK} U\Q

Nota: PostgreSQL stores the object descriptions in the pg_description system table.

\df [ pattern ]

$x{c^{!x z*})xU{^U\ zH^z+x^ ztx+!.zv\uCzH+L y+z{ *


pat8DCzH
+!#z1y+Cz{{:xU
9x{6{:ysz} x$zt\$(U
.
^ } x)
*
}) xU
{Q!CzO{U m
*
tern
zX*U L
x{|+{:zt\$@\$\$x
xU
!dx
*U(.
^ xU
! U(4
z!} <*
})^ xU\
x
} +\$x

+
z6\df+
\/\$z{} xy^ xUV

x{#{U &

\distvS [ pattern ]

$x{x{U^zV!})^$@} U\Q.\.z $zzHz {x+{^~sq{c^\<*U(Ox\+zL


^! z(M Cz{y+zt}cxz > U(} X{:ysz} x*VVU(!
U *?^ zH
x

|U(C\$z:^ U|U(e^ !x
Qx{c x?u
U(* ^ zH.
^ U\
zH^zbx^UUz6U mzx{
{:zt+zH} z^! zxzQ \q{ {^zH

x{u{y+z} x+z\$$x?
x{DXCzH
+!Oz1y+Cz~{{xU\<
Cz{c x}){^z/x{cx1^U^U {z
pattern
*sUzQ!y+y+z\${R+4UUzQ} U\Q.\Q.z!z!}
U t,z})
x{#x{c z\Xx^Vx{#!{{:U(} xzt\/\$z{} xy xU!x*s
*

U t,z}){U {z4.z[.^} z{

!@

\dl

$x{x{!x!{#*U(

^x} V{U {Fx{JU *! z6U(,z})^{

\do [ pattern ]

$x{^{DJ@x! zVU(y+z U( {Dx^^zxRU y+zt\\CzH^+1^ysz{ *


x{
}zx{Fpattern
x{6|CzH $@
8Lx
zLys z{{xU\
 z/{+ zm Uf +U\^ z/!d{y+z} x!d} !@}*^ z{|x<
 U(U(y+z  U(4
.
z/x
 !} {!{z{ L
Uy+CzJ
z
x zty+Cz ^ xU\V
U(*^ zO @} {!{/!{E
z } UQ.

\$1U(
.x
J!{U|x{&^U|+U z^ z6!
.
zH 9
{:y+zt} x$zt\$(U.U yszU({6x^^:.zx+ z{U(

\dp pattern

$x{Xx{)!x!{/*U &x} !{Xx} +\$z\*U(x^{ ztzQz.U\x}!+z

8@\sx{y+!|y+zL.x{:{xU{!9

\dT [ pattern ]

$x{c{b@1\$^ y+z{U(eU\^U {z.^}


$z?} U\Q.\*U L
pattern

{:U({zt^6x*U L.^xU\

\edit

8U

\e

filename

\dT+

x{{:y+zt} x$zt\$
zQ+zFx{z\+x z\X
\)@*a^ zp zQzt\$x U(bztLxJ
x{} Uz+x{
filename
*\UN!.z(x{hxzHz} +CzHv +z D +*^*zt
x{} U(y+xz\&^ U|4^zH.y+U(! D$zFx} Vx{=^zHz\$x^z\/xm^zF{.zF*!{xU\
*

}U(y+xz\u !} ^U^z+z N $*^*zt


$zz +z.+*^*z6x{4^zHgCzHy+t{z\f!} } U C\x^U^zUU L.!$C+z{OU(*
+{e U D} 
U.
! z#!{} psql
xy^{
8,$
x{4! v+{z+
 *U(^  9$
x{o.
z
{4@{:U$^ $
x*: zO+z VzH
\${4x^ )8U  ^ z
}U^ !x
{:9b{:z.
x} U U
sxb
x{OxQ.
z\$x^ z.ztLz} ^ z\ ag
U zF} !{z{Fxd
x:.
ztCz
!xJ
x z4+z u +*^*z
zCzrzdVU(z# +*^*zx{Cz^z\N!{e{x zxz

Sugerencia: psql searches the environment variables PSQL_EDITOR, EDITOR,


and VISUAL (in that order) for an editor to use. If all of them are unset, /bin/vi is
run.

\echo text

JJ

+ x{^zO!.zH^{^U ^zR{c^\$!C\XU ^y+^L{zy+@^z\X UzO{:y+@}zQ\)*U(U\


x{} 
 z6+{z*+ UDx z {y+z {zFx
*U L.
^ xU\
x zFU( y+J
U *
$
{:} xy
{ = U z1.
y+z
z\/ uztxz

=> \echo date


Tue Oct 26 21:40:57 CEST 1999

*?zF+ {c! )zHJx{#+Uz\

-n

z[^z[ !xxUzxzFx{=Us x,^zH

Sugerencia: If you use the \o command to redirect your query output you may wish
to use \qecho instead of this command.

!!

\encoding encoding

vz
{^ z4} xzH
zH
} U(\$x
@x* U(!Cz?+{xU.
+ x \z?zH} U \$x {
.zH^x{} UQ.\X{U {=zF} + zJz}U(\$x

\f string

vz{rz4$zt\/{zy+! ^U e*U !x\z\X+z DU ^y+

{:\. U(9

\g

S&x^UJ u! 

$z6\+z*!+ x{

Lzz6@{:U|$+@ *U(b[zzx}!DU *{zHxU(y+JU y^xU{

68F!y+xysz

filename |command
LzH
\${ zu} +CzH+z qxy+d+*^*zto^UQzu !} zH\f\fU(yxU!g{z{4^z
U ^ y+d
x
U(Fy+xy+z{4
zuU ^ y+#
x Uq{:zty+! H^ z3
x/{zh^ UgztLzt}^ z
x{
xL +!uz+x
!zH ^ UuR{zH.
x} U U T
x
V!
.
z
T !Cz
filename
command
\g
x{Q@U\
zH {U O!^ z\g
L
^ xJ
z U ^ zQ+|} U\.

\
8U

command
hRxJzN{:\@ztygU\^^z{y+z} x+z\gLK}UQ.\ *
x{(U\{:ysz} x$zt\$
zH
xx{+
!e zO} U\.

\${?*U bx}X{:\^!Dcommand
zyXx{?!x! z *
psql
x{V
@{^ z x{|8! @9H z/
{\ !Ozy/U/
@vvKX
} U\Q.

\${x{#{U m command

\help

\h

Nota: To simplify typing, commands that consists of several words do not have to be
quoted. Thus it is fine to type \help alter table.

\H

L$L{OU

$%1*U L.bx{R@ zt\$)U\xdx{


x{?} UQ.

\.x{4*U(d} U.
y+ x
$
 xxu\/} U\zHxzH} zt1 J{:ztzF+$@J@ U {zHx|
U zU ^ y+s
U(y xU
{

$%/+ztqU(y+d*U(. *z

{:x^} z\q !} $^U$^zR\$zt*@+s!xeJz\z+*U L.

\i filename

#zt!\${xys *CU\6^z4+z
\z1z} zt{x !{p^U  x(!\ztzH y+z\
filename

U\m^zFzt U(!C\

Nota: If you want to see the lines on the screen as they are read you must set the
variable ECHO to all.

\l

8U(

\list

x{
$
!^ zV\$^! t{:zt{|x1^z/{zzQ@{Dzb@{^zxRU mzt{ TNy+y+zH\</$&U
zV} UQ.\ .z&^U{zzf\$zt{:} xyxU{D*U(4z/\$! t{z{|@{|z *4 U(+
$U({c,
CzLK
x{c!^xUV@{#} U.y+xz\/x^$.+x \zFz}U(\$xD{:+ysy+U LHz6z
}U(\$x|
{:} zH.
zFU(*z!} \$^ ! {zFx{#{U mV
!{dz

\lo_export loid filename

dz!\${z|! zU(t,^zt}*Vx^a
*CU\
^z|\$@ !{:zN\fx^z{FxU
fi-
x*^*ztczH*CU
zD{zLz4*})xU
U^ z ^ p x{Ox{F{+\ .\$loid
lename
lo_export
x}!})^ {#x^ &^zFy+zL.
x{{xU\
{U *?^ zF+{:zt^ ?^zF\$^! {zF{zLz {#!{d\
U\m^ zF{:zt
z~G{d+zF{: {c z

!@

Sugerencia: Use \lo_list to find out the large objects OID.

Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.

\lo_import filename comment

^U Cz{^z#$zdxUO=+U({c, CzLK|!@L zU t,z})

}UQ.zHJxzFU(t,z})

$1.y+z

y^xU\@ xv!{{U } x^z{z= xzH

foo=> \lo_import /home/peter/pictures/photo.xcf a picture of me


lo_import 152801

$zOCzt{:y+U{zQx\$x} zt{J zQ! zFU(,z})+Cz} zxz\.U(t,z})+x\ P!`! 7@ x}XU\z


U 
:^ UCzH.
zH.
 zdx*$U\
zN {o^ U!} }zt{:{^ zNU(t,z})e
zJ
zt#
!x = U =^$Czt{:U
x
x{OCz} UQ.
zH
\$zt\  U)@!{F!{{U } x^ zD|.
 Cz!\$t zD} U\Q.zdxgzHz 
U t,z}) $
U({zQ}$ zH
 zF{zzV
x^ mzQ  } U\Q.

\
U\^z^p^x{F}UQ.\x{6{+e^)\+x*^*ztczHe* U

^z{zLJztL{x\$z

lo_import

 zH

}@${zxv!})^{!{h^zU } !!+{z+U zU(} !1+z{: {cz.t zt ^U^z{:ztz~G{+{z


\/+zF{{cz

Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.

\lo_list

LU({Qux{cbU(*b!+U({ ztvK!@zU(t,z}){u} +CzH^/{^U Czt\fx^^z|\$^!v!{z

!U\|xm^zxbU(mz {

\lo_unlink loid

ztzH^z{=^zF! z6U(,z})JVx^mD,

loid

* U

^zF\$@ {z

Sugerencia: Use \lo_list to find out the large objects OID.

Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.

\o

filename |command
L
z{u* +CzV $ztCz{+{U z/+z
U Ry+xy+z/*^$Cz zt{:+^{|xU
filename
{:zty+! H^ z?3
x6{z URz1z}  z
*UR! .zH{e!Cz#{y+z} x+z\$*z+z 
command
U ^ y+
x( zFCz{zH?^ U

stdout

!

!KD+ztqCz{+^{:x} +\$z{N!p! z{}UQ.\; zt{y+U\{z{\Ux} z{NU(\!xJz\


*CU

z6\$@@{:z4{:ztz^@{z(!{#U(y+sU(* ! xU(+{ !} {:@{:} UQ.\${^

+z  ^z6\$^! !{z48{+} V@{+9@ Uz CU p.z{{zt{

Sugerencia: To intersperse text output in between query results, use \qecho.

\p

$ x ^z6} +CzJ+z |+*^*z:^U ^zF{^\$!C\U ^y+

\pset parameter value

$x{b} U\Q.\V{zH{U y^xU\{d!*^*z})x^z4U(y+(U(*+z  zt{:+! z{


parame\+z{} x z{$x} |U(y
xU|
x{: UR z#{zH $
z{zH.
^ x} {U(*
\$zyszH\Uzt ztU\
ter
value
T\v,+{c
! z6ysx^ xu
U(y^ xU\
{@Cz
M

format

LzH^{x^zFU(y+s*U(.?^UuU\z6U *

+zF!  z*x^xU\{#!Cz6!U(z\



@U(
3x
aligned html
latex
U +\.zUzQzHztx{#zHU( 9
,8 $unaligned

@3!x\z\$6x^z{#!v+z\${#U *J4+ysz6U\Qxzt!{:zty+! zt\V  ^z6} +Cz


@}*^xz/$zt\{:zty+! U(

x{x{ux^ zH
\$zt\ ^ Uf} Cz zXU(^ y+o^ o.
x
4 zXx
$
^zH\$zt\^^U zNCzt\gx) Uzty+ U .{?8,!\{zy+tz\+L} UQ.{:zty+! zt\$9
@Tx\
z\$=.
U(\$zx{p^ z#{c 
\+!C\$:.
 Cz!\! z)
x} zR*U(.
,^ z\U ztL
U(
ys\^ J
x{d\$zt*t+ e
Jz6 $
%1s
Q
\V$
L
z#
.
U(\$zt{#y+
U e @Gz{ 
!Cz
x^ zH
\$zt\  Uz/x
}+\$zt\x
\$U(} .
zH {|+{:x1 zXCz{y+z}{ x
z#.
! e +y<
+
z $
ztD@ z
U
} U\.
yszH z4\$U } .
zH^ {! 8,$
x{x)
x
e
U\J
 z4{UD\$ .
 x}dx
%1$
t J
xm$
L
z
 U &.
+{c

zFQ} U.
y+zH^ zF\$U } .
zHJ
!ysy+z 9
e

border

$z|{z} U\\f! .zHh.+{cd zD . z a zz !ezDx z[^zUQ

 ztE^z#.U Cz/ U(C\$z {D\xz{ ^z&@zt{|x#z$ o^x{u\$zy+z\${U\

^zys!^x} +!F*U L. a e%11.U \$zt^x{Dx^{:z\$xCz})gx^U ^z


,^ xG^ z$xz/U^z {uU1J@+z{ 7 8aU U C\$zt9 8x^zL!
border=...
\+xJ
x\$x|
x
z{9@
\X`Q8, @ z6*.
z9e.
! zF{zH
{z
expanded

8U(

LU\z{6 zH^zzHX z+!#\qztLy+\+z\)*U(L.

Sz.zLys\$z\)*U L.$x{

z! z\$t!(U ^y+!{xUu} U(Q{xm^zF+z\#.zFUmzFzt*a\#^z


\+RUzO x

$x{o.U(\$zOx{6+{z*+x*:zO\$^NU(+\e+U\^zN{} CzzH

xm^z[U L.!(!U( x!U\^!.U(\$z

+Ly+\+z~\#.U(\$zFx{#{:+y+ysU L u@v*U(+bU(ys.U \+z{

null

$zu{:zt}U\&!.zHdx{O{c^x^b{U +\; zuysx^z\&VzzHzF+z\


z\$z*t+R
x{
UE^ Uy+ xR

\^ x
x} } 
zt!{:x z.
x{c 
$
zHX
*U(^v{! v/
zH.
y^ /{c^ x $
+{(U
z.
x
$}U(U({:z Ux^ z
\pset null

x{&+

"(null)"

!

fieldsep

Ly+z} x+z{p^z?+z\u{zy+@^U( UR z+{z\x|!x\z\uU(^y+.U(\$z

ev!

Uz} q} Czz *U(zL.y+z\^!\eU ?} U\Q.{zy+@^z\U ^y+ x} gU\^z


ys U .{p.xy+Cz*zt

"\t"

U{zH
(^ !N@{b$zt\{zy+! ^U ^> y+z
L
ez6\$z*!+J+z\X{zys!U(x{ F8F!y+xy+z6{e. U(9 \pset fieldsep
|

recordsep

vy+zt}x+z{zRCz} U C\)8xz9e{zy+! ^U x^U+{:zRx.!x\z\gU(y+.U(\$z

\+z*+x{#4zxzF} ! !})zt
8U(

tuples_only

1U\\zt{? zH^VztzH+y+z{U\\)*+ \$x{:ys!

=+ \$x{y+!$.@{:U(

x*U(L.xU&{+}&@{} U(Q&z!\$zt{x^z{$\! xU(${N*U(U\^z {


U .U(\$z!U!})^+!;@z4\$^Fx{#{:U(#

title text

$z

zt^ 
a 1^+y+z{

LzH
{ z4 @z^ x zO*U(d
{+ {:zt+zH^/ysx^z\Q! z{ $x{?} X zQ+{z\QU
xz6 U +U ^y+\$z{} xyxz(^ { *?Uu! .zJx{xxzHJz[^xzFx{#{zH

Nota: This formerly only affected HTML mode. You can now set titles in any
output format.

tableattr

8U(

text

TGU {b U 
UR{y+z} x*R
N x zt{p^UR z?y+@}zt{x{x\$zz $%1$^! z=^
$x{e}U(+\u*U +ztL)y+z# z
U(
Uz=^L U(y+CU  @
cellpadding
bgcolor
\+U\
J
 ^ Uu{:ysz} x*
zCzt@!{=^x{!Czt\$ ^! zH}@ z4U * 
border
\pset

border

pager

U\\
1
z{4^ z|x{
U *uy+
z U)\$U# ! zNU ^ y+ *h zzH
x U.zH! x! z
!ThEgx{{zH^^zFU ^y+Jx{#y+xy+z\UzF{y+z} x+z\y+CU\  ^z x{z
more
x{#+{z\
,q}@{:zt

psql

Uq+{:zt{4zuy+ z?x*dxd{zzH.{O!y+y+CULy+ xz

$.z{

.U\Uzp^x{r^e^z6U(y+ x{rUozL.x!v\m^\z(^! zU +\

U(L.!U U\z{}CztzH L z} +{zU *e^z.U(\$+!^+CzU *\^zy+x?x


CU(
x
zt{x
xG{=
Us
!! {#ysU {{x zU|ys zt\$x})?^z[. zbU(*xz{=^x !})
^+!O z#ysx^ z\ = U  1
Cz{U
x
.
;
U\L
!y+y+zt 
z O\+x{:} x.
x
 x?
@U(
Vz&^ U|+{z[^ z6y+
z
\Xpsql
zHm
U  U
+{c ^xU\{UU(
{:zt}*^xU

^z{z)\$x*^*zCzH?*U(L.{|U U(;} <zX{zzx

^z 
i  G
C

Sugerencia: There are various shortcut commands for \pset. See \a, \C, \H, \t, \T,
and \x.

Nota: It is an error to call \pset without arguments. In the future this call might show
the current status of all printing options.

!

\q

KD+x ^z

psql

\qecho text

JJ

y+CU\ 

$x{#} U\Q.\.x{x\$zH^x}@;U+!
$|ztL} zyeJ!(U(y+sx  zFxz^U ^z

+z uU(y+} zt!!{d{:z +

\r

#z{zH^{8} zt{9zF $zt| +*^*z~

\s filename

x$
+
U({:J
z^ zN} UQ.

\gx
zRx{^ U(^ U
x{4U.x,^z\$
*
zx{cU(x{ x,^zH ^UE^z4{c\+!C\|U ^y+ filename
U\!x! zx*
ex{U y^xU\|x{bfilename
psql
x{} U

+Cz\&^ U|+{z[ zFhR3x{c U(|x @
Nota: As of psql version 7.0 it is no longer necessary, in fact, to save the command
history as that will be done automatically on program termination. The history is then
also automatically loaded every time psql starts up.

\set name value

JJ



LzH^{zOx^zL!?! x!vz

^ U
U ^Lx*.
U Cz^ X
U
z4J
@$zQx{o xzH;^U
zO} U\} ^zH^xU\.U(*$!JU *:name
^zH *:value
U{z} U\\q!.zH+x{o xzH^z! x! zOx{
,^+{c
{zHJ
x mU J
@$z L
UD
{:z
4! x z!+{z[^zF $$ !}UQ.\
!x\

! x! z#.z{} } U\^!x} ! !})zt{\$x x{bJ\\$z {} U Cz{


! x! z~{#*U \$zH^ !x{


{:zt}*^xUV@U(

vztz#z

psql

T^U  f U <!Cz|z} U.zUq{zH#! x! z$^Uqe^xU(;=U(

Cz{#{zHz !;J@x@zt{#{y+zt}x@ $zD!Cz6\$U(}.zz\Vx&^z6{z})xUV! U eJpsql


@x
 z{
Nota: This command is totally separate from the SQL command SET .

\t

1U\\ ^z{:z\$x{y+!NU(* U(y+(} U QU.zz!\$x {\CU }U( *U Uzt $x{



\|x{y+CU\
x\$z\D*U(+} U\
zH
xz} z

}UQ.\ux{zt+xJ@zH;^U

\pset tuples_only

\T table_options

TGU {b U m^UN{:ysz} x*NU(y^xU\{^UNzy+!} zt\x^x$z! z=^Nx

U ^y+.U(\$z

$x{} UQ.\|x{$z+x!zHU

$%1$! +!

\pset tableattr table_options

|command
^y+{E^z|}+ CzH +z . +*^*zt^UQz|+z
filename
}UQ.

\

command

\w filename

U 4y+xy+z{OxhU^z|3x

!

\x

LUe z{ez^zH\$zt\DCU *U L..U \+z

\z pattern

T{${$} NxLx{$z+x!zU

\pset expanded

CU \$+} z{QVx{c#U *d!p^! z{Rxzu\$^! !{z|Vx^^zxF!y+y+CU(y+ xz|!} } z{{Oysz


+
.x{:{xU{?x{czt\ *J!.zx{xxzHVxx{=! zH!{#QCzH +!ztLy+Cz{{xUVx}
x.
x {x zFx{c^ x$UU({z! z{dx} .} x
test=> \z
Access permissions for database "test"
Relation |
Access permissions
-------+------------------------my_table | {"=r","joe=arwR", "group staff=ar"}
(1 row )

#z@\&x{#!{*U(U(V{

"=r" M PUBLIC

!{# zt\X8 k$l$m$ln6o 9sy+zt.x{{xU\VU^z[^! z

3N{:zt
!{+ zt!\$ x z#8 N$odl  l$m$l$odl 9!!y+yszH\$#8 p rk+l Y
"joe=arwR" M
joe
y+zL.x{{xU\{!\Xy+zL.x{{xU\UD} ztH^zFC+z{Umz(! z

"group staff=ar" M

$z6} U\Q.\+{

\! command

hRCU(+y

\

staff
di

!{

k$l+m$lsn6o

\

p rk$l Y
o

y+zL.x{{:xU

!Cz4+{z\#^U|{zHJ!} }zt{:{dy+zt.x{{xU\{

${} !y+z{=UR{zy+! ^zF3xD{zU dzLzt}^z{=zO3x} UQ.\

!.zH^{d!CzoUs*+^zxzty+Czz\+HzF{zt x {zz(^zH!{dx{

\?

hRzHzy/x*U(L.xU/@ U ezF{!{V8 vt9s} UQ.\${

command

$z

Command-line Options

*v{:UN} U +Cz\$

U\|U y xU{


\$z {c 
\+{ U\^ u{c^ 
\$!C\u3
xF{U((U(yxU{\hR3{c^z
psql
zt@ zU\!x zFU!({: {cz.{
$zF

!!zt}U!
+ xd!:^z|xz{E^UQz|{} CzzHg!{4^z.@ zDCzt!\ $x{Rx{E.U(Cz|+{:zt*+$*U 4{:} xy
$x{x{zt+x!zH;^UO{zH,^xJz! x! z
 . U

y+CU } z{{xR zt ^Dx^z !})xzx.U(\$z

all

TU\!x\
Lx^}zt{pUR@xezt\U(y+;)U \$z ,
8 $z#\$z*!+1U ^y+.U \+zx{eU\^z x{z@xe
z\ 9

!

}@@}UQ.\

query

Ly+z} x+z{^

x{^UzLzt} ^zQU\zQ $zt{c^x 

psql

+{:zt*+vx{z {} xy^{

query

!\^zHXztLx

$x{?x{

+{c(
.
zzx^z$4+z N{c x(x{b} U.y+zH^zNy+! {z! z z? !} z\
query
}U@x{U
{y+zt}x+}Q*z^+ z{9 U ?xx{6|{x zu @} {!{.}UQ.\
(x
$${d U /} 
U.
psql
xRvK/\
.zH^} U\Q.\${ LUD!} xzHz(x{# U /} U +\
psql
y+xy+z=
z{c x
x U
xz{U

8x z

psql

\$!\$\)z

echo "\x \\ select * from foo;" | psql

dbname

vysz} x$zt{hzo.z4U(*e^z4\$^! !{zUN} U\zt}*eU

$x{dx{dz+x!zH\^UD{y+z} x* x

!{xz6$ {cUU(y^xU\V! )zHJUzF} UQ.\Xxz

dbname
z!zt}U +z xz{
LU(

@$ +zxGz{4^!CzR{:zU&z| !} zH\

J! xt z[

U

queries

$x{Qx{Qz +xJ!zh^U){zH,^xQ^z

,$!zt}Ux\$\$zH
$} U({[^zR@}*^+!J +z xz{ozz zt\q  v\q\.U\^z !} {!{)} UQ.\${ >

U(

}D+{zx{bx*  U x{:UURx} +\$z{:x.x@*})xU!x^NxUN U +eU(muy+CU\ .{

$x{x{#z+x!zH?UD{:z,^x$z[! xt z[


*t!+z

,+* Uxx

psql

filename

3{z4zO+z

!{^ zR{U(+ } zOU(*$+z xz{4x{czt!\qU(*$Cz!\xV+z xz{4x^zH


filename
^zL.xzt{ $x{bx$.!{bzt+x
psql
zH^UU^zFxzt
!(} UQ.
\)
!})^xJzt

T*,^z^z6+z4x{by+CU(}zt{:{z\+

3{xU^x{#U y^xU\x{d{+\D\$x*^*zCz*J*CU\ xx

 U\^gx+\$U/ U z1y+z})^  +{x

psql 

filename

, zHzt@

z! z{6{:U.zx} zD*z^+Cz~{F{+}q!{

x{Q!{U)u{xd} } zb+{:xx{


$zCzD-f
U y^xU\xCz\$+} zUzu{c@^+y&UJztCz!\ ^ zU
ztF
\$ z J
@xb
+{:x
zD{zH{Oxy+bCz\xCz})xUx{F8x^ zU( 9
+@^ zz\ UX xz\ztL!})^ ^ zD{:.
z
U ^y+^ U /U($\XJzoU,^ zHV
!\/ U /zH^ zCz\/zJ
zt\ x|
 u
\
z U(.z{{:zt{OxgxzU. z {

=~@!+z\{zy+!U(

separator
!{4^ z|+z\f{:zty+! U( $x{Ox{Ozt+x!zHrU)$$ !$$ tfU(
separator

3N{:z



@!U({

hostname

Ly+z} x+z{4^zU({c=.zU(*x^zm.!} xzuU\x}z

postmaster

x{NCx

S&x^U Jx{U y xUL} UQ.$x} ^xU/x{y+z *U(L.z\/+{xU } !(3x\$U.!x/{U(})

zH^{

@!.

+L{NU\ $%/1@+@FU ^y+ ex{Nx{Nzt+x!zH=U


v
\pset format html
zF }UQ.\

@!x{c
+x{^{!(!x! z4\$^! {z{zHztLx^{ ztU}U+z})xU/U(y^xU\{!Cz6x\U\
x{#x{{x.
x!h U zFx^ zL
!(}UQ.
\)
$

zt\

!@

U @@U ^y+

filename
$!v+z DU ^y+x^U|+z

y+@!y+U(

filename

$x{#x{dz+x!zHeUz6} UQ.\)+

port

Ly+zt}x+z{Uz&>Lay+U L?U(^ fU\.x{{xU\+:zXU(} !3xg\$U.!x<{U } zH4+z

z^zH{xUXU)x} z

x{?x{c
z
x/
*U(#} U\
zt}*^ xU
{ 
zt*!+ {^ U$ z
J!G$z6U *z+hEXzHpostmaster
xCU\.zJ@xt zQU ^1x* U+{zH^U ^zOysU Ls{y+z} x+z\X
}U.
y+xz[^ x.
z!+{+!uP!@`

,t@!y+{zH

assignment

TGU {R U 1U.{y+z} x*qy+ xxgU(yxU{Nx^z{c^zU *#$$ !U\ z} U\Q.\

xz

UzmzCzV U(JzmU{:zty+! H^z.z/\/J@+zVx;&zt+!b{xe

x{^z!\gU *u{:ys!} z

format=latex

$+{4^UX{zHh^zDU(y+b*U(.hU&$1zH#(U(f} U(+\V x^z

-P


Ly+zt}x+z{^ 
{:U(+\\$Ux^ {uU(+xzH^ \ f\$zt*+^xy+x^{uzG}U.z
.z{{:zt{Q\ psql
! xU(${Fx*U L.^xU\J!+U ^y+ *h^x{QU(yxUgx{Q+{z\$eUzDU(*^x{
!y+y+zH
{ $
x{x{u+{z*+#x z
U(y
xU Sfxx
 U(} <!{:U{:zoz
psql
KD3Na&
! x! zo^ U|@}xzJ
zo zF{.
-c
zFzt*^*z})

,#@!Cz} U(C\ {zy+! U(

separator
@{=^ zFCz} U C\/{zy+@U( $x{x{zt+xJ@zH^U ^zQ$$ ! @
separator
@} U\Q.
J
\
3N{z

{:@@{:x zH{czty
dxg{:x zH{czty.U(\$z $.zt{4^z+{z4x{Oy+CU.yzt\zt*U CzDz@}g+z 
3N{:zU^ x{ U
\$z |
{} xy {
x{R{zHrUQ^z @} zH\$x^zuU(yxU^Uq} }zteztLzt}^xU\!{Ozt

vt!{xzHxz
#{4x/{xzHx+z.U \+zNzCzQzxz^zL.xzt{?N+z 1xzR{zH.x} U(U\

U +\X\$U

Nota: This mode is provided for those who insist on it, but you are not necessarily
encouraged to use it. In particular, if you mix SQL and meta-commands on a line the
order of execution might not always be clear to the unexperienced user.

,@^+y+z{cU\G
v+LXU(*^*ey+ xxVU(*} U(QQ.z{4\.Cz{+eCU(} U e*U Uzt{(z} , $x{F} UQ

y+zH^z|zt+x!zH^UU^zQ+

,(^! zH

table_options

TNU { U($UR{y+zt}x*RU(y^xU\{h^UR zy+!} z\|x^x z

*U(\$zH^!x{

$%1 ! z=^

Lzz+$ !


%;@z{

\$t !{z

!!

psql

ys U.ye*U(zN${zt.zN\y+!{{U C\qzt*U CzN} Uz})x#U&z

$x{|U(yxU;x{|\$zty+Cz}^z\$$@{Dxx{|} U}zty+!$@z\ 8,+CU\.y^xf*U(R&U\


\$z*++
+{zrJ
.
zR
\.y+CU.
y^ x
*U(dRy+!{{U C\) z} !+{z[zO !} zH\) zt+xCz{
x
!CzCztQ^ U)\$x*^*z~Czh x
{ 9 U !CzzH
} U(+
z\^ UXU(U )h^ z

\
-U
-W
U y^ xU\
{x
{c z@\
3@+{:zt.z

username
?U\zt}*^{p^U4^z\+!L!{z#!{p^z#+{z
x{czt!\|U *z\$zt*!+ 8

z6y+zL.
x{{:xU UD\$U|{U !U(*J} U + {:z 9 username

U( .+{c

,~J@x! zt!{zH

assignment
+zt*U(.{4J@x! z4!{:{x\.zH^Lx zzO+ !JxzL!(} U\Q.\ U\^zJU(
.+{
{zy+! ^ zo
.
z4
\&
!+zx*J
  u
z+!v{x\V
U$ z6}UQ.\/xz LU

{:z

! x! zLz
zRU *^*:^ zz $@{xe $
z{zR!{{:x\.
zH^ {Q@ zR\$U
zN\$+ xX
JztDz! u{c^  zFU(*{^ !L +y+@{U 
! x! z{dCz{zL
z~\X*U(bx^ zL
!(y++y+U({z{.
x

zH
U\
z x z

@x

s@z {xU\
vU({^z

psql

Jzt{xU

Sg@!y+!{{U C\
{U(+\gy+CU.
y+
*U #Ny+!{{U C\) z*U CzQ} U\
zt}) x UR\$^ 
#zt+z{c{o^
CzH.!x{zH*U(^zFzH^xCzF{:zt{:{xU1zHzHx*s U /}  z[zQ\$!L!{z
$x{x(psql
}U
z})^ xU\V
x m^z[.
zH^  }UQ.

\X+ $+!
 !{:z

T{FU *Jzt{xU5

psql

@U.x} !)x{:{+z{Qy+!{{:U(C\y+CU\.yzHzHz(^z

 !} zH\;Cz+z{c^{ys!{{:U(C\!zx} ^xU\

z} +{z^x{|x{} +Czg !{z\<U

@!} !?^z!^U\)x}Czt}U\xxU.x =. {cz xU(+{:*!xJzH} z x{NU(yxU

Ug*U C} zVy+CU\.y *Ugy+!{{U C\y+CU.y#x{x{:{+z\\z !} zH\;Cz+xCz{


y+!{{:U(C\/!^ zH
x} ^xU\m^zF} U\zt}*^xU/z.yJx *!x
L@!ztLy+\$zt\
v+L{UVzt^zH\$zt\/CU *U L.e.U \$z $x{x{#z+x!zH?UzF} UQ.\)
2@@zy
vU({zy/@ U 

psql

} UQ.\XxzQ!.z{

Advanced features
Variables

y+CU\
x\$z{
! x!vz#{+ {c x^  xU|
*z +Cz{${x.
x! ^ UQ} UQ.
U\
3
x?} U\Q.

\|{z{
psql
$
x{b*z^$Czx{z\mU\Jzt{U ysx{^x} zt\$t zH^ \zCz!Czy+{^UztLy+\x(x
z?* +Cz e! x! z{b!Cz{x.
y+ 
.
z>;
!+z?y+!x {zCzo^ z(
!+z4} |
 z6
{c x
U *J
|zH\ 1
Uu{zH?
! x! z{@+{z[^ z
z  } UQ.
.

\X+@

psql

testdb=> \set foo bar


{zH{ zJ@x!Lz.@*U(U(^U1z!+zX! !

LU&CzH^ xzHz^z)}U^zHFU *oz!x@Gz

y+Cz~} z\+z(z(.zFxO} U U\X+{zFx!{r^zF!.zJU(*su{!{V} UQ.\

!@

testdb=> \echo :foo


bar

Nota: The arguments of \set are subject to the same substitution rules as with other commands. Thus you can construct interesting references such as \set :foo something
and get soft links or variable variables of Perl or PHP fame, respectively. Unfortunately
(or fortunately?), there is not way to do anything useful with these constructs. On the other
hand, \set bar :foo is a perfectly valid way to copy a variable.
* U } !d+ !#xU(p/{z} U\!.zH?^z&!xt zVx{D{x.y+f{zH^$ !{U

!+z 1Uu{zH8U(\$ztzH^z9J!x@zt@+{z(zF} UQ.\) $$ !

G{+xzL!H! x! zr.zt{e} R} U{:x{cvU(*vz,^z {:). z { \D\$z {} U Cz{$xN

psql

U C\$ztJ\u4. z+U(*z

.
 zt+U(*vCzH
+!?J
@x! zt{e!Czr^ Cz^ z\{y+z} x!Q 
T
eztNx\$x} z} zL@xDU(y^xU\u{zHx {^v} | z}  z\vCx.z N!ztx
psql
z!+zU *\^ zo
! x! zU($ zty+Cz~{zH
{U\)
z4{c ^ zU *\^ z?!y+y+x}  xU T^ U 
u U } 
+{:z4^ z{z
! x!vzt{4*U(#
VU zy++ y+U({:zt;^ x{4x{o
U\$
Cz} UQ.
zH
\$z\$L!{^ zNy+CU

 z
xU( .
x

CU(CztN{c 
z#Cz!O +x}  O} UJ
z xU+
@!{y+z} x!4 Cz zt\
!xt z{R} U
{:x{)d
U *d!e+y+ysz } t{zz,^ z {R8
\&ysU {{x  
.
 zt{N
\f
\$z {} U Cz{9
LUgzH
{+Cz$.
@Lx.

} U.
y+ x xx^ fx1^ z*^ + zts
U(x\<{+} 1J! x! z{ Tx{c
U(*!
{y+z} x!
Cz^ z\mJ
! x! z{d*U(U {

TN%/

$z4.zOU *^zO\$@ {zOU(q!CzF} +CzH^} U\zt}*^z\QU $x{4x{?{z$zJzt\^x.z

U(/}Uz})^U|O\$t !{:z68x} +\$x|y+CU\ {c!L+y+9@ }V z4{:z

*6{zHo^U&

!e!xzt{zH^zCz\U(*CU\

.{:} xy6
!Cz/x^ zH^ U1 Jz.{c\$!C\
LU){y+z} x*^x{OUqy+CU\  {^!L+y+
+{:z[^zQ{Vx^}
!
zt ztuy+ x {!(+z xz{!{=^z!Cz
.
*{:z U|
-a
queries psql
{:zUz6@} zH\ $zFU y^xU/*U(^x{x{

all

U ^y+ z*U( zzt)!Czy+@{z\U(4ztLzt}^z\

-e

,$

SzH^x{E!x@z|x{R{z#\& !} {:@{:} U\Q.\&+z xz{E^zu\$^! {zz

+z ux{+ {c{U m

x{!|U()} 
{c +\$U z+U({ ztvK/x^zL!{\Xy+CU
$
Jx\$z{:x.x@6*}*^xU\@xqxgU(+FU(my+CU .{ *U(&{zH^zU!x@zUQ^z
J!G$zR
U(z1z} !^ z+z xz{6!Cz,^+{c
{U(m
 e
!CzEU!})^+!X{zH:U&zN !})
zHJ
\/
\Xz1z}  z\
$mNh
$z} + z} xzH?.+^x\^zVzH} U(\$x

* U <!Cz U\{zH$y1Ug+{zm.+^x e^z

}@!}{z {x{xJ@x@z4x @!{#} U\^!x!LK+!TO;?

omr
*=^x{J! xt zx{{zHxU

sxz{x}& zxfx^&/{y+!} zu!Cz U\

ignorespace
*e{zHp^UV!+zNU(*

zHztCz\qx^U#^zx{cU( Xx{c

 x
zt{[.
 } x^ z
J!+zOU(*ignoredups } U. xz{o^zE^U
ignoreboth
U y^xU\{ *{zH^U ?x*b{zHpU/)Uzt(!+z

^U({:z|! Uz !+xz{FCz!\qx
xz !})^xJzo.U \$zF@ z?{z\/U^zFx{cU( x{c
y+CzH(xU(+{6x{c^UJ xzN!Cz[U$zHztCz\

Nota: This feature was shamelessly plagiarized from bash.

!!

$Lr

$z(. zU *} UQ.\${xU{cU(Cz4x$^z6} U\Q.\/x{cU( $z6\$z*!+!+z6x{

P 7!7\

Nota: This feature was shamelessly plagiarized from bash.

;

$z\$^! !{zN{zLzU {c U !CzR}+ CzH^X} Uz})zt\ U $x{Qx{F{zHzJzt\x.z

U(/}Uz})^U|O\$t !{:z68x} +\$x|y+CU\ {c!L+y+9@ }V z4{:z


hRmr=

*{:z!{zH\$x$D=|} ! !}*^z8+{:+@ 4UCU(,N9^Uux^z !})xzF{z{{xU\


U *

psql

xezL.x^zzQ!y+ysx}^xU

*+{zH ^U4.z x}(!+z .m=

}@!}{z {d!CzxeU(Cz\/ z*U(Cz^z4@y+y+x} xU ^zL.xzt{


!{rU .z x}!+z^zF\$z*t+x{

!7

*e^z(!x@ z?x{d{zH  

Nota: This feature was shamelessly plagiarized from bash.

$TD,
$z#!+zXU(*(Jz)@{!*^*z}c^z\U x\$!{DCzH^$Lz\*CU  p rk+l Y o U  $
x{=J
! x! zFx{#U
m
+! ^ zz\&^ Uu z[
!x\Xx !*,zth^zQCz{+U(*
$
z(
ztJ
vKX
} U\Q.

\X!{# ztzH
\$x{y+! z\
}UQQ.\

#TNLTE$a
*JU(/+{:z(
z(+
U({c,
CzLK/
@L
z6U(t,^zt})J
x^ z *@}zo U|{y+zt}x@|{c^ U Cz6\$ [^ J
\$U zt{
U\ x^UU\z(^+y+z~!^z4U(y+z ^xU\{r.+{c z?} U\^!xz\xu[^J{:!})^xU\|U(}
8Lzz^ zF\$U } .
zH^ ^ xU\
U(*? z6@L
z4U(t,z})J
x^ z *!} z4*U p.
U(Cz6x
*U L.
^ xU\ 9JLx
} z
!{ 
U&!1 U& zzty ^ @}fx*6 U !Czt\$&
zX^^ 
{!}) xU
x
y+ U
Cz{{
psql  U(} !@U\
zHD
zU(*(x^ {x^ z
@1} U\Q.

\${ !
 $  ^  q
 $  ^ $
 
x.
+{h ! z|{U\.
zu!  x  .!})^ xU\ $
x{R!})^ xU\g
} U +\fzx^ z6 zU^ U)CU $ !} .

 
{!}) xUU^ .
x
!Czt\$N zxu
y+CU
Cz{{:tU ^ UR} U\Q.
x

{+} 
{!}) xU

U E
Uf\+U
U\^ xf
?
! ,^ zX,^ zR} !{:zVU( .
+{c6
y+CU\
x\$zU(U(m dl
 p r
zFCz{+^ {x  z6
y+Cz\$x}) @ z68+{:+!G
o Y Nrk$n6odp Z r > n Z[[ p o  U(}uU h
zt{:+^ xu
xm^ zF\$z{xCz\V@}*^ xU
Us
 zx|
y+z *U L.
z\VxV

D} !{z9

LUu} U(U {zQs U X^Uu\$Uu U(){zH ^x{! x! z(^UuUzOU(*+@ U( t} !!!} UQ
.x !@U(
U x
$
zF\$z*!+
x{=^ U|CU(( !}^ z[ 
{!})^ xU\ *s U(,+{c
^ U
U !\uU
z4U($?*ztU(t,^zt}*^ {h^ x{bx{
z  U(zH
z^~x*(U(x^ zH
\^ UE 
{*z.

N!
zU t,z})^ {:txe.
x
 z?!\J
x{! z=^ Uy+CU
x\$z?U
z?zLysx}x\^ 
{!})^ xU\u
 U(} !CU 
\
!v} U\Q.

\+{

!@

Dxr#!
q\$zt*@$^Jx*=U\x^z !})xzu{:} xy{Nz}U(ztFztCU(^{+} f!{Rm.!*U(.zt\

vK|+z RU(+x^zL!.z} UQ.\$ y+CU } z{{xR} Ux+z{

x{x{!{$ zz^ z
$
 !\$x^xU\!+ zJxU(+4U(*
 xbx{Q{:U.zH^x.z{EUb\$z{x ! z *^x{4! x! z
x{#{zH^ @{} xyJ
y+CU } z{{x|
psql
x(xQ.zt\$xzt ^z)xz *?z4{:} xy!{d} !z\* U

U\^ z{} xye
x
x ^ zL.
x
^ zNxQ^ z{.
zN*!{xU *:^zU(zL.U({c{} xye!{
U\+
} !z\X*CU /
x zt!})^ x
z
{z{{xU\)
 s
^ zd+{x z
U(y
xU

-f
xLCzH
+L|
ztCU($} U \$z!> UN\$x{c psql
x
+x{Ux{b} !{z?*CU * tLztCU($}U
\$x^ xU\

{d8zpsql
CU
}U(\$z 9
p
$zD\$t !{z{zLzy+U L U !CzR}+ Cz*.} Uz})zt\ U $x{Qx{F{zHzJzt\x.z

U(/}Uz})^U|O\$t !{:z68x} +\$x|y+CU\ {c!L+y+9@ }V z4{:z

x%1

Hr%/$`!rD%1$

$z{z{y+z} x*Nzy+CU\.y
x{{:+zt{bx{{$ysy+U {z\$URU(U(Dx z
psql
H F zU(

Lzz $ 

KD3Na

$x{rJ! x! zx{dz+x!zHeUz4}UQ.\xz6U(yxU


, x{#y+CU( ! U\eU(U
-q

+{:zt*+vxx^z !})xz[.U(\$z
vhE+m

$x{J! x! zFx{{:zs z[zQ} UQ.\qxzQU(y^xU\{


c
-S

m^x.z

U )}/{zHsU(dCz{zHJxs

vhE$

$x{!x@vzFx{#z+x!zH?UU^zF} U\.\XxzQU y^xU\

-s

3

$zX\$t !{z/+{:ztU(!CzV} +CzH^f} Uz})zt\!{ $x{ux{|{zH?zHz \x.z/ U(

}Uz})^U|Q\+@t{zF8x}+\+xy+CU\ {c!L+y+9t J} z4{:z

SQL Interpolation

TR!\+\$xxU!+{z*+t*zt+CzU *

@x! zt{$x{^ L


J
 U D} R
{+ {^ x ^ z8!x zty+U(^ z9
z x^URCzH $@sLKu{c^zH)zHpsql
{ $z{:\^!6*U x{x{e@x^UOy+Czy+z\Uz=! x! z
.
z6x^/F}U(U/8 9
:

testdb=> \set foo my_table


testdb=> SELECT * FROM :foo;
U +\#^zH+z  ^z(^! z

$z(!+z6U(* ^z[!xt zFx{#}U(y+xz\Vxz ! @{:U


+{c.
@zF{+Cz
c U(.
#xx.! z{R{zH{zzCz U(;y+dx ! x! z|x^ z y+U ^ xUf
x
U\#
 zuy+z *U L.
z\
xUD+U\^z\XLKXzHx^xz{
my_table

xJ} zHzH} U!xV !} z\V+U\^z{#U  !} {!{}UQ.\${

TysU y++!e@y+y+x} xUuU(*?x{d*!} xxDx{rUNCz*z^U^z6!{cx{:zt^z\ax{+ {z+zH


{c^zH.zH?Uu +x\)O*U CztxeVzt{}z! xU

U/}U(y+#z|} U\^zH^{OU(*bu+zDx^U)u+z\
y+CU } zz\X!{d! UJ
z

!

T U\^zdy+U({{:x zQ+{zQU * x{=.z} x{cx{



= x{cb
U(!\^ zD$zDx^ U) 
! x! z
\ ^ zH

testdb=> \set content \ cat my_file.txt \


testdb=> INSERT INTO my_table VALUES (:content);

Jzy+U({:{x zy+CU( zH xx{F!y+y+CU t} .x{(


.x} U@x.{:x z
z{z 
ztz\ U. z|z{} !y+z\{UQ^^zq\$Umy_file.txt
b} !+{z|{\!z U(6zH z
$
xC\/x
zFx{#y+CU(}zt{:{z\ $
x{} U($\X z4\$U\
zFx^ &^zFy+CU

+Uz{

sed M

testdb=> \set content sed -e "s//\\\\\\/g" < my_file.txt

D {zLzxz} U(Cz}))zt+U(*( !} {!{z{e8!9 U u} DCzt{:U(z#x;x{V@ T*,^z


!{y+! {:zt\^ x{ux
z$x
y+!{{z{
^MU^z/{psql
z
"s//\\\/g"
$zD{zx$\$U)x^ G{OU(m^ xq
sed
x
{x-e
\$zU
zD\$U(+ z|+U\^<z{Rmy_file.txt
\zLzt}^z
x^^z
sed
!v
.
zH^ {

\
y+!{zt{x^ x{xJ
Vx(Czys!}z z( 
Uu !} {:@{
SzH
-e
s//\\/g
sed
z{dx
6{:x
zFU
zF
\^ zH
\$U z6{+ {c x^  xU? $
ztC!y+{b
U\
z6ysU xJ
U(#^ U(

x
!{r
zt?^ 
@ 3
xO}UQ.

\${+{:z[^ zF{.
z6zt{:} !y+z4} !@}*^ z T
\# x{#x{x\
U
xm^ zR*@}*^ +
U(^.
x
J
z4 Uzt{:} !y+zO! !} {!{z{?@{6ztJ z} !+{zOvKQ z
} U\
{c  {4!CzO!{U{:+t,z})p^ U} z^ !x)
x^ z y+CzH^ H^ xU\
{ ,Q $
} !{zOU(.
x
e zN zH zt
U *^*ys zty+! xU^ zF+zFz
zL
!
vx}z4}U(U{.!DzH !u!ysy+z!ex+z xz{z4*U(U(x|C$z4!y+y+xz{

*?
z[
! x! z
,XM u}@{:zQ U )} 
z{} !y+z#} U U|x^|? !} {!{UQy+CU\^z})vxv*CU\xzty+CzxU 8,$z} U U|{\!4*U(
z|} U U
!xt z{OxG{O{c\$@C\vK*U 4zH. z\$\$zt\+z . + z{{:+} g!{
$
{e^!R*U(b@ |{x}zt{\&^ysz6} !{c{#!Czo+U({ ztvKXzz{:xU{!zH
ecpg
} z[
zF} U
$x}) 9
x{U+{:zzQ} ! !})ztb{z+zH} zO!} U U.zNx{U+} zt\

Prompting

$zNy+CU.y{
x{{+z{6} ) zN} +{cU.x!zt\ UVU(+y+Cz*zCz*}z $z^CzzEJ@x! zt{
x
%1 xpsql
%1$`!1\QrD%1$N}U@xX{c x {4\.{y+zt}x@zt{:} !y+zF{z +zH} z{

\$z{} x zU^ z|!y+y+zt 
} zuU(*r^ z|y+CU\.
y +
CU\.
y x{ zU
U(.
@y+CU.
y b
x{
x{{:+zt\gzH
Cz +z{c
{4
z+z  +
CU\.
y$
`Dx{4x{{+z\gzQ.
U CzRx
y+e
x{6z
y+z})
zt\g\$+ xX
psql
+zXx
y+
 z} !+{zE zD+zt/!{[
U\h^ zL.
x
^ z\x^ gD{:z.
x}U(U
U $4+U
z?!{
U\
} U({:zt\ +
CU\)
y
4x{bx{{:+zt\zH|
U(Cu
u
LK n Z $ } UQ.

\

\/ U /!Cz?zLysz}) z\ UU^  y+zFxm z[^ +y+z{#U\m^ z[ zt.
x
!
$z!+zU(*^zCz{y+z})^xJzNy+CU\.y:! x! zNx{Fy+x?z\x^z ! JztL} zy$zCzN|y+z
} zHJ
{x\
8V
 !9x{#zH
} U ^ zCz\ N
zty+zH
\$xD
U\^ z(
z
} ! !}) z@} z^ !x
U zt^ zJ
x{
{$ {c^ x
^ z\Xx
{c z@\ N
z
z\X{+ {^ x ^ xU\
{!Cz
M

%M

%m

%

%n

%/

$z6U {c$.z6U *^zF\$^ !{z6{zLz8U(b Fx*3xR\$U\.@xV{U(} zH^9


$z6U {c$.z6U *^zF\$^ !{z6{zLzpC} zt\X!*,z:^zF+{c\$U
$z6y+U(?. ztbx} &^zF\$^! {zF{zLzx{#x{czx
$z6+{z.zFU(/!Cz4} Uz})z\X@{8,U U +bU(} !({{c^zH+{:zt.zt9
$z(.zFU(* ^zF} +Cz*s\$^ @{:z

!

%~

%#

%R

$xz

@ ^zFU ^y+x{#+Q8,x\$zt9x*^zF\$^! {zFx{#U(+b\$zt*@+J\$^t@{:z

%/

*?zF} + CzHJ+{zx{#O\$@v!{zF{+y+zC+{z^zVF!!!tU\^z VxG{:zQQ"

U(.@D@$! (#+6x* x|{:x zHxz.U \$ztt\ ?x*z{:zt{{:xUx{


^ z6\$
!L!{:z48VJx}} 
!ysy+zHu
x*+ $$@(*@x{:9 ,
y+CU\.
y
`^zO{:zt+zH} zNx{?Czty+!} z\X V
L! !1N{:x
zN +U\^ zLU R\$U($ zO+U zt(\$zy+z
\$xUXzH^ z
ztLy+zt})
{x.
U CzQx
y++
 z} !+{z zQ+z !{c
^ zL.
x
^ z\
psql {x\$z
zH^  z} !+{zN U(@ zRx
} U\Q.
z U(? z} !+{zRU(@CzNx
{x\$z
... */
+U\^z a
y+CU.
y
4 zF{z+z
/*
}zF\+U z{c
t
Cz{U 
z(^ U|
\^ x
aDy+CU\.y

\$x{:} Uz})zt\V*CU\

%digits

*
{c
!L^ {x^
^ zFCz{c
U(* zF} ! !}) zt{!Cz4x^ z y+CzH^ z\/J
Qz1!\$z} x
0x
.!digits
1\$x x\m^z4} ! !})zt$x ^z4} U(Cz{y+U\$x} U \$z?x{b{+ {:x^zt\ *e^z4+ {c
\$x
xb
x{
z|} ! !}) z {F!CzDx zty+CzH^ z\&@{OU

U(}*^ !
.
 z6
\^ z|}U( zt{y+U\
\$xu
} !0 !}) zbx{#{+ {^ x ^ z\  ztx{zFQ\$zt}x.
@\
.
 ztbx{#!{{:.
zt\

%:name:

$z[J@$z4U *Jz

! x!Lz

psql

name

vztz(zF{zt}*^xU\ 
C $>G
 O*U(\$zH@x{

%command

$zFU ^y+U(*

@{x.
x!h UDU C\$x
@D! !} eyx} O{:+ {cx^xU
command
LU|x{:ztsOy+ztC}z*s{x\X
x^ UuU(+dy+CU.y1 xz
ezQ\$zt*!+y+CU.y{#!Cz6z +xJ
%% *U(ys U.yJ
zH^U
*U(y+CU.
y { 
\/`@@
\
%/%R%#
%

Nota: This feature was shamelessly plagiarized from tcsh.

Miscellaneous
psql

CzH+L{

^Uz{:Jzdx*?xx{:zt\

U L.!

x*X*!z U(OU *x^{|U(m;8U(

U *p.z.U +zU*U(\+9bU(} }+ { `|x*pzD} Uz})xUU&z !} zH\zH !\g\

zD{z{{xUx{U\bx^z !})xz \fDx*bgz CU U(} }+ Cz\xqu{} xy\z! x! z


Dxr#
!V
!{{zH
,^ zH.
y^ {h UNCz!\u
\z1z} ^ z} U\Q.

\${
z+{z\ UR{zH(+y z} xzH(U z{zLJztUE^!{cz
a(} U(+\ psql
$HOME/.psqlrc
8+{:xUzQ+ !u\ k$l$o }UQ.\${9

z*U( z{c^!^x+yx|xz !})xz.U \+z

* U6z+z

GNU readline

{+y+y+U(L
{4^ z|Cz!\x
z
\x{^U qx ! xz{Q*U(6} U\zHxzbxzuz\$x^x.\CzH
psql

xzH! $z6} U\Q.\/x{^U(|x{#{c^U Cz\xF+z(.z\
xU(+U\.z
.psql_history
\$xCz~})^ U D\x{bCzU(!\$zt\z
{c!L{b+y L@\} U.y+zH^xU\x{b@{:UN{+y+y+U(^z\$@,
U 
/z}U.
y+zH^ xU<
U
x}$.
!psql
z{U} !x
^Ugz&LK;y+! {:zt SzH;!xt z
x{Q!^ U\.
 x} !/ +xh U/+{z z{zD*z +Cz{ **U(4{U.
zDCz!{U\.
 U(\+U#
Ub
xz

psql

!

zU^!X}U.y+zH^xU$ U f} ^+gx*dU(*^*d )y+,^x^x{Qx$zU.z\


x
.inputrc
U(+bU.
zF\$xCz})^ U 
M

$if psql
set disable-completion on
$endif
8,$
x{Ox{EU
 
psql
readline
@x{ 9

*ztH^+Cz

#z!\fx^{R\$U(}.z^xU\*U F*+Lzt6\$zH

*sU(.z[^zRCzt!\sxzOx !ux{^!z\) 

\$U(z{=
U\+
{zzH  U+{zQx^ L U .
+{
psql {} xyd\${Nx
.! z{+Cz x+U {cCzLK$G{E^U(yzJzt
zz\${
configure
configure
U
\/ U\^ mz6x ! 
8U
U{: {cz.{x^V{!Cz\
libreadline.so
x @xz{9 
$zt{
\
8U(
E ^ zz!\$zt$libreadline.a
history.h
readline/readline.h

\
9?x
readline.h
!y+y+CU(y+ xH^zX\$xCz})U(xzt{ *6 U z#z)x @\
readline/history.h
z!\$zt4+z{Rx
{c^ !z\&xf
g
U  {} + z|y+@}z| U(/.
+{r^ z
! U(rzH)s*U
configure
z1.
y+z
M

$ ./configure -with-includes=/opt/gnu/include -with-libs=/opt/gnu/lib

$zHU(/z(UDCz} U\.ysxz

psql

8,Uzt}zt{:{! xzFzH^xCz6} U \+z[Czzt9

$z.hR3 zt\$xz)x !;}  zXU \^!xz\* U


*,
y >+>L*a^ y \
U

^z)hR3y+CUt,z})^G{=\{zzN

Examples
Nota: This section only shows a few examples specific to psql. If you want to learn SQL
or get familiar with PostgreSQL, you might wish to read the Tutorial that is included in the
distribution.

$z?+ {c ztL.y+z{:U(X{U
} 
x|
y+CU\.
y

^UR{y+Cz!\u6 +zNUz${zHz !@xz{bU *(xy+

Ux} zo^z

testdb=> CREATE TABLE my_table (


testdb-> first integer not null default 0,
testdb-> second text
testdb-> );
CREATE
U(

U(U(?^z[^! z6\$zx^xU\V !x
M

testdb=> \d my_table
Table "my_table"
Attribute | Type
|
Modifier
-------+------+------------first
| integer | not null default 0
second
| text
|
Tex{#y+U(xsU(/\$z} x\$z(^U|}  z[z6y+CU\.yeUD{:U.zH^xX .U( z4xzt zt{^x
M

testdb=> \set PROMPT1 %n@%m %~%R%#


peter@localhost testdb=>

$zH^G{d!{{:.z6U(XJz4$zt\#z[^! z6x^/\$F\XV^UU@z4QU U(x


M

!

...

peter@localhost testdb=> SELECT * FROM my_table;


first | second
-----+----1 | one
2 | two
3 | three
4 | four
(4 rows)
Ux} zU

^zx4}U(.{bxu x(@xezt\xzo^zz(} U Q|x|z*,(!x\z\

} $.! z(x{=! z4U U(\$x*^*zCzH| u+{x ^zQ+$@J} UQ.\

peter@localhost testdb=> \pset border 2


Border style is 2.
peter@localhost testdb=> SELECT * FROM my_table;
+-----+-----+
| first | second |
+-----+-----+
|
1 | one
|
|
2 | two
|
|
3 | three |
|
4 | four
|
+-----+-----+
(4 rows)
peter@localhost testdb=> \pset border 0
Border style is 0.
peter@localhost testdb=> SELECT * FROM my_table;
first second
--- ---1 one
2 two
3 three
4 four
(4 rows)
peter@localhost testdb=> \pset border 1
Border style is 1.
peter@localhost testdb=> \pset format unaligned
Output format is unaligned.
peter@localhost testdb=> \pset fieldsep ","
Field separator is ",".
peter@localhost testdb=> \pset tuples_only
Showing only tuples.
peter@localhost testdb=> SELECT second, first FROM my_table;
one,1
two,2
three,3
four,4
T^zLxz +{z[z6{:U(L} U\Q.\${
M

peter@localhost testdb=> \a \t \x
Output format is aligned.
Tuples only is off.
Expanded display is on.
peter@localhost testdb=> SELECT * FROM my_table;
-[ RECORD 1 ]first | 1
second | one
-[ RECORD 2 ]first | 2

!

second | two
-[ RECORD 3 ]first | 3
second | three
-[ RECORD 4 ]first | 4
second | four

Appendix
Bugs and Issues
a{U.zz! xz|x*z

 

!U(z\

^zg+{cQ!.zH?4^U{c!LF\$xCz})!*,ztUz

psql
= U R} U\.y+x xx^1x{|x{|{c^x{+y+y+U(^z\^Uf{U\.zVz^zH

8{xzzH,^z 9}UQ.\

U\

U(x$^ Uuz1y+!xm zF\$z !x{dzt zF@{x^x{+{zFx{\+x{:} U(+ z\ 
x*JU(
zH{^ z[.zt{:{ z{@ zzy&^x{x.x\ = U z1.y+z
testdb=> \foo
Field separator is "oo".

x{#y+zCty+{=UsUzFU(+\XzLysz})

psql

UqU {O{c.U U^qxg{:ztz {FU *z|{.zz {:xU

$\$U(z{U\.zt

Uztb} U\. xxU{x(*!xvU ^ x^L J{:+\^zF\&U,{U\{+\zFys U( zH.{x.x


} U.zF+y

Notas

*,^y

>$>L*,y

e U(

pgtclsh

Nombre
pgtclsh

$U({c, Cz{x4xzH^z6y+! Q{zo

Synopsis
pgtclsh [ base_de_datos ]

Entrada
base_de_datos

$
U\.
 CzF\$z6O !{z6\+z6\$^U {#z1x{czH^z6QO $z6{:zF +xz[zHztb!} } z{U

!@

Salida

Descripcin
pgtclsh

ys U(y+U(C}xUQxzt*!F!v{ze/y+! [+U({ zt{

^ .z Q\$zozHztb!} } z{U+U {c, Cz{#y+U h.z\$xUD\$z(^}(zt{+{\$U  


U

  
 

pgtksh

Nombre
pgtksh

+U({c, Cz{Lz @$} Uy+! o>$

Synopsis
pgtksh [ base_de_datos ]

Entrada
base_de_datos

$
U\.
 CzF\$z6O !{z6\+U({dz1x{^zH^zFQO+zF{z6+xzt4^zHz!} } z{U

Salida

Descripcin
pgtksh

y+CU(y+U( } xUQxzt*! L!+}UD!v{zo>$y+@+U({c, Cz{

^ .ztR\$z4^zHz!} } z{U+U({ zt{?y+U()z\$xU\$z4:qzt{?+{:\$U G



C

vacuumdb

Nombre
vacuumdb

!!

$x.y+xQ|!x!6O !{:z4\$z6\$^U({=+U({CztvK

 

Synopsis
vacuumdb [ opciones de conexin ] [ -analyze | -z ] [ -alldb | -a ] [ verbose | -v ]
[ -table tabla [ ( columna [,...] ) ] ] [ [-d] nombre_bd ]

Entradas
vacuumdb

!} zy6U {{x+xzH^z{#!.zU({zVGQ'zO\+z6} U\.\+U {


M


\+!\$\.zt

nombre_bd
${:ysz} x$} Qzt\U. CzF\$z6F@{:z4\$zF\$^U {d+zF\$zF z4{:ztbx.y+x@\$QU|@x!!\

!!@!z
4!} +Qz{c^!\$'{c^x}@{#{U( z4O !{z6\$z6\$U({y+@6{:ztb+{!\$!{dy+U(zt(U y^x.x!!\$U(
!!!\+
$x.y+x4U(\$!{d!{# !{z{d\$zF\$^U {
,~Jzt U({z
a.y+ x.zFx*U L.!} x/\$z!@\sO\$+ ^z6zvy+CU(}zt{:U

,@^! z

8
 JJ 9J
tabla columna
$x.y+x4UR
!x!?x} .zH?z
x\$x} !\$
tabla
\$z6} U Q
@{
x} .
zH^ zF} +
\$U|
{z6+{OQU(y+} x\

Lzy++z\$zHDz{y+z} x+}@U\. Czt{

-analyze

Sugerencia: Si usted da el nombre de columnas que deben ser analizadas, probablemente tendr que usar caracteres de escape de la shell para los parntesis.

vacuumdb

^. x"HV!} zy^QU({?{x+xzH^z{!.zH^U({\$zQ'ztO\$zF} U\.\+U {1y+! Oy+

.zHCU({d\$z6} U\ztLx

@!U({

anfitrin
${y+z} x+} uzU\. Cz|\$z|$Q!+x xU\zHg} +!e{z|z{cz ,^zt}^\$U)zt

postmaster

y+@!y+U(

puerta
${:ysz} x$} QFy++zLF\+z6a^zLzH>L,XUDzv+}zt U3xN\$z6zt^zH{x\\$z4\$U\.x
xU|U(}@ \+z6} U\
z1x/
zV
+zFz
Cz} x z6} U
zLxU
z{
postmaster

3@+{:zt.z

nombre

U\. CzF\$z4+{:+! xUD+zF{zF\$z z6+{!y+! F} U\zt}*^!

Sg@!y+!{{U C\
D x Oz(y+z\$x\+UD\$zF} U !{zQz{#\$z6z ,^zt}^!

!@

z!zt}U
${:} x z6O} U ysxO\$z6U({} U\.\$U {+z

vacuumdb

zz QuzJ'GQ!({zLJx\$U(

@!+xz
UU.+z{c^CzFQCz{y++z{c

Mensajes de Resultados
VACUUM

LU(\$Uu} U x| xzH

vacuumdb: La limpieza fall.

T
UN4*@!\$U
zt{b!y+zH!{e $x\$zxzt*! ?U\{+z U Ne

{:xV\$zH^!!\$6\$z6U({.zH{,z{#\$z6z CU |y+U {x z{#y+CU  z.!{
! > y+! F\$x{} +vacuumdb

Descripcin
vacuumdb

z{bu^xx@xUNy+! ?x.y+x!e4@{:z\$z?\$^U {h+U({ ztvK

vacuumdb

Q

 x"HVy+CU \$+} zQz{c@\$'{cx} !{#x^z@{?+{:@\$!{y+U(dztJU(yx.x@!\$U b\$zQ +{:+zt\$!{?\$z+U({

Czt{

vacuumdb

z{e +x\+z#zH+zz#!} U.\$U U

\$z^zL.x!xzt!})^xJU !
 >

\$zr$U({c, CzLK+:y+U .z\$xU

Ne

UOz1x{cz#\$x*zCz*} xz*z})xzCzdx.y+xzt!\$z# !{z{+\$z

\$^U {b+{\$UNz{c^z4VUCU({x."U(\$U {

$;+x\$z zL4U\ !ezH} U\^@

z1x{^xe{zx\$U(\$z4 !{z{b\$z?\$^U {dzHz ,^zt}+} xzHzL^ x\+{!\$U


} $@+xz} U + !} x\1!x@Gz{u\$z/zt{^!\$Uf\+z

libpq

psql

\$z zL

psql
LzLu+{!\$!{

&\$zX.x Cz 'X\$zXx^z *@

Uso

+!6x.y+x!Q !{zF\$z6\$U({

prueba M

$ vacuumdb prueba

+!6!x!@ys!Fz(U y^x.x!!\+U O !{z6\$z6\$U({.@\$

bdgrande M

$ vacuumdb -analyze bdgrande

+!@x!!Fy+! zU(y^x.x!!\$U(F/x} /} U(Q

 !{z6\$z6\$U({d.!\$

cual

zH&^! 

xyzzy M

$ vacuumdb -analyze -verbose -table tal(cual) xyzzy

!!

tal

\$zu

Notas

y

*,^y
M

>$>LX 
y !\.x
M
> >L*,y e (
$
U

*Cz~zt{:ztz } U +

!@



Captulo 16. Aplicaciones del sistema


${cz{RVx*U(L.!} x\\$zCz*zt z*} xVys!U({N{:ztx\$U(Cz{Rgxx\$@\$z{R\$zu{U y+U(Lz\$z
+U {c
Cz{

initdb

Nombre
initdb

?CzF4+zHQx{c^!!} x\\$zFF !{:z4\$z6\$^U({\$zo$U({c, CzLK

Synopsis
initdb [
[
[
[
[
[

-pgdata|-D dbdir ]
-sysid|-i sysid ]
-pwprompt|-W ]
-encoding|-E encoding ]
-pglib|-L libdir ]
-noclean | -n ] [ -debug | -d ] [ -template | -t ]

Inputs
!y \$H^!

dbdir
dbdir
+hEN
To(
T
,

${cNU(y+}x)zt{:y+zt} x$} NzHX $zRy+!LzQ\$ztJ{x{czH.N\$zO!C} xJU({?{zL@.!} zH!\


x} x
*U(.
!} xD
Czt+z x\$y+U(szx
x^ \$  y+zCU6y+U \$z.
U {
'& {c^ z{e
U\.
x^ xNz{c^ ! z} xzH
\$UJ
@x@zO\$zQzH^ U(
U+
hE
T(
TU+zOy++z\$zO{z#} U\
zH
xzH zu+zDzt${zL
x\$U(4\$zDu !{z\$z\$ U({F8
9bys$zt\$zzH
} U !?z
\$xCz}c^ U xUu\$z6F !{:z6\$z6\$^ U {rQ!
{#!\$zt z4 postmaster
"{d\$z64.

x{c.
4
! x! z
 !{:zb\$z#\$^U {

!{{x\$

x

sysid
sysid
vztz} }xU
O"vx\X\$zt {x{c^zH.Oy+! Fz({+y+z+{:+@xUD8CU(U9J\$z6O !{z6\+z6\$^U { +U
U\.
x{xX
!y+^ Q!(x\X\$zF! $zt(${+! xUu+zFzt{^ zFz,z} ^ 
\$Uux
x^ \$ #
z!.
zz[U
z{bx.
y+U(^ ^ z4} !
L{zF"tvx\V\$ztL{:xG{^ zH.
Fys!4zv{+y+ze+{+! xU t6+z6
Uy+U \$ '
zzH
x} U.
zH
!@4
.
z !} xV
} U
}+!G+xz
.
zt UD} U\.
U 7 U 

!y+y+CU.y

S

} !{xU\N+zOzJxx^\$y+Cz^zQy+U #ztJy+!{{U C\)\$z {+y+z#+{+! xU8CU(U\^9+\$zQ


U
URy+
z?+{:@+?! z x+} !} x\D
o^ J
"t{\$zy+!{{U C\${zH
Lx@
U
} z{Czt.
zH^ z
URz{x.
y+U L^  z N
z} +!+xz.

z 4
UE
UNy+U(\$L
 xx!!s
!
z x+} !} x\
^ 
"{d\$z4y+!{{:U(C\${d!{c O+zF@Qzt{^ ! z} x\$U
y+!{{:U(C\
 !{:z\$z\$U({



!zH} U(\$x

encoding
encoding
vztz} } xU\
ND} U(\$x$} !} x.+x \^zy+!  !{zR\$zR\$^U {o.U(\$zUV8Uy+x@9
zuz} Uqz{c^ ^ .

 x"Hf
{zL
V} U(\$x+}@}xf
y+U(Q\$z*z}*^ Uqy+! }+! +xzQ !{zu\+z
\$
U({4+z
UV} Czz4Q!
{6!\$z^ zL.
zH
U({Q +zN+{c zt\D} .
 xz $
@N xx!@
}@t})
z '{c^ x}6\$z}U(\$x+} !} x\$.
+^ x e^ z@{z4\+z z4z{y+zt}x+} !$\$+ ^ z?zt; xzH.
y+UN\$z
}U
{c C+} } x\g
8}Cz!} x\q
\$z N
9 zHq
} $ UX} !{U/J
U# .
 x"Hq
{:ztz} } xU\
uz 
!U(
y+U \$z*z})^ UDys!Fz{c
QU(y+} x\

^CU {dy+@.zCU({#^xx!!\$U({r.zHU({} U\..zz6z{cm. x"\$x{y+U\x z{


M

!y x

libdir
libdir
x
x \$
z} z{x/!U({u@ } xU {\$z/z !\$Vy+! Xy+U \+zOxx}x@x!!N/@{:z\$z
\$
U({ $
{c U ys}x
x
\+x}\$
\$z|zH
} U ! U { U L.
!.
z zJ
UQ
U^ xzH
zu+z
y+CzU } +y+t {:zy+U Qzt{^ Uys+z{c
Uq+zVztx
x \$} U
U } zU {z{+zH.
@{D\+zx
{c^ !!} x\
Q!
{} U\.

zt{bDz
}U^ !L!
*
U(.
!.
z ztU {b@ } x
U({y+U ${'.
x{c.
U vzz\$x4
{x
+{^ z\
zt}zt{x Fzt{:ysz} x$} !e{V+ x}@}xu
ztLy+'G}x^ .
zH^ z vxL{+} z\$z?z{c U(@
U\$z4U({
$} zCU({6{:zD.

)zt{|
x
{c @!\$U#^ @\$x} xU\
!.
z z4, U
}UN
U {$U CU({e!C} xglobal1.bki.source
U {$zHN

zt\$xCz})^ U xU6\$z# x xU\^ z} !{$8ysU Jz,zH.
y+U(L>v+{t>vU(} !>vy 
{>vx 9
9
/usr/local/pgsql/lib

^zH.y+^z

dzy+!} zz

zHX
/
{x{^ zH.
R\$z
${c^U)z{Qx$}+\$U){zz} z{x!})
+!x!@dz
\+zON !{zO\$zR\$U({4+{:\$Uz
\$zOz {x\Q@{
initdb U({{z?}U( U.
+zH\$z=$template1
U({c, CzLK$UO} +\$UQz
\$zd4 !{z#\$z\$
y+x
template1
\$UOy+U(+! Dy+CU( zH.\$z@{x{czH. U L.!.
zH^ zz!} U z
x\$UR\$z
{:z
.z\$?} U{^^z4o "{\+z?oJ
xG\$4\+z1{x{c z.
F\$z !{z\$z?\$ U(template1
{ UR{z4ys+zH
\$z6\$z{c^C$x} +!+xzU\^ O}U({Qz,z} 

\$U|z
}U
OU ys}x

template1

L+{c^x+ zRR !{zQ\$zQ\$^U {=z.y+z

 !{:z\$zD\$^U {QzLx{c^zH^zQUQU(} U\^u} U({:

initdb

-template

U(}zt

+U e\$zt*z~})U(} +\$U

initdb

\$zzL.x4+z4Dz U($zHx^6+z{z4} Czzo^U\^!.zH^z

z{x{c^zH.\+zO @{:zQ\$zQ\$^U({:1CzH.+zHzF} +!+xzt#!C}xU+zRy++\+U! zd} Czt\$U 


zt{b\$z?\+zHzt.x!e $zUy++z\$z4@}@ ez^ ! ,U
+y+a$uz{#y+U(UU^U !^x(y+!6\$zy++ !

+{^FU(y+} x\xx z4aIx\$ x\

!\$zL

\

,.
y+ x.
zDu{!x\$|\$zD\$zty++@}x\g
\$zDua} !v
ux
x} x!+ !} z\$aX! U {QU\^CU {
.zH{,z{6\$zy+U(} UXxzt"t{Fys!z+y++ x} U/zH^ zHz ! $|a} !v|xx} x!+ !} z\$a
z{O@y+x} !}x
+zQz
+{Nys!F}Czt!{^ ! !{\+z(},!U U ${c^RU(y+} x
zHJ
zF
QzH
U(.
zF} initdb
^ x\$!\/\$z4{!x\$

Salidas
initdb

}CztLgU({+}ztCU {zz=!Cz.\$zX\$^U {zt{:ysz} x$} !\$.+z.{U\@{$! @{u\$z

{x{^zH.Q|z.!C} UD\$zo ! ,U|y+@6JOx{^!!} xV} U.y+zH^



Descripcin
initdb

} CzO&+zJU|{:x{c^zH.R\$zF !{zF\$zQ\$^U {#\$z[+U {cCztvK)\$@ {zQ{{cz

3


{x{^zH.N\$zO@{:zQ\$zO\$^U({?z{?N}U(z} } x\X\$zR @{:zt{?\$zQ\$^U {? +zN{U\#U(\$!{?!\)xx{

 !\$t{ysU z.x{)Uu+{:+@xU\$zF3ag .z ,^!\+!{dy+U V{U(Uuy+U({c,.!{c^z

4Cz!q{x{cz.u\$z !{zN\$zN\$^U {F} U\{x{czDzg} Czt?GU {F\$xCz})U(xU({FzH.U({Q} +!z{6U({


\$^ U {#\$zFO !{zQ\$zF\$^ U {#{zL
!.
!} zH
!\$U({ 
z
z !b!{x @ !{\$zQ}  U
U}U.
y+!
x\$@{F8{U ^ ! !{F+z
U)y+zL^ zH
z} zH.

x

 !{:z\$z\$^ U {F\$zH^ zL.
x
!\$!9 } Czt4z
\$zQN @{:zQ\$zQ\$^ U({ 4
+
\$Uu+{c z\)} CzO

$zJ
R !{zF\$zQ\$^ U({:^ U \$Uzt
template1\$z| !{z|\$z|\$ U({O{zu} U y+x ?
U\^ xzH
zu!{4^ ! !{O\+zu} !
U
U.z
!{Oy+!
template1
} U {!{d} U\.
UuU({x xy+U({x^ zC} U\
{c^ +x\+U {
U|{zQ\$z z4z,z} !z

initdb

} U\.UuCU(U\

${cUu{zF\$ztz6O+zQU U|y++z\$zFz,z} ^!

zJ{ztx\$U(#\$zRN !{zO\$zR\+U({x{x+xz N} U.UCU Uvy+zCUuz{ztx\$U(xz} z{xzz


!} } z{U)U {N!C}xU({N+z

}Cz

initdb

T\$zQ!{\+$ ^z|*@{:z|\$zuxx} x!x!!} x

} $\$UUUu@u+{+! xU { x/}U^ U((\$zF!} } z{U|x{c^!!\$U(Ly+U({c, Cz{#{:U(.zzQ{z


} U\z})^!LV} U&zhU. z\$z+{+! xUq!})+!\+z3ad+!{'+zVU\+z zxx} x!Q
{z{x\ ,U|O} +zH^Q+zFy+U({zzLQz(y+CU(}zt{:U\$z({zLx\$U

T+z

y+CU(} +!IR
} Cztdz \$xCz})U( xUu\$zF\$^U {Cz{y+z})xU(!U}xzt^Uuz{+zU
z\$Oztinitdb
y+zt.x{Uuy+@O!} ztU $U(#U ^^U 1z{R +zHRx\$ztO}Cztdzt\$xCz})^U xU|\+z
\$^ U {6^ z{F\$zDz,z} 
!
zCzH !uy+CU ysxz\$t\f\+z"+!+{+y+z?${+! xUX\$zN
initdb
 !{z6\$z6\$
U({

initlocation

Nombre
initlocation

4Cz6@ ztF\$z4!.!} zH.xzU|{z} \$@xUy+! QQ !{z6\$z

\$^U {d\$z(+U({c, CzLK

Synopsis
initlocation directory

Entradas
directory
0)N
\
\+zR\$zt{:zt!{!)!}z!d!{ !{z{\$zO\$^U {!^zJx!{\+zHCUu\+zJ{x{cz.N\+z
!C}x
U {3,#
2

Salidas
initlocation

}Czt!IO\$xCz})U( xU {dzHz( !zt{y+z} x$} !\$U



Descripcin
initlocation

} Czu$+zH !Cz|\+zD!.!} zH.xzU){z} \$! xU)y+@uu !{zD\$z

\$^U {+U({ ztvK$zX\$x{} +{:x;zH

U.

z,!O
d#ivQj+i?Qj:|v| i {U(Cz}.
.
zH^U#U)} UxzHzug{:@{:
vx+z$!
8>v9sz{xe!x\$U} U.UmJ'GO8y+91zH^U\} z{{:zO!{.
zQ+zOz{?
J
! xt zR\$zQz U(
U
8. xzH^z9O} +!vz{#Cz*zCzH} x!\+ $zQU({#z,zH.
y+U({!v
!
xx!@o!Cz!{F\$zD!.!} zH.xzU){zt}\$@xU

+!Ry+U(\$z^xx!!#z{c^zN} U.\$UV${c^z\.\$z zN@zt#zH^!\+U8} U.!{+!vy+U(z,zH.y+U(9


QQ !{z6\$z6\$
U({d}U.
Uu{+y+z+{+! xU|8CU U 9

Uso

+!#}Czt4 !{zd\+z#\$U({$zHysU {x} x\!^zL! +{:\$UQ! x! zd\$z#zH^U(U


$ export PGDATA2=/opt/postgres/data
$ initlocation PGDATA2
$ createdb testdb -D PGDATA2/testdb
T^zLx.zH^z!{x +{c^z\Xy+zL.xzoJ'G!{d8y+{9! {U ^!{dzHU} z{y+U \$ '6z{} x x

$ initlocation /opt/postgres/data
$ createdb testdb -D /opt/postgres/data/testdb

ipcclean

Nombre
ipcclean

! U L^!\sU({

Synopsis
ipcclean

Entradas

x 

Salidas

x 



$x.y+xQ)zH.U xO} U\.ys!^x\$Q|U {{:zQ!*U CU({d\$z6a !} z\${a

Descripcin
ipcclean

x.y+xX#.z.U xX} U.y+!Lx\$Vzbzt{y+!} xU\$z{zHQ!*U CU({N\$zVa !} zH\${a

! U L^!\sU({s U( \$U#U(\$!{R!{Qx{c} x!{R +z{Uy+CU(y+xz\$!\\$zte+{+! xU

^ @{:zT\.
x
x{c^ ^ U(E
T\.
x
x{^ !\$U(R\$z !{zpostgres
\$zmN
 U({9
T8,N
\$z zFz,z} ^!bzt{^zFy+CU .O O+zQy++z\$zF} !+{!b@xy+U\+zF}U.y+U(^.xzH^Uz
 !Ug8z{|\+z} xs} !'\$!{9{xd{:zz,z}  )\$+ ^ zV
Xz,z} +} x\.
+ x+{+! xU $
{c^ z/y+CU\
 .{:zD\+z zz,z} ^ !?{x+!y+!z} zHQ.
zH
{,z{F} U\.
U)ysU z,zH.
y+U
semget: U
NoztJqueda
!Jz ,^z} ^ !#zys U(} z{U
{zLJ
x
espacio
libre
en
el
dispositivo
postmaster
\$U(a !} zH
\$a
vU(.zzVzt

vx {zQz,z} Rz{c^N(C\$zH.xzH^@{zy+CU } z{U

postmaster

z{cN} U( xzH\$U(1{:zQztx.x!L

[.z.U xQ} U\.ys!^x\$4|U({{zHQ@*U(CU({d@.!} zH!\$U({by+U(zt

${c^UDy++zt\$z

postmaster

postmaster

y+CU\U(}@zt(*@U zHz !(\$z6U({#{:ztx\$U(Cz{da !} zH\+a$xx}x@\$U {#y+U(bz{z

${czF{} xy z{#/a@} a!y+zCUzHVU {=.+}U({!U({\+z{\$zF+zF*+"Fz{} x^U !\$xz4EJz


x\$Uu} UX

{U(+} x\)
x
+!.
zH^ zQz+} !Oy+U(^ ! z 4
+!+xztd{
zCz
}xO{zLR
 xzH
zH
x\$
$J{} xy+!} zR{:+y+U({x}xG\){U( zOzJ*U(L.U\+zR{!x\$N\$zO^xx\$!\
1{+y+U({:x
ipcs
} x\
+z?y++z\$z
UD{ze} xzL 6zH ^ U \+U {dU({#{x{c z.
!{dU y+zt^ x
U {ysU UD +z6
y++z\$z*!!
zH
{/;
y+!L x} +!

pg_passwd

Nombre
-

pg_passwd

.xys$Ozt($} zCUy+UD\$z6y+!{{U C\${

Synopsis
pg_passwd filename

Descripcin
pg_passwd

z{#Qz .xzH^Qy+! [.xys$@Q*} xU!x\$!\/\$ztv$} zt Uy+U\$z

y+!{{U C\${?\$z4+U({Czt{

${^zNzt{cxU\$zN@zH^x+}@}x)\$zOy+!{{U C\${JU/{z


> G


Qx{c!@}x!y+zCUz{#U|\$zFU({\$xz {U {x.z} x{c.U({^xx!!\$U({#zR{z+ x\$!\

${y+z} x++z4z1!C}JxJUN\$z?y+!{{:U(C\${bzHz.x{c.U|z{cxGUD+z4!zH^x+}@}x

Ident

zH

z

$PGDATA/pg_hba.conf M
host

unv

133.65.96.250

255.255.255.255 password passwd

NU\\$zON'zN^z xU #y+zt.x^zOzJ!} } z{U\$z{\$z @! P@ _!t `!P 7 +{:\$UU {4ys!{:{U(C\${
x{c
!\$U({NzH
*U(.
 Uq\$ze!C} xJUq\$zy+!{{VU(C\${R{x $zz*U(.
$
$PGDATA/passwd
UX\$z

eysx.
zt4} .
y+U)zt{Oz
U\.
 CzD\$zD+{+! xU(.zt
$
{zH

/etc/passwd
\+UV} .
y+Uzt{6ztsy+/etc/shadow
!{{VU(C\q} x* !\$U $
Czt{^ Uz{o U^ !.
zH^ zx\
U !\$U T{'J!{o^ zt{
'
zt!{?{x
+xzH^ z{4\$zQz ,^zH)
y+UVzt{:ysz} x$} /
z?.
x{c.
UVy+!d\+zE
U.
 CzR\$zO+{+! xUy+!{{
U C\
M

@

pg_guest:/nB7.w5Auq.BY:10031::::::
pg_guest:/nB7.w5Auq.BY:93001:930::/home/guest:/bin/tcsh
pg_guest:/nB7.w5Auq.BY:93001

+ Uz\$zt!+} zCUO\$z#y+@{:{U(C\${!@} U\.\+UOy@y+!{{:\ Dz@} !{UO\$z{} xUO^z xU(L


.zH^ z\$zt{:ys$"t{#\+z4} .
 x!ezv\$xCzt}*^ U xUN\$z ! ,UD($
hENT(TNQz,z} +} x\{x +xzH^z
\$zv} U.

\$U|zt{:ysz} x$} Qzt\
+zJ
UDy+!{{VU(C\/y+!
pg_guest M

% pg_passwd passwd
Username: pg_guest
Password:
Re-enter password:

NU\\$zQRy+zx} x\

Cz+xzCzHz\.x{c.Uy+!{{VU(C\
Password:
Re-enter password:
\$zNz
!\$y+zCUmU/
{zx{+!x!!L)z.Uzt.x@ $s!C} xJUU( xx!+\$zRy+!{{U C\${
{z6CzH
U.
 Q} U.
U

passwd.bk

psql

xx!QFU y+} x

-u

y+! QxU } !z{cz4z{cxUu\$z4!zx+} !} x\

$!{d'zt!{d{:x +xzH^z{.+zt{^Vz ,^z.y+U {#\$z6+{Uu\$z4OU y+} x

% psql -h hyalos -u unv


Username: pg_guest
Password:
Bienvenido al monitor interactivo de PostgreSQL:
Lea por favor el archivo COPYRIGHT para los trminos de derechos de autor del tipo de PostgreSQL.
Escriba \? para la ayuda en comandos slash (/)
Escriba \q para salir
Escriba \g o terminar con punto y coma para ejecutar la consulta
Usted est conectado actualmente con la base de datos: unv
unv =>

$Q!^zH^x$} !} x\$z[+z PQxx!Fz+zHU|z{c^xU|\$z

Pg.pm

} U.U|z{c^U
M

$conn = Pg::connectdb("host=hyalos dbname=unv


user=pg_guest password=xxxxxxx");

+!(Q!{#\$zH^!z{@Cz+" {zF
$!^zH^x$} !} xJ} ^

y+U(U ^^U

src/interfaces/perl5/Pg.pm

{Nxx!ztt}U.\$U

pg_connect

}UNU(y+} x\

-conninfo

% set conn [pg_connect -conninfo \\


"host=hyalos dbname=unv \\
user=pg_guest password=xxxxxxx "]
vzdy++z\$zHNzH.zt!U(\$!{e!{} z{$y+! U y+} x|z ,^zt}^\$UOzt@} U.\$UR{x+xzz

% puts [ pg_conndefaults]

!

pg_upgrade

Nombre

-ysz.
x^ zFQ!})^+!x!t}xV\$z64z {:x^zxU({:xm^zHz+z
pg_upgrade

U zQCz} !v!U {\$^U {

Synopsis
pg_upgrade [ -f filename ] old_data_dir

Descripcin
pg_upgrade

zt{Fxx\$@\gy+! @}*^+!x!!#z{x.^zxU(\$zE$U({c, CzLKq{:x

 z} z{x\$!\f\$zDCz} ! !oU(\$U {QU {O\$U({

UU(\$!{Q!{4^{:x} xUz{R\$zUz {xU\z{Q\$z


+U {cCz{R{zuy++z\$z.z ,^!Q\$z|zt{^.z $z x++zu!{EU!{N\$zumJzt{xfy+!
{! ze{x!D\$zH^ !z{dzH
{/x
{^ !!} x
 )(*(t +,$

dz{y+!\$zN{:\$xCz})^U xUV\$z\$^U {6z1x{czz(y+Cz*z~ x zH.zH^zD!} xzH\$UV^!} x!\$U

}U.y+zH^U|} Uz(y@\$.y+!

$+zUCz!x} z

-12($
 - !/.0*
V- $

% pg_dumpall -s >db.out
y+! [!} x!Fx +4@ Q\$z6\$ztx} xUz{#\$zFQ !{z6\$z6\+U({{xxV\$^U

NzH^zH Qz(^x+UDy+U({.!{cztb ^U(\$U {#U {a !} z\${a

dzHU. z48${\+UUQ9s{/^x+U|\+x zt}*^U(xUy {:


v,z} ^z

data/

data.old/

% make install
y+! Fx{c!@bU({=+zHU({ x! xU({

,z} ^ z
v
y+! |} Cz!

+zH
u !{z\$zD\$U({(zH.y+Gz
! !{d\$ztinitdb
v{:x{c^zH.Oy+! Q+zHz {x\

+z|}U^zH G!{

, x}xzuz:
+H
z U.y+U c
{ .!c
{ z 8\
U ^
z{O\+zu{
.x .y+U L
^
} xV+
z x  
 f+{$@xU
M
{:zN}Uz})^zD|u !{z\$z\+U({Q@{^|+zD|@}*^+!x!!} x.z{c"D} U.y+zH^!\$ KD+x@{

\$z{zzuxx} x!Rzty+U({.!{cztR{x&/U(y+} x1xb>LU@z !

.zHz 9

pg_hba.conf

^zH.y+U(@

?. xz6{/\$xCz})U(xU\$z(^ ! ,U|!} xQzv\$xCzt}*^U(xUDy+x} xy+!v\+z(y{!|z,z} z


M

% pg_upgrade -f db.out data.old

$y+CU\ .!L! !{:z x+}@}xUz{$y+! } zC}xU(@{z#\$z#+zx^U(\$UOz{c#}U


!\+UR}U( zt}*^ .
zH? z~z,z}  !L6
ztL{} xy
\$ U(
ys!o
U 
zeFCzt}U
{c C+x: U(\$!{b@{

@

 !{:zt{e\$z#\+U({4! !{$+zUEz'! y+zt UF{xD\$^U({

} z{:.
U\
zL?
*'{x} .
zH^ z
^ U\
! !{\+z?{x{czH.U({V'\$x} z{V\$zt{:\$z
@}xOU({?{+ \$xCz})U( xU {x\$x}@\$U {\$z ,^U\$z
{+{c
x^ +zH
\+U
data.old/
U {#!C} xJU({\+z6\$^U {r!} 'U({} Czt\$U({\$+ ^ z6Oz,z} +}xG\
data.old/
\$zv{} xy
\$ U(
U {V!C} xU {\$z.\$^U {+zJU} U\?xzHz

dz{c@ z!} 6{x(z{rz} z{! xUN{X^x +UD!C} xU


y+! 6ysz)xx}Uz
pg_hba.conf

xU\zt{OU({+{+! xU {

zH^zH Q +zQOxx} x!z(y+U({.!{c^z


!7 N


L.
$
x
z {
x\$U\$zRN !{zQ\$zO\$ U({?!})^ +!x!t\$ vxzH
} +zH
GE E L 
Ce
zJ} U z
 ! y+CU( zH.!dzU} z{z} z{x!LCzt}+yJz !|{${V\$U({ zt{c! z} xzH\+U<{
zt{:ys\$UV} U\.
y+z UVy
!\$.
y +
+z\$zOzx.
x
@?zt\$xCz}) U( xU
}+
\$UV{z
data.old/
zH
} +zH Cz4{:^ x{*z} U|} U\
U({Czt{:+^ !\$U({#U(\ z
x\$U({
V !{zV\$zV\$U({!}*^+!x!@\sX{z/zH} U !L/zH;;z{c^!\$U Ux.y+xU $CU( ! zH
$
zHz\$zt{:zt!?z,z} ^!$ n6N [ Nrm1d#l zt{\$z+z4} U.xzH} z4z ! ,U
.
\$z6y+CU(\$+}} x

postgres

Nombre
-

postgres

v,z} Qy+CU(}zt{:U+U {cCz{#\$z6+{+! xU|x} U

Synopsis
postgres [ dbname ]
postgres [ -B nBuffers ] [ -C ] [ -D DataDir ] [ -E ] [ -F ]
[ -O ] [ -Q ] [ -S SortSize ] [ -d [ DebugLevel ] ] [ -e ]
[ -o ] [ OutputFile ] [ -s ] [ -v protocol ] [ dbname ]

Entradas
postgres

!} zy6U {{x+xzH^z{#!.zU({zVGQ'zO\+z6} U\.\+U {


M

dbname
+ @L .zH^UDU(y+} xU\@
z{y+z} x+}FzU\. CzF\$zFO !{z6\+zF\$U({#Q!} } zH
\$z
^ U.
Oy+U \$dbname
z*z}*^UuzJ!U(b\+z6! x! z6\$z6zU(JUu3
dbname

nBuffers
Lxzt:.
U U(Q\$z|\$^ U {R{zuz{c,
z,z} ^ 
\$U. ,U.z

z{Oz
.

zCU\$zN +*z {?\$z.
z.
U xD} U.
y+!L x\$+zNzt postmaster ^ nBuffers
xzH
zRCz{z
!\U({
y+! U {y+CU(} z{U {e{:zt
x\$U(Cz{+z! H
} Lx1z.
U\^ U(postmaster
$\$z\$
U({{zz,z}  ?} U\)
U
y+CU } z{UVx
\$zy+zH
\+xzH zt z{y+z} x+}uzt 
.
zCUX\$zD +*z {6|Cz{zL
! $
{c zJ
!U(4zt{
y+U e\$zt*zt}*^ UR\$z?!F +*z {t\$z?!}@\$6
U8Uzt
!U e $z 4
6L^ zH
F!{x\
!\$U
zH
} U\
 9
,
UU.U({c !bzt\J.ztCU|\$z(z {x\\$zt {zLx\$U(

!

DataDir
${:ysz} x$} 6zv\$xCz})U( xUDQ+{!e} U.U| !'6y+! Fz;!  U(v\$z6\$xCz})^U xU {d\$z?!{d !{z{
\$z#\$^ U { Lx,
UO{zz{y+z} x+}@:z
U\.
 Cz#\$zt@\$xCzt}*^ U(xUF\$z#\$^ U {$y+U(+\$z*z})^ UQz{$z
!GU J\$zd
J
! x! zd\$zbzH U(L
U4+
hE
T(
T Lx+
hEN
T(
T
U[ xz
z#
!U(@{:x\
!\$U(
zH
U
} z{$z\$xCz}) U( xUF+{!\$UFz{
x
! x! zd\$zdz U(
U
vxH
xbz{c XU(y+} x\;

\$z'
z/\$zV} U\.
$POSTGRESHOME/data

\$U {z{c&
!{xe
@\$!{${zV+{Xzb\$xCz})^ U xUysU
\$z*z}*^ U|x
\$x} !\$UD\$+  z4Q} U\.
y+x!} x

,
%;+zt{^[U(\$!{#!{d}U{+!{

=
Nz{!})^xJ??z,z} +} x\D!UQ^x}\+z

fsync()

\$z{y++"{\+z} !\+ {!} }x

${c

U y+} xQ.z,U |zJ z\$x.xzH^U  yszCU} !'\$\$z{x{cz.|\$+ zR^{:!})


}x)zHX}+ {Uy++z\$zOy+CU\U(}@#y+"t \+x\$R\$zRU({4+x.U{4\$U({?x^CU \$+} x\$U({
.@\$

fsync()

vx

U {6\$^U({?{:U.!.!} z!\$U {zH.ysU !.zH^zNy+U(z{x{cz.

U y+zt^xU @|z{} x^U {#zH\$x{} UUQ!{x@ \z

,
,eU( !d!{Cz{c x} }xUz{+zQx.y+x\$zHVE.U \$x+} !} x\V\$zQOz{c^ +})^+R\$zF!{=

 !{#\+z6{x{^zH.
\$z;U. z

${^!{r@@{#{Umxy+x} .zzF!{d+zFx} + zH03!y 4F!vysx} xy+xU

K
${:ysz} x$} Qzt\.U(\$U53!{xzH} xU {U64


\

SortSize
${y+z} x+} V} x\$@\;\$z .zH.U(x+{:@OysU FU(C\$zH!} xUz{Rx^zL!{Ng!{:zt{

zt{\$zFCzU(C\sz
!bz/
+} zCU({ z.
y+U !zt{zHV
\$x{} U $
\
!U {zFx
\$x} Nz
xU( e
z{${:

!U(Ny+U(R\+z*z}) Ugz{D\$zVP `XxU( e^ z{  zt{:z/ $zVy+! X
X} U\
{+
}U.
y+z,!e
! x!{6U C\$z
!} xU\
z{F>vU/!{z{O\$zt zHq
z,z}  ! {zzHq
y+! !ztU  X}@\$

y++zt\$z| xx!@6!{c
xU( e^ z{R
z{Q\$z|zH.
y+z@!4y+U
z6\$^ U({
zH
+}ztCU {x zH)
y+U !z{ SortSize

DebugLevel
!
$
.
zH^ UU(y+}xU!
\$zHzt.xNzeJU(.zH.\$zQx*U(.@}x)\$z
\$zy++ } x/
+zQzt{zL
x\$DebugLevel
U y+CU \$+} xL Lx
z{#U 1z y+U({.!{cztbCzH
DebugLevel
x{c !L^ U \$U|z !+} U|\$zF} U

zLxV
$
!\$
Q@{ +! !U( zt{`OU.! U Cz{!O\$zH
y++!} x.
z{6!}) x
!\|zH.
ztsy+CU } z{UV\$z .
U U(4\$zN\$ U({6Xztsy+U {c.
!{c zt.
+z{c^ 
Q!
{4x
*U L.
!} x\
x
} + zH
\$UV{z U(L
UX& L!
+}UV\$zRy+CU } z{U  z{zN+z{x 
U
{:zFzt{:ysz} x$} OV
!C}xJ
UDy+! O!.
!} zH
!Ox
*U L.
!} xX
\$zF\$zty++!} x
4.
x{)

!y+Czt}zt6
zH
Q} U\
{UJF\$zvy+CU(}zt{:UDy+!\$Cz

postmaster

z
${cU(y+}xf} UCU(/} \.Uq{Ufxzty+Cz!\$t{N!{R*z} !{OzHfzH !\$g{!x\$
z{x
} +x\$!L!{?*z} !{y+!{!\$t{4N\$zt{\$zQU {
vxRU y+} x
y+CU } z{U({R\$zu!y+x} !} x\f
@{:.
xLf
-ezt*U(.
^ U73$
+CU yszU
4 8
9f
} !{U
}U^ ! xUu{zQ!{.
zQ+zQ!{*z} !{#z{c,/
zHV
*U(.
^ U8!
3 T.
z DD-MM-YYYY
x} H
U6
4 8
9
$!{*z} !{e{:z!} zy  u
y+U(+z)
U\^ U e\$z\$^ U({zH|

?.
y+xo
! xz\$t\MM-DD-YYYY
\$z*U(.
^ U({:
ys!VzH
!\$\$z*z} !{sz{c^ zy+!L.
zH CUq!*z})^ VVx^ z y+CzH^ !} x\
\$z} !{U({
.
 x
+U({ 6"!{z *,#
{#x
*U L.
!} x\
j1!

 y+!(Q!
\$zQ !{zQ\$zQ\$^U {

@

U

OutputFile

'NU {o.
z{,^zt{4\$zQz U(#Nx*U L.!} x\X\$zR\+zy++@}xX
Lx
z.
U\^ U b\$z6\$^ U({{zFz,z}  O ,UDz
!U {=.
zH
{,z{#\$OutputFile
zFz CU {zFzH'
.

 x"g
u!y+x} !} x
@\$zHQt {O\$z|postmaster

y+ztCUXux
*U L.
!} x
\$zD\$z
OutputFile
y++!} x|
{z?zH
'F4F} U
{:U(F\+z
8y++z{c
UN+z6{(UDu
\+z{} xy^ U $\$z
!C}x
Uuy++z\$z6zJ
x@{z6F
+} zCpostmaster
U|Czt9

{
%&$zt{c
Vx
*U(.
@}x;
\$z  xzH.
ysUU\^ !{Nz{c !\+'{c x} !{N!
@b\$z} !\$} U\
{+
${^Uz{?^xJy+@E.z\$xG\$!{\$zOCzH\$x.xzUUy+! O{q+{:UzXz,+{^zO\$z?.ztCU
\$z6 +*z {

protocol
${y+z} x+}Dz.zCUV\$zsy+CUU(} U UV|zH.y+zt!zH^ zRD@y+x}@}x./z .UU(?\$z
\$
U({dzH
z{c F{:zt{:xV
zH
y+!L x} +!
!DU\^@{x! x!{dU(y+}xUz{+zFy++z\$zz{y+z} x+}@{zt${!\+!{#ysx} xy+!.zzF} UVys U

y+({:x^U {\$z6\$zty++!} x

+U {cCz{

LzFx{c!+'vx})zHzFys!F{:/+{Uuy+U(b\$zt{:! cU(!\$U(Cz{d\$z


E@
L { 
:9Q L 
\

? LQE!
e)G> G
QE!

a )!
L TN\$zHQ!{L}+@

+xz Q\$z6zt{c!{#U y+} xUz{#y++z\$z6\+z{!y+!Cz}ztUD} . x!z}+! +xz.U.zH^U

; c{ !{dU(y+} xU\zt{y+! F} !{U({z{y+zt}x@z{d{:U

T.ccDcK< L*a= L*,/> L*a= L*,

; { ^OU(y+}xm zHz QmCzH.z\$UUU(.z\$zFx*U L.!} x\


?
zt{!}*^xQz({x{czH.O\$z4 U +ztU {

zt{!}*^xQz(+{U|\$z(} !L})^z\$z(+zHQ'ztO}U.UD\$ztx.x!\+U \$z6} U\{+^!{
*

{ex:

e

+ U(x z4ztL+{U\+zo."H^U(\$U {dy+!Lx} +!Cz{b\$z4zt{}ztUNDCzxUz{



\$z{!})^xJ
{:} 
ztU {Q{:zt}+z
}x@z{Q)\$zD'
\$x} z{JCz{y+z}) x
.
zH^ z?.
xzH !{ M  s  i U)!} zH
n m
h
}U
Cz
xU\
zt{\$z4 +}zt{zH
@!!\U {.
z
z6u!{
Nota: Ni los scaneos secuenciales ni las uniones de bucles enlazados pueden ser desactivados completamente; Neither sequential scans nor nested-loop joins can be
disabled completely; las opciones -fs y -fn simplemente impiden al optimizador
usar estos tipos de planes si hay cualquier otra alternativa.

x
+CzHxzHzDz,z} +} x\\$z|}U{+ ; {:@(.+z{c z! U($\$z$y+g\$z

z,z} +}x

y



dbname
a
\$x} |! .UU(?\$zN\$^U({Q+zN|{x\$UXxx} x!\$UVy+U(4
/!} z\$x*zH
z
zt{F{+y+U({:x} xU
z{Q{:U( Cz
z{c x
\$zNU {Q +*zt{ \$zt{:} postmaster
xyU(Cz{6\$z+} zCU { z}
? U {dy+!L.
$
zH CU({dy+U {c^ z xU Cz{d( yz{c,
Czt{^ x
x\$U({dFU({#} U
{x\$z !\$U {=!
3 {zH
+CU {@4

,Jy+

{z |ey+ ztuez Lz} ^U


%&+z{c uz{c^!\$'{c^x}@{Q\$zU^xzH.y+U.y+! u} !\$|} U{:+^ zt!} xU\!\+{R} U} !\$uU

\$z6U({=.(\$+U {y+ x}xys!z{#\$zv{x{czH.

U|y++z\$z4{z+{!\$F}U

-s

Salidas

Nz xx^U$.zCU\$z[.z{:,z{\$zFz CU +zRys$zt\$zHmz {:zQ} +\$Uu{zQz,z} ^O\$xCz})


.
zH z4z.
U\^ U \$zF\$^ U({:@ys U( ! zH.
z z6U({xQ!
{} U.

z{{U
M

semget: No space left on device

Lxd{z&.+z{c )z{cz#.z{:,^zt\+z z 'Xz ,^zt}^! {:z

3
J
zt)z} Ufz{c^ U
'[U*}xGU\!ty+CU  ! zH)zHz
Lx^U(\$ipcclean
postmaster
z{(z} z{! xU/} U
+@4z +} zU/y+! DzH.ysz!.
zH.
U(x|} U.
y+!L x\+|){zHQ!
*U
U({!}U.Uu{zQ\$z{} xz6zH!{U@{\$zFx{c
@!} x\ Lx {zQ} +zH^ R} U/

+} zUu} U
.zH.U(xO} U.y+!Lx\$Oy+@^x}+@.z z6y+zt+zO>vU'.
x zt{!(+{Uu\$zF{zHQ!
*U(CU {
{:ztzt} z{!xUCz} U +@Uy+! Qx
CzH.
zH? !
U|UDU {U\^ CU {
y+C$"t z{z?6xx} x!

\$z+zHU

Sugerencia: Es posible posponer la reconfiguracin del ncleo reduciendo -B para minimizar el uso de memoria compartida por Postgres.

Descripcin

.U\^U F\$z\$U({O\$zU+U({c, Cz{Ry++z\$z{:zt6z,z} !\+U)\$xCz}).zH^z\+z{\$zD{z$\$z


; 
+{:+@xU A; {c
U)\$zt z 'u!} z {zD
x}.
zH z|y+@ !Czt{O\$z|\$zty++t} x\
y+U(6z T
zH
U .
xzH^ !{U CU({.
U UJCz{#\$zF\$ U({z{c/
{xzH
\+U 
zt{^ xU
!\$U({?y+U b
postmaster
z{c
z4}U!
, U\$z4@{:zt{#\+z6\$^ U {
T U {#\$zFU({y+@.zH^ U({#\$z{} x^U {!+'(y++zt\$zHy+!{! {z6!.UU(d\$z6\$U({4^J"t{
\$z} .ysU,3!U(y+} xU\zt{F\+z !{zN\$zN\$U({@4D\$zNDy+zH^x} x\q\$zR}Uz1xJ/y+U(?U&U
y++z\$z/Cz*zx {zQR&.U\^U(#y+!Lx} +!d{x#zt} z{x\$!\X\$zQCzxx} x!dz y+U({c,.!{c^z
z{dy+!Lx} +!L.zH^z6y+L!})x} Uy+! Qy+!LH.zCU({Cz!} xU!\$U({d}UO\$zy++ !}x

B; c{ ^U

+!.zU)U(y+} xU\@

zt{:y+zt}x+} uz
U\.
 Cz|\$zD !{zD\$z|\$^U {Qu!} } z\$z
^U\)RysU \$z*z})dbname
Uz;!U(b\$z44J@xt zF\$z6zU(U|3 ;

dbname

Notes

1x{^zH.^xx\$!\$z{4y+@ zt{:U(zy+CU  z.!{4\$z.zH.U( x|} U\.y+@^x\$D} U.U


9z

ipcrm(1

ipcclean(1)

$zp. x"H

 L4
C

ipcs(1)

postmaster

Nombre
postmaster

,^z} ^Qz({zLJx\+U 8@} zH\$9,.+^x+{:+@xUD\$z(+U {cCzt{

Synopsis
postmaster [ -B nBuffers ] [ -D
DataDir ] [ -i ] [ -l ]
postmaster [ -B nBuffers ] [ -D
DataDir ] [ -N nBackends ] [ -S ]
[ -d [ DebugLevel ] [ -i ] [
-l ] [ -o BackendOptions ] [ -p
port ]
postmaster [ -n | -s ] ...

Inputs
postmaster

DataDir
; {:ysz} x$} Xztb\$xCz} LU(xUg)+{!O}U6M.U NPO/\$zd!Q U(b\$zV\$xCz} L^U xU {\$z0Q@{:zt{D\+z
\$
L U({F vx
Uu{zFzt{:y+zt}x+} JK>R z
UMS
Q CzQ\$zF\$xCz}TL U(xUy+Czt\szA^L z.
M x
!\$UDz{zt
U !U(
\$z8
U ! x
Q z\$zzL U(
US+
V h K>WYX6W ~F vx+
V h K>WZX[W 
U)zt{\L^u
] z{y+z} x+} !\$ R zL U
} z{
F Lx6`|

a {zFz{y+z} x+} b
` x(cJ
U ! x
Q zY$
d z
{:z4
L xx_!O Oztv\$xCz} L U(xU
zA`L(
a `aeJ
` xz{@L 0
a ys}x7$POSTGRESHOME/data
d zu_N_
$
` ztf$
d zu} a.
M `da R z$
d xCz} L(
a x_g
a y+CzA
d zA^L z.
M x_
` dq
a z{Rz

L xx_!O dD
a ![MSa6.
M zA`L'a5$
d z6Q} a6.
M y+x!} x6`=F

Jg



nBuffers
a
\$x} Oz;.zCUD\$z6 +*^*z{#\$z[.zH.U(xGQ}U.y+!L^x\$Q+z
t{:x\!q
postmaster
!\.
x
x{c !L
y+@U {6y+CU(}zt{:U({6\$z{zL
x\$U(?+zNx
x}z C; 
!U(?y+Cz\$zH^zL.x!\$U
y+! 4zt{^ ?U y+} x
z{!? +*^*z {~{xzH
\$UN} !\$? +*^*zt$\$z?4 xU  \ zt{d8URUN+z?{:zt6 $z
z{c
"6x
\+x}@\$U|zH ??
D FLgzH
} U\
EGF HI@F

JK

!} zy^FU({{x +xzH^z{y+@.zCUL{#zH{:/'zO\$z6} U.\$U({

nBackends
; )MS!] 1x_MSah`iM.z2afd$zy+2a(}zt{\a({6zA`.zs{zUx_da(YjQ !} zA`dIe+zya({@LM.@{\L^zYLxzA`z
y+z.
M x_L x_d
a x_
` x} x!kF ;
` Q} a6
` 
E + !}x6
` y+CzA
d zAL ztk.
M x_
` $
d Fz{@^L z%
U !_(
a z{@L^Q
] +{+!_.
M zA` J
L z8$

d z
` x_dq
a zA
` l R)m7n oAdo8p\to F[q da7
H p@^L V`r
U !_(
a sMS!] ut_MSa7dowvxlywp@tp zp\t_p J
LoA.
M n o{do|p\a n (
a k^L !soAp w } `Lt_+
d d~do n a6} oAp@apF X `L^aSo J
U @_
a n 2oBdoAL^o MSt_
` da
}Ba6MSawo 1MS!] ut_MSa n oAdobMSa6dt  } !p@ob} +`dawp\oc} aM n t Va6p\L^
E o{pjU1o o J!2}THt_Ua
p 2}t_`}B_do[} a6`EGF HI
:

doAQot_`t_} t_ p@oZoA`8MSa6da5p@t__oA`} t_a6p@aFkp@L^ao{p R


`dt_} %1oZoA n) a6} oAp@a>do
postmaster
`_ ]Z_ZU1t_`}B_}Bt_6`w} a`|
_%L^o MSt_`doAp@ t_a>j1oYLt_oA`oYoA}Ba6`L a6_I1ot_`t_}Bt_ ]
p\ n a n t_acE n abdo n a} oAp@aF2p\L^a n }Bt_6`|`ado{Qo NYL^t__t_O p\o=oA`5} a6`q^`L^a>} a`_p
a n } t_a6`oAp=doZdo n }Bt_6` m b1o%} _t_o MSoA`p@@q:o%oA`U1t_das_%p\_t_dsoAp@L^]`d m
b_bp@_t_dbdoso k a oAp@L]`d p@o ]`wdo{p\} L^d)a6pF

J dr DebugLevel
doALo MSt_`8_5}B`Lt_ddedot_`a MS} t_6`do>do n J
p\L^o5 EMSoA`L^a
DebugLevel
} t_6`o n) a6d} t ]8o{p@o U1t_da Ft DebugLevel oApc`a R)n a6p@LMSp\L^o % p@L o{ ]
La6da7oAL ]} a7do8}Ba6`oAut_` m `dfMS]pFV 0`t_Uo{_oAp>t_E_oAp>a7MS m a oAp>0l,p@o
} Lt_U1s_bdo n }Bt_6` m o{ n a} oAp@adoA[p@o Ut_da m|n a6p@LMSp@L^o MSo{p\L `0MS]p/t_`a 2J
MS} t_` R t_`}BP m oA`da0o{oA`L^a `a0doAp@o Ut_da m L ]} awdo n a} oAp@aF g aL^oo>p@t`a
p\o/o{p n o{}Bt_} `t_`Ei`| } Ht_Ua n 1o/_app@o U1t_da o{pdo{Q} oA`d|oA`U1N_o{`5p@wt_`a 2J
MS} t_` R oAp@LZt_`a MS} t_6`8p@o ]ZoAuHt_Qt_dYoA`8_ZLo MSt_`udop@ n a} oAp@a
postmaster
n d oF
Jt

p@Lfa n } t_6`~HQt__t_Lf_p>} aMS`t_} } t_a6`oAp|MSo{dt_`L^o X Y


D V VaeMSoAdt_`LowoAp@a} J
1oALdo%da6MSt_`t_a `L^o `oALkF@[t_`0oAp@L^ca n } t_6`,p@a6_MSoA`L^oboAp n 
a p@t_Q_os_c} aMS`t_} } t_6`,
L U1Ap=doA[p@a} oALdo%da6MSt_`t_a8`t__a} F
p\L^o n ]MSoAL aHQ1t__t_L^<_<} aMS`t_} } t_6`MSo{dt_`LofoA/p@a6} 1oAL[F X MSQt_A`oAp
`oA} oAp@ t_aoAp n oA} t_} P%a n } t_`
F doAMS]p R doAQt_>HQt__t_L p@o[0o{`8oAMSa6MSoA`L^a
-i W
do%_b} a6M n t__} t_`=F

J a BackendOptions
pa n } t_a6`oApdo
1op@ooAp n oA} t_} `oA`
p\a6` n p@dp
ZL^a6dap_a6p n a6} oAp@postgres
apt_`t_}Bt_dapo{`|oAp@o Ut_da n a oABackendOptions
p@L^o n ap@L^MSp@Lo F o n p@p@oAd8La_
FAt)_|} doA`doa n } t_a`o{p
Q}BoA`d7p\o U1o n a6}Bo{p\p@oAp%p@L L^oAdeQ m LHt_p
}Ba6`L^t_oA`osoAp n } t_a6p R o{`La6`} oApdo{Qo%oA`} o  ] postmaster
p@oA_coA`L oZ} aMSt___pF
Jn port
p n oA} t_} fo{ n o L^a X DZV/ V~aS_0oAuLoA`p@t_6`rdo| } Ht_U1a<doAp\a6} 1o{L=doAGda6MSt_`t_a
`t_c_a} [o{`woA[} 
doAQo ]ZoAp n o n a } a6`oAut_a`oAp/p@a_t_} t_L^dp=doAp J
do%_p n _t_} } t_a`o{pdoApostmaster
6_dadoA6} _t_oA`LoF@[U_a n oAdoAL^o MSt_`da|oApoA6oAp n oA} t_} J
da>oA`8_sU1 t_Q_odooA`La `a5VV X a R p@tVV X `aoYo{p n oA} t_} d R p@oZL^aMS
}Ba6MSa n oBdoAL^o MSt_`da|o{6U_a oAp@LQ_oA} t_da} `da|Va6p@LE oApo%} a6M n t__da8j`a 2J
MS_MSoA`L^obyl{ITF tp\ocoAp n oA} t_} >` n o La8dt_p\L^t_`LawdoA n) o{doAL^o MSt_`da R L^adp
_pG n _t_} } t_a6`oAp} _t_oA`L^o/jt_`}B_ m oA`da
IdoAQo ]YoAp n oA} t_}B] p@oA_oApoAMSt_p@MSa n o 2J
La m p@oAbMSoAdt_`Lob_pa n }Bt_a6`oAp/dos_psql
N_`o{cdos} aMS`da8a8Lt__t_O`da|_cU1 t_Q_o%do
oA`La `a|VV5 X F
ut_p\L^oA`0_E`p=a n } t_a6`oApdo%_N_`oAbdos}Ba6MS`da6pdt_p n a`t_Q_oAp n oA{_t_O do n } t_a J
`oAp=oA`0} p@a5doZ1os` n a} oAp@aoA`woA6p@o Ut_da Lo MSt_`oZdo%a MSb`a MSF@p@Lp=a n } t_a J
`oApc} a6`L a6_`o{G} aM n a LMSt_oA`LaSdo
o{`oAp@L^pcp@t_L} t_a6`oAp R)m P{1
PB2Y12BB221PP 28postmaster
1 TB  P2 F
,o{p\L Lo{E1t_hp@ n ,o{p\L^<p@t_L} t_6`o{p|`a6Lt_Et_} ,La6dap|_ap5doAMS]p n) a6} oAp@ap5oA`
oAp@o U1t_da 1odoAQoA`hL^o MSt_` mf oAt_`t_} t__t_O _>MSoAMSa t_ m p\o{MS]a a6pY} aM n L^t_da6puF
p@LaoAp8p@NdoAQt_da<o<` n a6}Bo{p\ado,p@o Ut_da 1o,`}Bt_a6`ohdo,MS`o ho k ]L^t_}B
n a6d NPs} a  a6M n o _E1`a|do%oAp@L^ap oA} p@a6p/} aM n L^t_da6p/`LoAp=do%L^o MSt_` F
p@Lp=a n } t_a`o{poAp n oA} t__o{pp@a6`=
J`

`a o{t_`t_} t__t_O ]A_poAp@L } L^ pG} aM n L^t_dpF'` 


n a6E MSda )n a J
d postmaster
MSoAMSa t_0} a6M J
NP|_oAEah`_t_O _Apb}Ba6`7oA n aE MS shmemdoc m oAuMSt_` _|


L
_
t

d

|
a
{
o
\
p
^
L



d
6
a
/
p

d
%
o
_


a

p
@
p
A
o
S
M

]


a

a

p
F
n
m



Jp

do{LoA`d ]bL^a6dapY_a6pdoAMS]p n) a6} oAp@ap/doA6p@o Ut_da o{`Ut_]`da_o{p_cp@o J



o ac`aH ]Y1oZL^o MSt_`oA`o1Fp@La6p n o MSt_L^oZ_a6p n aE MSda oCpGdoA
postmaster
B
R
n
p\t_p@L^oASIGSTOP
MS oA{_t_O Uo{_}Ba6pdo%`i} _oAa8bMS`a n sL^adap/_ap n a} oAp@a6p/do{[p\o U1t_da F

Salidas
semget: No space left on device

t n o{}BoboAp@L^obMSoA`p@@q:o R doAQo N_boq^o{}BL^ o{1} a6MS`da


F\`U1oAOcHoA} Ha
oAp@La R n oAQo=t_`t_} t_
`o{UMSoA`LoF't`>`acipcclean
`} t_a6` R n aQQ_o{MSoA`Lo
`oA} oAp@t_Los} a6`E postmaster
oA`i} _oAa8jo `oA_I)dosp\hp@t_p\L^oAMS n b1o n o{dcLt__t_O MSo J
MSa t_}Ba6M n L^t_d m p@o{MS]a a6p R L^} a6MSawp\ocdoAp@} t_Qoco{`h_p/`aL^pYdoct_`p@L_}Bt_6`=F
[t6okq:oA} L^>MSi_L^t n _oAp/t_`p\L^`} t_pdo
o{`,`fp@_awHa6p@L R a8Lt_o{`ob`,o `oA
postmaster
}Ba6`hMS m0n a6} MSoAMSa t_>} aM n L^t_d
aw`h_N_MSt_L^ocdobp\o{MS]a a6pMS m0n oAo a R L^
Uo{ObdoAQ o{}Ba6`E1 _a|p@,1o `oA n st_`} o{MSoA`L p@p n ]MSoAL a6pdosMSoAMSa t_
}Ba6MS n L^t_d m p\o{MS]a a6puF
Sugerencia: Tal vez pueda posponer la reconfiguracin del kernel disminuyendo lo especificado con -B para reducir la utilizacin de memoria compartida por parte de
Postgres, o disinuyendo lo especificado con -N para reducir la cantidad de semforos que utiliza Postgres.

StreamServerPort: cannot bind to port

tp@oYo{`}Bo{`L %} a6`woAp@LoMSoA`p@@q:o R doAQop\o{E1 p@oZdoY1oY`a>oAut_p\L^oA`8a6L a6p n a} o J


p\a6pZdo
okq:oA} L^]`da6p\ooA`<o{MSaMSo{`LaF{5MS`o MS]pZ]} t_1do>do{Lo 2J
MSt_` o{postmaster
p@La8o{pMSo{dt_`Lo%oA[} aMS`da
% ps -ax | grep postmaster

oA`wp@t_p\L^oAMSp/Qp@d)a6po{`f K>R a
% ps -e | grep postmast

oA`wp@t_p\L^oAMSp/Lt n a5 m p@Lo{Ma|} aM n Lt_Q_oAp} a`fV  } aMSa5p@o V J F


[toAp@L^]8p\o{E1 a<do5o8`aSoAt_p@L^oA`eaL ap n a6} oAp@apsdo
oA`eokq:oA} } t_` Rm
`rp@Np\t_Eo oA}Tt_Q1t_o{`daeoAp@Lowo k a ^R t_`L^oA`L^ofoAp n o{}Bt_} postmaster
` n o L^a7dt_*o oA`Lo8L^t J
_t_O`da7_,a n } t_`
F X MSQt_A` n oAdowa6QLo{`o oAp@LowMSoA`p@@q:o0dowo  a p@t`_t_O
-p
_

,
a

U


{
o
_Uo>8t_`t_}Bt_ t_`MSoAdt_LMSo{`LoL^t__t_O`da,oAMSt_p@MSa<`iMSo a
m
postmaster
d
o n o L^ap@t_M n _o{MSoA`LofoAp n o o0`a6p8p@oAE`da6p|Hp@L^h1ofoA=p@t_p@Lo{MSha n o Lt_U1a
}Bt_o k oo{ n o L^ah`L^oApbdo5t_`Lo{`L `oAU1MSoA`L^o1F1t_`_MSo{`Lo Rn o{do51o|aQL^oA`E
oAp@Lo,MSo{`p\Tq^ohdoho  a p@t/o{p n o{}Bt_} <``iMSo ado n o La1ohp\p@t_p\L^oAMSSa n o J
L^t_U1af} a6`p@t_do o oAp@o U1AdaGF{Va oq^o{M n _a R M<} Hp%U1o p@t_a`oAp%do`t_8} a`p@t_do `
1o%_a6p n o La6p=} a`0`iMSo a5MSoA`a bvxlysdoAQo{`wp\o } a6`Q_oAp m p@a_a n o MSt_Lo%
p\ n o p@ t_aL`o } } oAp@a5coA_PapF

IpcMemoryAttach: shmat() failed: Permission denied

`oA n _ t_} } t_` n _p@t_Q_o>o{pY1o>a6L awp@ t_a0t_`LoA`L^0t_`t_} t_ ` n a} oAp@a


oA`7oAMSt_p@MSa n o L^ahoA} H|d1t t_da o{}B p@aps} aM n L^t_da6p m post_o{E1a
master
H|`_t_OdaF K da,1o5_ps}B_U1oApsdoMSo{MSa t_8} aM n L^t_dp%do5Va6p\L^E o{pbp@o5Q J
p\`~oA`zoA=`iMSo ado n o Lap@t_E1`dae n a6}Bo{p\a
R o{p\L^a6p|} a`t_} Lap
postmaster



Lt_oA`obMS]p n aQQ1t__t_ddhdoba}  t p\toAut_p@LobMS]pYdob`t_`p@L_} t_`,oA`,`,MSt_p@MSa


p\o U1t_da F2t`a>H m a6L a6p n a} oAp@a6p
o{`|okq:oA} } t_`wjU1oAYMS]p  t_QAI R oq^o J
}BL^o
o%t_`L^oA`Lob`oAU1MSo{`postmaster
Lo1Fk[t6oAut_p@Lo{`fa6L a6p
okq:oA} L]`da6p@o R
doAQo ipcclean
] |} a`L^} L 8_ap n a n t_o{L t_a6pbdo|oAp@L^ap n) a6} oAp@ap postmaster


}

a
a

d
_
t

`
_8p\t_E` J
n

}Bt_6`edo n o La6p m [a<_ oAMSa6} t_`edo5_a6pp@oAEMSoA`L^apdoMSoAMSa t_w} aM n L^t_d8`a


Lt__t_OdapF

Description

dSt_`t_p\ s_s} a6S`t_}B}Bt_6`0oA` oY_a6p n a6}Bo{p@apdoA[} _t_o{`o m do{[p\o k t_da ^


postmaster
p@{} a6Sac_/p@t_`}Bt_6`do=^o p} a6 n t_dap m p@oASa ap m p@joA`S1t_`p1o`a
o{`1`St_`^p@ } } t_a`oApsdoA)^t n afo{p\^`dp@oAT
`a,tP`o } idt oA} <oA`o
} a`0oA[p@ t_a m doAo%p@o t_`t_}Bt_da|} a6Sa|` npostmaster
a } oAp@a|o{`0p\o{1`da n _`a
1 P15 TG2{ G:'T 1 =P2 =11 P kP 5B22 A A 1
`wt_`p\^_} t_6`p@t_1`t_} 0`dt oA} a t_ahdo|p@o8do8da6p m ``iSo aSdo n o ^a<do
o n o{doZokq:oA} ^ Sp/doZ` n ap@^Sp@o oA`w`cSt_p@SbS1t_`cp@t[}Bd
postmaster

`a|doZoA__ap/t_o{`o%`,dt o{}@a t_a m `0`iSo a5do n o a5dt_o oB`o1

Notes

[tPoA 
n oop@o n a6p@t__o * t__t_ SIGKILL n >*a  _5`_t_}Bt_0do postmas\`<p@7_ 
d o{1o P^t__t_ p@o
j_>p\o  n oAdoA^o <t_

a
ter
`
d n
jv{ BTbt__t_} t_` SIGHUP SIGINT SIGTERM
kill

% kill -KILL

a|p@,a S
b_^o `t
% kill -9

t_ n oAdt 1o
n oAdY_t_o _a6p oA} p@a6pGdo{p@t_p@oA<%jSoASa t_Z} a6 n t_
d m p@oAS*a apostmaster
p@11o n a6p\o{_s`oApdoZ`_t_ `w} St_a p@t
_a6 s_t_o
_ap oA} p@a6p|oA`p@ n a6do ^ _o,o t_^ <<p\^oAd^oA`o o<_t_dt_postmaster
} a6`_a6p n a6_oASp5do
SoASa t_s}Ba6 n t_db1osp@osdoAp@} t_t_o a6`w`^o t_a SoA`^o1
ut_p\^oA` t_p/t__t_ddoAp n oAp@a o =n) a6_oASpdobSoASa t_}Ba6 n t_d o{` ob_p
} _oAp=p\o%oA`} oA` `

ipcs(1) ipcrm(1 Am ipcclean(1)

Utilizacin

^t__t_`da|_a6p _a p 
%t_`t_} t_
n oAdoBo St_`dap oAp@} t_
postmaster
% nohup postmaster >logfile 2>&1 &

p@o,} a6S`dat_`t_} t_
oA`zoA n o ^a n oAdoAo St_`darjy{lT[p@^<oAp|_
postmaster
S`o sSp/p@t_ n _o m _c
Sp=}Ba6Si` 
d o%t_`t_} t_

postmaster
} a`,`<`iSo awdo n o a|oAp n oA} _} a m `<`a6S ocdobokq:oA} 
t_`t_} t_
postmaster
1_o



% nohup postmaster -p 1234 &

p@o5} a6S`da<oq^oA} ^
} aS`t:} `da6p\o58 { p%doA n o  a<vlAy
postmaster^ t__t_`da p@1 `o{} oAp@ t_
d oAAp@t_1t_oA`
6
a

d
o

}
6
a

`
A
o

}


@
p

A
o
@
p
^

o
n

okq:oA}  _as
n

postmaster
oZSada
% psql -p 1234

a|q: _ t__oYdo%oA`^a `a G


% setenv PGPORT 1234
% psql



Apndice UG1. ayuda de fecha/hora


Zonas horarias

a p@^ oAp@doAo/^oA`o t_`a S}Bt_6`w^_ t_`^o ` n YdoA} a6dt_}B _ %a6`Za t_ do{p\



doZoZ`a| m `wp@t_p@o{SboAp@^`d doYt_`o } oZ2`t_ n n a oAo  }B} o{p\a>s_aoA`o 
t_`a S} t_`do8a`fdo8t_oA n ae} d[p@ m }Bo{`o  @p da n n a o{o
t_`a S} t_`0doZa6`cdo%t_o{ n a n 2BP
1%0{/b782 1 B
Zona de Tiempo
g0=

fuera de UTC
v x{x

vl x{x

g0 [

vl xAx

a bdfdo g o oA_`d

g0
[

vl x{x
v v xx

vx {x

a cdo g o oA_`d
a cdo o `a|^d,do
p\ _t_bdoA6oAp@^o

vx {x

vx {x

vx x{x

a cdfdo p@ _t_bdoA


oAp@^o

vx x{x

a cdfdo p@ _t_bdoA


p@^o

vx xAx

a cdo%^d  a6`c
dos>

vx xAx

x {x

x {x

zo{_1a6 
` o 
p@ _t_
p@ _t_
a cd,do 
oA` 

 x

 xx
 xx
 xx

descripcin
a cdoZ_cdoA[d_sdo
`o oA_`d
1o{}BtP`o `} t_a6`6_t_`oA
p@^o

a cdo o `a|dfdo
p\ _t_ {o ` 
a cdoZ_cdoA[dPbdo
p\ _t_
a cdo%_cdoA[dPbdo
p\ _t_bdoA6p@

a cd,do p@ _t_


oA` 

a c^d,do p\ _t_bdoA


p@
a cd,do o `a5do
p\ t__t_bdoA6a6oAp@o

  o n   

6 coAp@   o  o{

6 c
os>



Zona de Tiempo

 xx

 xx

 xx

e 

(
" ( xx

 x

 xx



 xx

 [

 xx



 xx

 x

"*
*



"*

* xx

* xx



 xx

 xx



v xx

v xx

 xx

"*

.-

v xx



[

v xx



v xx

v xx




v xx



v xx

v xx


"  xx

 x

fuera de UTC
 xx

v xx
v xx

 

 

 ! 
6
 p@ co #$o p@ _t_
oA
A
o

6 !o%_c}  p@^
o t%
6
 p@ !o&o%os_!p@ oA_t_ P
oA
A
o


$



{
o
[

5o{p\^o&
o
'

descripcin
 oZ_ oA P oA[p@o
o p@ _t_
 o% _}B} p

p\  _t_
 o
6 c oA[oAp@o o
p\ _t_

' !
&
 #$
 o 
6 !
6
 ! o%  
6
 ! oZ _oA[!o{ p\^oAo  Pbo)
 6n

6
 ! oZ _o,+  oA  _so)
 6
n

 n

 oA[p@o   cv
o
>[

 ! %   
 $
  
  !) 


6
 !o%_!oAPbo)
 6n
oA[} o) 
6
 ! o o    o%oA} t_
!
 o o   o
6
  1 _^o  


 ! o% 6 n b} o) 

 ! 6 S/ o  p@
6
 boAp@ 0  o  p@12
6
 ! o o    } oAp@
6
 ! oZ  n
 oA o, 


 o%t% t_o   o% 6 n
6
 o{ o) 3 

 + oZ  n
 oA o, 
4 
6
 co{p\^    o -6 35 m
6
 ! oZ[o m } oA__o{p
'
 ! o%t% t_o    oZ[oA} t_
} oAp
6 oZt _t o
 c o p  oA
o% n
6 o o
o{} o 

Zona de Tiempo
 [

fuera de UTC
v xx

x x{x

x x{x

v x{x

-0

 Ax

*

x xx

* Ax

 {x

y xAx

y xAx






*y xAx
* xAx
* xAx
* xAx

8
8 x{x
 x{x

98

( xAx

 x{x

 x{x

 xAx

(

 x{x

 xAx

*vx1 xx

v v xx

*v 1 xx


  x{x

vx xx

*

 !7  ! 


%


 ,
5
 n &oA[oAp@o
6
 ! oA  oAp@o& o t_}B

o !  o% _ !_   o{  _
o
- 5 

 ! o%_! o{ _
 o
_ ^t_}
 0 o
 coAp@^  
o





- 5  _  
6
o c oAp@   _    o
- 5 
6
 c$ o
_ ^t_}1  {
 oZ_! oA _& oA[oAp@^o
6 !
zhyc  p

 ! o%_! o{ _ o) 

 coAp@^   0 o{[oAp@o
zhc  p
'
 c o) 
6
  !  o% _! oA P
 o%_
 
zh c
8  p
6
  c oA p@^   0 o%_
 
6
 ! o%_! oA _
 o{
} _} 
 oA } _} 
6 c#$
!
 o%_! oA P
 o
6
:   
 o%_! oA; _bo,
' !

5 t_t _p@1
6
 coAp@^   0 o :   
6
 b o _p\ 5 t_t
6
 ! o _p@ o, 
'
 - So
t%
 o{! o%oA} 
 o  } t    5o{p@o

descripcin
 o%_ o{ _ oA
oAp@o o% n
 n t }Bt n  o
oAo
t_p\

<

Zonas Horarias Australianas

 }Bo,  z
 }
 
    ^ _t_t%p >p@ob __p/t_ p pm p\p t_ p? t_  os^_oAp=^o_! o, os /S@t%p@ 1}Bo)t_
+



s
o
_

/
p





p

A    oAp m   pG}   t_}  p46 o? o)  St%} t_/|}  8  p 6 t_po)5}  B@  
  % )  p/p@^   p/.t%  p CST m EST
[t1_ 6
 n } t_/BoA}  n t__  6 >"C  - C>|oAp@>} ^t o)  } oAp CST m
p@o%t%^o n oA^ )fp\t_t_o)    p/}   o)t  p p\ _t_   pu
EST
1%0{D F0
E FG=H B* /b 1
p p| 6
}  os_
t_{p o p@^
oA t p=o 0

Zona Horaria

Desplazamiento desde
UTC
vx {x



vx xAx

Interpretacin de las entradas de Fecha/tiempo

 I

+

pct n p o|oA} ^t_oA n


} S oAp

    p+oA}  t_}  
 p

Descripcin

 

o   o

 

t_o ^

t_oA n p@
p\  _t_
t_o{ n p@
o p@ _t_

)

   e
 }  q:   o

pcp@

;

)

%

^t p

J: K,b/:2/
LMON'7
v ^t_o)   _%} 
 o) 7 oYo,  Zo)8 SoAp@ p m } _p@t_}B   }BZ   o_pS } p
}   } o, ^t_oA n 6
  s  t_   @So 3
 t6_bSoAp@ c}  
 t_o) o&  p n   p?1 B o{p\  o{p/ b} o,
o%^t_oA n 
G p@t)_5SoAp@ }  
 ^t_o) o S
 t_/B1   =1 B   1 B o{p\ o{p

 c}B  o)
 oZ*o{}Bs1o n o) oZo) o o{/  S o& oA [So{pun  
} t_>SoAp@ >oApZp  _So)
 o+ S t_} o)   }Bo{pZoApY} _1t_o . oo{p\^p 6n
}Bt  oAps S}  n  p@o,}Bt__  eo{}B}  } ^o)  9 8xAvP1 n o1CvAxv v{
 o 3  oA[v{  t_oA nI 1 n To1Tvyv{v 8 n bvy v vA8 T
n bvb"
 t)_8SoAp@ |}  St_o, 8}  7

 7
 Sp71  e
 So,  p
*1 * o,   } oApsoAp 

 c   s  t_  0
 }  n  o{p n o{}BtP 
* t[_bSoAp@ co{p/  b}  o,
 o%^oAu 6 }  n s}   nI p@t__oAp}B o) p
 } o |
 /@ p@1o) Zt% t_Yo,| _Y^_ o}   p@_^ o/_ZSo{p\ n } 
}Bo)coAp n oA} t_1 n @o1
 m 1 n @o1
 ^>1 n @o

Thursday
January
  t_p@o 56 $1 n To1 onTtoday

 ob  p  6 o{p oA[}  n | m _cSp@} & o%t_ n s  p}  n  pu 6 oq^o{S


 

 ow 6 SoAp  P n today1m  t_}Bt   _So, o8  St%   p p@oA


n n  
1    p n

now
G t0   o)
 } o) } oc  /@ p@1o) >t% t_p@t_St__ o),
 _^_. oc}  
p\_^ n bo)
 }   _cSoAp@ bb_c   b 6 t_
} t/   o)
 } o) _  s"0
 o k6
 %SoAp@ coAp  
@ So Q 0
 }  n   S t_} 
R

 + 

%      %   
)  
% 

 )  1 




S 8Q
%

,
   7 
 ( 7   % 
)
  

G t_fSo{p\ w^t_o)
 o8'_t_ p   0p@t%  o{}  t_}  6 o,  }Bo{pp@o
t%o n oA^b}   
 _& oA6   m
} to{pSp/_  o&  p
 _t_  p o)  } oAp/p\o%t%o n oA^s}   oA[ 
~t[oAp@%o)w    *o{}B%  n o{ {m p@t[oA[}  n   _7  sp\t%  _oAT    _
   } oAp%p@ot%^o n oA>}   
m p@t)oA  6 oApZSp n oA1o $ t_1)5v o)
 _

o1 to{}  n  SoAp7  5p@t%  _o{%   
 P um p@toA   oApZSp n oA1o 
t_161osv* o)  } oApp@ost%o kn oA^s}   0SoAp
T toA}B n  
 PQ  |p@t%  _o{%    _ m p@toA   oApsSp n oA1o U
t_161osv o)
   } oApp@ost% o kn oA^s}    _
 [t 6
 
 p\ost% ^o n oA^s}   f
t/p@ohSoAp oA} t_} 
 _SoA  m  oAp n _<   /_S} o)   t% o  
> 
19   m  n } o  o)w oA 6} _o)  t  oA r
 S t_} So) osv > o{p/oA6 
t_  6un o  
}Bo 3 T
[t  p@oZbo{p n oA} t_}  6
p@t[oA} 
t_o,
 o p4 _t_ p4 oZ  t_  o,  } oAp
@q^p@^  p8oA=  ,yU
  _Cm t_  p1t=oA=nI}  n     o{p| Sp n oAo   1o>( x o)   } oAp
p\S  p*xxx{p\t 6
 p@S  p/vx{x


y


[t1

Sp ocy _t_ p 6m p@t


p@o>>_oA
}
}  n
n p@o t 6 t 
*o{}  o  } o{pc t ^o n oA 8}
7oA} |} } ^o   o1 G
T
_t_ p@o5t o kn o{5}
6 SoAp 1m _ St_o  p
m
19990118
1
o%}


_

_
t

=
p
\
p
Z
o
t



o
A
o
^


P

o{[ 6 o{p n oC} ^t So o

m
n


o5t n m 

Sugerencia: Los aos Gregorianos 1-99AD pueden ser introducidos usando 4 dgitos
precedidos por ceros (p. e. 0099 es 99AD). Los tres dgitos tambin son aceptados
como un ao bajo muchas circunstancias, sin embargo dependiendo de la posicin
la cadena numrica puede ser interpreta en lugar de un da.

Historia
Nota: Contrido por Jos Soares 1.

/
  % )   
  ,
p@p} _t_o 1v{yxv,8x m

)

V

Q





t_  t__t_  _t_p o{p\
1    /   ) )
n o t    _t_  wn p@t_/
 @    @   U U O B "   (  p\  oAp8oA/__S  r _
W
  1
  *  
,  
oAvo8"o  owy (v 
)  
 * "  (
X _ _t_  Y oAp!t_*o o)o5o X 1o{}B _t_  Y A} _o,  t  _t_   o5t%  } t_
0
o{p\ o)Sy  C1o>p\   }  B@ So)^op@5oAv ,*    o n _p@oAp
 n  _ t_Zp }B <
oA n o{  8
1t_ p@o} _o)  t  oA 6 t_  2o)8oAu}B_o)  t  _t_   oA  
_
t

}


A
o
s
p

_
t
<

So)^o5} 8v[yZPp7[ 81 *P_pCp\ 5"eo o"


n
_co,,
 n)3n  t_S  So) obv *
  _ pu@o  } S_    o{} _o,  t  6 t_w n
oA 
t *  oA 6
 S oA} _o,  t  }  ob}  h_pZt%p@ } }Bt  oAp7oA  }Bt__t  o
o\
  
 _ _t_
obt o  8n 6 o t_ }B{p
p@o n


A
o
S

o

^

8
o
}


8
o
@
p

o

A
o

>
o
[


}


_
t


o
n

^ oAo
[} {_t_1o *vy Ay*vA @\ pZp@
ps^t_o o h1o>p@ o{

t_}
So }  P oAp ohv oh o ohy vA
_t_
T

x oAp@t_  y0  p oAGSo t Pw


p@bo{6So t _b> o{ b o y vA 



"
) 
  
  , 8 ( ?

[ 8 * *  
   )




 
  
)  

  
 8 (
  )  ( 
 

   
,
 s  t t_p@t__o
ybo{p/ 0 t_p\t_o{p\

[tTf
 o{S  6 } s n 6 t t_p@t_1_o n   vxx7   oAp= 0  t_p@t_oAp@ 
[tTf
 o{S 6 } s  t t_p@t_1_o n  yxx%oAp/ 0  t_p\t_o{p\  o{p n ApFo%   
v ( x{x v x{x vxx *vxx
**xx& p f pt_p@t_oAp@ p o v 8xx *xxx
osoAp@oZ   6
*yx{x5p  e
   p% t_p@t_oAp@  p 6 oA }    m t  o,<oA t_ okq  }  _o,  t   _t_n    p@   pb  m p
t t_p\t__o{p n 6 ycp  0
  p/t_p@t_oAp@  p
5_ n n I
 ooA o   oA)v *P o{} oB^h1o5p@o=o{_|1t_^ vxQPps55} ^ o+o
v ,* p\u1oYoAuv
 oY5} ^ o? oAop@oAt t% So,t_^So)^oo{p n ApAoAy&o5} ^ o
p@  p@o  p@o k <o, _t_   
 t^ ^1 p A p p Pp\o{p 6_t_} pb
p@t_1t_o   n  }  
 oAp n Ap )n o   p n 6 _p@ oAp  m oAp@^ n  o{pp@o  oAp@ t_p@t_ o  n G} St m   p
p
  } St_  S
 p\^|1oP  oA n oAfoAp@^op@t_1  A oA 6 S
n Pp\o{p 6
      pb t_o{  
o  p@o  


{
o


@
p


p
 t_p.1 t% } _t%   1o0  fo{p =o)
 

v ( ,
* p@1oA0* o nIn ^ t_oAS obv ( ,* obm p@oAtT f
oA1vyo tPoAS osv ( 
* Bp@  oApY  1o
t_o,
 o cal  oZ  pp@t_p\^oASp - * n)3  } t_o)   nI   p@t_1t_o, n o
woA6} _o  t oA  t_ 6 oA6 n t_} [o{p/ n ut_S ASo os bh wyxx _p
8  y { _u
p p\{} o/ n ut_S So ^o/xx/ p n o{ 6n t_} Ap@o oAp n _ } o
_s}
o {p n {o } [} _o  t o{ 6 t_

b n t_<}Bt_ 0  [yxxcoAp@c bSo t_ ^ob b pt_p@t_oAp@ pY} syxxb p


p\
_p/p@t_t_o o{p oA_p

% cal 9 1752
Septiembre 1752
S M Tu W Th F S
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Nota: SQL92 dista que Dentro de la definicin del fecha/tiempo literal , los valores
fecha/tiempo estn restringidos por las reglas naturales para las fechas y los tiempos
acorde con el calendario Gregoriano . Las Fechas entre 1752-09-03 y 1752-09-13,
aunque se han eliminado en algunos pases por el "fiat" Papal, conforme a las reglas
naturales y son por lo tanto fechas validas.


)
 ) ,  )B
% )
  

, 

 %    __   pYo) t  p_ oAp?oA1S    S}B  p


    okkq:oA %n_o o)   &p nt_ }Bt%oY} 1t n o%t  oAp7oA )} o _o)    t   /t%  t

m
n 6G
 )=* 8 ,( ,  ) ^ o?t%o _YoApo n @t__t__ t_}  o bt%_YpoAp@Zp@^o{p} _o,  t 



5n


oAp@ 
_t o o ^oApY} _o  t p hp@t

}
o

o

{
o
)

\
p
_
t
@
p
^

A
o
S

A
o

_
t

6
n
6


o

o
A
o




@
p
Z
o


@
p
^

A
o

@
p
_
t



v
y >
n

t o boA} _o  t o
  Yo
oA  t_ n bp } t t_@[} _o  t

Notas



 ,]

 ,  

vq p\o cp@o  } ^ }

Bibliografa

/'o

[o{_oA} } t_



;^

o{o o } t_p m _o{}B^ pp o% 5 m

p@ Ao p

Libros de referencia sobre SQL


Documentacin especfica sobre PostgreSQL
Procedimientos y Articulos
Notas

` ba"a;cOd_  = ecu e 6  f)g%g f)Fa  Bfa` )f f,4a`` f cha;` #d% "fA) "f{_ ` c
* ^`/ba"a;cO*1#`/  "f /f)g%f,i[ , j)jj a`  @c  f)c a;` ` f c a[=V  ( ` 


^ /





S-ar putea să vă placă și