Manual SQL. Parte 3

download Manual SQL. Parte 3

of 4

Transcript of Manual SQL. Parte 3

  • 7/25/2019 Manual SQL. Parte 3

    1/4

    Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente

    Tutorial SQL Parte32

    Operaciones sobre conjuntos

    SQL-92 define tres operaciones para operar sobre relaciones:

    Union Intersect

    Except o Minus

    De estas tres operaciones Access slo soporta la operacin Union teniendo ue usar otros

    !ecanis!os para conse"uir los !is!os resultados ue Intersect o Minus#

    La operacin unin sobre dos selects $con los ca!pos retornados del !is!o tipo% lo ue &ace

    es de'ol'er los atributos seleccionados ue est(n en al !enos una de las dos partes de la

    unin $real!ente si!ula una unin de con)untos% * auto!(tica!ente deber+a eli!inar

    duplicados ase"urando la unicidad de los resultados de'ueltos, por e)e!plo podr+a!os &acer:

    Select dni, nombre, apellidos

    From usuarios

    Union

    Select nif, nombre, apellidos

    From enfermos

    Esta select nos de'ol'er+a los no!bres, dni, apellidos de todos nuestros usuarios * nuestros

    enfer!os, * si un usuario fuera ta!bin enfer!o slo nos de'ol'er+a un re"istro#

    La operacin intersect ser+a parecida pero ser+a la interseccin entre los con)untos es decir slo

    de'ol'er+a auellos re"istros ue est(n en a!bas selects * funcionar+a de for!a si!ilar# La

    operacin except o !inus de'ol'er+a auellos re"istros ue est(n en una relacin * no est(n

    en la otra# .ecordad ue estas dos operaciones no est(n soportadas por Access#

    Modificacin de la base de datos

    /asta a&ora en nuestro !anual, nos &e!os li!itado a extraer infor!acin de nuestra base de

    datos, pero SQL ta!bin tiene directi'as para a0adir, !odificar * eli!inar infor!acin de la

    base de datos#

    1ara insertar datos en una relacin, o bien se especifica la tupla ue se desea insertar o se

    for!ula una consulta cu*o resultado sea el con)unto de tuplas ue se desea insertar#

    b'ia!ente los 'alores de los resultados ue se 'an a insertar deben pertenecer al do!inio de

    los atributos $es decir tienen ue ser '(lidos para dic&o atributo%#

    La instruccin insert!(s sencilla corresponde a la insercin de una tupla:

    Insert into cuentas

    Values (1,Sanchez,Antonio,1000)

  • 7/25/2019 Manual SQL. Parte 3

    2/4

    Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente

    Tutorial SQL Parte32

    En este e)e!plo se est(n insertando los 'alores de una tupla en la relacin cuentas, se 'an a

    insertar los 'alores ue pasa!os en el !is!o orden de atributos ue est(n en la relacin $por

    e)e!plo en este caso codcuenta, apellidos, no!bre, cantidad# En una consulta de este tipo

    tene!os ue poner todos los ca!pos de la relacin, sino dar( un error# Si no uere!os poner

    todos los ca!pos tene!os ue explicitar los ca!pos ue 'a!os a introducir, de esta for!a el

    orden de ca!pos ta!poco tiene ue ser el de la tabla, por e)e!plo:

    insert into cuentas (nombre, apellidos, codcuenta)

    values ("Antonio","Sanchez",2)

    Si nuestra relacin tiene un ca!po autonu!rico, no &ace falta !andarlo sino ue lo "enerar(

    auto!(tica!ente el !otor de base de datos# Si el ca!po codcuenta es un autonu!rico

    bastar( con una sentencia de este tipo:

    insert into cuentas (nombre, apellidos, cantidad)

    values ("Antonio","Sanchez",2.0)

    Muc&as 'eces 'a!os a uerer insertar las tuplas ue son el resultado de una consulta por

    e)e!plo si tene!os una relacin de usuarios con los ca!pos no!bre * apellidos * uere!os

    a0adirlos a nuestra relacin de cuentas con una cantidad de 34444 si!ple!ente tendre!os

    ue &acer:

    insert into cuentas (nombre, apellidos, cantidad)

    select nombre,apellidos,10000

    from usuarios

    en esta select esta!os introduciendo en el ca!po cantidad un 'alor de 34444

    auto!(tica!ente sin ser un ca!po de la tabla usuarios# En la select ue &ace!os para sacar

    los datos pode!os reali5ar condiciones o cualuier otra funcin de las ue &e!os 'isto en los

    te!as anteriores#

    En deter!inadas situaciones deseare!os ca!biar un 'alor deter!inado dentro de una tupla

    sin ca!biar toda la tupla, para estas situaciones utili5are!os la instruccin update# 1or

    e)e!plo si uere!os !odificar el ca!po cantidad de todos nuestras tuplas a0adindoles un

    346 si!ple!ente tendr+a!os ue &acer:

    Update cuentasSet cantidad=cantidad * 1.1

    7e!os ue en la instruccin se &ace update de la relacin * tene!os ue establecer con la

    instruccin setel ca!po * el 'alor por l ue lo uere!os !odificar, obser'ar ue se puede

    usar el !is!o u otro ca!po de nuestra relacin para el c(lculo del nue'o 'alor# En este caso se

    usa el 'alor ue tiene el ca!po ue se eli)a en esa !is!a tupla, por e)e!plo si tene!os una

    tabla con al !enos dos ca!pos nu!ricos: ca!po3 * ca!po2 con los 'alores en una

    deter!inada tupla de 344 * 8 pode!os &acer la si"uiente !odificacin:

    Update tabla

    Set campo1 = campo2 * campo1

    Despus de esta sentencia nuestra tupla tendr( los 'alores ca!po3844 * ca!po28

  • 7/25/2019 Manual SQL. Parte 3

    3/4

    Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente

    Tutorial SQL Parte32

    Se pueden aplicar condiciones en nuestra sentencia para deter!inar en ue tuplas se reali5a la

    !odificacin !ediante la cl(usula where, por e)e!plo:

    Update tabla

    Set campo1 = campo2 * campo1

    Where campo1 > 50

    La !odificacin se reali5ar( slo en auellas tuplas en las ue el ca!po3 sea estricta!ente

    !a*or de 84#

    Del !is!o !odo ue se pueden insertar * !odificar tuplas podre!os borrarlas, &a* ue tener

    en cuenta ue slo se podr(n borrar tuplas no pode!os borrar 'alores de atributos $en todo

    caso podre!os !odificar 'alores poniendo ulos en el caso en ue nuestra relacin se

    per!itan estos 'alores, pero no los estare!os borrando# 1ara el borrado de tuplas

    utili5are!os la instruccin delete, ue tiene la si"uiente for!a:

    Delete from tabla

    Where condicin

    ;on esta sentencia se borrar+an todas las tuplas de la tabla ue cu!plieran la condicin $es

    decir la condicin de'ol'iera un 'alor 7erdadero%# A 'eces podre!os 'er estas sentencias de la

    for!a o incluso real!ente el !otor de base

    de datos el no!bre de atributos $o asterisco% detr(s de la sentencia delete los i"nora pues no

    le sir'en para nada $recordad ue se borrar tuplas no re"istros%# En la parte de condicin

    pode!os usar cualuiera de las condiciones $de "rupo o indi'iduales% ue &e!os 'isto en

    te!as anteriores# ?ene!os ue tener especial cuidado en usar esta sentencia sin condiciones

    pues borrar+a!os todas las tuplas de la tabla#

    Lenguaje de definicin de datos

    Este len"ua)e dentro de SQL nos 'a a per!itir !odificar, crear o borrar ob)etos dentro del

    !otor de base de datos, en el caso de Access, si no !odifica!os las opciones por defecto nos

    per!itir( crear, !odificar o borrar tablas#

    La creacin de tablas se &ace con la sentencia create table ue en el caso de Access tiene la

    si"uiente sintaxis, en su for!a !(s bre'e:

    Create table tabla1

    (campo1 tipo[(tamao)] not null, campo2 )

    Donde tabla3 es el no!bre de la relacin, ca!po3 ### ca!pon el no!bre de los ca!pos, cada

    uno de estos ca!pos tendr(n un tipo deter!inado de los propios de Access $text, !e!o,

    counter, s&ort, lon", sin"le, double, bit, date, etc#%# En el caso de ta!a0o se necesita para

    auellos ca!pos ue sea necesario# Ade!(s podre!os poner constraints o +ndices en las

    tablas#

    ;on la sentencia alter tablepode!os !odificar los ca!pos de una tabla, pudiendo !odificaruno existente, a0adir ca!pos o borrar al"uno de los existentes#

  • 7/25/2019 Manual SQL. Parte 3

    4/4

    Microsoft Access 2010. Curso Avanzado Tutor: Antonio Snchez de la Fuente

    Tutorial SQL Parte32

    Alter table tabla1

    Alter column campo1 NuevoTipo

    De esta for!a !odificare!os la tabla tabla3 !odificando el ca!po ca!po3 a un nue'o tipo#

    /a* ue tener cuidado si esta!os !odificando un ca!po con 'alores pues son posibles

    !odificacin de 'alores o incluso desaparicin por la con'ersin auto!(tica de tipos ue 'a a

    &acer Access#

    ?a!bin podre!os a0adir nue'os ca!pos de la for!a

    Alter table tabla1

    Add column campo1 tipo

    Donde los ca!pos los definire!os co!o en la creacin de la tabla

    1ara eli!inar un ca!po usare!os la sentencia:

    Alter table tabla1

    Drop column campo1

    1ara borrar toda una relacin usare!os la sentencia drop table, de la for!a:

    Drop table tabla1

    /a* ue tener en cuenta ue si eli!ina!os una tabla, borrare!os la estructura de la tabla *

    por supuesto todos sus datos#