Está en la página 1de 28

Revisin: 8

Apuntes bsicos de SQL


Unai Estbanez
unai@unainet.net
Pgina de !8
Revisin: 8
"ndice de contenido
Licencia:..................................................................................................................................#
$nt%oduccin............................................................................................................................8
Estnda%es de SQL...................................................................................................................8
Las tab&as.................................................................................................................................8
Sentencias SQL........................................................................................................................'
(en en cuenta )ue..............................................................................................................'
*otacin pa%a &as sentencias SQL........................................................................................'
++L , +-L.............................................................................................................................
(ipos de datos.......................................................................................................................
-anos a &a ob%a....................................................................................................................
*otas espec/0icas de SQLite...............................................................................................
1%eando una tab&a 21REA(E3.............................................................................................!
$nse%tando datos en una tab&a 2$*SER(3.............................................................................!
Actua&izando datos de un %egist%o 2UP+A(E3.....................................................................!
4o%%ando %egist%os2+ELE(E3...............................................................................................!
Recupe%ando datos de una tab&a 2SELE1(3.........................................................................!
4o%%ando una tab&a 2+R5P3...............................................................................................#
1onsu&tas con p%edicado...................................................................................................#
1&usu&as...........................................................................................................................#
5pe%ado%es pa%a &a c&usu&a 67ERE..............................................................................8
1o9odines pa%a e& L$:E............................................................................................;
A&ias..................................................................................................................................;
5pe%ando con va%ias tab&as...................................................................................................<
1onceptos de c&aves 2P%i9a%, =e,3.....................................................................................<
Una tab&a con va%ias p%i9a%, =e,s.................................................................................8
1onceptos de c&aves 2>o%eign =e,3.....................................................................................'
?oins..................................................................................................................................'
Uniones 2U*$5* , U*$5* ALL3..............................................................................................!.
>unciones..............................................................................................................................!
E@e9p&os de 0unciones ag%egadas:.....................................................................................!
E@e9p&os de 0unciones esca&a%es:.......................................................................................!
AR5UP 4B.............................................................................................................................!!
7AC$*A.................................................................................................................................!!
"ndices...................................................................................................................................!#
1onst%aints D Rest%icciones.....................................................................................................!#
(%igge%s.................................................................................................................................!;
1onsu&tas a&go 9s co9p&e@as...............................................................................................!<
Anidando consu&tas...........................................................................................................!<
Li9ita% e& nE9e%o de e&e9entos en &a consu&ta..................................................................!8
Pgina ! de !8
Revisin: 8
Licencia:
Reconoci9iento #.. EspaFa
LA 54RA 5 LA PRES(A1$G* 2SEAH* SE +E>$*E* -IS A+ELA*(E3 SE PR5P5R1$5*A 4A?5
L5S (JR-$*5S +E ES(A L$1E*1$A PH4L$1A +E 1REA($CE 15--5*S 211PL 5 L$1E*1$A3. LA
54RA 5 LA PRES(A1$G* SE E*1UE*(RA PR5(EA$+A P5R LA LEB ESPAK5LA +E PR5P$E+A+
$*(ELE1(UAL BL5 1UALESQU$ERA 5(RAS *5R-AS QUE RESUL(E* +E APL$1A1$G*. QUE+A
PR57$4$+5 1UALQU$ER US5 +E LA 54RA 5 PRES(A1$G* +$>ERE*(E A L5 AU(5R$MA+5
4A?5 ES(A L$1E*1$A 5 L5 +$SPUES(5 E* LA LEB +E PR5P$E+A+ $*(ELE1(UAL.
-E+$A*(E EL E?ER1$1$5 +E 1UALQU$ER +ERE175 S54RE LA 54RA 5 LA PRES(A1$G*N
US(E+ A1EP(A B 15*S$E*(E LAS L$-$(A1$5*ES B 54L$AA1$5*ES +E ES(A L$1E*1$AN S$*
PER?U$1$5 +E LA *E1ES$+A+ +E 15*SE*($-$E*(5 EOPRES5 E* 1AS5 +E C$5LA1$G*
PREC$A +E L5S (JR-$*5S +E LA -$S-A. EL L$1E*1$A+5R LE 15*1E+E L5S +ERE175S
15*(E*$+5S E* ES(A L$1E*1$AN S$E-PRE QUE US(E+ A1EP(E L5S PRESE*(ES (JR-$*5S B
15*+$1$5*ES.
. +e0iniciones
a. La ob%a es &a c%eacin &ite%a%iaN a%t/stica o cient/0ica o0%ecida ba@o &os t%9inos de esta
&icencia.
b. En esta &icencia se conside%a una p%estacin cua&)uie% inte%p%etacinN e@ecucinN
0onog%a9aN g%abacin audiovisua&N e9isin o t%ans9isinN 9e%a 0otog%a0/a u ot%os
ob@etos p%otegidos po% &a &egis&acin de p%opiedad inte&ectua& vigente ap&icab&e.
c. La ap&icacin de esta &icencia a una co&eccin 2de0inida 9s ade&ante3 a0ecta%
Enica9ente a su est%uctu%a en cuanto 0o%9a de ePp%esin de &a se&eccin o disposicin
de sus contenidosN no siendo ePtensiva a stos. En este caso &a co&eccin tend% &a
conside%acin de ob%a a e0ectos de esta &icencia.
d. E& titu&a% o%igina%io es:
i. En e& caso de una ob%a &ite%a%iaN a%t/stica o cient/0icaN &a pe%sona natu%a& o g%upo
de pe%sonas )ue c%e &a ob%a.
ii. En e& caso de una ob%a co&ectivaN &a pe%sona )ue &a edite , divu&gue ba@o su
no9b%eN sa&vo pacto cont%a%io.
iii. En e& caso de una inte%p%etacin o e@ecucinN e& acto%N cantanteN 9EsicoN o
cua&)uie% ot%a pe%sona )ue %ep%esenteN canteN &eaN %eciteN inte%p%ete o e@ecute en
cua&)uie% 0o%9a una ob%a.
iv. En e& caso de un 0onog%a9aN e& p%oducto% 0onog%0icoN es deci%N &a pe%sona
natu%a& o @u%/dica ba@o cu,a iniciativa , %esponsabi&idad se %ea&iza po% p%i9e%a vez
una 0i@acin ePc&usiva9ente sono%a de &a e@ecucin de una ob%a o de ot%os
sonidos.
v. En e& caso de una g%abacin audiovisua&N e& p%oducto% de &a g%abacinN es deci%N
Pgina # de !8
Revisin: 8
&a pe%sona natu%a& o @u%/dica )ue tenga &a iniciativa , asu9a &a %esponsabi&idad
de &as 0i@aciones de un p&ano o secuencia de i9genesN con o sin sonido.
vi. En e& caso de una e9isin o una t%ans9isinN &a entidad de %adiodi0usin.
vii.En e& caso de una 9e%a 0otog%a0/aN a)ue&&a pe%sona )ue &a Qa,a %ea&izado.
viii.En e& caso de ot%os ob@etos p%otegidos po% &a &egis&acin de p%opiedad
inte&ectua& vigenteN &a pe%sona )ue sta seFa&e.
e. Se conside%a%n ob%as de%ivadas a)ue&&as ob%as c%eadas a pa%ti% de &a &icenciadaN co9o
po% e@e9p&o: &as t%aducciones , adaptacionesR &as %evisionesN actua&izaciones ,
anotacionesR &os co9pendiosN %esE9enes , ePt%actosR &os a%%eg&os 9usica&es ,N en
gene%a&N cua&es)uie%a t%ans0o%9aciones de una ob%a &ite%a%iaN a%t/stica o cient/0ica. Pa%a
evita% &a dudaN si &a ob%a consiste en una co9posicin 9usica& o g%abacin de sonidosN
&a sinc%onizacin te9po%a& de &a ob%a con una i9agen en 9ovi9iento 2s,ncQing3 se%
conside%ada co9o una ob%a de%ivada a e0ectos de esta &icencia.
0. (end%n &a conside%acin de co&ecciones &a %ecopi&acin de ob%as a@enasN de datos o de
ot%os e&e9entos independientes co9o &as anto&og/as , &as bases de datos )ue po% &a
se&eccin o disposicin de sus contenidos constitu,an c%eaciones inte&ectua&es. La 9e%a
inco%po%acin de una ob%a en una co&eccin no da% &uga% a una de%ivada a e0ectos de
esta &icencia.
g. E& &icenciado% es &a pe%sona o &a entidad )ue o0%ece &a ob%a o p%estacin ba@o &os
t%9inos de esta &icencia , &e concede &os de%ecQos de ePp&otacin de &a 9is9a
con0o%9e a &o dispuesto en e&&a.
Q. Usted es &a pe%sona o &a entidad )ue e@e%cita &os de%ecQos concedidos 9ediante esta
&icencia , )ue no Qa vio&ado p%evia9ente &os t%9inos de &a 9is9a con %especto a &a
ob%a o &a p%estacinN o )ue Qa %ecibido e& pe%9iso ePp%eso de& &icenciado% de e@e%cita%
&os de%ecQos concedidos 9ediante esta &icencia a pesa% de una vio&acin ante%io%.
i. La t%ans0o%9acin de una ob%a co9p%ende su t%aduccinN adaptacin , cua&)uie% ot%a
9odi0icacin en su 0o%9a de &a )ue se de%ive una ob%a di0e%ente. La c%eacin %esu&tante
de &a t%ans0o%9acin de una ob%a tend% &a conside%acin de ob%a de%ivada.
@. Se entiende po% %ep%oduccin &a 0i@acin di%ecta o indi%ectaN p%ovisiona& o pe%9anenteN
po% cua&)uie% 9edio , en cua&)uie% 0o%9aN de toda &a ob%a o &a p%estacin o de pa%te de
e&&aN )ue pe%9ita su co9unicacin o &a obtencin de copias.
=. Se entiende po% dist%ibucin &a puesta a disposicin de& pEb&ico de& o%igina& o de &as
copias de &a ob%a o &a p%estacinN en un sopo%te tangib&eN 9ediante su ventaN a&)ui&e%N
p%sta9o o de cua&)uie% ot%a 0o%9a.
&. Se entiende po% co9unicacin pEb&ica todo acto po% e& cua& una p&u%a&idad de
pe%sonasN )ue no pe%tenezcan a& 9bito do9stico de )uien &a &&eva a caboN pueda
tene% acceso a &a ob%a o &a p%estacin sin p%evia dist%ibucin de e@e9p&a%es a cada una
de e&&as. Se conside%a co9unicacin pEb&ica &a puesta a disposicin de& pEb&ico de
ob%as o p%estaciones po% p%ocedi9ientos a&9b%icos o ina&9b%icosN de ta& 0o%9a )ue
cua&)uie% pe%sona pueda accede% a e&&as desde e& &uga% , en e& 9o9ento )ue e&i@a.
9.La ePp&otacin de &a ob%a o &a p%estacin co9p%ende &a %ep%oduccinN &a dist%ibucinN &a
co9unicacin pEb&ica ,N en su casoN &a t%ans0o%9acin.
!. L/9ites de &os de%ecQos. *ada en esta &icencia p%etende %educi% o %est%ingi% cua&es)uie%a
&/9ites &ega&es de &os de%ecQos ePc&usivos de& titu&a% de &os de%ecQos de p%opiedad inte&ectua&
de acue%do con &a Le, de p%opiedad inte&ectua& o cua&es)uie%a ot%as &e,es ap&icab&esN ,a sean
de%ivados de usos &eg/ti9osN ta&es co9o &a copia p%ivada o &a citaN u ot%as &i9itaciones co9o &a
%esu&tante de &a p%i9e%a venta de e@e9p&a%es 2agota9iento3.
Pgina 8 de !8
Revisin: 8
#. 1oncesin de &icencia. 1on0o%9e a &os t%9inos , a &as condiciones de esta &icenciaN e&
&icenciado% concedeN po% e& p&azo de p%oteccin de &os de%ecQos de p%opiedad inte&ectua& , a
t/tu&o g%atuitoN una &icencia de 9bito 9undia& no ePc&usiva )ue inc&u,e &os de%ecQos
siguientes:
a. +e%ecQo de %ep%oduccinN dist%ibucin , co9unicacin pEb&ica de &a ob%a o &a
p%estacin.
b. +e%ecQo a inco%po%a% &a ob%a o &a p%estacin en una o 9s co&ecciones.
c. +e%ecQo de %ep%oduccinN dist%ibucin , co9unicacin pEb&ica de &a ob%a o &a
p%estacin &/cita9ente inco%po%ada en una co&eccin.
d. +e%ecQo de t%ans0o%9acin de &a ob%a pa%a c%ea% una ob%a de%ivada sie9p%e , cuando
se inc&u,a en sta una indicacin de &a t%ans0o%9acin o 9odi0icacin e0ectuada.
e. +e%ecQo de %ep%oduccinN dist%ibucin , co9unicacin pEb&ica de ob%as de%ivadas
c%eadas a pa%ti% de &a ob%a &icenciada.
0. +e%ecQo a ePt%ae% , %euti&iza% &a ob%a o &a p%estacin de una base de datos.
g. Pa%a evita% cua&)uie% dudaN e& titu&a% o%igina%io:
i. 1onse%va e& de%ecQo a pe%cibi% &as %e9une%aciones o co9pensaciones p%evistas
po% actos de ePp&otacin de &a ob%a o p%estacinN ca&i0icadas po% &a &e, co9o
i%%enunciab&es e ina&ienab&es , su@etas a gestin co&ectiva ob&igato%ia.
ii. Renuncia a& de%ecQo ePc&usivo a pe%cibi%N tanto individua&9ente co9o 9ediante
una entidad de gestin co&ectiva de de%ecQosN cua&)uie% %e9une%acin de%ivada
de actos de ePp&otacin de &a ob%a o p%estacin )ue usted %ea&ice.
Estos de%ecQos se pueden e@e%cita% en todos &os 9edios , 0o%9atosN tangib&es o intangib&esN
conocidos en e& 9o9ento de &a concesin de esta &icencia. Los de%ecQos 9encionados
inc&u,en e& de%ecQo a e0ectua% &as 9odi0icaciones )ue sean p%ecisas tcnica9ente pa%a e&
e@e%cicio de &os de%ecQos en ot%os 9edios , 0o%9atos. (odos &os de%ecQos no concedidos
ePp%esa9ente po% e& &icenciado% )uedan %ese%vadosN inc&u,endoN a t/tu&o enunciativo pe%o no
&i9itativoN &os de%ecQos 9o%a&es i%%enunciab&es %econocidos po% &a &e, ap&icab&e. En &a 9edida
en )ue e& &icenciado% ostente de%ecQos ePc&usivos p%evistos po% &a &e, naciona& vigente )ue
i9p&e9enta &a di%ectiva eu%opea en 9ate%ia de de%ecQo sui gene%is sob%e bases de datosN
%enuncia ePp%esa9ente a dicQos de%ecQos ePc&usivos.
8. Rest%icciones. La concesin de de%ecQos )ue supone esta &icencia se encuent%a su@eta ,
&i9itada a &as %est%icciones siguientes:
a. Usted puede %ep%oduci%N dist%ibui% o co9unica% pEb&ica9ente &a ob%a o p%estacin
so&a9ente ba@o &os t%9inos de esta &icencia , debe inc&ui% una copia de &a 9is9aN o su
$denti0icado% Uni0o%9e de Recu%so 2UR$3. Usted no puede o0%ece% o i9pone% ninguna
condicin sob%e &a ob%a o p%estacin )ue a&te%e o %est%in@a &os t%9inos de esta &icencia
o e& e@e%cicio de sus de%ecQos po% pa%te de &os concesiona%ios de &a 9is9a. Usted no
puede sub&icencia% &a ob%a o p%estacin. Usted debe 9antene% intactos todos &os avisos
)ue se %e0ie%an a esta &icencia , a &a ausencia de ga%ant/as. Usted no puede %ep%oduci%N
dist%ibui% o co9unica% pEb&ica9ente &a ob%a o p%estacin con 9edidas tecno&gicas )ue
cont%o&en e& acceso o e& uso de una 9ane%a cont%a%ia a &os t%9inos de esta &icencia.
Esta seccin 8.a ta9bin a0ecta a &a ob%a o p%estacin inco%po%ada en una co&eccinN
pe%o e&&o no i9p&ica )ue sta en su con@unto )uede auto9tica9ente o deba )ueda%
su@eta a &os t%9inos de &a 9is9a. En e& caso )ue &e sea %e)ue%idoN p%evia co9unicacin
de& &icenciado%N si usted inco%po%a &a ob%a en una co&eccin ,Lo c%ea una ob%a de%ivadaN
debe% )uita% cua&)uie% c%dito %e)ue%ido en e& apa%tado 8.bN en &a 9edida de &o
Pgina ; de !8
Revisin: 8
posib&e.
b. Si usted %ep%oduceN dist%ibu,e o co9unica pEb&ica9ente &a ob%a o &a p%estacinN una
co&eccin )ue &a inco%po%e o cua&)uie% ob%a de%ivadaN debe 9antene% intactos todos &os
avisos sob%e &a p%opiedad inte&ectua& e indica%N de 9ane%a %azonab&e con0o%9e a& 9edio
o a &os 9edios )ue usted est uti&izando:
i. E& no9b%e de& auto% o%igina&N o e& seudni9o si es e& casoN as/ co9o e& de& titu&a%
o%igina%ioN si &e es 0aci&itado.
ii. E& no9b%e de a)ue&&as pa%tes 2po% e@e9p&o: institucinN pub&icacinN %evista3 )ue
e& titu&a% o%igina%io ,Lo e& &icenciado% designen pa%a se% %econocidos en e& aviso
&ega&N &as condiciones de usoN o de cua&)uie% ot%a 9ane%a %azonab&e.
iii. E& t/tu&o de &a ob%a o &a p%estacin si &e es 0aci&itado.
iv. E& UR$N si ePisteN )ue e& &icenciado% especi0i)ue pa%a se% vincu&ado a &a ob%a o &a
p%estacinN a 9enos )ue ta& UR$ no se %e0ie%a a& aviso &ega& o a &a in0o%9acin
sob%e &a &icencia de &a ob%a o &a p%estacin.
v. En e& caso de una ob%a de%ivadaN un aviso )ue identi0i)ue &a t%ans0o%9acin de
&a ob%a en &a ob%a de%ivada 2p. e@.N St%aduccin caste&&ana de &a ob%a de Auto%
5%igina&NS o Sguin basado en ob%a o%igina& de Auto% 5%igina&S3.
Este %econoci9iento debe Qace%se de 9ane%a %azonab&e. En e& caso de una ob%a
de%ivada o inco%po%acin en una co&eccin estos c%ditos debe%n apa%ece% co9o
9/ni9o en e& 9is9o &uga% donde se Qa&&en &os co%%espondientes a ot%os auto%es o
titu&a%es , de 0o%9a co9pa%ab&e a &os 9is9os. Pa%a evita% &a dudaN &os c%ditos
%e)ue%idos en esta seccin s&o se%n uti&izados a e0ectos de at%ibucin de &a ob%a o &a
p%estacin en &a 9ane%a especi0icada ante%io%9ente. Sin un pe%9iso p%evio po% esc%itoN
usted no puede a0i%9a% ni da% a entende% i9p&/cita9ente ni ePp&/cita9ente ninguna
conePinN pat%ocinio o ap%obacin po% pa%te de& titu&a% o%igina%ioN e& &icenciado% ,Lo &as
pa%tes %econocidas Qacia usted o Qacia e& uso )ue Qace de &a ob%a o &a p%estacin.
c. Pa%a evita% cua&)uie% dudaN debe Qace%se nota% )ue &as %est%icciones ante%io%es 2p%%a0os
8.a , 8.b3 no son de ap&icacin a a)ue&&as pa%tes de &a ob%a o &a p%estacin ob@eto de
esta &icencia )ue Enica9ente puedan se% p%otegidas 9ediante e& de%ecQo sui gene%is
sob%e bases de datos %ecogido po% &a &e, naciona& vigente i9p&e9entando &a di%ectiva
eu%opea de bases de datos
;. EPone%acin de %esponsabi&idad
A -E*5S QUE SE A1UER+E -U(UA-E*(E E*(RE LAS PAR(ESN EL L$1E*1$A+5R 5>RE1E LA
54RA 5 LA PRES(A1$G* (AL 1UAL 25* A* SASD$SS 4AS$S3 B *5 15*>$ERE *$*AU*A
AARA*("A +E 1UALQU$ER ($P5 RESPE1(5 +E LA 54RA 5 LA PRES(A1$G* 5 +E LA
PRESE*1$A 5 AUSE*1$A +E ERR5RES QUE PUE+A* 5 *5 SER +ES1U4$ER(5S. ALAU*AS
?UR$S+$11$5*ES *5 PER-$(E* LA EO1LUS$G* +E (ALES AARA*("ASN P5R L5 QUE (AL
EO1LUS$G* PUE+E *5 SER +E APL$1A1$G* A US(E+.
T. Li9itacin de %esponsabi&idad. SALC5 QUE L5 +$SP5*AA EOPRESA E $-PERA($CA-E*(E
LA LEB APL$1A4LEN E* *$*AH* 1AS5 EL L$1E*1$A+5R SERI RESP5*SA4LE A*(E US(E+
P5R 1UALESQU$ERA +AK5S RESUL(A*(ESN AE*ERALES 5 ESPE1$ALES 2$*1LU$+5 EL +AK5
E-ERAE*(E B EL LU1R5 1ESA*(E3N >5R(U$(5S 5 1AUSALESN +$RE1(5S 5 $*+$RE1(5SN
PR5+U1$+5S E* 15*EO$G* 15* ES(A L$1E*1$A 5 EL US5 +E LA 54RA 5 LA PRES(A1$G*N
$*1LUS5 S$ EL L$1E*1$A+5R 7U4$ERA S$+5 $*>5R-A+5 +E LA P5S$4$L$+A+ +E (ALES
+AK5S.
<. >ina&izacin de &a &icencia
Pgina T de !8
Revisin: 8
a. Esta &icencia , &a concesin de &os de%ecQos )ue contiene te%9ina%n auto9tica9ente
en caso de cua&)uie% incu9p&i9iento de &os t%9inos de &a 9is9a. Las pe%sonas o
entidades )ue Qa,an %ecibido de usted ob%as de%ivadas o co&ecciones ba@o esta &icenciaN
sin e9ba%goN no ve%n sus &icencias 0ina&izadasN sie9p%e )ue ta&es pe%sonas o entidades
se 9antengan en e& cu9p&i9iento /nteg%o de esta &icencia. Las secciones N !N ;N TN < ,
8 pe%9anece%n vigentes pese a cua&)uie% 0ina&izacin de esta &icencia.
b. 1on0o%9e a &as condiciones , t%9inos ante%io%esN &a concesin de de%ecQos de esta
&icencia es vigente po% todo e& p&azo de p%oteccin de &os de%ecQos de p%opiedad
inte&ectua& segEn &a &e, ap&icab&e. A pesa% de &o ante%io%N e& &icenciado% se %ese%va e&
de%ecQo a divu&ga% o pub&ica% &a ob%a o &a p%estacin en condiciones distintas a &as
p%esentesN o de %eti%a% &a ob%a o &a p%estacin en cua&)uie% 9o9ento. *o obstanteN e&&o
no supond% da% po% conc&uida esta &icencia 2o cua&)uie% ot%a &icencia )ue Qa,a sido
concedidaN o sea necesa%io se% concedidaN ba@o &os t%9inos de esta &icencia3N )ue
continua% vigente , con e0ectos co9p&etos a no se% )ue Qa,a 0ina&izado con0o%9e a &o
estab&ecido ante%io%9enteN sin pe%@uicio de& de%ecQo 9o%a& de a%%epenti9iento en &os
t%9inos %econocidos po% &a &e, de p%opiedad inte&ectua& ap&icab&e.
8. -isce&nea
a. 1ada vez )ue usted %ea&ice cua&)uie% tipo de ePp&otacin de &a ob%a o &a p%estacinN o
de una co&eccin )ue &a inco%po%eN e& &icenciado% o0%ece a &os te%ce%os , sucesivos
&icenciata%ios &a concesin de de%ecQos sob%e &a ob%a o &a p%estacin en &as 9is9as
condiciones , t%9inos )ue &a &icencia concedida a usted.
b. 1ada vez )ue usted %ea&ice cua&)uie% tipo de ePp&otacin de una ob%a de%ivadaN e&
&icenciado% o0%ece a &os te%ce%os , sucesivos &icenciata%ios &a concesin de de%ecQos
sob%e &a ob%a ob@eto de esta &icencia en &as 9is9as condiciones , t%9inos )ue &a
&icencia concedida a usted.
c. Si a&guna disposicin de esta &icencia %esu&ta inv&ida o inap&icab&e segEn &a Le, vigenteN
e&&o no a0ecta% &a va&idez o ap&icabi&idad de& %esto de &os t%9inos de esta &icencia ,N sin
ninguna accin adiciona& po% cua&)uie%a &as pa%tes de este acue%doN ta& disposicin se
entende% %e0o%9ada en &o est%icta9ente necesa%io pa%a Qace% )ue ta& disposicin sea
v&ida , e@ecutiva.
d. *o se entende% )ue ePiste %enuncia %especto de a&gEn t%9ino o disposicin de esta
&icenciaN ni )ue se consiente vio&acin a&guna de &a 9is9aN a 9enos )ue ta& %enuncia o
consenti9iento 0igu%e po% esc%ito , &&eve &a 0i%9a de &a pa%te )ue %enuncie o consienta.
e. Esta &icencia constitu,e e& acue%do p&eno ent%e &as pa%tes con %especto a &a ob%a o &a
p%estacin ob@eto de &a &icencia. *o caben inte%p%etacionesN acue%dos o condiciones con
%especto a &a ob%a o &a p%estacin )ue no se encuent%en ePp%esa9ente especi0icados en
&a p%esente &icencia. E& &icenciado% no esta% ob&igado po% ninguna disposicin
co9p&e9enta%ia )ue pueda apa%ece% en cua&)uie% co9unicacin )ue &e Qaga &&ega%
usted. Esta &icencia no se puede 9odi0ica% sin e& 9utuo acue%do po% esc%ito ent%e e&
&icenciado% , usted.
Pgina < de !8
Revisin: 8
$nt%oduccin
Estos apuntes son una int%oduccin 9u, bsica a& SQLN en ningEn caso sustitu,en a un buen
9anua&. Si9p&e9ente pueden da% una idea %pida de )ue es e& SQL o bien a,uda% a %eco%da%
conceptos )ue no se uti&izaban Qace 9ucQo tie9po.
SQL %esponde a St%uctu%ed Que%, LanguageN es un &engua@e dec&a%ativo pa%a accede% a &as
bases de datos %e&aciona&es 2Qa, ot%os tipos pe%o no va9os a Qab&a% a)u/ de e&&as3. *os
pe%9iti% c%ea% nuevas bases de datosN 9odi0ica% bases de datos ePistentes , consu&ta% , aFadi%
in0o%9acin.
Estnda%es de SQL
SQL es un estnda% A*S$2A9e%ican *ationa& Standa%ds $nstitute3 desde '8T , esto i9p&ica
)ue conociendo este &engua@e pode9os 9anipu&a% cua&)uie% base de datos de cua&)uie%
0ab%icante. Po% supuesto cada 0ab%icante tend% ePtensiones a& &engua@e SQL pe%o si nos
apega9os a& estnda% consegui%e9os Qace% )ue nuest%a consu&tas 0uncionen en cua&)uie%
base de datos. Este estnda% 0u ta9bin adoptado po% &a $S5 en '8<.
Los estnda%es de SQL evo&uciona%on de &a siguiente 0o%9a:
AFo *o9b%e
'8T SQLD8T
'8' SQLD8'
''! SQLD'!
''' SQL:'''
!..# SQL:!..#
!..T SQL:!..T
!..8 SQL:!..8
En &a actua&idad SQL es e& estnda% de 0acto de &a 9a,o%/a de &os 0ab%icantes de bases de
datos %e&aciona&es , aun)ue cada uno tiene sus p%opias ePtensiones &a 9a,o%/a tiene un buen
sopo%te a& 9enos pa%a SQLD'!.
Las tab&as
Los datos en una base de datos %e&aciona&es se gua%da%n sie9p%e en una o 9s tab&as. Una
tab&a consisti% en una o 9s co&u9nas , una o 9s 0i&as.
1on &as co&u9nas especi0ica9os &os datos )ue va9os a gua%da% , con cada 0i&a int%oduci9os
&os datos en s/ 9is9os.
Pgina 8 de !8
Revisin: 8
E@e9p&o:
*o9b%e Ape&&idos Edad
Unai Estbanez #!
?on Ma%agoza #.
A)u/ pode9os ve% una tab&a con t%es co&u9nas , dos 0i&as 2de datos3.
1ada tab&a se identi0ica% con un no9b%eN po% e@e9p&o U1ontactosV.
A cada 0i&a se &e deno9ina co9En9ente URegist%oV.
A cada pa%te de &a 0i&a 2cada co&u9na de una 0i&a3 se &e &&a9a U1a9poV.
Sentencias SQL
Pa%a accede% a &as tab&as , consu&ta% o 9odi0ica% &os datos usa%e9os sentencias SQL.
E@e9p&o:
SELE1( W >R5- 1ontactosR A esto se &e &&a9a sentencia SQL.
Esta sentencia SQL nos pe%9ite obtene% todas &os datos de &a tab&a U1ontactosV. A una
sentencia se &e &&a9a a una se%ie de co9andos @unto con unas c&usu&asN ope%ado%esN
0uncionesN etc.. (odo e&&o 0o%9a una U0%aseV 2sentencia3 , nos pe%9ite %ea&iza% una ope%acin.
(en en cuenta )ue....
SQL no entiende de 9a,Escu&as o 9inEscu&asN &e da igua& &o )ue pongasN es &o 9is9o
USELE1(V )ue Use&ectV. Usa% &as 9a,Escu&as pa%a &as pa&ab%as p%opias de& &engua@e
SQL.
En a&gunas bases de datos es necesa%io pone% un punto , co9a pa%a 0ina&iza% &a
sentenciaN en ot%as no. AEn as/N e& punto , co9a es &a 0o%9a estnda% de sepa%a% dos
sentencias.
*otacin pa%a &as sentencias SQL
1uando &as sentencias SQL )ue desc%iba9os sean 9s co9p&e@as uti&iza%e9os &a siguiente
notacin:
Los co%cQetes UXYU indican )ue &o )ue Qa, dent%o son pa&ab%as c&ave opciona&es.
Estas opciones pueden se% sepa%ados po% una ba%%a UZV )ue indica una 5RN es deci% debe9os
pone% una u ot%a opcin.
Las &&aves U[\Vindican )ue es ob&igato%io pone% &o )ue Qa, dent%o pe%o pode9os e&egi% cua& de
&as opciones )ue%e9os si Qa, ba%%as UZV.
Pgina ' de !8
Revisin: 8
++L , +-L
SQL se puede dividi% en dos &engua@es ++L , +-L. 1ada pa%te tiene unos co9andos pa%a
%ea&iza% ope%aciones de distinta natu%a&eza.
Un co9ando es una Uo%denVN &e indica% a &a base de datos &o )ue espe%a9os )ue Qaga , ta& ,
co9o Qe9os dicQo tene9os dos g%upos:
. ++L 2+ata +e0inition Language3: Estos nos pe%9iti%n c%ea% nuevas bases de datosN
9odi0ica%&as , e&i9ina%&as. Estos co9andos a0ectan a tab&asN ca9pos e /ndices.
1REA(E 1%ea nuevas tab&asN ca9pos e /ndices.
AL(ER -odi0ica &as tab&as
+R5P E&i9ina tab&as e /ndices.
!. +-L 2+ata -anipu&ation Language3: *os pe%9iten
9anipu&a%2consu&ta%No%dena%N0i&t%a%Netc3 &os datos ePistentes en una base de datos.
SELE1( 1onsu&ta 0i&as en &a base de datos
UP+A(E -odi0ica va&o%es de una 0i&a
$*SER( $nse%ta una nueva 0i&a
+ELE(E E&i9ina 0i&as
Pgina . de !8
Revisin: 8
(ipos de datos
En cada co&u9na va9os a 9ete% datosN po% e@e9p&oN un no9b%e o una edad. Esto Qa, )ue
dec/%se&o a &a base de datos cuando c%ea9os cada tab&a

.
1ada base de datos tiene unos tipos de0inidosN en nuest%o casoN %esu9iendo 2consu&ta% &a
docu9entacin pa%a 9s in0o%9acin3 tene9os &os siguientes tipos:
*ULL
$*(EAER pa%a gua%da% nE9e%os ente%os.
REAL pa%a nE9e%os %ea&es.
(EO( pa%a gua%da% tePto
4L54 pa%a gua%da% datos bina%ios
Pa%a 9s in0o%9acin sob%e SQLite ve%sin # se puede consu&ta% &a docu9entacin sob%e tipos
de datos en 2Qttp:LL]]].s)&ite.o%gLdatat,pe#.Qt9&3.
-anos a &a ob%a
Ca9os a @uga% un poco con &os co9andos pa%a entende%&os. Bo Qe %ea&izado &os e@e9p&os en
&a conso&a de SQLite )ue puedes desca%ga%te en 2Qttp:LL]]].s)&ite.o%gL3. En p%incipio no
debie%as tene% pegas pa%a usa% cua&)uie% ot%a base de datosN ,o Qe uti&izado esta po%)ue es &a
)ue esto, usando en 9i p%o,ecto actua&.
*otas espec/0icas de SQLite
En &a conso&a de SQLite si tec&eas .Qe&p obtend%s a,uda sob%e &os co9andos *5 SQL de &a
base de datos )ue nos pe%9iten inte%actua% con esta base de datos conc%eta. >/@ate en )ue
todos estos co9andos van p%ecedidos po% un punto , no te%9inan en punto , co9a.
1o9andos )ue nos %esu&ta%n Eti&es son:
. .tab&es Este nos 9uest%a )ue tab&as tene9os de0inidas en &a base de datos abie%ta en
este 9o9ento.
!. .bac=up ^no9b%e a%cQivo_ *os pe%9ite gua%da% en disco &a base de datos con &a )ue
esta9os t%aba@ando.
#. .%esto%e ^no9b%e a%cQivo_ *os pe%9ite ca%ga% en 9e9o%ia una base de datos
p%evia9ente gua%dada en disco.
8. .du9p ^no9b%e tab&a_ *os 9uest%a &a de0inicin en &engua@e SQL de &a tab&a )ue &e
indica9os.
Esto no es cie%to pa%a todas &as bases de datosN actua&9ente es posib&e no indica% )ue tipo de datos 9ete9os
, &a base de datos po% si 9is9a dete%9ina% )ue tipo es cada dato a 9edida )ue se &os 9ete. AEn as/ es buena
costu9b%e especi0ica%&os , segui% &a de0inicin inicia& )ue Qace9os.
Pgina de !8
Revisin: 8
1%eando una tab&a 21REA(E3
Ca9os a c%ea% una tab&a de e@e9p&o:
1REA(E (A4LE 1ontactos 2*o9b%e (EO(NApe&&idos (EO(NEdad $*(EAER3R
Esta sentencia nos c%ea una tab&a con t%es co&u9nas. *o9b%eNApe&&idos , Edad donde i%e9os
9etiendo datos.
Si aQo%a tec&ea9os .tab&es ve%e9os )ue se Qa c%eado una nueva tab&a &&a9ada 1ontactos.
$nse%tando datos en una tab&a 2$*SER(3
-eta9os unos contactos en &a tab&a:
$*SER( $*(5 1ontactos CALUES 2SUnaiSNSEstebanezSN#!3R
$*SER( $*(5 1ontactos CALUES 2S?onSNSMa%agozaSN#.3R
$*SER( $*(5 1ontactos CALUES 2S?onSNS>e%nandezSN!83R
$*SER( $*(5 1ontactos CALUES 2SUnaiSNS4i&baoSN#!3R
$*SER( $*(5 1ontactos CALUES 2S4asi&ioSNSRa9osSNT.3R
$*SER( $*(5 1ontactos CALUES 2SAnd%esSNSAgui%%eSN#3R
Actua&izando datos de un %egist%o 2UP+A(E3
1a9bia9os a 4asi&io po% A%antza:
UP+A(E 1ontactos SE( *o9b%e`SA%antzaS 67ERE *o9b%e`S4asi&ioSR
4o%%ando %egist%os2+ELE(E3
4o%%a9os a And%es:
+ELE(E >R5- 1ontactos 67ERE *o9b%e`SAnd%esSR
Recupe%ando datos de una tab&a 2SELE1(3
Pa%a %ecupe%a% datos de una tab&a uti&iza%e9os e& co9ando SELE1(:
E& 0o%9ato gene%a& de esta sentencia es:
SELE1( ^co&u9nas sepa%adas po% co9as_ >R5- ^tab&a_R
E@e9p&os:
SELE1( W >R5- 1ontactosR Recupe%a todas &as co&u9nas de &a tab&a
SELE1( *o9b%e >R5- 1ontactosR Recupe%a todos &os no9b%es de &a tab&a
SELE1( *o9b%eNEdad >R5- 1ontactosR Recupe%a todos &os no9b%es , edades de &a tab&a
Pgina ! de !8
Revisin: 8
4o%%ando una tab&a 2+R5P3
Suponga9os )ue tene9os una tab&a &&a9ada USUAR$5S , )ue%e9os e&i9ina%&aN uti&iza%e9os
&a sentencia +R5P , antes co9p%oba%e9os )ue ePista 2$> EO$S(S3:
+R5P (A4LE $> EO$S(S USUAR$5SR
1onsu&tas con p%edicado
Se &&a9a p%edicado a &o )ue va ent%e e& SELE1( , e& p%i9e% no9b%e de co&u9na )ue va9os a
%ecupe%a%. Si%ven pa%a 9odi0ica% e& co9po%ta9iento de &as consu&tas.
E@e9p&o:
SELE1( +$S($*1( *o9b%e >R5- 1ontactosR
*os devo&ve% todos &os no9b%e de &a tab&a contactos pe%o o9iti% &as 0i&as cu,os ca9pos
se&eccionados coincidan tota&9ente.
En este ot%o caso so&o nos o9iti% &as 0i&as en &as )ue coincidan &os dos ca9pos.
SELE1( +$S($*1( *o9b%eNEdad >R5- 1ontactosR
P%edicados co9unes son:
+$S($*1( 59iti% &as 0i&as cu,os ca9pos se&eccionados coincidan tota&9ente
ALL +evue&ve todos &os ca9pos de &a tab&a
(5P +evue&ve un dete%9inado nE9e%o de %egist%os de &a tab&a. En SQLite se sopo%ta
co9o L$-$(.
SELE1( W >R5- 1ontactos L$-$( !R
+$S($*1(R56 59ite &as 0i&as dup&icadas basndose en &a tota&idad de& %egist%o , no
so&o en &os ca9pos se&eccionados. Esto no &o sopo%ta SQLite.
1&usu&as
Son condiciones de 9odi0icacin pa%a de0ini% &os datos )ue desea9os se&ecciona% o
9anipu&a%. Ba &as Qe9os uti&izado sin da%nos cuentaN >R5- es una de e&&as.
E0ectiva9ente >R5- Uespeci0icaV de )ue tab&a )ue%e9os obtene% &os datosN es po% tanto una
c&usu&a.
1&usu&as co9unes son
>R5- Especi0ica &a tab&a de &a )ue coge9os &os %egist%os
67ERE $ndica condiciones )ue deben cu9p&i% &os %egist%os se&eccionados
AR5UP 4B Sepa%a &os %egist%os se&eccionados en g%upos espec/0icos.
Pgina # de !8
Revisin: 8
7AC$*A $ndica &a condicin )ue debe cu9p&i% cada g%upo.
5R+ER 4B 5%dena &os %egist%os segEn &o )ue &e indi)ue9os.
E@e9p&os:
Los 9a,o%es de #. aFos: SELE1( W >R5- 1ontactos 67ERE Edad _ #.R
Los )ue se &&a9an Unai: SELE1( W >R5- 1ontactos 67ERE *o9b%e`SUnaiSR
5pe%ado%es pa%a &a c&usu&a 67ERE
La c&usu&a 67ERE ad9ite co9binaciones pa%a especi0ica% 9e@o% &o )ue )uie%es se&ecciona%:
5pe%ado% Signi0icado
^_ +istinto
^ -eno%
_ -a,o%
^` -eno% o igua&
_` -a,o% o igua&
4E(6EE* $ndica un %ango 2nu9%icoN tePtoN0ecQaN...3
L$:E 4usca un pat%n
$* $ndica un va&o% conc%eto
` $gua&
A*+ B &gico
5R 5 &gico
*5( *egacin &gica
E@e9p&os:
(odos &os )ue se &&a9en ?on , tengan #. aFos o 9s.
SELE1( W >R5- 1ontactos 67ERE *o9b%e`S?onS A*+ Edad _` #.R
E& A*+ , e& 5R se pueden co9bina% usando pa%ntesis pa%a ag%upa% &as condiciones:
SELE1( W >R5- 1ontactos 67ERE 2*o9b%e`S?onS 5R *o9b%e`SUnaiS3 A*+ 2Edad _` #.3R
*os da todos &os no9b%e o%denados ascendente:
SELE1( W >R5- 1ontactos 5R+ER 4B *o9b%eR
Esto es e)uiva&ente a:
SELE1( W >R5- 1ontactos 5R+ER 4B *o9b%e AS1R
*os da todos &os no9b%e o%denados descendente:
Pgina 8 de !8
Revisin: 8
SELE1( W >R5- 1ontactos 5R+ER 4B *o9b%e +ES1R
(odos &os )ue tengan un no9b%e ent%e UA%antzaV , U?onV:
SELE1( W >%o9 1ontactos 67ERE *o9b%e 4E(6EE* SA%antzaS A*+ S?onSR
(odos &os )ue tengan #. o #! aFos:
SELE1( W >%o9 1ontactos 67ERE Edad $* 2#.N#!3R
(odos cu,o no9b%e acabe en UnV: 2E& a indica cua&)uie% nE9e%o de ca%acte%es antes o
despusN en este caso antes3.
SELE1( W >%o9 1ontactos 67ERE *o9b%e L$:E banbR
(odos &os )ue *5 acaben en UnV:
SELE1( W >%o9 1ontactos 67ERE *o9b%e *5( L$:E banbR
1o9odines pa%a e& L$:E
1o9od/n +esc%ipcin
a Sustituto pa%a ce%o o 9s ca%acte%es.
c Sustituto pa%a ePacta9ente un ca%cte%
X&ista ca%acte%esY 1ua&)uie% ca%cte% de &a &ista
Xd&ista ca%acte%esY
o bien
Xe&ista ca%acte%esY
1ua&)uie% ca%cte% )ue no est en &a &ista
E& AR5UP 4B e& 7AC$*A &os ve%e9os en un apa%tado espec/0ico puesto )ue %e)uie%en a&go
9s de conoci9ientos.
A&ias
Si%ven pa%a asigna% un no9b%e a&te%nativo a a&guna tab&a o co&u9na.
Es Eti& cuando tene9os no9b%e 9u, &a%gos de co&u9na o tab&a , )ue%e9os %e0e%i%nos a e&&os
de 0o%9a 9s c9oda:
E@e9p&o:
SELE1( Ape&&idos AS A >R5- 1ontactos 67ERE A L$:E SaaaSR
7e9os se&eccionado todos &os ape&&idosN &es Qe9os asignado un a&ias UAV , Qe9os QecQo una
se&eccin de todos &os )ue tienen una UaV.
Sin a&ias Qubiese )uedado:
SELE1( Ape&&idos >R5- 1ontactos 67ERE Ape&&idos L$:E SaaaSR
En este caso puede no pa%ece% 9u, i9p%esionante puesto )ue ocupa p%ctica9ente &o
9is9oN pe%o en consu&tas 9s co9p&e@as , con va%ios ca9pos puede aQo%%a%nos bastante
espacio.
Pgina ; de !8
Revisin: 8
Pgina T de !8
Revisin: 8
5pe%ando con va%ias tab&as
7asta aQo%a Qe9os visto senci&&as ope%aciones sob%e una so&a tab&aN pe%o este no es e& caso
9s co9En. 7abitua&9ente tend%e9os va%ias tab&as sob%e &as )ue ope%a% pa%a obtene% &os
datos )ue necesita9os.
Pa%a pode% %e&aciona% ent%e si va%ias tab&as tend%e9os )ue Qace% )ue tengan a&go en co9En.
1onceptos de c&aves 2P%i9a%, =e,3
Esos datos en co9En ent%e va%ias tab&as son &as c&aves. 1uando una co&u9na tiene va&o%es
)ue son Enicos pa%a cada %egist%oN de 0o%9a )ue se pueda distingui% dos %egist%os )ue de ot%a
0o%9a se%/an igua&esN se dice )ue esa co&u9na es &a c&ave p%i9a%ia.
Una p%i9a%, =e, no tiene po%)ue esta% 0o%9ada po% una so&a co&u9naN pod%/a esta%
co9puesta po% 9s de una.
Pa%a e&&o debe9os especi0ica% a& c%ea% &a tab&a cua& es nuest%a p%i9a%, =e,.
En ot%as bases de datos es posib&e aFadi% una co&u9na )ue sea p%i9a%, =e, una vez c%eada &a
base de datos. En nuest%o casoN con SQLiteN no pode9os Qace% eso. +ebe9os po% tanto c%ea%
&a tab&a de nuevo desde ce%o.
4o%%a9os &a tab&a )ue ,a ten/a9os:
+R5P (A4LE 1ontactosR
1%ea9os &a nueva tab&a con una c&ave p%i9a%ia , )ue no puede %epeti%se2ccid3 :
1REA(E (A4LE 1ontactos 2 ccid $*(EAER *5( *ULL PR$-ARB :EB AS1Nno9b%e
(EO(Nape&&idos (EO(Nedad $*(EAER 3R
$nse%ta9os &os va&o%es de antes:
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2SUnaiSNSEstebanezSN#!3R
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2S?onSNSMa%agozaSN#.3R
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2S?onSNS>e%nandezSN!83R
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2SUnaiSNS4i&baoSN#!3R
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2S4asi&ioSNSRa9osSNT.3R
$*SER( $*(5 1ontactos 2no9b%eNape&&idosNedad3 CALUES 2SAnd%esSNSAgui%%eSN#3R
Si os dais cuentaNno Qe9os indicado e& va&o% de& ca9po c&ave p%i9a%iaN e& so&o se auto
inc%e9enta pues as/ se &o Qe9os indicado.
Pgina < de !8
Revisin: 8
Una tab&a con va%ias p%i9a%, =e,s
Pode9os de0ini% )ue una tab&a tenga va%ios ca9pos co9o p%i9a%, =e,N ve9os&o con un
e@e9p&o:
Suponga9os )ue )ue%e9os de0ini% t%es tab&asN una de usua%ios de un se%vicio de te&e0on/aN
ot%a )ue asocia a cada usua%io con uno o va%ios 9vi&es , ot%a )ue asocia datos de tie9po
%ea& obtenidos de& 9vi&. Esta E&ti9a esta% asociada tanto con cada usua%io co9o con cada
9vi&N ade9s pa%a un 9o9ento20ecQa , Qo%a3 dados tend%e9os un con@unto de datos
conc%eto pa%a cada usua%io , 9vi&.
Las sentencias SQL de c%eacin de &as tab&as )ueda%/an ta& , co9o sigue:
1REA(E (A4LE USUAR$5S 2 $+ (EO( *5( *ULL PR$-ARB :EB 3R
1REA(E (A4LE (ELE>5*5S 2 $P (EO(N *U-ER5 (EO( *5( *ULL PR$-ARB :EBN 4A(ER$A
$*(EAERN $+ (EO( *5( *ULLN>5RE$A* :EB 2$+3 RE>ERE*1ES USUAR$5S 2$+33R
1REA(E (A4LE +A(5Sc(R 2 $+ (EO( *5( *ULLN*U-ER5 (EO( *5( *ULLN ($-ES(A-P (EO(
*5( *ULLN L5*A$(U+ REALNLA($(U+ REALNPRE1$S$5*c75R $*(EAERNAL($(U+
>L5A(NPRE1$S$5*cAL( $*(EAERNCEL51$+A+ $*(EAERNRU-45 $*(EAERN>5RE$A* :EB 2$+3
RE>ERE*1ES USUAR$5S 2$+3N>5RE$A* :EB 2*U-ER53 RE>ERE*1ES
(ELE>5*5S2*U-ER53NPR$-ARB :EB 2$+N*U-ER5N($-ES(A-P3 3R
Pgina 8 de !8
Revisin: 8
1onceptos de c&aves 2>o%eign =e,3
Se t%ata de una c&ave )ue no es p%i9a%ia en esta tab&a pe%o )ue si &o es en ot%a tab&a a &a )ue
se Qace %e0e%encia. Lo ac&a%o con un e@e9p&o:
ccid 2p%i9a%,c=e,3 *o9b%e Ape&&idos Edad
Unai Estbanez #!
! ?on Ma%agoza #.
ocid2p%i9a%,c=e,3 5%den de co9p%a ccid20o%eign =e,3
5RD !
! 5RD! !
# 5RD#
En este caso tene9os dos tab&asN una con contactos , ot%a con %denes de co9p%a. Se supone
)ue cada o%den de co9p%a )ue tene9os &a Qa %ea&izado uno de nuest%os contactos. 1o9o
debe9os sabe% a )uien pe%tenece cada o%den aFadi9os una co&u9na )ue es una c&ave
ePt%an@e%a 20o%eign =e,3 pa%a pode% c%uza% &os datos.
1%ee9os una nueva tab&a con &as o%denes donde &e indica9os &os dos tipos de c&aves:
1REA(E (A4LE 5%denes 2ocid $*(EAER *5( *ULL PR$-ARB :EB AS1No%den (EO(Nccid
$*(EAERN >5RE$A* :EB 2ccid3 RE>ERE*1ES 1ontactos 2ccid3 3R
$nse%ta9os nuest%a p%i9e%a o%den de co9p%aN )ue po% e& 9o9ento no est asociada a nadie:
$*SER( $*(5 5%denes 2o%den3 CALUES 2S5RDS3R
AQo%a &e asigna9os esa o%den a UUnai EstbanezV:
UP+A(E 5%denes SE( ccid`R
?oins
?oin es e& co9ando )ue uti&iza%e9os pa%a obtene% datos de va%ias tab&as %e&acionadas ent%e s/.
Los tipos de @oin son:
?5$* 2$**ER ?5$*3 +evue&ve &os %egist%os )ue tienen a& 9enos una coincidencia en &as
dos tab&as
LE>( ?5$* +evue&ve &os %egist%os de &a tab&a iz)uie%da inc&uso si no Qa, coincidencia con
&a tab&a de%ecQa
R$A7( ?5$* +evue&ve &os %egist%os de &a tab&a de%ecQa inc&uso si no Qa, coincidencia
con &a tab&a iz)uie%da. *o sopo%tada en SQLite.
>ULL ?5$* +evue&ve &os %egist%os )ue tienen coincidencia en una de &as tab&as. *o
sopo%tada en SQLite.
Pgina ' de !8
Revisin: 8
E@e9p&os:
4usca9os e& no9b%e de &as pe%sonas )ue tienen una o%den de co9p%a asociada:
SELE1( 1ontactos.no9b%eN 5%denes.5%den >R5- 1ontactos $**ER ?5$* 5%denes 5*
1ontactos.ccid ` 5%denes.ccidR
Esto nos devue&ve UUnaiV , su o%den de co9p%a U5RDV.
Esta ot%a sentencia SQL nos devo&ve% todos &os datos de &a tab&a de &a iz)uie%da:
SELE1( 1ontactos.no9b%eN 5%denes.5%den >R5- 1ontactos LE>( ?5$* 5%denes 5*
1ontactos.ccid ` 5%denes.ccidR
Esto nos devue&ve todos &os no9b%es pe%o so&o UUnaiV tend% una o%denN e& %esto tend% vac/o
ese ca9po.
Uniones 2U*$5* , U*$5* ALL3
Los ope%ado%es U*$5* , U*$5* ALL si%ve pa%a co9bina% &os datos de dos consu&tas.
Po% e@e9p&oN &os )ue tienen !8 , &os )ue tienen #! aFos:
SELE1( *o9b%eNApe&&idosNEdad >R5- 1ontactos 6Qe%e Edad ` !8
U*$5* ALL
SELE1( *o9b%eNApe&&idosNEdad >R5- 1ontactos 6Qe%e Edad ` #!R
E& U*$5* ALL pe%9ite dup&icados , e& U*$5* no.
Pgina !. de !8
Revisin: 8
>unciones
Si%ven pa%a Qace% c&cu&os sob%e g%upos de datos
!
. 7a, dos tipos de 0unciones:
. >unciones esca&a%es +evue&ven un va&o% Enico %esu&tante de p%ocesa% un dato.
U1ASE En SQLite es uppe%
L1ASE En SQLite es &o]e%
-$+
LE*
R5U*+
*56
>5R-A(
!. >unciones ag%egadas +evue&ven un va&o% Enico %esu&tante de p%ocesa% una co&u9na.
ACA
15U*(
>$RS(
LAS(
-AO
-$*
SU-
E@e9p&os de 0unciones ag%egadas:
1uenta &as co&u9nas Uno9b%eV de &a tab&a contactos.
SELE1( 15U*(2no9b%e3 >R5- 1ontactosR
La 9edia de &os p%ecios de &as o%denes:
SELE1( ACA2p%ecio3 >R5- 5%denesR
E@e9p&os de 0unciones esca&a%es:
Saca &os no9b%es en 9a,Escu&as:
SELE1( uppe%2no9b%e3 >R5- 1ontactosR
! Los no9b%es de 0unciones pueden ca9bia% con cada base de datos. 1onsu&tad e& 9anua& co%%espondiente.
Pgina ! de !8
Revisin: 8
AR5UP 4B
La sentencia AR5UP 4B si%ve pa%a ag%upa% %esu&tados en con@untos , de esta 0o%9a ap&ica%
ope%aciones sob%e esos con@untos. Se usan en con@uncin con &as 0unciones ag%egadas.
AntesN va9os a aFadi% una co&u9na a &a tab&a de %denesN se t%ata de& p%ecio de cada o%den:
AL(ER (A4LE 5%denes A++ p%ecio REALR
B aQo%a aFadi9os un p%ecio:
UP+A(E o%denes SE( p%ecio`! 67ERE ocid`R
Ca9os a aFadi% a&gunas o%denes 9as pa%a Qace% p%uebas con e& g%oup b,:
$*SER( $*(5 5%denes 2o%denNccidNp%ecio3 CALUES 2S5RD!SNN!;3R
$*SER( $*(5 5%denes 2o%denNccidNp%ecio3 CALUES 2S5RD#SN!N#.T3R
A continuacin va9os a obtene% todas &as o%denes de co9p%a , va9os a ag%upa%&as po%
no9b%e pa%a ade9s su9a% &os p%ecios )ue co%%esponden a cada no9b%e:
SELE1( no9b%eNape&&idosNSU-25%denes.p%ecio3 >R5- 1ontactos $**ER ?5$* 5%
denes 5* 1ontactos.ccid ` 5%denes.ccid AR5UP 4B no9b%eR
Esto pode9os Qace%&o po%)ue se Qa %ea&izado una ag%upacin po% no9b%e. Si no Qace9os &a
ag%upacin e& %esu&tado es tota&9ente distinto ,a )ue su9a todos &os p%ecios de &a co&u9na
p%ecios )ue sa&e t%as &a se&eccin.
7AC$*A
E& Qaving tiene su sentido po%)ue no es posib&e usa% 0unciones ag%egadas en e& 67ERE.
Po% e@e9p&o:
Ca9os a se&ecciona% de &a tab&a 1ontactos todos a)ue&&os )ue tengan e& 9is9o no9b%eN &os
ag%upa9os , su9a9os su edad:
SELE1( no9b%eNSU-2edad3 >R5- 1ontactos AR5UP 4B no9b%e 7AC$*A 15U*(2edad3 _ R
Pgina !! de !8
Revisin: 8
"ndices
Reco%de9os nuest%a tab&a de 1ontactosN en esta tab&a e@ecuta% &a sentencia:
SELE1( W >R5- 1ontactos 67ERE no9b%e`VUnaiVR
Esto supone %eco%%e% &a tab&aN 0i&a po% 0i&aN Qasta da% con cada ent%ada cu,o no9b%e es Unai.
EstoN si &a tab&a es g%andeN puede Qace% ine0iciente &a consu&ta.
Los /ndices son usados pa%a ace&e%a% &as consu&tas 0%ecuentes en una 4ase de +atos. Un /ndice
a,uda a &a 4ase de +atos a identi0ica% , obtene% 0i&as 9ucQo 9s %pido.
Los /ndices &o )ue Qacen es c%ea% una est%uctu%a de datosN en e& caso de s)&ite un bt%eeN )ue
pe%9ite busca% e& va&o% )ue &e pedi9os de 0o%9a 9u, %pida con tan so&o unos pocos accesos
a &a est%uctu%a de datos.
Pe%o atencinNun uso inco%%ecto de estos pod%/a causa% )ue e& siste9a se sob%eca%gueN po% &o
)ue Qa, )ue tene% 9ucQo cuidado a& ap&ica%&os.
Pode9os c%ea% un /ndice con &a siguiente sentencia:
1REA(E $*+EO indicecno9b%e 5* 1ontactos 2no9b%e3R
Esto Qace )ue se c%ee e& /ndice. En p%incipio ,a no debe9os Qace% nada 9sN cuando &a tab&a
es 9odi0icadaN ,a sea po% una inse%cinN 9odi0icacin o e&i9inacinN e& /ndice es actua&izado
auto9tica9ente
(ec&eando en &a conso&a de s)&ite:
.indices 1ontactos
Se nos 9uest%a Uindicecno9b%eV )ue indica )ue ,a se Qa c%eado e& /ndice en &a tab&a.
Pa%a bo%%a% un /ndice:
+R5P $*+EO indicecno9b%eR
Es posib&e c%ea% /ndices po% va%ios ca9pos sepa%ando estos po% co9as dent%o de &os
pa%ntesis:
1REA(E $*+EO indicecno9b%e 5* 1ontactos 2no9b%eNape&&idos3R
1onst%aints D Rest%icciones
Se &&a9a as/ a& %est%ingi% &os va&o%es )ue puede to9a% una dete%9inada co&u9na de &a tab&a.
Estas %est%icciones &as pode9os aFadi% a& c%ea% una tab&a con 1REA(Ec(A4LE o bin a&
9odi0ica%&a 9ediante AL(ERc(A4LE.
Rest%icciones t/picas pueden se% po% e@e9p&o )ue una co&u9na no pueda se% *ULLN )ue no
to9e un va&o% dete%9inado o )ue no tenga una &ongitud 9a,o% )ue una dada.
Ent%e estas %est%icciones t/picas tene9os:
Pgina !# de !8
Revisin: 8
*5( *ULL 2Pa%a )ue no se pe%9ita un va&o% *ULL3
PR$-ARB :EB 2 fa&guien no sabe a estas a&tu%as pa%a )ue si%ve estog3
U*$QUE 2Pa%a ob&iga% a )ue no se %epitan va&o%es en esa co&u9na3
17E1: 2 Pa%a ve%i0ica% una condicin dada3
E@e9p&os:
1REA(E (A4LE RSU 2$+cRSU (EO( U*$QUE PR$-ARB :EBN
+esc% (EO(N
RSUct,pe (EO(N
1o9sPa%a9s (EO(N
Road (EO(N
P: $*(EAERN
+i% (EO( cQec= 2&engtQ2+i%3 ^` !3N
P5ScO REALN
P5ScB REALN
P5ScM REALN
R(c(i9esta9p (EO(N
R(cStatus (EO(N
A&go%itQ9scpatQ (EO( cQec=2&engtQ2A&go%itQ9scpatQ3 ^` !T.33R
(ene9os en esta tab&a cuat%o %est%iccionesN una PR$-ARBc:EB , U*$QUE , dos 17E1:s.
1o9o se puede ve% e& 9ecanis9o es senci&&oN se &e indica )ue esos ca9pos no pueden tene%
9s de una &ongitud dada , ,a esta.
A& intenta% int%oduci% datos )ue no cu9p&en &as condiciones se p%oduce un e%%o% co9o este
USQL e%%o%: const%aint 0ai&edV en e& caso de intenta% 9ete% un tePto 9s g%ande de& debido o
co9o este USQL e%%o%: co&u9n $+cRSU is not uni)ueV en e& caso de )ue%e% 9ete% una
co&u9na con va&o%es dup&icados.
Pgina !8 de !8
Revisin: 8
(%igge%s
Un t%igge% 2Ugati&&oV3 consiste en e@ecuta% una secuencia de sentencias cuando ocu%%e un
evento dado.
La idea de esto es da% de a&ta un t%igge% pa%a )ue se e@ecute cuando ocu%%a un evento )ue
indi)ue9os nosot%os , de esta 0o%9a se %ea&icen ope%aciones en &a base de datos de 0o%9a
auto9tica.
Se pueden e@ecuta% cuando se p%oduzcan un +ELE(E un $*SER( o un UP+A(E de una tab&a
conc%eta o bien cuando se p%oduzca un UP+A(E de una o 9s co&u9nas de una tab&a.
(ene9os ta9bin &a posibi&idad de e@ecuta% e& t%igge% cada vez )ue se actua&izaNinse%ta o bo%%a
una 0i&a 9ediante una sentencia )ue i9p&i)ue &anza% e& t%igge%.
5t%a opcin de Ucon0igu%acin de& t%igge%V )ue tene9os disponib&e es &a de indica% si
)ue%e9os )ue e& t%igge% se p%oduzca antes o despus de &a accin )ue esta9os indicando.
1uando se e@ecute e& t%igge% puede )ue en ese 9o9ento )ue%a9os Qace% %e0e%encia a &os
nuevos datos o a &os antiguos 2&os )ue van a se% %ee9p&azadosN e&i9inados o &os )ue se van a
inse%ta% nuevos3N pa%a e&&o pod%e9os usa% %e0e%encias de& tipo U*E6.no9b%ecco&u9naV o
U5L+.no9b%ecco&u9naV.
Los casos )ue tene9os son:
1uando Qace9os una $*SER( &as %e0e%encias *E6 son v&idas
1uando Qace9os un UP+A(E &as %e0e%encias *E6 , 5L+ son v&idas
1uando Qace9os un +ELE(E &as %e0e%encias 5L+ son v&idas.
Suponga9os )ue c%ea9os una tab&a pa%a a&9acena% &as o%denes de co9p%as sospecQosas de
se% e%%neas po%)ue tienen un p%ecio 9u, ca%o:
1REA(E (A4LE SospecQosas 2ocid $*(EAER *5( *ULL PR$-ARB :EBN
>5RE$A* :EB 2ocid3 RE>ERE*1ES 5%denes2ocid3 3R
AQo%a c%ea%e9os un t%igge% pa%a )ue en cada inse%cin se co9p%uebe si e& p%ecio es de 9s
de ... eu%os , en ese caso 9ete9os &a o%den en &a &ista de sospecQosas:
1REA(E (R$AAER cQec=csospecQosas A>(ER $*SER( 5* 5%denes 67E* 2*E6.p%eci
o _` ...3
4EA$*
$*SER( $*(5 SSospecQosasS CALUES2*E6.ocid3R
E*+R
+e esta 0o%9a a& inse%ta% una o%den de 9s de ... eu%os:
$*SER( $*(5 S5%denesS CALUES28NS5RD8SNN!..3R
Ce%e9os )ue se Qa c%eado una ent%ada en &a tab&a USospecQosasV pa%a esta o%den de
Pgina !; de !8
Revisin: 8
co9p%a.
Pa%a e&i9ina% un t%igge% se puede uti&iza% &a sentencia +R5P (R$AAER ^no9b%e t%igge%_ o
bien se bo%%a% @unto con &a tab&a cuando esta se e&i9ine.
La sintaPis pa%a un t%igge% es:
1REA(E X(E-P Z (E-P5RARBY (R$AAER X $> *5( EO$S(S Y X ^no9b%e de &a base de datos_. Y
^no9b%e de& t%igge%_ X 4E>5RE Z A>(ER Z $*S(EA+ 5> Y [ +ELE(E Z $*SER( Z UP+A(E X5>
^no9b%ecco&u9na_N...una o 9sY\ 5* ^no9b%e tab&a_ X >5R EA17 R56 Y X 67E*
^ePp%esin_ Y 4EA$* ^sentencias 0ina&izadas conR_E*+R
Es posib&e cance&a% &a )ue%, en cu%so si dent%o de& t%igge% usa9os una sentencia RA$SE.
RA$SE 2 $A*5RE Z [ [R5LL4A1: Z A45R( Z >A$L\ N ^9ensa@e e%%o%_\ 3R
Aconse@o ecQa% un vistazo a& 9anua& de cada base de datos pa%a ve%i0ica% e& co9po%ta9iento
de cada una de estas opciones.
Pgina !T de !8
Revisin: 8
1onsu&tas a&go 9s co9p&e@as
Poco a pocoN a& i% pe&endonos con &a base de datos i%e9os teniendo necesidad de Qace%
consu&tas 9s co9p&e@asN %eco@o a)u/ a&gunas de &as )ue 9e Qan su%gido a 9/ po% si os
pueden se% de uti&idad:
Anidando consu&tas
En 9i caso Qe tenido )ue anida% consu&tas pa%a a&i9enta% a una consu&ta con &a sa&ida de ot%a.
Suponga9os )ue tene9os una tab&a con un Qist%ico de va%iab&es ana&gicasN &a tab&a pod%/a
se% co9o esta:
(i9eSta9p
2P:3
5]ne%(,pe
2P:N>:3
5]ne%1ode
2P:N>:3
+cAna&ogCa%
2>:3
Ca&ue A&9
1uando se
actua&iz e& va&o%
7ace %e0e%encia a
&a de0incin de &a
va%iab&e en ot%a
tab&a
7ace %e0e%encia a
&a de0incin de &a
va%iab&e en ot%a
tab&a
7ace %e0e%encia a
&a
de0incin de &a
va%iab&e en ot%a
tab&a
Ca&o% de &a
va%iab&e
$ndica si se Qa
p%oducido
a&a%9a o no
debido a& va&o%
de &a va%iab&e
AQo%a necestia9os &os va&o%es 9s antiguos de& Qist%ico:
SELE1( W >R5- Ana&og7isto%ica& 67ERE $+cAna&ogCa%`V(e9pe%atu%aV A*+
5]ne%(,pe`V-E(V A*+ 5]ne%1ode` A*+ (i9eSta9p ` 2 a)u/ Qa, )ue anida% 3R
Lo )ue debiea%9os anida% se%/a:
SELE1( -$*2(i9eSta9p3 >R5- Ana&og7isto%ica& 67ERE $+cAna&ogCa%`V(e9pe%atu%aV A*+
5]ne%(,pe`V-E(V A*+ 5]ne%1ode`
+e esta 0o%9a &a consu&ta )ueda%/a as/:
SELE1( W >R5- Ana&og7isto%ica& 67ERE $+cAna&ogCa%`V(e9pe%atu%aV A*+
5]ne%(,pe`V-E(V A*+ 5]ne%1ode` A*+ (i9eSta9p ` 2 LE1( -$*2(i9eSta9p3 >R5-
Ana&og7isto%ica& 67ERE $+cAna&ogCa%`V(e9pe%atu%aV A*+ 5]ne%(,pe`V-E(V A*+
5]ne%1ode`3R
Pgina !< de !8
Revisin: 8
Li9ita% e& nE9e%o de e&e9entos en &a consu&ta
AtencinN &a sintaPis de este apa%tado es ePc&usiva de SQLiteN en ot%as bases de datos se
%ea&iza% de ot%a 0o%9a.
Se t%ata de &i9ita% e& nE9e%o de e&e9entos )ue )ue%e9os obtene%N nos inte%esa po% e@e9p&o
coge% &os . 9s %ecientes.
SELE1( W >R5- Ana&og7isto%ica& 6Qe%e $+cAna&ogCa%`V(e9pe%atu%aV A*+
5]ne%(,pe`V-E(V A*+ 5]ne%1ode` 5R+ER 4B (i9eSta9p L$-$( .R
(a9bin pod%/a inte%esa%nos escoge% . va&o%es a pa%ti% de un o00set dado:
SELE1( W >R5- Ana&og7isto%ica& 6Qe%e $+cAna&ogCa%`V(e9pe%atu%aV A*+
5]ne%(,pe`V-E(V A*+ 5]ne%1ode` 5R+ER 4B (i9eSta9p L$-$( . 5>>SE( !R
Pgina !8 de !8

También podría gustarte