Fuente: Elaborado por: LIC. MARIANO TRIGILA Email: marianotrigila@gmail.com Feca: !"#"$#%""! &er'i(n: ) ........................................................... Actualizaciones Fuente: Feca:"*#"$#%")% Reali+ada por: LIC. MARIANO TRIGILA Email:marianotrigila@gmail.com &er'i(n: ).) Comentario' 'obre modi,icacione': -e re.i'( documento. ........................................................... Actualizaciones Fuente: Feca:!"#"$#%")! Reali+ada por:LIC. MARIANO TRIGILA Email:marianotrigila@gmail.com &er'i(n:).% Comentario' 'obre modi,icacione': -e re.i'( documento / 'e modi,icaron a'pecto' e't0tico' ......................................................... Si usted desea colaborar con la actualizacin de este manual por favor enviar un mail a: marianotrigila@gmail.com Manual SQL 2 De 33 Lic. Mariano Trigila INDICE 1 Introduccin 1.1 Componentes del SQL 1.2 Comandos 1.3 Clusulas 1.4 Operadores Licos 1.! Operadores de Comparacin 1." #unciones de $reado 2 Consultas de Seleccin 2.1 Consultas %sicas 2.2 Ordenar los &eistros 2.3 Consultas con 'redicado 2.4 $lias 2.! &ecuperar in(ormacin de una )ase de Datos E*terna 3 Criterios de Seleccin 3.1 La clusula +,E&E 3.2 Operadores Licos 3.3 Inter-alos de .alores 3.4 El Operador Li/e 3.! El Operador In 4 $rupamiento de &eistros 0 #unciones $readas 4.1 Las clusulas 1&O2' %3 0 ,$.IN1 4.2 $.1 45edia $ritm6tica7 4.3 Count 4Contar &eistros7 4.4 5a* 0 5in 4.alores 5*imos 0 58nimos7 4.! StDe- 0 StDe-' 4Des-iacin Estndar7 4." Sum 4Sumar .alores7 4.9 .ar 0 .ar' 4.arian:a7 ! Consultas de $ctuali:acin !.1 Consultas de Eliminacin !.2 Consultas de Datos $;adidos !.3 'ara insertar un <nico &eistro !.4 'ara insertar &eistros de otra =a)la !.! Consultas de $ctuali:acin " =ipos de Datos en m0S>l 9 Su)Consultas ? Consultas de 2nin Internas @ Consultas de 2nin E*ternas Manual SQL 3 De 33 Lic. Mariano Trigila 1A Estructuras de las =a)las 1A.1 Creacin de =a)las 1A.2 La clusula CONS=&$IN= 1A.3 Creacin de Indices 1A.4 Eliminar 0 $;adir Campos e Indices 11 La Clusula 'rocedure 12 $ne*os 'ara ampliar el conocimiento ir aB CttpBDDde-.m0s>l.comDdocDre(manD!.ADesDinde*.Ctml CttpBDDEEE.E3scCools.comDs>lDde(ault.asp CttpBDDEEE.m0s>ltutorial.orD Manual SQL 4 De 33 Lic. Mariano Trigila 1 INTRODUCCION El lenguaje de consulta estructurado o SQL (por sus siglas en ingls structured quer language! es un lenguaje declarati"o de acceso a #ases de datos relacionales que per$ite especi%icar di"ersos tipos de operaciones en ellas. 1.1 Componentes del SQL El lenguaje SQL est& co$puesto por co$andos' cl&usulas' operadores %unciones de agregado. Estos ele$entos se co$#inan en las instrucciones para crear' actuali(ar $anipular las #ases de datos. 1.2 Comandos E)isten dos tipos de co$andos SQL* Los DLL que per$iten crear de%inir nue"as #ases de datos' ca$pos ' +ndices' etc. Los DML que per$iten generar consultas para ordenar' %iltrar e)traer datos de la #ase de datos. Comandos DLL
Comando Descripcin ,-E.TE /tili(ado para crear nue"as ta#las' ca$pos e +ndices D-01 E$pleado para eli$inar ta#las e +ndices .LTE- /tili(ado para $odi%icar las ta#las agregando ca$pos o ca$#iando la de%inici2n de los ca$pos. Comandos DML
Comando Descripcin SELE,T /tili(ado para consultar registros de la #ase de datos que satis%agan un criterio deter$inado 34SE-T /tili(ado para cargar lotes de datos en la #ase de datos en una 5nica operaci2n. /1D.TE /tili(ado para $odi%icar los "alores de los ca$pos registros especi%icados DELETE /tili(ado para eli$inar registros de una ta#la de una #ase de datos 1.3 Clusulas Las cl&usulas son condiciones de $odi%icaci2n utili(adas para de%inir los datos que desea seleccionar o $anipular. Manual SQL 6 De 33 Lic. Mariano Trigila Clsla Descripcin 7-0M /tili(ada para especi%icar la ta#la de la cual se "an a seleccionar los registros 89E-E /tili(ada para especi%icar las condiciones que de#en reunir los registros que se "an a seleccionar :-0/1 ;< /tili(ada para separar los registros seleccionados en grupos espec+%icos 9.=34: /tili(ada para e)presar la condici2n que de#e satis%acer cada grupo 0-DE- ;< /tili(ada para ordenar los registros seleccionados de acuerdo con un orden espec+%ico 1.! Operadores L"icos Operador Uso .4D Es el >> l2gico. E"al5a dos condiciones de"uel"e un "alor de "erdad s2lo si a$#as son ciertas. 0- Es el >o> l2gico. E"al5a dos condiciones de"uel"e un "alor de "erdad si alguna de las dos es cierta. 40T 4egaci2n l2gica. De"uel"e el "alor contrario de la e)presi2n. 1.# Operadores de comparacin Operador Uso ? Menor que @ Maor que ?@ Distinto de ?A Menor 2 3gual que @A Maor 2 3gual que A 3gual que ;ET8EE4 /tili(ado para especi%icar un inter"alo de "alores. L3BE /tili(ado en la co$paraci2n de un $odelo 3n /tili(ado para especi%icar registros de una #ase de datos 1.$ %nciones de A"re"ado Las %unciones de agregado se usan dentro de una cl&usula SELE,T en grupos de registros para de"ol"er un 5nico "alor que se aplica a un grupo de registros. %ncin Descripcin .=: /tili(ada para calcular el pro$edio de los "alores de un ca$po deter$inado ,0/4T /tili(ada para de"ol"er el n5$ero de registros de la selecci2n S/M /tili(ada para de"ol"er la su$a de todos los "alores de un ca$po deter$inado M.C /tili(ada para de"ol"er el "alor $&s alto de un ca$po especi%icado M34 /tili(ada para de"ol"er el "alor $&s #ajo de un ca$po especi%icado Manual SQL D De 33 Lic. Mariano Trigila & CONSULTAS D' S'L'CCION Las consultas de selecci2n se utili(an para indicar al $otor de datos que de"uel"a in%or$aci2n de las #ases de datos' esta in%or$aci2n es de"uelta en %or$a de conjunto de registros. &.1 Consl(as )sicas La sinta)is #&sica de una consulta de selecci2n es la siguiente* SELE,T ,a$pos 7-0M Ta#laE En donde ,a$pos es la lista de ca$pos que se deseen recuperar Ta#la es el origen de los $is$os' por eje$plo* SELE,T 4o$#re' Tele%ono 7-0M ,lientesE Esta consulta de"uel"e los registros con el ca$po 4o$#re Tele%ono de la ta#la ,lientes. &.& Ordenar re"is(ros .dicional$ente se puede especi%icar el orden en que se desean recuperar los registros de las ta#las $ediante la cl&usula 0-DE- ;< Lista de Campos. En donde Lista de campos representa los ca$pos a ordenar. Eje$plo* SELE,T ,odigo1ostal' 4o$#re' Tele%ono 7-0M ,lientes 0-DE- ;< 4o$#reE Esta consulta de"uel"e los registros con los ca$pos ,odigo1ostal' 4o$#re' Tele%ono de la ta#la ,lientes ordenados por el ca$po 4o$#re. Se pueden ordenar los registros por $as de un ca$po' co$o por eje$plo* SELE,T ,odigo1ostal' 4o$#re' Tele%ono 7-0M ,lientes 0-DE- ;< ,odigo1ostal' 4o$#reE 3ncluso se puede especi%icar el orden de los registros* ascendente $ediante la cl&usula (.S,' se to$a este "alor por de%ecto! 2 descendente (DES,! SELE,T ,odigo1ostal' 4o$#re' Tele%ono 7-0M ,lientes 0-DE- ;< ,odigo1ostal DES,' 4o$#re .S,E &.3 Consl(as con predicado El predicado se inclue entre la cl&usula el pri$er no$#re del ca$po a recuperar' los posi#les predicados son* *redicado Descripcin .LL De"uel"e todos los ca$pos de la ta#la T01 De"uel"e un deter$inado n5$ero de registros de la ta#la D3ST34,T 0$ite los registros cuos ca$pos seleccionados coincidan total$ente D3ST34,T-08 0$ite los registros duplicados #as&ndose en la totalidad del registro no s2lo en los ca$pos seleccionados. Manual SQL F De 33 Lic. Mariano Trigila .LL Si no se inclue ninguno de los predicados se asu$e .LL. El Motor de #ase de datos selecciona todos los registros que cu$plen las condiciones de la instrucci2n SQL. 4o se con"eniente a#usar de este predicado a que o#liga$os al $otor de la #ase de datos a anali(ar la estructura de la ta#la para a"eriguar los ca$pos que contiene' es $ucGo $&s r&pido indicar el listado de ca$pos deseados. SELE,T .LL 7-0M E$pleadosE SELE,T H 7-0M E$pleadosE T01 De"uel"e un cierto n5$ero de registros que entran entre al principio o al %inal de un rango especi%icado por una cl&usula 0-DE- ;<. Suponga$os que quere$os recuperar los no$#res de los 26 pri$eros estudiantes del curso 1II4* SELE,T T01 26 4o$#re' .pellido 7-0M Estudiantes 0-DE- ;< 4ota DES,E Si no se inclue la cl&usula 0-DE- ;<' la consulta de"ol"er& un conjunto ar#itrario de 26 registros de la ta#la Estudiantes .El predicado T01 no elige entre "alores iguales. En el eje$plo anterior' si la nota $edia n5$ero 26 la 2D son iguales' la consulta de"ol"er& 2D registros. Se puede utili(ar la pala#ra reser"ada 1E-,E4T para de"ol"er un cierto porcentaje de registros que caen al principio o al %inal de un rango especi%icado por la cl&usula 0-DE- ;<. Suponga$os que en lugar de los 26 pri$eros estudiantes desea$os el 1J por ciento del curso* SELE,T T01 1J 1E-,E4T 4o$#re' .pellido 7-0M Estudiantes 0-DE- ;< 4ota DES,E El "alor que "a a continuaci2n de T01 de#e ser un 3nteger sin signo. T01 no a%ecta a la posi#le actuali(aci2n de la consulta.
D3ST34,T 0$ite los registros que contienen datos duplicados en los ca$pos seleccionados. 1ara que los "alores de cada ca$po listado en la instrucci2n SELE,T se incluan en la consulta de#en ser 5nicos. 1or eje$plo' "arios e$pleados listados en la ta#la E$pleados pueden tener el $is$o apellido. Si dos registros contienen L2pe( en el ca$po .pellido' la siguiente instrucci2n SQL de"uel"e un 5nico registro* SELE,T D3ST34,T .pellido 7-0M E$pleadosE ,on otras pala#ras el predicado D3ST34,T de"uel"e aquellos registros cuos ca$pos indicados en la cl&usula SELE,T (en este caso apellido! posean un contenido di%erente. D3ST34,T-08 De"uel"e los registros di%erentes de una ta#la. . di%erencia del predicado anterior que s2lo se %ija#a en el contenido de los ca$pos seleccionados' ste lo Gace en el contenido del registro co$pleto independiente$ente de los ca$po indicados en la cl&usula SELE,T. Manual SQL K De 33 Lic. Mariano Trigila SELE,T D3ST34,T-08 .pellido 7-0M E$pleadosE Si la ta#la e$pleados contiene dos registros* .ntonio L2pe( Marta L2pe( el eje$plo del predicado D3ST34,T de"uel"e un 5nico registro con el "alor L2pe( en el ca$po .pellido a que #usca no duplicados en dicGo ca$po. Este 5lti$o eje$plo con D3ST34,T-08 de"uel"e dos registros con el "alor L2pe( en el apellido a que se #uscan no duplicados en el registro co$pleto. &.! Alias En deter$inadas circunstancias es necesario asignar un no$#re a alguna colu$na deter$inada de un conjunto de"uelto' otras "eces por si$ple capricGo o por otras circunstancias. 1ara resol"erlo tene$os la pala#ra reser"ada .S que se encarga de asignar el no$#re que desea$os a la colu$na deseada. To$ado co$o re%erencia el eje$plo anterior pode$os Gacer que la colu$na de"uelta por la consulta' en lugar de lla$arse apellido (igual que el ca$po de"uelto! se lla$e E$pleado. En este caso proceder+a$os de la siguiente %or$a* SELE,T D3ST34,T-08 .pellido .S E$pleado 7-0M E$pleadosE
Manual SQL I De 33 Lic. Mariano Trigila 3 CRIT'RIOS D' S'L'CCION En el cap+tulo anterior se "io la %or$a de recuperar los registros de las ta#las' las %or$as e$pleadas de"ol"+an todos los registros de la $encionada ta#la. . lo largo de este cap+tulo se estudiar&n las posi#ilidades de %iltrar los registros con el %in de recuperar sola$ente aquellos que cu$plan una condiciones preesta#lecidas.
.ntes de co$en(ar el desarrollo de este cap+tulo Ga que recalcar un detalle de "ital i$portancia' es que cada "e( que se desee esta#lecer una condici2n re%erida a un ca$po de te)to la condici2n de #5squeda de#e ir encerrada entre co$illas si$ples. 3.1 La clsla +,'R' La cl&usula 89E-E puede usarse para deter$inar qu registros de las ta#las enu$eradas en la cl&usula 7-0M aparecer&n en los resultados de la instrucci2n SELE,T. En pala#ras si$ples' %iltra registros de acuerdo a una condici2n dada. SELE,T .pellido' Salario 7-0M E$pleados 89E-E Salario @ 21JJJE SELE,T 3D1roducto' cantidad 7-0M 1roductos 89E-E cantidad ?A 6E SELE,T H 7-0M 1edidos 89E-E 7ecGaLEn"io A M6N1JNJ3ME SELE,T .pellido' 4o$#re 7-0M E$pleados 89E-E .pellido A M-eesME SELE,T .pellido' 4o$#re 7-0M E$pleados 89E-E .pellido LiOe MSPME
SELE,T .pellido' Salario 7-0M E$pleados 89E-E Salario ;etQeen 2JJ .nd 3JJE SELE,T .pellido' Salario 7-0M E$pleados 89E-E .pellido ;etQeen MLonM .nd MTolME SELE,T 3dL1edido' 7ecGaL1edido 7-0M 1edidos 89E-E 7ecGaL1edido ;etQeen M1N1NI4M .nd M3JNDNJ4ME SELE,T .pellido' 4o$#re' ,iudad 7-0M E$pleados 89E-E ,iudad 3n (Mcordo#a' Msanta %eM' McorrientesM!E 3.& Operadores L"icos Los operadores l2gicos soportados por SQL son* .4D' 0-' C0-' Eq"' 3$p' 3s 4ot. . e)cepci2n de los dos 5lti$os todos poseen la siguiente sinta)is* -e.presin1/operador-e.presin&/ En donde ?e)presi2n1@ ?e)presi2n2@ son las condiciones a e"aluar' el resultado de la operaci2n "ar+a en %unci2n del operador l2gico. La ta#la adjunta $uestra los di%erentes posi#les resultados* Manual SQL 1J De 33 Lic. Mariano Trigila -e.presin1/ Operador -e.presin&/ Resl(ado =erdad .4D 7also 7also =erdad .4D =erdad =erdad 7also .4D =erdad 7also 7also .4D 7also 7also =erdad 0- 7also =erdad =erdad 0- =erdad =erdad 7also 0- =erdad =erdad 7also 0- 7also 7also =erdad C0- =erdad 7also =erdad C0- 7also =erdad 7also C0- =erdad =erdad 7also C0- 7also 7also =erdad Eq" =erdad =erdad =erdad Eq" 7also 7also 7also Eq" =erdad 7also 7also Eq" 7also =erdad =erdad 3$p =erdad =erdad =erdad 3$p 7also 7also =erdad 3$p 4ull 4ull 7also 3$p =erdad =erdad 7also 3$p 7also =erdad 7also 3$p 4ull =erdad 4ull 3$p =erdad =erdad 4ull 3$p 7also 4ull 4ull 3$p 4ull 4ull Si a cualquiera de las anteriores condiciones le antepone$os el operador 40T el resultado de la operaci2n ser& e)acta$ente el contrario. El 5lti$o operador deno$inado 3s se e$plea para co$parar dos "aria#les de tipo o#jeto -O01e(o1/ Is -O01e(o&/. Este operador de"uel"e "erdad si los dos o#jetos son iguales. 3.3 In(er2alos de 2alores 1ara indicar que desea$os recuperar los registros seg5n el inter"alo de "alores de un ca$po e$pleare$os el operador ;etQeen cua sinta)is es* ca$po R4otS ;etQeen "alor1 .nd "alor2 (la condici2n 4ot es opcional! En este caso la consulta de"ol"er+a los registros que contengan en >ca$po> un "alor incluido en el inter"alo "alor1' "alor2 (a$#os inclusi"e!. Si antepone$os la condici2n 4ot de"ol"er& aquellos "alores no incluidos en el inter"alo. SELE,T H 7-0M 1edidos 89E-E ,od1ostal ;etQeen 2KJJ .nd 2KIIE (De"uel"e los pedidos reali(ados donde ,od1ostal este en el rango indicado! Manual SQL 11 De 33 Lic. Mariano Trigila 3.! 'l Operador Li3e Se utili(a para co$parar una e)presi2n de cadena con un $odelo en una e)presi2n SQL. Su sinta)is es* ?e)presi2n@ LiOe ?$odelo@ En donde e)presi2n es una ca$po contra el que se co$para el $odelo. Se puede utili(ar el operador LiOe para encontrar "alores en los ca$pos que coincidan con el $odelo especi%icado. 1or $odelo puede especi%icar un "alor co$pleto (.na Mar+a!' o se pueden utili(ar caracteres co$od+n co$o los reconocidos por el siste$a operati"o. :eneral$ente el $odelo puede contener una e)presi2n %ija porej *Mana $ariaM o puede contener e)presiones con caracteres co$odines las cuales esta ulti$as se las conoce co$o -e.presiones re"lares/ donde cada co$od+n o ele$ento tiene un signi%icado especi%ico. Se puede encontrar $ucGa in%or$aci2n en internet respecto a e.presiones re"lares a que se utili(a en todos los &$#itos de progra$aci2n espec+%ica$ente para "alidar e)presiones. En la ta#la siguiente se $uestra a los co$odines* Comodin Descripcin F -epresenta cero o $&s caracteres. Ej1* LIKE '%es%' ej2: LIKE 'ber %'; L -epresenta un slo carcter. EG1B LIKE '_erlin' ej2: LIKE 'L_n_on' RLista de caracteresS Set o -ango de caracteres que se aplicar& para la #5squeda de coincidencia. Ej* LIKE '[a-c]%' RTLista de caracteresS T representa negaci2n' por lo tanto' se aplica a la #usqueda la no coincidencia del patr2n Ej: LIKE '[!bsp]%' 3.# 'l Operador IN Este operador de"uel"e aquellos registros cuo ca$po indicado coincide con alguno de los en una lista. Su sinta)is es* -e.presin/ R4otS 3n 42alor15 2alor&5 . . .6 SELE,T H 7-0M 1edidos 89E-E 1ro"incia 3n (Mcordo#a' Msanta %eM' McorrientesM!E Manual SQL 12 De 33 Lic. Mariano Trigila ! A"rpamien(o de Re"is(ros 4.1 Las cl&usulas :-0/1 ;< 9.=34: ,o$#ina los registros con "alores idnticos en la lista de ca$pos especi%icados' en un 5nico registro. 1ara cada registro se crea un "alor su$ario si se inclue una %unci2n SQL agregada' co$o por eje$plo Su$ o ,ount' en la instrucci2n SELE,T. Su sinta)is es* SELE,T ca$pos 7-0M ta#la 89E-E criterio :-0/1 ;< ca$pos del grupo :-0/1 ;< es opcional. Los "alores de resu$en se o$iten si no e)iste una %unci2n SQL agregada en la instrucci2n SELE,T. Los "alores 4ull en los ca$pos :-0/1 ;< se agrupan no se o$iten. 4o o#stante' los "alores 4ull no se e"al5an en ninguna de las %unciones SQL agregadas. Se (ili7a la clsla +,'R' para e.clir a8ellas 9ilas 8e no desea a"rpar5 : la clsla ,A;IN< para 9il(rar los re"is(ros na 2e7 a"rpados. 1or lo general' un ca$po de la lista de ca$pos :-0/1 ;< puede re%erirse a cualquier ca$po de las ta#las que aparecen en la cl&usula 7-0M' incluso si el ca$po no esta incluido en la instrucci2n SELE,T' sie$pre cuando la instrucci2n SELE,T inclua al $enos una %unci2n SQL agregada. Todos los ca$pos de la lista de ca$pos de SELE,T de#en o #ien incluirse en la cl&usula :-0/1 ;< o co$o argu$entos de una %unci2n SQL agregada. SELE,T 3dLcliente' Su$(StocO! 7-0M 1roductos :-0/1 ;< 3dLclienteE /na "e( que :-0/1 ;< Ga co$#inado los registros' 9.=34: $uestra cualquier registro agrupado por la cl&usula :-0/1 ;< que satis%aga las condiciones de la cl&usula 9.=34:. 9.=34: es si$ilar a 89E-E' deter$ina qu registros se seleccionan. /na "e( que los registros se Gan agrupado utili(ando :-0/1 ;<' 9.=34: deter$ina cuales de ellos se "an a $ostrar. SELE,T 3dLcliente Su$(StocO! 7-0M 1roductos :-0/1 ;< 3dL7a$ilia 9.=34: Su$(StocO! @ 1JJ .4D 4o$#re1roducto LiOe ;0SHE 4.2 .=: ,alcula la $edia arit$tica de un conjunto de "alores contenidos en un ca$po especi%icado de una consulta. Su sinta)is es la siguiente ."g?e)presion@ En donde ?e)presion@ representa el ca$po que contiene los datos nm=ricos para los que se desea calcular la $edia o una e)presi2n que reali(a un c&lculo utili(ando los datos de dicGo Manual SQL 13 De 33 Lic. Mariano Trigila ca$po. La $edia calculada por ."g es la $edia arit$tica (la su$a de los "alores di"idido por el n5$ero de "alores!. La %unci2n ."g no inclue ning5n ca$po 4ull en el c&lculo. SELE,T ."g(:astos! .S 1ro$edio 7-0M 1edidos 89E-E :astos @ 1JJE 4.3 ,ount ,alcula el n5$ero de registros de"ueltos por una consulta. Su sinta)is es la siguiente ,ount?e)presion@ En donde ?e)presion@ contiene el no$#re del ca$po que desea contar. Los operandos de ?e)presion@ pueden incluir el no$#re de un ca$po de una ta#la' una constante o una %unci2n (la cual puede ser intr+nseca o de%inida por el usuario pero no otras de las %unciones agregadas de SQL!. 1uede contar cualquier tipo de datos incluso te)to.
.unque ?e)presion@ puede reali(ar un c&lculo so#re un ca$po' ,ount si$ple$ente cuenta el n5$ero de registros sin tener en cuenta qu "alores se al$acenan en los registros. La %unci2n ,ount no cuenta los registros que tienen ca$pos null a $enos que ?e)presion@ sea el car&cter co$od+n asterisco (H!. Si utili(a un asterisco' ,ount calcula el n5$ero total de registros' incluendo aquellos que contienen ca$pos null. ,ount(H! es considera#le$ente $&s r&pida que ,ount(,a$po!. 4o se de#e poner el asterisco entre do#les co$illas (MHM!. SELE,T ,ount(H! .S Total 7-0M 1edidosE Si ?e)presion@ identi%ica a $5ltiples ca$pos' la %unci2n ,ount cuenta un registro s2lo si al $enos uno de los ca$pos no es 4ull. Si todos los ca$pos especi%icados son 4ull' no se cuenta el registro. 9a que separar los no$#res de los ca$pos con a$persand (U!. SELE,T ,ount(7ecGaEn"io U Transporte! .S Total 7-0M 1edidosE 4.4 Ma)' Min De"uel"en el $+ni$o o el $&)i$o de un conjunto de "alores contenidos en un ca$po especi%ico de una consulta. Su sinta)is es* Min?e)presion@ Ma)?e)presion@ En donde ?e)presion@ es el ca$po so#re el que se desea reali(ar el c&lculo. ?e)presion@ pueden incluir el no$#re de un ca$po de una ta#la' una constante o una %unci2n (la cual puede ser intr+nseca o de%inida por el usuario pero no otras de las %unciones agregadas de SQL!. SELE,T Min(:astos! .S ElMin 7-0M 1edidos 89E-E pro"incia A Mcordo#aME SELE,T Ma)(:astos! .S ElMa) 7-0M 1edidos 89E-E pro"incia A Mcordo#aME 4.! StDe-H StDe-' De"uel"e esti$aciones de la des"iaci2n est&ndar para la po#laci2n (el total de los registros de la ta#la! o una $uestra de la po#laci2n representada ($uestra aleatoria! . Su sinta)is es* Manual SQL 14 De 33 Lic. Mariano Trigila StDe"?e)presion@ StDe"1?e)presion@ En donde ?e)presion@ representa el no$#re del ca$po que contiene los datos que desean e"aluarse o una e)presi2n que reali(a un c&lculo utili(ando los datos de dicGos ca$pos. Los operandos de ?e)presion@ pueden incluir el no$#re de un ca$po de una ta#la' una constante o una %unci2n (la cual puede ser intr+nseca o de%inida por el usuario pero no otras de las %unciones agregadas de SQL! StDe"1 e"al5a una po#laci2n' StDe" e"al5a una $uestra de la po#laci2n. Si la consulta contiene $enos de dos registros (o ning5n registro para StDe"1!' estas %unciones de"uel"en un "alor 4ull (el cual indica que la des"iaci2n est&ndar no puede calcularse!. SELE,T StDe"(:astos! .S Des"iacion 7-0M 1edidos 89E-E pro"incia A Mcordo#aME SELE,T StDe"1(:astos! .S Des"iacion 7-0M 1edidos 89E-E pro"incia A Mcordo#aME 4." Sum De"uel"e la su$a del conjunto de "alores contenido en un ca$po especi%ico de una consulta. Su sinta)is es* Su$?e)presion@ En donde ?e)presion@ representa el no$#re del ca$po que contiene los datos que desean su$arse o una ?e)presion@ que reali(a un c&lculo utili(ando los datos de dicGos ca$pos. Los operandos de ?e)presion@ pueden incluir el no$#re de un ca$po de una ta#la' una constante o una %unci2n (la cual puede ser intr+nseca o de%inida por el usuario pero no otras de las %unciones agregadas de SQL!. SELE,T Su$(1recio/nidad H ,antidad! .S Total 7-0M Detalle1edidoE 4.9 .arH .ar' De"uel"e una esti$aci2n de la "arian(a de una po#laci2n (so#re el total de los registros! o una $uestra de la po#laci2n ($uestra aleatoria de registros! so#re los "alores de un ca$po. Su sinta)is es* =ar?e)presion@ =ar1?e)presion@ =ar1 e"al5a una po#laci2n' =ar e"al5a una $uestra de la po#laci2n. ?e)presion@ el no$#re del ca$po que contiene los datos que desean e"aluarse o una e)presi2n que reali(a un c&lculo utili(ando los datos de dicGos ca$pos. Los operandos de ?e)presion@ pueden incluir el no$#re de un ca$po de una ta#la' una constante o una %unci2n (la cual puede ser intr+nseca o de%inida por el usuario pero no otras de las %unciones agregadas de SQL! Si la consulta contiene $enos de dos registros' =ar =ar1 de"uel"en 4ull (esto indica que la "arian(a no puede calcularse!. 1uede utili(ar =ar =ar1 en una e)presi2n de consulta o en una 3nstrucci2n SQL. Manual SQL 16 De 33 Lic. Mariano Trigila SELE,T =ar(:astos! .S =arian(a 7-0M 1edidos 89E-E pro"incia A Mcordo#aME SELE,T =ar1(:astos! .S =arian(a 7-0M 1edidos 89E-E pro"incia A Mcordo#aME # A"rpamien(o de Re"is(ros Las consultas de actuali(aci2n son aquellas que no de"uel"en ning5n registro' son las encargadas de acciones co$o aVadir' #orrar $odi%icar registros. !.1 DELE=E ,rea una e)presi2n de eli$inaci2n que eli$ina los registros de una o $&s de las ta#las listadas en la cl&usula 7-0M que satis%agan la cl&usula 89E-E. Esta consulta eli$ina los registros co$pletos. 4o posi#ilita eli$inar el contenido de alg5n ca$po en concreto. Su sinta)is es* DELETE Ta#la.H 7-0M Ta#la 89E-E criterio 0 DELETE 7-0M Ta#la 89E-E criterio DELETE es especial$ente 5til cuando se desea eli$inar uno o "arios registros. En una instrucci2n DELETE con $5ltiples ta#las' de#e incluir el no$#re de ta#la (Ta#la.H!. Si especi%ica $&s de una ta#la desde la que eli$inar registros' todas de#en ser ta#las de $ucGos a uno. Si desea eli$inar todos los registros de una ta#la' eli$inar la propia ta#la es $&s e%iciente que ejecutar una consulta de #orrado. Se puede utili(ar DELETE para eli$inar registros de una 5nica ta#la o desde "arios lados de una relaci2n uno a $ucGos. Las operaciones de eli$inaci2n en cascada en una consulta 5nica$ente eli$inan desde "arios lados de una relaci2n. 1or eje$plo' en la relaci2n entre las ta#las ,lientes 1edidos' la ta#la 1edidos es la parte de $ucGos por lo que las operaciones en cascada solo a%ectaran a la ta#la 1edidos. /na consulta de #orrado eli$ina los registros co$pletos' no 5nica$ente los datos en ca$pos espec+%icos. Si desea eli$inar "alores en un ca$po especi%icado' de#e crear una consulta de actuali(aci2n que ca$#ie los "alores a 4ull. /na "e( que se Gan eli$inado los registros utili(ando una consulta de #orrado' no puede desGacer la operaci2n. Si desea sa#er qu registros se eli$inar&n' pri$ero e)a$ine los resultados de una consulta de selecci2n que utilice el $is$o criterio despus ejecute la consulta de #orrado. Mantenga copias de seguridad de sus datos en todo $o$ento. Si elimina los re"is(ros e8i2ocados podr recperarlos desde las copias de se"ridad. DELETE 7-0M E$pleados 89E-E ,argo A M=endedorME !.2 INSE&= IN=O .grega un registro en una ta#la. Se la conoce co$o una consulta de datos aVadidos. Esta consulta puede ser de dos tipo* 3nsertar un 5nico registro 2 3nsertar en una ta#la los registros contenidos en otra ta#la. Manual SQL 1D De 33 Lic. Mariano Trigila !.2.1 'ara insertar un <nico reistroB En este caso la sinta)is es la siguiente* 34SE-T 34T0 Ta#la (ca$po1' ca$po2' ..' ca$po4! =.L/ES ("alor1' "alor2' ...' "alor4! Esta consulta gra#a en el ca$po1 el "alor1' en el ca$po2 "alor2 as+ sucesi"a$ente. 9a que prestar especial atenci2n a acotar entre co$illas si$ples (M! los "alores literales (cadenas de caracteres! las %ecGas indicarlas en %or$ato esta#lecido. 1ara el caso de que el ca$po sea autonu$erico' se puede o$itir este ca$po en la consulta de inserci2n' dejando al siste$a de ;D que ad$inistre el "alor siguiente. !.2.2 'ara insertar reistros de otras ta)lasB 1 En este caso la sinta)is es* 34SE-T 34T0 Ta#la R34 #aseLe)ternaS (ca$po1' ca$po2' ...' ca$po4! SELE,T Ta#la0rigen.ca$po1' Ta#la0rigen.ca$po2' ...' Ta#la0rigen.ca$po4 7-0M Ta#la0rigen En este caso se seleccionar&n los ca$pos 1'2' ...' n de la ta#la origen se gra#ar&n en los ca$pos 1'2'..' n de la Ta#la. La condici2n SELE,T puede incluir la cl&usula 89E-E para %iltrar los registros a copiar. Si Ta#la Ta#la0rigen poseen la $is$a estrucutra pode$os si$pli%icar la sinta)is a* 34SE-T 34T0 Ta#la SELE,T Ta#la0rigen.H 7-0M Ta#la0rigen De esta %or$a los ca$pos de Ta#la0rigen se gra#ar&n en Ta#la' para reali(ar esta operaci2n es necesario que todos los ca$pos de Ta#la0rigen estn contenidos con igual no$#re en Ta#la. ,on otras pala#ras que Ta#la posea todos los ca$pos de Ta#la0rigen (igual no$#re e igual tipo!. En este tipo de consulta Ga que tener especial atenci2n con los ca$pos contadores o autonu$ricos puesto que al insertar un "alor en un ca$po de este tipo se escri#e el "alor que contenga su ca$po Go$2logo en la ta#la origen' no incre$ent&ndose co$o le corresponde. Se puede utili(ar la instrucci2n 34SE-T 34T0 para agregar un registro 5nico a una ta#la' utili(ando la sinta)is de la consulta de adici2n de registro 5nico tal co$o se $ostr2 anterior$ente. En este caso' su c2digo especi%ica el no$#re el "alor de cada ca$po del registro. De#e especi%icar cada uno de los ca$pos del registro al que se le "a a asignar un "alor as+ co$o el "alor para dicGo ca$po. ,uando no se especi%ica dicGo ca$po' se inserta el "alor predeter$inado o 4ull. Los registros se agregan al %inal de la ta#la. Ta$#in se puede utili(ar 34SE-T 34T0 para agregar un conjunto de registros pertenecientes a otra ta#la o consulta utili(ando la cl&usula SELE,T ... 7-0M co$o se $ostr2 anterior$ente en la sinta)is de la consulta de adici2n de $5ltiples registros. En Manual SQL 1F De 33 Lic. Mariano Trigila este caso la cl&usula SELE,T especi%ica los ca$pos que se "an a agregar en la ta#la destino especi%icada. La ta#la destino u origen puede especi%icar una ta#la o una consulta. Si la ta#la destino contiene una cla"e principal' Ga que asegurarse que es 5nica' con "alores notN4ull E si no es as+' no se agregar&n los registros. Si se agregan registros a una ta#la con un ca$po ,ontador ' no se de#e incluir el ca$po ,ontador en la consulta. Se puede e$plear la cl&usula 34 para agregar registros a una ta#la en otra #ase de datos. Se pueden a"eriguar los registros que se agregar&n en la consulta ejecutando pri$ero una consulta de selecci2n que utilice el $is$o criterio de selecci2n "er el resultado. /na consulta de adici2n copia los registros de una o $&s ta#las en otra. Las ta#las que contienen los registros que se "an a agregar no se "er&n a%ectadas por la consulta de adici2n. En lugar de agregar registros e)istentes en otra ta#la' se puede especi%icar los "alores de cada ca$po en un nue"o registro utili(ando la cl&usula =.L/ES. Si se o$ite la lista de ca$pos' la cl&usula =.L/ES de#e incluir un "alor para cada ca$po de la ta#la' de otra %or$a %allar& 34SE-T. 34SE-T 34T0 ,lientes SELE,T ,lientesL=iejos.H 7-0M ,lientesL4ue"osE 34SE-T 34T0 E$pleados (4o$#re' .pellido' ,argo! =.L/ES (MLuisM' MS&ncGe(M' M;ecarioM!E 34SE-T 34T0 E$pleados SELE,T =endedores.H 7-0M =endedores 89E-E 7ecGaL,ontratacion ? 4oQ(! N 3JE !.3 2'D$=E ,rea una consulta de actuali(aci2n que ca$#ia los "alores de los ca$pos de una ta#la especi%icada #as&ndose en un criterio espec+%ico. Su sinta)is es* /1D.TE Ta#la SET ,a$po1A=alor1' ,a$po2A=alor2' ... ,a$po4A=alor4 89E-E ,riterioE /1D.TE es especial$ente 5til cuando se desea ca$#iar un gran n5$ero de registros o cuando stos se encuentran en $5ltiples ta#las. 1uede ca$#iar "arios ca$pos a la "e(. El eje$plo siguiente incre$enta los "alores ,antidad pedidos en un 1J por ciento los "alores Transporte en un 3 por ciento para aquellos que se Gaan en"iado al ;rasil* /1D.TE 1edidos SET 1edido A 1edidos H 1.1' Transporte A Transporte H 1.J3 89E-E 1aisEn"+o A M;-ME /1D.TE no genera ning5n resultado. 1ara sa#er qu registros se "an a ca$#iar' Ga que e)a$inar pri$ero el resultado de una consulta de selecci2n que utilice el $is$o criterio despus ejecutar la consulta de actuali(aci2n. /1D.TE E$pleados SET :rado A 6 89E-E :rado A 2E /1D.TE 1roductos SET 1recio A 1recio H 1.1 89E-E 1ro"eedor A K .4D 7a$ilia A 3E Si en una consulta de actuali(aci2n supri$i$os la cl&usula 89E-E todos los registros de la ta#la seValada ser&n actuali(ados. Manual SQL 1K De 33 Lic. Mariano Trigila /1D.TE E$pleados SET Salario A Salario H 1.1 $ Tipos de da(os en m:SQL D.1 Tipos 4u$ricos E)isten tipos de datos nu$ricos' que se pueden di"idir en dos grandes grupos' los que est&n en co$a %lotante (con deci$ales! los que no. Tin:In(> es un n5$ero entero con o sin signo. ,on signo el rango de "alores "&lidos "a desde N12K a 12F. Sin signo' el rango de "alores es de J a 266 )i( )ool> un n5$ero entero que puede ser J 2 1 SmallIn(> n5$ero entero con o sin signo. ,on signo el rango de "alores "a desde N32FDK a 32FDF. Sin signo' el rango de "alores es de J a D6636. MedimIn(> n5$ero entero con o sin signo. ,on signo el rango de "alores "a desde NK.3KK.DJK a K.3KK.DJF. Sin signo el rango "a desde J a1DFFF216. In(e"er5 In(> n5$ero entero con o sin signo. ,on signo el rango de "alores "a desde N214F4K3D4K a 214F4K3D4F. Sin signo el rango "a desde J a 42I.4IDF.2I6 )i"In(> n5$ero entero con o sin signo. ,on signo el rango de "alores "a desde NI.223.3F2.J3D.K64.FF6.KJK a I.223.3F2.J3D.K64.FF6.KJF. Sin signo el rango "a desde J a 1K.44D.F44.JF3.FJI.661.D16. %loa(> n5$ero pequeVo en co$a %lotante de precisi2n si$ple. Los "alores "&lidos "an desde N3.4J2K234DDEW3K a N1.1F64I4361EN3K' J desde 1.1F64I4361EN3K a 3.4J2K234DDEW3K. .Real5 Do0le> n5$ero en co$a %lotante de precisi2n do#le. Los "alores per$itidos "an desde N1.FIFDI3134KD2316FEW3JK a N2.226JF3K6K6JF2J14EN3JK' J desde 2.226JF3K6K6JF2J14EN 3JK a 1.FIFDI3134KD2316FEW3JK Decimal5 Dec5 Nmeric> 45$ero en co$a %lotante dese$paquetado. El n5$ero se al$acena co$o una cadena
Tipo de Campo Tama?o de Almacenamien(o T34<34T 1 #te SM.LL34T 2 #tes MED3/M34T 3 #tes 34T 4 #tes 34TE:E- 4 #tes ;3:34T K #tes 7L0.T(C! 4 5 K #tes 7L0.T 4 #tes Manual SQL 1I De 33 Lic. Mariano Trigila D0/;LE K #tes D0/;LE 1-E,3S304 K #tes -E.L K #tes DE,3M.L(M'D MW2 #tes s+ D @ J' MW1 #tes s+ D A J 4/ME-3,(M'D! MW2 #tes i% D @ J' MW1 #tes i% D A J D.2 Tipos 7ecGa . la Gora de al$acenar %ecGas' Ga que tener en cuenta que Msql no co$prue#a de una $anera estricta si una %ecGa es "&lida o no. Si$ple$ente co$prue#a que el $es esta co$prendido entre J 12 que el d+a esta co$prendido entre J 31. Da(e> tipo %ecGa' al$acena una %ecGa. El rango de "alores "a desde el 1 de enero del 1JJ1 al 31 de dicie$#re de IIII. El %or$ato de al$acena$iento es de aVoN$esNdia Da(eTime> ,o$#inaci2n de %ecGa Gora. El rango de "alores "a desde el 1 de enero del 1JJ1 a las J Goras' J $inutos J segundos al 31 de dicie$#re del IIII a las 23 Goras' 6I $inutos 6I segundos. El %or$ato de al$acena$iento es de aVoN$esNdia Goras*$inutos*segundos TimeS(amp> ,o$#inaci2n de %ecGa Gora. El rango "a desde el 1 de enero de 1IFJ al aVo 2J3F. El %or$ato de al$acena$iento depende del ta$aVo del ca$po* Tama?o %orma(o 14 .VoMesDia9oraMinutoSegundo aaaa$$ddGG$$ss 12 .VoMesDia9oraMinutoSegundo aa$$ddGG$$ss K .VoMesDia aaaa$$dd D .VoMesDia aa$$dd 4 .VoMes aa$$ 2 .Vo aa Time> al$acena una Gora. El rango de Goras "a desde NK3K Goras' 6I $inutos 6I segundos a K3K' 6I $inutos 6I segundos. El %or$ato de al$acena$iento es de M99*MM*SSM @ear> al$acena un aVo. El rango de "alores per$itidos "a desde el aVo 1IJ1 al aVo 2166. El ca$po puede tener ta$aVo dos o ta$aVo 4 dependiendo de si quere$os al$acenar el aVo con dos o cuatro d+gitos. Tipo de Campo Tama?o de Almacenamien(o D.TE 3 #tes D.TET3ME K #tes T3MEST.M1 4 #tes T3ME 3 #tes Manual SQL 2J De 33 Lic. Mariano Trigila <E.- 1 #te D.3 Tipos ,adenas CAar4n6> al$acena una cadena de longitud %ija. La cadena podr& contener desde J a 266 caracteres. ;arCAar4n6> al$acena una cadena de longitud "aria#le. La cadena podr& contener desde J a 266 caracteres. Dentro de los tipos de cadena se pueden distinguir otros dos su#tipos' los tipo Test los tipo ;L0; (;inar large 0#ject! La di%erencia entre un tipo otro es el trata$iento que reci#en a la Gora de reali(ar ordena$ientos co$paraciones. Mientras que el tipo test se ordena sin tener en cuenta las Ma5sculas las $in5sculas' el tipo ;L0; se ordena tenindolas en cuenta. Los tipos ;L0; se utili(an para al$acenar datos #inarios co$o pueden ser %icGeros. Tin:Te.( : Tin:)lo0> ,olu$na con una longitud $&)i$a de 266 caracteres. )lo0 : Te.(> un te)to con un $&)i$o de D6636 caracteres. Medim)lo0 : MedimTe.(> un te)to con un $&)i$o de 1D.FFF.216 caracteres. Lon")lo0 : Lon"Te.(> un te)to con un $&)i$o de caracteres 4.2I4.IDF.2I6. 9a que tener en cuenta que de#ido a los protocolos de co$unicaci2n los paquetes pueden tener un $&)i$o de 1D M#. 'nm> ca$po que puede tener un 5nico "alor de una lista que se especi%ica. El tipo Enu$ acepta Gasta D6636 "alores distintos Se(> un ca$po que puede contener ninguno' uno 2 "arios "alores de una lista. La lista puede tener un $&)i$o de D4 "alores. Tipo de campo Tama?o de Almacenamien(o ,9.-(n! n #tes =.-,9.-(n! n W1 #tes T34<;L0;' T34<TECT LongitudW1 #tes ;L0;' TECT Longitud W2 #tes MED3/M;L0;' MED3/MTECT Longitud W3 #tes L04:;L0;' L04:TECT Longitud W4 #tes E4/M(M"alue1M'M"alue2M'...! 1 2 dos #tes dependiendo del n5$ero de "alores SET(M"alue1M'M"alue2M'...! 1' 2' 3' 4 2 K #tes' dependiendo del n5$ero de "alores Manual SQL 21 De 33 Lic. Mariano Trigila Di%erencia de al$acena$iento entre los tipos ,Gar =ar,Gar* ;alor C,AR4!6 Almacenamien(o ;ARC,AR4!6 Almacenamien(o MM MM 4 #tes > 1 #te Ma#M Ma# M 4 #tes Ma#M 3 #tes Ma#cdM Ma#cdM 4 #tes Ma#cdM Ma#cde%gGM Ma#cdM 4 #tes Ma#cdM 6 #tes B S0Consl(as /na su#consulta es una instrucci2n SELE,T anidada dentro de una instrucci2n SELE,T' SELE,T...34T0' 34SE-T...34T0' DELETE' o /1D.TE o dentro de otra su#consulta. 1uede utili(ar tres %or$as de sinta)is para crear una su#consulta* co$paraci2n R.4< X .LL X S0MES (instrucci2n sql! e)presi2n R40TS 34 (instrucci2n sql! R40TS EC3STS (instrucci2n sql! En donde* comparacin> Es una e)presi2n un operador de co$paraci2n que co$para la e)presi2n con el resultado de la su#consulta. '.presin> Es una e)presi2n por la que se #usca el conjunto resultante de la su#consulta. ins(rccin s8l> Es una instrucci2n SELE,T' que sigue el $is$o %or$ato reglas que cualquier otra instrucci2n SELE,T. De#e ir entre parntesis. Se puede utili(ar una su#consulta en lugar de una e)presi2n en la lista de ca$pos de una instrucci2n SELE,T o en una cl&usula 89E-E o 9.=34:. En una su#consulta' se utili(a una instrucci2n SELE,T para proporcionar un conjunto de uno o $&s "alores especi%icados para e"aluar en la e)presi2n de la cl&usula 89E-E o 9.=34:. Se puede utili(ar el predicado .4< o S0ME' los cuales son sin2ni$os' para recuperar registros de la consulta principal' que satis%agan la co$paraci2n con cualquier otro registro recuperado en la su#consulta. El eje$plo siguiente de"uel"e todos los productos cuo precio unitario es $aor que el de cualquier producto "endido con un descuento igual o $aor al 26 por ciento.* SELE,T H 7-0M 1roductos 89E-E 1recio/nidad @ .4< (SELE,T 1recio/nidad 7-0M Detalle1edido 89E-E Descuento @A J .26!E El predicado .LL se utili(a para recuperar 5nica$ente aquellos registros de la consulta principal que satis%acen la co$paraci2n con todos los registros recuperados en la su#consulta. Si se Manual SQL 22 De 33 Lic. Mariano Trigila ca$#ia .4< por .LL en el eje$plo anterior' la consulta de"ol"er& 5nica$ente aquellos productos cuo precio unitario sea $aor que el de todos los productos "endidos con un descuento igual o $aor al 26 por ciento. Esto es $ucGo $&s restricti"o. El predicado 34 se e$plea para recuperar 5nica$ente aquellos registros de la consulta principal para los que algunos registros de la su#consulta contienen un "alor igual. El eje$plo siguiente de"uel"e todos los productos "endidos con un descuento igual o $aor al 26 por ciento.* SELE,T H 7-0M 1roductos 89E-E 3D1roducto 34 (SELE,T 3D1roducto 7-0M Detalle1edido 89E-E Descuento @A J.26!E 3n"ersa$ente se puede utili(ar 40T 34 para recuperar 5nica$ente aquellos registros de la consulta principal para los que no Ga ning5n registro de la su#consulta que contenga un "alor igual. El predicado EC3STS (con la pala#ra reser"ada 40T opcional! se utili(a en co$paraciones de "erdadY%also para deter$inar si la su#consulta de"uel"e alg5n registro. Se puede utili(ar ta$#in alias del no$#re de la ta#la en una su#consulta para re%erirse a ta#las listadas en la cl&usula 7-0M %uera de la su#consulta. El eje$plo siguiente de"uel"e los no$#res de los e$pleados cuo salario es igual o $aor que el salario $edio de todos los e$pleados con el $is$o t+tulo. . la ta#la E$pleados se le Ga dado el alias T1* SELE,T .pellido' 4o$#re' Titulo' Salario 7-0M E$pleados .S T1 89E-E Salario @A (SELE,T ."g(Salario! 7-0M E$pleados 89E-E T1.Titulo A E$pleados.Titulo! 0-DE- ;< TituloE En el eje$plo anterior la pala#ra reser"ada .S es opcional. SELE,T .pellidos' 4o$#re' ,argo' Salario 7-0M E$pleados 89E-E ,argo L3BE >.gente =enH> .4D Salario @ .LL (SELE,T Salario 7-0M E$pleados 89E-E (,argo L3BE >HZe%eH>! 0- (,argo L3BE >HDirectorH>!!E Obtiene una lista con el nombre, cargo y salario de todos los agentes de ventas cuyo salario es mayor que el de todos los jefes y directores. SELE,T D3ST34,T-08 4o$#re1roducto' 1recioL/nidad 7-0M 1roductos 89E-E (1recioL/nidad A (SELE,T 1recioL/nidad 7-0M 1roductos 89E-E 4o$#reL1roducto A >.l$+#ar anisado>!E Obtiene una lista con el nombre y el precio unitario de todos los productos con el mismo precio que el almbar anisado. SELE,T D3ST34,T-08 4o$#reL,ontacto' 4o$#reL,o$paVia' ,argoL,ontacto' Tele%ono 7-0M ,lientes 89E-E (3DL,liente 34 (SELE,T D3ST34,T-08 3DL,liente 7-0M 1edidos 89E-E 7ecGaL1edido @A M03-0-0!M!E Obtiene una lista de las compa"as y los contactos de todos los clientes que #an reali$ado un pedido en el periodo mayor igual al 03-0-0! Manual SQL 23 De 33 Lic. Mariano Trigila SELE,T 4o$#re' .pellidos 7-0M E$pleados .S E 89E-E EC3STS (SELE,T H 7-0M 1edidos .S 0 89E-E 0.3DLE$pleado A E.3DLE$pleado!E %elecciona el nombre de todos los empleados que #an reservado al menos un pedido. SELE,T D3ST34,T-08 1edidos.3dL1roducto' 1edidos.,antidad' (SELE,T D3ST34,T-08 1roductos.4o$#re 7-0M 1roductos 89E-E 1roductos.3dL1roducto A 1edidos.3dL1roducto! .S El1roducto 7-0M 1edidos 89E-E 1edidos.,antidad @ 16J 0-DE- ;< 1edidos.3dL1roductoE &ecupera el C'digo del (roducto y la Cantidad pedida de la tabla pedidos, e)trayendo el nombre del producto de la tabla de productos. C Consl(as de nin in(ernas o com0inacin de (a0las /n 1oin es una co$#inaci2n de dos o $&s ta#las de una #ase de datos relacional' es una instrucci2n de lo $&s i$prescindi#le si quere$os reali(ar una aplicaci2n que realice un uso correcto e intensi"o de un gestor de ;ases de datos c2$o MSQL 344E- Z034 S'L'CT H %ROM clientes INN'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' Ralguna condicionS LE7T 0/TE- Z034 S'L'CT H %ROM clientes L'%T OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' Ralguna condicionS Manual SQL 24 De 33 Lic. Mariano Trigila -3:9T 0/TE- Z034 S'L'CT H %ROM clientes RI<,T OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' Ralguna condicionS 7/LL 0/TE- Z034 S'L'CT H %ROM clientes %ULL OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes Manual SQL 26 De 33 Lic. Mariano Trigila a. 0#tener la di%erencia entre dos conjuntos de datos' es decir' lo que tenga una ta#la que no tenga la otra. La di%erencia de la ta#la clientes $enos la ta#la productos' es decir' todo lo que se encuentre en la ta#la clientes que no este o no tenga relaci2n con los productos S'L'CT H %ROM clientes L'%T OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' productos.clientesLidclientes IS NULL #. La di%erencia de la ta#la productos $enos la ta#la clientes' es decir' todo lo que se encuentre en la ta#la productos que no este o no tenga relaci2n con los clientes. S'L'CT H %ROM clientes RI<,T OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' clientes.idclientes IS NULL c. todos los registros de cliente producto que no tengan relaci2n S'L'CT H %ROM clientes %ULL OUT'R DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' clientes.idclientes IS NULL OR productos.idproductos IS NULL Manual SQL 2D De 33 Lic. Mariano Trigila O S'L'CT H %ROM clientes L'%T DOIN productos ON clientes.idclientes A productos.clientesLidclientes UNION S'L'CT H %ROM clientes RI<,T DOIN productos ON clientes.idclientes A productos.clientesLidclientes +,'R' clientes.idclientes IS NULL E Consl(as de nin e.(erna Se utili(a la operaci2n /4304 para crear una consulta de uni2n' co$#inando los resultados de dos o $&s consultas o ta#las independientes. Su sinta)is es* RT.;LES consulta1 /4304 R.LLS RT.;LES consulta2 R/4304 R.LLS RT.;LES consultan R ... SS En donde* consl(a15 consl(a&5 consl(an Son instrucciones SELE,T' el no$#re de una consulta al$acenada o el no$#re de una ta#la al$acenada precedido por la pala#ra cla"e T.;LE. 1uede co$#inar los resultados de dos o $&s consultas' ta#las e instrucciones SELE,T' en cualquier orden' en una 5nica operaci2n /4304. El eje$plo siguiente co$#ina una ta#la e)istente lla$ada 4ue"as ,uentas una instrucci2n SELE,T* T.;LE R4ue"as ,uentasS /4304 .LL SELE,T H 7-0M ,lientes 89E-E R,antidad pedidosS @ 1JJJE Si no se indica lo contrario' no se de"uel"en registros duplicados cuando se utili(a la operaci2n /4304' no o#stante puede incluir el predicado .LL para asegurar que se de"uel"en todos los registros. Esto Gace que la consulta se ejecute $&s r&pida$ente. Todas las consultas en una operaci2n /4304 de#en pedir el $is$o n5$ero de ca$pos' no o#stante los ca$pos no tienen porqu tener el $is$o ta$aVo o el $is$o tipo de datos. Se puede utili(ar una cl&usula :-0/1 ;< Yo 9.=34: en cada argu$ento consulta para agrupar los datos de"ueltos. 1uede utili(ar una cl&usula 0-DE- ;< al %inal del 5lti$o argu$ento consulta para "isuali(ar los datos de"ueltos en un orden espec+%ico. Manual SQL 2F De 33 Lic. Mariano Trigila SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M 1ro"eedores 89E-E 1a+s A M;rasilM /4304 SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M ,lientes 89E-E 1a+s A >;rasil> &ecupera los nombres y las ciudades de todos proveedores y clientes de *rasil SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M 1ro"eedores 89E-E 1a+s A M;rasilM /4304 SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M ,lientes 89E-E 1a+s A M;rasilM 0-DE- ;< ,iudad &ecupera los nombres y las ciudades de todos proveedores y clientes radicados en *rasil, ordenados por el nombre de la ciudad SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M 1ro"eedores 89E-E 1a+s A M;rasilM /4304 SELE,T R4o$#re de co$paV+aS' ,iudad 7-0M ,lientes 89E-E 1a+s A M;rasilM /4304 SELE,T R.pellidosS' ,iudad 7-0M E$pleados 89E-E -egi2n A M.$rica del SurM &ecupera los nombres y las ciudades de todos los proveedores y clientes de brasil y los apellidos y las ciudades de todos los empleados de +m,rica del %ur T.;LE RLista de clientesS /4304 T.;LE RLista de pro"eedoresS &ecupera los nombres y c'digos de todos los proveedores y clientes Manual SQL 2K De 33 Lic. Mariano Trigila 1F 's(rc(ras de las (a0las .LTE- T.;LE pedidos .DD 70-E3:4 BE<(3DL,liente! -E7E-E4,ES clientes(3DL,liente!E 1A.1 Creacin de ta)las Si se est& utili(ando el $otor de datos de Microso%t para acceder a #ases de datos access' s2lo se puede e$plear esta instrucci2n para crear #ases de datos propias de access. Su sinta)is es* ,-E.TE T.;LE ta#la (ca$po1 tipo (ta$aVo! +ndice1 ' ca$po2 tipo (ta$aVo! +ndice2 ' ...' +ndice $ultica$po ' ... ! En donde*
*ar(e Descripcin Ta#la Es el no$#re de la ta#la que se "a a crear. ,a$po1 ca$po2 Es el no$#re del ca$po o de los ca$pos que se "an a crear en la nue"a ta#la. La nue"a ta#la de#e contener' al $enos' un ca$po. Tipo Es el tipo de datos de ca$po en la nue"a ta#la. Ta$aVo Es el ta$aVo del ca$po s2lo se aplica para ca$pos de tipo te)to. [ndice1 +ndice2 Es una cl&usula ,04ST-.34T que de%ine el tipo de indice a crear. Esta cl&usula en opcional. +ndice $ultica$pos Es una cl&usula ,04ST-.34T que de%ine el tipo de indice $ultica$pos a crear. /n +ndice $ulti ca$po es aquel que est& inde)ado por el contenido de "arios ca$pos. Esta cl&usula en opcional. ,-E.TE T.;LE E$pleados (4o$#re TECT (26! ' .pellidos TECT (6J!!E Crea una nueva tabla llamada -mpleados con dos campos, uno llamado .ombre de tipo te)to y longutid /0 y otro llamado apellidos con longitud 00. ,-E.TE T.;LE E$pleados (4o$#re TECT (1J!' .pellidos TECT' 7ecGaL4aci$iento D.TET3ME! ,04ST-.34T 3ndice:eneral /43Q/E (R4o$#reS' R.pellidosS' R7ecGaL4aci$ientoS!E
Crea una nueva tabla llamada -mpleados con un campo .ombre de tipo te)to y longitud !0, otro con llamado +pellidos de tipo te)to y longitud predeterminada 1002 y uno m3s llamado 4ec#a5.acimiento de tipo 4ec#a67ora. 8ambi,n crea un ndice 9nico 1no permite valores repetidos2 formado por los tres campos. Manual SQL 2I De 33 Lic. Mariano Trigila ,-E.TE T.;LE E$pleados (3D 34TE:E- ,04ST-.34T 3ndice1ri$ario 1-3M.-<' 4o$#re TECT' .pellidos TECT' 7ecGaL4aci$iento D.TET3ME!E Crea una tabla llamada -mpleados con un campo 8e)to de longitud predeterminada 1002 llamado .ombre y otro igual llamado +pellidos, crea otro campo llamado 4ec#a5.acimiento de tipo 4ec#a67ora y el campo :; de tipo entero el que establece como clave principal. 1A.2 La clusula CONS=&$IN= Se utili(a la cl&usula ,04ST-.34T en las instrucciones .LTE- T.;LE ,-E.TE T.;LE para crear o eli$inar +ndices. E)isten dos sinta)is para esta cl&usula dependiendo si desea ,rear 2 Eli$inar un +ndice de un 5nico ca$po o si se trata de un ca$po $ulti+ndice. 1ara los +ndices de ca$pos 5nicos* ,04ST-.34T no$#re \1-3M.-< BE< X /43Q/E X -E7E-E4,ES ta#la e)terna R(ca$po e)terno1' ca$po e)terno2!S] 1ara los +ndices de ca$pos $5ltiples* ,04ST-.34T no$#re \1-3M.-< BE< (pri$ario1R' pri$ario2 R' ...SS! X /43Q/E (5nico1R' 5nico2 R' ...SS! X 70-E3:4 BE< (re%1R' re%2 R' ...SS! -E7E-E4,ES ta#la e)terna R(ca$po e)terno1 R'ca$po e)terno2 R' ...SS!S] *ar(e Descripcin no$#re Es el no$#re del +ndice que se "a a crear. 1ri$ario4 Es el no$#re del ca$po o de los ca$pos que %or$an el +ndice pri$ario. ^nico4 Es el no$#re del ca$po o de los ca$pos que %or$an el +ndice de cla"e 5nica. -e%4 Es el no$#re del ca$po o de los ca$pos que %or$an el +ndice e)terno (Gacen re%erencia a ca$pos de otra ta#la!. ta#la e)terna Es el no$#re de la ta#la que contiene el ca$po o los ca$pos re%erenciados en re%4 ca$pos e)ternos Es el no$#re del ca$po o de los ca$pos de la ta#la e)terna especi%icados por re%1' re%2' ...' re%4 Si se desea crear un +ndice para un ca$po cuando se esta utili(ando las instrucciones .LTE- T.;LE o ,-E.TE T.;LE la cl&usula ,04T-.34T de#e aparecer in$ediata$ente despus de la especi%icaci2n del ca$po inde)ado. Si se desea crear un +ndice con $5ltiples ca$pos cuando se est& utili(ando las instrucciones .LTE- T.;LE o ,-E.TE T.;LE la cl&usula ,04ST-.34T de#e aparecer %uera de la cl&usula de creaci2n de ta#la. Manual SQL 3J De 33 Lic. Mariano Trigila Tipo de Indice Descripcin /43Q/E :enera un +ndice de cla"e 5nica. Lo que i$plica que los registros de la ta#la no pueden contener el $is$o "alor en los ca$pos inde)ados. 1-3M.-< BE< :enera un +ndice pri$ario el ca$po o los ca$pos especi%icados. Todos los ca$pos de la cla"e principal de#en ser 5nicos no nulos' cada ta#la s2lo puede contener una 5nica cla"e principal. 70-E3:4 BE< :enera un +ndice e)terno (to$a co$o "alor del +ndice ca$pos contenidos en otras ta#las!. Si la cla"e principal de la ta#la e)terna consta de $&s de un ca$po' se de#e utili(ar una de%inici2n de +ndice de $5ltiples ca$pos' listando todos los ca$pos de re%erencia' el no$#re de la ta#la e)terna' los no$#res de los ca$pos re%erenciados en la ta#la e)terna en el $is$o orden que los ca$pos de re%erencia listados. Si los ca$pos re%erenciados son la cla"e principal de la ta#la e)terna' no tiene que especi%icar los ca$pos re%erenciados. 1A.3 La Creacin de indices La sinta)is para crear un +ndice en una ta#la a de%inida en la siguiente* ,-E.TE R /43Q/E S 34DEC +ndice 04 ta#la (ca$po R.S,XDES,SR' ca$po R.S,XDES,S' ...S! R83T9 \ 1-3M.-< X D3S.LL08 4/LL X 3:40-E 4/LL ]S En donde*
*ar(e Descripcin [ndice Es el no$#re del +ndice a crear. Ta#la Es el no$#re de una ta#la e)istente en la que se crear& el +ndice. ,a$po Es el no$#re del ca$po o lista de ca$pos que constituen el +ndice. .S,XDES, 3ndica el orden de los "alores de los ca$pos .S, indica un orden ascendente ("alor predeter$inado! DES, un orden descendente. /43Q/E 3ndica que el indice no puede contener "alores duplicados. D3S.LL08 4/LL 1roG+#e "alores nulos en un +ndice 3:40-E 4/LL E)clue del +ndice los "alores nulos incluidos en los ca$pos que lo co$ponen. 1-3M.-< .signa al +ndice la categor+a de cla"e principal' en cada ta#la s2lo puede e)istir un 5nico indice que sea >,la"e 1rincipal>. Si un +ndice es cla"e principal i$plica que no puede contener "alores nulos ni duplicados. Se puede utili(ar ,-E.TE 34DEC para crear un pseudo +ndice so#re una ta#la adjunta. 4o necesita per$iso o tener acceso a un ser"idor re$oto para crear un pseudo +ndice' ade$&s la #ase de datos re$oto no es consciente no es a%ectada por el pseudo +ndice. Se utili(a la $is$a sinta)is para las ta#las adjuntas que para las originales. Esto es especial$ente 5til para crear un +ndice en una ta#la que ser+a de s2lo lectura de#ido a la %alta de un +ndice. Manual SQL 31 De 33 Lic. Mariano Trigila ,-E.TE 34DEC Mi3ndice 04 E$pleados (1re%ijo' Tele%ono!E Crea un ndice llamado <i:ndice en la tabla empleados con los campos (refijo y 8elefono. ,-E.TE /43Q/E 34DEC Mi3ndice 04 E$pleados (3D! 83T9 D3S.LL08 4/LLE Crea un ndice en la tabla -mpleados utili$ando el campo :;, obligando que el campo :; no contenga valores nulos ni repetidos. 1A.4 5odi(icar el dise;o de una ta)la Modi%ica el diseVo de una ta#la a e)istente' se pueden $odi%icar los ca$pos o los +ndices e)istentes. Su sinta)is es* .LTE- T.;LE ta#la \.DD \,0L/M4 tipo de ca$poR(ta$aVo!S R,04ST-.34T +ndiceS ,04ST-.34T +ndice $ultica$po] X D-01 \,0L/M4 ca$po 3 ,04ST-.34T no$#re del +ndice] ] En donde* *ar(e Descripcin Ta#la Es el no$#re de la ta#la que se desea $odi%icar. ,a$po Es el no$#re del ca$po que se "a a aVadir o eli$inar. Tipo Es el tipo de ca$po que se "a a aVadir. Ta$aVo El ta$aVo del ca$po que se "a a aVadir (s2lo para ca$pos de te)to!. [ndice Es el no$#re del +ndice del ca$po (cuando se crean ca$pos! o el no$#re del +ndice de la ta#la que se desea eli$inar. [ndice $ultica$po Es el no$#re del +ndice del ca$po $ultica$po (cuando se crean ca$pos! o el no$#re del +ndice de la ta#la que se desea eli$inar. Operacin Descripcin .DD ,0L/M4 Se utili(a para aVadir un nue"o ca$po a la ta#la' indicando el no$#re' el tipo de ca$po opcional$ente el ta$aVo (para ca$pos de tipo te)to!. .DD Se utli(a para agregar un +ndice de $ultica$pos o de un 5nico ca$po. D-01 ,0L/M4Se utli(a para #orrar un ca$po. Se especi%ica 5nica$ente el no$#re del ca$po. D-01 Se utili(a para eli$inar un +ndice. Se especi%ica 5nica$ente el no$#re del +ndice a continuaci2n de la pala#ra reser"ada ,04ST-.34T. .LTE- T.;LE E$pleados .DD ,0L/M4 Salario ,/--E4,<E +grega un campo %alario de tipo <oneda a la tabla -mpleados. Manual SQL 32 De 33 Lic. Mariano Trigila .LTE- T.;LE E$pleados D-01 ,0L/M4 SalarioE -limina el campo %alario de la tabla -mpleados. .LTE- T.;LE 1edidos .DD ,04ST-.34T -elacion1edidos 70-E3:4 BE< (3DLE$pleado! -E7E-E4,ES E$pleados (3DLE$pleado!E +grega un indice e)terno a la tabla (edidos. -l ndice e)terno se basa en el campo :;5-mpleado y se refiere al campo :;5-mpleado de la tabla -mpleados. -n este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la cl3usula &-4-&-.C-%, pues :;5-mpleado es la clave principal de la tabla -mpleados. .LTE- T.;LE 1edidos D-01 ,04ST-.34T -elacion1edidosE -limina el ndice de la tabla (edidos. 11 La clsla *ROC'DUR' Esta cl&usula se utili(a para crear una consulta a la $is$a "e( que se ejecuta' opcional$ente pode$os de%inir par&$etros dentro del procedi$iento para luego cuan do lo in"oque$os le pase$os dicGos par&$etros. 1ues es crear un procedi$iento o pasos que pueden in"olucrar "arias consultas procesa$iento de datos para luego poder in"ocarla con la pala#ra reser"ada ,.LL. ;-L:<:8-& 66 C&-+8- (&OC-;=&- >et+ll(roducts12 *->:. %-L-C8 ? 4&O< products@ E4DYY DEL3M3TE- E El pri$er co$ando que se "e es deli$itador Y Y. Este co$ando no est& relacionado con el procedi$iento al$acenado. Deli$itador de sentencias en MSQL se usa para ca$#iar el deli$itador est&ndar (punto co$a! a otro. En este caso' el deli$itador se ca$#ia de punto co$a (E! a Y Y' a que sentencias de SQL dentro de procedi$ientos al$acenados pueden estar separadas por punto co$a. Despus de la pala#ra cla"e E4D usa$os deli$itador Y Y para $ostrar el resultado %inal del procedi$iento al$acenado. El 5lti$o co$ando ca$#ia el deli$itador de nue"o a la est&ndar (punto co$a!. ,on el %in de crear un nue"o procedi$iento al$acenado se utili(a la sentencia ,-E.TE 1-0,ED/-E. Despus de la sentencia ,-E.TE 1-0,ED/-E puede especi%icar el no$#re del procedi$iento al$acenado. En este caso' el no$#re del procedi$iento al$acenado es :et.ll1roducts. Todo dentro de un par de pala#ras cla"e ;E:34 E4D se lla$a cuerpo del procedi$iento. Se puede escri#ir c2digo SQL en el cuerpo del procedi$iento al$acenado. Manual SQL 33 De 33 Lic. Mariano Trigila