Вы находитесь на странице: 1из 33

MANUAL SQL

Manual SQL 1 De 33 Lic. Mariano Trigila


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

Вам также может понравиться