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 '8T '8' ''! ''' !..# !..T !..8 *o9b%e SQLD8T SQLD8' SQLD'! SQL: ''' SQL:!..# SQL:!..T 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 Unai ?on Ape&&idos Estbanez Ma%agoza Edad #! #.

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% ^_ ^ _ ^` _` 4E(6EE* L$:E $* ` A*+ 5R *5( 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: +istinto -eno% -a,o% -eno% o igua& -a,o% o igua& $ndica un %ango 2nu9%icoN tePtoN0ecQaN...3 4usca un pat%n $ndica un va&o% conc%eto $gua& B &gico 5 &gico *egacin &gica Signi0icado

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 a c X&ista ca%acte%esY Xd&ista ca%acte%esY o bien Xe&ista ca%acte%esY +esc%ipcin Sustituto pa%a ce%o o 9s ca%acte%es. Sustituto pa%a ePacta9ente un ca%cte% 1ua&)uie% ca%cte% de &a &ista 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 ! ocid2p%i9a%,c=e,3 ! # *o9b%e Unai ?on 5%den de co9p%a 5RD 5RD! 5RD# Ape&&idos Estbanez Ma%agoza ccid20o%eign =e,3 ! ! Edad #! #.

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 2S5RD S3R 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 U5RD V. 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!SN N!;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 CALUES28NS5RD8SN N !..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
7ace %e0e%encia a &a de0incin de &a va%iab&e en ot%a tab&a

+cAna&ogCa% 2>: 3

Ca&ue

A&9
$ndica si se Qa p%oducido a&a%9a o no debido a& va&o% de &a va%iab&e

1uando se 7ace %e0e%encia a actua&iz e& va&o% &a de0incin de &a va%iab&e en ot%a tab&a

7ace %e0e%encia a Ca&o% de &a &a va%iab&e de0incin de &a va%iab&e en ot%a tab&a

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 >R5Ana&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