libro completo sql
TRANSCRIPT
-
7/25/2019 LIBRO COMPLETO SQL
1/85
INTRODUCCIN A
SQL1. Introduccin
2. Consultas de Seleccin
3. Criterios de Seleccin
4.Agrupamiento de Registros y Funciones Agregadas
5. Consultas de Actualizacin
. !ipos de "atos
#. Su$Consultas
%. Consultas y Re&erencias Cruzadas
'. Consultas de (nin Interna
1). Consultas de (nin *+ternas
11. *structuras de las !a$las
http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql2/http://www.maestrosdelweb.com/editorial/tutsql3/http://www.maestrosdelweb.com/editorial/tutsql4/http://www.maestrosdelweb.com/editorial/tutsql5/http://www.maestrosdelweb.com/editorial/tutsql6/http://www.maestrosdelweb.com/editorial/tutsql7/http://www.maestrosdelweb.com/editorial/tutsql8/http://www.maestrosdelweb.com/editorial/tutsql9/http://www.maestrosdelweb.com/editorial/tutsql10/http://www.maestrosdelweb.com/editorial/tutsql11/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql2/http://www.maestrosdelweb.com/editorial/tutsql3/http://www.maestrosdelweb.com/editorial/tutsql4/http://www.maestrosdelweb.com/editorial/tutsql5/http://www.maestrosdelweb.com/editorial/tutsql6/http://www.maestrosdelweb.com/editorial/tutsql7/http://www.maestrosdelweb.com/editorial/tutsql8/http://www.maestrosdelweb.com/editorial/tutsql9/http://www.maestrosdelweb.com/editorial/tutsql10/http://www.maestrosdelweb.com/editorial/tutsql11/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql1/ -
7/25/2019 LIBRO COMPLETO SQL
2/85
12. Consultas con ,ar-metros
13. Acceso a las ases de "atos *+ternas
14. /mitir los permisos de e0ecucin
15. a Cl-usula ,rocedure
1. Ane+os
INTRODUCCINA SQL1. INTRODUCCIN
*l lengua0e de consulta estructurado SQL es un lengua0e de$ase de datos normalizado utilizado por el motor de $ase dedatos de icroso&t 6et. SQLse utiliza para crear o$0etos7uery"e& como el argumento de origen del m8todo/penRecordSet y como la propiedad RecordSource del control de
datos. !am$i8n se puede utilizar con el m8todo *+ecute paracrear y manipular directamente las $ases de datos 6et y crearconsultas SQLde paso a tra98s para manipular $ases de datosremotas cliente : ser9idor.
1.1. COMPONENTES DEL SQL
http://www.maestrosdelweb.com/editorial/tutsql12/http://www.maestrosdelweb.com/editorial/tutsql13/http://www.maestrosdelweb.com/editorial/tutsql14/http://www.maestrosdelweb.com/editorial/tutsql15/http://www.maestrosdelweb.com/editorial/tutsql16/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql12/http://www.maestrosdelweb.com/editorial/tutsql13/http://www.maestrosdelweb.com/editorial/tutsql14/http://www.maestrosdelweb.com/editorial/tutsql15/http://www.maestrosdelweb.com/editorial/tutsql16/http://www.maestrosdelweb.com/editorial/tutsql1/http://www.maestrosdelweb.com/editorial/tutsql1/ -
7/25/2019 LIBRO COMPLETO SQL
3/85
*l lengua0e SQLest- compuesto por comandos cl-usulasoperadores y &unciones de agregado. *stos elementos secom$inan en las instrucciones para crear actualizar y manipularlas $ases de datos.
1.2 COMANDOS*+isten dos tipos de comandos SQL;
os "
-
7/25/2019 LIBRO COMPLETO SQL
4/85
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
UPDATE Utilizado para modificar los valores de los campos y registros especificados
DELETE Utilizado para eliminar registros de una tabla de una base de datos
1.3 CLUSULASas cl-usulas son condiciones de modi&icacin utilizadas parade&inir los datos
-
7/25/2019 LIBRO COMPLETO SQL
5/85
Operador Uso
AND Esel y lgico. Evala dos condiciones y devuelve un
valor de verdad slo si ambas son ciertas.
OR
Es
el o lgico. Evala dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta.
NOT!egacin
lgica. "evuelve el valor contrario de la expresin.
1.5OPERADORES DE COMPARACIN
Operador Uso
"#enorque
##ayorque
"#"istintode
"$#enor $gual que
-
7/25/2019 LIBRO COMPLETO SQL
6/85
#$#ayor
$gual que
BETWEENUtilizado
para especificar un intervalo de valores.
LI%EUtilizado
en la comparacin de un modelo
InUtilizado
para especificar registros de una base de datos
1.6 FUNCIONES DE AGREGADOas &unciones de agregado se usan dentro de unacl-usula SELECTen grupos de registros para de9ol9er un >nico9alor
-
7/25/2019 LIBRO COMPLETO SQL
7/85
MINUtilizada
para devolver el valor m%s ba&o de un campo especificado
CONSULTAS DESELECCINas consultas de seleccin se utilizan para indicar al motor dedatos
-
7/25/2019 LIBRO COMPLETO SQL
8/85
*n donde campos es la lista de campos
-
7/25/2019 LIBRO COMPLETO SQL
9/85
Incluso se puede especi&icar el orden de los registros; ascendentemediante la cla>sula ASCse toma este 9alor por de&ecto descendente DESC
SELECT CodigoPostal, Nombre, Telefono
FROM Clientes ORDER B
CodigoPostal DESC , Nombre !SC;
2.3 CONSULTAS CON PREDICADO*l predicado se incluye entre la cla>sula y el primer nom$re delcampo a recuperar los posi$les predicados son;
Predicado Descripcin
ALL"evuelve todoslos campos de la tabla
TOP"evuelve un determinado nmerode registros de la tabla
DISTINCT'mite los registros cuyoscampos seleccionados coincidan totalmente
DISTINCROW 'mite los registros duplicadosbasandose en la totalidad del registro y no slo en los campos
seleccionados.
ALL:
-
7/25/2019 LIBRO COMPLETO SQL
10/85
Si no se incluye ninguno de los predicados se asumeALL. *lotor de $ase de datos selecciona todos los registros mero de registros
-
7/25/2019 LIBRO COMPLETO SQL
11/85
SELECT TOP &' PERCENT Nombre, !pellido
FROM Est%diantes
ORDER B Nota DESC;
*l 9alor
-
7/25/2019 LIBRO COMPLETO SQL
12/85
completo independientemente de los campo indicados en lacl-usula SELECT.
SELECT D(ST(NCTRO) !pellido FROM Empleados;
Si la ta$la empleados contiene dos registros; Antonio pez yarta pez el e0emplo del predicado DISTINCTde9ule9e un>nico registro con el 9alor pez en el campo Apellido ya ltimo e0emplode9uel9e dos registros con el 9alor pez en el apellido ya
-
7/25/2019 LIBRO COMPLETO SQL
13/85
encuentra contenida en una ta$la
-
7/25/2019 LIBRO COMPLETO SQL
14/85
CRITERIOS DE
SELECCIN3. CRITERIOS DE SELECCIN*n el cap=tulo anterior se 9io la &orma de recuperar los registrosde las ta$las las &ormas empleadas de9ol9=an todos los registrosde la mencionada ta$la. A lo largo de este cap=tulo se estudiar-n
las posi$ilidades de &iltrar los registros con el &in de recuperarsolamente a
-
7/25/2019 LIBRO COMPLETO SQL
15/85
os operadores lgicos soportados por SQLson;ANDOR, XOREqvImpIs yNot. A e+cepcin de los dos>ltimos todos poseen la siguiente sinta+is;
-
7/25/2019 LIBRO COMPLETO SQL
16/85
(erdad &OR )also (erdad
)also &OR (erdad (erdad
)also &OR )also )also
(erdad E-. (erdad (erdad
(erdad E-. )also )also
)also E-. (erdad )also
)also E-. )also (erdad
(erdad Imp (erdad (erdad
(erdad Imp )also )also
(erdad Imp !ull !ull
)also Imp (erdad (erdad
)also Imp )also (erdad
-
7/25/2019 LIBRO COMPLETO SQL
17/85
)also Imp !ull (erdad
!ull Imp (erdad (erdad
!ull Imp )also !ull
!ull Imp !ull !ull
Si a cualltimo operador denominado Isse emplea para comparar dos9aria$les de tipo o$0eto
-
7/25/2019 LIBRO COMPLETO SQL
18/85
3.2 INTERVALOS DE VALORES,ara indicar n elinter9alo de 9alores de un campo emplearemos el operadorBet*ee"cuya sinta+is es;
+%mpo -Not. Bet*ee" v%/or# A"& v%/or' +/% o"&!" Not esopo"%/0
*n este caso la consulta de9ol9er=a los registros
-
7/25/2019 LIBRO COMPLETO SQL
19/85
caracteres comod=n como los reconocidos por el sistemaoperati9o para encontrar un rango de 9alores iHe An.
*l operador L2ese puede utilizar en una e+presin paracomparar un 9alor de un campo con una e+presin de cadena.,or e0emplo si introduce L2e C3en una consulta SQL laconsulta de9uel9e todos los 9alores de campo
-
7/25/2019 LIBRO COMPLETO SQL
20/85
Un solo car%cter *a1a *aaa, *a2a, *a-a *a---a
Un solo dgito *a3a *a4a, *a5a, *a6a *aaa, *a54a
7ango de
caracteres*/a8z0* *f, *p, *& 69, *:
)uera de un rango */;a8z0*
-
7/25/2019 LIBRO COMPLETO SQL
21/85
apartados 3.1 y 3.2. Si no se emplea esta cl-usula la consultade9ol9er- todas las &ilas de la ta$la. WEREes opcional perocuando aparece de$e ir a continuacin de 6RO;.
SELECT !pellidos, Salario FROM Empleados
)/ERE Salario 0 #&''';
SELECT (dProd%+to, E&&8@> !nd >'8@>;
SELECT !pellidos, Nombre, Ci%dad FROM Empleados )/ERECi%dad
-
7/25/2019 LIBRO COMPLETO SQL
22/85
(n 2*Se5illa*, *Los !ngeles*, *Bar+elona*3;
AGRUPAMIENTO DEREGISTROS
4. AGRUPAMIENTO DE REGISTROS4.1 GROUP B"Com$ina los registros con 9alores id8nticos en la lista de camposespeci&icados en un >nico registro. ,ara cada registro se crea un9alor sumario si se incluye una &uncin S7 agregada como pore0emplo Sum o Count en la instruccin SELECT. Su sinta+is es;
SELECT +ampos FROM tabla )/ERE +riterio
ROGP B +ampos del gr%po
RO=P BYes opcional. os 9alores de resumen se omiten si noe+iste una &uncin SQLagregada en la instruccin SELECT. os9alores N>//en los campos RO=P BYse agrupan y no se
omiten. @o o$stante los 9alores N>//no se e9al>an en ningunade las &uncionesSQLagregadas.
Se utiliza la cl-usula WEREpara e+cluir a
-
7/25/2019 LIBRO COMPLETO SQL
23/85
A menos
-
7/25/2019 LIBRO COMPLETO SQL
24/85
4.2 AVGCalcula la media aritm8tica de un con0unto de 9alores contenidos
en un campo especi&icado de una consulta. Su sinta+is es lasiguiente
Av@+expr0
*n donde exprrepresenta el campo //en el c-lculo.
SELECT !5g2astos3 !S Promedio FROM
Pedidos )/ERE astos 0 &'';
4.3 COUNTCalcula el n>mero de registros de9ueltos por una consulta. Susinta+is es la siguiente
Co>"t+expr0
*n donde exprcontiene el nom$re del campo
-
7/25/2019 LIBRO COMPLETO SQL
25/85
&uncin Co>"tno cuenta los registros ltiples campos la &uncin Co>"tcuenta unregistro slo si al menos uno de los campos no es N>//. Si todos
los campos especi&icados son N>// no se cuenta el registro. Jay
-
7/25/2019 LIBRO COMPLETO SQL
26/85
SELECT Min2astos3 !S ElMin FROM Pedidos
)/ERE Pais 4 *EspaKa*;
SELECT Ma
-
7/25/2019 LIBRO COMPLETO SQL
27/85
SELECT StDe5P2astos3 !S Des5ia+ion FROM Pedidos )/EREPais4 *EspaKa*;
4.6 SUM"e9uel9e la suma del con0unto de 9alores contenido en un campoespec=&ico de una consulta. Su sinta+is es;
S>mP+expr0
*n donde exprrepresenta el nom$re del campo a una po$lacin y Kar e9al>a una muestra de lapo$lacin. Exprel nom$re del campo
-
7/25/2019 LIBRO COMPLETO SQL
28/85
constante o una &uncin la cual puede ser intr=nseca o de&inidapor el usuario pero no otras de las &unciones agregadas de SQL
Si la consulta contiene menos de dos registros ?%ry ?%rPde9uel9en N>//esto indica
-
7/25/2019 LIBRO COMPLETO SQL
29/85
Crea una consulta de eliminacin
-
7/25/2019 LIBRO COMPLETO SQL
30/85
despu8s e0ecute la consulta de $orrado. antenga copias de
seguridad de sus datos en todo momento. Si elimina los registros
e
-
7/25/2019 LIBRO COMPLETO SQL
31/85
(NSERT (NTO Tabla (N basee
-
7/25/2019 LIBRO COMPLETO SQL
32/85
su campo Bomlogo en la ta$la origen no increment-ndose como
le corresponde.
Se puede utilizar la instruccin INSERT INTOpara agregar un
registro >nico a una ta$la utilizando la sinta+is de la consulta deadicin de registro >nico tal y como se mostr anteriormente. *n
este caso su cdigo espec=&ica el nom$re y el 9alor de cada
campo del registro. "e$e especi&icar cada uno de los campos del
registro al //. os registros se agregan al &inal de
la ta$la.
!am$i8n se puede utilizar INSERT INTOpara agregar un con0unto
de registros pertenecientes a otra ta$la o consulta utilizando la
cl-usula SELECT 6RO;como se mostr anteriormente en la
sinta+is de la consulta de adicin de m>ltiples registros. *n este
caso la cl-usula SELECTespeci&ica los campos
-
7/25/2019 LIBRO COMPLETO SQL
33/85
e+istentes en otra ta$la se puede especi&icar los 9alores de cada
campo en un nue9o registro utilizando la cl-usula ?AL=ES. Si se
omite la lista de campos la cl-usula?AL=ESde$e incluir un
9alor para cada campo de la ta$la de otra &orma &allar-INSERT.
(NSERT (NTO Clientes SELECT ClientesHieQos."
FROM ClientesN%e5os;
(NSERT (NTO Empleados 2Nombre, !pellido, Cargo3
H!LGES 2*L%is*, *Sn+=e9*, *Be+ario*3;
(NSERT (NTO Empleados SELECT Hendedores." FROMHendedores
)/ERE Fe+=aContrata+ion 1 No623 ';
$. GPD!TECrea una consulta de actualizacin
-
7/25/2019 LIBRO COMPLETO SQL
34/85
=PDATEes especialmente >til cuando se desea cam$iar un gran
n>mero de registros o cuando 8stos se encuentran en m>ltiples
ta$las. ,uede cam$iar 9arios campos a la 9ez. *l e0emplo
siguiente incrementa los 9alores C%"t&%&pedidos en un 1) por
ciento y los 9alores Tr%"sporteen un 3 por ciento para a
-
7/25/2019 LIBRO COMPLETO SQL
35/85
GPD!TE Empleados SET Salario 4 Salario " &.&
TIPOS DE
DATOSos tipos de datos S7 se clasi&ican en 13 tipos de datosprimarios y de 9arios sinnimos 9-lidos reconocidos por dicBostipos de datos.
6. TIPOS DE DATOSos tipos de datos S7 se clasi&ican en 13 tipos de datosprimarios y de 9arios sinnimos 9-lidos reconocidos por dicBostipos de datos.
!ipos de datos primarios;
http://www.maestrosdelweb.com/editorial/tutsql6/http://www.maestrosdelweb.com/editorial/tutsql6/http://www.maestrosdelweb.com/editorial/tutsql6/http://www.maestrosdelweb.com/editorial/tutsql6/ -
7/25/2019 LIBRO COMPLETO SQL
36/85
Tipo
de Da,os Lon0i,*d Descripcin
BINAR 5 byte@ara consultas sobre tabla ad&unta de productos
de bases de datos que definen un tipo de datos -inario.
BIT 5 byte (alores AiB!o CrueB)alse
BTE 5 byte Un valor entero entre 4 y 6DD.
COUNTER bytesUn nmero incrementado autom%ticamente
Fde tipo GongH
CURRENC I bytesUn entero escalable entre
-
7/25/2019 LIBRO COMPLETO SQL
37/85
SHORT 6 bytes Un entero corto entre 826,JKI y 26,JKJ.
LONG bytes Un entero largo entre 86,5J,I2,KI y 6,5J,I2,KJ.
LONGTE&T5 byte por
car%cter"e cero a un m%ximo de 5.6 gigabytes.
LONGBNARAegn se
necesite
"e cero 5 gigabyte. Utilizado para ob&etos
'GE.
TE&T5 byte por
caracter"e cero a 6DD caracteres.
SUBCONSULTAS(na su$consulta es una instruccin S**C! anidada dentro deuna instruccin S**C! S**C!MI@!/ I@S*R!MI@!/"**!* o (,"A!* o dentro de otra su$consulta.
$. SUBCONSULTAS(na su$consulta es una instruccinSELECT anidada dentro deuna instruccin SELECT, SELECTINTO, INSERTINTO,
DELETE, o =PDATEo dentro de otra su$consulta.
,uede utilizar tres &ormas de sinta+is para crear una su$consulta;
http://www.maestrosdelweb.com/editorial/tutsql7/http://www.maestrosdelweb.com/editorial/tutsql7/ -
7/25/2019 LIBRO COMPLETO SQL
38/85
+ompara+i:n !N !LL SOME
2instr%++i:n sl3
e
-
7/25/2019 LIBRO COMPLETO SQL
39/85
SELECT " FROM Prod%+tos )/ERE Pre+ioGnidad 0 !N
2SELECT Pre+ioGnidad FROM DetallePedido )/ERE Des+%ento
04 ' .#$3;
*l predicado ALLse utiliza para recuperar >nicamente a
-
7/25/2019 LIBRO COMPLETO SQL
40/85
Se puede utilizar tam$i8n alias del nom$re de la ta$la en unasu$consulta para re&erirse a ta$las listadas en lacl-usula 6RO;&uera de la su$consulta. *l e0emplo siguientede9uel9e los nom$res de los empleados cuyo salario es igual o
mayor
-
7/25/2019 LIBRO COMPLETO SQL
41/85
SELECT D(ST(NCTRO) NombreProd%+to, Pre+ioGnidad
FROM Prod%+tos )/ERE 2Pre+ioGnidad 4 2SELECT
Pre+ioGnidad FROM Prod%+tos )/ERE NombreProd%+to 4V!lmIbar anisadoV3;
Obtiene una lista con el nombre y el precio unitario de todos losproductos con el mismo precio que el almbar anisado.
SELECT D(ST(NCTRO) NombreConta+to, NombreCompaKia,CargoConta+to, Telefono FROM Clientes )/ERE 2(DCliente (N2SELECT D(ST(NCTRO) (DCliente FROM Pedidos )/EREFe+=aPedido 04 >'@?&?8> 1>'X?&?8>3;
Obtiene una lista de las compaas y los contactos de todos losclientes que han realizado un pedido en el segundo trimestre de199.
SELECT Nombre, !pellidos FROM Empleados !S E )/EREEU(STS 2SELECT " FROM Pedidos !S O )/ERE O.(DEmpleado 4E.(DEmpleado3;
!elecciona el nombre de todos los empleados que han reservadoal menos un pedido.
SELECT D(ST(NCTRO) Pedidos.(dProd%+to, Pedidos.Cantidad,2SELECT D(ST(NCTRO) Prod%+tos.Nombre FROM Prod%+tos
-
7/25/2019 LIBRO COMPLETO SQL
42/85
)/ERE Prod%+tos.(dProd%+to 4 Pedidos.(dProd%+to3 !SElProd%+to FROM Pedidos )/ERE Pedidos.Cantidad 0 &$'ORDER B Pedidos.(dProd%+to;
"ecupera el #$digo del %roducto y la #antidad pedida de la tablapedidos, e&trayendo el nombre del producto de la tabla deproductos.
CONSULTAS DEREFERENCIASCRU%ADAS(na consulta de re&erencias cruzadas es a
-
7/25/2019 LIBRO COMPLETO SQL
43/85
(na consulta de re&erencias cruzadas es a
-
7/25/2019 LIBRO COMPLETO SQL
44/85
pueden 9erse los datos en un &ormato m-s compacto
-
7/25/2019 LIBRO COMPLETO SQL
45/85
TR!NSFORM S%m2Cantidad3 !S Hentas SELECTCompania FROMPedidos )/ERE Fe+=a Bet6een >'&'&87> !nd >&87>ROGP B Compania ORDER B Compania P(HOT VTrimestreV JDatePart2VV,Fe+=a3 (n 2*Trimestre&*,*Trimestre#*, *Trimestre *,*Trimestre @*3;
Crea una consulta de ta$la de re&erencias cruzadas
-
7/25/2019 LIBRO COMPLETO SQL
46/85
2 -lusas
2. PEDIDOS'Id Fec6a Can,idad
5 55B55B5
-
7/25/2019 LIBRO COMPLETO SQL
47/85
6 5DB56B5
-
7/25/2019 LIBRO COMPLETO SQL
48/85
Comentarios a la consulta;
a cl-usula TRANS6OR;indica el 9alor
-
7/25/2019 LIBRO COMPLETO SQL
49/85
la in&ormacin; pedidos.cantidad y art=culos.nom$re por ellosagrupamos por los campos.
,ara &inalizar la cl-usula PI?OTindica el nom$re de las columnasno opcionales en este caso 1'' y 1''# y como 9amos a el dato
-
7/25/2019 LIBRO COMPLETO SQL
50/85
as 9inculaciones entre ta$las se realizan mediante la cl-usulaI@@*R
-
7/25/2019 LIBRO COMPLETO SQL
51/85
ta$las 'epartamentos y (mpleadospara seleccionar todos losempleados de cada departamento. ,or el contrario paraseleccionar todos los departamentos incluso si alguno de ellos notiene ning>n empleado asignado se emplea LE6T GOINo todos
los empleados incluso si alguno no est- asignado a ning>ndepartamento en este caso RITGOIN.
Si se intenta com$inar campos O()eto OLE se produce un error. Se pueden com$inar doscampos num8ricos cuales
-
7/25/2019 LIBRO COMPLETO SQL
52/85
FROM tabla& (NNER WO(N tabla#
ON tb&.+ampo& +omp tb#.+ampo& !ND
ON tb&.+ampo# +omp tb#.+ampo#3 OR
ON tb&.+ampo +omp tb#.+ampo3;
!am$i8n puede anidar instrucciones 6/I@ utilizando la siguientesinta+is;
SELECT +ampos
FROM tb& (NNER WO(N
2tb# (NNER WO(N 2 tb
(NNER WO(N 2 tabla< (NNER WO(N ...3
ON tb.+ampo +omp tb
-
7/25/2019 LIBRO COMPLETO SQL
53/85
" Cantidad3 !S Hentas,
Nombre J V V J !pellidos !S Nombre +ompleto FROM
Detalles de pedidos,
Pedidos, Empleados, Pedidos (NNER WO(N Detalles de pedidosON Pedidos.
(D de pedido 4 Detalles de pedidos.(D de pedido,Empleados (NNER WO(N
Pedidos ON Empleados.(D de empleado 4 Pedidos.(D de
empleado ROGP B
Nombre J V V J !pellidos;
Crea dos com$inaciones e
-
7/25/2019 LIBRO COMPLETO SQL
54/85
CONSULTAS DE
UNIN EXTERNASAprenderemos a Bacer consultas com$inando los resultados dedos o m-s consultas o ta$las independientes
1*. CONSULTAS DE UNIN
EXTERNASSe utiliza la operacin =NIONpara crear una consulta de unincom$inando los resultados de dos o m-s consultas o ta$lasindependientes. Su sinta+is es;
http://www.maestrosdelweb.com/editorial/tutsql10/http://www.maestrosdelweb.com/editorial/tutsql10/http://www.maestrosdelweb.com/editorial/tutsql10/http://www.maestrosdelweb.com/editorial/tutsql10/ -
7/25/2019 LIBRO COMPLETO SQL
55/85
T!BLE +ons%lta& GN(ON !LL T!BLE
+ons%lta# GN(ON !LL T!BLE +ons%ltan ...
E" &o"&e:
o"s>/t%#, o"s>/t%', o"s>/t%"; Son instrucciones SELECTel nom$re de una consulta almacenada o el nom$re de una ta$laalmacenada precedido por la pala$ra cla9e TABLE. ,uedecom$inar los resultados de dos o m-s consultas ta$las einstrucciones SELECT en cualnica
operacin =NION. *l e0emplo siguiente com$ina una ta$lae+istente llamada )uevas #uentasy una instruccin SELECT;
T!BLE N%e5as C%entas GN(ON !LL SELECT " FROM Clientes)/ERE Cantidad pedidos 0 &''';
Si no se indica lo contrario no se de9uel9en registros duplicadoscuando se utiliza la operacin =NION,no o$stante puede incluir elpredicado ALLpara asegurar
-
7/25/2019 LIBRO COMPLETO SQL
56/85
SELECT Nombre de +ompaKIa,
Ci%dad FROM Pro5eedores )/ERE
PaIs 4 *Brasil* GN(ON SELECT Nombre de +ompaKIa,
Ci%dad FROM Clientes
)/ERE PaIs 4 VBrasilV
Recupera los nom$res y las ciudades de todos pro9eedores yclientes de rasil
SELECT Nombre de +ompaKIa,
Ci%dad FROM Pro5eedores )/ERE PaIs 4 *Brasil*
GN(ON SELECT Nombre de +ompaKIa, Ci%dad FROM Clientes)/ERE PaIs 4 *Brasil* ORDER B Ci%dad
Recupera los nom$res y las ciudades de todos pro9eedores yclientes radicados en rasil ordenados por el nom$re de laciudad.
SELECT Nombre de +ompaKIa,
Ci%dad FROM Pro5eedores )/ERE PaIs 4 *Brasil*
GN(ON SELECT Nombre de +ompaKIa, Ci%dad FROM Clientes)/ERE
-
7/25/2019 LIBRO COMPLETO SQL
57/85
PaIs 4 *Brasil* GN(ON SELECT !pellidos, Ci%dad FROMEmpleados )/ERE Regi:n 4 *!mYri+a del S%r
Recupera los nom$res y las ciudades de todos los pro9eedores yclientes de $rasil y los apellidos y las ciudades de todos losempleados de Am8rica del Sur.
T!BLE Lista de +lientes GN(ON T!BLE
Lista de pro5eedores
Recupera los nom$res y cdigos de todos los pro9eedores yclientes.
ESTRUCTURAS DELAS TABLAS
Aprenderemos la estructura de las ta$las creacin de =ndices ycomo modi&iciar el diseEo de las mismas.
11. ESTRUCTURAS DE LAS TABLAS11.1 CREACIN DE TABLAS NUEVAS
http://www.maestrosdelweb.com/editorial/tutsql11/http://www.maestrosdelweb.com/editorial/tutsql11/http://www.maestrosdelweb.com/editorial/tutsql11/http://www.maestrosdelweb.com/editorial/tutsql11/ -
7/25/2019 LIBRO COMPLETO SQL
58/85
Si se est- utilizando el motor de datos de icroso&t para accedera $ases de datos access slo se puede emplear esta instruccinpara crear $ases de datos propias de access. Su sinta+is es;
T!BLE +ons%lta& GN(ON !LL T!BLE
+ons%lta# GN(ON !LL T!BLE +ons%ltan ...
E" &o"&e:
Par,e Descripcin
,a7+a Es el nombre de la tabla que se desea modificar.
campoEs el nombre del campo que se va a aMadir
o eliminar.
,ipo Es el tipo de campo que se va a aMadir.
,ama2oEs el tamaMo del campo que se va a aMadir
Fslo para campos de textoH.
8ndice
Es el nombre del ndice del campo Fcuando
se crean camposH o el nombre del ndice de la tabla que se
desea eliminar.
8ndice
m*+,icampo
Es el nombre del ndice del campo multicampo
Fcuando se crean camposH o el nombre del ndice de la tabla
que se desea eliminar.
-
7/25/2019 LIBRO COMPLETO SQL
59/85
CRE!TE T!BLE Empleados 2Nombre TEUT
2#$3 , !pellidos TEUT 2$'33;
Crea una nue9a ta$la llamada (mpleadoscon dos campos unollamado )ombrede tipo te+to y longitud 25 y otrollamado*pellidoscon longitud 5).
CRE!TE T!BLE Empleados 2Nombre TEUT
2&'3, !pellidos TEUT,
Fe+=aNa+imiento D!TET(ME3 CONSTR!(NT (ndi+eeneralGN(ZGE
2Nombre, !pellidos, Fe+=aNa+imiento3;
Crea una nue9a ta$la llamada (mpleados con un
campo )ombre de tipo te+to y longitud 1) otro con llamado*pellidos de tipo te+to y longitud predeterminada 5) y uno m-sllamado +echa)acimiento de tipo FecBaJora. !am$i8n crea un=ndice >nico no permite 9alores repetidos &ormado por los trescampos.
CRE!TE T!BLE Empleados 2(D (NTEER CONSTR!(NT
(ndi+ePrimario PR(M!R,
Nombre TEUT, !pellidos TEUT, Fe+=aNa+imiento D!TET(ME3;
Crea una ta$la llamada (mpleadoscon un campo !e+to delongitud predeterminada 5) llamado )ombrey otro igual
-
7/25/2019 LIBRO COMPLETO SQL
60/85
llamado*pellidos crea otro campo llamado +echa)acimientodetipo FecBaJora y el campo -'de tipo entero el nico campo o si se trata de un campomulti=ndice. Si se utiliza el motor de datos de icroso&t slo podr-utilizar esta cl-usula con las $ases de datos propias de dicBomotor.
,ara los =ndices de campos >nicos;
CONSTR!(NT nombre [PR(M!R AE GN(ZGE
REFERENCES tabla e
-
7/25/2019 LIBRO COMPLETO SQL
61/85
Par,e Descripcin
nom7reEs el nombre del ndice que se va acrear.
primarioNEs el nombre del campo o de los campos queforman el ndice primario.
*nicoNEs el nombre del campo o de los campos queforman el ndice de clave nica.
re9N
Es el nombre del campo o de los campos queforman el ndice externo FLacen referencia a campos de otra
tablaH.
,a7+a e',ernaEs el nombre de la tabla que contiene el campo
o los campos referenciados en ref!
campos e',ernosEs el nombre del campo o de los campos de la
tabla externa especificados por ref5, ref6, O, ref!
Si se desea crear un =ndice para un campo cuando se estautilizando las instrucciones ALTER TABLEo CREATE TABLEla
cl-usula CONTRAINTde$e aparecer inmediatamente despu8s dela especi&icacin del campo inde+ado.
Si se desea crear un =ndice con m>ltiples campos cuando se est-utilizando las instruccionesALTER TABLE o CREATE TABLE lacl-usula CONSTRAINTde$e aparecer &uera de la cl-usula decreacin de ta$la.
-
7/25/2019 LIBRO COMPLETO SQL
62/85
Tipo de Indice Descripcin
UNI:UE Penera un ndice de clave nica.Go que implica que los registros de la tabla no pueden contener el
mismo valor en los campos indexados.
PRIMAR %E
Penera un ndice primario el campo o
los campos especificados. Codos los campos de la clave principal deben
ser nicos y no nulos, cada tabla slo puede conteneruna nica clave principal.
FOREIGN %E
Penera un ndice externo Ftoma comovalor del ndice campos contenidos en otras tablasH. Ai la
clave principal de la tabla externa consta de m%s de un campo,
se debe utilizar una definicin de ndice de mltiplescampos, listando todos los campos de referencia, el nombre de la tabla
externa, y los nombres de los campos referenciados en la tabla externa
en el mismo orden que los campos de referencia listados. Ai los campos
referenciados son la clave principal de la tabla externa, no tieneque especificar los campos referenciados, predeterminado por valor,
el motor Qet se comporta como si la clave principal de la tabla externa
fueran los campos referenciados .
11.3 CREACIN DE (NDICESSi se utiliza el motor de datos 6et de icroso&t slo se puedencrear =ndices en $ases de datos del mismo motor. a sinta+is paracrear un =ndice en una ta$la ya de&inida en la siguiente;
CRE!TE GN(ZGE (NDEU Indi+eON tabla 2+ampo !SCDESC, +ampo !SCDESC, ...3
)(T/ [ PR(M!R D(S!LLO) NGLL (NORE NGLL \
-
7/25/2019 LIBRO COMPLETO SQL
63/85
E" &o"&e:
Par,e Descripcin
8ndice Es el nombre del ndice a crear.
,a7+aEs el nombre de una tabla existente en la que
se crear% el ndice.
campoEs el nombre del campo o lista de campos que
constituyen el ndice.
ASC;DESC
$ndica el orden de los valores de los campos
>A indica un orden ascendente Fvalor predeterminadoH y "EA un ordedescendente.
UNI:UE$ndica que el ndice no puede contenervalores duplicados.
DISALLOW NULL @roLbe valores nulos en el ndice
IGNORE NULLExcluye del ndice los valores nulos
incluidos en los campos que lo componen.
PRIMAR
>signa al ndice la categora
de clave principal, en cada tabla slo puede existir un nicondice que sea lave @rincipal. Ai un ndice es clave
principal implica que no puede contener valores nulos ni duplicados.
Se puede utilizar CREATE INDEX para crear un pseudo =ndiceso$re una ta$la ad0unta en una &uente de datos ODBCtal comoSQL
-
7/25/2019 LIBRO COMPLETO SQL
64/85
Server
-
7/25/2019 LIBRO COMPLETO SQL
65/85
de +ampo2tamaKo3 CONSTR!(NT Indi+e
CONSTR!(NT Indi+e m%lti+ampo\
DROP [COLGMN +ampo ( CONSTR!(NT nombre del Indi+e\ \
E" &o"&e:
Par,e Descripcin
,a7+a Es el nombre de la tabla que se desea modificar.
campoEs el nombre del campo que se va a aMadir
o eliminar.
,ipo Es el tipo de campo que se va a aMadir.
,ama2oEs el tamaMo del campo que se va a aMadir
Fslo para campos de textoH.
8ndice
Es el nombre del ndice del campo Fcuando
se crean camposH o el nombre del ndice de la tabla que se
desea eliminar.
8ndicem*+,icampo
Es el nombre del ndice del campo multicampoFcuando se crean camposH o el nombre del ndice de la tablaque se desea eliminar.
Operacin Descripcin
-
7/25/2019 LIBRO COMPLETO SQL
66/85
ADD COLUMN
Ae utiliza para aMadir un nuevo campo
a la tabla, indicando el nombre, el tipo de campo y opcionalmente
el tamaMo Fpara campos de tipo textoH.
ADDAe utiliza para agregar un ndice de
multicampos o de un nico campo.
DROP COLUMN Ae utiliza para borrar un campo. Ae especifica nicamente el nombre del cam
DROP
Ae utiliza para eliminar un ndice.
Ae especifica nicamente el nombre del ndice a continuacin
de la palabra reservada '!AC7>$!C.
!LTER T!BLE Empleados !DD COLGMN Salario
CGRRENC;
Agrega un campo Salario de tipo oneda a la ta$la (mpleados.
!LTER T!BLE Empleados DROP COLGMN Salario;
*limina el campo !alario de la ta$la(mpleados.
!LTER T!BLE Pedidos !DD CONSTR!(NT Rela+ionPedidos
FORE(N AE
-
7/25/2019 LIBRO COMPLETO SQL
67/85
2(DEmpleado3 REFERENCES Empleados 2(DEmpleado3;
Agrega un =ndice e+terno a la ta$la %edidos. *l =ndice e+terno se$asa en el campo-'(mpleadoy se re&iere alcampo-'(mpleado de la ta$la (mpleados. *n este e0emplo noes necesario indicar el campo 0unto al nom$re de la ta$la en lacl-usula RE6ERENCES pues -'(mpleadoes la cla9e principalde la ta$la (mpleados.
!LTER T!BLE Pedidos DROP CONSTR!(NTRela+ionPedidos;
*limina el =ndice de la ta$la %edidos.
CONSULTAS CONPARMETROS
http://www.maestrosdelweb.com/editorial/tutsql12/http://www.maestrosdelweb.com/editorial/tutsql12/http://www.maestrosdelweb.com/editorial/tutsql12/http://www.maestrosdelweb.com/editorial/tutsql12/ -
7/25/2019 LIBRO COMPLETO SQL
68/85
as consultas con par-metros son as
-
7/25/2019 LIBRO COMPLETO SQL
69/85
P!R!METERS Pre+ioMinimo C%rren+_, Fe+=a(ni+io
DateTime;
SELECT (DPedido, Cantidad FROM Pedidos )/ERE Pre+io 0Pre+ioMinimo
!ND Fe+=aPedido 04 Fe+=a(ni+io;
*l e0emplo siguiente muestra como utilizar los par-metros en elprograma de Visual Basic;
P%bli+ S%b eneraCons%lta23
Dim SZL !s String
Dim Zd !s Z%er_Def
Dim Rs !s Re+ordset
SZL 4 VP!R!METERS Pre+ioMinimo C%rren+_, Fe+=a(ni+ioDateTime; V
SZL 4 SZL J VSELECT (DPedido, Cantidad FROM Pedidos)/ERE Pre+io0 V
SZL 4 SZL J VPre+ioMinimo !ND Fe+=aPedido 04Fe+=a(ni+io; V
Set Zd 4 BaseDatos.CreateZ%er_Def2MiCons%lta, SZL3Zd.Parameters`Pre+ioMinimo 4 #
Zd.Parameters`Fe+=a(ni+io 4 >&??8$>
-
7/25/2019 LIBRO COMPLETO SQL
70/85
Set Rs 4 Zd.OpenRe+ordset23
End S%b
E)emp/o:
P!R!METERS Es+riba los !pellidos
Te
-
7/25/2019 LIBRO COMPLETO SQL
71/85
datos
-
7/25/2019 LIBRO COMPLETO SQL
72/85
,ara recuperar datos de una ta$la de &BASE IIIBay
-
7/25/2019 LIBRO COMPLETO SQL
73/85
OMITIR LOS PERMISOSDE E,ECUCIN
*n entornos de $ases de datos con permisos de seguridad paragrupos de tra$a0o se puede utilizar la cl-usula NI!J/N@*RACC*SS /,!I/@ para
-
7/25/2019 LIBRO COMPLETO SQL
74/85
SELECT !pellido, Nombre, Salario FROM
Empleados ORDER B !pellido
)(T/ O)NER!CCESS OPT(ON;
*sta opcin re
-
7/25/2019 LIBRO COMPLETO SQL
75/85
Par,e Descripcin
Nom7reCons*+,a Es el nombre con se guardar% la consultaen la base de datos.
Par
-
7/25/2019 LIBRO COMPLETO SQL
76/85
!signa el nombre Res%men a la +ons%lta e in+l%_e dos parmetros
TGTOR(!L DE SZL,!NEUOS
Ane+os del !utorial de S7 y resolucin de pro$lemas
& !NEUOS
&.& RESOLGC(NDE PROBLEM!S
&.&.& BGSC!R(NFORM!C(N DGPL(C!D! EN GN C!MPO DE GN! T!BL!.
,ara generar este tipo de consultas lo m-s sencillo es utilizar el
asistente de consultas de Aess editar la sentencia SQLde la
consulta y pegarla en nuestro cdigo. @o o$stante este tipo de
consulta se consigue de la siguiente &orma;
SELECT D(ST(NCTRO) Lista de Campos a His%ali9ar FROM Tabla
)/ERE CampoDeB%s%eda (n 2SELECT CampoDeB%s%edaFROM Tabla !s ps%d:nimo
http://www.maestrosdelweb.com/editorial/tutsql16/http://www.maestrosdelweb.com/editorial/tutsql16/http://www.maestrosdelweb.com/editorial/tutsql16/http://www.maestrosdelweb.com/editorial/tutsql16/ -
7/25/2019 LIBRO COMPLETO SQL
77/85
ROGP B CampoDeB%s%eda /!H(N Co%nt2"30& 3 ORDER BCampoDeB%s%eda;
(n caso pr-ctico si deseamos localizar a
-
7/25/2019 LIBRO COMPLETO SQL
78/85
LEFT WO(N Pedidos ON Prod%+tos.(dProd%+to 4 Pedidos.(dProd%+t)/ERE
2Pedidos.(dProd%+to (s N%ll3 !ND 2Pedidos.Fe+=a Bet6een >'&'&87> !nd
>'&'87>3;
a sinta+is es sencilla se trata de realizar una unin interna entre
dos ta$las seleccionadas mediante un LE6T GOIN esta$leciendo
como condicin //.
&.# GTL(!RSZL DESDE H(SG!L B!S(C
*+isten dos tipos de consultas SQL; las consultas de seleccin
nos de9uel9en datos y las consultas de accin a
-
7/25/2019 LIBRO COMPLETO SQL
79/85
Set RS4MiBaseDatos.OpenRe+ordSet2SZL3
Si la consulta de seleccin se encuentra almacenada en una
consulta de la $ase de datos;
Set RS4MiBaseDatos.OpenRe+ordset2VMiCons%ltaV3
as consultas de accin al no de9ol9er ning>n registro no las
podemos asignar a ning>n recordset en este caso la &orma de
e0ecutarlas es mediante los m8todos Exe>te
y Exe>teSQLpara $ases de datos ODBC por e0emplo;
Dim SZL as string
SZL 4 VDELETE " FROM Empleados )/ERE Categoria 4*Ordenan9a*;V
MiBaseDatos.E
-
7/25/2019 LIBRO COMPLETO SQL
80/85
T0; Hariable4T0; De5%el5e la =ora a+t%al del sistema
"7 Hariable4"7 Hariable4M9>
-
7/25/2019 LIBRO COMPLETO SQL
81/85
Comien9o!Ko3
,arte representa a la porcin de &ecBa /ora
; Min%tos
-
7/25/2019 LIBRO COMPLETO SQL
82/85
Seg%ndos
ComienzoSemanaindica el primer d=a de la semana. osposi$les 9alores son;
V97 D/708/0
*Gtili9a el 5alorpode efe+to del sistema
1Domingo 2Halorpredeterminado3
2 L%nes
3 Martes
4 MiYr+oles
5 W%e5es
6 Hiernes
$ Sbado
ComienzoAoindica cual es la primera semana del aEo los
posi$les 9alores son;
-
7/25/2019 LIBRO COMPLETO SQL
83/85
-
7/25/2019 LIBRO COMPLETO SQL
84/85
i2TU!pellido.Te
-
7/25/2019 LIBRO COMPLETO SQL
85/85
3. as operaciones siempre la primera letra con may>sculasy el resto en min>sculas.
4. os operadores lgicos incluidos en otros operadores la
primera letra con may>sculas y el resto con min>sculas.
os @om$res de las !a$las Campos y Consultas los escri$o
siempre la primera letra con may>sculas y el resto con
min>sculas en algunos casos utilizo el car-cter POP para de&inir
me0or el nom$re; "etallesO,edidos.
Aun