Está en la página 1de 43

Programador/a de Sistemas de Bases de Datos Relacionales

Lenguaje SQL

Lenguaje SQL

Pgina 1/43

Programador/a de Sistemas de Bases de Datos Relacionales

ndice
1 2 Introduccin 1.1 Caractersticas y Beneficios de SQL El Lenguaje SQL 2.1 D L !Data ani"ulation Language# 2.2 DDL !Data Definition Language# 2.$ DCL !Data Control Language# 2.% Ele&entos de SQL 2.' ()jetos de un Es*ue&a 2.+ ,eglas "ara -o&)rar ()jetos 2.. ,eglas "ara ,eferenciar ()jetos 2./ 0lias de -o&)re de 1a)la 2.2 0lias de Colu&nas 2.13 1i"os de Datos El Lenguaje de ani"ulacin de Datos $.1 La Sentencia SELEC1 $.2 ("eradores. 4unciones y Condiciones $.$ Co&)inaciones de 1a)la 56(I-S7 $.% Su)consultas o Su)selects $.' La Sentencia I-SE,1 $.+ La Sentencia 89D01E $.. La Sentencia DELE1E El Lenguaje de Definicin de Datos %.1 Sentencias DDL %.2 C,E01E 10BLE %.$ C,E01E I-DE: %.% C,E01E S;-(-; %.' C,E01E <IE= %.+ 0L1E, 10BLE %.. D,(9 10BLE %./ D,(9 I-DE: %.2 D,(9 S;-(-; %.13 ,E-0 E %.11 1,8-C01E El Lenguaje de Control de Datos '.1 9ri>ilegios y ,oles '.2 C,E01E ,(LE '.$ ?,0-1 '.% ,E<(@E

'

Lenguaje SQL

Pgina 2/43

Programador/a de Sistemas de Bases de Datos Relacionales

Introduccin
El lenguaje SQL consiste en un grupo de comandos ue todos los programas ! usuarios pueden utili"ar para acceder a los datos dentro de una #ase de datos$ %ormalmente& se accede a los datos a tra'(s de aplicaciones o )erramientas sin tener ue utili"ar directamente SQL& pero las aplicaciones estn reali"adas con dic)o lenguaje$ El modelo de #ase de datos relacional *ue originalmente desarrollado por E$ +$ ,odd )acia los a-os ./$ El lenguaje SQL *ue desarrollado por 0B1 en un prototipo de #ase de datos relacional llamada S2S3E1 R a mediados de los ./$ El lenguaje SQL original 4SEQ5EL26 se de*ini7 en %o'iem#re de 18.9 por la re'ista de 0B1 llamada 0B1 :ournal o* R;D$ En 18.8 <racle ,orporaci7n introduce la primera implementaci7n comercial disponi#le de este lenguaje$ SQL tam#i(n )a sido implementado como lenguaje para los sistemas de #ase de datos de 0B1 DB2 ! SQL/DS$ SQL est implementado ! aceptado estndar de la industria como lenguaje de acceso a #ases de datos$ ,umple los estndares =%S0/0S</+0PS 4=merican %ational Standard 0nstitute& 0nternational Standars <rgani"ation& +ederal 0n*ormation Processing Standard respecti'amente6$

Caractersticas y Beneficios de SQL


%o es un lenguaje procedural por ue> Procesa 'arias *ilas a la 'e"& mejor ue una sola$ La na'egaci7n para #uscar los datos es automtica& utili"ando unas rutinas de acceso denominadas ?<ptimi"ador@ ue descri#iremos ms adelante$ EAiste una eAtensi7n procedural al SQL denominada PL/SQL& ue consisten en me"clar SQL estndar con comandos puramente procedimentales 4goto& B)ile& *or& declares& etc$6$ Esto nos permite reali"ar una operaci7n so#re los datos #asndonos en los resultados o#tenidos anteriormente$ El lenguaje es sencillo& mu! similar al idioma ingl(s ! los comandos #sicos pueden aprenderse en pocas )oras$ Es el mismo lenguaje para todos los tipos de usuarios desde cual uier )erramienta ! para cual uier tipo de acti'idad inclu!endo> =dministradores del sistema ! de Base de Datos$ Programadores de =plicaciones$ 5suarios *inales$

Lenguaje SQL

Pgina 3/43

Programador/a de Sistemas de Bases de Datos Relacionales

SQL es un lenguaje uni*icado para todo tipo de tareas ! categorCas inclu!endo> ,onsulta& actuali"aci7n& inserci7n ! #orrado de *ilas en una ta#la$ ,reaci7n modi*icaci7n reempla"amiento ! #orrado de o#jetos$ ,ontrol de acceso a la #ase de datos ! a sus o#jetos$ Daranti"ar integridad ! consistencia de los datos$

El Lenguaje SQL
%ormalmente una #ase de datos relacional almacena in*ormaci7n en estructuras #sicas denominadas ta#las$ 5na ta#la es una estructura so#re la ue se almacena in*ormaci7n ue interesa a nuestro sistema$ 5na ta#la est compuesta por columnas ! *ilas$ 5na columna es la representaci7n de un atri#uto& propiedad o caracterCstica de una ta#la$ 5na *ila es una ocurrencia en la ta#la$ Se pueden esta#lecer reglas a las ue ueremos ue se ajusten nuestros datos& o u( tipos de datos se almacenen$ Se pueden esta#lecer tam#i(n relaciones entre las ta#las de nuestras aplicaciones$ La implementaci7n de estas reglas se detallar en los pr7Aimos capCtulos$ El lenguaje s l se su#di'ide a su 'e" en tres tipos de lenguaje dependiendo del tipo de operaci7n ue deseemos reali"ar so#re la #ase de datos$ Estos tipos son> D1L 4Data 1anipulation Language6 DDL 4Data De*inition Language6 D,L 4Data ,ontrol Language6

DML (Data Manipulation Language)


Este su#lenguaje agrupa los comandos s l ue permiten reali"ar consultas ! modi*icaciones& inserciones ! #orrados so#re los datos de las ta#las& es decir> select ,onsultar datos& sin modi*icarlos update =ctuali"ar datos de ta#las insert 0ntroducir nue'os datos a las ta#las delete Borrar datos de las ta#las Las sentencias update& insert ! delete de#en 'alidarse contra la #ase de datos& o des)acerse& empleando las sentencias commit o rollback$

Lenguaje SQL

Pgina 4/43

Programador/a de Sistemas de Bases de Datos Relacionales

DDL (Data Definition Language)


Este su#lenguaje agrupa las sentencias s l utili"adas para de*inir& #orrar& reempla"ar o alterar estructuras de la #ase de datos& es decir> create Permite al usuario de*inir un o#jeto& por ejemplo una ta#la$ alter Permite al usuario modi*icar las caracterCsticas de un o#jeto !a eAistente$ Por ejemplo a-adir una columna a una ta#la$ drop Permite al usuario #orrar un o#jeto$ Por ejemplo una ta#la completa& incluida su de*inici7n& no solo las *ilas$ rename Permite renom#rar un o#jeto& por ejemplo una 'ista$ truncate Borra las *ilas de una ta#la o Cndice sin #orrar su estructura o de*inici7n$ La ta#la permanece& pero 'acCa$

DCL (Data Control Language)


Este su#lenguaje agrupa sentencias utili"adas por el administrador o por el due-o de un o#jeto para conceder o suprimir pri'ilegios de acceso a la #ase de datos o a un o#jeto$ Por ejemplo> grant ,oncede pri'ilegios$ revoke Quita o suprime pri'ilegios$

Elementos de SQL
=ntes de comen"ar a tra#ajar con s l se de#e estar *amiliari"ado con los siguientes conceptos> <#jetos de un Es uema Reglas para %om#rar <#jetos Reglas para Re*erenciar <#jetos 3ipos de Datos ()jetos de un Es*ue&a 5n es uema es un conjunto de o#jetos o estructuras de datos propiedad de un usuario$ ,ada usuario tiene su propio es uema& ue coincide con el nom#re del usuario ue crea el o#jeto$ Los o#jetos se crean& ! se puede modi*icar su estructura& con el lenguaje DDL$ Los o#jetos son de los siguientes tipos> 3a#las 4Estructura Bsica6 Endices Secuencias Fistas Sin7nimos =grupaciones Procedimientos ! +unciones almacenados Pa uetes

Lenguaje SQL

Pgina G/43

Programador/a de Sistemas de Bases de Datos Relacionales

Disparadores 4triggers6 almacenados en #ase de datos Replicas ! Replicas l7gicas Enlaces de #ases de datos
EAisten otros o#jetos ue se crean ! manipulan a tra'(s de s l& ! ue se almacenan en la #ase de datos& pero no son creados dentro del es uema de un usuario& ni son propiedad de nadie$ Estos o#jetos son> Per*iles Roles Segmentos de Roll#acH 3a#lespaces =lgunos o#jetos estn di'ididos a su 'e" en partes mas pe ue-as& como por ejemplo> 5na columna es una parte de una ta#la o 'ista$ 5na restricci7n de integridad es parte de una ta#la$ Procedimientos ! *unciones son parte de un pa uete$ ,eglas "ara -o&)rar ()jetos Las reglas de nomenclatura de o#jetos son> El nom#re de un o#jeto de#e tener una longitud entre 1 4mCnimo6 ! 3/ caracteres 4mAimo6$ EAcepto> 1$ El nom#re de una #ase de datos est limitado a I caracteres$ 2$ El nom#re de un enlace de #ase de datos esta limitado a 12I caracteres$ El nom#re de un o#jeto no puede estar entre par(ntesis& ni entrecomillado& etc$ Los nom#res de o#jetos pueden escri#irse en ma!Jsculas o minJsculas$ El nom#re del o#jeto de#e comen"ar con un carcter reconoci#le por el conjunto de caracteres de la #ase de datos& ! ue no sea un num(rico$ El nom#re de un o#jeto solo contiene caracteres al*anum(ricos& ! se permite adems el carcter underscore 4KLM6$ 3am#i(n admite& pero se desaconseja por uso interno& los caracteres d7lar 4KNM6 ! almo)adilla 4KOM6$ EAiste una lista de pala#ras reser'adas ue no pueden utili"arse para nom#rar o#jetos$ Se puede nom#rar un o#jeto con un nom#re alternati'o o sin7nimo& ! a una columna con un nom#re alternati'o temporal& denominado alias$

Lenguaje SQL

Pgina 9/43

Programador/a de Sistemas de Bases de Datos Relacionales

,eglas "ara ,eferenciar ()jetos La sintaAis general para re*erenciar un o#jeto es la siguiente>
[esquema.]nombre_objeto[.parte_objeto]

donde>
esquema

nombre_objeto parte_objeto

0ndica el es uema propietario del o#jeto$ Por ejemplo de#emos indicar el usuario ue creo dic)o o#jeto cuando ueremos consultarlo ! no tenemos sin7nimos asociados$ 0ndica el nom#re del o#jeto ue ueremos re*erenciar$ 0ndica una parte determinada del o#jeto$ Por ejemplo para indicar una columna de una ta#la en una sentencia select$ Es o#ligatorio indicar el nom#re de ta#la al ue pertenece una columna cuando estamos reali"ando una consulta a dos ta#las ue tienen columnas ue se denominan igual$

0lias de -o&)re de 1a)la Se utili"a para renom#rar temporalmente una ta#la dentro de una sentencia select& por ra"ones de clari*icaci7n ! desarrollo$ %o es lo mismo un alias de ta#la ue un sin7nimo en el sentido de <racle& !a ue este Jltimo es un nom#re alternati'o ue se crea para una ta#las& 'ista& etc$ ! ue permanece )asta ue se elimina$ 5n alias de ta#la solo eAiste durante la ejecuci7n de la sentencia select en la ue se utili"a$ La sintaAis es>
from nombre_objeto alias

donde>
nombre_objeto alias

0ndica el o#jeto 4ta#la& 'ista& sin7nimo6 al ue estamos re*erenciando 0ndica el nom#re por el ue se 'a a reconocer en la sentencia select a dic)o o#jeto$

0lias de Colu&nas En el resultado de una consulta aparecen en las ca#eceras de las columnas el nom#re ue dic)a columna tenga en la ta#la$ Si deseamos cam#iarlo para modi*icar la 'isuali"aci7n del resultado& podemos utili"ar alias de columna$ 3am#i(n se pueden utili"ar para re*erenciar dic)as columnas desde comandos s lplus$ ,uando el alias de una columna est compuesto por mas de una pala#ra& ! eAisten espacios en #lanco& o algJn carcter especial en medio& de#e acotarse el literal con do#les comillas$ 1i"os de Datos ,ada literal o 'alor de columna ue se manipula esta englo#ado en un tipo de dato$ ,ada tipo de dato contiene una serie de caracterCsticas asociadas& por ejemplo un limite en la longitud del 'alor ue pueden tener$

Lenguaje SQL

Pgina ./43

Programador/a de Sistemas de Bases de Datos Relacionales

,uando se crea una ta#la se especi*ica a ue tipo de datos asociamos cada columna$ Luego& dependiendo del tipo de dato podremos insertar ciertos 'alores o esta#lecer ciertas comparaciones$ Los tipos de datos son> ,7digo 3ipo Dato VARCHAR !tama"o# 1 Descripci7n ,adena de caracteres de longitud 'aria#le$ La mAima longitud se indica en tama-o$ El tama-o mAimo es 2/// caracteres en la 'ersi7n . ! 2GG en la 'ersi7n 9$ %Jmero de tama-o n dCgitos 4)asta 3I6 de los cuales d dCgitos son dedicados a la parte decimal$ ,adena de caracteres de longitud 'aria#le$ 3ama-o )asta 2 Diga #!tes$ +ec)a$ Dato #inario de longitud 'aria#le$ 3ama-o mAimo de 2GG #!tes$ ,adena #inaria de longitud 'aria#le de )asta 2 Diga #!tes$ Pseudocolumna en notaci7n )eAadecimal ue indica la posici7n *Csica de una *ila en la #ase de datos$ ,adena al*anum(rica de longitud *ija$ 3ama-o mAimo 2GG #!tes$ Si no se indica precisi7n ocupa un carcter$

2 I 13 23 24 98 89

$%&'(R!n[) d]# *+$, -A.( RA/!tama"o# *+$, RA/ R+/0CHAR!tama"o#

Los c7digos de los tipos de datos son los utili"ados internamente por <racle en el diccionario$

El Lenguaje de
select insert update delete

ani"ulacin de Datos

Dentro del lenguaje de manipulaci7n eAisten las siguientes sentencias>

La Sentencia SELECT
3odas las consultas se reali"an con una sola sentencia> select Las consultas se reali"an por asociaci7n de 'alores& ! no por la situaci7n *Csica donde se encuentren los datos$ Se puede recuperar toda la in*ormaci7n o tam#i(n su#conjuntos de *ilas o de columnas$ La representaci7n de los datos se puede ordenar$

Lenguaje SQL

Pgina I/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sintaAis es>

Para tra#ajar con SQL utili"aremos la )erramienta <racle denominada s lPplus& desde donde ejecutaremos las sentencias deseadas$ S lPplus contiene sus propios comandos de edici7n& *ormateo de columnas ! clculos& ! rupturas de control #asndose en los resultados$ Qa! ue distinguir entre comandos s lPplus ! sentencias s l$ La )erramienta s lPplus esta comentada en su correspondiente manual$ Despu(s de la clusula select indicamos la lista de columnas ue deseamos seleccionar$ Se pueden seleccionar todas las columnas de una ta#la& indicando cada una de ellas& separadas por comas& o indicando el sCm#olo asterisco 4KPM6 ue uiere decir todas las columnas$

Lenguaje SQL

Pgina 8/43

Programador/a de Sistemas de Bases de Datos Relacionales

,on la clusula from indicamos el nom#re de la ta#la& o ta#las& de las ue deseamos eAtraer o contrastar in*ormaci7n$ En la clusula from de#en aparecer los nom#res de las ta#las a las ue pertenecen las columnas mencionadas en cual uiera de las otras clusulas$ Si )a! mas de una ta#la se separan mediante comas 4K&M6$ La clusula from de#e aparecer despu(s de la enumeraci7n de columnas de la clusula select$ Recordar ue cuando la ta#la no es de nuestra propiedad se de#e anteponer al nom#re de la ta#la el nom#re del es uema propietario$ ,uando se me"clan dos ta#las o mas en una consulta es con'eniente anteponer el nom#re de la ta#la al de la columna cada 'e" ue la columna es re*erenciada$ 3am#i(n se puede asignar un alias temporal al nom#re de ta#la ! utili"ar este como pre*ijo de la columna$ La clusula 12ere se utili"a para *iltrar in*ormaci7n so#re las *ilas ue deseamos recuperar$ Solo se mostrarn a uellas ue cumplan la condici7n impuesta$ La clusula 12ere puede utili"arse tam#i(n en otras sentencias de manipulaci7n& como por ejemplo update ! delete$ El criterio de #Js ueda puede ser tan complejo como se desee$ Las comparaciones esta#lecidas en la clusula 12ere dependen de los tipos de datos so#re los ue esta#le"co dic)as comparaciones$ Para cada tipo de datos se utili"an operadores de comparaci7n& ! en algunos casos *unciones de con'ersi7n para igualar tipos de datos distintos$ La clusula order b3 determina el orden en el ue se mostrar el resultado de la consulta$ =dmite la ordenaci7n por mas de una columna$ 3am#i(n se admite ue la columna especi*icada en la clusula order b3 sea una eApresi7n o )a!a sido modi*icada por una *unci7n$ Se admite la ordenaci7n por posici7n$ El conjunto de caracteres de ordenaci7n se #asa en el parmetro de arran ue de la #ase de datos denominado %LSLS<R3& ue est implCcito a su 'e" en otro denominado %LSLL=%D 4de %ational Language Support ue es la utilidad ue le indica al ser'idor el lenguaje en el ue de#e tra#ajar6$ %o se ordenar igual si tenemos el soporte al lenguaje americano ue al espa-ol 4utili"aci7n de e-es& por ejemplo6$ La ordenaci7n por de*ecto es ascendente& pero se puede indicar si se desea& para cada uno de los campos el tipo de ordenaci7n 4asc para ordenaci7n ascendente ! desc para ordenaci7n descendente6$ Para utili"ar el m(todo de posici7n se indica en la clusula order b3 el nJmero de posici7n ue ocupa la columna o eApresi7n por la ue ueremos ordenar en la clusula select$ Por ejemplo>
select nombre) apellido4) apellido ) edad from curso order b3 )5)6)47

)arCa ue el resultado saliese ordenado por apellido1& apellido2& edad ! nom#re$ La utili"aci7n del m(todo de posici7n en la clusula order b3 se lle'a a ca#o cuando la cantidad de columnas por las ue se desea ordenar es mu! grande& aun ue se puede usar en cual uier situaci7n& pero es menos clari*icadora en sentencias select pe ue-as$

Lenguaje SQL

Pgina 1//43

Programador/a de Sistemas de Bases de Datos Relacionales

Operadores !unciones y Condiciones


("eradores 5n operador se utili"a para manipular datos de *orma indi'idual ! de'ol'er un 'alor$ 3am#i(n se les denomina operandos o argumentos$ Suelen estar representados por caracteres especiales o pala#ras cla'e$ Por ejemplo el operador de adici7n es el sCm#olo KRM& ! la cla'e ue identi*ica ue no )a! 'alores nulos es Kis not nullM$ La di'isi7n es>

<peradores aritm(ticos <peradores de caracteres <peradores condicionales <peradores l7gicos

("eradores arit&Aticos = continuaci7n 'eamos una lista de los operadores aritm(ticos> <perador Prop7sito Ejemplo select salario8comision 8& 9 Suma ! resta$
:& ;

1ultiplicar ! di'idir ("eradores de caracteres El operador de caracteres es>

from empleados7 select salario : 4 from empleados7

<salario anual=

<perador
>>

Prop7sito ,oncatenar caracteres

cadenas

Ejemplo de select ?(stimado se"or ?>>nombre


from empleados7

("eradores condicionales o de co&"aracin Los operadores de comparaci7n se utili"an en los predicados condicionales& para comparar una eApresi7n con otra$ El resultado puede ser 'erdadero 43R5E6& *also 4+=LSE6$ Los operadores de comparaci7n son> <perador Prop7sito Ejemplo @ ,ompro#ador de select : from departamento igualdad$
B@) CD D C D@

%o igualdad$ 1a!or ue$ 1enor ue$ 1a!or o igual ue$

12ere ndepartamento @ 4A7 select : from departamento 12ere ndepartamento B@ 4A7 select : from empleados 12ere salario D 4EAA7 select : from empleados 12ere salario C 4EAA7 select : from empleados

Lenguaje SQL

Pgina 11/43

Programador/a de Sistemas de Bases de Datos Relacionales 12ere salario D@ 5AAA7 select : from empleados 12ere salario C@ AAA7 select : from departamento 12ere ndepartamento in !4A)5A)EA#7 select : from departamento 12ere ndepartamento not in !4A) A)EA#7 select : from empleados 12ere salario bet1een AAA and 5AAA7 select : from empleados 12ere salario not bet1een 5AAA7 select : from empleados 12ere comision is null7

C@ 0$ $+. 0$

1enor o igual ue$ 0gual a uno de los 'alores de la lista$ El 'alor no se encuentra en la lista$ El 'alor es ma!or o igual ue n ! menor o igual ue m$ El 'alor no esta dentro del rango delimitado por n ! m$ ,omprue#a si )a! ausencia de contenido 4'alor6 en una columna$ Es el Jnico operador ue puede compro#arlo$ ,omprue#a si )a! contenido 4'alor6 en una columna$ ,omprue#a cadenas de caracteres con un patr7n de #Js ueda$ ,omprue#a cadenas de caracteres ue no coincidan con un patr7n de #Js ueda$

'(./(($ n A$- m $+. '(./(($ n A$- m 0F $%**

AAA and

0F $+. $%** *0G(

select : from empleados 12ere comision is not null7 select : from empleados 12ere apellido4 like ?&AR.0HI select : from empleados 12ere apellido4 not like ?&AR.0HI

$+. *0G(

("erador liBe Feamos a continuaci7n con mas detalle el operador like$ El operador like #usca cadenas de caracteres ue contengan la porci7n de cadena indicada& mientras ue el operador igual 4K@M6 #uscarCa cadenas de caracteres id(nticas a la proporcionada$ Para reali"ar #Js uedas con like se utili"an los caracteres comodines KHM ! K_M$ El sCm#olo KHM indica cual uier cadena de caracteres de longitud 'aria#le$ En el ejemplo anterior #uscarCa todos los empleados cu!o primer apellido comen"ase con la cadena K1=R30M& sin importar la continuaci7n 4K1=R30%M& K1=R30%ESM& etc$6$ El sCm#olo K_M 4underscore6 indica cual uier carcter en la posici7n donde se encuentre& pero uno solo$

Lenguaje SQL

Pgina 12/43

Programador/a de Sistemas de Bases de Datos Relacionales

("eradores lgicos Los operadores l7gicos se utili"an para com#inar los resultados de dos condiciones de comparaci7n ! producir un Jnico resultado$ Los operadores l7gicos son> <perador
$+.

A$-

Prop7sito De'uel'e 3R5E si la condici7n e'aluada es *alsa& de otra manera de'uel'e +=LSE$ De'uel'e 3R5E si las dos condiciones se cumplen$ De'uel'e 3R5E si alguna de las condiciones se cumple

Ejemplo
select : from empleados 12ere not !apellido4@I&AR.0$I# select from 12ere and select from 12ere or : empleados puesto@IA$A*0F.AI ndepartamento@4A : empleados puesto@IA$A*0F.AI ndepartamento@4A

+R

Dentro de los operadores l7gicos eAisten los operadores de conjuntos$ Los operadores de conjuntos son a uellos ue 'isuali"an los resultados de dos consultas en un Jnico resultado$ Los operadores de conjuntos son> <perador
%$0+$ %$0+$ A** 0$.(RF(C. &0$%F

TQue de'uel'eU Suma de todas las *ilas distintas seleccionadas por am#as consultas$ Suma todas las *ilas seleccionadas por am#as consultas inclu!endo duplicados$ De'uel'e todas las *ilas comunes de am#as consultas eliminando duplicados$ De'uel'e todas las *ilas seleccionadas por la primera consulta ue no sean recuperadas por la segunda consulta$

4unciones 5na *unci7n es similar a un operador puesto ue manipula datos ! de'uel'e un resultado$ Di*iere de los operadores& puesto ue admite argumentos$ Si se llama a una *unci7n con un argumento en el ue el tipo de dato es distinto al ue espera la *unci7n& se con'ierte automticamente ! de *orma implCcita al tipo ue la *unci7n espera$

Lenguaje SQL

Pgina 13/43

Programador/a de Sistemas de Bases de Datos Relacionales

EAisten dos tipos gen(ricos de *unciones> +unciones de *ila simple $ +unciones de grupo$ Estos dos tipos di*ieren en el nJmero de *ilas so#re las ue actJan$ 5na *unci7n de *ila simple de'uel'e un resultado Jnico para cada *ila so#re la ue actJa& mientras ue una *unci7n de grupo de'uel'e un resultado Jnico para un conjunto de *ilas$ Las *unciones de *ila simple pueden aparecer en las listas de la clusula select$ Las *unciones de grupo pueden aparecer adems de en la clusula select en una clusula llamada group b3 J 2aving& ue sir'e para crear rupturas so#re resultados ! 'isuali"ar s7lo la parte ue nos interesa$ La distri#uci7n entre tipos de *unci7n ser la siguiente> +unciones de *ila simple$ 1$ +unciones num(ricas$ 2$ +unciones de caracteres$ 3$ +unciones de *ec)as$ 4$ +unciones de con'ersi7n$ G$ <tras *unciones$ +unciones de grupo$ 4unciones de fila si&"le Las *unciones siguientes son *unciones agrupadas segJn el tipo de dato esperan como argumento ! el tipo de dato ue de'uel'e$ 4unciones nu&Aricas Son a uellas 'alores num(ricos> +unci7n a#s ceil cos cos) eAp *loor ln log mod SintaAis
abs!n# ceil!n# cos!n# cos2!n# eKp!n# floor!n# ln!n# log!m) n#

ue

ue aceptan como entrada argumentos num(ricos ! de'uel'en Prop7sito De'ol'er el 'alor a#soluto de n$ De'uel'e el entero inmediatamente superior o igual a n$ De'uel'e el coseno de n 4n est en radianes6$ De'uel'e el coseno )iper#7lico de n$ De'uel'e el nJmero e ele'ado a n$ De'uel'e el entero inmediatamente in*erior o igual a n$ De'uel'e el logaritmo neperiano de n 4nV/6$ De'uel'e el logaritmo en #ase m de n$ La #ase m de#e ser un nJmero positi'o distinto de / o 1$ n tam#i(n de#e ser un 'alor positi'o$ De'uel'e el resto resultante de di'idir m entre n$

mod!m) n#

Lenguaje SQL

Pgina 14/43

Programador/a de Sistemas de Bases de Datos Relacionales

+unci7n poBer

SintaAis
po1er!m) n#

round sign sin sin) s rt tan tan) trunc

round!n[)m]#

sign!n# sin!n# sin2!n# sqrt!n# tan!n# tan2!n# trunc!n[)m]#

Prop7sito De'uel'e m ele'ado a la potencia n$ La #ase m ! el eAponente n pueden ser cual uier tipo de nJmero& pero si m es negati'o& n de#e ser un entero$ De'uel'e n redondeado a m dCgitos$ Si se omite m el 'alor por de*ecto es cero$ m puede ser negati'o$ Si nCA retorna W1& si n@A de'uel'e / ! si nDA retorna 1$ De'uel'e el seno de n$ De'uel'e el seno )iper#7lico de n$ De'uel'e la raC" cuadrada de n$ El 'alor de n no puede ser negati'o$ De'uel'e la tangente de n$ De'uel'e la tangente )iper#7lica de n$ De'uel'e n truncado a m decimales$ Si se omite m el 'alor por de*ecto es cero$

4unciones de caracteres +unciones de manejo de caracteres ue de'uel'en caracteres$ +unciones de *ila simple ue aceptan como argumento de entrada un carcter ! de'uel'en 'alores tipo carcter$ +unci7n c)r concat initcap loBer lpad SintaAis
c2r!n#

ltrim

replace

Prop7sito De'uel'e el carcter cu!o nJmero ascii correspondiente es n$ concat!char1) char2# De'uel'e char1 concatenado con char2$ Es e ui'alente al operador KXXM$ initcap!char# De'uel'e la cadena con la primera letra de cada pala#ra en ma!Jsculas& ! el resto en minJsculas$ lo1er!char# De'uel'e la cadena con todas las letras en minJsculas$ lpad!char1)n[)char2]# De'uel'e char1 rellenado a la i" uierda& )asta completar la longitud indicada en n& con el carcter indicado en char2$ Si char2 se omite rellena con #lancos$ ltrim!char[)muestra]# Borra los caracteres a la i" uierda de char& )asta encontrar el primer carcter ue no este en muestra$ Por de*ecto el 'alor de muestra es el carcter #lanco$ replace!char) Para la cadena elegida& char& reempla"a car_bus[) car_rep]# car_bus por car_rep$

Lenguaje SQL

Pgina 1G/43

Programador/a de Sistemas de Bases de Datos Relacionales

+unci7n rpad

SintaAis

rtrim

su#str translate upper

Prop7sito De'uel'e char1 rellenado a la derec)a )asta la longitud indicada en n con la cadena indicada en char2$ Si char2 se omite rellena con #lancos$ rtrim!char[)muestra]# Borra los caracteres a la derec)a de char )asta encontrar el primer carcter ue no este en muestra$ Por de*ecto muestra es un #lanco$ substr!char) m[) n]# De'uel'e una parte de char empe"ando en la posici7n indicada en m& ! tomando el nJmero de caracteres indicado en n$ translate!char) De'uel'e char con todas las caracteres ue muestra1) muestra2# aparecen en muestra1 sustituidos por el correspondiente en muestra2$ upper!char# De'uel'e la cadena char con todos los caracteres en ma!Jsculas$
rpad!char1)n[)char2]#

4unciones de &anejo de caracteres *ue de>uel>en nC&eros. +unciones de *ila simple ue aceptan como argumento de entrada un carcter ! de'uel'en 'alores num(ricos$ +unci7n ascii SintaAis
ascii!char#

instr

instr!char1)char2 [)n[)m]]#

lengt)

lengt2!char#

Prop7sito De'uel'e la representaci7n num(rica en el juego de caracteres ue se utili"a en la #ase de datos de la cadena char$ Si se utili"a ascii& en ascii& ! si se utili"a e#cdic de'ol'er el 'alor e#cdic$ Busca en char1 la cadena indicada en char2& empe"ando a partir del carcter cu!a posici7n es n& ! nos de'ol'er la posici7n de la mWsima aparici7n$ Por de*ecto m ! n 'alen 1$ De'uel'e la longitud de char en caracteres& inclu!endo los #lancos$

Lenguaje SQL

Pgina 19/43

Programador/a de Sistemas de Bases de Datos Relacionales

4unciones de fecDas 3odas las *unciones ue operan con 'alores de tipo date de'uel'en 'alores de tipo *ec)a& a eAcepci7n de &+$.HF_'(./(($ & ue de'uel'e un nJmero$ +unci7n addLmont)s lastLda! SintaAis
add_mont2s!f) n# last_da3!f#

mont)sL#etBeen mont2s_bet1een!f1)
f2#

neAtLda!

neKt_da3!f) char#

Prop7sito De'uel'e la *ec)a f mas n meses$ De'uel'e la *ec)a del Jltimo dCa del mes ue contenga la *ec)a f$ Se puede utili"ar para determinar cuantos dCas uedan del mes$ De'uel'e el nJmero de meses transcurridos entre f1 ! f2$ De'uel'e la *ec)a del primer dCa de la semana indicado en char& a partir de la *ec)a indicada en f$

4unciones de con>ersin Sir'en para con'ertir un tipo de dato en otro$ +unci7n c)artoroBid con'ert SintaAis Prop7sito ,on'ierte una 'aria#le char de tipo de dato c)ar o 'arc)ar2 a tipo roBid$ Para ello c2ar de#e respetar la representaci7n roBid$ convert!char)des ,on'ierte char de un juego de caracteres [)fuen]# fuen a un juego de caracteres des$ Si se omite el juego de caracteres *uente& toma por de*ecto el de la #ase de datos$ 2eKtora1!char# ,on'ierte una cadena char ue contiene un 'alor en )eAadecimal a *ormato raB$ ra1to2eK!raw# ,on'ierte el 'alor raw a su e ui'alente )eAadecimal$ ro1idtoc2ar!rowid# ,on'ierte un tipo de datos roBid contenido en la 'aria#le rowid a tipo de datos 'arc)ar2$ De la con'ersi7n resulta siempre una cadena de 1I caracteres de longitud$ to_c2ar!f[)formato]# ,on'ierte una *ec)a f de tipo date& o un nJmero f de tipo num#er& en un 'arc)ar2& utili"ando la mscara indicada en formato$ to_date!char ,on'ierte una cadena char de tipo c)ar o [) formato]# 'arc)ar2 en un 'alor tipo date$ El formato es la mscara de la *ec)a$ Si se omite toma el *ormato por de*ecto$
c2artoro1id!char#

)eAtoraB raBto)eA roBidtoc)ar

toLc)ar toLdate

Lenguaje SQL

Pgina 1./43

Programador/a de Sistemas de Bases de Datos Relacionales

+unci7n toLnum#er

SintaAis
to_number!char [) formato]#

Prop7sito ,on'ierte char& de tipo de dato c)ar o 'arc)ar2& a un tipo num#er$ to_number utili"a la mascara especi*icada en formato para conocer como ser la entrada de datos$

Escaras de for&atos. !ormatos num"ricos De#en proporcionarse las mascaras de con'ersi7n& en *ormato num(rico& adecuadas cuando> En una *unci7n to_c2ar se cam#ia un tipo de dato num#er a un tipo de dato 'arc)ar2$ En una *unci7n to_number se cam#ia un tipo de dato 'arc)ar2 o c)ar a num#er$ Los *ormatos num(ricos estn compuestos de uno o mas elementos de *ormatos$ Dic)os elementos son> Elemento
L

Ejemplo
LLLLLLL

ALLLLL M LLLLLA

N ' &0

NLLLLL 'LLLLL LLLLL&0

FLLLLL

OR , C

LLLLLOR LLLLL-LLL L,LLL CLLLL

Descripci7n El nJmero de nue'es especi*ica la cantidad de dCgitos ue se 'isuali"an$ Se 'isuali"an #lancos para los ceros a la i" uierda$ Fisuali"a los ceros a la i" uierda en esa posici7n como ceros en 'e" de como #lancos& o 'isuali"a el 'alor /& en lugar de #lancos$ =ntepone como pre*ijo el sCm#olo N$ De'uel'e los ceros como #lancos a menos ue se indi ue cero en la mscara de *ormato$ Fisuali"a el signo menos despu(s de los 'alores negati'os$ Para los 'alores positi'os muestra un espacio en #lanco$ 1uestra un mas 4K8M6 para los 'alores positi'os ! un menos 4K9M6 para los negati'os en la posici7n indicada$ 1uestra los 'alores negati'os entre los signos KCM ! KDM$ 1uestra el carcter decimal en la posici7n indicada$ Separa la parte entera ! *raccionaria de un nJmero$ 1uestra el separador de grupo en la posici7n indicada$ 1uestra el sCm#olo 0S< de la moneda en la posici7n indicada$

Lenguaje SQL

Pgina 1I/43

Programador/a de Sistemas de Bases de Datos Relacionales

Elemento
* ) !coma# . !punto# (((( R$

Ejemplo
*LLLL L)LLL LLL.L L.LLL(((( R$

Descripci7n 1uestra el sCm#olo de la moneda local en la posici7n indicada$ 1uestra una coma en la posici7n indicada$ 1uestra un punto en la posici7n indicada& separando la parte entera de la decimal$ 1uestra el 'alor en notaci7n cientC*ica$ De'uel'e en ma!Jsculas o minJsculas 4rn6 el 'alor del nJmero en notaci7n romana$ El nJmero de#e ser un entero entre 1 ! 3888$

&0 ! OR solo *ormato F solo puede

pueden estar en la Jltima posici7n de un *ormato num(rico$ El estar en la primera o Jltima posici7n$

Los caracteres ue de'uel'en los *ormatos -& ,& C& * son especi*icados por los siguientes parmetros de iniciali"aci7n de la #ase de datos$
, C *

,arcter Decimal Separador Drupo SCm#olo 1oneda 0S< SCm#olo 1oneda !ormatos tipo fec#a

%LSL%51ER0,L,Q=R=,3ERS %LSL%51ER0,L,Q=R=,3ERS %LSL0S<L,5RRE%,2 %LSL,5RRE%,2

Elemento
FCC M CC PPPP M FPPPP 0PPP PPP M PP M P 0PP M 0P M 0 P)PPP FP(AR M P(AR RR 'C o A'.C. o A.-. Q && R& mont2 mon

Signi*icado 0ndica el siglo$ Si se indica F& en las *ec)as de antes de ,risto aparece el pre*ijo K9M$ Fisuali"a los cuatro dCgitos del a-o$ F antepone el pre*ijo K9M para las *ec)as anteriores a ,risto$ Los cuatro dCgitos del a-o en *ormato 0S< estndar$ Los Jltimos 3& 2& o 1 dCgito/s del a-o$ Los Jltimos 3& 2& o 1 dCgito/s del a-o en *ormato 0S< estndar$ El a-o con una coma 4K)M6 en la posici7n indicada$ El nJmero del a-o en letras$ F antepone el pre*ijo K9M para las *ec)as anteriores a ,risto$ Los Jltimos dos dCgitos del a-o$ Se utili"a para a-os de otros siglos$ 0ndicador antes/despu(s de ,risto$ 0ndicador antes/despu(s de ,risto separado por puntos$ 3rimestre del a-o 4EneroW1ar"o Y 16$ %Jmero de mes 4Enero Y 16$ %Jmero de mes en notaci7n romana 4:ulioYF006$ %om#re del mes alineado con #lancos )asta nue'e caracteres de longitud$ %om#re del mes a#re'iado a tres letras$

Lenguaje SQL

Pgina 18/43

Programador/a de Sistemas de Bases de Datos Relacionales

Elemento
11 0/ 1 ddd dd d da3 d3 j am M pm a.m. M p.m. 22 M 224 22 6 mi ss sssss

Signi*icado %Jmero de la semana del a-o$ %Jmero de la semana del a-o en 0S< estndar$ %Jmero de semana dentro del mes$ %Jmero de dCa del a-o 41 a 3996$ %Jmero de dCa del mes 41 a 316$ %Jmero de dCa de la semana 41 a .6$ %om#re del dCa de la semana )asta nue'e caracteres$ %om#re del dCa de la semana a#re'iado$ +ec)a en juliano$ Los nJmeros especi*icados de#en ser enteros$ 0ndicador del meridiano$ 0ndicador del meridiano separado por puntos$ Qora del dCa 41 a 126$ Qora del dCa 4/ a 236$ 1inutos 4/ a G86$ Segundos 4/ a G86$ Segundos transcurridos desde medianoc)e 4/ a I93886

Las mascaras de *ormato 3ear ! s3ear de'uel'en el nom#re del a-o siempre en ingl(s$ Las especi*icaciones de algunos *ormatos 4mont2& mon& da3& d3& bc/ad& b.c$/a.d.& am/pm& a.m./p.m.6 dependen del lenguaje utili"ado en la #ase de datos indicados en los parmetros de iniciali"aci7n> %LSLD=3ELL=%D5=DE %LSL3ERR03<R2 %LSLL=%D5=DE (tras funciones = uC listaremos las *unciones de *ila simple ue no se englo#an en ninguna categorCa anterior$ +unci7n dump SintaAis
dump!expr [) formato]#

Prop7sito De'uel'e un 'arc)ar2 conteniendo el c7digo del tipo de dato al ue corresponde expr& la longitud en #!tes ! la representaci7n interna del dato$ El argumento formato indica la notaci7n en la ue se 'isuali"a el resultado$ Rormato puede tener los siguientes 'alores> S De'uel'e el resultado en notaci7n octal$ 4A De'uel'e el resultado en notaci7n decimal$ 4T De'uel'e el resultado en notaci7n )eAadecimal$ 4U De'uel'e el resultado en *ormato carcter$

Lenguaje SQL

Pgina 2//43

Programador/a de Sistemas de Bases de Datos Relacionales

+unci7n greatest least n'l

SintaAis

'si"e decode

Prop7sito De'uel'e el ma!or 'alor de una lista de eApresiones$ ,ompara carcter a carcter$ El tipo de datos siempre es 'arc)ar2$ least!expr De'uel'e el menor 'alor de una lista de [) expr2]...# eApresiones$ ,ompara carcter a carcter$ El tipo de dato es siempre 'arc)ar2$ nvl!expr1) expr2# 0ndica el 'alor ue )a de tener expr1 cuando en su contenido apare"can nulos$ El tipo de dato ue retorna expr2 es siempre el mismo ue tenga expr1$ vsiVe!expr# De'uel'e el nJmero de #!tes ue ocupa la representaci7n interna de expr$ decode!expr) val1) Dentro de una expr e'alJa los 'alores de la lista& cod1) ...) valn) val1 $$$ valn& ! los cam#ia por el c7digo codn[) default]# correspondiente& cod1 $$$ codn$ Si no se cumple ninguno podemos asignarle uno por de*ecto indicado en la eApresi7n default$
greatest!expr [) expr2]...#

<aria)les de entorno EAiste un grupo de 'aria#les& ue aun ue no *orman parte de la sintaAis propia de s l en <racle& *orman parte del entorno de tra#ajo& ! son *recuentemente utili"adas$ ,ontienen normalmente datos acerca de la sesi7n actual$ Faria#le uid user useren' SintaAis
uid user userenv!opcin#

s!sdate

s3sdate

Prop7sito De'uel'e un entero ue es el identi*icador Jnico de el usuario conectado$ De'uel'e un 'arc)ar2 ue contiene el nom#re del usuario conectado en la #ase de datos local$ De'uel'e in*ormaci7n en un tipo de datos 'arc)ar2 acerca de la sesi7n actual$ El argumento opcin puede tener los 'alores> *A$,%A,(& de'uel'e el lenguaje ! el territorio utili"ado durante la sesi7nZ F(FF0+$& de'uel'e un identi*icati'o de la sesi7nZ .(R&0$A*& ue de'uel'e el identi*icador del terminal utili"ado$ ,ontiene la *ec)a del sistema$

Lenguaje SQL

Pgina 21/43

Programador/a de Sistemas de Bases de Datos Relacionales

4unciones de gru"o Las *unciones de grupo de'uel'en un resultado #asado en un grupo de *ilas& mejor ue so#re una *ila solamente$ =lgunas *unciones de grupo aceptan las siguientes opciones$
distinct

all

Esta opci7n pro'oca ue la *unci7n de grupo considere solamente los distintos 'alores de la eApresi7n$ 3am#i(n puede utili"arse sin *unciones de grupo$ Esta opci7n pro'oca ue la *unci7n de grupo considere todos los 'alores recuperados& inclu!endo duplicados$ Es la opci7n por de*ecto$

3odas las *unciones de grupo& eAcepto count!:# ignoran los 'alores nulos$ Feamos a continuaci7n las principales *unciones de grupo$ +unci7n a'g count maA min stdde' sum 'ariance SintaAis Prop7sito De'uel'e la media de n$ De'uel'e el nJmero de *ilas en la consulta$ maK![distinct>all] expr# De'uel'e el 'alor mAimo de expr$ min![distinct>all] expr# De'uel'e el 'alor mCnimo de expr$ stddev![distinct>all] n# De'uel'e la des'iaci7n estndar de n$ sum![distinct>all] n# De'uel'e la suma de los 'alores de n$ variance![distinct>all] n# De'uel'e la 'arian"a de n$
avg![distinct>all] n# count!W:>[distinct>all] exprX#

La clEusula grou" )y Se puede utili"ar la clusula group b3 para agrupar las *ilas seleccionadas ! de'ol'er una sola *ila resumiendo la in*ormaci7n solicitada$ La selecci7n de los conjuntos de *ilas se reali"an para calcular propiedades de los conjuntos& #asndose en los 'alores de las eApresiones especi*icados en la clusula group b3$ Si la sentencia select contiene la clusula group b3& la lista de la select solo puede contener los siguientes tipos de eApresiones> constantes *unciones de grupo eApresiones id(nticas a las ue estarn en la clusula group b3$ eApresiones implCcitas en las eApresiones mencionadas en la select ue e'alJen el mismo 'alor para todas las *ilas de un grupo$

Lenguaje SQL

Pgina 22/43

Programador/a de Sistemas de Bases de Datos Relacionales

Las eApresiones de la clusula group b3 pueden contener cual uier columna de una ta#la o 'ista mencionada en la clausula from& sin importar ue estas columnas est(n o no en la lista de la select$ Se puede utili"ar la clusula 2aving para restringir el nJmero de grupos de *ilas de*inidas en la clusula group b3 ue se 'isuali"arn$ El procesamiento de la sentencia es el siguiente> 1$ Si la sentencia contiene la clusula 12ere& primero se *iltran todas las *ilas ue no satis*agan la condici7n 12ere$ 2$ Se reali"an los clculos especi*icados ! se *orman los conjuntos de *ilas especi*icados en group b3$ 3$ Solo se muestran los su#conjuntos recuperados ue satis*acen la clusula 2aving$

Com$inaciones de Ta$la %O&'S


5n join es una sentencia select ue com#ina *ilas de dos o mas ta#las$ La clusula 12ere es la ue determina como se reali"a la com#inaci7n$ Si la clusula 12ere es ineAistente o inadecuada puede reali"arse un producto cartesiano& ue com#inar todas las *ilas de todas las ta#las implicadas en la com#inaci7n$ El producto cartesiano genera un nJmero de *ilas mu! ele'ado$ Por ejemplo si com#ino dos ta#las de 1// *ilas cada una& ! no esta#le"co clusula 12ere& se generarn 1//// *ilas$ Por lo tanto es con'eniente seguir siempre un criterio de com#inaci7n$ 6oins si&"les El tipo de com#inaci7n mas utili"ado es el denominado join simple& ue de'uel'e *ilas de dos o mas ta#las #asndose en una condici7n de igualdad$ El criterio de com#inaci7n es pues el esta#lecido por el operador KYM$ Suponiendo ue unimos dos ta#las& la sintaAis #sica serCa la siguiente> select columnas de las ta#las citadas en la clusula from$ Si eAisten columnas con el mismo nom#re en am#as ta#las es con'eniente anteponer el nom#re de la ta#la& o un alias de ta#la temporal& al nom#re de la columna$ from 3a#las de las ue se eAtrae in*ormaci7n$ Es recomenda#le asignar un alias temporal a cada ta#la$ 12ere ,riterio de com#inaci7n de las ta#las$ 0gualo las columnas ue conceptualmente estn relacionadas en las dos ta#las$ Por ejemplo>
tabla4.columna @ tabla .columna

Lenguaje SQL

Pgina 23/43

Programador/a de Sistemas de Bases de Datos Relacionales

Se pueden seleccionar todas las columnas de am#as ta#las$ %o es necesario ue las columnas mencionadas en el criterio de com#inaci7n sean seleccionadas$ (uter 6oins El outer join o com#inaci7n eAterna ampli*ica el resultado de una com#inaci7n simple 4join normal6$ 5n outer join recupera 3<D=S las *ilas de la com#inaci7n eAterna ! tam#i(n a uellas ue no encuentren su correspondiente *ila pareja de una ta#la a otra$ La sintaAis es>
select col4) col ) ...) coln from tabla4) tabla ) ... 12ere tabla4.col4 @ tabla .col4 !8#

El sCm#olo 4R6 de#e situarse en el predicado de com#inaci7n al lado de la columna o columnas pertenecientes a la ta#la en la ue puede ue )a!a ausencia de 'alor$

La Sentencia SELECT( Su$consultas


5na su#consulta es una modalidad de select ue aparece dentro de otra sentencia SQL$ = las su#consultas a 'eces se las denomina consultas anidadas o su#selects$ La sentencia ue contiene una su#consulta es denominada consulta padre$ Las *ilas ue de'uel'e la su#consulta son utili"adas por la consulta padre$ La sintaAis es>
select col4) col ) ...) coln from tabla4) tabla 12ere valor operador !select ... from ... 12ere ...#

Las su#consultas pueden utili"arse para 'arios prop7sitos> Para de*inir el conjunto de *ilas ue se desea insertar en la ta#la destino en una sentencia insert o create table$ Para de*inir el conjunto de *ilas ue se desea seleccionar en una sentencia create vie1$ Para de*inir uno o mas 'alores a asignar en las *ilas eAistentes en una sentencia update ... set$ Proporcionar 'alores para condiciones en las clusulas 12ere ! 2aving de las sentencias select& update ! delete$ %o )a! limite en el ni'el de anidaciones de consultas$

Lenguaje SQL

Pgina 24/43

Programador/a de Sistemas de Bases de Datos Relacionales

La Sentencia &'SE)T
El prop7sito de la sentencia insert es a-adir *ilas a una ta#la o 'ista$ ,omo re uisitos para a-adir *ilas en una ta#la& la ta#la de#e ser propiedad del usuario ue intenta reali"ar la inserci7n o #ien tener pri'ilegio de insert so#re ella$ La sintaAis es>

esquema

tabla o vista columna

VA*%(F subconsulta

%om#re del propietario de la ta#la o 'ista donde se desea reali"ar la inserci7n$ Si se omite se presupone ue la ta#la es propiedad del usuario ue reali"a la inserci7n$ %om#re de ta#la o 'ista donde se reali"a la inserci7n$ ,olumna/s so#re la/s ue se desea reali"ar la inserci7n$ Si se omiten los nom#res ! el orden de las columnas& se espera ue se inserten 'alores para todas las columnas de la ta#la o 'ista ! el orden en ue *ue creada$ Especi*ica un 'alor para la *ila ue se desea insertar$ Especi*ica ue la inserci7n est #asada en una sentencia F(*(C.$ En la sentencia F(*(C. de#en recuperarse el mismo nJmero de columnas ! en el mismo orden ue se especi*ic7 en la sentencia 0$F(R.$

La Sentencia *+D,TE
El prop7sito de la sentencia update es cam#iar los 'alores eAistentes en una ta#la o 'ista$ ,omo re uisitos para actuali"ar *ilas de una ta#la& la ta#la de#e ser propiedad del usuario ue intenta reali"ar la actuali"aci7n& o #ien tener pri'ilegio de 5PD=3E so#re ella$

Lenguaje SQL

Pgina 2G/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sintaAis es>

esquema

tabla o vista columna

subconsulta /H(R(

%om#re del propietario de la ta#la o 'ista donde se desea reali"ar la inserci7n$ Si se omite se presupone ue la ta#la es propiedad del usuario ue reali"a la actuali"aci7n$ %om#re de ta#la o 'ista donde se reali"a la actuali"aci7n$ ,olumna/s so#re la/s ue se desea reali"ar la actuali"aci7n$ Si se omiten el nom#re ! el orden de alguna columna de la ta#la/'ista& esta permanecer inaltera#le$ Especi*ica ue la sentencia F(*(C. de'ol'er los 'alores nue'os ue se asignarn a la columna correspondiente$ Precede e indica la condici7n ue de#en cumplir las *ilas ue se desea actuali"ar$ Si se omite se actuali"an todas$

La Sentencia DELETE
El prop7sito de esta sentencia es #orrar *ilas de una ta#la o 'ista$ 1s adelante )a#laremos de las sentencias -R+O ! .R%$CA.($ ,omo re uisitos para #orrar *ilas de una ta#la& la ta#la de#e ser propiedad del usuario ue intenta reali"ar el #orrado o #ien tener pri'ilegio de DELE3E so#re ella$ La sintaAis es>

esquema

%om#re del propietario de la ta#la o 'ista donde se desea reali"ar la inserci7n$ Si se omite se presupone ue la ta#la es propiedad del usuario ue reali"a el #orrado de las *ilas$

Lenguaje SQL

Pgina 29/43

Programador/a de Sistemas de Bases de Datos Relacionales

tabla o vista /H(R(

%om#re de ta#la o 'ista donde se reali"a el #orrado de las *ilas$ Sir'e para indicar la condici7n ue de#en cumplir las *ilas ue se desean #orrar$ Si se omite se #orran todas$ Esta clusula admite su#consultas$

El Lenguaje de Definicin de Datos


El lenguaje DDL pertenece al lenguaje SQL ! nos permite crear& modi*icar& renom#rar ! #orrar o#jetos dentro de la Base de Datos$ Qasta a)ora s7lo )a#Camos manipulado o#jetos !a creados pre'iamente$ Para poder ejecutar los comandos ue 'eremos a continuaci7n es necesario tener una serie de pri'ilegios& ue el administrador de la Base de Datos )a de#ido concedernos pre'iamente$

Sentencias DDL
Las sentencias de lenguaje de de*inici7n de datos mas importantes son> CR(A.( La sentencia CR(A.( permite al usuario ue la ejecuta crear un o#jeto 4ta#la& 'ista& sin7nimo procedimiento& pa uete& disparador& usuario& rol& per*il& etc$6$ 4P6 A*.(R La sentencia A*.(R permite al usuario ue la ejecuta modi*icar la estructura de un o#jeto pre'iamente creado$ -R+O La sentencia -R+O permite al usuario ue la ejecuta eliminar un o#jeto 4no s7lo las *ilas6 de la #ase de datos$ R($A&( Permite al usuario ue la ejecuta modi*icar el nom#re de un o#jeto$ .R%$CA.( Permite al usuario ue la ejecuta #orrar todas las *ilas de una ta#la o Cndice$ 3iene ciertas di*erencias con -(*(.( o -R+O ue 'eremos pr7Aimamente$ Feamos a continuaci7n con mas detalle algunas de ellas aplicadas a los o#jetos #sicos$ 4P6 Nota Importante: Pre'iamente se )a indicado ue estos comandos pueden a*ectar a numerosos o#jetos$ En este manual nos centraremos en la de*inici7n de ta#las& Cndices& 'istas ! sin7nimos$

Lenguaje SQL

Pgina 2./43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia C)E,TE T,BLE


Permite crear una ta#la& ue es la estructura #sica de una #ase de datos$ En el momento de la creaci7n de la ta#la se puede especi*icar la siguiente in*ormaci7n> De*iniciones de columnas 4 nom#res& tipos de datos ! longitud6$ Restricciones de integridad$ ,aracterCsticas de almacenamiento de o#jeto$ Donde se almacena ! cuanto ocupa$ Si la ta#la se *orma partiendo de una sentencia select$ La sintaAis es>

Integridad de datos =ntes de de*inir una ta#la de#emos tener en cuenta ciertos aspectos acerca de la in*ormaci7n a almacenar& ue nos e'ita tener ue programar de *orma redundante ciertas compro#aciones$

Lenguaje SQL

Pgina 2I/43

Programador/a de Sistemas de Bases de Datos Relacionales

La declaraci7n de restricciones de integridad nos a!uda a de*inir ciertas caracterCsticas de la ta#la$ Por ejemplo& si una columna puede estar 'acCa o no& si puede contener 'alores duplicados& si esta relacionada con alguna columna de otra ta#la& etc$ La integridad de datos es& por lo tanto& asegurarse ue los datos en las ta#las se ajustan a una serie de regla prede*inidas$ Las condiciones se cumplen en todas las transacciones& ! desde todas las )erramientas ! programas$ Se de*inen una sola 'e" ! no necesitan mantenimiento especial$ ,onceptos de integridad ue se pueden de*inir> reglas negocio integridad de entidades integridad re*erencial ,eglas de negocio EspecC*icas de cada rea de negocio$ Por ejemplo& solo cuando se 'enden die" productos o mas )a! derec)o a descuentos$ Integridad de entidades Reglas a las ue de#en ajustarse las columnas de mis ta#las$ Pueden de*inirse las siguientes> Orimar3 Ge3. 0denti*icador Jnico de una *ila en una ta#la$ Solo puede )a#er una por ta#la& pero puede estar compuesto por mas de una columna$ Se utili"a de *orma )a#itual para ser re*erenciada desde otra ta#las$ =l de*inir una columna como cla'e primaria& de *orma implCcita se crea un Cndice asociado ! la columna uedar de*inida como Jnica ! o#ligatoria$ Por ejemplo el c7digo de un producto es su identi*icati'o en la ta#la de los productos& ! adems le a!uda a relacionarse con la ta#la ue contiene los precios de los productos& o con la de almac(n ue contiene la cantidad de un producto ue nos ueda en stocH$

Lenguaje SQL

Pgina 28/43

Programador/a de Sistemas de Bases de Datos Relacionales

$ot null.

%nique.

C2eck.

La columna a la ue se apli ue esta restricci7n de#e contener 'alores$ Por ejemplo la columna nJmero de identi*icaci7n *iscal de la ta#la *acturas$ %o puede )a#er mas de dos *ilas con el mismo 'alor en a uella/s columna/s ue tengan dic)a restricci7n$ Puede ser simple o estar compuesta por 'arias columnas$ = di*erencia de la cla'e primaria& no es o#ligatoria& ! adems puede )a#er mas de una por ta#la$ Si se uiere tra#ajar #ajo normati'a =%S0/0S< la columna ue lle'e esta restricci7n de#er tener adicionalmente la restricci7n not null$ Por ejemplo una restricci7n de unicidad so#re el c7digo de una pelCcula ! el nJmero de copia en la ta#la prestamos de 'ideos$ Restricci7n ue reali"a un *iltro so#re las *ilas ue no cumplan la condici7n impuesta$ Es similar a la clusula B)ere& pero se implementa en la de*inici7n del o#jeto$ %o puede incluir su#consultas ni 'aria#les o pseudocolumnas 4 user& s3sdate& etc$6$ Por ejemplo compro#ar ue el precio de un producto es ma!or ue cero$

Integridad referencial Es la ue determina las relaciones eAistentes entre los o#jetos$ Por ejemplo eAiste una relaci7n entre las ta#las ca#ecera de *acturas ! lCneas de *actura$ Orimar3 Ge3 0denti*icador Jnico de una *ila en una ta#la$ Qemos 'isto anteriormente ue este concepto pertenece a la integridad de entidades$ Roreign Ge3 ,olumna normalmente asociada a una cla'e primaria o Jnica de otra ta#la& o de la misma ta#la 4denominado autore*erencia6$ Puede )a#er tantas como se desee por ta#la$ Su 'alor puede ser nulo o el 'alor de la cla'e re*erenciada$ Daranti"a consistencia de relaciones entre los datos$ Por ejemplo toda lCnea de *actura de#e pertenecer a una ca#ecera de *actura$ Esta#leciendo estas relaciones entre cla'es ajenas 4*oreign He!6 ! primarias 4primar! He!6 logramos> E'itar #orrados& inserciones o actuali"aciones no deseados$ Por ejemplo no se puede #orrar una *actura 4ca#ecera de *actura6 ue tenga lCneas de *actura$ %o se puede dar de alta una lCnea de *actura sin su correspondiente ca#ecera$ %o se puede actuali"ar el identi*icati'o de una lCnea de *actura$ Propagar modi*icaciones$ Lo contrario a lo anterior$ Se pueden de*inir acciones de #orrado en cascada$ Por ejemplo si se #orra una ca#ecera de *actura ue se #orren las correspondientes lCneas$

Lenguaje SQL

Pgina 3//43

Programador/a de Sistemas de Bases de Datos Relacionales

EAiste una *acilidad adicional& la especi*icaci7n -(RA%*.& ue no es una restricci7n en si& pero ue proporciona la posi#ilidad de indicar un 'alor por de*ecto a columnas ue no se mencionan en un insert$ =dmite pseudocolumnas como user& uid o s3sdate$ Por ejemplo& la *ec)a de emisi7n de una *actura es una columna tipo date& ! si no se le indica un 'alor eAplCcitamente& tendr el de la *ec)a del sistema 4s3sdate6$ La sentencia create table se utili"a para esta#lecer todas las relaciones ! reglas anteriormente citadas$ Es la llamada sintaAis declarati'a$ -o&)res de las restricciones Es un nom#re Jnico& de*inido #ien por el propietario del o#jeto o por el sistema$ Si lo de*ine el propietario del o#jeto& en el momento de de*inir la restricci7n de#e ir precedido de la pala#ra constraint$ Si no se asigna en el momento de la creaci7n el sistema generar uno por de*ecto& Por ejemplo& en el caso de la restricci7n not null& es mu! comun& por )erencia de anteriores 'ersiones de <racle& reali"ar la declaraci7n de la restricci7n sin indicar la pala#ra constraint ni darle un nom#re& por lo en el diccionario de la #ase de datos se almacenara como& por poner un caso& s3s_cAA4E si es la decimo uinta declaraci7n ue reali"amos sin asignar ningJn nom#re de restricci7n$ Sera s3s_cAA4T para la siguiente& ! asi con todas$
FPF_CAAAn$

Es importante utili"ar una metodologCa adecuada en la asignaci7n de nom#res a las restricciones& puesto ue no admite duplicados& es decir& un nom#re de restricci7n no puede aparecer dos 'eces dentro del mismo usuario o es uema$ Por ejemplo una sintaAis adecuada para dic)os nom#res es>
CodigoRestriccion_$ombre.abla_$ombreColumna

Donde el c7digo de restricci7n es> OG Primar! [e! RG +oreign [e! $$ %ot %ull %G 5ni ue [e! CG ,)ecH El nom#re de la restricci7n aparecer en los mensajes de error& en la documentaci7n& al acti'arla ! desacti'arla temporalmente o para #orrarla$ La in*ormaci7n acerca de las restricciones de*inidas por el usuario& ! so#re ue columnas estn de*inidas& se encuentran en las siguientes ta#las del diccionario de datos>

user_constraints user_cons_columns

Lenguaje SQL

Pgina 31/43

Programador/a de Sistemas de Bases de Datos Relacionales

Co&o definir una restriccin Qa! dos *ormas de de*inir restricciones> =sociadas a columna o asociadas a ta#la$ La sintaAis para la de*inici7n de una restricci7n a ni'el de columna es>

De*inir una restricci7n asociada a columna signi*ica ue la restricci7n 'a a continuaci7n del nom#re de la columna& del tipo de dato ! la precisi7n$ En este caso& no es o#ligatorio darles un nom#re con la pala#ra cla'e constraint& pero se generar uno por de*ecto& como )emos indicado anteriormente$ La sintaAis para la de*inici7n de restricciones a ni'el de ta#la es>

Lenguaje SQL

Pgina 32/43

Programador/a de Sistemas de Bases de Datos Relacionales

De*inir una restricci7n asociada a ta#la signi*ica ue la restricci7n 'a antes o despu(s de empe"ar a de*inir las columnas$ En este caso es o#ligatorio preceder la restricci7n con la pala#ra cla'e constraint& para ue el gestor distinga entre lo ue es la de*inici7n de la columna o la declaraci7n de la restricci7n$ =l de*inir una restricci7n asociada a ta#la )a! ue indicar a ue columna de la ta#la se aplica la restricci7n& puesto ue no est a continuaci7n de la de*inici7n$ En ciertos casos& como cuando una cla'e primaria est compuesta de 'arias columnas& o cuando una restricci7n se a-ade a posteriori& es o#ligatorio de*inirlas asociadas a ta#la$ La clausula references nos permite especi*icar en una constraint de tipo foreign ke3 el nom#re de la ta#la a la ue ueremos re*erenciar& asi como la columna de la ue depende nuestra foreign ke3$ Dic)a columna de#e estar declarada como primar! He! en la ta#la a la ue re*erenciamos$ Para las clausulas primar3 ke3 ! unique es posi#le especi*icar las clausulas de almacenamiento del indice ue se crea asociado a la cla'e& indicar el ta#lespace donde se almacenara& ! otras clausulas adicionales de como distri#uir el espacio de almacenamiento$

La sentencia C)E,TE &'DELos Cndices se utili"an para acceder mas rpidamente en lectura a un dato$ Para ue una columna se indeAe de#e cumplir ciertos re uisitos> Ser consultada con *recuencia$ %o su*rir alteraciones de operadores o *unciones cuando se consulta$ ,ontener un 'olumen importante de in*ormaci7n$ 3ener muc)os 'alores di*erentes$ Los Cndices pueden ser simples o compuestos de 'arias columnas$ Los Cndices pueden ser Jnicos o no$ Si un Cndice se de*ine como Jnico& signi*ica ue no puede contener 'alores repetido$ Recordar ue las restricciones unique ! primar3 ke3 lle'an implCcita la creaci7n del Cndice& ! en am#os casos es Jnico$

Lenguaje SQL

Pgina 33/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sintaAis de la sentencia es>

La sentencia C)E,TE S.'O'.M


5n sin7nimo es un nom#re alternati'o a una ta#la& 'ista o procedimiento almacenado$ = di*erencia del alias& el sin7nimo no es temporal& ! permanece )asta ue es #orrado$ 0ndependientemente de la creaci7n del sin7nimo es necesario tener acceso al o#jeto so#re el ue se desea crear dic)o sin7nimo& o #ien ser su propietario$ EAisten dos tipos de sin7nimos> pJ#licos o pri'ados$ Los pJ#licos estn accesi#les por cual uier usuario de la #ase de datos& ! para crearlos se necesita el pri'ilegio ,RE=3E P5BL0, S2%<%21$ Los pri'ados son accesi#les solo para a uel usuario ue lo crea& ! se necesita el pri'ilegio ,RE=3E S2%<%21$ La sintaAis de la sentencia es>

Lenguaje SQL

Pgina 34/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia C)E,TE /&E0


5na 'ista es una ta#la l7gica #asada en una o 'arias ta#las$ La ta#la no se crea *Csicamente& sino ue lo ue se almacena es la sentencia select de creaci7n de la 'ista$ ,uando se recuperan *ilas de una 'ista& ocurre ue se accede a la sentencia select ue la compone& ! ue se encuentra almacenada ! se ejecuta dic)a sentencia$ La sintaAis es>

Recrea la 'ista si !a eAiste$ Esto permite cam#iar la de*inici7n de la 'ista sin tener ue #orrarla ! 'ol'er a crearla$ force ,rea la 'ista incluso si )a! pro#lemas de acceso por insu*icientes pri'ilegios a los o#jetos de la su#consulta en ue se #asa la creaci7n de la 'ista$ noforce Es la opci7n por de*ecto ! no crea la 'ista si se producen errores en la de*inici7n$ 1it2 c2eck option Si la 'ista permite inserciones& compro#ar la condici7n B)ere impuesta& no solo en el momento de componer la 'ista& sino tam#i(n a la )ora de reali"ar inserciones so#re ella$
or replace

So#re una 'ista no eAisten restricciones en consulta& pero si en actuali"aci7n inserci7n ! #orrado$ Si se cumplen las condiciones impuestas la actuali"aci7n& inserci7n o #orrado se lle'a a ca#o so#re la ta#la #ase so#re la ue se de*ini7 la 'ista$ Para ue una 'ista sea actuali"a#le 4permita update6 ninguna de las columnas ue *orman la 'ista puede estar modi*icada por una eApresi7n$ Por ejemplo substr!campo)4)n#$

Lenguaje SQL

Pgina 3G/43

Programador/a de Sistemas de Bases de Datos Relacionales

Para ue la 'ista permita inserciones 4permita insert into6 la 'ista en su de*inici7n de#e contener todas las columnas o#ligatorias de la ta#la ue la *orma$ Para ue la 'ista permita #orrado de *ilas 4permita delete6 la 'ista de#e estar creada so#re una sola ta#la 4no admite joins6$ %o puede incorporar clusulas distinct ni group b3$ %o puede ser de*inida con *unciones de grupo ni pseudocolumnas 4 user& s3sdate& ro1id& sum!campo#6$

La sentencia ,LTE) T,BLE


La sentencia alter table permite modi*icar la estructura de una ta#la para> =-adir columnas a una ta#la !a creada$ 1odi*icar el tipo de dato o la precisi7n de una columna$ =-adir& acti'ar o desacti'ar temporalmente ! #orrar restricciones de integridad re*erencial so#re la ta#la$ La sintaAis es>

Lenguaje SQL

Pgina 39/43

Programador/a de Sistemas de Bases de Datos Relacionales

0Fadir restricciones Se pueden a-adir restricciones de integridad re*erencial a posteriori$ En el momento ue se a-ade& se #lo uea toda la ta#la ! se produce la compro#aci7n de la restricci7n ue se desea incorporar$ Si alguna *ila no la cumple& la restricci7n no se a-ade$ La sintaAis para a-adir restricciones una 'e" creada la ta#la es similar a la de las restricciones asociada a ta#la$ Esto signi*ica ue se de#e indicar tras el comando alter table la pala#ra cla'e constraint& seguida del nom#re del constraint& ! luego el tipo de restricci7n a aplicar ! por Jltimo so#re ue columna de la ta#la se desea aplicar dic)a restricci7n$ Desacti>ar restricciones El desacti'ar una restricci7n permite ue dic)a restricci7n no se comprue#e temporalmente$ %o es igual ue #orrar la restricci7n$ Es la *orma de incrementar la 'elocidad en cargas de datos masi'as$ La )erramienta de carga masi'a de <racle 4loader6 des)a#ilita automticamente& con su m(todo directo D0RE,3 P=3Q& las restricciones$ ,uando se intenta desacti'ar una cla'e primaria 4primar3 ke36 o cla'e Jnica 4unique ke36& ue pueden ser re*erenciadas& )a! ue desacti'ar en primer lugar las cla'es ajenas 4foreign ke36 ue le re*erencian o utili"ar la clusula disable cascade$ =l desacti'ar una cla'e primaria o Jnica tam#i(n se destru!en los Cndices asociados$ 0cti>ar restricciones =cti'a la compro#aci7n de la restricci7n$ En el momento de la creaci7n de una restricci7n se acti'a& a no ser ue se indi ue la clusula disable$ ,uando se acti'a posteriormente> Blo uea la ta#la completa& )asta ue se termine la compro#aci7n$ ,omprue#a una a una las *ilas$ Si alguna de las *ilas no cumple la restricci7n& no podr llegar a acti'arse$ =l )a#ilitar una cla'e primaria o Jnica se 'uel'en a construir los Cndices asociados$

Lenguaje SQL

Pgina 3./43

Programador/a de Sistemas de Bases de Datos Relacionales

EGce"ciones a la acti>acin de restricciones ,uando se intenta acti'ar una restricci7n ! no se puede& por cada *ila ue no cumpla la restricci7n se puede guardar en una ta#la& creada pre'iamente& la siguiente in*ormaci7n> roBid nom#re de restricci7n ue no se cumple nom#re de la ta#la en la ue se encuentra la restricci7n usuario propietario de la ta#la La ta#la& denominada exceptions& se )a creado pre'iamente en s lplus utili"ando un *ic)ero ue se encuentra en la instalaci7n ! se denomina utleAcpt$s l& ! cu!o contenido es el siguiente& de *orma ue lo podemos crear nosotros mismos>
create table eKceptions ! ro1_id ro1id) constraints varc2ar !5A#) o1ner varc2ar !5A#) table_name varc2ar !5A## ;

La ta#la so#re la cual se )an de*inido las restricciones ! no pueden acti'arse& puede actuali"arse a partir de los resultados almacenados en la ta#la eAceptions$ Borrar restricciones =sC como podemos desacti'ar ! acti'ar las restricciones& podemos eliminarlas 4con la clausula drop6 de*initi'amente de la ta#la$

La sentencia D)O+ T,BLE


La sentencia drop table nos permite #orrar el contenido ! la de*inici7n de una ta#la$ Para poder eliminar una de*inici7n de ta#la es necesario ue las ta#las dependientes de la ta#la ue ueremos eliminar )a!an sido !a eliminadas pre'iamente$ La sintaAis es>

Lenguaje SQL

Pgina 3I/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia D)O+ &'DESe puede eliminar un Cndice de una ta#la utili"ando la sentencia drop indeK$ ,on ella eliminamos solo el Cndice& ! no los datos de la ta#la ue estn indeAados$ La sintaAis es>

= partir del momento de eliminaci7n del Cndice& las columnas a*ectadas !a no estn indeAadas$ ,on la sentencia drop indeK es indi*erente ue el Cndice sea Jnico o no$ La in*ormaci7n acerca de los Cndices esta almacenada en el diccionario de la #ase de datos$ Las ta#las ue contienen dic)a in*ormaci7n son>

user_indeKes user_ind_columns

Para #orrar un Cndice se de#e ser propietario de la ta#la en la ue estn asociados los Cndices& o tener el pri'ilegio DR<P =%2 0%DE\$

La sentencia D)O+ S.'O'.M


Se puede #orrar un sin7nimo so#re una ta#la& procedimiento& 'ista& data#aselinH& etc$& utili"ando en la sentencia drop s3non3m$ La sintaAis>

,on la utili"aci7n de esta sentencia no se #orra el o#jeto& sino solamente el alias permanente del o#jeto$ La in*ormaci7n re*erente a sin7nimos se encuentra en las siguientes ta#las>

user_s3non3ms all_s3non3ms

Para #orrar un sin7nimo #asta con ser el propietario& es decir& )a#er creado dic)o sin7nimo$ En el caso de ue el sin7nimo ue se desea #orrar sea pu#lico& es necesario tener el pri'ilegio DR<P P5BL0, S2%<%21$

Lenguaje SQL

Pgina 38/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia )E',ME
La sentencia rename cam#ia el nom#re de un o#jeto 4ta#la& procedimiento& 'ista& etc$6 por otro de *orma permanente$ La sintaAis es>

La in*ormaci7n so#re los o#jetos de un usuario se encuentra en el diccionario en la 'ista>

user_objects

Para renom#rar un o#jeto se de#e ser propietario del mismo$

La sentencia T)*'C,TE
La sentencia truncate #orra *ilas de una ta#la o Cndice& sin eliminar la estructura del o#jeto$ Es similar a delete& pero no )a! posi#ilidad de des)acer la transacci7n 4rollback6& ni de )acer un #orrado restricti'o 4clusula 12ere6$ La sintaAis es>

Para truncar un o#jeto se de#e ser propietario del mismo& o tener el pri'ilegio DELE3E =%2 3=BLE$ La opci7n drop storage li#era el espacio ue el o#jeto )a tomado a la #ase de datos$ La opci7n reuse storage mantiene reser'ado el espacio pre'iamente ad uirido para dic)o o#jeto$ =l truncar una ta#la se truncan de *orma implCcita los Cndices de dic)a ta#la$

Lenguaje SQL

Pgina 4//43

Programador/a de Sistemas de Bases de Datos Relacionales

El Lenguaje de Control de Datos


Este su#lenguaje permite controlar los permisos ! pri'ilegios ue tiene cada usuario ue accede a la #ase de datos$ ,ada usuario <racle tiene un nom#re ! una cla'e de acceso& ! posee sus propias ta#las& 'istas ! otros o#jetos o recursos ue cree$ 5n role <racle es un conjunto de pri'ilegios 4o tipo de acceso ue cada usuario re uiere segJn sus responsa#ilidades o estatus6$ Se pueden asignar pri'ilegios especC*icos a los roles& ! a continuaci7n asignar dic)os roles a los usuarios adecuados$ 5n usuario puede conceder pri'ilegios a otros usuarios$ Los pri'ilegios de sistema de #ase de datos permiten ejecutar un conjunto concreto de ordenes$ El pri'ilegio ,RE=3E 3=BLE permite crear ta#las& el pri'ilegio DR=%3 =%2 PR0F0LEDE permite conceder cual uier pri'ilegio de sistema$ Los pri'ilegios de o#jetos de la #ase de datos permiten reali"ar ciertas operaciones so#re 'arios o#jetos$ El pri'ilegio DELE3E permite #orrar *ilas de las ta#las ! 'istas$ El pri'ilegio SELE,3 permite consultar ta#las$ 5n usuario con permiso de sistema ,RE=3E R<LE puede conjuntar pri'ilegios en 'arios roles& para asC distri#uir mejor el acceso a los datos desde otros usuarios$

La sentencia C)E,TE )OLE


Esta sentencia nos permite crear un identi*icador de conjunto de pri'ilegios$ La sintaAis es>

role not identified identified

Es el nom#re ue le ueremos dar al conjunto de pri'ilegios$ ,uando un usuario acti'a la utili"aci7n de un role no es necesario 'alidar dic)a acti'aci7n$ indica ue se de#e 'alidar la acti'aci7n& #ien mediante una cla'e 4b3 password6& #ien por la cla'e de coneAi7n eAterna 4eKternall36$

Lenguaje SQL

Pgina 41/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia 1),'T
Esta sentencia nos permite asignar pri'ilegios a roles o a usuarios& ! tam#i(n roles a usuarios$ Feamos a continuaci7n la sintaAis para cada uno de estos dos casos$ =signaci7n de pri'ilegios a roles ! usuarios$ La sintaAis es>

donde>
s3stem_priv role 1it2 admin option

,ual uier pri'ilegio de sistema$ ,onjunto de pri'ilegios$ Permite ue el receptor de los pri'ilegios pueda asignarlos a otros usuarios$

Para asignar pri'ilegios so#re o#jetos a usuarios o roles utili"aremos la sintaAis>

donde>
object_priv column 1it2 grant option

0ndica cual uier pri'ilegio de o#jetos$ 0ndica las columnas so#re las ue ueremos dar pri'ilegios$ 0ndica ue el usuario ue reci#e el permiso puede darlo a otros usuarios$

Lenguaje SQL

Pgina 42/43

Programador/a de Sistemas de Bases de Datos Relacionales

La sentencia )E/O2E
Esta sentencia permite uitar pri'ilegios o roles a usuarios ! roles& de *orma ue !a no dispongan o puedan )acer uso de dic)os pri'ilegios$ La sintaAis para pri'ilegios de sistema ! roles es>

2 para pri'ilegios de o#jetos es>

donde> 0ndica el o#jeto so#re el ue ueremos uitar pri'ilegios$ from Es la clusula ue nos indica a uien ueremos uitar dic)os pri'ilegios$ cascade constraints Especi*ica ue los pri'ilegios ue )a!a utili"ado el usuario o role para re*erenciar nuestro o#jeto tam#i(n sean re'ocados 4por ejemplo cuando se acti'a una *oreign He! so#re una ta#la de otro usuario6$
object

Lenguaje SQL

Pgina 43/43

También podría gustarte