6introdución al sql

Upload: pedro-menendez

Post on 26-Feb-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 6Introducin Al SQL

    1/38

    Introduccin al SQL

    Este curso pretende ser una introduccin al SQL,. No se pretende realizar un estudio

    exhaustivo de todas las opciones, comandos y aspectos de almacenamiento y

    administracin que se pueden considerar en SQL. Slo se ha pretendido introducir y

    explicar los comandos ms utilizados con sus opciones ms tiles, deando los detalles

    ms espec!"icos a los manuales de re"erencia.

    ndice

    #. $erminolo%!a

    &. $ipos de sentencias SQL'. SQL()lus

    o *onexin

    o )osi+ilidades de Edicin

    o tilizacin de -icheros

    . *reacin

    o $ipos de *olumnas

    o /estricciones

    o *omando DESCRIBE

    0. 1odi"icacin

    2. 3nsercin, 4ctualizacin y 5orradoo 3nsercin

    o 4ctualizacin

    o 5orrado

    6. Seleccin

    o Seleccin de *olumnas

    o *lusula FROM

    o *lusula WHERE

    o *lusula ORDER BY

    o *lusula DISTINCT

    o -unciones

    o *lusula GROUP BYo Expresiones con Sentencias SELECT

    o *om+inaciones

    o Su+consultas

    7. Eliminacin

    8. 9istas

    #:. ;u%ando con los Nom+res

    o Sinnimos

    o El *omando RENAME

    ##. Lo 1as SQL()lus

    o -icheros de *omandos

    o

  • 7/25/2019 6Introducin Al SQL

    2/38

    1 Terminologa

    SQL

    Structured Query Languageo Len%uae de *onsultas Estructurado. Es el

    len%uae que permite la comunicacin con el Sistema ?racle en nuestro caso@.

    El SQL es un len%uae uni"icado

    Lo utilizan todo tipo de usuarios, desde el administrador de la +ase de datos,=54, hasta el usuario "inal.

    El SQL es un len%uae no procedimental.

    El usuario especi"ica Ququiere, no CmoniDndeconse%uirlo.

    El SQL es relacionalmente completo.

    )ermite la realizacin de cualquier consulta de datos.

    SQLA ==L B =1L

    Las sentencias del SQL se clasi"ican como parte del ==L o del =1L.

    Len%uae de =e"inicin de =atos, ==L

    sentencias del SQL que permiten de"inir los o+etos de la 5ase de =atos

    >create, revoke, grant, ater, etc.@. *uando se de"inen dichos o+etos se

    almacenan en el diccionario de datos.Len%uae de 1anipulacin de =atos, =1L

    sentencias del SQL que se utilizan para manear los datos de la +ase de datos

    >!eect, "n!ert, #$%ate, %eete, etc@.

    co&&"tCro'ack

    cada vez que se realiza al%una operacin en la +ase de datos se realiza no so+re

    la ta+la en s!, sino so+re una copia local de la misma. 4s!, si queremos que los

    resultados de la modi"icacin se trasladen a la +ase de datos y perduren en el

    tiempo hay que con"irmar dicha operacin con el comando co&&"t. $am+iDn se

    puede impedir que los ltimos cam+ios lle%uen a e"ectuarse con ro'ack,

    aunque existen al%unas sentencias SQL que se autocon"irman y no se pueden

    volver atrs.=iccionario de la 5ase de =atos

  • 7/25/2019 6Introducin Al SQL

    3/38

    len%uaes en s! mismos, sino que es una "orma de clasi"icar las sentencias de len%uae

    SQL en "uncin de su cometido. La di"erencia principal reside en que el ==L crea

    o+etos en la +ase de datos y sus e"ectos se pueden ver en el diccionario de la +ase de

    datosF mientras que el =1L es el que permite consultar, insertar, modi"icar y eliminar la

    in"ormacin almacenada en los o+etos de la +ase de datos.

    *uando se eecutan las sentencias ==L de SQL, el S

  • 7/25/2019 6Introducin Al SQL

    4/38

    3 SQL*Plus

    La herramienta que nos proporciona ?/4*LE para interactuar con la +ase de datos se

    llama SQL()lus. 5sicamente, es un intDrprete SQL con al%unas opciones de edicin y

    "ormateo de resultados.

    4ntes de ver la manera de conectarse a SQL()lus, conviene tener claros al%unos

    conceptosG

    suarioC*lave

    )ara poder acceder a una +ase de datos %estionada por ?/4*LE de+emos ser un

    usuario autorizado de la misma y conocer la pala+ra clave, password, asociada al

    usuario.

    9aria+le de am+iente ORACLE(SID

    3ndica la +ase de datos con la que vamos a tra+aar.

    3.1 Conein

    3.2 Posi!ilidades de "dicin

    SQL()lus almacena en un bufferla ltima sentencia SQL introducida. El buffer

    mantiene slo una sentencia cada vez, y si se introduce una nueva sentencia se

    so+reescri+e so+re la anterior.

    La sentencia en el bufferpuede ser recuperada para eecutarla de nuevo con loscomandosG

    RUNque visualiza la sentencia en el bufferantes de eecutarlaF

    )que eecuta la sentencia sin visualizarla.

    SQL()lus tam+iDn nos permite editar la sentencia SQL alamacenada en el buffer

    mediante un sencillo >y limitado@ editor en l!nea, cuyos comandos se enumeran a

    continuacinG

    Comando Abreviatura Descripcin4))EN= texto 4 texto 4Hade texto al "inal de la l!nea.

    *J4N

  • 7/25/2019 6Introducin Al SQL

    5/38

    L3S$ n L n n Lista la l!nea nKDsima.

    L3S$ ( L ( Lista la l!nea actual.

    L3S$ L4S$ L L4S$ Lista la ltima l!nea.

    L3S$ m n L m n

    Lista las l!neas desde la mKDsima a

    la nKDsima.

    4l contenido del buffertam+iDn se puede acceder desde el editor del Sistema ?perativo.

    4s!, el +u""er podr ser manipulado con las posi+ilidades del editor con el que estemos

    acostum+rados a tra+aar. 4l salir del editor se devuelve el control al SQL()lus. )ara

    conse%uir tra+aar con el editor del Sistema ?perativo +asta con colocar la varia+le

    DEFINE(EDITORy lue%o llamar al editor.

    SQL> defne_editor=viSQL> edit

    3.3 #tili$acin de %ic&eros

    SQL()lus considera dos tipos de "icherosG despooly de comandos.

    n fichero de spoolalmacena los resultados de una consulta >o varias@ en un "ichero

    con la extensin .lst >o lo manda a la impresora@.

    Los comandos asociados con los "icherosspoolson

    SPOOL *"c+ero

    1anda el resultado de las consultas al "ichero.SPOOL OUT

    1anda el resultado de las consultas a la impresora.SPOOL OFF

    *ierra el "ichero despool.E,IT

    4l salir de SQL()lus se cierran los "icheros despool.

    Los archivos de comandosalmacenan comandos SQL y SQL()lus para ser editado,

    almacenado yCo eecutadoF y tienen por de"ecto la extensin .sql G

    )ara editarlo se puede utilizar el comando e%"t *"c+ero.

    )ara eecutarlo se utilizar el comando START *"c+eroo -*"c+ero

    El SQL()lus nos proporciona ms posi+ilidades en relacin con los "icheros de

    comandos, la comunicacin con el usuario "inal y la %eneracin de in"ormes. )ero antes

    de ver este tipo de cosas, es meor que si%amos pro"undizando en el conocimiento del

    len%uae SQL. 4l "inal del curso se puede se encuentra un cap!tulo con al%unas de las

    cosillas que quedan por contar del SQL()lus.

  • 7/25/2019 6Introducin Al SQL

    6/38

    ' Creacin

    La primera "ase de cualquier +ase de datos comienza siempre con sentencias ==L, ya

    que antes de poder almacenar in"ormacin de+emos de"inir los o+etos +sicos donde

    a%rupar la in"ormacin. Los o+etos +sicos con que tra+aa SQL son las ta+las. na

    ta+la es un conunto de celdas a%rupadas en "ilas y columnas donde se almacenan

    elementos de in"ormacin.

    4ntes de llevar a ca+o la creacin de una ta+la conviene plani"icarG

    nom+re de la ta+la,

    nom+re de cada columna,

    tipo y tamaHo de los datos almacenados en cada columna,

    in"ormacin adicional, restricciones, etc.

    Jay que tener en cuenta tam+iDn ciertas restricciones en la "ormacin de los nom+res de

    las ta+lasG lon%itud mxima de ': caracteres, no puede ha+er nom+res de ta+la

    duplicados, de+en comenzar con un carcter al"a+Dtico, permitir caracteres

    al"anumDricos y el %uin +ao , y ?racle no distin%ue entre maysculas y minsculas.

    La sintaxis del comando que permite crear un ta+la es la si%uienteG

    CREATE TABLE [esquema.]taba !"#oumna ti$oCoumna [%&T%'LL]()*( "C&%STRA+%T nombreRestri##i,n "'%+Q'E ![#oumn(]*- /E0A'LT e1$resion C2EC3 !#ondi#ion- 4R+5AR6 3E6 ![#oumn(]*- 0&RE+7% 3E6 !#oumn- RE0ERE%CEStaba!#oumna-)()8-

    =el examen de la sintaxis de la sentencia Create Ta'ese pueden concluir que

    necesitamos conocer los distintos tipos de columna y las distintas restricciones que sepueden imponer al contenido de las columnas.

    '.1 Tipos de Columnas

    Existen varios tipos de datos en SQL. =e esta manera, cada columna puede al+er%ar una

    in"ormacin de naturaleza distinta. Los tipos de datos ms comunes y sus caracter!sticas

    se resumen en la si%uiente ta+la.

    Tipo de Dato Descripcin.ARCHAR/0ta&a1o2 4lmacena datos de tipo carcter al"anumDrico de lon%itud

  • 7/25/2019 6Introducin Al SQL

    7/38

    varia+le, con un tamaHo mximo de &.:::.

    CHAR0ta&a1o2 4lmacena datos de tipo carcter al"anumDrico de lon%itud

    "ia, con un tamaHo mximo de &00.

    LONG 4lmacena datos de tipo carcter al"anumDrico de lon%itud

    varia+le con un tamaHo mximo de hasta &

  • 7/25/2019 6Introducin Al SQL

    8/38

    Esta+lece que el contenido de esta columna ser uno de los valores contenidos

    en una columna de otra ta+la maestra. Esta columna marcada como clave aena

    puede ser NLL. No hay l!mite en el nmero de claves aenas. La clave aena

    puede ser otra columna de la misma ta+la. Se puede "orzar que cuando una "ila

    de la ta+la maestra sea +orrada, todas las "ilas de la ta+la detalle cuya clave aena

    coincida con la clave +orrada se +orren tam+iDn. Esto se consi%ue aHadiendo lacoletilla ON DELETE CASCADEen la de"inicin de la clave aena.

    Se%uidamente se presenta un eemplo en el que se crean dos ta+las, una de

    departamentos y otra de empleadosG

    RE5RE5 taba de$artamento #on un #,di9o de de$artamento( unnombre : unaRE5 o#ai;a#i,n.

    RE5#reate tabe de$ ! #od_de$ number!

  • 7/25/2019 6Introducin Al SQL

    9/38

    #onstraint em$_# #e# !saario > --

    '.3 Comando Describe

    ?racle nos proporciona un comando que resulta muy til cuando queremos conocer la

    estructura de una ta+la, las columnas que la "orman y su tipo y restricciones. Este

    comando toma una mayor importancia se%n nos aleemos del momento de creacin de

    una ta+la.

    La sintsis es la si%uienteG

    /ESCR+BE taba

    M un eemplo de su utilizacin se puede ver al descri+ir la de"inicin de las dos ta+las

    creadas antes. *omo no es una sentencia SQL no necesita el F al "inal. $am+iDn se

    puede a+reviar como DESC.

    SQL> des#ribe de$%ame %uH T:$eIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIII IIII

    C&/_/E4 %&T %'LL %'5BER!

  • 7/25/2019 6Introducin Al SQL

    10/38

    ) odi+icacin

    =espuDs de crear una ta+la, a veces nos encontramos con que se necesita aHadir una

    columna adicional o modi"icar la de"inicin de una columna existente. Esta operacin se

    puede realizar con el comando ALTER TABLE.

    ALTER TABLE taba "A// 5&/+06) !"#oumna ti$oCoumna[%&T %'LL]()*-

    Jay que tener en cuenta varios puntosG

    No es posi+le disminuir el tamaHo de un columna.

    En las modi"icaciones, los tipos anterior y nuevo de+en ser compati+les, o la

    ta+la de+e estar vac!a.

    La opcin ADD 888 NOT NULLslo ser posi+le si la ta+la est vac!a.

    La opcin MODIFY 888 NOT NULLslo podr realizarse cuando la ta+la no

    conten%a nin%una "ila con valor nulo en la columna en cuestin.

    )or eemplo la sentencia si%uiente aHade la "echa de nacimiento a la ta+la de empleados.

    SQL> ater tabe em$ add !Ge#a_na# date not nu-

    $am+iDn se puede querer modi"icar una ta+la aHadiendo o eliminando restricciones. En

    este caso el comando a utilizar ser

    ALTER TABLE taba "A// /R&4) C&%STRA+%T restri##i,n

    , Insercin- ctuali$acin / 0orrado

    na vez que tenemos de"inida la estructura de una ta+la se pueden insertan los datos,

    modi"icarlos o +orrarlos de la ta+la.

    Esta tarea entra dentro de las operaciones que se realizan con el len%uae =1L. Este

    len%uae permite manipular los o+etos de la +ase de datos, insertando, modi"icando yCo

    +orrando el contenido de las ta+las. Jay que recordar que estas sentencias no son

    autocon"irmadas y requieren de la sentencia COMMITpara que sus e"ectos perduren en el

    tiempo, o de la sentencia ROLLBAC7para deshacer los cam+ios e"ectuados.

  • 7/25/2019 6Introducin Al SQL

    11/38

    4 continuacin vamos a estudiar tres de las sentencias =1L ms comunes.

    ,.1 Insercin

    El comando que permite insertar "ilas en las ta+las es el si%uiente.

    +%SERT +%T& taba [!"#oumna()8-] DAL'ES !"e1$resi,n()*-

    Slo especi"icaremos las columnas donde insertar y su orden cuando no insertemos

    datos en todas ellas o no lo ha%amos en el mismo orden en que de"inimos la ta+la. La

    asociacin columnaKvalor es posicional. Los valores de+en cumplir con los tipos de

    datos de"inidos. Los valores de tipo caracter y "echa de+en ir encerrados entre comillas

    simples, >@.

    4 continuacin se puede ver la insercin de "ilas en las ta+las de eemplo.

    RE5 insertar fas en a taba de$insert into de$ vaues !?(Administra#ion(Daadoid-insert into de$ vaues !(+*/(Boe#io-insert into de$ vaues !

  • 7/25/2019 6Introducin Al SQL

    12/38

    insert into em$ vaues !J(5ateo(4ro9ramador((OIK'%IM((nu(-insert into em$ vaues

    !

  • 7/25/2019 6Introducin Al SQL

    13/38

    La recuperacin de los datos en el len%uae SQL se realiza mediante la sentencia

    SELECT, seleccionar. Esta sentencia permite indicar al S

  • 7/25/2019 6Introducin Al SQL

    14/38

    *uando se consulta una +ase de datos, los nom+res de las columnas se usan como

    ca+eceras de presentacin. Si Dste resulta demasiado lar%o, corto o cr!ptico, puede

    cam+iarse con la misma sentencia SQL de consulta, creando un alias de columna.

    SQL> see#t nombre /e$artamento( o# Est en Grom de$

    /e$artamento Esta enIIIIIIIIIIIIIII IIIIIIIIIIAdministra#ion Daadoid+*/ Boe#io4rodu##ion Ci9aes

    .2 Clusula FROM

    La clusula FROMde"ine las ta+las de las que se van a seleccionar las columnas.

    Se puede aHadir al nom+re de las ta+las el usuario propietario de las mismas de la "orma

    #!#ar"o8ta'a. =e esta manera podemos distin%uir entre las ta+las de un usuario y

    otro. ?racle siempre considera como pre"io el nom+re del propietario de las ta+las,

    aunque no se lo indiquemos. =e esta "orma dos o ms usuarios pueden tener ta+las que

    se llamen i%ual sin que suran con"lictos. Si quisiDramos acceder a las "ilas de la ta+la

    %e$del usuario 9$ere:, >ademas de tener privile%ios de lectura so+re esa ta+la@

    de+er!amos escri+ir la si%uiente sentencia SQLG

    SQL> see#t 8 Grom F$ere;.de$

    $am+iDn se puede asociar un alias a las ta+las para a+reviar los nom+res de las ta+las.

    n eemplo se puede ver en la sentencia SQL si%uienteG

    SQL> see#t d.nombre Grom de$ d

    .3 ClusulaWHERE

    Jasta ahora hemos visto como puede utilizarse la sentencia SELECTpara recuperar todas

    las columnas o un su+conunto de ellas de una ta+la. )ero este e"ecto a"ecta a todas las

    "ilas de la ta+la, a menos que especi"iquemos al%o ms en la clusula WHERE. Es aqu!

    donde de+emos proponer la condicin que han de cumplir todas las "ilas para salir en el

    resultado de la consulta. La compleidad del criterio de +squeda es prcticamente

    ilimitada, y en Dl se pueden conu%ar operadores de diversos tipos con "unciones de

    columnas, componiendo expresiones ms o menos compleas.

    Operadores de Comparacin

    Operador Operacin Ejemplo

  • 7/25/2019 6Introducin Al SQL

    15/38

    A 3%ualdad!eect 5 *ro& e&$ ;+ereco%(%e$ < 4==>

    OA, P, RA =esi%ualdad!eect 5 *ro& e&$ ;+ereco%(%e$ ?< 4==>

    P 1enor que!eect 5 *ro& e&$ ;+ere

    co%(%e$ @ /==>

    1ayor que!eect 5 *ro& e&$ ;+ereco%(%e$ /==>

    PA 1enor o i%ual que!eect 5 *ro& e&$ ;+ereco%(%e$ @< /==>

    A 1ayor o i%ual que!eect 5 *ro& e&$ ;+ereco%(%e$ < /==>

    in3%ual a cualquiera de los miem+ros

    entre parDntesis

    !eect 5 *ro& e&$ ;+ereco%(%e$ "n 04==3 ==2>

    not in=istinto a cualquiera de los miem+ros

    entre parDntesis

    !eect 5 *ro& e&$ ;+ereco%(%e$ not "n 0/==2>

    +eteen *ontenido en el ran%o!eect 5 *ro& e&$ ;+ereco%(e&$ 'et;een 4== an%4>

    not

    +eteen-uera del ran%o

    !eect 5 *ro& e&$ ;+ereco%(e&$ not 'et;een 4==an% 4>

    liIe a+c

    T

    *ontiene la cadena a+c a partir del

    se%undo carcter y lue%o cualquier

    cadena de caracteres

    !eect 5 *ro& e&$ ;+ereno&'re "ke Ma>

    Operadores de Aritmticos

    Operador OperacinEjemplo

    B Suma!eect no&'re3 !aar"oco&"!"on *ro& e&$ ;+ereo*"c"o

    K /esta!eect no&'re *ro& e&$ ;+ere !!%ate*ec+a(ata J>

    ( )roducto !eect no&'re3 !aar"o54/ *ro& e&$>

    C =ivisin !eect no&'re3 !aar"o)4 *ro& e&$>

    Operadores de Cadenas de Caracteres

    Operador Operacin Ejemplo

    UU *oncatenacin !eect no&'reKKo*"c"o *ro& e&$>

    .' Clusula ORDER BY

    Se utiliza para especi"icar el criterio de ordenacin de la respuesta a la consulta. )or

    de"ecto la ordenacin es ascendente, aunque se puede especi"icar un orden descendente.La ordenacin se puede esta+lecer so+re el contenido de columnas o so+re expresiones

  • 7/25/2019 6Introducin Al SQL

    16/38

    con columnas. 4 continuacin se puede ver un eemplo de uso de la clusula ORDER BY

    en la que quiere o+tener un listado de los empleados ordenado de manera descendente

    por su salario y en caso de i%ualdad de salario, ordenado ascendentemente por su

    nom+re.

    SQL> see#t nombre( saario Grom em$ order b: saario des#(nombre

    %&5BRE SALAR+&IIIIIIIIII IIIIIIIIIICano J@4ere;

  • 7/25/2019 6Introducin Al SQL

    17/38

    4residente/ire#torSe#retarioContabe

    Comer#iaComer#ia/ire#torAnaista4ro9ramador4ro9ramador/ire#torAnaista4ro9ramador4ro9ramador

    ?J ros see#ted.

    )ero si incluimos la clusula DISTINCTla respuesta var!a para adecuarse ms a nuestras

    espectativas.

    SQL> see#t distin#t of#io Grom em$&0+C+&

    IIIIIIIIIIIAnaistaComer#iaContabe/ire#tor4residente4ro9ramadorSe#retario

    N ros see#ted.

    ., %unciones

    Existen en SQL muchas "unciones que pueden complementar el maneo de los datos en

    las consultas. Se utilizan dentro de las expresiones y actuan con los valores de las

    columnas, varia+les o constantes.

    Se pueden incluir en las clsulas SELECT, WHEREy ORDER BY.

    )ueden anidarse "unciones dentro de "unciones. M existe una %ran variedad de "uncionespara cada tipo de datosG

  • 7/25/2019 6Introducin Al SQL

    18/38

    aritmDticas,

    de cadenas de caracteres,

    de maneo de "echas,

    de conversin,

    otras,

    de %rupo.

    Funciones Aritmticas

    Funcin Cometido Ejemplo Resultado

    45S>n@*alcula el valor a+soluto de

    n.

    !eect a'!04J2*ro& %#a> #0

    *E3L>n@

    *alcula el valor entero

    inmediatamente superior o

    i%ual a n.

    !eect ce"04J82*ro& %#a> #2

    -L??/>n@

    *alcula el valor entero

    inmediatamante in"erior o

    i%ual a n.

    !eect *oor04J82*ro& %#a> #0

    1?=>m,n@*alcula el resto resultante de

    dividir mentre n.

    !eect &o%04432*ro& %#a> '

    )?E/>m,n@*alcula la potencia nKesima

    de m.

    !eect $o;er03/2*ro& %#a> 8

    /?N=>m,n@

    *alcula el redondeo de ma n

    decimales. Si nP: el

    redondeo se e"ectua a por laizquierda del punto decimal.

    !eectro#n%04/8J342

    *ro& %#a>

    #&'.0

    SQ/$>n@ *alcula la ra!z cuadrada de n.!eect !rt02 *ro&%#a> &

    $/N*>m,n@

    *alcula mtruncado a n

    decimales >npuede ser

    ne%ativo@.

    !eecttr#nc04/8J342*ro& %#a>

    #&'.

    S3n@

    *alcula el si%no de n,

    devolviendo K# si nP:, : si

    nA: y # si n:.

    !eect !"gn04/2*ro& %#a> K#

    Funciones de Cadenas de Caracteres

    Funcin Cometido Ejemplo Resultado

    *J/>n@

    =evuelve el

    carcter

    cuyo valor

    codi"icado

    es n.

    !eect c+r0J2 *ro&%#a> 4

    4S*33>cad@

    =evuelve el

    valor asciide cad.

    !eect a!c""0A2 *ro&%#a> 20

  • 7/25/2019 6Introducin Al SQL

    19/38

    *?N*4$>cad#,cad&@

    =evuelve

    cad1

    concatenada

    con cad2.

    Esta "uncin

    esesquivalente

    al operador

    UU.

    !eectconcat0concat0no&'re3

    e! 23o*"c"o2 *ro& e&$>

    *ano es

    )residente, etc.

    L?E/>cad@

    =evuelve la

    cadena cad

    con todas

    sus letras

    convertidas

    a

    minsculas.

    !eecto;er0M"nU!C#A!2 *ro&%#a>

    minusculas

    ))E/>cad@

    =evuelve la

    cadena cad

    con todas

    sus letras

    convertidas

    a

    maysculas.

    !eect#$$er0&aY#SC#A!2 *ro&%#a>

    14MS*L4S

    3N3$*4)>cad@

    =evuelve

    cadcon el

    primercaracter en

    maysculas.

    !eect "n"tca$0"!a'e2

    *ro& %#a> 3sa+el

    L)4=>cad#,n,cad&@

    =evuelve

    cad1con

    lon%itud n, y

    austada a la

    derecha,

    rellenando

    por la

    izquierda

    con cad2.

    !eect $a%0P3J352*ro& %#a> (((()

    /)4=>cad#,n,cad&@

    =evuelve

    cad1con

    lon%itud n, y

    austada a la

    izquierda,

    rellenando

    por la

    derecha con

    cad2.

    !eect r$a%0P3J352*ro& %#a> )((((

    /E)L4*E>cad,ant,nue@ =evuelvecaden la

    !eectre$ace0%"go3"3"e2

    die%o

  • 7/25/2019 6Introducin Al SQL

    20/38

    que cada

    ocurrencia

    de la cadena

    antha sido

    sustituida

    por lacadena nue.

    *ro& %#a>

    S5S$/>cad,m,n@

    =evuelve la

    sudcadena

    de cad

    compuesta

    por n

    caracteres a

    partir de la

    posicion m.

    !eect!#'!tr0ABCDEFG33/2*ro& %#a>

    *=

    LENcad@=evuelve lalon%itud de

    cad.

    !eect engt+0ca%ena2*ro& %#a> 2

    Funciones de Manejo de Fechas

    Funcin Cometido Ejemplo Resultado

    SMS=4$E

    =evuelve la

    "echa y hora

    actuales.

    !eect !!%ate *ro& %#a> #K14/K86

    4==1?N$JS>d,n@

    =evuelve la

    "echa d

    incrementada

    en nmeses.

    !eecta%%(&ont+!0!!%ate32 *ro&%#a>

    #K;LK86

    L4S$=4M>d@

    =evuelve la

    "echa del

    ltimo d!a del

    mes de d.

    !eect a!t(%a0!!%ate2*ro& %#a> '#K14/K86

    1?N$JS5E$EEN>d#,d&@

    =evuelve la

    di"erencia en

    meses entre

    las "echas d1

    y d2.

    !eect&ont+!('et;een0!!%ate3=4AN2 *ro& %#a>

    &.':8&

    NEV$=4M>d,cad@

    =evuelve la

    "echa del

    primer d!a de

    la semana

    caddespuDs

    de la "echa d.

    !eect net(%a0!!%ate3!#n%a2 *ro& %#a> #2K14/K86

    Funciones de Conversin de Tipos

  • 7/25/2019 6Introducin Al SQL

    21/38

    Funcin Cometido Ejemplo Resultado

    $?N15E/>cad,"mto@

    *onvierte la

    cadena cada un

    nmero,

    opcionalmente de

    acuerdo con el

    "ormatofmto.

    !eectto(n#&'er04/J2

    *ro& %#a>

    #&'0

    $?*J4/>d, "mto@

    *onvierte la

    "echa da una

    cadena de

    caracteres,

    opcionalmente de

    acuerdo con el

    "ormatofmto.

    !eectto(c+ar0!!%ate2*ro& %#a>

    #K14/K

    86

    $?=4$E>cad,"mto@

    *onvierte la

    cadena cad de

    tipo varchar& a

    "echa,

    opcionalmente de

    acuerdo con el

    "ormatofmto.

    !eect to(%ate04AN2 *ro& %#a> :#K;4NK86

    *on las "echas pueden utilizarse varios "ormatos. Estos "ormatos permiten modi"icar la

    presentacin de una "echa. En la si%uiente ta+la se presentan al%unos "ormatos de "echa

    y el resultado que %eneran.

    Mscaras de Formato Numricas

    Formato Cometido Ejemplo Resultado

    cc scc 9alor del si%lo.!eect to(c+ar0!!%ate3cc2*ro& %#a> &:

    y,yyy

    sy,yyy

    4Ho con coma, con

    o sin si%no.

    !eectto(c+ar0!!%ate332*ro& %#a>

    #,886

    yyyy yyy

    yy y

    4Ho sin si%no con

    cuatro, tres, dos o

    un d!%itos.

    !eectto(c+ar0!!%ate32 *ro&%#a>

    #886

    q $rimestre.!eect to(c+ar0!!%ate32*ro& %#a> #

    Nmero de la

    semana del aHo o

    del mes.

    !eect to(c+ar0!!%ate3;;2*ro& %#a> ##

    mm Nmero del mes.!eect to(c+ar0!!%ate3&&2*ro& %#a> :'

    ddd dd

    d

    Nmero del d!a del

    aHo, del mes o de la

    semana.

    !eectto(c+ar0!!%ate3%%%2 *ro&

    %#a>:6'

  • 7/25/2019 6Introducin Al SQL

    22/38

    hh hh#&

    hh&

    La hora en "ormato

    #&h. o &h.

    !eect to(c+ar0!!%ate3++2*ro& %#a> #&

    miLos minutos de la

    hora.

    !eect to(c+ar0!!%ate3&"2*ro& %#a> #0

    ss sssssLos se%undosdentro del minuto, o

    desde las : horas.

    !eectto(c+ar0!!%ate3!!!!!2*ro& %#a>

    #08

    Mscaras de Formato de Caracteres

    Formato Cometido Ejemplo Resultado

    syear

    year4Ho en 3n%lDs

    !eectto(c+ar0!!%ate3!ear2*ro& %#a>

    nineteen

    ninetyKseven

    month omon

    Nom+re del mes osu a+reviatura de

    tres letras.

    !eectto(c+ar0!!%ate3&ont+2*ro& %#a>

    march

    day dy

    Nom+re del d!a de

    la semana o su

    a+reviatura de tres

    letras.

    !eectto(c+ar0!!%ate3%a2 *ro&%#a>

    "riday

    a.m.

    p.m.El espacio del d!a.

    !eectto(c+ar0!!%ate3a8&82*ro& %#a>

    p.m.

    +.c. a.d.

    3ndicador del aHo

    respecto al del

    nacimiento de

    *risto.

    !eectto(c+ar0!!%ate3'8c82*ro& %#a>

    a.d.

    Otras Funciones

    Funcin Cometido Ejemplo Resultado

    =E*?=E>var, val#,

    cod#, val&, cod&, ...,

    de"ecto@

    *onvierte el

    valor de var,

    de acuerdo conla codi"icacin.

    !eect %eco%e0o*"c"o3Pre!"%ente3 P3D"rector3 D3 ,2*ro& e&$>

    ), =, V, ...

    exp#,

    exp&, ...@

    =evuelve el

    mayor valor de

    una lista.

    sin eemplo.sin

    eemplo.

    LE4S$>cad,"mto@

    =evuelve el

    menor valor de

    una lista.

    sin eemplo.sin

    eemplo.

    N9L>val, exp@ =evuelve la

    expresin exp

    si valesNLL, y valsi

    !eect!aar"onv0co&"!"on3=2*ro& e&$>

    0::::,

    '0::::, ...

  • 7/25/2019 6Introducin Al SQL

    23/38

    en otro caso.

    . Clusula GROUP BY

    SQL nos permite a%rupar las "ilas resultado de una consulta en conuntos y aplicar

    "unciones so+re esos conuntos de "ilas.

    La sintaxis es la si%uienteG

    SELECT "8 "#oumna()*)0R&5 "taba()*

    P2ERE #ondi#i,n7R&'4 B6 "#oumna ()*

    2AD+%7 #ondi#i,n&R/ER B6 "e1$resi,nCoumna [ASC /ESC]()*

    En la clusula GROUP BYse colocan las columnas por las que vamos a a%rupar. M en la

    clusula HA.INGse especi"ica la condicin que han de cumplir los %rupos para pasar al

    resultado.

    La evaluacin de las di"erentes clusulas en tiempo de eecucin se e"ecta en el

    si%uiente ordenG

    WHERE"iltra las "ilas GROUP BYcrea una ta+la de %rupo nueva

    HA.ING"iltra los %rupos

    ORDER BYclasi"ica la salida

    n eemplo de utilizacin de la seleccin de %rupos puede ser seleccionar los empleados

    a%rupados por su o"icio. n primer intento de consulta es el si%uienteG

    SQL> see#t nombre( of#io Grom em$ 9rou$ b: of#io

    see#t nombre( of#io Grom em$ 8ERR&R at ine ?&RAIN not a 7R&'4 B6 e1$ression

    Se presenta un error de+ido a que cuando se utiliza GROUP BY, las columnas implicadas

    en el SELECTy que no aparezcan en la clusula GROUP BYde+en tener una "uncin de

    a%rupamiento. En otras pala+ras, la columna no&'rede+e tener una "uncin de

    a%rupamiento que actue so+re ella >max, min, sum, count, av%@. Si no puede ser as!,

    de+er llevar dicha columna a la clusula GROUP BY.

  • 7/25/2019 6Introducin Al SQL

    24/38

    =e nuevo, el eemplo quedar as!G

    SQL> see#t #ount!nombre-( of#io Grom em$ 9rou$ b: of#ioC&'%T!%&5BRE- &0+C+&IIIIIIIIIIIII IIIIIIIIIII Anaista Comer#ia ? Contabe < /ire#tor ? 4residente J 4ro9ramador ? Se#retario

    N ros see#ted.

    Las "unciones de a%rupamiento que se pueden utilizar son las si%uientes.

    Funciones de Agrupamiento

    Funcin Cometido Ejemplo

    *?N$>col@*uenta el nmero de "ilas

    a%rupadas.

    !eect co#nt0no&'re23o*"c"o*ro& e&$ gro#$ ' o*"c"o>

    49col@

    *alcula el valor medio de

    todos los valores de la

    columna col.

    !eect avg0!aar"o23o*"c"o*ro& e&$ gro#$ ' o*"c"o>

    14V>col@

    *alcula el valor mximo

    de todos los valores de la

    columna col.

    !eect &a0!aar"o23o*"c"o*ro& e&$ gro#$ ' o*"c"o>

    13N>col@*alcula el valor m!nimode todos los valores de la

    columna col.

    !eect &"n0!aar"o23o*"c"o*ro& e&$ gro#$ ' o*"c"o>

    S1>col@*alcula la suma de los

    valores de la columna col.

    !eect !#&0!aar"o23 o*"c"o*ro& e&$ gro#$ ' o*"c"o>

    S$==E9>col@

    *alcula la desviacin

    t!pica de los valores de la

    columna col sin tener en

    cuenta los valores nulos.

    !eect !t%%ev0!aar"o23o*"c"o *ro& e&$ gro#$ 'o*"c"o>

    94/34N*E>col@ *alcula la varianza de los

    valores de la columna colsin tener en cuenta los

    !eect var"ance0!aar"o23

    o*"c"o *ro& e&$ gro#$ 'o*"c"o>

  • 7/25/2019 6Introducin Al SQL

    25/38

    valores nulos.

    Jay que tener en cuenta que los valores nulos no participan en el clculo de las

    "unciones de conuntos. Estas "unciones se pueden utilizar con las clusulas DISTINCTy

    ALL. $am+iDn se pueden utilizar aunque no realicemos a%rupacin al%una en la consulta,

    considerando a toda la ta+la como un %rupo.

    SQL> see#t #ount!8- Grom em$C&'%T!8-

    IIIIIIIIII ?J

    . "presiones con Sentencias Select

    El resultado de cada consulta es un conunto de "ilas. M con conuntos se pueden realizar

    tres operaciones t!picasG la unin, la interseccin y la di"erencia.

    nin, UNION

    *om+ina todas las "ilas del primer conunto con todas las "ilas del se%undo.

    *ualquier "ila duplicada se reducir a una sla.

    3nterseccin, INTERSECT

    Examinar las "ilas de los conuntos de entrada y devolver aquellas que

    aparezcan en am+os. $odas las "ilas duplicadas sern eliminadas antes de la

    %eneracin del conunto resultante.=i"erencia, MINUS

    =evuelve aquellas "ilas que estn en el primer conunto pero no en el se%undo.

    Las "ilas duplicadas del primer conunto se reducirn a una "ila nica antes de

    empezar la comparacin con el se%undo conunto.

    Reglas para el Manejo de los Operadores de Conjuntos

    )ueden ser encadenados en cualquier com+inacin, siendo evaluados de

    izquierda a derecha.

    No existe erarqu!a de precedencia en el uso de estos operadores, pero puede ser

    "orzada mediante parDntesis.

  • 7/25/2019 6Introducin Al SQL

    26/38

    )ueden ser empleados con conuntos de di"erentes ta+las siempre que se

    apliquen las si%uientes re%lasG

    o Las columnas son relacionadas en orden, de izquierda a derecha.

    o Los nom+res de las columnas son irrelevantes.

    o Los tipos de datos de+en coincidir.

    *omo eemplo podemos consultar so+re todos los nom+res de empleado que tra+aan

    para los departamentos #:: o '::. Esto se consi%ue restando a todos los nom+res de

    empleados, aquellos que estn en el departamento &::.

    SQL> see#t nombre Grom em$ minus < see#t nombre Grom em$ ere #od_de$=

    %&5BRE

    IIIIIIIIIICanoLo$e;5artinRe#ioRon#aRuedaSantanaSan;

    6uste ros see#ted.

    .4 Com!inaciones

    Jasta ahora hemos construido consultas con una nica ta+la, pero esto no de+e ser

    siempre as!.

    =e hecho, slo se alcanza la verdadera potencia del SQL cuando com+inamos el

    contenido de ms de una ta+la.

    Supon%amos que queremos conse%uir una lista con los empleados y los departamentos

    para los que tra+aan. Esta in"ormacin est repartida en las dos ta+las que tenemos, e&$

    y %e$. 4s!, podr!amos intentar una consulta que seleccionara el campo no&'rede la

    ta+la e&$y el no&'redel departamento. M aqu! sur%e el primer pro+lema, Wcmo

    distin%uimos entre dos columnas que llamndose i%ual, pertenecen a ta+las distintasX

    )ara eso se utiliza como pre"io o el nom+re de la ta+la >%e$8no&'re@ o un alias de

    ta+la, un nom+re que se asocia a cada ta+la y se coloca como pre"io a la columna

    >%8no&'re@.

    /ealicemos la consulta ...

  • 7/25/2019 6Introducin Al SQL

    27/38

    SQL> see#t e.nombre( d.nombre Grom em$ e( de$ d%&5BRE %&5BREIIIIIIIIII IIIIIIIIIIIIIII

    Cano Administra#ionRon#a Administra#ionRueda Administra#ion5artin Administra#ionSan; Administra#ionLo$e; Administra#ion4ere; Administra#ionSastre Administra#ion7ar#ia Administra#ion5ateo Administra#ion

    6uste Administra#ionRe#io Administra#ion7ar#ia Administra#ionSantana Administra#ionCano +*/Ron#a +*/Rueda +*/...J ros see#ted.

    El resultado puede sorprender un poco. Lo que o+tenemos es el producto cartesiano de

    todos los empleados por todos los departamentos. SQL ha co%ido cada "ila de la ta+la

    e&$y le ha asociado todos los co%(%e$de la ta+la %e$.

    )ara conse%uir lo que queremos tenemos que "orzar que se asocie a un empleado con el

    nom+re del departamento para el que tra+aa. M esto se puede hacer si aHadimos la

    condicin de que el co%(%e$ten%a el mismo valor en la "ila de la ta+la e&$que en la

    "ila esco%ida de la ta+la %e$G

    SQL> see#t e.nombre( d.nombre Grom em$ e( de$ d > ere e.#od_de$ = d.#od_de$%&5BRE %&5BREIIIIIIIIII IIIIIIIIIIIIIIICano Administra#ionRon#a Administra#ionRueda Administra#ion5artin Administra#ionSan; Administra#ionLo$e; Administra#ion

  • 7/25/2019 6Introducin Al SQL

    28/38

    4ere; +*/Sastre +*/7ar#ia +*/5ateo +*/

    6uste 4rodu##ionRe#io 4rodu##ion7ar#ia 4rodu##ionSantana 4rodu##ion?J ros see#ted.

    =e la misma manera se pueden com+inar ms de dos ta+las. Lo importante es emparear

    los campos que han de tener valores i%uales.

    Reglas de Com!inacin

    )ueden com+inarse tantas ta+las como se desee.

    El criterio de com+inacin puede estar "ormado por ms de una parea de

    columnas.

    En la clusula SELECTpueden citarse columnas de am+as ta+las, condicionen o

    no la com+inacin.

    Si hay columnas con el mismo nom+re en las distintas ta+las, de+en identi"icarse

    especi"icando la ta+la de procedencia o utilizando un alias de ta+la.

    Existe un tipo especial de com+inacin llamada Com!inacin "#terna. Supon%a quese crea un nuevo departamento, >"n!ert "nto %e$ va#e!

    0==3D"!tr"'#c"on3.aa%o"%2> @ pero todav!a no hemos asi%nado personal al

    mismo. Si realizamos la consulta anterior, el nuevo departamento no aparecer en la

    respuesta. )ero esto se puede evitar si seHalamos en la clusula WHEREla posi+ilidad de

    que en la ta+la de empleados no exista al%uno de los cdi%os de departamento que si

    exista en la ta+la de departamentos. Esto se hace colocando un 02de la si%uiente

    maneraG

    SQL> see#t e.nombre( d.nombre Grom em$ e( de$ d < ere e.#od_de$!*-=d.#od_de$%&5BRE %&5BREIIIIIIIIII IIIIIIIIIIIIIIICano Administra#ionRon#a Administra#ionRueda Administra#ion5artin Administra#ionSan; Administra#ion

    Lo$e; Administra#ion4ere; +*/

  • 7/25/2019 6Introducin Al SQL

    29/38

    Sastre +*/7ar#ia +*/5ateo +*/

    6uste 4rodu##ion

    Re#io 4rodu##ion7ar#ia 4rodu##ionSantana 4rodu##ion /istribu#ion?@ ros see#ted.

    .15 Su!consultas

    4 veces se han de utilizar en una consulta los resultados de otra consulta, llamadasu+consulta.

    n eemplo de esto ocurre cuando queremos conocer los nom+res de los empleados

    cuyo salario est por encima de la mediaG

    SQL> see#t nombre Grom em$ ere saario > !see#t av9!saario- Grom em$-

    %&5BRE

    IIIIIIIIIICanoRon#a4ere;Sastre

    6usteRe#ioM ros see#ted.

    La consulta ms interna calcula el salario medio, y la consulta ms externa lo utiliza

    para seleccionar los nom+res que %anan ms que la media.

    El valor de comparacin puede ser un valor simple, como en el eemplo anterior, o un

    conunto de valores. Jay que tener en cuenta este detalle ya que el tipo de operador a

    utilizar var!a. En el primer caso se puede utilizar un operador de comparacin de

    carcter aritmDtico >P, , etc.@. M en el se%undo uno de tipo l%ico >IN@.

    Las su+consultas pueden devolver ms de una columna, y se ha+rn de comparar de

    manera consecuenteG

  • 7/25/2019 6Introducin Al SQL

    30/38

    Las columnas de la clausula WHEREde la consulta principal de+en estr

    a%rupadas por parentesis.

    Las columnas encerradas entre parDntesis de+en coincidir en nmero y tipo de

    datos con los datos que devuelve la su+consulta.

    El nivel de anidamiento de su+consultas es ilimitado.

    Se puede utilizar una su+consulta para insertar valores en una ta+la en el momento de la

    creacin de la misma con la clusula AS. Si quisieramos crear una ta+la con los datos de

    los empleados del departamento &:: lo podr!amos hacer de la si%uiente maneraG

    SQL> #reate tabe de$ !nombre( of#io- as see#t nombre(of#io Grom em$ < ere #od_de$=

    Tabe #reated.

    No es necesario especi"icar tipos ni tamaHos de las columnas, ya que vienen

    determinados por los tipos y tamaHos de las columnas recuperadas en la su+consulta.

    "liminacin

    *uando una ta+la ya no es til y no vamos a volver a necesitarla de+e ser +orrada. Esta

    operacin se puede realizar con el comando DROP TABLE.

    /R&4 TABLE taba [CASCA/E C&%STRA+%TS]

    Se +orra la ta+la de la +ase de datos, +orrando toda la in"ormacin contenida en la ta+la,

    es decir, todas las "ilas. $am+iDn se +orrar toda la in"ormacin que so+re la ta+la

    existiera en el diccionario.

    )uede que si al%una columna de esta ta+la a +orrar sirva como clave aena de al%unata+la detalle, impida la eliminacin de la ta+la, ya que existe una restriccin que

    requiere de la existencia de la ta+la maestra. Esto se puede are%lar colocando la coletilla

    CASCADE CONSTRAINTS. Esto produce que las restricciones de la ta+la detalle se +orren

    antes de +orrar la ta+la maestra.

    La si%uiente sentencia produce la eliminacin de la ta+la de departamentos.

    SQL> dro$ tabe de$ #as#ade #onstraints

    Tabe dro$$ed.

  • 7/25/2019 6Introducin Al SQL

    31/38

    4 6istas

    na vista es como una ventana a travDs de la cual se puede consultar o cam+iar

    in"ormacin de la ta+la a la que est asociada.

    Las vistas tienen la misma estructura que una ta+laG "ilas y columnas. La nica

    di"erencia es que slo se almacena de ellas la de"inicin, no los datos. Los datos que se

    recuperan mediante una consulta a una vista se presentarn i%ual que los de una ta+la.

    =e hecho, si no se sa+e que se est tra+aando con una vista, nada hace suponer que es

    as!. 4l i%ual que sucede con una ta+la, se pueden insertar, actualizar, +orrar y

    seleccionar datos en una vista. 4unque siempre es posi+le seleccionar datos de una

    vista, en al%unas condiciones existen restricciones para realizar el resto de las

    operaciones so+re vistas.

    $%or &u utili'ar vistas(

    Las vistas pueden proporcionar un nivel adicional de se%uridad. )or eemplo, en

    la ta+la de empleados, cada responsa+le de departamento slo tendr acceso a la

    in"ormacin de sus empleados. La si%uiente sentencia produce la creacin de la

    vista de los empleados del departamento de administracin >co%(%e$ #reate vie am$Admin as see#t 8 Grom e$ ere #od_de$=?

    Die #reated. Las vistas permiten ocultar la compleidad de los datos. na 5= se compone demuchas ta+las. La in"ormacin de dos o ms ta+las puede recperarse utilizando

    una com+inacin de dos o ms ta+las, y estas com+inaciones pueden lle%ar a ser

    muy con"usas. *reando una vista como resultado de la com+inacin se puede

    ocultar la compleidad al usuario.

    Las vistas ayudan a mantener unos nom+res razona+les.

    Creacin de una )ista

    CREATE D+EP vista [!"#oumna ()*] AS #onsuta

    La vista se crea con las columnas que devuelve una consulta. Si no nos importa que las

    columnas de la vista hereden los nom+res de las columnas recuperadas en la consulta no

    tenemos que especi"icarlos.

    *orrado de una )ista

    /R&4 D+EP vista

  • 7/25/2019 6Introducin Al SQL

    32/38

    4.1 7peraciones so!re 6istas

    Consultas

    La consultas so+re las vistas se tratan de i%ual modo que so+re las ta+las.

    Actuali'aciones

    La in"ormacin puede ser actualizada en las vistas directamente o a travDs de las ta+las

    so+re las que se de"inen.

    Esisten al%unas restriccionesG

    5orrado de "ilas de una ta+la a travDs de una vista

    La vista se de+e crear con "ilas de una sola ta+laF sin utilizar las clusulas GROUPBYy DISTINCTF y sin utilizar "unciones de %rupo o re"erencias a

    pseudocolumnas >/?N1@.

    4ctualizacin de "ilas a travDs de una vista

    La vista ha de estar de"inida se%n las restricciones anteriores y adems nin%una

    de las columnas a actualizar de+e ha+er sido de"inida como una expresin.

    3nsercin de "ilas en una ta+la a travDs de una vista

    $odas las restricciones y adems todas las columnas o+li%atorias de la ta+la

    asociada de+en estar presentes en la vista.

    4.2 6istas de ms de una Ta!la

    Se pueden de"inir vistas so+re ms de una ta+la. )or eemplo, so+re la com+inacin de

    dos ta+las.

    )odemos querer ver todos los datos de los empleados del departamento 4dministracin.

    SQL> #reate vie de$Admin !#od_em$( nombre_em$(nombre_de$( dir- as see#t e.#od_em$( e.nombre( d.nombre( d.o# < Grom em$ e( de$ d J ere e.#od_de$=d.#od_de$ andd.nombre=Administra#ion

    SQL> see#t 8 Grom de$Admin

    C&/_E54 %&5BRE_E54 %&5BRE_/E4 /+RIIIIIIIIII IIIIIIIIII IIIIIIIIIIIIIII IIIIIIIIII ?? Cano Administra#ion Daadoid ? Ron#a Administra#ion Daadoid

    ?< Rueda Administra#ion Daadoid ?J 5artin Administra#ion Daadoid

  • 7/25/2019 6Introducin Al SQL

    33/38

    ?@ San; Administra#ion Daadoid ?M Lo$e; Administra#ion DaadoidM ros see#ted.

    15 8ugando con los 9om!res

    4 continuacin dos comandos que permiten u%ar con los nom+res de los o+etos en

    SQLG SINONYMy RENAME.

    15.1 SinnimosSQL permite crear un sinnimo para una ta+la o vista. Esto supone que pueden

    utilizarse dos nom+res di"erentes para un mismo o+eto.

    Creacin de un +innimo

    CREATE S6%&%65 sinonimo 0&R [usuario.]"taba vista)

    *orrado de un +innimo

    /R&4 S6%&%65 sinonimo

    na primera utilidad de los sinnimos es la posi+ilidad de independizar las aplicaciones

    de los nom+res "!sicos de las ta+las que manean. 4si, las aplicaciones harn re"erencia a

    un sinnimo de ta+la, que en cada caso puede estar asociado a una ta+la distinta.

    ?tra utilidad es la posi+ilidad de que un usuario acceda a las ta+las de otro usuario

    como si "ueran suyas, siempre que ten%a permiso para hacerlo, si al de"inir el sinnimo

    incluye el nom+re del usuario en la denominacin de la ta+la. 4s! si el usuario4 tiene

    permiso para leer el contenido de la ta+la e&$del usuario5, entonces desde la eecucinde la sentencia CREATE SYNONYM $ant"a FOR #!#ar"oB8e&$ver la ta+la

    #!#ar"oB8e&$como $ant"a.

    15.2 Comando RENAME

    El comando RENAMEse utiliza para modi"icar el nom+re de una ta+la, vista o sinnimo.

    La sintsis es la si%uiente

    RE%A5E "taba vista sinonimo) to nuevo%ombre

  • 7/25/2019 6Introducin Al SQL

    34/38

    Esta sentencia cam+iar el nom+re anti%uo por el nuevo, y a partir de este momento

    cualquier acceso al o+eto por el nom+re anti%uo ser respondido con un mensae de

    error.

    *onviene resaltar la di"erencia entre el comando SYNONYMy el comando RENAME.

    1ientras que el primero mantiene el nom+re ori%inal para acceder al o+eto, el se%undo

    elimina ese primer nom+re sustituyendolo por el nuevo.

    11 Lo s SQL*Plus

    En este apartado vamos a pro"undizar un poco en las otras posi+ilidades que nos +rindaSQL()lus en losG

    "icheros de comandos, y

    %eneracin de in"ormes,

    11.1 %ic&eros de Comandos

    4unque ya vimos una introduccin a los "icheros de comandos en anteriormente, vamos

    ahora a pro"undizar un poco en las posi+ilidades que nos o"rece SQL()lus.

    En un "ichero de comandos se pueden incluirG

    l!neas de comentarios,

    l!neas de eecucin,

    l!neas de comandos SQL, y

    l!neas de comandos SQL()lus.

    ,-neas de Comentarios

    Se pueden introducir comentarios en una archivo de comandos de tres manerasG

    tilizando del comando REMdel SQL()lus.

    tilizando los delimitadores de comentario de SQL )5y 5).

    tilizando los s!m+olos de comentario )LCSQL Y((Y.

    ,-neas de "jecucin

    *onstan de una nica +arra inclinada, Y)Y, y se introducen a continuacin de cada

    sentencia SQL indicando su eecucin.

    Sustituyen al punto y coma, Y>Y al "inal de las sentencias SQL.

  • 7/25/2019 6Introducin Al SQL

    35/38

    ,-neas de Comandos +.,

    Se puede introducir cualquiera de los comandos SQL enumerados en este curso, y se

    eecutarn de manera secuencial.

    Se permite el anidamiento de los "icheros de comandos.

    ,-neas de Comandos +.,/%lus

    SQL()lus aporta una serie de posi+ilidades al len%uae SQL que le acerca un poco mas

    a lo que entendemos como un len%uae de pro%ramacin.

    Se pueden de"inir constantes y varia+les, capturar datos del teclado, introducir

    parmetros en la llamada de un archivo de comandos, y al%una cosa ms.

    )aria!les de 0suario

    Se pueden de"inir 9aria+les de usuario con el comando DEFINE

    /E0+%E Dariabe = vaor)ara +orrar una varia+le se utiliza el comando UNDEFINE

    '%/E0+%E variabe

    *omo eemplo se puede de"inir la varia+le OFICIO

    SQL> defne of#io=anaista

    )aria!les de +ustitucin

    Las varia+les de sustitucin son un nom+re de varia+le de usuario con el s!m+olo Q

    delante. *uando SQL()lus detecta una varia+le de sustitucin en un comando, eecuta

    el comando tomando el valor de la varia+le.

    Esto se puede ver en el eemplo, donde pre%untamos por los empleados que son

    analistasG

    SQL> defne of#io=AnaistaSQL> defne taba=em$SQL> see#t nombre( of#io Grom Utaba ere of#io=Uof#iood ? see#t nombre( of#io Grom Utaba ereof#io=Uof#ione ? see#t nombre( of#io Grom em$ ereof#io=Anaista%&5BRE &0+C+&IIIIIIIIII IIIIIIIIIII

  • 7/25/2019 6Introducin Al SQL

    36/38

    Sastre AnaistaRe#io Anaista

    Captura de 1atos desde el Terminal

    En muchas ocasiones es necesario reco%er datos desde un terminal, que lue%o sern

    utilizados en el archivo de comandos. )ara realizarlo se pueden utilizar dos mediosG las

    varia+les de sustitucin o los parmetros en la l!nea de comandos.

    *uando SQL()lus reconoce una varia+le de sustitucin sin valor asi%nado se lo pide al

    usuarioG

    SQL> see#t 8 Grom de$ ere nombre=Unombrede$Enter vaue Gor nombrede$ +*/

    od ? see#t 8 Grom de$ ere nombre=Unombrede$ne ? see#t 8 Grom de$ ere nombre=+*/

    C&/_/E4 %&5BRE L&CIIIIIIIIII IIIIIIIIIIIIIII IIIIIIIIII +*/ Boe#io

    Si se desea que SQL()lus pre%unte por el valor de la varia+le al usuario slo la primera

    vez que se encuentra con ella, se colocar YQQY delante de la varia+le de usuario.

    $am+iDn se pueden utilizar hasta nueve parmetros en la l!nea de comandos cuando se

    llama a la eecucin de un archivo de comandos.

    En el archivo de comandos nos re"eriremos a los parmetros con las varia+les Q4,

    Q/, ... ,Qque se corresponden posicionalmente con ellos.

    =esde el archivo de comandos se puede hacer re"erencia a los parmetros cualquier

    nmero de veces y en cualquier orden.

    Comandos de Comunicacin con el 0suario

    Los si%uientes comandos proporcionan un medio de comunicacin con el usuarioG

    )/?1)$G presenta un mensae en la pantalla.

    4**E)$G Solicita un valor y lo almacena en la varia+le de usuario que se

    especi"!que.

    )4SEG ?+li%a al usuario a pulsarReturndespuD de leer un mensae.

    )ara ver cmo "uncionan sirve el si%uiente eemploG

    $rom$t Bus#ar os datos de un em$eado.$ause 4use Return.

  • 7/25/2019 6Introducin Al SQL

    37/38

    a##e$t nombrem$ $rom$t Em$eadoH see#t 8 Grom em$ ere nombre=Unombrem$

    Otros Comandos

    Los si%uientes comandos tam+iDn se pueden incluir en un archivo de comandosG

    *?NNE*$G para conectarse como otro usuario.

    JEL)G para o+tener ayuda en l!nea.

    EV3$G para dear SQL()Lus y salir al Sistema ?perativo.

    =ES*/35E =ES*G para o+tener in"ormacin so+re la estructura de una ta+la.

    J?S$ o OG para eecutar un comando del Sistema ?perativo.

    11.2 :eneracin de In+ormes*on SQL()lus podemos dar "orma a los resultados de las consultas para producir un

    in"orme. )odremosG

    *am+iar las ca+eceras de las columnas.

    =ar "orma a las columnas de tipo n#&'er, varc+ar/, %atey ong.

    *opiar y listar atri+utos de presentacin de las columnas.

    Suprimir valores duplicados e introducir espacios para meorar la presentacin.

    /ealizar y mostrar clculos >totales, medias, m!nimos, mximos, etc.@.

    =e"inir las dimensiones de las p%inas.

    +icar t!tulos en la ca+ecera y pie de las p%inas.

    3ntroducir la "echa o el nmero de p%ina en los t!tulos.

    )ero de todo esto slo vamos a ver el modo de realizar las operaciones ms comunes y

    sencillas.

    5sicamente, el "ormato con el que se van a presentar los resultados de las cosultas

    dependen de unos parmetros y de unos comandos.

    %armetros

    SE$ L3NES3ZEG pone el nmero mximo de caracteres por l!nea. )or de"ecto

    vale 7: y el mximo es 888.

    SE$ )4

  • 7/25/2019 6Introducin Al SQL

    38/38

    SE$ -EE=54*] [ n U ?N U ?--\G 1uestra el nmero de re%istros recuperados

    en cada consulta cuando se recuperan n o ms re%istros. ?N se pueden

    considerar como nA#, y ?-- como nA:.

    SE$ 9E/3-M [?N U ?--\G *ontrola la salida de con"irmacin para los valores

    de las varia+les de sustitucin. )or de"ecto est activado.

    Comandos

    $$3$LEG "ormacin del enca+ezado de p%ina.

    5$3$LEG "ormacin del pie de p%ina.

    *?L1NG "ormatear cada columna.

    5/E4]G puntos de ruptura en los listados.

    *?1)$EG realizar clculos con las columnas.