LIBRO COMPLETO SQL

download LIBRO COMPLETO SQL

of 85

Transcript of LIBRO COMPLETO SQL

  • 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