mod 2 sub 2 bd avanzadas unidad 2

Upload: alberto-casados

Post on 08-Jul-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    1/32

    Diseña y Administra Bases de Datos

    Avanzadas.

    II. El ESTÁNDAR T-SQL

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    2/32

    Contenido.

    • El estándar T-SQL.

    • Comandos de T-SQL.

     – Comandos DDL (Lenguaje de defnición

    de datos). – Comandos DML (Lenguaje de

    maniulación de datos).

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    3/32

    C!ANDS DDL "DATA DE#INITINLAN$%A$E&

    “Existen herramientas para crear toda clase de objetos, los

    datos no son la excepción” 

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    4/32

    Comandos del Len'(a)e de De*ini+i,nde Datos.

    Las sentencias DDL se utili!an ara crear " modifcarla estructura de las ta#las as$ como otros o#jetos dela #ase de datos.

    CREATE - ara crear o#jetos en la #ase de datos.

    •  ALTER - modifca la estructura de la #ase de datos.

    • DROP - #orra o#jetos de la #ase de datos.

    • TRUNCATE - elimina todos los registros de la ta#la%inclu"endo todos los esacios asignados a losregistros.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    5/32

    Create Tale

    Las ta#las son la estructura #ásica donde se almacena lain&ormación en la #ase de datos.

    Dado 'ue en la ma"or$a de los casos% no a" &orma de 'ue elroeedor de #ase de datos sea con antelación cuales son

    sus necesidades de almacenamiento de datos% es ro#a#le'ue necesite crear ta#las en la #ase de datos usted mismo.

    La sinta*is del resente comando se descri#e a continuación+

    CREATE TABLE "nombre_tabla"("columna 1" "tipo_de_datos_para_columna_1","columna 2" "tipo_de_datos_para_columna_2",... )

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    6/32

    Create Tale

    , artir del ejemlo de comando reiamenteisto% lantearemos el siguiente ejemlodemostratio de como crear una ta#la araalmacenar datos de clientes.

    CREATE TABLE Customer(!irst_ame c#ar($%),Last_ame c#ar($%),

    Address c#ar($%),Cit& c#ar($%),Countr& c#ar(2$),Birt#_'ate datetime)

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    7/32

    Create Tale

    En ocasiones será necesario otorgar un alor or de&ault aciertos camos en la ta#la a fn de simlifcar los rocesos decatura ara los usuarios. En el siguiente ejemlo odemoser una demostración+

    CREATE TABLE Customer(!irst_ame c#ar($%),Last_ame c#ar($%),Address c#ar($%) deault o Conocido*,Cit& c#ar($%) deault Tampico*,Countr& c#ar(2$),

    Birt#_'ate datetime)

    ara criterios mas esecifcos de control so#re los camos deuna ta#la% odemos usar un commando denominadoC+TRA-T.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    8/32

    Create Tale - CNSTRAINT

    uede colocar restricciones ara limitar el tio de dato 'ue uedeingresarse en una ta#la.

    Dicas restricciones ueden esecifcarse cuando la ta#la se creaor rimera e! a tras de la instrucción CREATE TABLE% o

    luego de crear la ta#la a tras de la instrucción ALTER TABLE.

    Los tios comunes de restricciones inclu"en las siguientes+

    - +T LL - -/E 

    - C0EC  - Clae primaria - Clae e3terna 

    Cada uno se descri#e en detalle a continuación.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    9/32

    Create Tale - CNSTRAINT

    +T LL 

    En &orma redeterminada% una columna uede ser /0LL. Si nodesea ermitir un alor /0LL en una columna% 'uerrá colocar unarestricción en esta columna esecifcando 'ue /0LL no es aora

    un alor ermitido.

    or ejemlo% en la siguiente instrucción+

    CREATE TABLE Customer(-' inte4er +T LL,

    Last_ame arc#ar (5%) +T LL,!irst_ame arc#ar(5%)) 

    Las columnas 1S2D3 " 1Last4/ame3 no inclu"en /0LL% mientras'ue 15irst4/ame3 uede incluir /0LL.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    10/32

    Create Tale - CNSTRAINT

    -/E 

    La restricción 0/2Q0E asegura 'ue todos los alores en una columna seandistintos.

    or ejemlo% en la siguiente instrucción+

    CREATE TABLE Customer(-' inte4er ni6ue,Last_ame arc#ar (5%),!irst_ame arc#ar(5%))

    La columna 1S2D3 no uede incluir alores dulicados% mientras dicarestricción no se alica ara columnas 1Last4/ame3 " 15irst4/ame3.

    or &aor note 'ue una columna 'ue se esecifca como clae rimariatam#in uede ser 6nica. ,l mismo tiemo% una columna 'ue es 6nicauede o no ser clae rimaria.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    11/32

    Create Tale - CNSTRAINT

    C0EC  

    La restricción C7EC8 asegura 'ue todos los alores en unacolumna cumlan ciertas condiciones.

    or ejemlo% en la siguiente instrucción+

    CREATE TABLE Customer(-' inte4er C0EC  (-' 7 %),Last_ame arc#ar (5%),!irst_ame arc#ar(5%))

    La columna 1S2D3 sólo de#e incluir enteros ma"ores a 9.

    or &aor note 'ue la restricción C0EC  no sea ejecutada orM"SQL en este momento.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    12/32

    Create Tale - Claves rimarias.

    La clae rimaria se utili!a ara identifcar en&orma 6nica cada l$nea en la ta#la. uede serarte de un registro real% o uede ser un camoartifcial (uno 'ue no tiene nada 'ue er con el

    registro real). 0na clae rimaria uede consistiren uno o más camos en una ta#la. Cuando seutili!an m6ltiles camos como clae rimaria% selos denomina claes comuestas.

    Las claes rimarias ueden esecifcarse cuandose crea la ta#la (utili!ando CREATE TABLE) ocam#iando la estructura e*istente de la ta#la(utili!ando ALTER TABLE).

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    13/32

    Create Tale - Claves rimarias.

    , continuación se resenta un ejemlo de como se maneja elcomando antes mencionado+

    CREATE TABLE Customer(-' inte4er 8R-9AR: E: ,Last_ame arc#ar(5%),

    !irst_ame arc#ar(5%))

    , continuación se resentan ejemlos ara la esecifcación de unaclae rimaria al modifcar una ta#la+

    ALTER TABLE Customer A'' 8R-9AR: E:  (-')

    ota; ,ntes de utili!ar el comando ,LTE: T,;LE ara agregar unaclae rimaria% necesitará asegurarse de 'ue el camo est defnidocomo

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    14/32

    Create Tale - Claves E/ternas.

    0na clae e*terna es un camo (o camos) 'ue se>ala la clae rimaria deotra ta#la. El roósito de la clae e*terna es asegurar la integridadre&erencial de los datos. En otras ala#ras% sólo se ermiten los alores 'uese eseran 'ue aare!can en la #ase de datos.

    or ejemlo% digamos 'ue tenemos dos ta#las% una ta#la CUSTOMER 'ue

    inclu"e todos los datos del CUSTOMER% " la ta#la ORDERS 'ue inclu"e losedidos del CUSTOMER.

    La restricción a'u$ es 'ue todos los edidos de#en asociarse con unCUSTOMER 'ue "a se encuentra en la ta#la CUSTOMER.

    En este caso% colocaremos una clae e*terna en la ta#la ORDERS  " la

    relacionaremos con la clae rimaria de la ta#la CUSTOMER. De esta&orma% nos aseguramos 'ue todos los edidos en la ta#la ORDERS  estnrelacionadas con un CUSTOMER en la ta#la CUSTOMER.

    En otras ala#ras% la ta#la ORDERS no uede contener in&ormación de unCUSTOMER 'ue no se encuentre en la ta#la CUSTOMER.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    15/32

    Create Tale - Claves E/ternas.

    La estructura de estas dos ta#las será lasiguiente+

     

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    16/32

    Create Tale - Claves E/ternas.

    En el ejemlo anterior% la columna Customer4S2D en la ta#la =:DE:S esuna clae e*terna se>alando la columna S2D en la ta#la C0ST=ME:.

    , continuación se muestran ejemlos de cómo esecifcar la claee*terna a la ora de crear la ta#la =:DE:S+

    CREATE TABLE +R'ER(+rder_-' inte4er 8R-9AR: E:,+rder_'ate datetime,Customer_-' inte4er RE!ERECE CT+9ER (-'),Amount double) 

    , continuación se resenta un ejemlo ara la esecifcación de una clae

    e*terna al modifcar una ta#la+ Esto asume 'ue se a creado la ta#laORDERS% " 'ue la clae e*terna toda$a no se a ingresado+

    ALTER TABLE +R'ERA'' !+RE-

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    17/32

    Create Tale - 0ndi+es.

    Los $ndices nos a"udan a o#tener datos de las ta#las en &ormamás ráida.

    0tilicemos un ejemlo ara ilustrar este unto+ Digamos 'ueestamos interesados en leer en un li#ro de jardiner$a acerca de

    cómo cultiar imientos.

    En e! de leer el li#ro desde el comien!o asta 'ueencontremos una sección so#re imientos% es muco másráido ara nosotros ir a la sección $ndice al fnal del li#ro%u#icar 'u áginas contienen la in&ormación so#re imientos% "

    luego dirigirnos a esas áginas directamente.

    ,l dirigirnos al $ndice rimero aorramos tiemo " seguramentees el mtodo más efciente ara u#icar la in&ormación 'uenecesitamos.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    18/32

    Create Tale - 0ndi+es.

    El mismo rinciio se alica ara la o#tención de datosdesde una ta#la de #ase de datos.

    Sin un $ndice% el sistema de #ase de datos lee a trasde toda la ta#la (este roceso se denomina 1escaneo deta#la3) ara locali!ar la in&ormación deseada.

    Con el $ndice correcto en su lugar% el sistema de #ase dedatos uede entonces rimero dirigirse al $ndice araencontrar de dónde o#tener los datos% " luego dirigirse adicas u#icaciones ara o#tener los datos necesarios.

    Esto es muco más ráido.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    19/32

    Create Tale - 0ndi+es.

    or lo tanto% generalmente se recomienda crear $ndices en ta#las. 0n$ndice uede cu#rir una o más columnas.

    La sinta*is general ara la creación de un $ndice es+

    CREATE -'E= "+9BRE_>'-CE" + "+9BRE_TABLA"

    (+9BRE_C+L9A)

    Digamos 'ue tenemos la siguiente ta#la+

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    20/32

    Create Tale - 0ndi+es.

    Si deseamos crear un $ndice tanto en Ciudad como en a$s% ingresar$amos+

    CREATE -'E= -'=_CT+9ER_LAT_A9E+ Customer (Last_ame)

    ara crear un $ndice 'ue com#ine los camos ciudad " a$s% ingresamos+

    CREATE -'E= -'=_CT+9ER_L+CAT-++ Customer (Cit&, Countr&)

    /o a" una regla estricta resecto de cómo nom#rar un $ndice. El mtodogeneralmente acetado es colocar un refjo% tal como 12D?43% antes del

    nom#re de un $ndice ara eitar la con&usión con otros o#jetos de la #asede datos.

     Tam#in es una #uena idea #rindar in&ormación so#re 'u ta#la "columna(s) se utili!ará el $ndice.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    21/32

    Alter Tale.

    0na e! 'ue se crea la ta#la en la #ase de datos% a" mucas ocasionesdonde uno uede desear cam#iar la estructura de la ta#la. Los casost$icos inclu"en los siguientes+

    - ,gregar una columna.- Eliminar una columna.

    - Cam#iar el nom#re de una columna.- Cam#iar el tio de datos ara una columna.

    or &aor note 'ue lo anterior no es una lista e*austia. 7a" otrasinstancias donde ALTER TABLE se utili!a ara cam#iar la estructura dela ta#la% tales como cam#iar la esecifcación de la clae rimaria oagregar una restricción 6nica ara una columna.

    La sinta*is SQL ara ALTER TABLE es+

    ALTER TABLE "nombre_tabla"?Especi@cacin de modi@cacin

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    22/32

    Alter Tale.

    Deende del tio de modifcación 'ue deseamos reali!ar. ara losusos mencionados anteriormente% las instrucciones ?Especi@cacinde modi@cacin son+

    •  Agregar una columna: ,DD 1columna @3 1tios de datos aracolumna @3

    • Eliminar una columna: D:= 1columna @3

    • Cambiar el nombre de una columna:  C7,/AE 1nom#reantiguo de la columna3 1nueo nom#re de la columna3 1tios dedatos ara la nuea columnaB.

    • Cambiar el tipo de datos para una columna:  M=D251columna @3 1nueo tio de datos3

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    23/32

    Alter Tale.

    rimero% deseamos agregar una columna denominada 1Aender3 a esta ta#la. ara acerlo% ingresamos+

    ALTER TABLE Customer A''

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    24/32

    Alter Tale.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    25/32

    Dro1 Tale.

    , eces odemos decidir 'ue necesitamos eliminar una ta#la en la#ase de datos or alguna ra!ón. De eco% ser$a ro#lemático si noodemos acerlo "a 'ue esto crear$a una esadilla demantenimiento ara D;,. ,&ortunadamente% SQL nos ermiteacerlo% "a 'ue odemos utili!ar el comando 'R+8 TABLE. Lasinta*is ara 'R+8 TABLE es

    'R+8 TABLE "nombre_tabla"

    Entonces% si deseamos eliminar una ta#la denominada cliente 'uecreamos en la sección CREATE TABLE% simlemente ingresamos

    'R+8 TABLE Customer

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    26/32

    C!ANDS D!L "DATA !ANI%LATINLAN$%A$E&

    “Después de creada nuestra estructura de datos, sigue elingreso de información; para lo cual, también tenemos

    herramientas.” 

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    27/32

    Insert.

    En las secciones anteriores% emos isto cómo o#tener in&ormación de ta#las.ero Cómo se ingresan estas flas de datos en estas ta#las en rimer lugarFEsto es lo 'ue se trata en esta sección% 'ue e*lica la instrucción -ERT% " enla siguiente sección% 'ue e*lica la instrucción 8'ATE.

    En SQL% a" &undamental " #ásicamente dos &ormas ara -RER datos enuna ta#la+ 0na es insertar una fla or e!% " la otra es insertar flas m6ltiles

    or e!.

    La sinta*is ara insertar datos en una ta#la mediante una fla or e! es lasiguiente+

    -ERT -T+ "nombre_tabla" ("columna1", "columna2", ...)DALE ("alor1", "alor2", ...)

    Ejemlo+

    -ERT -T+ tore_-normation (tore_ame, ales, T3n_'ate)DALE (*Los An4eles*, %%, *1%FGanF1*)

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    28/32

    Insert.

    El segundo tio de -ERT -T+ nos ermite insertar flas m6ltilesen una ta#la. , di&erencia del ejemlo anterior% donde insertamosuna 6nica fla al esecifcar sus alores ara todas las columnas%aora utili!amos la instrucción ELECT  ara esecifcar los datos'ue deseamos insertar en la ta#la.

    Si está ensando si esto signifca 'ue está utili!ando in&ormación deotra ta#la% está en lo correcto. La sinta*is es la siguiente+

    -ERT -T+ "tabla1" ("columna1", "columna2", ...)ELECT "columna5", "columnaH", ...!R+9 "tabla2"

    /ote 'ue esta es la &orma más simle. La instrucción entera uedecontener &ácilmente cláusulas I0ERE%

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    29/32

    Insert.

    Entonces or ejemlo% si deseamos tener una ta#laStore!n"ormation% 'ue recolecte la in&ormación de entas ara ela>o @GGH% " "a conoce en donde reside la &uente de datos en ta#alaSales!n"ormation% ingresaremos+

    -ERT -T+ tore_-normation (tore_ame, ales,

    T3n_'ate)ELECT tore_ame, ales, T3n_'ate!R+9 ales_-normationI0ERE :ear (T3n_'ate) J 1K

    ,'u$ emos utili!ado la sinta*is de Seridor SQL ara e*traer la

    in&ormación anual or medio de una &eca. =tras #ases de datosrelacionales ueden tener sinta*is di&erentes. or ejemlo% en=racle% utili!ará T+_C0AR (T3n_'ate, *&&&&*) J 1K.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    30/32

    %1date.

    0na e! 'ue a" datos en la ta#la% odr$amos tener la necesidad demodifcar los mismos. ara acerlo% utili!amos el comando 8'ATE.La sinta*is ara esto es+

    8'ATE "nombre_tabla"ET "columna_1" J ?nueo alor

    I0ERE "condicin"

    0n ejemlo alicado de esta instrucción es el siguiente+

    8'ATE tore_-normationET ales J $%%I0ERE tore_ame J *Los An4eles*A' T3n_'ate J *%KFGanF1*

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    31/32

    %1date.

     Tam#in es osi#le 8'ATE m6ltiles columnas al mismo tiemo.La sinta*is en este caso se er$a como la siguiente+

    8'ATE "nombre_tabla"ET column 1 J ??alor1, column 2 J ?alor2I0ERE "condicin"

    ota; Se de#e tener esecial cuidado con el criterio utili!ado arala selección de los datos a ser modifcadosI rocurando no manejarcondiciones 'ue sean de un amlio esectro de inclusión.

  • 8/19/2019 Mod 2 Sub 2 BD Avanzadas Unidad 2

    32/32

    Delete.

    , eces odemos desear desacernos de los registros de una ta#la.ara ello% utili!amos el comando 'ELETE !R+9. La sinta*is araesto es+

    'ELETE !R+9 "nombre_tabla"I0ERE "condicin"

    0n ejemlo alicado de esto seria el siguiente+

    'ELETE !R+9 tore_-normationI0ERE tore_ame J *Los An4eles*