6Introdución Al SQL
-
Upload
pedro-menendez -
Category
Documents
-
view
218 -
download
0
Transcript of 6Introdución Al SQL
-
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.