You are on page 1of 18

CURSO DE SQL

CAPTULO 1
1
ndice de contenido
CAPTULO 1.......................................................................................................................................1
INTRODUCCIN................................................................................................................................2
POR QU ESTE CURSO?............................................................................................................2
CONFESIONES NTIMAS.............................................................................................................2
Y EN ESTE PRIMER CAPTULO.................................................................................................3
EL LENGUAJE SQL...........................................................................................................................3
RPIDAMENTE... QU ES?.......................................................................................................3
TIPOS DE DATOS..........................................................................................................................4
DATOS TIPO TETO................................................................................................................4
DATOS TIPO MEMO.................................................................................................................!
DATOS TIPO N"MERO............................................................................................................#
DATOS TIPO FEC$A%$ORA....................................................................................................&
DATOS TIPO MONEDA............................................................................................................'
DATOS TIPO AUTONUMRICO.............................................................................................'
DATOS S%NO (DATOS )OOLEANOS*...................................................................................'
DATOS O)JETO OLE...............................................................................................................'
DATOS )INARIOS....................................................................................................................+
CUADRO RESUMEN................................................................................................................+
ALGUNOS COMPONENTES DE SQL.......................................................................................1,
COMANDOS............................................................................................................................1,
CLUSULAS...........................................................................................................................11
PREDICADOS..........................................................................................................................11
OPERACIONES.......................................................................................................................11
OPERADORES........................................................................................................................12
FUNCIONES AGREGADAS...................................................................................................12
PREPARACIN Y EPLICACIONES -ARIAS PARA SEGUIR EL RESTO DEL CURSO.........13
PARA FINALI.AR ESTE CAPTULO.............................................................................................1'
1 La BD donde estn los ejemplos de este captulo os la podis bajar aqu.
1
Vistame en http://siliconproject.com.ar/neckkito/
INTRODUCCIN
POR QU ESTE CURSO?
uando pro!undi"amos un poco en #ccess$ % sobre todo
cuando pro!undi"amos en VB# para #ccess$ nos
encontramos con una &palabrita' e(tra)a que se escribe
&*+L'. on toda probabilidad$ por poco que ha%amos
toqueteado las consultas de #ccess$ nos habremos
encontrado con al,o que se llama &-ista *+L'.
#h nuestra ,ran consulta se nos habr con-ertido en un ,rupo de palabras$ a cual ms
e(tra)a$ % pensando &no entiendo nada de esto' nos habremos -uelto a la -ista dise)o de la
consulta % tan !rescos.
.or otra parte$ si %a hablamos de c/di,o$ qui"s ha%amos encontrado al,0n c/di,o donde se
nos dice que &construimos nuestra consulta a tra-s de la -ariable mi*+L'$ % tambin
habremos podido -er que nuestra -ariable *trin, se con!eccionaba con un conjunto de
&palabrejas' que bueno... ni Dios que lo entienda$ pero !unciona.
1ntonces se enciende una bombilla en eso que llaman cerebro % pienso: &2por qu no hacer un
curso para que los su!ridos usuarios de #ccess puedan entender qu estn haciendo3'
4$ como dira #rist/teles$ de la potencia al acto: de ah que ahora los &a!ortunados' ten,is en
-uestras manos este curso 5modestia aparte$ claro... je$ je...6.
omo habris podido intuir$ % quienes me conocis un poco %a habris adi-inado$ la idea de
este curso no es meterse a !ondo en teora sobre *+L7 mi intenci/n es darle un carcter
prctico$ % el objeti-o !inal es que al -er una sentencia *+L sepis qu est haciendo$ adems
de poder construiros -osotros mismos -uestras propias instrucciones para &esos c/di,os que
tan bien !uncionan en nuestras BD8s'.
9inalmente lo que se e(plicar en este curso sobre *+L est en!ocado$ principalmente$ a su
!uncionamiento con #ccess. ierto es que *+L es un len,uaje estndar$ pero bueno$ di,amos
que cada sistema ,estor de bases de datos puede tener sus propias particularidades. *in
embar,o$ e insisto en ello$ el en!oque que se d ser siempre de cara a su desarrollo para
#ccess.
Do% por supuesto que el lector tiene un cierto control sobre VB# para #ccess$ dado que los
ejemplos -an a estar basados prcticamente en este len,uaje de pro,ramaci/n. #unque
intentar e(plicar qu esto% haciendo ha% cosas que se darn por sabidas. *i tenemos dudas
siempre podemos consultar este !antstico manual sobre VB# para #ccess 5je$ je...6
1spero que este curso os sea 0til. 4$ si encontris al,0n error o &desastre'$ adems de pedir
disculpas por adelantado$ os ro,ara que me lo comunicarais para poder &enmendar la pi!ia'.
:*uerte;
CONFESIONES NTIMAS
<o me considero un &monstruo' de *+L. De hecho$ a mis e!ectos$ dira que so% un ne/!ito en
esto de *+L. 2.or qu3 .orque #ccess nos !acilita muchsimo el trabajo de construcci/n de
*+L8s que son las que$ ,eneralmente$ nos !uncionan per!ectamente en nuestras BD8s.
=
Vistame en http://siliconproject.com.ar/neckkito/
*upon,o que por esta &!alta de necesidad' no se me ha ocurrido pro!undi"ar hasta las entra)as
&ms oscuras' de *+L. 1n !in...
24 qu quiero decir con esto3 +ue quien espere encontrar$
en este manual$ &,randes construcciones *+L' con una
&complejidad ra%ana en la locura'... pues se ha equi-ocado
de manual.
24 qu encontraremos en este manual$ entonces3 .ues la
!inalidad$ como os comentaba antes$ es simplemente que
&entendamos'$ al leer o construir una *+L$ qu estamos
haciendo. 4 lo que encontraremos sern las construcciones
*+L ms comunes 5bueno$ qui" al,una de no tan com0n6
% c/mo podemos implementarlas en nuestros c/di,os VB#.
>nsisto: para ,randes complicaciones... pues a buscar un
buen manual 5% caro6 sobre *+L.
Y EN ESTE PRIMER CAPTULO...
Vamos a di-idir este captulo en dos partes bien di!erenciadas: teora % preparaci/n de datos
para poder desarrollar % practicar en los pr/(imos captulos.
omo casi todo en la -ida no se puede empe"ar la casa por el techo. .or ello este primer
captulo ser un poco 5mucho6 te/rico. De hecho$ pienso que es mejor un s/lo captulo 5este6
!undamentalmente te/rico que no teora por aqu$ teora por all...
.or eso os pido un poco de paciencia$ puesto que es imprescindible sentar las bases de
terminolo,a$ conceptos % &otros chascarrillos' antes de meternos de lleno en temas prcticos.
.ero tranquilos$ que %a sabis que a m me ,usta ms la prctica que la teora$ por lo que
intentar ser ?B: bueno$ bonito % bre-e.
1n cuanto a la preparaci/n de los datos la idea es crearse una BD de ejemplo % que con ella
seamos capaces de desarrollar todas las di!erentes e(plicaciones que se lle-arn a cabo en los
si,uientes captulos. * que tambin es un es!uer"o$ pero esto% con-encido de que el mismo
tendr una buena recompensa.
1-identemente se puede se,uir el curso sin reali"ar la parte prctica$ pero si en al,una parte
nos perdemos % no hemos se,uido los ejemplos probablemente este es!uer"o que hacemos al
principio lo ten,amos que reali"ar tarde o temprano si queremos entender bien qu estamos
haciendo. 1n de!initi-a$ que es una decisi/n personal de cada uno.
9inalmente$ recordad que todos los contenidos estarn basados en la aplicaci/n de sentencias
*+L dentro de VB para #ccess. <o debemos perder de -ista lo anterior.
EL LENGUAJE SQL
RPIDAMENTE... QU ES?
*i nos ce)imos a la de!inici/n que podemos leer en @ikipedia
=
$ nos encontramos con que *+L
es:
AAEl lenguaje de consulta estructurado o SQL (por sus siglas en ingls structured query language) es
2 Bhttp://es.Cikipedia.or,/Ciki/*+L D. onsulta en lnea el =1/EF/1=
?
Vistame en http://siliconproject.com.ar/neckkito/
un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de
operaciones en estas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional permitiendo
efectuar consultas con el fin de recuperar -de una forma sencilla- informacin de inters de una base de
datos! as como tambin "acer cambios sobre ella.>>
1n resumidas cuentas$ *+L es:
Gn len,uaje de pro,ramaci/n...
para bases de datos relacionales... 5:aramba;
#ccess es un HBDI
?
6
que a tra-s de unos instrumentos...
nos permite e!ectuar consultas...
para e(traer in!ormaci/n de la base de datos.
*e utili"a *+L porque es un len,uaje estndar de una ,ran aceptaci/n % que$ sal-o honrosas
e(cepciones$ nos permite manipular bases de datos independientemente del sistema ,estor. 1s
decir$ que en principio nos da i,ual si es #ccess quien ,estiona la BD$ *+LJ*er-er$ Kracle o
phpL%#dmin$ entre otros.
Ktra de las -entajas de *+L es su relati-a sencille"$ de manera que con el conocimiento de
unas pocas palabras &cla-es' podemos e!ectuar potentes consultas para conse,uir la
in!ormaci/n necesaria.
9inalmente$ nuestro &querido' VB# acepta la implementaci/n de *+L dentro del c/di,o$ con lo
que si sabemos pro,ramar en VB# % *+L podemos obtener una siner,ia importante para una
mejor utili"aci/n de nuestra BD.
omo %a comentaba en la introducci/n$ a partir de aqu las re!erencias que se ha,an sern
todas re!eridas a su utili"aci/n en #ccess % en VB# para #ccess 5insisto en que lo anterior no
e(clu%e su uso$ en un alto porcentaje$ en otros sistemas de ,esti/n6. Veremos c/mo
complementar estos dos len,uajes de pro,ramaci/n para conse,uir las siner,ias que
comentbamos antes.
TIPOS DE DATOS
Vamos a partir$ para este ep,ra!e$ de lo &conocido' para lle,ar a lo &desconocido'. 4 #ccess
ser nuestra &lu" % ,ua' para ello.
uando creamos una tabla en #ccess %
de!inimos un campo debemos de!inir tambin
su tipo de dato. 1s decir$ que nos
encontramos con una cosa as:
Vamos a ir recorriendo estos tipos de campos
para -er sus caractersticas % su relaci/n con
*+L
DATOS TIPO TEXTO
Gn dato tipo te(to es simplemente una
cadena de caracteres$ con una lon,itud m(ima de =MM caracteres.
Nasta aqu mu% bien. .ero nuestro campo tipo te(to$ 2es de lon,itud -ariable o de lon,itud
!ija3
? HBDI: Hestor de Bases de Datos Ielacional
F
Vistame en http://siliconproject.com.ar/neckkito/
+ue un dato sea de lon,itud -ariable o !ija tiene su repercusi/n en el tama)o de
almacenamiento en bites del dato. 1so quiere decir que:
*i el te(to es de lon,itud fija el tama)o de almacenamiento
ser el doble del tama)o definido
*i el te(to es de lon,itud variable el tama)o de
almacenamiento ser el doble del tama)o real.
.ara que nos entendamos: si %o de!ino un campo con un
tama)o m(imo de =M caracteres de lon,itud % el -alor que
ha% dentro de ese campo tiene 1M caracteres mis tama)os
de almacenamiento en bites sern los si,uientes:
*i el te(to es !ijo: =MO=PME
*i el te(to es -ariable: 1MO=P?E
onclusi/n: si sabemos de antemano que los -alores que -amos a introducir en ese campo -an
a tener todos una lon,itud similar sera mejor utili"ar un te(to !ijo7 al contrario$ si esa lon,itud
-a a ser dispar utili"aramos un te(to -ariable.
Ls cosas: 2qu tipo de te(to utili"a #ccess3 #ccess utili"a por de!ecto$ un tama)o -ariable. 24
c/mo podemos saber &-isualmente' qu tipo de te(to se est utili"ando3 .ues abriendo la
tabla en -ista hoja de datos % mirando qu selecci/n 5marcado en ne,ro6 se hace del -alor del
campo. *i -emos que se selecciona s/lo el -alor estaremos ante un te(to -ariable7 si se
selecciona todo el campo ser un te(to !ijo
F
.
1s decir:
2/mo de!inimos uno % otro en *+L3 .ues utili"ando las &palabras reser-adas' que tenemos
para ello. Disponemos de -arias palabras reser-adas en al,unos casos 5es decir$ como si !ueran
sin/nimos6. La si,uiente tabla muestra de qu opciones disponemos:
Qe(to R Lon,itud !ija N#I
Qe(to R Lon,itud -ariable #L.N#<GL1I> / *QI><H / Q1SQ / Q1SQ 5<6 /
V#IN#I
DATOS TIPO MEMO
Los datos tipo memo no son ms que datos de tipo te(to$ pero sin la limitaci/n de los =MM
caracteres. De hecho$ un campo memo puede acumular hasta un m(imo de TM.M?T
caracteres. *i el campo no contiene datos binarios nuestro lmite aumenta hasta el lmite
m(imo que se puede alcan"ar con un archi-o #ccess$ que como bien sabemos est en los =
HB.
*i el campo es memo %a no hablamos ni de lon,itud !ija ni -ariable$ %a que la 0nica posibilidad
es esta 0ltima$ es decir$ lon,itud -ariable. *i se,uimos la sistemtica del apartado anterior
podremos deducir que el tama)o de almacenamiento es el doble de la lon,itud real del -alor
almacenado en el campo.
F omo habris ima,inado esta de!inici/n de tipo dato no se puede establecer a tra-s de la interface de #ccess$ sino que debemos
hacerlo a tra-s de una *+L. 1n captulos posteriores -eremos c/mo reali"ar esta operaci/n.
M
Vistame en http://siliconproject.com.ar/neckkito/
.ara de!inir un campo como memo utili"amos:
Qe(to J Lemo LK<HQ1SQ / LK<HN#I / L1LK / <KQ1
DATOS TIPO NMERO
4 aqu empie"a el !esti-al$ porque e(isten di!erentes
tipolo,as de n0meros. La primera ,ran di-isi/n que
podemos hacer de los n0meros es aquella que di!erencia
entre -alores sin decimales 5-alores enteros6 % -alores con
decimales 5-alores decimales6.
Gna -e" establecida esta primera di-isi/n podemos di-idir ambos tipos en !unci/n del inter-alo
de datos admitido.
Veamos:
V#LKI1* 1<Q1IK*
Qenemos un tipo de campo que admite -alores positi-os del E al =MM. 1n VB seran los
datos tipo B4Q1
Qenemos un tipo de campo que admite -alores positi-os % ne,ati-os en el inter-alo que
-a desde el J?=.UTV hasta el ?=.UTU. 1n VB seran los datos tipo ><Q1H1I
Qenemos un tipo de campo que admite -alores positi-os % ne,ati-os en el inter-alo que
-a desde el J=.1FU.FV?.TFV hasta el =.1FU.FV?.TFU. 1n VB seran los datos tipo LK<H
24 cules son las palabras reser-adas en *+L para estos tipos de datos3 .ues son las
si,uientes:
TIPO DATO VB SQL
B%te B4Q1 / ><Q1H1I1
>nte,er *L#LL><Q / *NKIQ / ><Q1H1I=
Lon, ><Q1H1I / LK<H / ><Q / ><Q1H1IF
onclusi/n: debemos ir con mucho cuidado % &centrarnos' en si de!inimos el tipo de dato en
VB o en *+L$ puesto que$ como podis -er$ las palabras reser-adas pueden lle-arnos a
con!usi/n por su similitud entre di!erentes tipos.
*i -ol-emos a recurrir a la inter!a" de #ccess estaramos hablando de:
V#LKI1* D1>L#L1*
Qenemos un tipo de datos$ denominados &de coma !lotante de precisi/n simple'$ que
abarcan un inter-alo de -alores positi-os % ne,ati-os que -a desde/hasta:
.ara -alores ne,ati-os: J?.FE=V=?1?V % J1$FE1=WV1JFM
.ara -alores positi-os: 1$FE1=WV1JFM % ?$FE=V=?1?V
1s lo que en VB conocemos somo *><HL1
Qenemos otro tipo de datos$ denominados &de coma !lotante de precisi/n doble'$ que
T
Vistame en http://siliconproject.com.ar/neckkito/
abarcan un inter-alo de -alores positi-os % ne,ati-os que -a desde/hasta:
.ara -alores ne,ati-os: J1$UWUTW?1?FVT=?11?EV %
JF$WFETMTFMVFF1=FU1J?=F
.ara -alores positi-os: F$WFETMTFMVFF1=FU1J?=F %
1$UWUTW?1?FVT=?11?EV
1s lo que en VB conocemos como DKGBL1
Qenemos otro tipo de -alores$ que denominamos &datos
decimales'$ en los que no pro!undi"aremos en este captulo$
debido a sus caractersticas &especiales'. .ara que nos
entendamos$ % por decirlo de al,una manera$ a no ser que
desarrollemos una base de datos para la <#*#$ en la que
necesitemos un !actor de precisi/n decimal altsimo 5:pero
que mu% mu% alto;6$ mejor no utili"ar este tipo de datos.
creo que &tenemos de sobra'.
.ara de!inir estos tipos de datos en *+L tenemos:
TIPO DATO VB SQL
*in,le I1#L / *><HL1 / 9LK#QF / >111*><HL1
Double 9LK#Q / DKGBL1 / 9LK#QV / >111DKGBL1 /
<GLB1I
Decimal DECIMAL
4 si -ol-emos a la inter!a" ,r!ica de #ccess estaramos hablando de:
V#LKI1* D1 >D. D1 IX.L>#
Los -alores de id. de rplica representan un n0mero de identi!icaci/n ,lobal de 1T bites$ %
sir-en para poder establecer un identi!icador 0nico % no repetible cuando$ precisamente$
replicamos una base de datos #ccess.
*i queremos de!inir este tipo de datos con *+L utili"aramos:
>d. de rplica HG>D
DATOS TIPO FECHAHORA
Los datos de tipo !echa/hora no tienen ma%or di!icultad. Iesaltar que pueden almacenar
-alores que -an desde el E1/E1/1EE a ?1/1=/WWWW.
*on los datos que en VB conocemos como D#Q1.
1n *+L tendramos:
U
Vistame en http://siliconproject.com.ar/neckkito/
TIPO DATO VB SQL
Date D#Q1Q>L1 / D#Q1 / Q>L1 / Q>L1*Q#L.
DATOS TIPO MONEDA
1stos tipos de datos tienen$ l/,icamente$ !ormato
monetario$ % permiten manipular -alores que conten,an
entre uno % cuatro decimales. *u ni-el de precisi/n es de
hasta quince d,itos a la i"quierda del separador de
decimales %$ como hemos comentado$ cuatro d,itos a su
derecha.
1l ran,o que abarca -a desde JW==.??U.=E?.TVM.FUU$MVEV hasta W==.??U.=E?.TVM.FUU$MVEU.
1n VB los conocemos como GII1<4.
1n *+L tendramos:
TIPO DATO VB SQL
urrenc% LK<14 / GII1<4
DATOS TIPO AUTONUM!RICO
Los datos de este tipo son en realidad datos numricos$ enmarcados dentro de la cate,ora de
&1nteros'$ % de tipo LK<H. omo ima,ino que todos sabris$ su particularidad reside en que
permite un incremento automtico de -alor en cada re,istro nue-o 5ojo$ que no tiene por que
ser de una unidad en una unidad6.
.or esta peculiaridad son id/neos para utili"arlos como cla-e principal en las tablas.
.ara de!inirlos en *+L utili"amos:
#utonumrico KG<Q1I / #GQK><I1L1<Q
DATOS SNO "DATOS #OOLEANOS$
Los datos s/no almacenan s/lo uno de dos -alores posibles: -erdadero o !also. *i el -alor es
!also se almacena en -alor E$ mientras que si es -erdadero se almacena el -alor J1 5ojo$ esto
en #ccess. Na% otros ,estores de bases de datos que pueden tomar el -alor 16.
*on los que en VB conocemos como BKKL1#<
.ara de!inirlos en *+L utili"amos:
Booleano B>Q / LKH>#L / LKH>#L1
DATOS O#JETO OLE
1ste tipo de datos se utili"a para ,uardar datos binarios lar,os. .or ejemplo$ un documento
@ord$ o un libro de 1(cel$ corresponden a esta cate,ora.
Debemos tener en cuenta que su tama)o m(imo -iene determinado por el tama)o m(imo
de archi-o que admite #ccess$ que como %a sabemos es de =HB 5para ser ms e(actos
=$1FHB6.
V
Vistame en http://siliconproject.com.ar/neckkito/
<o ha% una equi-alencia e(acta en VB para un objeto KL1. *i tu-iramos que almacenarlo
utili"aramos un tipo V#I>#<Q.
4 para de!inirlos en *+L tendramos:
Kbjeto KL1 >L#H1 / LK<HB><#I4 / H1<1I#L /
KL1KBY1Q
DATOS #INARIOS
Los he dejado para lo 0ltimo porque este tipo de datos no se
puede de!inir desde la inter!a" de #ccess 5no tenemos la opci/n al
crear la tabla6. 24 qu es un dato binario3
Gn dato binario no es ms que cualquier tipo de dato que se muestra en su !ormato nati-o$ sin
su!rir nin,una trans!ormaci/n por parte de #ccess. 1n pocas palabras$ lo que se escribe es lo
que se muestra.
Na% que decir que los -alores binarios son datos de lon,itud fija 5echad un -ista"o al apartado
de los datos de te(to si no nos acordamos de qu si,ni!ica &lon,itud !ija'6. ierto es que se
pueden almacenar datos binarios de lon,itud -ariable$ pero necesitaramos utili"ar #DK para
poder manipular este tipo de datos 5no entraremos en esto$ de todas maneras6.
.ara representar estos datos en *+L tenemos:
Binarios B><#I4
CUADRO RESUMEN
Despus de esta &disertaci/n sobre tipos de datos' probablemente ten,amos la cabe"a ms
que hinchada... Ks pon,o pues aqu un cuadro resumen con todo lo que acabamos de
comentar:
TIPO DE DATO (segn Access) SQL
Qe(to R Lon,itud !ija 5no disponible en la interfaz
grfica de Access6
N#I
Qe(to R Lon,itud -ariable 5String en VBA6 #L.N#<GL1I> / *QI><H / Q1SQ / Q1SQ 5<6 /
V#IN#I
Qe(to J Lemo LK<HQ1SQ / LK<HN#I / L1LK / <KQ1
<umrico B%te 5Bte en VBA6 B4Q1 / ><Q1H1I1
<umrico entero 5Integer en VBA6 *L#LL><Q / *NKIQ / ><Q1H1I=
<0merico entero lar,o 5Long en VBA6 ><Q1H1I / LK<H / ><Q / ><Q1H1IF
<umrico simple 5Single en VBA6 I1#L / *><HL1 / 9LK#QF / >111*><HL1
<umrico doble 5Do!ble en VBA6 9LK#Q / DKGBL1 / 9LK#QV / >111DKGBL1 /
<GLB1I
<umrico >d. de rplica HG>D
<umrico decimal D1>L#L
9echa/Nora 5Date en VBA6 D#Q1Q>L1 / D#Q1 / Q>L1 / Q>L1*Q#L.
Loneda 5C!rrenc en VBA6 LK<14 / GII1<4
#utonumrico KG<Q1I / #GQK><I1L1<Q
W
Vistame en http://siliconproject.com.ar/neckkito/
*/<o 5Boolean en VBA6 B>Q / LKH>#L / LKH>#L1
Kbjeto KL1 >L#H1 / LK<HB><#I4 / H1<1I#L /
KL1KBY1Q
Binarios 5no disponible en la interfaz grfica de Access6 B><#I4
ALGUNOS COMPONENTES DE SQL
Vamos a -er al,unos componentes que con!orman el len,uaje *+L simplemente para &sentar
bases terminol/,icas'. Las iremos desarrollando a lo lar,o del curso.
COMANDOS
*i partimos de la base que una instrucci/n la de!inimos como una e(presi/n de consulta *+L
,enerada por un comando % sus ar,umentos o parmetros podremos decir que un comando es
aquella instrucci/n que se puede ejecutar directamente en una consulta *+L.
1n el len,uaje *+L podemos encontrar dos tipos de comandos:
Los pertenecientes al len,uaje de definici"n de datos 5DDL6
Los pertenecientes al len,uaje de manip!laci"n de datos 5DLL6
Los primeros permiten crear % de!inir tablas$ campos$ ndices$ procedimientos almacenados$
-istas$ usuarios % ,rupos de trabajo.
De las anteriores acciones ha% al,unas que son e(clusi-as de trabajo en #DK. 1n este curso no
se -an a -er estos comandos.
Los se,undos permiten crear consultas para ordenar$ !iltrar % e(traer datos de la BD.
.or ejemplo$ entre los primeros tendramos:
I1#Q1 Q#BL1
#LQ1I Q#BL1
I1#Q1 ><D1S
DIK. Q#BL1
DIK. ><D1S
1ntre los se,undos tendramos:
*1L1Q
G.D#Q1
1E
Vistame en http://siliconproject.com.ar/neckkito/
><*1IQ
D1L1Q1
CL%USULAS
.odramos decir que las clusulas son condiciones que
permiten la modi!icaci/n la de!inici/n de los datos que
-amos a manipular o seleccionar.
.or ejemplo$ son clusulas:
#*
9IKL
@N1I1
HIKG. B4
K<*QI#><Q
N#V><H
KID1I B4
.IK1DGI1
PREDICADOS
omo predicados podramos entender aquellas e(presiones que$ de al,una manera$ modi!ican
la acci/n de los comandos en cuanto al resultado que se -a obtener.
*eran predicados:
#LL
D>*Q><Q
D>*Q><QIK@
QK.
G<>K<
OPERACIONES
Lediante las operaciones de!inimos al,una &operaci/n espec!ica' 5-al,a la redundancia6 que
condiciona la ejecuci/n de la *+L %$ por e(tensi/n$ los resultados mostrados.
*eran operaciones:
G<>K<
><<1I YK><
L19Q YK><
I>HNQ YK><
11
Vistame en http://siliconproject.com.ar/neckkito/
OPERADORES
Dentro de los operadores podemos encontrar dos tipos:
Kperadores l/,icos
Kperadores matemticos % de comparaci/n
Dentro de los operadores l/,icos tendramos:
#<D
KI
SKI
<KQ
4 dentro de los operadores matemticos % de comparaci/n tendramos:
A Z
AP ZP
P AZ
B1Q@11<...#<D ><
L>[1
FUNCIONES AGREGADAS
Las !unciones a,re,adas permiten manipular ,rupos de re,istros con la !inalidad de retornar
un s/lo -alor$ que ser el que de!ina la propia !unci/n.
Dentro de las !unciones a,re,adas podemos encontrar:
KG<Q De-uel-e el conteo de re,istros
#VH De-uel-e el promedio
*GL De-uel-e la suma
V#I De-uel-e la -arian"a de una m!estra de poblaci"n
V#I. De-uel-e la -arian"a de una poblaci"n
*QD1V De-uel-e la des-iaci/n estndar de una m!estra de
poblaci"n
*QD1V. De-uel-e la des-iaci/n estndar de una poblaci"n
9>I*Q De-uel-e el -alor del primer re,istro
L#*Q De-uel-e el -alor del 0ltimo re,istro
L#S De-uel-e el -alor m(imo
L>< De-uel-e el -alor mnimo
1=
Vistame en http://siliconproject.com.ar/neckkito/
PREPARACIN & EXPLICACIONES 'ARIAS PARA SEGUIR EL
RESTO DEL CURSO
Vamos a desarrollar el curso sobre un ejemplo de una base
de datos
M
$ para poder -er aplicaciones prcticas de las
sentencias *+L.
Los ejemplos de sentencias *+L los -amos a -er
incardinados dentro de c/di,o VB#$ de manera que$ en la
ma%ora de casos$ no tendremos una *+L &directa'$ sino
que la pasaremos por una -ariable$ a los simples e!ectos de
poder -er con ma%or claridad las di!erentes estructuras de
las *+L.
Las consultas de acci/n no tienen ma%or problema$ en este aspecto$ porque las -amos a
ejecutar % -amos a poder -er los resultados de manera directa o indirecta7 para las consultas
de selecci/n$ sin embar,o$ no podemos apreciar directamente sus resultados. .ara poder
-erlos tendremos que con-ertir nuestra *+L en un objetoJconsulta de #ccess$ % ello nos
obli,ar a se,uir la si,uiente estructura en los c/di,os:
Borramos el objetoJconsulta por si e(istiera 5si %a e(iste obtendramos un error de
c/di,o6
reamos la *+L
La con-ertimos en un objetoJconsulta$ para poder -er los resultados.
.ara poder reali"ar lo anterior utili"aremos un m/dulo$ que nos ejecutar el primer % el tercer
paso$ dejando el se,undo en el c/di,o del bot/n que pro,ramemos 5las pro,ramaremos a
tra-s de clicks de bot/n porque considero que es un proceso mu% sencillo6$ lo cual nos
permitir centrarnos en esta se,unda parte$ esto es$ en la *+L propiamente dicha.
.ara hacer lo anterior -amos a se,uir estos pasos:
1.J reamos una BD en blanco$ % sacamos el editor de VB 5#LQ\9116
=.J >nsertamos un m/dulo 5VB1 men0 >nsertar L/dulo6
?.J Huardamos ese m/dulo con el nombre de mdl.rocesos
F.J 1n ese m/dulo escribimos los si,uientes procedimientos
T
:
]
.ublic *ub eliminaonsulta5nomonsulta #s *trin,6
Dim qr% #s Kbject
9or 1ach qr% >n urrentData.#ll+ueries
>! qr%.<ame P nomonsulta Qhen
Domd.DeleteKbject ac+uer%$ qr%.<ame
1(it 9or
1nd >!
<e(t
1nd *ub
]
.ublic *ub creaonsulta5nomonsulta #s *trin,$ la*ql #s *trin,6
M 1sta BD inicial os la podis bajar aqu.
T *i utili"amos #ccess =EE? deberemos ase,urarnos de que tenemos re,istrada la librera &Licroso!t D#K ?.T Kbject Librar%' 5VB1
Len0 Nerramientas Ie!erencias...6
1?
Vistame en http://siliconproject.com.ar/neckkito/
Dim qr%De! #s D#K.+uer%De!
*et qr%De! P urrentDb.reate+uer%De!5nomonsulta6
qr%De!.*+L P la*ql
1nd *ub
]
Vamos a se,uir con nuestra BD. Vamos a crearnos una
tabla donde introduciremos los datos personales de los
trabajadores. # esta tabla la llamaremos QQrab.ersonal. Le
daremos la si,uiente estructura:
# continuaci/n nos crearemos una se,unda tabla$ con los datos laborales de los trabajadores$
% la llamaremos QQrabLaboral$ % tendr la si,uiente estructura:
Debemos tener en cuenta que el campo B>dQrabD lo hemos de!inido a tra-s de un asistente
para b0squedas$ que nos ha buscado$ en la tabla QQrab.ersonal$ sus tres primeros campos en
este orden: B>dD$ B#pellQrabD % B<omQrabD7 hemos ordenado por apellidos ascendente$
ocultando la cla-e principal.
1s decir$ que aunque este campo nos muestre apellidosJnombre el -alor que almacena es el
c/di,o del trabajador.
1l mismo proceso se ha se,uido para el campo BDependeDeD
Vamos a crearnos una tabla con los datos de los clientes de la empresa$ que llamaremos
Qlientes. Qendr la si,uiente estructura:
1F
Vistame en http://siliconproject.com.ar/neckkito/
#hora -amos a crear una tabla de -entas donde re!lejaremos las
-entas reali"adas a los clientes. La llamaremos QVentas$ % tendr
la si,uiente estructura:
Qeniendo en cuenta que para el campo B>dliVtaD hemos utili"ado el asistente para b0squedas$
que ha buscado en la tabla Qlientes el nombre del cliente. 1s decir$ nos muestra el nombre del
cliente$ pero almacena su c/di,o.
*i hemos reali"ado correctamente los pasos anteriores la -entana de relaciones nos debera
haber quedado as:
Vamos a crearnos se,uidamente una tabla au(iliar$ que llamaremos QLeses$ que tendr la
si,uiente estructura 5no -amos a poner nin,0n campo como cla-e principal6:
1M
Vistame en http://siliconproject.com.ar/neckkito/
9inalmente crearemos una tabla mu% simple$ cu%a idea es que nos recoja el usuario que est
operando en ese momento en la BD. 1sta BD tendr siempre un solo re,istro 5el nombre del
usuario acti-o6$ que llamaremos QGsuario#ct$ % la construiremos con esta simple estructura:
4a tenemos las estructuras de las tablas preparadas. #hora s/lo ha% que introducir datos.
1-identemente podis dar de alta los datos que queris$ pero como %o -o% a mostrar los
resultados en base a la in!ormaci/n que ha%a en estas tablas o bien os bajis la BD de ejemplo
% ane(is los datos a -uestras tablas o bien operis directamente con la BD de ejemplo...
omo siempre$ a ,usto del consumidor.
4o os indico los re,istros que he dado de alta:
.ara la tabla Qlientes:
.ara la tabla QLeses
.ara la tabla QQrab.ersonal
1T
Vistame en http://siliconproject.com.ar/neckkito/
.ara la tabla QQrabLaboral
.ara la tabla QVentas
4 para la tabla QGsuario#ct podemos escribir el nombre que queramos. L/,icamente % he
1U
Vistame en http://siliconproject.com.ar/neckkito/
escrito:
PARA FINALI(AR ESTE CAPTULO
reo que este captulo ha sido interesante: hemos co,ido dolor de cabe"a al leer tanta teora %
hemos co,ido dolor de dedos al tener que prepararnos tantas tablas con datos. omo re"a el
dicho: &.ara lucir ha% que su!rir'... je$ je...
*inceramente creo que era necesario reali"ar este es!uer"o inicial. 1n los pr/(imos captulos
-eremos c/mo sacar rendimiento a tantos &des-elos'.
Gn saludo$ %...
:*uerte;
1V
Vistame en http://siliconproject.com.ar/neckkito/

You might also like