Sei sulla pagina 1di 239

SERVICIO NACIONAL DE ADIESTRAMIENTO EN TRABAJO INDUSTRIAL

COMPUTACIN E
INFORMTICA

MANUAL DE APRENDIZAJE

ADMINISTRACIN DE
BASE DE DATOS

CDIGO: 89001560

Profesional Tcnico
ADMINISTRACIN DE BASE DE DATOS

TABLA DE CONTENIDO:
Tarea 01: Aplicar los principios fundamentales de una auditora de base de
datos. ................................................................................................................................................ 7
OPERACIONES ........................................................................................................................ 8
IDENTIFICAR LOS OBJETIVOS DE LA AUDITORA DE BASE DE DATOS. .......................... 8
DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD ................................................... 10
ANALIZAR LA DOCUMENTACIN DE LA BD. ....................................................................... 12
DEFINIR LAS TCNICAS DE RECUPERACIN. ................................................................... 16
REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD. ..................................................... 20
FUNDAMENTO TERICO: ................................................................................................. 24
IDENTIFICAR LOS OBJETIVOS DE LA AUDITORIA DE BASE DE DATOS. ........................ 24
DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD ................................................... 27
ANALIZAR LA DOCUMENTACIN DE LA BD. ....................................................................... 38
DEFINIR LAS TCNICAS DE RECUPERACIN. ................................................................... 46
REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD. ..................................................... 56

Tarea 02: Utilizar clusulas avanzadas y optimizar las consultas a una base
de datos......................................................................................................................................... 64
OPERACIONES ...................................................................................................................... 65
INSERTAR EN MLTIPLES FILAS EN UNA TABLA. ............................................................. 65
UTILIZAR ALIAS EN UNA CONSULTA SQL. .......................................................................... 79
APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS. ............................................. 86
CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.............. 103
APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD. ...................... 111
CREAR FUNCIONES EN UNA BASE DE DATOS. ............................................................... 115
FUNDAMENTO TERICO: ............................................................................................... 120
INSERTAR EN MLTIPLES FILAS EN UNA TABLA. ........................................................... 120
UTILIZAR ALIAS EN UNA CONSULTA SQL. ........................................................................ 133
APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS ............................................ 135
CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.............. 136
APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD. ...................... 141
CREAR FUNCIONES EN UNA BASE DE DATOS. ............................................................... 145

Tarea 03: Elaborar Procedimientos almacenados. ................................................... 150


OPERACIONES .................................................................................................................... 151
DEFINIR LA UTILIDAD DE UN PROCEDIMIENTO ALMACENADO. ................................... 151

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 5


ADMINISTRACIN DE BASE DE DATOS

DISEAR PROCEDIMIENTOS ALMACENADOS SIMPLES Y COMPLEJOS...................... 153


ADMINISTRAR LOS PROCEDIMIENTOS ALMACENADOS EN UNA BD. .......................... 161
FUNDAMENTO TERICO: ............................................................................................... 162
DEFINIR LA UTILIDAD DE UN PROCEDIMIENTO ALMACENADO. ................................... 162
DISEAR PROCEDIMIENTOS ALMACENADOS SIMPLES Y COMPLEJOS...................... 178
ADMINISTRAR LOS PROCEDIMIENTOS ALMACENADOS EN UNA BD. .......................... 189

Tarea 04: Crear disparadores en una base de datos. .............................................. 195


OPERACIONES .................................................................................................................... 196
DEFINIR LA UTILIDAD DE UN DISPARADOR. .................................................................... 196
IMPLEMENTAR DISPARADORES EN UNA BASE DE DATOS. .......................................... 200
FUNDAMENTO TERICO: ............................................................................................... 203
DEFINIR LA UTILIDAD DE UN DISPARADOR. .................................................................... 203
IMPLEMENTAR DISPARADORES EN UNA BASE DE DATOS. .......................................... 203

Tarea 04.1: Importar y exportar datos. ........................................................................... 207


OPERACIONES .................................................................................................................... 207
DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS. ................................. 208
IDENTIFICAR LOS TIPOS DE FORMATOS QUE SOPORTA UNA BD. .............................. 217
EXPORTAR LA INFORMACIN DE UNA O MS TABLAS DE UNA BD. ............................ 220
IMPORTAR INFORMACIN DE UN FICHERO A LA BASE DE DATOS. ............................ 223
FUNDAMENTO TERICO: .............................................................................. 228
DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS. ................................. 228
IDENTIFICAR LOS TIPOS DE FORMATOS QUE SOPORTA UNA BD. .............................. 233
EXPORTAR LA INFORMACIN DE UNA O MS TABLAS DE UNA BD. ............................ 235
IMPORTAR INFORMACIN DE UN FICHERO A LA BASE DE DATOS. ............................ 237

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 6


ADMINISTRACIN DE BASE DE DATOS

01
TAREA 01: APLICAR LOS PRINCIPIOS FUNDAMENTALES DE
UNA AUDITORA DE BASE DE DATOS.
En esta tarea trataremos las siguientes operaciones:
Identificar los objetivos de la auditoria de base de datos.
Definir las tareas del administrador de la bd.
Analizar la documentacin de la bd.
Definir las tcnicas de recuperacin.
Realizar una evaluacin de riesgos de la bd.

Equipos y Materiales:

Computadora con microprocesadores core 2 Duo o de mayor capacidad.


Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.

Orden de Ejecucin:

Identificar los objetivos de la auditoria de base de datos.


Definir las tareas del administrador de la bd.
Analizar la documentacin de la bd.
Definir las tcnicas de recuperacin.
Realizar una evaluacin de riesgos de la bd.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 7


ADMINISTRACIN DE BASE DE DATOS

OPERACIONES.
Operacin:

1.1. IDENTIFICAR LOS OBJETIVOS DE LA AUDITORA DE BASE DE DATOS.

Qu es la Auditora de BD?

Es el proceso que permite medir, asegurar, demostrar, monitorear y registrar los


accesos a la informacin almacenada en las bases de datos incluyendo la
capacidad de determinar:

Quin accede a los datos.


Cundo se accedi a los datos.
Desde qu tipo de dispositivo/aplicacin.
Desde que ubicacin en la Red.
Cul fue la sentencia SQL ejecutada.
Cul fue el efecto del acceso a la base de datos.

Es uno de los procesos fundamentales para apoyar la responsabilidad delegada a


IT por la organizacin frente a las regulaciones y su entorno de negocios o
actividad.

Objetivos Generales de la Auditora de BD.

Disponer de mecanismos que permitan tener trazas de auditora completas y


automticas relacionadas con el acceso a las bases de datos incluyendo la
capacidad de generar alertas con el objetivo de:

Mitigar los riesgos asociados con el manejo inadecuado de los datos.


Apoyar el cumplimiento regulatorio.
Satisfacer los requerimientos de los auditores.
Evitar acciones criminales.
Evitar multas por incumplimiento.

La importancia de la auditora del entorno de bases de datos radica en que es el


punto de partida para poder realizar la auditora de las aplicaciones que utiliza esta
tecnologa.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 8


ADMINISTRACIN DE BASE DE DATOS

La Auditora de BD es importante porque:

Toda la informacin financiera de la organizacin reside en bases de datos y


deben existir controles relacionados con el acceso a las mismas.
Se debe poder demostrar la integridad de la informacin almacenada en las
bases de datos.
Las organizaciones deben mitigar los riesgos asociados a la prdida de datos y
a la fuga de informacin.
La informacin confidencial de los clientes, son responsabilidad de las
organizaciones.
Los datos convertidos en informacin a travs de bases de datos y procesos de
negocios representan el negocio.
Las organizaciones deben tomar medidas mucho ms all de asegurar sus
datos.

Deben monitorearse perfectamente a fin de conocer quin o qu les hizo


exactamente qu, cundo y cmo.

Mediante la auditora de bases de datos se evaluar:

Definicin de estructuras fsicas y lgicas de las bases de datos.


Control de carga y mantenimiento de las bases de datos.
Integridad de los datos y proteccin de accesos.
Estndares para anlisis y programacin en el uso de bases de datos.
Procedimientos de respaldo y de recuperacin de datos.

Aspectos Claves.

No se debe comprometer el desempeo de las bases de datos.


Soportar diferentes esquemas de auditora.
Se debe tomar en cuenta el tamao de las bases de datos a auditar y los
posibles SLA establecidos.

Segregacin de funciones.
El sistema de auditora de base de datos no puede ser administrado por los
DBA del rea de IT.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 9


ADMINISTRACIN DE BASE DE DATOS

Proveer valor a la operacin del negocio.


Informacin para auditora y seguridad.
Informacin para apoyar la toma de decisiones de la organizacin.
Informacin para mejorar el desempeo de la organizacin.

Auditora completa y extensiva.


Cubrir gran cantidad de manejadores de bases de datos.
Estandarizar los reportes y reglas de auditora.

1.2. DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD.

Cules son las funciones que realiza un DBA?

Gestin General de Base de Datos.

El DBA es la persona con ms conocimientos sobre base de datos en una


organizacin. Como tal, debe entender las reglas bsicas de la tecnologa de base
de datos relacional y ser capaz de comunicarlos con precisin a los dems.

Modelado de Datos y Diseo de Base de Datos.

Un DBA debe ser un profesional experto en la recopilacin y anlisis de las


necesidades del usuario para obtener modelos de datos conceptuales y lgicos.
Esta tarea es ms difcil de lo que parece. Un modelo conceptual de datos
describe los requisitos de datos a un nivel muy alto, un modelo de datos lgico
proporciona en profundidad los detalles de los tipos de datos, longitudes,
relaciones y cardinalidad. El DBA utiliza tcnicas de normalizacin para ofrecer
modelos de datos que reflejen las necesidades de los datos de la empresa.

Auditoria.

Una de las tareas de un DBA es identificar qu usuarios tienen acceso a insertar,


actualizar o eliminar datos, y cundo. Una auditora NO slo podra ser necesaria
por un tiempo limitado, para usuarios especficos o datos especficos. Tambin
puede ser requerida 24/7 para todos los datos que se introduzcan en el DBMS.
Regularmente, para realizar las funciones de autoras los DBAs tienen que trabajar
en combinacin con los auditores internos y externos de la empresa.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 10


ADMINISTRACIN DE BASE DE DATOS

Integracin con aplicaciones.

La mayora de las empresas hoy en da utilizan aplicaciones de terceros (casi


nadie ya desarrolla sus propias aplicaciones in-house), muy pocas de estas
aplicaciones funcionan de manera aislada. En otras palabras, las aplicaciones
tienen que interconectarse unas con otras, generalmente utilizando base de datos
como el medio para compartir los datos. Los DBAs a menudo se involucran en los
procesos de integrar las aplicaciones existentes con las bases datos que
administran. Esto puede incluir la creacin de aplicaciones a medida, scripts, etc.

Resguardo y recuperacin de datos.

Uno de los aspectos ms fundamentales del trabajo del DBA es proteger los datos
de la organizacin. Esto incluye hacer copias de seguridad peridicas de los datos
y mantenerlos a salvo de la destruccin accidental o intencional. Adems, disear,
implementar y probar un plan de recuperacin para que cuando se presenten los
problemas, los datos se pueden restaurar rpidamente.

Inteligencia de negocios y almacenamiento de datos.

Una de las reas de mayor crecimiento para el DBA es la Inteligencia de Negocios


(BI) y almacenamiento de datos. Esto se debe a que cada vez ms organizaciones
estn tratando de extraer toda la informacin que pueda con el fin de tomar
mejores decisiones de negocios.

Planificacin de capacidad.

En la mayora de las organizaciones, el nmero y tamao de las bases de datos


crece rpidamente. Es la responsabilidad del DBA gestionar el creciente volumen
de datos y disear los planes apropiados para administrarlos. Esto incluye tambin
la gestin del hardware donde se almacenan los datos.

Administracin de cambios.

La configuracin del servidor SQL Server o MySQL, el esquema de base de datos,


el cdigo de Transact-SQL, y muchas otras facetas del ecosistema de
aplicaciones cambian con el tiempo. A menudo es la responsabilidad del DBA
realizar el anlisis de impacto antes de realizar los cambios dentro de una DBMS.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 11


ADMINISTRACIN DE BASE DE DATOS

Implementar cambios, hacer pruebas piloto y documentar todos los cambios y


procedimientos es parte del trabajo de un DBA.

Desarrollo de aplicaciones.

Muchos administradores de base datos deben de desarrollar aplicaciones y scripts


con el objetivo de automatizar tareas relacionadas con la insercin, sustraccin o
borrado de informacin dentro del manejador de base de datos. En general, ste
debe de colaborar a nivel de integracin de sistema con los desarrolladores de
aplicaciones, por lo que a veces se ve en la obligacin de desarrollar cdigo para
casos especficos.

1.3. ANALIZAR LA DOCUMENTACIN DE LA BD.

Anlisis de Datos

Por qu realizar un anlisis de datos?

Siempre es bueno hacer una evaluacin de lo que se quiere realizar para


alcanzar un objetivo, para ello es necesario hacer un estudio cuidadoso de cada
una de sus partes para poder tener una estructura robusta para hacer posible
que los objetivos se cumplan.

As pues para tener una buena base de datos es necesario eso, hacer un
estudio minucioso de cada datos de cada parte de la informacin que se
requiere manipular, que relacin tendrn los datos entre s, quienes van a
manejar la informacin, hasta que niveles se requiere que la informacin se
muestre completamente, el flujo que debe seguir hasta el cliente final, interfaces
de entrada y salida, la conformacin para los reportes, todo ello forma parte del
anlisis de datos para tener archivos robustos, estructurados, consistentes,
adems todo ello debe quedar en documentos para cuando surjan
incontinencias o bien se requiera una reingeniera de los archivos.

Cmo realizar el anlisis de datos.

Realizar un anlisis de datos es una actividad importante para que


posteriormente un sistema de informacin funcione correctamente, para ello
debemos realizar ciertas actividades:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 12


ADMINISTRACIN DE BASE DE DATOS

En primer lugar debemos hacer entrevistas para conocer primero los


requerimientos y necesidades de quienes van a utilizar la informacin, as para
cada uno de los procesos en los que se desee implementar una base de datos.
Despus al documentar las necesidades y requerimientos, se deben realizar
entrevistas con cada instancia que se relacionar con la base datos con
preguntas estructuradas de manera que puedan darnos ms informacin para
el anlisis y posteriormente realizar el diseo de esta. Preguntas como Qu
datos maneja en su rea?, Qu relacin tiene su informacin con otras reas?,
su informacin depende de alguna otra rea para poder ser consistente?,
Qu datos son los que maneja?- (pedir que los describa uno a uno)-, Cules
son sus datos clave?, entre muchas otras que nos puedan ayudar a realizar a
detalle esta actividad. Despus concentrar la informacin para establecer como
se iniciarn los trabajos de diseo de los archivos, los tipos de datos que se
manejarn y relaciones entre datos.

Tipos de datos.

Una base de datos est compuesta por campos cada uno de ellos con una
caracterstica que le llamaremos tipo de dato, estos varan segn como los
necesitemos los tipos de datos conocidos y ms usados son:

Carcter: estos estn conformados por una cadena de caracteres.

Numrico: se utiliza para expresar cantidades numricas y pueden ir


acompaadas de decimales.

Fecha: Utilizados para expresar fechas expresadas en da, mes ao.

Moneda: para expresar cantidades monetarias.

Fecha-hora: para expresar datos de da, mes, ao, y hora.

Lgicos: Expresan solo el valor verdadero o falso.

Memo: es un tipo de campo en el cual utiliza espacio en el disco para expresar


un texto sin formato

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 13


ADMINISTRACIN DE BASE DE DATOS

Estos tipos de datos son los ms utilizados dentro del diseo de una base de
datos, con los cuales podemos realizar el diseo de la base de datos, son una
parte importante para darle sentido a los datos que se utilizarn en sta.

Como nombrar campos y archivos.

Tambin debemos nombrar los campos y los archivos de manera que sea
descriptiva y con solo leerlos nos demos cuenta que es lo que significan,
aunque para ellos tambin se debe de elaborar un diccionario de datos en el
cual se describe cada archivo, campo y relacin entra ellas.

Nota: se ejemplificar con bases de datos relacionales ya que son las que se
utilizan en la actualidad.

Para hacerlo debemos hacerlo con abreviaciones o palabras clave para su fcil
manejo por ejemplo:

Los datos a manejar en un archivo sern: Clave de empleado, nombre, sueldo


neto, clave de departamento; tambin se manejar un catlogo de
departamentos el cual se compone de los siguientes datos: clave de
departamento y descripcin del departamento.

Cada quien puede asignar los nombres de campo a conveniencia, pero a veces
no tomamos una secuencia al hacerlo y la mayor parte de las veces
nombramos de manera desordenada o solo poniendo el nombre que queremos
que lleve, por lo que aqu con este ejemplo veremos una manera de nombrarlos
y que con ello se pueda identificar fcilmente e inclusive para realizar relaciones
entre ellos. Como mencionamos en el ejemplo de los datos:

Para el archivo de empleados

Clave de Empleado-> podemos nombrarlo CveEmpleado, donde Cve(es la


abreviacin de Clave) y Empleado es lo que identifica de que va a ser esa
clave.

Nombre de Empleado-> podemos nombrarlo cNombre, donde c (es la


abreviacin de cadena) y Nombre que identifica el campo.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 14


ADMINISTRACIN DE BASE DE DATOS

Sueldo neto-> podemos nombrarlo SNeto, SldoNeto, Sueldo_neto, si nos


fijamos podemos utilizar esas abreviaturas para poder identificarlos fcilmente y
no se necesita gran conocimiento para saber lo que nos quiere dar a entender
ese nombre de dato.

Clave de Departamento-> sera CveDpto, CvDepart, CveDepart, como vemos


cualquiera de las tres opciones nos da a entender el dato que llevar;
optaremos por CveDpto.

Por otro lado el catlogo de empleados ser:

Clave de Departamento -> como vamos a relacionar nuestra base de datos de


empleados con la de departamentos lo mejor y recomendable es que se
nombre la clave como en la primera tabla CveDpto.

Descripcin de Departamento-> lo pondremos como cDescripcin. Se llamar


as para no redundar con los nombres de los campos as que la base se
compondr por CveDpto, cDescripcion.

Por otro lado tambin es necesario nombrar los archivos que componen las
bases de datos, lo recomendable es usar abreviaturas clave que puedan ayudar
a su fcil identificacin, como hemos estado viendo en los campos usamos la
abreviatura "cve" para dar a entender que es una clave, o la letra "c" para
identificar que es la cadena descripcin "cDescripcion" . As tambin los
archivos deben de ser nombrados, con abreviaturas as que por ejemplo para la
tabla de empelados podemos llamarla de la siguiente manera APEmpleado,
donde "A" y "P" significarn lo siguiente: "A=Archivo" y "P=Principal" o bien
Empleado

Donde "BD" significa base de datos. Cada analista puede usar la nomenclatura
como convenga para la identificacin de sus archivos.

Definicin de campos relacionales.

Primero explicaremos que una relacin en un vnculo o asociacin entre dos o


ms bases de datos de manera eficiente sin redundancia de datos, sin tener
informacin innecesaria dentro de la base de datos. La relacin debe
establecerse de acuerdo a la cantidad de campos clave que estemos utilizando
y que deseemos asociar. O bien de acuerdo al flujo de datos que se establezca

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 15


ADMINISTRACIN DE BASE DE DATOS

en el anlisis, en donde se define qu informacin se requiere de cada base de


datos o tabla para realizar dicho enlace con cada base de datos que va a formar
parte de un sistema de informacin; por ejemplo si requerimos las claves de
empleado, claves de departamento, claves de artculos, nmeros de factura,
entre otros. Todo depende de la situacin que se analice. Esto es de gran
ayuda para tener bases de datos organizadas, limpias, eficientes y fciles de
interpretar.

Por lo tanto un campo relacional es aquel que establecer una asociacin con
una o ms bases de datos que lo utilice para darle sentido a la informacin que
representa.

Establecer relaciones entre bases de datos.


Para efectos de ejemplificacin para establecer relacin entre las tablas o bases
de datos tomando en cuenta la definicin de campos en el punto 2.4; el campo
que las relacionar ser cveDpto, pues si nos fijamos dentro del archivo de
empleados se encuentra la clave del departamento (cveDpto) y la clave por si
sola carece de sentido, pero relacionada o asociada con el catlogo de
departamentos que contiene el significado de la clave de departamento
(cDescripcion).

1.4. DEFINIR LAS TCNICAS DE RECUPERACIN.

Una computadora, al igual que cualquier otro dispositivo elctrico o mecnico, est
sujeta a fallos. stos se producen por diferentes motivos como: fallos de disco,
cortes de corriente, errores en el software, un incendio en la habitacin de la
computadora o incluso sabotaje. En cada uno de estos casos puede perderse
informacin. Por tanto, el sistema de bases de datos debe realizar con anticipacin
acciones que garanticen que las propiedades de atomicidad y durabilidad de las
transacciones, se preservan a pesar de tales fallos. Una parte integral de un
sistema de bases de datos es un esquema de recuperacin, el cual es
responsable de la restauracin de la base de datos al estado consistente previo al
fallo. El esquema de recuperacin tambin debe proporcionar alta disponibilidad;
esto es, debe minimizar el tiempo durante el que la base de datos no se puede
usar despus de un fallo.

Causas de la prdida de datos:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 16


ADMINISTRACIN DE BASE DE DATOS

Daos en el software del dispositivo de almacenamiento (disco duro, SAN o RAID)


Daos en el sistema de archivos: controlado por el sistema operativo, el sistema
de archivos almacena y organiza los archivos de los usuarios y el sistema
Daos en los archivos: la prdida de datos se puede producir en el propio archivo.

ESTRUCTURA DEL ALMACENAMIENTO.

Los diferentes elementos que componen una base de datos pueden ser
almacenados y accedidos con diferentes medios de almacenamiento.

Para entender cmo se pueden garantizar las propiedades de atomicidad y


durabilidad de una transaccin, se deben comprender mejor estos medios
de almacenamiento y sus mtodos de acceso.

Los medios de almacenamiento se pueden distinguir segn su velocidad


relativa, capacidad, y resistencia a fallos, y se pueden clasificar como
almacenamiento voltil o no voltil y estable.

Almacenamiento voltil. La informacin que reside en almacenamiento voltil no


suele sobrevivir a las cadas del sistema. La memoria principal y la memoria cach
son ejemplos de este almacenamiento. El acceso al almacenamiento voltil
es muy rpido, tanto por la propia velocidad de acceso a la memoria, como porque
es posible acceder directamente a cualquier elemento de datos.

Almacenamiento no voltil. La informacin que reside en almacenamiento no


voltil sobrevive a las cadas del sistema. Los discos y las cintas magnticas son
ejemplos de este almacenamiento. Los discos se utilizan para almacenamiento en
conexin, mientras que las cintas se usan para almacenamiento permanente.
Ambos, sin embargo, pueden fallar (por ejemplo, colisin de la cabeza lectora), lo
que puede conducir a una prdida de informacin.

Almacenamiento estable. La informacin que reside en almacenamiento estable


nunca se pierde (bueno, nunca diga nunca jams, porque tericamente el nunca
no puede garantizarse; por ejemplo, es posible, aunque extremadamente
improbable, que un agujero negro se trague a la Tierra y destruya para siempre

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 17


ADMINISTRACIN DE BASE DE DATOS

todos los datos!). A pesar de que el almacenamiento estable es


tericamente imposible de conseguir, puede obtenerse una buena aproximacin
usando tcnicas que hagan que la prdida de informacin sea una posibilidad
muy remota.

RECUPERACIN BASADA EN EL REGISTRO HISTRICO.

La estructura ms ampliamente utilizada para guardar las modificaciones de una


base de datos es el registro histrico. El registro histrico es una secuencia de
registros que mantiene un registro de todas las actividades de actualizacin de la
base de datos. Existen varios tipos de registros del registro histrico. Un registro
de actualizacin del registro histrico describe una nica escritura en la base de
datos y tiene los siguientes campos:

El identificador de la transaccin es un identificador nico de la transaccin que


realiza la operacin escribir.
El identificador del elemento de datos es un identificador nico del elemento de
datos que se escribe. Normalmente suele coincidir con la ubicacin del
elemento de datos en el disco.
El valor anterior es el valor que tena el elemento de datos antes de la escritura.
El valor nuevo es el valor que tendr el elemento de datos despus de la
escritura.

PAGINACIN EN LA SOMBRA.

La paginacin en la sombra es una tcnica de recuperacin alternativa a las


basadas en registro histrico. Bajo ciertas circunstancias la paginacin en la
sombra puede requerir menos accesos al disco que los mtodos basados en
registro histrico que se presentaron anteriormente. No obstante, como se ver,
existen algunos inconvenientes en el enfoque de la paginacin en la sombra. Por
ejemplo, es difcil extender la paginacin en la sombra para permitir que varias
transacciones puedan ejecutarse concurrentemente.
Igual que antes, la base de datos se divide en un nmero determinado de bloques
de longitud fija a los que se denominar pginas. Debido a que se va a utilizar un
esquema de paginacin para la gestin de la memoria, se ha tomado prestado de
los sistemas operativos el trmino pgina. Supngase que hay n
pginas numeradas desde 1 hasta n (en la prctica, n puede ser del orden de

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 18


ADMINISTRACIN DE BASE DE DATOS

cientos de miles). No es necesario almacenar en disco estas pginas en un orden


determinado (como se vio en el Captulo 11 hay muchas razones por las que esto
es as). Sin embargo, dado una cierta i, debe existir una manera de localizar la
pgina i-sima de la base de datos.

TRANSACCIONES CONCURRENTES Y RECUPERACIN.

Hasta ahora se ha tratado la recuperacin en un entorno en el que se ejecutaba


una sola transaccin en cada instante. Ahora se ver cmo modificar y extender
el esquema de recuperacin basado en registro histrico para permitir la ejecucin
concurrente de varias transacciones.

El sistema sigue teniendo una nica memoria intermedia de disco y un nico


registro histrico independientemente del nmero de transacciones
concurrentes. Todas las transacciones comparten los bloques de la memoria
intermedia. Se permiten actualizaciones inmediatas y que un bloque de la
memoria intermedia tenga elementos de datos que hayan sido modificados por
una o ms transacciones.

TCNICAS AVANZADAS DE RECUPERACIN.

Se han desarrollado tcnicas avanzadas de recuperacin para soportar tcnicas


de bloqueo de alta concurrencia, como las utilizadas para el control de
concurrencia con rboles B+. Estas tcnicas se basan en el registro deshacer
lgico y siguen el principio de repetir la historia. En la recuperacin de un fallo
del sistema se realiza una fase rehacer utilizando el registro histrico seguida de
una fase deshacer sobre el registro histrico para retroceder las
transacciones incompletas.

SISTEMAS REMOTOS DE COPIAS DE SEGURIDAD.


Los sistemas remotos de copia de seguridad proporcionan un alto nivel de
disponibilidad, permitiendo que contine el procesamiento de transacciones
incluso si se destruye el sitio primario por fuego, inundacin o terremoto.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 19


ADMINISTRACIN DE BASE DE DATOS

1.5. REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD.

Variables:
Im: Impacto del riesgo sobre el objetivo del rea de TI.
Pr: Probabilidad de materializacin del riesgo.
Re: Riesgo estimado.
Ra: Riesgo aceptado.
Rr: Riesgo residual.
Rg: Riesgo gestionable o por administrar.
Cc: Cobertura de Control.
Ca: Calificacin del control en la revisin.
Ir: Relacin de impacto del riesgo en el objetivo.
Ip: Relacin de impacto del proceso en el riesgo.
If: Relacin de impacto del factor en el proceso.
Ic: Relacin de impacto del control sobre el factor o proceso.
Ec: Efectividad de la cobertura del control.
Ca: Calificacin del control

Frmulas metodolgicas.

1. Re = (Ir * Pr) Riesgo estimado


2. Cc = Re * Ip * If * Ic Cobertura del control
3. Rr = Re Cc Riesgo residual
4. Rg = Rr - Ra Riesgo gestin

En general:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 20


ADMINISTRACIN DE BASE DE DATOS

FUNCIONES DE UN DBA (data base administrator) SEGN ORACLE.

PRC-VUL01
Pag. 1/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
1. Determinacin de los ambientes de base de datos a monitorear.
Seleccin de servidores
Criterios:
Importancia para las operaciones de la organizacin.
Mantenimiento histrico del equipo.
Estado de actualizacin.
Grado de exposicin al ambiente externo.
2. Obtener la versin de software de cada ambiente.
Debe identificarse la versin actual del software BD, e identificar las vulnerabilidades activas y
posible materializacin.
Obtener, a partir de fuentes certificadas, la especificacin de vulnerabilidades activas para
cada ambiente de acuerdo a su versin de software.
Acceder a documentacin proporcionada por empresas internacionales encargadas de la
recoleccin y estudio de incidencias presentadas en sistemas de informacin comerciales, que
atentan contrta la seguridad de los mismos, y por ende, la seguridad de la informacin
organizacional.
3. Sitio de soporte en lnea del proveedor METALINK.
Sitios de empresas reconocidas por su labro en la identificaci de vulnerabilidades de software.

PRC-VUL01
Pag. 2/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
4. Identificar, de las vulnerabilidades detectadas, aquellas que no han sido corregidas en cada
uno de los ambientes. Determinar cuales de ellas no han sido corregidas. Con este fin ser{a
necesario consultar la bitcora de correccin de vulnerabilidades.
En caso de no contar con registro previo de vulnerabilidades tratadas, se deber llevar a cabo
un anlisis sobre cada vulnerabilidad para determinar si esta se encuentra o no corregida. Para
ello ser necesario efectuar laboratorios de prueba y revisiones de la configuracin.

5. Identificar las coluciones correspondientes de cada vulnerabilidad detectada y no corregida.


Idealmente, los procesos de correccin debern ser obtenidos de la documentacin oficial
provista por el proveedor del software en su sitio en lnea.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 21


ADMINISTRACIN DE BASE DE DATOS

PRC-VUL01
Pag. 3/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
6. Gestionar la metodologa de aplicacin de las correcciones.
Previo a la aplicacin de cualquier procedimiento, se deber llevar a cabo una planificacin
cuidados de la estrategia de ejecucin. Para ello, se debern tomar en cuenta los siguientes
aspectos.
Necesidad de sacar de lnea el sistema.
Usuarios y sistemas afectados: determinar cantidad y tipo de usuarios y sistemas que se
veran afectados. Esto permitir definir la flexibilidad existente para la interrupcin del
servicio, as como planes para la coordinacin de interrupcin de operaciones.
Riesgo involucrado: Conociendo el riesgo existente se debern tomar medidas preventivas,
como lo son la cracin de respaldos, planes de contingencia, etc.
Tiempo mximo de inaccesibilidad de la informacin: Permite definir ventanas de operacin.

PRC-VUL01
Pag. 4/4
INS-01 Gestin de Riesgos
Versin 1.0
Fecha Monitoreo de vulnerabilidades de P15-C15
01/09/2008 bases de datos Oracle
Nota: La versin final del plan deber quedar documentada, asignndole un cdigo nico que
permita refereneciale a futuro para efectos de control y auditora. Dicho cdigo de identificacin
ser requerido dentro de la bitcora de ejecucin del procedimiento de monitoreo.

7. Aplicar el plan de correccin de vulnerabilidades elaborado.


Se debern aplicar las correciones a cada vulnerabilidad de acuerdo al plan de ejecucin
elaborado en el punto anterior.

8. Certificar que las correciones aplicadas dehan sido efectivas.

9. Para cada vulnerabilidad detectada, y sobre la que se aplic el presente instructivo, generar
una entrada en el registro PRC-VUL01 INS-01 REG-01.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 22


ADMINISTRACIN DE BASE DE DATOS

Monitoreo de vulnerabilidades de
Pag. _/_
PRC-VUL01 INS-01 REG-01 bases de datos Oracle
Versin 1.0
Consecutivo
asdP15-C15asd (Ic INFORMACIN
Gestin de Riesgos
75%) CONFIDENCIA
L

Ambiente Vulnerabilidad Posibles Fuente Cdigo plan Efectivo


N Fecha Responsable Resumen
Monitoreado detectada Consecuencias Documental de ejecucin (S/N)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 23


ADMINISTRACIN DE BASE DE DATOS

FUNDAMENTO TERICO:

IDENTIFICAR LOS OBJETIVOS DE LA AUDITORIA DE BASE DE DATOS.

Tipos de Auditora de Sistemas.

Dentro de la auditora informtica destacan los siguientes tipos (entre otros):

o Auditora de la gestin: la contratacin de bienes y servicios, documentacin


de los programas, etc.
o Auditora legal del Reglamento de Proteccin de Datos: Cumplimiento legal
de las medidas de seguridad exigidas por el Reglamento de desarrollo de la Ley
Orgnica de Proteccin de Datos.
o Auditora de los datos: Clasificacin de los datos, estudio de las aplicaciones y
anlisis de los flujogramas.
o Auditora de las bases de datos: Controles de acceso, de actualizacin, de
integridad y calidad de los datos.
o Auditora de la seguridad: Referidos a datos e informacin verificando
disponibilidad, integridad, confidencialidad, autenticacin y no repudio.
o Auditora de la seguridad fsica: Referido a la ubicacin de la organizacin,
evitando ubicaciones de riesgo, y en algunos casos no revelando la situacin
fsica de esta. Tambin est referida a las protecciones externas (arcos de
seguridad, CCTV, vigilantes, etc.) y protecciones del entorno.
o Auditora de la seguridad lgica: Comprende los mtodos de autenticacin de
los sistemas de informacin.
o Auditora de las comunicaciones. Se refiere a la auditoria de los procesos de
autenticacin en los sistemas de comunicacin.
o Auditora de la seguridad en produccin: Frente a errores, accidentes y
fraudes.

Importancia de la Auditoria Informtica.

La auditora permite a travs de una revisin independiente, la evaluacin de


actividades, funciones especficas, resultados u operaciones de una organizacin,
con el fin de evaluar su correcta realizacin. Este autor hace nfasis en la revisin
independiente, debido a que el auditor debe mantener independencia mental,
profesional y laboral para evitar cualquier tipo de influencia en los resultados de la
misma.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 24


ADMINISTRACIN DE BASE DE DATOS

La tcnica de la auditora, siendo por tanto aceptables equipos multidisciplinarios


formados por titulados en Ingeniera Informtica e Ingeniera Tcnica en
Informtica y licenciados en derecho especializados en el mundo de la auditora.

Principales pruebas y herramientas para efectuar una Auditora


informtica.

En la realizacin de una auditora informtica el auditor puede realizar las


siguientes pruebas:

o Pruebas sustantivas: Verifican el grado de confiabilidad del SI del organismo.


Se suelen obtener mediante observacin, clculos, muestreos, entrevistas,
tcnicas de examen analtico, revisiones y conciliaciones. Verifican asimismo la
exactitud, integridad y validez de la informacin.
o Pruebas de cumplimiento: Verifican el grado de cumplimiento de lo revelado
mediante el anlisis de la muestra. Proporciona evidencias de que los controles
claves existen y que son aplicables efectiva y uniformemente.

Las principales herramientas de las que dispone un auditor informtico


son:

o Observacin.
o Realizacin de cuestionarios.
o Entrevistas a auditados y no auditados.
o Muestreo estadstico.
o Flujogramas.
o Listas de chequeo.
o Mapas conceptuales.

La auditora informtica es un proceso llevado a cabo por profesionales


especialmente capacitados para el efecto, y que consiste en recoger, agrupar y
evaluar evidencias para determinar si un sistema de informacin salvaguarda el
activo empresarial, mantiene la integridad de los datos, lleva a cabo eficazmente
los fines de la organizacin, utiliza eficientemente los recursos, y cumple con las
leyes y regulaciones establecidas. Permiten detectar de forma sistemtica el uso
de los recursos y los flujos de informacin dentro de una organizacin y determinar
qu informacin es crtica para el cumplimiento de su misin y objetivos,
identificando necesidades, duplicidades, costes, valor y barreras, que obstaculizan

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 25


ADMINISTRACIN DE BASE DE DATOS

flujos de informacin eficientes. En si la auditoria informtica tiene 2 tipos las


cuales son:

AUDITORA INTERNA: es aquella que se hace adentro de la empresa; sin


contratar a personas de afuera.
AUDITORA EXTERNA: como su nombre lo dice es aquella en la cual la
empresa contrata a personas de afuera para que haga la auditoria en su
empresa. Auditar consiste principalmente en estudiar los mecanismos de
control que estn implantados en una empresa u organizacin, determinando si
los mismos son adecuados y cumplen unos determinados objetivos o
estrategias, estableciendo los cambios que se deberan realizar para la
consecucin de los mismos. Los mecanismos de control pueden ser directivos,
preventivos, de deteccin, correctivos o de recuperacin ante una contingencia.

Los objetivos de la auditora Informtica son:

El anlisis de la eficiencia de los Sistemas Informticos.


La verificacin del cumplimiento de la Normativa en este mbito.
La revisin de la eficaz gestin de los recursos informticos.

Sus beneficios son:

Mejora la imagen pblica.


Confianza en los usuarios sobre la seguridad y control de los servicios de TI.
Optimiza las relaciones internas y del clima de trabajo.
Disminuye los costos de la mala calidad (reproceso, rechazos, reclamos, entre
otros).
Genera un balance de los riesgos en TI.
Realiza un control de la inversin en un entorno de TI, a menudo impredecible.
La auditora informtica sirve para mejorar ciertas caractersticas en la empresa
como:

o Desempeo.
Fiabilidad.
Eficacia.
Rentabilidad.
Seguridad.
Privacidad.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 26


ADMINISTRACIN DE BASE DE DATOS

Generalmente se puede desarrollar en alguna o combinacin de las siguientes


reas:

o Gobierno corporativo
Administracin del Ciclo de vida de los sistemas.
Servicios de Entrega y Soporte.
Proteccin y Seguridad.
Planes de continuidad y Recuperacin de desastres.

La necesidad de contar con lineamientos y herramientas estndar para el ejercicio


de la auditora informtica ha promovido la creacin y desarrollo de mejores
prcticas como COBIT, COSO e ITIL.
Actualmente la certificacin de ISACA para ser CISA Certified Information Systems
Auditor es una de las ms reconocidas y avaladas por los estndares
internacionales ya que el proceso de seleccin consta de un examen inicial
bastante extenso y la necesidad de mantenerse actualizado acumulando horas
(puntos) para no perder la certificacin

DEFINIR LAS TAREAS DEL ADMINISTRADOR DE LA BD.


La informacin es uno los activos ms valiosos de la empresa, es indispensable
contar con una persona el administrador de datos- que conozca la informacin, y
las necesidades de la empresa en este aspecto, en un nivel gerencial superior. As
la labor del administrador de datos es decidir en primer trmino cules datos
deben almacenarse en la base de datos, y establecer polticas para mantener y
manejar los datos una vez almacenados. El administrador de datos es por lo
general, un gerente, no un tcnico. El tcnico responsable de poner en prctica las
decisiones del administrador de datos es el administrador de bases de datos
(DBA, database administrador).

El alcance de la actividad de la Administracin de Datos es la organizacin


completa (empresa, institucin u otro organismo), mientras que el alcance de la
Administracin de Bases de Datos queda restringido a una Base de Datos en
particular y a los sistemas que los procesan. La Administracin de la Base de
Datos pera dentro de un marco proporcionado por la Administracin de Datos
facilitndose de esta manera el desarrollo y el uso de una Base de Datos y sus
aplicaciones. Las siglas DBA suelen utilizarse para designar tanto la funcin

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 27


ADMINISTRACIN DE BASE DE DATOS

Administracin de Base de Datos como al ttulo del puesto administrador de Base


de Datos.

En los distintos niveles y aplicaciones de Base de Datos existe la funcin DBA,


aunque vara en complejidad. Esta es ms sencilla cuando se trata de una Base
de Datos Personal que cuando se refiere a una Base de Datos de grupos de
trabajo, y esta a su vez es ms sencilla que en una Base de Datos Organizacional.
En una Base de Datos Personal comnmente el mismo usuario es el
Administrador de la Base de Datos; las Bases de Datos de grupos de trabajo
requieren de una o dos personas que normalmente no se dedican a esta funcin
de tiempo completo puesto que tienen otras responsabilidades dentro o fuera de la
organizacin. En las Bases de Datos Organizacionales, que comnmente permiten
el acceso a decenas e incluso centenas de usuarios, se requiere de un
administrador de Base de Datos de tiempo completo; lo anterior debido al alto
volumen de procesos que deben desarrollarse, controlarse y supervisarse.

Un Administrador de Base de Datos de tiempo completo normalmente tiene


aptitudes tcnicas para el manejo del sistema en cuestin adems, son cualidades
deseables nociones de administracin, manejo de personal e incluso un cierto
grado de diplomacia. La caracterstica ms importante que debe poseer es un
conocimiento profundo de las polticas y normas de la empresa as como el criterio
de la empresa para aplicarlas en un momento dado.

Funciones del DBA.

Los administradores de bases de datos estn a cargo del rendimiento de la base


de datos, de la retencin y la seguridad. Ellos asisten a los procesos de desarrollo
necesarios para un rendimiento ptimo de la base de datos. Deben identificar las
seales de posibles fallas en el sistema y otros desastres que pudieran generar la
prdida informacin. Si evitar una falla o un desastre est fuera de su alcance,
tienen que estar preparados para recuperarlos. Tambin tienen que mantener los
registros de usuarios y contraseas para asegurar la seguridad de los datos en la
base de datos.
As, el DBA, a diferencia del administrador de datos, es un profesional en
procesamiento de datos. La tarea del DBA es crear la base de datos en s y poner
en vigor los controles tcnicos necesarios para apoyar las polticas dictadas por el
administrador de datos. El DBA se encarga tambin de garantizar el
funcionamiento adecuado del sistema y de proporcionar otros servicios de ndole
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 28
ADMINISTRACIN DE BASE DE DATOS

tcnica relacionados. El DBA cuenta por lo regular con un grupo de


programadores de sistemas y otros asistentes tcnicos.

La responsabilidad general del DBA es facilitar el desarrollo y el uso de la Base de


Datos dentro de las guas de accin definidas por la administracin de los datos.

o ElDBA es responsable primordialmente de:

Administrar la estructura de la Base de Datos.


Administrar la actividad de los datos.
Administrar el Sistema Manejador de Base de Datos.
Establecer el Diccionario de Datos.
Asegurar la confiabilidad de la Base de Datos.
Confirmar la seguridad de la Base de Datos.

Rendimiento.
El rendimiento de una base de datos incluye su velocidad para ubicar los datos as
como su habilidad para ser utilizada con otras aplicaciones. Los administradores
de la base de datos ayudan a disear un indexado para aumentar la velocidad de
bsqueda y asistir con una disposicin y un diseo adecuado para la base de
datos. Tambin aseguran que las distintas aplicaciones de programas tengan la
habilidad de acceder a la informacin dentro de la base de datos y producir una
salida adecuada es cargar el servidor.

Evitar desastres.
Muchas veces, las fallas de sistemas y de disco rgido y los virus pueden destruir
los datos de una empresa. Los administradores se aseguran de que la proteccin
de virus adecuada est en su lugar y corran regularmente para analizarlos. Estos
programas tambin tienen que estar actualizados con los ltimos diccionarios de
virus para detectar nuevas amenazas diseadas para infiltrar un sistema y destruir
los datos. Los administradores tambin revisan regularmente que todos los
componentes estn funcionando adecuadamente y realicen anlisis regulares en
el disco rgido para buscar alguna corrupcin.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 29


ADMINISTRACIN DE BASE DE DATOS

Retencin de informacin.
Los administradores de bases de datos evitan la prdida de datos haciendo copias
de seguridad regulares del sistema y manteniendo las copias de seguridad en un
lugar seguro. Los sistemas con entradas diarias grandes necesitan copias de
seguridad que son ms frecuentes. Esto evita la prdida de nueva informacin.
Cualquier dato que no est gravado en una cinta o un disco tiene que ser
reingresada manualmente luego de un desastre, tomando tiempo fuera de los
negocios normales, por lo tanto, los administradores deben determinar la
frecuencia de las copias de seguridad basado a los negocios de la empresa y
realiza las copias correspondientemente.

Recuperacin del desastre.


La administracin de la seguridad es otra funcin clave de los administradores de
bases de datos. Esto incluye establecer las cuentas de usuarios, contraseas y
niveles de acceso de los usuarios. Las cuentas y las contraseas de los usuarios
necesariamente son para la seguridad de la base de datos, para evitar el acceso
de personas no deseadas o desconocidas que podran robar informacin personal
o de la empresa. Los niveles de acceso de los usuarios son necesarios para
proteger la informacin de alto nivel de seguridad de accesos no permitidos como
archivos de empleados que slo son para acceso del personal administrativo.

Administracin de la estructura de la Base de Datos.

La administracin de la estructura de la Base de Datos incluye participar en el


diseo inicial de la misma y su puesta en prctica as como controlar, y administrar
sus requerimientos, ayudando a evaluar alternativas, incluyendo los DBMS a
utilizar y ayudando en el diseo general de BD. En los casos de grandes
aplicaciones de tipo organizacional, el DBA es un gerente que supervisa el trabajo
del personal de diseo de la BD.

Una vez diseada la BD, es puesta en prctica utilizando productos del DBMS,
procedindose entonces a la creacin de los datos (captura inicial). El DBA
participa en el desarrollo de procedimientos y controles para asegurar la calidad y
la alta integridad de la BD.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 30


ADMINISTRACIN DE BASE DE DATOS

Los requerimientos de los usuarios van modificndose, estos encuentran nuevas


formas o mtodos para lograr sus objetivos; la tecnologa de la BD se va
modificando y los fabricantes del DBMS actualizan sus productos. Todas las
modificaciones en las estructuras o procedimientos de BD requieren de una
cuidadosa administracin.

Implicaciones por la modificacin de los esquemas.

Las solicitudes de modificacin son inevitables una vez que el sistema ha entrado
en operacin, pueden aparecer solicitudes de nuevos requerimientos o estos
pueden resultar de una comprensin inadecuada de los mismos. En cualquier
caso, debern efectuarse modificaciones en relacin con toda la comunidad de la
BD, ya que el impacto de tales alteraciones ser resentido por ms de una
aplicacin. En algunos casos, pueden darse modificaciones que presentan efectos
negativos para algunos usuarios; estos casos debern ser tratados esgrimiendo
como argumento los beneficios globales que sern obtenidos de tales
alteraciones.

Una administracin eficaz de la BD debe incluir procedimientos y polticas


mediante las cuales los usuarios puedan registrar sus necesidades de
modificaciones, y as la comunidad podr analizar y discutir los impactos de dichas
modificaciones, determinndose entonces la puesta o no en prctica de tales
alteraciones.

En razn del tamao y complejidad de una BD y de sus aplicaciones, las


modificaciones pudieran tener resultados inesperados. El DBA debe estar
preparado para reparar la BD y reunir suficiente informacin para diagnosticar y
corregir el problema provocado por la falla. Despus de un cambio la BD es ms
vulnerable a fallas.

Documentacin.

La responsabilidad final de un DBA en la administracin de la estructura de una


BD es la DOCUMENTACIN. Es de suma importancia saber que modificaciones
han sido efectuadas, como fueron realizadas y cuando fueron establecidas. Una
modificacin sobre la estructura de la BD pudiera ocasionar un error que no
apareciera a corto plazo; una vez que este surja, sin la documentacin adecuada
sobre las modificaciones realizadas, l diagnostico resultara extremadamente

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 31


ADMINISTRACIN DE BASE DE DATOS

complicado. En estos casos, se hara necesaria una secuencia de rejecuciones


para intentar detectar el punto en conflicto; el riesgo de este procedimiento radica
en que es posible afectar la informacin contenida en la BD. Para identificar un
cambio es de suma importancia mantener un registro de los formatos de prueba y
de las ejecuciones de las pruebas efectuadas. Si se utilizan procedimientos de
prueba formatos de pruebas y mtodos de registro estandarizados, el registro de
los resultados de la prueba no consumir tiempo excesivo.

Comnmente el tiempo de la documentacin es tedioso y esto ocasiona que


algunos DBA tienden a reducir o abreviar la informacin que se registra en ella e
incluso llegan a desatenderla. Cuando ocurre un siniestro, la documentacin
completa y organizada puede ser la diferencia entre resolver o no un problema de
extrema importancia y en la mayora de los casos, que implica costos cuantiosos a
la empresa.

La tarea de la documentacin es cada vez ms ligera y precisa cuando se utilizan


DBMS que integran herramientas CASE para las tareas de diseo, mantenimiento
y documentacin. Estas mismas herramientas CASE proporcionan en la, mayora
de los casos la facilidad de generar y mantener en forma automtica el Diccionario
de Datos.

Una razn ms para documentar consiste en la necesidad de mantener


organizados datos histricos. Ocurre comnmente que se desea realizar una
consulta sobre los respaldos para conocer el estado que guardaba la informacin
en un periodo determinado que transcurri previamente. Los registros de
modificacin existentes en la documentacin permitirn resolver problemas de
incompatibilidad entre las estructuras que eran vigentes en el periodo de respaldo
y las que lo son ahora; permitir tambin el desarrollo de mdulos de ajuste que
faciliten la traduccin de formatos y/o escalas para valores almacenados.

En los casos de cadas del sistema se presenta una situacin parecida; los
respaldos son requeridos y habr de verificarse su estructura; formato y escala
para integrarlos a la operacin del sistema.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 32


ADMINISTRACIN DE BASE DE DATOS

Administracin de la actividad de datos.

Aunque el DBA protege los datos, no los procesa. El DBA no es usuario del
sistema, en consecuencia, no administra valores de datos; el DBA administra
actividad de datos. Dado que la BD es un recurso compartido, el DBA debe
proporcionar estndares, guas de accin, procedimientos de control y la
documentacin necesaria para garantizar que los usuarios trabajan en forma
cooperativa y complementaria al procesar datos en la BD.

Como es de suponerse, existe una gran actividad al interior de un DBMS. La


concurrencia de mltiples usuarios requieren de estandarizar los procesos de
operacin; el DBA es responsable de tales especificaciones y de asegurarse que
estas lleguen a quienes concierne. Todo el mbito de la BD se rige por
estndares, desde la forma como se capture la informacin (tipo, longitud,
formato), como es procesada y presentada. El nivel de estandarizacin alcanza
hasta los aspectos ms internos de la BD; como s accesa a un archivo, como se
determinan los ndices primarios y auxiliares, la foliacin de los registros y dems.

Debe procurarse siempre que los estndares que sern aplicados beneficien
tambin a los usuarios, privilegiando siempre la optimizacin en la operacin del
DBMS y el apego de las polticas de la empresa.

Una administracin de BD efectiva deber disponer siempre de este tipo de


estndares; entre las funciones del DBA se encuentra la de revisarlos
peridicamente para determinar su operatividad, y en su caso ajustarlos,
ampliarlos o cancelarlos. Es tambin su responsabilidad el que estos se cumplan.

Cuando se definen estndares sobre la estructura de la BD, estos deben


registrarse en una seccin del diccionario de datos a la que todos aquellos
usuarios relacionados con ese tipo de proceso pueden acceder.

Otro de los aspectos que el administrador debe atender es el de coordinar las


nuevas propuestas para realizar ajustes en los derechos de acceso a datos
compartidos y aplicaciones especficamente propuestas seran analizados en
conjunto con los supervisores o directivos de las reas involucradas para
determinar si procede pudieran aparecer problemas cuando dos o ms grupos de
usuarios quedan autorizados para notificar los mismos datos. Uno de tales
conflictos es el de la actualizacin perdida; este ocurre cuando el trabajo de un

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 33


ADMINISTRACIN DE BASE DE DATOS

usuario queda sobrescrito sobre por el de un segundo usuario. El DBA queda


responsabilizado para identificar la posible ocurrencia de dichos problemas as
como de crear normas y procedimientos para su eliminacin.

Se obtendrn este tipo de garantas cuando el DBMS sea capaz de implementar


las restricciones aplicables al acceso concurrente, y este sea utilizado
adecuadamente por programadores y usuarios; para borrar lo anterior, se hace
indispensable el apego a los estndares el seguimiento de instructivos y manuales
y las reglas establecidas para los diversos procesamientos y procedimientos que
se llevan a cabo.

Entre las alternativas ms utilizadas por el DBA para tratar de resolver o minimizar
este problema se encuentran las siguientes:

a) Restringir el acceso a los procedimientos para ciertos usuarios.


b) Restringir al acceso a los datos para ciertos usuarios procedimientos y/o datos.
c) Evitar la coincidencia de horarios para usuarios que comparten.

Las tcnicas de recuperacin son otra funcin esencial del DBA al administrar la
actividad de datos. A pesar de que el DBMS lleva a cabo una parte del proceso de
recuperacin, los usuarios determinan en forma critica la operatividad de esos
sistemas de proteccin. El DBA debe anticipar fallas y definir procedimientos
estndares de operacin; los usuarios deben saber que hacer cuando el sistema
este cado y que es lo primero que debe realizarse cuando el sistema este puesto
en marcha nuevamente. El personal de operacin deber saber cmo iniciar el
proceso de recuperacin de la BD que copias de seguridad utilizar; como
programar la rejecucin del tiempo perdido y de las tareas pendientes; es
importante tambin establecer un calendario para llevar a cabo estas actividades
sin afectar a otros sistemas dentro de la organizacin que hagan uso de los
mismos recursos de computo. Destacan por su importancia en el proceso de
recuperacin y a su vez en la atencin que prestan a otros sectores de la
organizacin. Los dispositivos de comunicacin remota, los sistemas de
interconexin y otros accesorios de uso compartido.

El DBA es el responsable de la publicacin y mantenimiento de la documentacin


en relacin con la actividad de los datos, incluyendo los estndares de la BD, los
derechos de recuperacin y de acceso a la BD, los estndares para la
recuperacin de cadas y el cumplimiento de las polticas establecidas. Los

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 34


ADMINISTRACIN DE BASE DE DATOS

productos DBMS ms populares que se encuentran en el mercado proporcionan


servicios de utilerias para ayudar al DBA en la administracin de los datos y su
actividad. Algunos sistemas registran en forma automtica los nombres de los
usuarios y de las aplicaciones a las que tienen acceso as como a otros objetos de
la BD. Incorpora tambin utileras que permitan definir en el diccionario de datos
las restricciones para que determinadas aplicaciones o mdulos de ellas solo
tengan acceso a segmentos especficos de la BD.

Funciones del Administrador de Bases de Datos (DATE).

o Definir el esquema conceptual: es tarea del administrador de datos decidir


con exactitud cual es la informacin que debe mantenerse en la base de datos,
es decir, identificar las entidades que interesan a la empresa y la informacin
que debe registrarse acerca de esas entidades. Este proceso por lo general se
denomina diseo lgico a veces conceptual- de bases de datos. Cuando el
administrador de datos decide el contenido de la base de datos en un nivel
abstracto, el DBA crea a continuacin el esquema conceptual correspondiente,
empleando el DDL conceptual. El DBMS utilizar la versin objeto (compilada)
de ese esquema para responder a las solicitudes de acceso. La versin fuente
sin compilar servir como documento de referencia para los usuarios del
sistema.
o Definir el esquema interno: el DBA debe decidir tambin como se
representar la informacin en la base de datos almacenada. A este proceso
suele llamrsele diseo fsico de la base de datos. Una vez hecho esto el DBA
deber crear la definicin de estructura de almacenamiento correspondiente (es
decir el esquema interno) valindose del DDL interno. Adems deber definir la
correspondencia pertinente entre los esquemas interno y conceptual. En la
prctica, ya sea el DDL conceptual o bien el DDL interno incluirn seguramente
los medios para definir dicha correspondencia, pero las dos funciones (crear el
esquema, definir la correspondencia) debern poder separarse con nitidez. Al
igual que el esquema conceptual, el esquema interno y la correspondencia
asociada existirn tanto en la versin fuente como en la versin objeto.
o Vincularse con los usuarios: el DBA debe encargarse de la comunicacin con
los usuarios, garantizar la disponibilidad de los datos que requieren y escribir - o
ayudar a los usuarios a escribir- los esquemas externos necesarios, empleando
el DDL externo aplicable. Adems, ser preciso definir la correspondencia entre
cualquier esquema externo y el esquema conceptual. En la prctica, el DDL

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 35


ADMINISTRACIN DE BASE DE DATOS

externo incluir con toda probabilidad los medios para especificar dicha
correspondencia, pero en este caso tambin el esquema y la correspondencia
debern poder separarse con claridad. Cada esquema externo y la
correspondencia asociada existirn en ambas versiones fuentes y objeto. Otros
aspectos de la funcin de enlace con los usuarios incluyen las consultas sobre
diseo de aplicaciones, la impetracin de instruccin tcnica, la ayuda en la
localizacin y resolucin de problemas, y otros servicios profesionales similares
relacionados con el sistema.
o Definir las verificaciones de seguridad e integridad: las verificaciones de
seguridad y de integridad pueden considerarse parte del esquema conceptual.
El DDL conceptual incluir los medios para especificar dichas verificaciones.
o Definir procedimientos de respaldo y recuperacin: cuando una empresa se
decide a utilizar un sistema de base de datos, se vuelve dependiente en grado
sumo del funcionamiento correcto de ese sistema. En caso de que sufra dao
cualquier porcin de la base de datos por causa de un error humano,
digamos, o una falla en el equipo o en el sistema que lo apoya resulta
esencial poder reparar los datos implicados con un mnimo de retraso y
afectando lo menos posible el resto del sistema. En teora, por ejemplo la
disponibilidad de los datos no daados no debera verse afectada. El DBA debe
definir y poner en practica un plan de recuperacin adecuado que incluya, por
ejemplo una descarga o "vaciado" peridico de la base de datos en un medio de
almacenamiento de respaldo, y procedimientos para cargar otra vez la base de
datos a partir de vaciado ms reciente cuando sea necesario.
o Supervisar el desempeo y responder a cambios en los requerimientos: es
responsabilidad del DBA organizar el sistema de modo que se obtenga el
desempeo que sea "mejor para la empresa", y realizar los ajustes apropiados
cuando cambien los requerimientos.

Funciones del Administrador de Bases de Datos (KORTH).

o Definicin del esquema: el esquema original de la base de datos se crea


escribiendo un conjunto de definiciones que son traducidas por el compilador de
DDL a un conjunto de tablas que son almacenadas permanentemente en el
DICCIONARIO DE DATOS.
o Definicin de la estructura de almacenamiento y del mtodo de acceso:
estructuras de almacenamiento y mtodos de acceso adecuados se crean

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 36


ADMINISTRACIN DE BASE DE DATOS

escribiendo un conjunto de definiciones que son traducidas por el compilador


del lenguaje de almacenamiento y definicin de datos.
o Modificacin del esquema y de la organizacin fsica: las modificaciones,
tanto al esquema de la base de datos como a la descripcin de la organizacin
fsica de almacenamiento, aunque relativamente poco comunes, se logran
escribiendo un conjunto de definiciones que son usadas bien por el compilador
del DDL o bien por el compilador del lenguaje de almacenamiento y definicin
de datos para generar modificaciones a las tablas internas apropiadas del
sistema (por ejemplo, el diccionario de datos).
o Concesin de autorizacin para el acceso a los datos: la concesin de
diferentes tipos de autorizacin permite al administrador de la base de datos
regular qu partes de la base de datos van a poder ser accedidas por varios
usuarios.
o Especificacin de las restricciones de integridad: las restricciones de
integridad se mantienen en una estructura especial del sistema que consulta el
gestor de la base de datos cada vez que tiene lugar una actualizacin en el
sistema.

Administracin del DBMS.

A dems de administrar la actividad de datos y la estructura de la BD, el DBA


debe administrar el DBMS mismo. Deber compilar y analizar estadsticas
relativas al rendimiento del sistema e identificar reas potenciales del problema.
Dado que la BD esta sirviendo a muchos grupos de usuarios, el DBA requiere
investigar todas las quejas sobre el tiempo de respuesta del sistema, la precisin
de los datos y la facilidad de uso. Si se requieren cambios el DBA deber
planearlos y ponerlos en prctica.

El DBA deber vigilar peridica y continuamente las actividades de los usuarios en


la BD. Los productos DBMS incluyen tecnologas que renen y publican
estadsticas. Estos informes pudieran indicar cuales fueron los usuarios activos,
que archivos y que elementos de datos han sido utilizados, e incluso el mtodo de
acceso que se ha aplicado. Pueden capturarse y reportarse las tasas de error y los
tipos de errores. El DBA analizar estos datos para determinar si se necesita una
modificacin en el diseo de la BD para manejar su rendimiento o para facilitar las
tareas de los usuarios; de ser as, el DBA la llevar a cabo.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 37


ADMINISTRACIN DE BASE DE DATOS

El DBA deber analizar las estadsticas de tiempo de ejecucin sobre la actividad


de la BD y su rendimiento. Cuando se identifique un problema de rendimiento, ya
sea mediante una queja o un informe, el DBA deber determinar si resulta
apropiada una modificacin a la estructura de la BD o al sistema. Casos como la
adicin de nuevas claves o su eliminacin, nuevas relaciones entre los datos y
otras situaciones tpicas debern ser analizadas para determinar el tipo de
modificacin procedente.

Cuando el fabricante del DBMS en uso anuncie una nueva versin del producto,
debe realizarse un anlisis de las caractersticas que esta incorpora e insopesarlas
contra las necesidades de la comunidad de usuarios. Si se decide la adquisicin
del producto, los usuarios deben ser notificados y capacitados en su uso. El DBA
deber administrar y controlar la migracin tanto de las estructuras, como de los
datos y las aplicaciones.

El software de soporte y otras caractersticas de hardware pueden implicar


tambin modificaciones de las que el DBA es responsable ocasionalmente, estas
modificaciones traen como consecuencia cambios en la configuracin o en
algunos parmetros de operacin del DBMS.

Las opciones del DBMS son ajustadas al principio, es decir, en la puesta en


marcha del sistema; en este momento se conoce muy poca informacin sobre las
caractersticas de funcionamiento y respuesta que proporcionar a los grupos de
usuarios. El anlisis de la experiencia operacional y su rendimiento en un periodo
determinado de tiempo pudieran revelar que se requiere un campo. Si el
rendimiento parece aceptable, el DBA puede considerar a un modificar algunas
opciones y observar su efecto sobre el sistema, esto en bsqueda de la
optimizacin o afinacin del mismo.

ANALIZAR LA DOCUMENTACIN DE LA BD.

Anlisis documental.
El anlisis documental es el conjunto de operaciones que representan el contenido
y la forma del documento bajo una forma distinta de la original, para facilitar su
consulta o recuperacin posterior.
Un documento no puede ser registrado en un centro de documentacin en su
forma primaria debido a su extensin, complejidad y presentacin, sino que debe

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 38


ADMINISTRACIN DE BASE DE DATOS

ser transformado, siguiendo un modelo general, para facilitar las tareas de


almacenamiento y recuperacin.
Se trata de crear de referencias documentales, ya sean manuales o
automatizadas, y organizarlas en los catlogos: es la fase de preparacin de los
registros bibliogrficos, el conjunto de operaciones que se realizan sobre los
documentos de la coleccin para:
o Identificarlos y describirlos de manera unvoca a travs de la descripcin de
cada uno de ellos.
o Poder localizarlos por varios puntos de acceso (autores, ttulos, series).

Todas las operaciones del anlisis documental han de quedar reflejadas en unos
soportes, ya sean estos manuales (catlogos de fichas) o automatizados (bases
de datos on line, catlogos cerrados en CD-ROM...) que forman los registros.
Los niveles de anlisis estn en relacin directa con los elementos que integran el
documento (d = inf. + sop.), el contenido (informacin) y la forma (soporte),
distinguindose as entre anlisis formal o externo y anlisis de contenido e
interno, cada uno con sus propias tcnicas:

El anlisis formal se concreta en dos operaciones.


Descripcin fsica: operacin encargada de escoger todos los elementos que
posibiliten la identificacin precisa y formal de cada documento en una coleccin
determinada. Se trata de una descripcin fsica o externa del documento.
Catalogacin: es el proceso mediante el cual son transferidos, conforme a
determinadas reglas, ciertos datos tcnicos de un documento a un soporte
documental. Esta operacin completa los datos que se obtienen en la primera,
permitiendo la identificacin y localizacin fsica del documento. Esto se hace
elaborando un catalogo que har de intermediario entre los usuarios y el fondo
documental.
La descripcin de contenido recoge los datos del mensaje en dos niveles: uno en
el que se indica el contenido temtico (indizacin) y otro en el que se ofrece una
versin reducida y elaborada del mismo (resumen):
Indizacin es un proceso que consiste en describir y caracterizar un documento
con la ayuda de representaciones de los conceptos contenidos en dicho
documento, para permitir la bsqueda eficaz de la informacin.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 39


ADMINISTRACIN DE BASE DE DATOS

Se trata de extraer las ideas ms representativas y transformarlas en unos


trminos de indizacin adecuados, bien procedentes del lenguaje natural
empleado por los documentalistas, o de un lenguaje documental previamente
seleccionado.
Resumen: es un proceso de recreacin a escala reducida del documento original.
Con los distintos pasos del anlisis documental el documento primario se
transforma en documento secundario: as, tenemos como productos o documentos
secundarios los asientos bibliogrficos y catlogos (nos permiten identificar
fsicamente y dentro del centro un documento) y boletines de ndices y resmenes
(funcionan como fuente de informacin para los usuarios de los documentos que
existen en el centro y como ayuda imprescindible para las tareas de bsqueda de
informacin).

Anlisis en una BD.


La presencia cada vez mayor de las Bases de Datos especializadas y su uso
generalizado por un colectivo amplio de usuarios, as como las posibilidades de
difusin que las nuevas tecnologas ofrecen, obligan a un anlisis mejor y ms
pertinente de los documentos. Este trabajo aborda la teora y la prctica del
anlisis documental, la indizacin conceptual y la elaboracin de resmenes.
Palabras clave:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 40


ADMINISTRACIN DE BASE DE DATOS

Bases de datos analticas; Anlisis de la informacin; Indizacin; Resumen


Abstract
The increasing presence of specialised Databases, and their generalized usage of
them by a wide sector of users, as well as the possibilities of dissemination
provided by new technologies, requires a better and more appropriate analysis of
documents. This paper concerns the theory and practice of document analysis,
conceptual indexing and abstracts writing.
Analytical Databases; Information Analysis; Indexation; Abstract

o EL ANLISIS DOCUMENTAL. DEFINICIN Y CONCEPTO.


El anlisis documental es un trabajo mediante el cual por un proceso intelectual
extraemos unas nociones del documento para representarlo y facilitar el acceso a
los originales. Analizar, por tanto, es derivar de un documento el conjunto de
palabras y smbolos que le sirvan de representacin.
En este amplio concepto, el anlisis cubre desde la identificacin externa o
descripcin fsica del documento a travs de sus elementos formales como autor,
ttulo, editorial, nombre de revista, ao de publicacin, etc., hasta la descripcin
conceptual de su contenido o temtica, realizada a travs de los lenguajes de
indizacin, como palabras clave o descriptores del tesauro. El concepto de
indizacin se identifica con el anlisis del contenido en la medida que dichos
lenguajes se utilizan para elaborar los ndices temticos por los que se recupera la
informacin.
Muchos y muy diversos pueden ser los mtodos de anlisis utilizados para
representar el documento. La mayor o menor profundidad del anlisis depender
en gran medida de los siguientes aspectos:
Tipo de usuarios y necesidades de informacin ms o menos especializadas.
Tipos de servicios que se ofrecen. Bibliotecas generales, empresas, Centros de
Documentacin, etc.
Documentos a analizar: Libros, artculos de revistas, literatura gris, prensa,
legislacin.
Cruz Rubio Liniers El anlisis documental.
Bases de datos y sistemas de recuperacin utilizados y sus posibilidades.
Finalidad tcnica del anlisis: catlogacin o recuperacin especializada.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 41


ADMINISTRACIN DE BASE DE DATOS

Podremos hacer una descripcin fsica basada en las normas ISBD y un anlisis
de contenido superficial a partir de una clasificacin universal o encabezamientos
de materia, propio de los sistemas bibliotecarios de catalogacin y cuya finalidad
primordial es la creacin de un inventario de documentos.
Por el contrario, un sistema documental especializado realiza el anlisis de
contenido basado en la significacin o contexto. Es un autntico anlisis en
profundidad que implica las tcnicas documentales de indizacin y resumen.

o LA INDIZACIN Y LOS LENGUAJES DOCUMENTALES.


Un lenguaje documental es un sistema convencional de signos que permite
representar el contenido de los documentos con el fin de encontrar aquellos
pertinentes en respuesta a preguntas sobre un tema. Para la mayora de los
especialistas el concepto de lenguaje documental es sinnimo de lenguaje
controlado, frente al lenguaje natural que es el que utiliza el discurso cientfico,
tcnico o literario. Dicho discurso est cargado de metforas, sinonimias y
hominimias y necesita ser organizado y normalizado para permitir una
recuperacin eficaz del documento a salvo de los dos grandes problemas
documentales: el ruido, -exceso de informacin encontrada no pertinente,- y el
silencio,- ausencia de informacin pertinente que existe en la base de datos y no
es recuperada.
Un ttulo como Las sombras del pasado difcilmente nos orienta sobre el qu, el
quin, el cundo o el dnde. Incluso en otros ttulos ms precisos la recuperacin
por unitrminos a partir de las palabras de los ttulos crea muchos problemas
derivados de la indizacin con lenguaje natural.
Los principales problemas del lenguaje natural son:
Normalizacin de singulares y plurales. Para dicho tema la indizacin debe
ajustarse en lo posible a la Norma UNE 50-106-90.Normas para el desarrollo de
tesauros monolinges.
Adems el significado de muchos trminos vara segn su nmero (Derecho;
derechos/Obligacin; Obligaciones).
Ambigedad y falta de especificidad. La utilizacin de unitrminos, propio del
1
lenguaje natural crea adems ambigedad y falsas combinaciones en la
recuperacin. Segn el ejemplo anterior un buen sistema controlado debera
recoge formas como: Obligacin de declarar; Obligaciones del Estado.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 42


ADMINISTRACIN DE BASE DE DATOS

Mortimer Taube idea en 1958 el sistema de indizacin por unitrminos en lenguaje


natural extrados de los ttulos. Siguiendo este camino Lhun en 1959 crea los
ndices KWIC y plantea la elaboracin de bases de datos a partir de ttulos y texto
como el CITATION INDEX. Cruz Rubio Liniers El anlisis documental.

Muchos trminos estn perfectamente claros y definidos en su utilizacin. As, las


notas de alcance de un tesauro nos permiten aclarar aquellos conceptos que
ayuden a su uso en el contexto exacto.(Restauracin N.A. Reinado de Alfonso
XII). Las posibles homonimias de este concepto pueden solucionarse apellidando
el homnimo (Restauracin artstica) Adems al apellidar un unitrmino,
convirtindolo en palabra clave evitamos la ambigedad y le damos mayor
especificidad (Restauracin de la comunidad conyugal).
Sinonimias. La utilizacin de sinnimos, que aporta valor y riqueza desde el
punto de vista literario es el mayor problema en la recuperacin en texto libre en
las bases de datos. No olvidemos que el principio ideal de la indizacin est
en el uso del concepto frente a la palabra. As cada forma debe tener un nico
significado y cada significado debe ir asociado a una nica forma. El tesauro
controla las sinonimias mediante los reenvos:
Enfermedad laboral Enfermedad profesional
Usado por Enfermedad profesional Use Enfermedad laboral
Homonimias o polisemias. El distinto significado de una misma palabra es
una caracterstica de la terminologa cientfica e incluso en las Ciencias
Sociales es indicio de escuelas historiogrficas o geogrficas. (Edad Moderna
(Europa), Encomiendas; Ingenios (Historia de Amrica Latina)) . En muchos
casos la precoordinacin de trminos soluciona las homonimias (Restauracin
artstica), en otros es necesaria una nota de alcance e incluso la adscripcin de
un trmino a una familia o grupo semntico en el tesauro, le confiere una clara
conceptualizacin.
Un eficaz anlisis implica la utilizacin de vocabularios controlados y
procedimientos sintcticos convencionales que permitan crear un vnculo entre
el que emite el mensaje y el que lo recibe. Un metalenguaje que armonice
pregunta y respuesta.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 43


ADMINISTRACIN DE BASE DE DATOS

o LOS LENGUAJES CONTROLADOS Y LA INDIZACIN.


Los lenguajes y vocabularios controlados utilizados en la indizacin han
evolucionado desde los primeros lenguajes clasificatorios hasta los actuales
tesauros especializados.
Las clasificaciones universales, (CDU, LC, UNESCO) resultan poco
pertinentes como nico lenguaje de recuperacin en bases de datos. Parten de
una divisin del saber hoy superada por la especificidad actual y los puntos de
vista particulares de las disciplinas cientficas. Su estructura jerrquica impide
la combinacin de los mltiples aspectos de una investigacin, y no permite
recoger temas muy especficos o novedosos.
Las clasificaciones especializadas, elaboradas para una disciplina o un
sistema documental especfico, tienen sin embargo utilidad como
complementarias a los descriptores. Permiten englobar en un marco amplio
todos aquellos documentos de una Cruz Rubio Liniers El anlisis documental
base de datos a los efectos de una acotacin posterior por descriptores.
Posibilitan adems organizar subproductos de la base de datos, como
2
bibliografas impresas. Dice Maniez que para elegir la clasificacin ms idnea
habra que analizar como recoge cada una de ellas un tema o aspecto
disciplinar concreto y tratar prcticamente de ajustar un conjunto de
documentos recientes a distintas clasificaciones.
Los encabezamientos de materia utilizados tradicionalmente en las
bibliotecas como descriptores del contenido de los documentos tienen tambin
una serie de problemas a la hora de la recuperacin. Concebidos para la
elaboracin de catlogos impresos, los mayores inconvenientes en el uso de
encabezamientos vienen dados por el exceso de precoordinacin de los
trminos y las normas de presentacin en los ndices. Dichas normas,
excesivamente complejas, da como resultado una falta de criterios homogneos
a la hora de escoger los trminos, convirtiendo este lenguaje en un sistema
excesivamente encorsetado y rgido que impide las combinaciones en la
recuperacin.
El tesauro es el vocabulario controlado ms eficaz para el anlisis y la
recuperacin de la documentacin especializada. Sus ventajas fundamentales
son: la especificidad de sus trminos y sus posibilidades combinatorias en la
recuperacin. En el encontraremos los trminos preferentes de uso, as como
los sinnimos rechazados; conceptos ms amplios o ms especficos de la
misma familia semntica y aquellos otros que deben acompaarles en la

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 44


ADMINISTRACIN DE BASE DE DATOS

indizacin por sus relaciones contextuales. Estos ltimos dan un valor aadido
a los tesauros frente a otro tipo de vocabularios de indizacin ya que permiten
abordar el anlisis del texto desde mltiples puntos de vista, incluso desde el
plano contextual de las asociaciones de ideas que cobran sentido dentro de una
disciplina o investigacin.
Las listas de autoridades o de identificadores son vocabularios alfabticos
independientes que permiten normalizar trminos tales como nombres propios
de personas, instituciones, ttulos de obras, nombres geogrficos o cualquier
otro nombre necesario en la indizacin y que por mltiples razones no es
posible incluir en el tesauro. No olvidemos que segn la especialidad de la base
de datos, necesitaremos diferentes campos complementarios de contenido.

o METODOLOGA DE INDIZACIN.

Descripcin del documento.


La primera fase de la indizacin implica la descripcin fsica o anlisis formal de
los documentos. Se utiliza un lenguaje controlado. Mientras en la catalogacin de
bibliotecas se utilizan las normas ISBD o ISSD, en las bases de datos
especializadas el panorama es muy heterogneo, mediatizado por el diseo de las
bases de datos. Sin embargo, los campos descriptivos fundamentales debern ser
todos aquellos necesarios para la identificacin y obtencin del documento.

Campos generales para todo tipo de documento.


Nmero de registro.
El proceso de recuperacin se lleva a cabo mediante consultas a la base de
datos donde se almacena la informacin estructurada, mediante un lenguaje de
interrogacin adecuado. Es necesario tener en cuenta los elementos clave que
permiten hacer la bsqueda, determinando un mayor grado de pertinencia y
precisin, como son: los ndices, palabras clave, tesauros y los fenmenos que
se pueden dar en el proceso como son el ruido y silencio documental. Uno de
los problemas que surgen en la bsqueda de informacin es si lo que
recuperamos es "mucho o poco" es decir, dependiendo del tipo de bsqueda se
pueden recuperar multitud de documentos o simplemente un nmero muy
reducido. A este fenmeno se denomina Silencio o Ruido documental.

Silencio documental: Son aquellos documentos almacenados en la base de


datos pero que no han sido recuperados, debido a que la estrategia de
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 45
ADMINISTRACIN DE BASE DE DATOS

bsqueda ha sido demasiado especfica o que las palabras clave utilizadas


no son las adecuadas para definir la bsqueda.
Ruido documental: Son aquellos documentos recuperados por el sistema
pero que no son relevantes. Esto suele ocurrir cuando la estrategia de
bsqueda se ha definido demasiado genrica.

Concepto de sistema de recuperacin de informacin.


Proceso donde se accede a una informacin previamente almacenada, mediante
herramientas informticas que permiten establecer ecuaciones de bsqueda
especficas. Dicha informacin ha debido de ser estructura previamente a su
almacenamiento.
Componentes esenciales.

Documentos estructurados. Es necesario establecer un proceso donde se


establezcan herramientas de indizacin y control terminolgico.
Bases de datos donde estn almacenados los documentos. Definir lenguajes de
interrogacin y operadores que soportar la base de datos y, establecer que
tipo de ecuaciones sern permitidas.

DEFINIR LAS TCNICAS DE RECUPERACIN.

Sistemas de recuperacin de lgica difusa.


Esta tcnica permite establecer consultas con frases normales, de forma que la
mquina al realizar la bsqueda elimina signos de puntuacin, artculos,
conjunciones, plurales, tiempos verbales, palabras comunes (que suelen aparecer
en todos los documentos), dejando slo aquellas palabras que el sistema
considera relevantes. La recuperacin se basa en proposiciones lgicas con
valores de verdadero y falso, teniendo en cuenta la localizacin de la palabra en el
documento

Tcnicas de ponderacin de trminos.


Es comn que unos criterios en la bsqueda tengan ms valor que otros, por tanto
la ponderacin pretende darle un valor adecuado a la bsqueda dependiendo de
los intereses del usuario. Los documentos recuperados se encuentran en funcin
del valor obtenido en la ponderacin. El valor depende de los trminos pertinentes

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 46


ADMINISTRACIN DE BASE DE DATOS

que contengan el documento y la frecuencia con que se repita. De forma que, el


documento ms pertinente de bsqueda sera aquel que tenga representado todos
los trminos de bsqueda y adems el que ms valor tenga repetidos ms veces,
independientemente de donde se localice en el documento.

Tcnica de clustering.
Es un modelo probabilstico que permite las frecuencias de los trminos de
bsqueda en los documentos recuperados. Se atribuyen unos valores (pesos) que
actan como agentes para agrupar los documentos por orden de importancia,
mediante algoritmos ranking.

Algoritmos utilizados para realizar la categorizacin (cluster):


Algoritmo K-means
COBWEB
Algoritmo EM

Tcnicas de retroalimentacin por relevancia.


Esta tcnica pretende obtener el mayor nmero de documentos relevantes tras
establecer varias estrategias de bsqueda. La idea es que, tras determinar unos
criterios de bsqueda y observar los documentos recuperados se vuelva a repetir
nuevamente la consulta pero esta vez con los elementos interesantes,
seleccionados de los documentos primeramente recuperados.

Algoritmo Gentico: es el que se ha utilizado para llevar a cabo este tipo de


tcnicas de recuperacin http://www.pmsi.fr/gainits.htm

Tcnicas de stemming.
Morfolgicamente las palabras estn estructuradas en prefijos, sufijos y la raz. La
tcnica de Stemming lo que pretende es eliminar las posibles confusiones
semnticas que se puedan dar en la bsqueda de un concepto, para ello trunca la
palabra y busca solo por la raz.
Algoritmos utilizados para desechar prefijos y sufijos:
Paice/Husk
S-stemmer / n-gramas

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 47


ADMINISTRACIN DE BASE DE DATOS

Tcnicas lingsticas.
Pretenden acotar de una manera eficaz los documentos relevantes. Por esta
razn, esta tcnica lo consigue mediante una correcta indizacin en el proceso de
tratamiento de los documentos con ayuda de ndices, tesauros, etc.; evitando las
ambigedades lxicas y semnticas a la hora de establecer las consultas.

Internet.

o Revistas Electrnicas.
Buscadores. Los buscadores son herramientas que permiten localizar y
recuperar la informacin almacenada en internet. El funcionamiento es
parecido a las bases de datos, almacenan las pginas con determinadas
caractersticas (metadatos) y que posteriormente tras utilizar unas palabras
clave emiten un listado de las ms relevantes.

o Buscadores Generales.
Recomendados para las bsquedas en las que el usuario no sabe mucho
sobre el tema en concreto, Directorio y motores especializados.

o Metabuscadores.
Son buscadores, con la cualidad de que no slo buscan en una nica base
de datos, sino que al introducir los conceptos de bsqueda hace el barrido en
distintas bases de datos, de esta forma la amplitud de resultados es mayor.

o Buscadores selectivos.
Utilizan una base de datos especializada en una materia.

o Agentes Inteligentes.
Los agentes inteligentes son herramientas que permiten localizar informacin
de forma automtica, slo necesita que se le definan un perfil de bsqueda y
donde debe lanzarla (bases de datos, sitios web, etc.) y, automticamente va
presentando un informe sobre la nueva informacin que va surgiendo.

Lenguajes de indizacin y control terminolgico.

o ndices.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 48
ADMINISTRACIN DE BASE DE DATOS

Listado de trminos normalizados que representan el contenido de un


recurso. Algunos tipos son:
ndice de materias: trminos ordenados segn las materias que trata la
base de datos, el buscador, etc.
ndice alfabtico: listado de trminos alfabticamente
ndice KWIC: Tipo de ndice permutado en el que el contenido temtico de
una obra se representa mediante palabras clave de su ttulo o de otra
fuente de informacin del documento.
ndice KWOC: Tipo de ndice permutado que vara en su presentacin
respecto al ndice KWIC, en que las palabras clave aparecen como un
encabezamiento en lnea separada. Bajo cada encabezamiento aparece la
totalidad de los ttulos, completos o truncados, que contienen la palabra
clave de que se trata.

o Palabras clave (Keywords).


Trmino significativo en lenguaje natural que representa el contenido del
documento.

En la bsqueda de informacin esta opcin es esencial ya que nos permite


acotar y precisar informacin. El problema recae en definir la palabra exacta
que representa el contenido, por ello es conveniente utilizar especificadores.
Por ejemplo si utilizamos la palabra flor en cualquier buscador podemos estar
buscando, la floristera ms cercana, una imagen de flores o un estudio
sobre las flores en las distintas estaciones del ao.
Meta Keywords. La mayora de los buscadores utilizan para localizar los
recursos, las palabras clave de cada pagina web. Por esta razn es
esencial que cada pagina tenga una etiqueta donde se incluyan las
palabras clave que la definen, tambin es importante la definicin exacta
de cada una de ella pues es a partir de estas los buscadores localizan o
no un recurso.
Tesauros Es un listado terminolgico controlado sobre un rea o mbito
de conocimiento que mantiene entre s relaciones semnticas y genricas.
Su principal caracterstica es que los trminos estn ordenados
jerrquicamente, permitiendo la precisin terminolgica en la bsqueda de
informacin

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 49


ADMINISTRACIN DE BASE DE DATOS

o Componentes:
Descriptores admitidos o preferentes: son aquellos trminos normalizados
(donde han sufrido un proceso de expurgo denegando plurales, evitando
sinnimos, etc.) que el tesauro los considera aptos para asignarlos a un
documento y que posteriormente facilite la recuperacin.
Descriptores no admitidos: son aquellos que aun estando normalizados no
se consideran adecuado para utilizarlos (suelen ser sinnimos, trminos
no utilizados en el campo de actuacin, etc.).

o Relaciones:
Jerrquicas: indican cuando un trmino es ms especfico que otro.
Asociativas: Indican que los trminos guardan alguna relacin.
Sinnimos: Indican que dos trminos son sinnimos y cual de ellos se
utiliza como admitido.

Lenguajes de interrogacin y ecuaciones de bsqueda.

o Lenguajes.
Cada sistema de recuperacin tiene su propio lenguaje de interrogacin, que
es el que le permite "hablar" en el mismo lenguaje que la base de datos. Este
lenguaje como cualquier otro tiene sus propia sintaxis que especifica las
caractersticas especiales de la bsqueda determinando en cada momento la
relacin que tienen los elementos de bsqueda. Las reglas gramaticales en
el lenguaje de interrogacin son los operadores.

Cmo plantear una estrategia de bsqueda.

No existen pautas que nos indiquen como hacer con exactitud todas las
bsqueda debido a que cada consulta es distinta. Por eso es conveniente
definir un procedimiento bsico de trabajo:

Planteando el tema desde distintos puntos de vista.


Determinando que se sabe del tema.
Formulando nuestra bsqueda mediante:
La seleccin de palabras clave que representen lo que busco (utilizar
diccionarios, sinnimos, tesauros, ontologas, etc.).
La traduccin de las palabras importantes a otros idiomas (ingls).

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 50


ADMINISTRACIN DE BASE DE DATOS

Seleccionando las herramientas de bsqueda (ndices, motores,


metabuscadores). Se recomienda usar distintas herramientas a la vez.

Aplicando las palabras clave en las herramientas de bsqueda


seleccionadas.

Ecuaciones simples.

Ecuaciones Compuestas.

Operadores.

Lgicos o Bolanos: Permiten convertir las palabras de la consulta en


conjuntos matemticos, y operar con las palabras como si fuesen
conjuntos. Las operaciones bsicas son la suma (OR), la resta (NOT) y el
producto (AND).

Y lgico (AND).

NO lgico (NOT).

O lgico (OR).

Posicionales: Permiten especificar la posicin de las palabras dentro del


documento.

Cerca (NEAR).

Junto (ADJ).

Frases.

Existencia: Indica cuando se requiere la presencia o ausencia de una


palabra en los documentos recuperados.

Presencia / Ausencia

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 51


ADMINISTRACIN DE BASE DE DATOS

Ausencia.

Exactitud: Este tipo de operador se utiliza cuando la consulta que se


pretende es menos especfica ya que, permite la posibilidad de cortar una
palabra de bsqueda a su raz.

Proximidad.

Por campos.

o CCL (Common Command Language).


Permite restringir las bsquedas mediante calificadores -es decir, la
bsqueda se puede llevar a cabo en campos especficos como Autor, ttulo,
etc.- es muy utilizado en bases de datos. La caracterstica de este sistema es
que puede mezclar los dos lenguajes, calificadores y operadores lgicos,
obteniendo de esta forma una bsqueda muy exhaustiva.

Navegacin versus Recuperacin de Informacin.

o Concepto.
La navegacin es el programa que permite consultar y obtener informacin
mediante los sistemas hipertexto.

o Diferencias. La diferencia esencial entre ambos conceptos, radica en la


forma de obtener informacin; mientras que en la recuperacin de
informacin se obtiene de forma lineal, la navegacin tiene la capacidad de
obtener informacin a travs del hipertexto. Esto quiere decir que, la
adquisicin de conocimiento se realiza paulatinamente y dependiendo del
inters del usuario se profundiza a travs de los nodos de informacin en una
materia u otra.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 52


ADMINISTRACIN DE BASE DE DATOS

Directorios versus Motores de bsqueda.

Motores de bsqueda Vs. Directorios

La informacin se actualiza mediante la mano


La informacin se actualiza
humana que se da de alta en el directorio
automticamente por la red.
cuando crea un lugar web.

No almacenan todos los contenidos web,


Recogen toda la informacin almacenada
solamente los campos ms relevantes como
en la pgina.
son el ttulo, las palabras clave, etc.

Almacenan la informacin mediante una Almacenan informacin mediante directorios,


base de datos propia. clasificados en categoras.

La bsqueda se realiza en la base de La bsqueda se realiza jerrquicamente segn


datos mediante la ecuacin de bsqueda. las categoras establecidas.

La presentacin de los resultados se La presentacin de los resultados se lleva a


establece por orden de relevancia segn cabo mediante un listado de todos los
unos criterios establecidos en la ecuacin documentos correspondientes en la categora,
de bsqueda. sin ningn criterio de presentacin.

Apropiados para localizar informacin Apropiados para localizar informacin general


especfica. sobre un tema.

o Metadatos.
Los metadatos en la navegacin y recuperacin de informacin se utilizan
para detectar informacin relevante de una forma rpida y eficaz. Las
etiquetas describen el contenido del recurso web, que posteriormente utilizan
las herramientas de bsqueda para localizar y acceder al recurso.
Principalmente son las etiquetas de palabra clave y ttulo las que dan paso a
localizar el documento.

Tcnicas de recuperacin de informacin.

o Sistemas de recuperacin de lgica difusa.


Esta tcnica permite establecer consultas con frases normales, de forma que
la mquina al realizar la bsqueda elimina signos de puntuacin, artculos,
conjunciones, plurales, tiempos verbales, palabras comunes (que suelen
aparecer en todos los documentos), dejando slo aquellas palabras que el

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 53


ADMINISTRACIN DE BASE DE DATOS

sistema considera relevantes. La recuperacin se basa en proposiciones


lgicas con valores de verdadero y falso, teniendo en cuenta la localizacin
de la palabra en el documento.

o Tcnicas de ponderacin de trminos.


Es comn que unos criterios en la bsqueda tenga ms valor que otros, por
tanto la ponderacin pretende darle un valor adecuado a la bsqueda
dependiendo de los intereses del usuario. Los documentos recuperados se
encuentran en funcin del valor obtenido en la ponderacin. El valor depende
de los trminos pertinentes que contengan el documento y la frecuencia con
que se repita. De forma que, el documento ms pertinente de bsqueda sera
aquel que tenga representado todos los trminos de bsqueda y adems el
que ms valor tenga repetidos ms veces, independientemente de donde se
localice en el documento.

o Tcnica de clustering.
Es un modelo probabilstico que permite las frecuencias de los trminos de
bsqueda en los documentos recuperados. Se atribuyen unos valores
(pesos) que actan como agentes para agrupar los documentos por orden de
importancia, mediante algoritmos ranking.

Algoritmos utilizados para realizar la categorizacin (cluster):

Algoritmo K-means.
COBWEB.
Algoritmo EM.

o Tcnicas de retroalimentacin por relevancia.


Esta tcnica pretende obtener el mayor nmero de documentos relevantes
tras establecer varias estrategias de bsqueda. La idea es que, tras
determinar unos criterios de bsqueda y observar los documentos
recuperados se vuelva a repetir nuevamente la consulta pero esta vez con
los elementos interesantes, seleccionados de los documentos primeramente
recuperados.

Algoritmo Gentico: es el que se ha utilizado para llevar a cabo este tipo de


tcnicas de recuperacin http://www.pmsi.fr/gainits.htm

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 54


ADMINISTRACIN DE BASE DE DATOS

o Tcnicas de stemming.
Morfolgicamente las palabras estn estructuradas en prefijos, sufijos y la
raz. La tcnica de Stemming lo que pretende es eliminar las posibles
confusiones semnticas que se puedan dar en la bsqueda de un concepto,
para ello trunca la palabra y busca solo por la raz.

Algoritmos utilizados para desechar prefijos y sufijos:

Paice/Husk
S-stemmer / n-gramas
Tcnicas lingsticas

Pretenden acotar de una manera eficaz los documentos relevantes. Por esta
razn, esta tcnica lo consigue mediante una correcta indizacin en el
proceso de tratamiento de los documentos con ayuda de ndices, tesauros,
etc.; evitando las ambigedades lxicas y semnticas a la hora de establecer
las consultas.

Calidad de la recuperacin.

A continuacin se presentan unos criterios bsicos para que la recuperacin


llevada a cabo sea de calidad.

o Consistencia: Capacidad que tiene un sistema de bsqueda en coordinar su


sistema de clasificacin con el lenguaje de bsqueda, permitiendo de esta
manera establecer ecuaciones de bsqueda sobre trminos admitidos.
o Exhaustividad: Es la cualidad de un sistema de informacin para recuperar la
totalidad de los documentos relevantes que posee una coleccin, conforme a
los requerimientos establecidos en la estrategia de bsqueda.
o Tasa de acierto: coeficiente que surge de dividir el nmero de documentos
relevantes recuperados, sobre el nmero total de documentos relevantes de
la coleccin.
o Relevancia: Caracterstica de un documento recuperado que cumple con la
necesidades de informacin.
o Tasa de relevancia: coeficiente que surge de dividir el nmero de
documentos relevantes recuperados, sobre el nmero total de documentos
recuperados.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 55


ADMINISTRACIN DE BASE DE DATOS

o Pertinencia: Es la cualidad que tiene el documento recuperado de adaptarse


a las necesidades de informacin.
o Tasa de pertinencia: coeficiente que surge de dividir el nmero de
documentos pertinentes recuperados, sobre el nmero total de documentos
recuperados.
o Precisin: es la capacidad que tiene el sistema de bsqueda en coordinar la
ecuacin con los documentos ms relevantes. De otra forma son aquellos
documentos relevantes recuperados.
o Tasa de precisin: coeficiente que surge de dividir el nmero de documentos
relevantes recuperados, sobre el nmero total de documentos de la
coleccin.

REALIZAR UNA EVALUACIN DE RIESGOS DE LA BD.

Incremento de la dependencia del servicio informtico debido a la


concentracin de datos.
Mayores posibilidades de acceso en la figura del administrador de la base de
datos.
Incompatibilidades entre sistemas de seguridad de acceso propios del SGBD y
el general de la instalacin.
Mayor impacto de los errores de datos o programas que en los sistemas
tradicionales.
Ruptura de enlaces o cadena por fallos del software o de los programas de
aplicacin.
Mayor impacto de acceso no autorizado al diccionario de la base de datos que a
un fichero tradicional.
Mayor dependencia del nivel de conocimientos tcnicos del personal que realice
tareas relacionadas con el software de base de datos (administradores,
programadores etc.).
Riesgo de que sean utilizados comercialmente para beneficio ajeno y encima
seamos molestados con publicidad a nuestro nombre.
Riesgo de uso delictivo para estafas bancarias, suplantacin de identidad,
chantaje, secuestro por mafias.
Riesgo de que sean utilizados en nuestra contra por la polica o servicios de
inteligencia que nunca tendrn suficiente control democrtico y riesgo de su
utilizacin por un futuro gobierno antidemocrtico.
Riesgos de Integridad:
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 56
ADMINISTRACIN DE BASE DE DATOS

Este tipo abarca todos los riesgos asociados con la autorizacin, completitud y
exactitud de la entrada, procesamiento y reportes de las aplicaciones utilizadas
en una organizacin. Estos riesgos aplican en cada aspecto de un sistema de
soporte de procesamiento de negocio y estn presentes en mltiples lugares, y
en mltiples momentos en todas las partes de las aplicaciones; no obstante
estos riesgos se manifiestan en los siguientes componentes de un sistema:
Interface del usuario: Los riesgos en esta rea generalmente se relacionan con
las restricciones, sobre las individualidades de una organizacin y su
autorizacin de ejecutar funciones negocio/sistema; teniendo en cuenta sus
necesidades de trabajo y una razonable segregacin de obligaciones

Metodologa para la Gestin de Riesgos en Sistemas Gestores de Bases de


Datos.
Seguridad de la Informacin.
Requerimientos de Seguridad.
Evaluacin de Riesgos.
Riesgos y Factores de Riesgo.
Seleccin e implantacin de Controles.
La Metodologa.
Resultados.
Conclusiones.
Referencia.

Seguridad de la Informacin.
La informacin es un recurso que, como el resto de los dems activos
comerciales, tiene valor para una organizacin y por consiguiente debe ser
debidamente protegida.

Caractersticas a cumplir:
- Confidencialidad: se garantiza que la informacin sea accesible slo a
aquellas personas autorizadas a tener acceso a ella.
- Integridad: se salvaguarda la exactitud y totalidad de la informacin y los
mtodos de procesamiento.
- Disponibilidad: se garantiza que los usuarios autorizados tengan acceso a la
informacin y a los recursos relacionados con ella toda vez que se requiera.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 57


ADMINISTRACIN DE BASE DE DATOS

Requerimientos de Seguridad.
La gerencia de TIC, debe identificar sus requerimientos de seguridad, para ello
cuenta con tres insumos:
Evaluacin de riesgos
Requisitos legales
Requisitos para el procesamiento de la informacin

Evaluacin de Riesgos.
Proceso, en que se identifican las amenazas a los activos, se evalan las
vulnerabilidades y probabilidades de ocurrencia, y adems se estima el impacto
potencial de una falla de seguridad permite establecer las prioridades para la
administracin de riesgos logrando de esta forma la identificacin, evaluacin,
seleccin y ejecucin de medidas para la tratar los riesgos.

Nos permite visualizar nuestro nivel de madurez y la posible brecha

Riesgos y Factores de Riesgo.


Logramos catalogar los riesgos y factores de riesgo.
Considerando eventos, incidente o situaciones que podra ocurrir en un lugar
especfico en un intervalo de tiempo particular.
Y su manifestacin, u observancia indica la presencia de un riesgo, lo provoca o
modifica.

Seleccin e implantacin de controles.


Una vez identificados los requerimientos de seguridad y los factores de riesgos se
deben seleccionar e implementarse controles para garantizar que los riesgos sean
reducidos a un nivel aceptable.
Los controles deben seleccionarse teniendo en cuenta el costo de implementacin
en relacin con los riesgos a reducir

La Metodologa de gestin de riesgos de TIC.


Consiste en
- Identificar.
- Analizar.
- Evaluar.
- Administrar.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 58


ADMINISTRACIN DE BASE DE DATOS

La estructura de riesgos del SGBD.

La Metodologa.
La aplicacin de la metodologa, requiere:
1. La documentacin de los procesos que se ejecutan sobre el sistema gestor de
base de datos.
2. Identificar factores de riesgos en estos procesos.
3. Determinar los controles o ausencia de controles actuales que se aplica.
4. Establecer las relaciones de impacto.

La relacin de impacto, es un valor porcentual estimado, que indica el peso o


impacto entre dos entidades, puede considerarse una medida de la materializacin
del riesgo como consecuencia de una omisin, falla parcial o completa de un
proceso.

La relacin de impacto.

Las relaciones de impacto se identifican entre

Objetivo - riesgo

Riesgo procesos

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 59


ADMINISTRACIN DE BASE DE DATOS

Riesgos - procesos, procesos controles.

Riesgos - procesos, procesos factores y factores controles.

Revisin / Informe / Divulgacin.


Deber realizase evaluaciones peridicas de la efectividad de los controles
implementados, la revisin consiste en verificar la aplicacin, documentacin y
evidencia de que el controles se utilizan, si se detecta una ausencia o falta de
aplicacin del control se dar una calificacin (Ca) de 0 si por el contrario se
evidencia la aplicacin se otorga una calificacin de 1.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 60


ADMINISTRACIN DE BASE DE DATOS

Estructura de Riesgos.

Nivel Nivel
Riesgo Descripcion Probabilidad Impacto
Estimado Aceptado
R1 Integridad 2 3 6 2
R2 Disponibilidad 4 2 8 2
R3 Confidencialidad 2 4 8 1

Probabilidad de ocurrencia.
Impacto sobre el objetivo.
Nivel estimado de riesgo.
Nivel acepta de riesgo.

Procesos comunes en el Sistema Gestor de Base de Datos clasificados por


reas de seguridad

rea Descripcin Proceso Descripcin


P1 Creacin de base de datos y esquema
de datos.
Gestion de P2 Gestin de esquema de datos.

01
componentes del P3 Gestin de componentes de memoria.
sistema gestor de P4 Gestin de grupo de archivos.
base de datos P5 Gestin de ndices.
P6 Gestin de registro de transacciones.

P7 Gestin de usuarios.
P8 Gestin de perfiles.
Gestion de
seguridad lgica del P9 Gestin de roles y privilegios.
02
sistema de gestor P10 Gestin deseguridad de transaccin.
de base de datos
P11 Gestin derepaldo de datos.

P12 Gestion de acceso a servidores.


P13 Gestion de almacenamiento de
Gestion de
respaldo.
seguridad fsica del
03 P14 Gestion de dispositivos de
sistema de gestor
contingencias.
de base de datos
P15 Gestion de Base de datos alternas.
P16 Gestion de vulnerabilidades.

P16 Gestin de Vulnerabilidades

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 61


ADMINISTRACIN DE BASE DE DATOS

Controles de procesos por reas.


Proceso Control Descripcin
P1 C1 Control Creacion Base de datos y esquema
P2 C2 Control Gestion de esquema de datos
P3 C3 Control Gestion de componentes de memoria
P4 C4 Control Gestion de Grupo de archivos
P5 C5 Control Gestion de ndices
P6 C6 Control Gestion de registro de transacciones
P7 C7 Control Gestion de usuarios
P8 C8 Control Gestion de perfiles
P9 C9 Control Gestion de roles y privilegios
P10 C10 Control Gestion de seguridad de transaccin
P11 C11 Control Gestion de respaldo de datos
P12 C12 Control Gestion a acceso de servidores
P13 C13 Control Gestion de dispositivos de contingencia
P14 C14 Control Gestion de base de datos alterna
P15 C15 Control Gestion de vulnerabilidades

P15 C 15 Control para la Gestin de Vulnerabilidades.

Variables.
Im: Impacto del riesgo sobre el objetivo del rea de TIC.
Pr: Probabilidad de materializacin del riesgo.
Re: Riesgo estimado.
Ra: Riesgo aceptado.
Rr: Riesgo residual.
Rg: Riesgo gestionable o por administrar.
Cc: Cobertura de Control.
Ca: Calificacin del control en la revisin.
Ir: Relacin de impacto del riesgo en el objetivo.
Ip: Relacin de impacto del proceso en el riesgo.
If: Relacin de impacto del factor en el proceso.
Ic: Relacin de impacto del control sobre el factor o proceso.
Ec: Efectividad de la cobertura del control.
Ca: Calificacin del control

Frmulas metodolgicas.
1. Re = (Ir * Pr) Riesgo estimado
2. Cc = Re * Ip * If * Ic Cobertura del control
3. Rr = Re Cc Riesgo residual

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 62


ADMINISTRACIN DE BASE DE DATOS

4. Rg = Rr - Ra Riesgo gestin
En general:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 63


ADMINISTRACIN DE BASE DE DATOS

02
TAREA 02: UTILIZAR CLAUSULAS AVANZADAS Y OPTIMIZAR
LAS CONSULTAS A UNA BASE DE DATOS.

OPERACIONES
En esta tarea trataremos las siguientes operaciones:
Insertar en mltiples filas en una tabla.
Utilizar alias en una consulta sql.
Aplicar la sentencia sql join para varias tablas.
Convertir tipos de datos al momento de ejecutar la consulta.
Aplicar instrucciones avanzadas en las consultas a la bd.
Crear funciones en una base de datos.

Equipos y Materiales:

Computadora con microprocesadores core 2 Duo o de mayor capacidad.


Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.

Orden de Ejecucin:

Insertar en mltiples filas en una tabla.


Utilizar alias en una consulta sql.
Aplicar la sentencia sql join para varias tablas.
Convertir tipos de datos al momento de ejecutar la consulta.
Aplicar instrucciones avanzadas en las consultas a la bd.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 64


ADMINISTRACIN DE BASE DE DATOS

OPERACIONES
Operacin:
2.1. INSERTAR EN MLTIPLES FILAS EN UNA TABLA.

Los ejemplos de esta seccin demuestran mtodos para insertar filas de una tabla
en otra.
NOTA:
Las tablas usadas en estos ejemplos se encuentran en la parte de teora.

Insercin de nuevas filas.

La forma ms directa de insertar una fila nueva en una tabla es mediante una
sentencia INSERT. En la forma ms simple de esta sentencia debemos indicar la
tabla a la que queremos aadir filas, y los valores de cada columna. Las columnas
de tipo cadena o fechas deben estar entre comillas sencillas o dobles, para las
columnas numricas esto no es imprescindible, aunque tambin pueden estar
entrecomilladas.

mysql> INSERT INTO gente VALUES ('Fulano','1974-04-12');


Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO gente VALUES ('Mengano','1978-06-15');


Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO gente VALUES


-> ('Tulano','2000-12-02'),
-> ('Pegano','1993-02-10');
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM gente;


+---------+------------+
| nombre | fecha |
+---------+------------+
| Fulano | 1974-04-12 |
| Mengano | 1978-06-15 |
| Tulano | 2000-12-02 |

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 65


ADMINISTRACIN DE BASE DE DATOS

| Pegano | 1993-02-10 |
+---------+------------+
4 rows in set (0.08 sec)

mysql>
Si no necesitamos asignar un valor concreto para alguna columna, podemos
asignarle el valor por defecto indicado para esa columna cuando se cre la tabla,
usando la palabra DEFAULT:
mysql> INSERT INTO ciudad2 VALUES ('Perillo', DEFAULT);
Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM ciudad2;


+---------+-----------+
| nombre | poblacion |
+---------+-----------+
| Perillo | 5000 |
+---------+-----------+
1 row in set (0.02 sec)
mysql>

En este caso, como habamos definido un valor por defecto para poblacin de
5000, se asignar ese valor para la fila correspondiente a 'Perillo'.

Otra opcin consiste en indicar una lista de columnas para las que se van a
suministrar valores. A las columnas que no se nombren en esa lista se les asigna
el valor por defecto. Este sistema, adems, permite usar cualquier orden en las
columnas, con la ventaja, con respecto a la anterior forma, de que no necesitamos
conocer el orden de las columnas en la tabla para poder insertar datos:

mysql> INSERT INTO ciudad5 (poblacion,nombre) VALUES


-> (7000000, 'Madrid'),
-> (9000000, 'Pars'),
-> (3500000, 'Berln');
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM ciudad5;


+-------+--------+-----------+

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 66


ADMINISTRACIN DE BASE DE DATOS

| clave | nombre | poblacion |


+-------+--------+-----------+
| 1 | Madrid | 7000000 |
| 2 | Pars | 9000000 |
| 3 | Berln | 3500000 |
+-------+--------+-----------+
3 rows in set (0.03 sec)

mysql>

Cuando creamos la tabla "ciudad5" definimos tres columnas: 'clave', 'nombre' y


'poblacion' (por ese orden). Ahora hemos insertado tres filas, en las que hemos
omitido la clave, y hemos alterado el orden de 'nombre' y 'poblacion'. El valor de la
'clave' se calcula automticamente, ya que lo hemos definido como auto-
incrementado.

Existe otra sintaxis alternativa, que consiste en indicar el valor para cada columna:

mysql> INSERT INTO ciudad5


-> SET nombre='Roma', poblacion=8000000;
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM ciudad5;


+-------+--------+-----------+
| clave | nombre | poblacion |
+-------+--------+-----------+
| 1 | Madrid | 7000000 |
| 2 | Pars | 9000000 |
| 3 | Berln | 3500000 |
| 4 | Roma | 8000000 |
+-------+--------+-----------+
4 rows in set (0.03 sec)

mysql>

Una vez ms, a las columnas para las que no indiquemos valores se les asignarn
sus valores por defecto. Tambin podemos hacer esto usando el valor DEFAULT.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 67


ADMINISTRACIN DE BASE DE DATOS

Para las sintaxis que lo permiten, podemos observar que cuando se inserta ms
de una fila en una nica sentencia, obtenemos un mensaje desde MySQL que
indica el nmero de filas afectadas, el nmero de filas duplicadas y el nmero de
avisos.

Para que una fila se considere duplicada debe tener el mismo valor que una fila
existente para una clave principal o para una clave nica. En tablas en las que no
exista clave primaria ni ndices de clave nica no tiene sentido hablar de filas
duplicadas. Es ms, en esas tablas es perfectamente posible que existan filas con
los mismos valores para todas las columnas.

Por ejemplo, en mitabla5 tenemos una clave nica sobre la columna 'nombre':

mysql> INSERT INTO mitabla5 (id, nombre) VALUES


-> (1, 'Carlos'),
-> (2, 'Felipe'),
-> (3, 'Antonio'),
-> (4, 'Carlos'),
-> (5, 'Juan');
ERROR 1062 (23000): Duplicate entry 'Carlos' for key 1
mysql>

Si intentamos insertar dos filas con el mismo valor de la clave nica se produce un
error y la sentencia no se ejecuta. Pero existe una opcin que podemos usar para
los casos de claves duplicadas: ON DUPLICATE KEY UPDATE. En este caso
podemos indicar a MySQL qu debe hacer si se intenta insertar una fila que ya
existe en la tabla. Las opciones son limitadas: no podemos insertar la nueva fila,
sino nicamente modificar la que ya existe. Por ejemplo, en la tabla 'ciudad3'
podemos usar el ltimo valor de poblacin en caso de repeticin:
mysql> INSERT INTO ciudad3 (nombre, poblacion) VALUES
-> ('Madrid', 7000000);
Query OK, 1 rows affected (0.02 sec)

mysql> INSERT INTO ciudad3 (nombre, poblacion) VALUES


-> ('Pars', 9000000),
-> ('Madrid', 7200000)
-> ON DUPLICATE KEY UPDATE poblacion=VALUES(poblacion);
Query OK, 3 rows affected (0.06 sec)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 68


ADMINISTRACIN DE BASE DE DATOS

Records: 2 Duplicates: 1 Warnings: 0

mysql> SELECT * FROM ciudad3;


+--------+-----------+
| nombre | poblacion |
+--------+-----------+
| Madrid | 7200000 |
| Pars | 9000000 |
+--------+-----------+
2 rows in set (0.00 sec)

mysql>

En este ejemplo, la segunda vez que intentamos insertar la fila correspondiente a


'Madrid' se usar el nuevo valor de poblacin. Si en lugar de VALUES(poblacion)
usamos poblacion el nuevo valor de poblacin se ignora. Tambin podemos usar
cualquier expresin:
mysql> INSERT INTO ciudad3 (nombre, poblacion) VALUES
-> ('Pars', 9100000)
-> ON DUPLICATE KEY UPDATE poblacion=poblacion;
Query OK, 2 rows affected (0.02 sec)

mysql> SELECT * FROM ciudad3;


+--------+-----------+
| nombre | poblacion |
+--------+-----------+
| Madrid | 7200000 |
| Pars | 9000000 |
+--------+-----------+
2 rows in set (0.00 sec)

mysql> INSERT INTO ciudad3 (nombre, poblacion) VALUES


-> ('Pars', 9100000)
-> ON DUPLICATE KEY UPDATE poblacion=0;
Query OK, 2 rows affected (0.01 sec)

mysql> SELECT * FROM ciudad3;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 69


ADMINISTRACIN DE BASE DE DATOS

+--------+-----------+
| nombre | poblacion |
+--------+-----------+
| Madrid | 7200000 |
| Pars | 0|
+--------+-----------+
2 rows in set (0.00 sec)

mysql>

Actualizar filas

Podemos modificar valores de las filas de una tabla usando la sentencia UPDATE.
En su forma ms simple, los cambios se aplican a todas las filas, y a las columnas
que especifiquemos.

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name

SET col_name1=expr1 [, col_name2=expr2 ...]

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]

Por ejemplo, podemos aumentar en un 10% la poblacin de todas las ciudades de


la tabla ciudad3 usando esta sentencia:

mysql> UPDATE ciudad3 SET poblacion=poblacion*1.10;

Query OK, 5 rows affected (0.15 sec)

Rows matched: 5 Changed: 5 Warnings: 0

mysql> SELECT * FROM ciudad3;

+---------+-----------+

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 70


ADMINISTRACIN DE BASE DE DATOS

| nombre | poblacion |

+---------+-----------+

| Berln | 6600000 |

| Londres | 11000000 |

| Madrid | 7920000 |

| Pars | 10120000 |

| Roma | 10450000 |

+---------+-----------+

5 rows in set (0.00 sec)

mysql>

Podemos, del mismo modo, actualizar el valor de ms de una columna,


separandolas en la seccin SET mediante comas:

mysql> UPDATE ciudad5 SET clave=clave+10, poblacion=poblacion*0.97;

Query OK, 4 rows affected (0.05 sec)

Rows matched: 4 Changed: 4 Warnings: 0

mysql> SELECT * FROM ciudad5;

+-------+--------+-----------+

| clave | nombre | poblacion |

+-------+--------+-----------+

11 | Madrid | 6790000 |

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 71


ADMINISTRACIN DE BASE DE DATOS

| 12 | Pars | 8730000 |

| 13 | Berln | 3395000 |

| 14 | Roma | 7760000 |

+-------+--------+-----------+

4 rows in set (0.00 sec)

mysql>

En este ejemplo hemos incrementado el valor de la columna 'clave' en 10 y


disminuido el de la columna 'poblacion' en un 3%, para todas las filas.

Pero no tenemos por qu actualizar todas las filas de la tabla. Podemos limitar el
nmero de filas afectadas de varias formas.

La primera es mediante la clusula WHERE. Usando esta clusula podemos


establecer una condicin. Slo las filas que cumplan esa condicin sern
actualizadas:

mysql> UPDATE ciudad5 SET poblacion=poblacion*1.03

-> WHERE nombre='Roma';

Query OK, 1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM ciudad5;

+-------+--------+-----------+

| clave | nombre | poblacion |

+-------+--------+-----------+

| 11 | Madrid | 6790000 |

| 12 | Pars | 8730000 |

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 72


ADMINISTRACIN DE BASE DE DATOS

| 13 | Berln | 3395000 |

| 14 | Roma | 7992800 |

+-------+--------+-----------+

4 rows in set (0.00 sec)

mysql>

En este caso slo hemos aumentado la poblacin de las ciudades cuyo nombre
sea 'Roma'. Las condiciones pueden ser ms complejas. Existen muchas
funciones y operadores que se pueden aplicar sobre cualquier tipo de columna, y
tambin podemos usar operadores booleanos como AND u OR. Veremos esto con
ms detalle en otros captulos.

Otra forma de limitar el nmero de filas afectadas es usar la clusula LIMIT. Esta
clusula permite especificar el nmero de filas a modificar:

mysql> UPDATE ciudad5 SET clave=clave-10 LIMIT 2;

Query OK, 2 rows affected (0.05 sec)

Rows matched: 2 Changed: 2 Warnings: 0

mysql> SELECT * FROM ciudad5;

+-------+--------+-----------+

| clave | nombre | poblacion |

+-------+--------+-----------+

| 1 | Madrid | 6790000 |

| 2 | Pars | 8730000 |

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 73


ADMINISTRACIN DE BASE DE DATOS

| 13 | Berln | 3395000 |

| 14 | Roma | 7992800 |

+-------+--------+-----------+

4 rows in set (0.00 sec)

mysql>

En este ejemplo hemos decrementado en 10 unidades la columna clave de las dos


primeras filas.

Esta clusula se puede combinar con WHERE, de modo que slo las 'n' primeras
filas que cumplan una determinada condicin se modifiquen.

Sin embargo esto no es lo habitual, ya que, si no existen claves primarias o


nicas, el orden de las filas es arbitrario, no tiene sentido seleccionarlas usando
slo la clusula LIMIT.

La clusula LIMIT se suele asociar a la clusula ORDER BY. Por ejemplo, si


queremos modificar la fila con la fecha ms antigua de la tabla 'gente', usaremos
esta sentencia:

mysql> UPDATE gente SET fecha="1985-04-12" ORDER BY fecha LIMIT 1;

Query OK, 1 row affected, 1 warning (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 1

mysql> SELECT * FROM gente;

+---------+------------+

| nombre | fecha |

+---------+------------+
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 74
ADMINISTRACIN DE BASE DE DATOS

| Fulano | 1985-04-12 |

| Mengano | 1978-06-15 |

| Tulano | 2000-12-02 |

| Pegano | 1993-02-10 |

+---------+------------+

4 rows in set (0.00 sec)

mysql>

Si queremos modificar la fila con la fecha ms reciente, usaremos el orden


inverso, es decir, el descendente:

mysql> UPDATE gente SET fecha="2001-12-02" ORDER BY fecha DESC LIMIT


1;

Query OK, 1 row affected (0.03 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM gente;

+---------+------------+

| nombre | fecha |

+---------+------------+

| Fulano | 1985-04-12 |

| Mengano | 1978-06-15 |

| Tulano | 2001-12-02 |

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 75


ADMINISTRACIN DE BASE DE DATOS

| Pegano | 1993-02-10 |

+---------+------------+

4 rows in set (0.00 sec)

mysql>

Cuando exista una clave primaria o nica, se usar ese orden por defecto, si no se
especifica una clusula ORDER BY.

Eliminar filas

Para eliminar filas se usa la sentencia DELETE. La sintaxis es muy parecida a la


de UPDATE:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM table_name

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]

La forma ms simple es no usar ninguna de las clusulas opcionales:

mysql> DELETE FROM ciudad3;

Query OK, 5 rows affected (0.05 sec)

mysql>

De este modo se eliminan todas las filas de la tabla.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 76


ADMINISTRACIN DE BASE DE DATOS

Pero es ms frecuente que slo queramos eliminar ciertas filas que cumplan
determinadas condiciones. La forma ms normal de hacer esto es usar la clusula
WHERE:

mysql> DELETE FROM ciudad5 WHERE clave=2;

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM ciudad5;

+-------+--------+-----------+

| clave | nombre | poblacion |

+-------+--------+-----------+

| 1 | Madrid | 6790000 |

| 13 | Berln | 3395000 |

| 14 | Roma | 7992800 |

+-------+--------+-----------+

3 rows in set (0.01 sec)

mysql>

Tambin podemos usar las clusulas LIMIT y ORDER BY del mismo modo que en
la sentencia UPDATE, por ejemplo, para eliminar las dos ciudades con ms
poblacin:

mysql> DELETE FROM ciudad5 ORDER BY poblacion DESC LIMIT 2;

Query OK, 2 rows affected (0.03 sec)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 77


ADMINISTRACIN DE BASE DE DATOS

mysql> SELECT * FROM ciudad5;

+-------+--------+-----------+

| clave | nombre | poblacion |

+-------+--------+-----------+

| 13 | Berln | 3395000 |

+-------+--------+-----------+

1 row in set (0.00 sec)

mysql>

Vaciar una tabla

Cuando queremos eliminar todas las filas de una tabla, vimos en el punto anterior
que podamos usar una sentencia DELETE sin condiciones. Sin embargo, existe
una sentencia alternativa, TRUNCATE, que realiza la misma tarea de una forma
mucho ms rpida.

La diferencia es que DELETE hace un borrado secuencial de la tabla, fila a fila.


Pero TRUNCATE borra la tabla y la vuelve a crear vaca, lo que es mucho ms
eficiente.

mysql> TRUNCATE ciudad5;

Query OK, 1 row affected (0.05 sec)

mysql>

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 78


ADMINISTRACIN DE BASE DE DATOS

UTILIZAR ALIAS EN UNA CONSULTA SQL.

Problema:

Trabajamos con la tabla "libros" de una librera.

Eliminamos la tabla, si existe:

drop table if exists libros;

Creamos la tabla:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(20) not null,
autor varchar(30),
editorial varchar(15),
precio decimal(5,2),
primary key (codigo)
);

Agregamos algunos registros:

insert into libros (titulo,autor,editorial,precio)


values('El aleph','Borges','Planeta',15);

insert into libros (titulo,autor,editorial,precio)


values('Martin Fierro','Jose Hernandez','Emece',22.20);

insert into libros (titulo,autor,editorial,precio)


values('Antologia poetica','Borges','Planeta',40);

insert into libros (titulo,autor,editorial,precio)


values('Aprenda PHP','Mario Molina','Emece',18.20);

insert into libros (titulo,autor,editorial,precio)


values('Cervantes y el quijote','Borges','Paidos',36.40);

insert into libros (titulo,autor,editorial,precio)


values('Manual de PHP', 'J.C. Paez', 'Paidos',30.80);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 79


ADMINISTRACIN DE BASE DE DATOS

insert into libros (titulo,autor,editorial,precio)


values('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00);

insert into libros (titulo,autor,editorial,precio)


values('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00);

insert into libros (titulo,autor,editorial,precio)


values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',null);

Colocamos un alias "Libros de Borges" para la expresin "count(*)" para tener una
salida ms clara:

select count(*) as 'Libros de Borges'


from libros
where autor like '%Borges%';

Colocamos el alias "Nombre de editorial" para el campo "editorial":

select editorial as 'Nombre de editorial'


from libros
group by 'Nombre de editorial';

Colocamos un alias para la cantidad calculada con "count()" y la empleamos en la


clusula "order by":

select editorial, count(*) as cantidad


from libros
group by editorial
order by cantidad;

Colocamos un alias para el clculo de la cantidad y lo utilizamos con "having":

select editorial, count(*) as cantidad


from libros
group by editorial
having cantidad>2;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 80


ADMINISTRACIN DE BASE DE DATOS

Otros problemas:

PERSONAS.

Cedula Nombre Primer_Apellido Segundo_Apellido Sexo Direccin Telefono Salario Cedula_Sup Cod_dep

71134534 Juan Mesa Uribe M Cra 25 22-1 2567532 1,600,000 23423445 3

23423445 Ana Mara Betancur Bermudez F Cra 45 11-13 3433444 1,700,000 43890231 2

12453535 Gloria Betancur Garces F Tr. 12 43-5 2756533 1,350,000 71134534 3

75556743 Pedro Ochoa Pelaez M Cll.6ta 14-45 2686885 1,700,000 43890231 1

43533322 Patricia Angel Guzmn F Cll. 45 23-1 2674563 1,350,000 71134534 3

78900456 Carlos Betancur Agudelo M Cir. 5 12-5 4445775 1,500,000 75556743 1

73456789 Mario Gmez Angel M Cr. 53 23-1 3456789 1,200,000 23423445 2

43890231 Claudia Gonzalez Beltran F Cll. 10 14-1 2660356 1,800,000 43890231 0

78900700 Fabio Solano Prez M Tr. 3 32-1 4345678 1,200,000 75556743 1

DEPENDIENTES.

Cedula Nombre_Dep Sexo FechaN Parentesco


78900456 Juanita F 12-Abr-95 Hija

78900456 Oscar M 15-Ene-89 Hijo

23423445 Hector M 23-Dic-67 Cnyuge

71134534 Mara F 05-Mar-60 Cnyuge

71134534 Gloria F 27-Nov-97 Hija

75556734 Jorge M 14-Mar-96 Hijo

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 81


ADMINISTRACIN DE BASE DE DATOS

DEPARTAMENTOS.

Codigo_Dep Nombre_Dep Cedula_Jefe


0 Gerencia 43890231
1 Teleinformatica 75556734
2 Desarrollo 23423445
3 Soporte Tcnico 71134534

PROYECTOS.

Numero_Proy Nombre Lugar Codigo_Dep


129001 Registro y Matrcula Bloque 21 2

139001 Red Lan Bloque 14 1

139002 Instalacin nuevo Switche Bloque 21 1

129002 Notas Campus 2


129003 Paso de aplicativos FOXPRO Bloque 21 2
A COBOL

149001 Inventario de HW y SW Minas 3

149002 Licenciamiento Campus 3


149003 Evaluacin de equipos PC's Bloque 18 3

OPERACIN SELECT
La sintaxis bsica de esta operacin es:

SELECT <lista de atributos>

FROM <lista de tablas>

WHERE <condiciones>
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 82
ADMINISTRACIN DE BASE DE DATOS

Ejemplos:

a. Select bsico. Se desea obtener la cdula y el nombre de todas las personas


que trabajan en la compaa.

SELECT cedula, nombre

FROM personas

Similar la operacin el lgebra relacional sera:

p cedula, nombre (PERSONAS)

Resultado/

Cedula Nombre

71134534 Juan

23423445 Ana Mara

12453535 Gloria

75556743 Pedro

43533322 Patricia

78900456 Carlos

b. Select con clausula WHERE. Se desea obtener toda la informacin de la


persona cuya cdula sea igual a 12453535.

SELECT nombre,primer_apellido,segundo_apellido,direccion,telfono

FROM personas

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 83


ADMINISTRACIN DE BASE DE DATOS

WHERE cedula = 12453535

Similar la operacin el lgebra relacional sera:

p nombre, primer_apellido, segundo_apellido, direccion, telefono (scedula =


1245353 (PERSONAS) )

Resultado/

Nombre Primer_Apellido Segundo_Apellido Direccin Telefono

Gloria Betancur Garces Tr. 12 43-5 2756533

c. En la clausula WHERE es posible utilizar los conectores lgicos AND - OR. Se


necesita la cdula y el nombre de las personas cuyo apellido sea BETANCUR y su
sexo sea MASCULINO:

SELECT cedula, nombre

FROM personas

WHERE primer_apellido = 'Betancur'

AND sexo = 'M'

Resultado/

Cedula Nombre

78900456 Carlos

d. Select combinando tablas y utilizacin del comodn '*'. Se desea obtener la


informacin de todos los dependientes de las personas cuyo apellido sea
BETANCUR y su sexo sea MASCULINO. Cuando se trabaja con varias tablas y
se utiliza el '*', se le debe anteponer el nombre de la tabla de la cual se desea
extraer la informacin:

SELECT dependientes.*

FROM personas, dependientes


ESCUELA DE TECNOLOGAS DE LA INFORMACIN 84
ADMINISTRACIN DE BASE DE DATOS

WHERE primer_apellido = 'Betancur'

AND sexo = 'M'

AND dependiente.cedula = personas.cedula

Resultado/

Cedula Nombre_Dep Sexo FechaN Parentesco

78900456 Juanita F 12-Abr-95 Hija

78900456 Oscar M 15-Ene-89 Hijo

e. Utilizando alias o sinnimos de trabajo a las tablas del Select. Estos se


utilizan por facilidad en el manejo de la instruccin. La misma consulta anterior:

SELECT d.*
FROM personas p, dependientes d

WHERE primer_apellido = 'Betancur

AND sexo = 'M'

AND d.cedula = p.cedula

Resultado/

Cedula Nombre_Dep Sexo FechaN Parentesco

78900456 Juanita F 12-Abr-95 Hija

78900456 Oscar M 15-Ene-89 Hijo

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 85


ADMINISTRACIN DE BASE DE DATOS

APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS.

La sentencia SQL JOIN permite consultar datos de 2 o ms tablas.

Dichas tablas estarn relacionadas entre ellas de alguna forma, a travs de alguna
de sus columnas.

Existen 3 tipos de JOINS: JOIN interno, JOIN externo y JOIN cruzado.

Una clave primaria es una columna con un valor nico para cada registro de una
tabla.

El propsito del JOIN es unir informacin de diferentes tablas, para no tener que
repetir datos en diferentes tablas.

Varias tablas (join).

Hasta ahora hemos trabajado con una sola tabla, pero en general, se trabaja con
varias tablas.

Para evitar la repeticin de datos y ocupar menos espacio, se separa la


informacin en varias tablas. Cada tabla tendr parte de la informacin total que
queremos registrar.

Por ejemplo, los datos de nuestra tabla "libros" podran separarse en 2 tablas, una
"libros" y otra "editoriales" que guardar la informacin de las editoriales. En
nuestra tabla "libros" haremos referencia a la editorial colocando un cdigo que la
identifique. Veamos:

Problema:

Trabajamos con las tablas "libros" y editoriales" de una librera.

Elimine las tablas, si existen:

drop table if exists libros, editoriales;

Cree las siguientes tablas:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 86


ADMINISTRACIN DE BASE DE DATOS

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default 'Desconocido',
codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad smallint unsigned default 0,
primary key (codigo)
);

create table editoriales(


codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);

Cargamos algunos registros en la tabla "editoriales":

insert into editoriales (nombre) values('Paidos');

insert into editoriales (nombre) values('Emece');

insert into editoriales (nombre) values('Planeta');

insert into editoriales (nombre) values('Sudamericana');

Cargamos algunos registros en la tabla "libros":

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('El Aleph','Borges',3,43.5,200);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia en el pais de las maravillas','Lewis Carroll',2,33.5,100);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Aprenda PHP','Mario Perez',1,55.8,50);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Java en 10 minutos','Juan Lopez',1,88,150);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 87


ADMINISTRACIN DE BASE DE DATOS

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia a traves del espejo','Lewis Carroll',1,15.5,80);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Cervantes y el quijote','Borges- Bioy Casares',3,25.5,300);

Mostramos todos los datos de la tabla "libros":

select * from libros;

Queremos tambin el nombre de la editorial, necesitamos ambas tablas:

select * from libros


join editoriales
on libros.codigoeditorial=editoriales.codigo;

Analicemos la consulta: indicamos el nombre de la tabla luego del "from" ("libros"),


unimos esa tabla con "join" y el nombre de la otra tabla ("editoriales"), luego
especificamos la condicin para enlazarlas con "on", es decir, el campo por el cual
haremos coincidir los registros de las dos tablas, el campo "codigoeditorial" de
"libros" y el campo "codigo" de "editoriales" son los que enlazarn ambas tablas.

Si no especificamos por qu campo relacionamos ambas tablas, es decir,


omitimos la condicin "on":

select * from libros


join editoriales;

el resultado es el producto cartesiano de ambas tablas. Un "join" sin condicin "on"


para la unin genera un resultado en el que aparecen todas las combinaciones de
los registros de ambas tablas.

Veamos lo que sucede si omitimos la referencia a las tablas al nombrar el campo


"codigo" (nombre de campo que contienen ambas tablas):

select * from libros


join editoriales
on codigoeditorial=codigo;

aparece un mensaje de error indicando que "codigo" es ambiguo.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 88


ADMINISTRACIN DE BASE DE DATOS

Por ello, si hacemos referencia a un campo de una tabla que tiene el mismo
nombre que el campo de la otra tabla consultada, debemos especificar a cul tabla
pertenece dicho campo.

Para simplificar la sentencia podemos usar un alias para cada tabla:

select * from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

En la consulta anterior, el cdigo de la editorial aparece 2 veces, desde la tabla


"libros" y "editoriales". Podemos solicitar que nos muestre algunos campos:

select titulo,autor,nombre from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

Si queremos ver el cdigo del libro, al presentar el campo "codigo", debemos


especificar de qu tabla, porque el campo "codigo" se repite en ambas tablas
("libros" y "editoriales"):

select l.codigo,titulo,autor,nombre from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

Si obviamos la referencia a la tabla, la sentencia no se ejecuta y aparece un


mensaje indicando que el campo "codigo" es ambiguo:

select codigo,titulo,autor,nombre from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

Left join.

Problema:

Trabajamos con las tablas "libros" y editoriales" de una librera.

o Eliminamos dichas tablas, si existen:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 89


ADMINISTRACIN DE BASE DE DATOS

drop table if exists libros, editoriales;

o Creamos las siguientes tablas:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default 'Desconocido',
codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad tinyint unsigned default 0,
primary key (codigo)
);

create table editoriales(


codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);

o Cargamos algunos registros en la tabla "editoriales":

insert into editoriales (nombre) values('Paidos');

insert into editoriales (nombre) values('Emece');

insert into editoriales (nombre) values('Planeta');

insert into editoriales (nombre) values('Sudamericana');

Cargamos algunos registros en la tabla "libros":

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('El Aleph','Borges',3,43.5,200);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia en el pais de las maravillas','Lewis Carroll',2,33.5,100);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Aprenda PHP','Mario Perez',1,55.8,50);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 90


ADMINISTRACIN DE BASE DE DATOS

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Java en 10 minutos','Juan Lopez',1,88,150);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia a traves del espejo','Lewis Carroll',1,15.5,80);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Cervantes y el quijote','Borges- Bioy Casares',3,25.5,300);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Aprenda Java en 10 minutos','Lopez Juan',5,28,100);

o Para obtener la lista de todas las editoriales y los libros de las mismas, incluso
de las cuales no tenemos libros usamos:

select * from editorials


left join libros
on editoriales.codigo=libros.codigoeditorial;

Un "left join" se usa para hacer coincidir registros en una tabla (izquierda) con otra
tabla (derecha), pero, si un valor de la tabla de la izquierda no encuentra
coincidencia en la tabla de la derecha, se genera una fila extra (una por cada valor
no encontrado) con todos los campos seteados a "null".

Recuerde que es importante la posicin en que se colocan las tablas en un "left


join", la tabla de la izquierda es la que localiza registros en la tabla de la derecha.
Por lo tanto, estos "join" no son iguales:

select * from editorials


left join libros
on editoriales.codigo=libros.codigoeditorial;

select * from libros


left join editorials
on editoriales.codigo=libros.codigoeditorial;

La primera sentencia busca coincidencia en la tabla "libros" por cada valor de


codigo de "editoriales", si no encuentra coincidencia para algn valor, genera una

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 91


ADMINISTRACIN DE BASE DE DATOS

fila seteada a "null". No hay libros de la editorial "Sudamericana", entonces esa fila
contiene "null" en todos los campos correspondientes a "libros".

La segunda sentencia busca coincidencia en la tabla "editoriales" por cada valor


de "codigoeditorial" de "libros", si no encuentra coincidencia para algn valor,
genera una fila seteada a "null". El libro "Aprenda java en 10 minutos" tiene cdigo
de editorial "5", valor inexistente en la tabla "editoriales", por ello, esa fila contiene
"null" en todos los campos correspondientes a "editoriales".

Para encontrar los valores de cdigo de la tabla "editoriales" que estn presentes
en la tabla "libros" usamos un "where":

select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is not null;

Para mostrar las editoriales que no estn presentes en "libros":

select e.nombre,l.titulo from editoriales as e


left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is null;

Right join.

Problema:

Trabajamos con las tablas "libros" y editoriales" de una librera.

o Eliminamos dichas tablas, si existen:

drop table if exists libros, editoriales;

o Creamos las siguientes tablas:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 92
ADMINISTRACIN DE BASE DE DATOS

autor varchar(30) not null default 'Desconocido',


codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad tinyint unsigned default 0,
primary key (codigo)
);

create table editoriales(


codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);

o Cargamos algunos registros en la tabla "editoriales":

insert into editoriales (nombre) values('Paidos');

insert into editoriales (nombre) values('Emece');

insert into editoriales (nombre) values('Planeta');

insert into editoriales (nombre) values('Sudamericana');

Cargamos algunos registros en la tabla "libros":

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('El Aleph','Borges',3,43.5,200);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia en el pais de las maravillas','Lewis Carroll',2,33.5,100);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Aprenda PHP','Mario Perez',1,55.8,50);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Java en 10 minutos','Juan Lopez',1,88,150);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia a traves del espejo','Lewis Carroll',1,15.5,80);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 93


ADMINISTRACIN DE BASE DE DATOS

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Cervantes y el quijote','Borges- Bioy Casares',3,25.5,300);

o Necesitamos los ttulos y nombres de las editoriales de los libros, incluso de


aquellos editoriales que no tienen libros:

select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial;

o Esta sentencia busca los nombres de las editoriales que estn presentes en
"libros". Podemos realizar la bsqueda de modo inverso con "right join":

select nombre,titulo
from libros as l
right join editoriales as e
on e.codigo=l.codigoeditorial;

La primera, con "left join", busca valores de "codigo" de la tabla "editoriales" (tabla
de la izquierda) coincidentes con los valores de "codigoeditorial" de la tabla "libros"
(tabla de la derecha). La segunda, con "right join", busca valores de
"codigoeditorial" de la tabla "libros" (tabla de la derecha) coincidentes con los
valores de "codigo" de la tabla "editoriales" (tabla de la izquierda).

cross join.

Problema:

Un pequeo restaurante tiene almacenados los nombres y precios de sus comidas


en una tabla llamada "comidas" y en una tabla denominada "postres" los mismos
datos de sus postres.

o Eliminamos dichas tablas, si existen:

drop table if exists comidas, postres;

o Creamos las siguientes tablas:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 94


ADMINISTRACIN DE BASE DE DATOS

create table comidas(


codigo tinyint unsigned auto_increment,
nombre varchar(30),
precio decimal(4,2) unsigned,
primary key (codigo)
);

create table postres(


codigo tinyint unsigned auto_increment,
nombre varchar(30),
precio decimal(4,2) unsigned,
primary key (codigo)
);

o Ingresamos algunos registros:

insert into comidas values(1,'milanesa y fritas',3.4);

insert into comidas values(2,'arroz primavera',2.5);

insert into comidas values(3,'pollo',2.8);

insert into postres values(1,'flan',1);

insert into postres values(2,'porcion de torta',2.1);

insert into postres values(3,'gelatina',0.9);

o Empleamos "cross join" para obtener el producto cartesiano de ambas tablas:

select c.*,p.*
from comidas as c
cross join postres as p;

o Retorna el mismo resultado que un simple "join" sin parte "on", es decir, si
condicin de enlace:

select c.*,p.*
from comidas as c
join postres as p;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 95


ADMINISTRACIN DE BASE DE DATOS

o Para obtener el nombre del plato principal, del postre y el precio total de cada
combinacin (men) tipeamos la siguiente sentencia:

select c.nombre,p.nombre,
c.precio+p.precio as total
from comidas as c
cross join postres as p;

Hemos aprendido que para realizar un "join" no es necesario utilizar 2 tablas,


podemos combinar los registros de una misma tabla.

o Eliminamos las tablas anteriormente creadas:

drop table comidas, postres;

o Creamos la tabla "comidas" con la siguiente estructura:

create table comidas(


codigo tinyint unsigned auto_increment,
nombre varchar(30),
rubro varchar(20),/*plato principal y postre*/
precio decimal (5,2) unsigned,
primary key(codigo)
);

o Ingresamos algunos registros:

Insert into comidas values(1,'milanesa y fritas','plato principal',3.4);

insert into comidas values(2,'arroz primavera','plato principal',2.5);

insert into comidas values(3,'pollo','plato principal',2.8);

insert into comidas values(4,'flan','postre',1);

insert into comidas values(5,'porcion de torta','postre',2.1);

insert into comidas values(6,'gelatina','postre',0.9);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 96


ADMINISTRACIN DE BASE DE DATOS

o Podemos obtener la combinacin de platos principales con postres empleando


un "cross join" con una sola tabla:

select c1.nombre,c1.precio,c2.nombre,c2.precio
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';

Note que utilizamos 2 alias para la misma tabla y empleamos un "where" para
combinar el "plato principal" con el "postre".

o Si queremos el monto total de cada combinacin:

select c1.nombre,c2.nombre,
c1.precio+c2.precio as total
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';

natural join.

Problema:

Trabajamos con las tablas "libros" y editoriales" de una librera.

o Eliminamos dichas tablas, si existen:

drop table if exists libros, editoriales;

o Creamos las siguientes tablas:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default 'Desconocido',
codigoeditorial tinyint unsigned not null,
precio decimal(5,2) unsigned,

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 97


ADMINISTRACIN DE BASE DE DATOS

cantidad tinyint unsigned default 0,


primary key (codigo)
);

create table editoriales(


codigoeditorial tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigoeditorial)
);

o Cargamos algunos registros en la tabla "editoriales":

insert into editoriales (nombre) values('Planeta');

insert into editoriales (nombre) values('Emece');

insert into editoriales (nombre) values('Paidos');

insert into editoriales (nombre) values('Sudamericana');

o Cargamos algunos registros en la tabla "libros":

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('El Aleph','Borges',1,43.5,200);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Alicia en el pais de las maravillas','Lewis Carroll',2,33.5,100);

insert into libros (titulo, autor,codigoeditorial,precio,cantidad)


values('Martin Fierro','Jose Hernandez',1,55.8,50);

o Como en ambas tablas, el cdigo de la editorial se denomina "codigoeditorial",


podemos omitir la parte "on" que indica los nombres de los campos por el cual
se enlazan las tablas, empleando "natural join", se unirn por el campo que
tienen en comn:

select titulo,nombre
from libros as l
natural join editoriales as e;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 98


ADMINISTRACIN DE BASE DE DATOS

o La siguiente sentencia tiene la misma salida anterior:

select titulo,nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigoeditorial;

o Tambin se puede usar "natural" con "left join" y "right join":

select nombre,titulo
from editoriales as e
natural left join libros as l;
que tiene la misma salida que:

select nombre,titulo
from editoriales as e
left join libros as l
on e.codigoeditorial=l.codigoeditorial;

Hay que tener cuidado con este tipo de "join" porque si ambas tablas tiene ms de
un campo con igual nombre, MySQL no sabr por cual debe realizar la unin.

o Alteremos la tabla "libros" para que el campo "titulo" se denomine "nombre":

alter table libros change titulo nombre varchar(40);

o Ahora las tablas tienen 2 campos con igual nombre ("codigoeditorial" y


"nombre"). Intentemos realizar un "natural join":

select l.nombre,e.nombre
from libros as l
natural join editoriales as e;

No hay salida.

o Alteramos nuevamente la tabla "libros" para que el campo "nombre" en adelante


sea "titulo":

alter table libros change nombre titulo varchar(40);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 99


ADMINISTRACIN DE BASE DE DATOS

o Alteramos la tabla "editoriales" para que el campo "codigoeditorial" se llame en


adelante "codigo":

alter table editoriales change codigoeditorial codigo tinyint unsigned


auto_increment;

Si usamos "natural join", unir las tablas por el campo "codigo", que es el campo
que tienen igual nombre, pero el campo "codigo" de "libros" no hace referencia al
cdigo de la editorial sino al del libro, as que la salida ser errnea:

select l.*,e.*
from libros as l
natural join editoriales as e;

Note que el libro con cdigo "3" de editorial "Planeta" aparece como perteneciente
a la editorial "Paidos" (cdigo 3) porque busc coincidencia del cdigo del libro con
el cdigo de editorial.

inner join - straight join.

Existen otros tipos de "join" adems del simple "join", "left join", "right join", "cross
join" y "natural join". Vemoslos.

"inner join" es igual que "join". Con "inner join", todos los registros no coincidentes
son descartados, slo los coincidentes se muestran en el resultado:

select nombre,titulo
from editoriales as e
inner join libros as l
on e.codigo=l.codigoeditorial;

Tiene la misma salida que un simple "join":

select nombre,titulo
from editoriales as e
join libros as l
on e.codigo=l.codigoeditorial;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 100


ADMINISTRACIN DE BASE DE DATOS

"straight join" es igual a "join", slo que la tabla de la izquierda es leda


siempre antes que la de la derecha.

join con ms de dos tablas.

Podemos hacer un "join" con ms de dos tablas.

Una biblioteca registra la informacin de sus libros en una tabla llamada "libros",
los datos de sus socios en "socios" y los prstamos en una tabla "prestamos".

En la tabla "prestamos" haremos referencia al libro y al socio que lo solicita


colocando un cdigo que los identifique. Veamos:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
primary key (codigo)
);

create socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);

create table prestamos(


documento char(8) not null,
codigolibro int unsigned,
fechaprestamo date not null,
fechadevolucion date,
primary key (codigolibro,fechaprestamo)
);

Al recuperar los datos de los prestamos:

select * from prestamos;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 101


ADMINISTRACIN DE BASE DE DATOS

aparece el cdigo del libro pero no sabemos el nombre y tampoco el nombre del
socio sino su documento. Para obtener los datos completos de cada prstamo,
incluyendo esos datos, necesitamos consultar las tres tablas.

Hacemos un "join" (unin):

select nombre,titulo,fechaprestamo
from prestamos as p
join socios as s
on s.documento=p.documento
join libros as l
on codigolibro=codigo;

Analicemos la consulta anterior. Indicamos el nombre de la tabla luego del "from"


("prestamos"), unimos esa tabla con la tabla "socios" especificando con "on" el
campo por el cual se combinarn: el campo "documento" de ambas tablas; luego
debemos hacer coincidir los valores para la unin con la tabla "libros"
enlazndolas por los campos "codigolibro" y "codigo" de "libros". Utilizamos alias
para una sentencia ms sencilla y comprensible.

Note que especificamos a qu tabla pertenece el campos "documento" porque a


ese nombre de campo lo tienen las tablas "prestamos" y "socios", esto es
necesario para evitar confusiones y ambiguedades al momento de referenciar un
campo. En este ejemplo, si omitimos la referencia a las tablas al nombrar el campo
"documento" aparece un mensaje de error indicando que "documento" es
ambiguo.

Para ver todos los prestamos, incluso los que no encuentran coincidencia en las
otras tablas, usamos:

select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
left join libros as l
on l.codigo=p.codigolibro;

Podemos ver aquellos prstamos con valor coincidente para "libros" pero para
"socio" con y sin coincidencia:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 102


ADMINISTRACIN DE BASE DE DATOS

select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento

join libros as l
on p.codigolibro=l.codigo;

CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.

Funciones de conversin

ASCIISTR(string): convierte cualquier carcter de string que no son ASCII a


\xxxx donde xxxx representa un formato UTF-16

BIN_TO_NUM(expr1,expr2,expr3, ...): Convierte una cadena binaria a formato


decimal (number). Cada una expresin expr(i) debe ser un valor 0 o 1.
Ejemplo:
SELECT BIN_TO_NUM(1,0,1,0) FROM DUAL;
Resultado: 10
CAST(expr AS type_name): CAST(MULTISET(subconsulta) AS type_name)
Ejemplos:
1)
SELECT CAST('22-OCT-1997' AS TIMESTAMP WITH LOCAL TIME
ZONE) FROM dual;
SELECT product_id,
CAST(ad_sourcetext AS VARCHAR2(30))
FROM print_media;
2)
CREATE TYPE cust_address_typ OID

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 103


ADMINISTRACIN DE BASE DE DATOS

'82A4AF6A4CD1656DE034080020E0EE3D'
AS OBJECT
( street_address VARCHAR2(40)
, postal_code VARCHAR2(10)
, city VARCHAR2(30)
, state_province VARCHAR2(10)
, country_id CHAR(2)
);
/
CREATE TYPE address_book_t AS TABLE OF cust_address_typ;
/
CREATE TYPE address_array_t AS VARRAY(3) OF cust_address_typ;
/
CREATE TABLE cust_address (
custno NUMBER,
street_address VARCHAR2(40),
postal_code VARCHAR2(10),
city VARCHAR2(30),
state_province VARCHAR2(10),
country_id CHAR(2));
CREATE TABLE cust_short (custno NUMBER, name VARCHAR2(31));

CREATE TABLE states (state_id NUMBER, addresses address_array_t);

SELECT s.custno, s.name,


CAST(MULTISET(SELECT ca.street_address,
ca.postal_code,

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 104


ADMINISTRACIN DE BASE DE DATOS

ca.city,
ca.state_province,
ca.country_id
FROM cust_address ca
WHERE s.custno = ca.custno)
AS address_book_t)
FROM cust_short s;

SELECT CAST(s.addresses AS address_book_t)


FROM states s
WHERE s.state_id = 111;

3)
CREATE TABLE projects
(empno NUMBER, project_name VARCHAR2(10));

CREATE TABLE emps_short


(empno NUMBER, last_name VARCHAR2(10));

CREATE TYPE project_table_typ AS TABLE OF VARCHAR2(10);

SELECT e.last_name,
CAST(MULTISET(SELECT p.project_name
FROM projects p
WHERE p.empno = e.empno
ORDER BY p.project_name)
AS project_table_typ)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 105


ADMINISTRACIN DE BASE DE DATOS

FROM emps_short e;

CHARTOROWID(char): Convierte un valor de los tipos


CHAR,VARCHAR2,NCHAR o NVARCHAR2 a un valor de tipo ROWID.
Ejemplo:
SELECT ename
FROM scott.emp
WHERE
ROWID = CHARTOROWID('AAAiPQAHoAAAAK3AAA');

COMPOSE(char): Convierte char a una cadena Unicode normalizada al


conjunto de caracteres del dato de entrada.
SELECT COMPOSE ( 'o' || UNISTR('\0308') ) FROM DUAL;

CONVERT(char,destino_char_set,origen_char_set): Convierte char del


conjunto de caracteres origen_char_set al conjunto de caracteres
destino_char_set.

DECOMPOSE(cadena,CANONICAL)
DECOMPOSE(cadena,COMPATIBILITY) Es valido solamente para caracteres
UNICODE.
SELECT DECOMPOSE ('Chteaux') FROM DUAL;
DECOMPOSE
Resultado: Cha^teaux

HEXTORAW(char): Convierte char a ROWID

RAWTOHEX(raw): Convierte un carcter de tipo RAW a su equivalente

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 106


ADMINISTRACIN DE BASE DE DATOS

hexadecimal

RAWTONHEX(raw): Convierte un carcter de tipo RAW a NVARCHAR2

ROWIDTOCHAR(rowid): Convierte un valor del tipo ROWID a un valor de tipo


VARCHAR2 cuya longitud es siempre 18

SELECT ROWID FROM scott.emp


WHERE ROWIDTOCHAR(ROWID) LIKE '%SAAb%';

ROWIDTONCHAR(rowid): Convierte un valor de tipo ROWID a NVARCHAR2

SCN_TO_TIMESTAMP(number): Transforma el valor number SCN (System


Change Number) al valor aproximado de tipo TIMESTAMP asociado a dicho
number.

TIMESTAMP_TO_SCN(timestamp): Convierte el valo introducido timestamp del


tipo TIMESTAMP y devuelve el valor aproximado de SCN.

TO_BINARY_DOUBLE(expr,fmt,nlsparam): Devuelve un numero con doble


precisin en coma flotante.

TO_BINARY_FLOAT(expr,fmt,nlsparam): Devuelve un numero con precisin


sencilla en coma flotante.

TO_CHAR (character): Convierte valores de los tipos NCHAR, NVARCHAR2,


CLOB o NCLOB a conjunto de caracteres de la base de datos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 107


ADMINISTRACIN DE BASE DE DATOS

TO_CHAR (datetime,fmt,nlsparam),
TO_CHAR (interval,fmt,nlsparam)
Convierte un valor de tipo fecha o intervalo a un valor de tipo fecha (DATE,
TIMESTAMP, TIMESTAMP WITH TIMEZONE o TIMESTAMP WITH LOCAL
TIME ZONE)

TO_CHAR (n,fmt,nlsparam)

Convierte el valor n de tipo NUMBER a un valor del tipo VARCHAR2, utilizando


el formato opcional fmt.
nlsparam debe ser un argumento con el siguiente formatos:
'NLS_NUMERIC_CHARACTERS = ''dg''
NLS_CURRENCY = ''text''
NLS_ISO_CURRENCY = territory '
El carcter d representa el separador decimal y el carcter g el separador de
miles.
Text representa el smbolo de la moneda local y territory representa el smbolo
de la moneda internacional.
SELECT
TO_CHAR(-10000,'L99G999D99MI',
'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''AusDollars'' ')
"Amount"
FROM DUAL;

Amount
-------------------
AusDollars10.000,00-

TO_CLOB(lob_column), TO_CLOB (char): TO_CLOB convierte un valor

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 108


ADMINISTRACIN DE BASE DE DATOS

NCLOB de una columna LOB o cualquier otro carcter al tipo CLOB values. char
puede ser de uno de los tipos CHAR, VARCHAR2, NCHAR,
NVARCHAR2, CLOB, or NCLOB.

TO_DATE(char,fmt,nlsparam): Convierte una cadena de tipo CHAR,


VARCHAR2, NCHAR, or NVARCHAR2 a un valor de tipo FECHA.

TO_DSINTERVAL(char,nlsparam): Convierte una cadena de caracteres del


tipo
CHAR, VARCHAR2, NCHAR, o NVARCHAR2 a un valor de tipoINTERVAL DAY
TO SECOND.
Ejemplo:
SELECT empno, ename
FROM scott.emp
WHERE hiredate + TO_DSINTERVAL('100 10:00:00')
<= DATE '1990-01-01';

TO_LOB(long_column):Convierte un valor LONG o LONG RAW de la columna


long_column a un valor LOB.

TO_NCHAR (character,fmt,nlsparam): Convierte un string de tipo carcter,


CLOB o NCLOB del juego de caracteres de la base de datos al juego de
caracteres nacional.

TO_NCHAR (datetime): TO_NCHAR (datetime) convierte de los tipos DATE,


TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME
ZONE, INTERVAL MONTH TO YEAR, o INTERVAL DAY TO SECOND del
conjunto de caracteres de la base de datos al conjunto de caracteres nacional.
Ejemplo:
SELECT TO_NCHAR(hiredate)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 109


ADMINISTRACIN DE BASE DE DATOS

FROM scott.emp;

TO_NCHAR (number): TO_NCHAR (n,fmt,nlsparam) convierte n a una cadena


en el conjunto de caracteres nacional. El valor n puede ser de los tipos
NUMBER, BINARY_FLOAT, o BINARY_DOUBLE.
Ejemplo:
SELECT
TO_NCHAR(empno) "NCHAR_Customer_ID"
FROM
scott.emp

TO_NCLOB(char)

TO_NUMBER(expr,fmt,nlsparam)
TO_NUMBER convierte expr a un valor de tipo NUMBER. expr puede ser un
valor de tipo BINARY_FLOAT o BINARY_DOUBLE o un valor de tipo CHAR,
VARCHAR2, NCHAR o NVARCHAR2 que contengan un numero en el formato
especificado mediante el modelo de formato opcional fmt.

Ejemplo:
SELECT
TO_NUMBER('-AusDollars100','L9G999D99', ' NLS_NUMERIC_CHARACTERS
= '',.'' NLS_CURRENCY = ''AusDollars'' ') "Amount"
FROM DUAL;

Amount
----------
-100

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 110


ADMINISTRACIN DE BASE DE DATOS

TO_DSINTERVAL:

TO_SINGLE_BYTE(char): TO_SINGLE_BYTE devuelve char con todos sus


multibytes caracteres convertidos a su correspondientes caracteres simples. char
debe ser de los tipos CHAR, VARCHAR2, NCHAR, o NVARCHAR2. El valor
devuelto es del mismo tipo que el de char.

TRANSLATE... USING: Oracle recomienda utiliar TO_CHAR o TO_NCHAR en


lugar de esta instruccin.

UNISTR (string): UNISTR toma como argumento un texto y lo convierte a una


cadena en el conjunto de caracteres nacional.

APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD.

CUANTIFICADOR ALL.

Se utilizar de forma conjunta con una consulta anidada que devuelva ms de un valor y
un operador de comparacin que no sea la igualdad.

Sirve para seleccionar los valores que cumplan una determinada condicin para todos los
valores de la consulta anidada. (No se suele utilizar con igualdad).

EJEMPLO 1:
Nombre de las asignaturas que tengan ms crditos.
SELECT Nombre
FROM ASIGNATURA
WHERE Creditos >= ALL (SELECT Creditos
FROM ASIGNATURA);
Otra forma:
SELECT Nombre
FROM ASIGNATURA
WHERE Creditos = (SELECT MAX(Creditos)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 111


ADMINISTRACIN DE BASE DE DATOS

FROM ASIGNATURA);
EJEMPLO 2:
Personas que viven en la ciudad que vive ms gente.
SELECT *
FROM PERSONA
WHERE Ciudad IN (SELECT Ciudad
FROM PERSONA
GROUP BY Ciudad
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM PERSONA
GROUP BY Ciudad));

CUANTIFICADOR ANY.

En conjuncin con una consulta anidada que devuelve varios valores, sirve para
determinar cuando una determinada condicin se verifica para al menos uno de los
valores que devuelve la subconsulta. (No se suele utilizar con desigualdad).

EJEMPLO 1:
Personas que viven en cualquier ciudad excepto en la que vive ms gente.
SELECT *
FROM PERSONA
WHERE Ciudad IN (SELECT Ciudad
FROM PERSONA
GROUP BY Ciudad
HAVING COUNT(*) < ANY (SELECT COUNT(*)
FROM PERSONA

GROUP BY Ciudad));

Ciudades en las que vive algn profesor pero ningn alumno.


SELECT DISTINCT Ciudad
FROM PERSONA AS PP, PROFESOR
WHERE PP.DNI = PROFESOR.DNI
AND NOT EXISTS (SELECT *
FROM PERSONA AS PA, ALUMNO
WHERE PA.DNI = ALUMNO.DNI

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 112


ADMINISTRACIN DE BASE DE DATOS

AND PA.Ciudad = PP.Ciudad);

Subconsultas usando el squema Hr brindado por Oracle:

Ejemplo 1:

select salary
from employees
where employee_id=100;

Ejemplo 2:

select first_name, last_name, salary


from employees
where department_id=20;

Ejemplo 3:

select last_name, salary


from employees
where salary > (select salar
from employees
where last_name = 'Abel');

Ejemplo 4:

select last_name, job_id, salary


from employees
where job_id in (select job_id
from employees
where last_name='Taylor')
and salary in (select salary
from employees
where last_name = 'Taylor');

Ejemplo 5:

select last_name, job_id, salary


from employees

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 113


ADMINISTRACIN DE BASE DE DATOS

where salary = (select min(salary)


from employees);

Ejemplo 6:

select employee_id, last_name


from employees
where salary in (select min(salary)
from employees
group by department_id);

Ejemplo 7:

Diferencia entre all y any

7.1.- Con all

select employee_id, last_name, salary


from employees
where salary < all (select salaryfrom employees
where job_id = 'IT_PROG')
and job_id <> 'IT_PROG';

7.2.- Con any

select employee_id, last_name, salary


from employees
where salary < any (select salary
from employees
where job_id = 'IT_PROG')
and job_id <> 'IT_PROG';

Ejemplo 8:

Mostrar todos los empleados con sus departamentos donde

el salario sea menor que el salario promedio de todos los empleados.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 114


ADMINISTRACIN DE BASE DE DATOS

select e.first_name, d.department_name, salary


from employees e join departments d using(department_id)
where salary < (select avg(salary)
from employees);

Ejemplo 9:

Mostrar todos los empleados cuyo salario sea igual al salario del empleado David
Austin y cuyo cargo sea IT_PROG.

select first_name, job_id, salary


from employees
where salary = (select salary
from employees
where first_name = 'David' and last_name = 'Austin')
and job_id = 'IT_PROG';

CREAR FUNCIONES EN UNA BASE DE DATOS.

Una funcin es un subprograma que devuelve un valor.

La sintaxis para construir funciones es la siguiente:

CREATE [OR REPLACE]


FUNCTION <fn_name>[(<param1> IN <type>, <param2> IN <type>, ...)]
RETURN <return_type>
IS
result <return_type>;
BEGIN

return(result);
[EXCEPTION]
-- Sentencias control de excepcion
END [<fn_name>];

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 115


ADMINISTRACIN DE BASE DE DATOS

El uso de OR REPLACE permite sobreescribir una funcin existente. Si se omite, y


la funcin existe, se producir, un error.

La sintaxis de los parmetros es la misma que en los procedimientos almacenado,


exceptuando que solo pueden ser de entrada.

Ejemplo 01:

CREATE OR REPLACE
FUNCTION fn_Obtener_Precio(p_producto VARCHAR2)
RETURN NUMBER
IS
result NUMBER;
BEGIN
SELECT PRECIO INTO result
FROM PRECIOS_PRODUCTOS
WHERE CO_PRODUCTO = p_producto;
return(result);
EXCEPTION
WHEN NO_DATA_FOUND THEN
return 0;
END ;

Si el sistema nos indica que el la funcin se ha creado con errores de compilacin


podemos ver estos errores de compilacion con la orden SHOW ERRORS en SQL
*Plus.

Una vez creada y compilada la funcin podemos ejecutarla de la siguiente forma:

DECLARE
Valor NUMBER;
BEGIN
Valor := fn_Obtener_Precio('000100');

END;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 116


ADMINISTRACIN DE BASE DE DATOS

Las funciones pueden utilizarse en sentencias SQL de manipulacin de datos


(SELECT, UPDATE, INSERT y DELETE):

SELECT CO_PRODUCTO,
DESCRIPCION,
fn_Obtener_Precio(CO_PRODUCTO)
FROM PRODUCTOS;

Ejemplo 02

Crear una funcin para calcular el sueldo total de un empleado pasado como
parmetro. Tenga en cuenta que hay que aadir la comisin (que es un
porcentaje adicional del salario) al salario.

Creamos la tabla

DROP TABLE empleados;


CREATE TABLE
empleados
( cod_emp integer,
nom_emp char(10) not null,
salario number(9,2) DEFAULT 100000,
fecha_nac date DEFAULT SYSDATE,
comision number(5,2), CHECK (comision>=0 AND comision<=1),
cod_jefe integer,
PRIMARY KEY (cod_emp),
FOREIGN KEY (cod_jefe) REFERENCES
empleados ON DELETE CASCADE);
DROP SEQUENCE sec_emp;
CREATE SEQUENCE
sec_emp INCREMENT BY 1 START WITH 1;

Funcion:

EXECUTE contratar_empleado('P
rimero',1000.00,.07,null);
EXECUTE contratar_empl
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 117
ADMINISTRACIN DE BASE DE DATOS

eado('Segundo',
2000,.10,1);
EXECUTE contratar_empleado(
'Tercero',2300.25,.15,2);
--SELECT * FROM empleados;
CREATE OR REPLACE FUNCTION
obtener_salario(w_cod_emp IN
empleados.cod_emp%TYPE)
RETURN NUMBER IS w_salario_
bruto empleados.salario%TYPE;
BEGIN
SELECT salario*(1+comision) INTO
w_salario_bruto FROM empleados
WHERE cod_emp = w_cod_emp;
RETURN (w_salario_bruto);
END obtener_salario;
/
/* Prueba de funcin desde una instruccin SQL */
SELECT cod_emp,nom_emp,salario,co
mision,obtener_salario(cod_emp) FROM
empleados;
/* Prueba de funcin desde un bloque */
SET serveroutput ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Probando el
salario de COD_EMP 1 '||' >>>>
'||obtener_salario(1));
END;
/

Ejemplo 03:

Crear una funcin pl/sql que duplica la cantidad recibida como parmetro

-Funcin que duplica la cantidad recibida como parmetro


CREATE OR REPLACE FUNCTION duplicador(
valor number
) RETURN number IS

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 118


ADMINISTRACIN DE BASE DE DATOS

BEGIN
return (valor * 2);
END;
/

Para usar la funcin:

show errors
var x number;
EXEC :x := duplicador(5);
print x;

Ejemplo 04:

Crear una funcin pl/sql llamada factorial que devuelva el factorial de un nmero,
por ejemplo 5! = 1 * 2 * 3 * 4 * 5 = 120

--Clculo del factorial de un nmero


CREATE OR REPLACE FUNCTION factorial (
pNum number
) RETURN number IS
BEGIN
if pNum = 0 then
return 1;
else
return pNum * factorial(pNum - 1);
end if;
END;
/

Para usar la funcin:

show errors
var x number;
EXEC :x := factorial(5);
print x;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 119


ADMINISTRACIN DE BASE DE DATOS

FUNDAMENTO TERICO:

INSERTAR EN MLTIPLES FILAS EN UNA TABLA.

Podemos insertar en una tabla varias filas con una sola sentencia SELECT INTO
si los valores a insertar se pueden obtener como resultado de una consulta, en
este caso sustituimos la clusula VALUES lista de valores por una sentencia
SELECT como las que hemos visto hasta ahora. Cada fila resultado de la
SELECT forma una lista de valores que son los que se insertan en una nueva fila
de la tabla destino. Es como si tuviesemos una INSERT...VALUES por cada fila
resultado de la sentencia SELECT. La sintaxis es la siguiente:

El origen de la SELECT puede ser el nombre de una consulta guardada, un


nombre de tabla o una composicin de varias tablas ( mediante INNER JOIN,
LEFT JOIN, RIGHT JOIN o producto cartesiano).
Cada fila devuelta por la SELECT acta como la lista de valores que vimos
con la INSERT...VALUES por lo que tiene las mismas restricciones en cuanto
a tipo de dato, etc. La asignacin de valores se realiza por posicin por lo que
la SELECT debe devolver el mismo nmero de columnas que las de la tabla
destino y en el mismo orden, o el mismo nmero de columnas que indicamos en
la lista de columnas despus de destino.
Las columnas de la SELECT no tienen porque llamarse igual que en la tabla
destino ya que el sistema slo se fija en los valores devueltos por la SELECT.

Varias tablas (join).

Hasta ahora hemos trabajado con una sola tabla, pero en general, se trabaja con
varias tablas.

Para evitar la repeticin de datos y ocupar menos espacio, se separa la


informacin en varias tablas. Cada tabla tendr parte de la informacin total que
queremos registrar.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 120


ADMINISTRACIN DE BASE DE DATOS

Por ejemplo, los datos de nuestra tabla "libros" podran separarse en 2 tablas, una
"libros" y otra "editoriales" que guardar la informacin de las editoriales. En
nuestra tabla "libros" haremos referencia a la editorial colocando un cdigo que la
identifique. Veamos:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(30) not null default 'Desconocido',
cdigo editorial tinyint unsigned not null,
precio decimal(5,2) unsigned,
cantidad smallint unsigned default 0,
primary key (codigo)
);

create table editoriales(


codigo tinyint unsigned auto_increment,
nombre varchar(20) not null,
primary key(codigo)
);

De este modo, evitamos almacenar tantas veces los nombres de las editoriales en
la tabla "libros" y guardamos el nombre en la tabla "editoriales"; para indicar la
editorial de cada libro agregamos un campo referente al cdigo de la editorial en la
tabla "libros" y en "editoriales".

Al recuperar los datos de los libros:

select * from libros;

vemos que en el campo "editorial" aparece el cdigo, pero no sabemos el nombre


de la editorial. Para obtener los datos de cada libro, incluyendo el nombre de la
editorial, necesitamos consultar ambas tablas, traer informacin de las dos.

Cuando obtenemos informacin de ms de una tabla decimos que hacemos un


"join" (unin). Veamos un ejemplo:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 121


ADMINISTRACIN DE BASE DE DATOS

select * from libros


join editoriales
on libros.codigoeditorial=editoriales.codigo;

Analicemos la consulta anterior.

Indicamos el nombre de la tabla luego del "from" ("libros"), unimos esa tabla con
"join" y el nombre de la otra tabla ("editoriales"), luego especificamos la condicin
para enlazarlas con "on", es decir, el campo por el cual se combinarn. "on" hace
coincidir registros de las dos tablas basndose en el valor de algn campo, en
este ejemplo, los cdigos de las editoriales de ambas tablas, el campo
"codigoeditorial" de "libros" y el campo "codigo" de "editoriales" son los que
enlazarn ambas tablas.

Cuando se combina (join, unin) informacin de varias tablas, es necesario indicar


qu registro de una tabla se combinar con qu registro de la otra tabla.

Si no especificamos por qu campo relacionamos ambas tablas, por ejemplo:

select * from libros


join editoriales;

el resultado es el producto cartesiano de ambas tablas (cada registro de la primera


tabla se combina con cada registro de la segunda tabla), un "join" sin condicin
"on" genera un resultado en el que aparecen todas las combinaciones de los
registros de ambas tablas. La informacin no sirve.

Note que en la consulta

select * from libros


join editoriales
on libros.codigoeditorial=editoriales.codigo;

al nombrar el campo usamos el nombre de la tabla tambin. Cuando las tablas


referenciadas tienen campos con igual nombre, esto es necesario para evitar
confusiones y ambiguedades al momento de referenciar un campo. En este

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 122


ADMINISTRACIN DE BASE DE DATOS

ejemplo, si no especificamos "editoriales.codigo" y solamente tipeamos "codigo",


MySQL no sabr si nos referimos al campo "codigo" de "libros" o de "editoriales".

Si omitimos la referencia a las tablas al nombrar el campo "codigo" (nombre de


campo que contienen ambas tablas):

select * from libros


join editoriales
on codigoeditorial=codigo;

Aparece un mensaje de error indicando que "codigo" es ambiguo.

Entonces, si en las tablas, los campos tienen el mismo nombre, debemos


especificar a cul tabla pertenece el campo al hacer referencia a l, para ello se
antepone el nombre de la tabla al nombre del campo, separado por un punto (.).

Entonces, se nombra la primera tabla, se coloca "join" junto al nombre de la


segunda tabla de la cual obtendremos informacin y se asocian los registros de
ambas tablas usando un "on" que haga coincidir los valores de un campo en
comn en ambas tablas, que ser el enlace.

Para simplificar la sentencia podemos usar un alias para cada tabla:

select * from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

Cada tabla tiene un alias y se referencian los campos usando el alias


correspondiente. En este ejemplo, el uso de alias es para fines de simplificacin,
pero en algunas consultas es absolutamente necesario.

En la consulta anterior vemos que el cdigo de la editorial aparece 2 veces, desde


la tabla "libros" y "editoriales". Podemos solicitar que nos muestre algunos
campos:

select titulo,autor,nombre from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 123


ADMINISTRACIN DE BASE DE DATOS

Al presentar los campos, en este caso, no es necesario aclarar a qu tabla


pertenecen porque los campos solicitados no se repiten en ambas tablas, pero si
solicitramos el cdigo del libro, debemos especificar de qu tabla porque el
campo "codigo" se repite en ambas tablas ("libros" y "editoriales"):

select l.codigo,titulo,autor,nombre from libros as l


join editoriales as e
on l.codigoeditorial=e.codigo;

Si obviamos la referencia a la tabla, la sentencia no se ejecuta y aparece un


mensaje indicando que el campo "codigo" es ambiguo.

left join.

Hemos visto cmo usar registros de una tabla para encontrar registros de otra
tabla, uniendo ambas tablas con "join" y enlazndolas con una condicin "on" en la
cual colocamos el campo en comn. O sea, hacemos un "join" y asociamos
registros de 2 tablas usando el "on", buscando coincidencia en los valores del
campo que tienen en comun ambas tablas.

Trabajamos con las tablas de una librera:

-libros: codigo (clave primaria), titulo, autor, codigoeditorial, precio, cantidad y

-editoriales: codigo (clave primaria), nombre.

Queremos saber de qu editoriales no tenemos libros.

Para averiguar qu registros de una tabla no se encuentran en otra tabla


necesitamos usar un "join" diferente.

Necesitamos determinar qu registros no tienen correspondencia en otra tabla,


cules valores de la primera tabla (de la izquierda) no estn en la segunda (de la
derecha).

Para obtener la lista de editoriales y sus libros, incluso de aquellas editoriales de


las cuales no tenemos libros usamos:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 124


ADMINISTRACIN DE BASE DE DATOS

select * from editorials


left join libros
on editoriales.codigo=libros.codigoeditorial;

Un "left join" se usa para hacer coincidir registros en una tabla (izquierda) con otra
tabla (derecha), pero, si un valor de la tabla de la izquierda no encuentra
coincidencia en la tabla de la derecha, se genera una fila extra (una por cada valor
no encontrado) con todos los campos seteados a "null".

Entonces, la sintaxis es la siguiente: se nombran ambas tablas, una a la izquierda


del "join" y la otra a la derecha, y la condicin para enlazarlas, es decir, el campo
por el cual se combinarn, se establece luego de "on". Es importante la posicin
en que se colocan las tablas en un "left join", la tabla de la izquierda es la que se
usa para localizar registros en la tabla de la derecha. Por lo tanto, estos "join" no
son iguales:

select * from editorials


left join libros
on editoriales.codigo=libros.codigoeditorial;
select * from libros
left join editorials
on editoriales.codigo=libros.codigoeditorial;

La primera sentencia opera as: por cada valor de codigo de "editoriales" busca
coincidencia en la tabla "libros", si no encuentra coincidencia para algn valor,
genera una fila seteada a "null".

La segunda sentencia opera de modo inverso: por cada valor de "codigoeditorial"


de "libros" busca coincidencia en la tabla "editoriales", si no encuentra
coincidencia, setea la fila a "null".

Usando registros de la tabla de la izquierda se encuentran registros en la tabla de


la derecha.

Luego del "on" se especifican los campos que se asociarn; no se deben colocar
condiciones en la parte "on" para restringir registros que deberan estar en el
resultado, para ello hay que usar la clusula "where".

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 125


ADMINISTRACIN DE BASE DE DATOS

Un "left join" puede tener clausula "where" que restringa el resultado de la consulta
considerando solamente los registros que encuentran coincidencia en la tabla de
la derecha:

select e.nombre,l.titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is not null;

El anterior "left join" muestra los valores de la tabla "editoriales" que estn
presentes en la tabla de la derecha ("libros").

Tambin podemos mostrar las editoriales que no estn presentes en "libros":

select e.nombre,l.titulo from editoriales as e


left join libros as l
on e.codigo=l.codigoeditorial
where l.codigoeditorial is null;

El anterior "left join" muestra los valores de la tabla "editoriales" que no encuentran
correspondencia en la tabla de la derecha, "libros".

right join.

"right join" opera del mismo modo que "left join" slo que la bsqueda de
coincidencias la realiza de modo inverso, es decir, los roles de las tablas se
invierten, busca coincidencia de valores desde la tabla de la derecha en la tabla de
la izquierda y si un valor de la tabla de la derecha no encuentra coincidencia en la
tabla de la izquierda, se genera una fila extra (una por cada valor no encontrado)
con todos los campos seteados a "null".

Trabajamos con las tablas de una librera:

-libros: codigo (clave primaria), titulo, autor, codigoeditorial, precio, cantidad y

-editoriales: codigo (clave primaria), nombre.

Estas sentencias devuelven el mismo resultado:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 126


ADMINISTRACIN DE BASE DE DATOS

select nombre,titulo
from editoriales as e
left join libros as l
on e.codigo=l.codigoeditorial;

select nombre,titulo
from libros as l
right join editoriales as e
on e.codigo=l.codigoeditorial;

La primera busca valores de "codigo" de la tabla "editoriales" (tabla de la


izquierda) coincidentes con los valores de "codigoeditorial" de la tabla "libros"
(tabla de la derecha). La segunda busca valores de la tabla de la derecha
coincidentes con los valores de la tabla de la izquierda.

cross join.

"cross join" retorna todos los registros de todas las tablas implicadas en la unin,
devuelve el producto cartesiano. No es muy utilizado.

Un pequeo restaurante tiene almacenados los nombres y precios de sus comidas


en una tabla llamada "comidas" y en una tabla denominada "postres" los mismos
datos de sus postres.

El restaurante quiere combinar los registros de ambas tablas para mostrar los
distintos menes que ofrece. Podemos USAR "cross join":

select c.*,p.*
from comidas as c
cross join postres as p;

es igual a un simple "join" sin parte "on":

select c.*,p.*
from comidas as c
join postres as p;

Podemos organizar la salida del "cross join" para obtener el nombre del plato
principal, del postre y el precio total de cada combinacin (men):

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 127


ADMINISTRACIN DE BASE DE DATOS

select c.nombre,p.nombre,
c.precio+p.precio as total
from comidas as c
cross join postres as p;

Para realizar un "join" no es necesario utilizar 2 tablas, podemos combinar los


registros de una misma tabla. Para ello debemos utilizar 2 alias para la tabla.

Si los datos de las tablas anteriores ("comidas" y "postres") estuvieran en una sola
tabla con la siguiente estructura:

create table comidas(


codigo tinyint unsigned auto_increment,
nombre varchar(30),
rubro varchar(20),/*plato principal y postre*/
precio decimal (5,2) unsigned,
primary key(codigo)
);

Podemos obtener la combinacin de platos principales con postres empleando un


"cross join" con una sola tabla:

select c1.nombre,c1.precio,c2.nombre,c2.precio
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';

Se emple un "where" para combinar "plato principal" con "postre".

Si queremos el monto total de cada combinacin:

select c1.nombre,c2.nombre,
c1.precio+c2.precio as total
from comidas as c1
cross join comidas as c2
where c1.rubro='plato principal' and
c2.rubro='postre';

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 128


ADMINISTRACIN DE BASE DE DATOS

natural join.

"natural join" se usa cuando los campos por los cuales se enlazan las tablas tienen
el mismo nombre.

Tenemos las tablas "libros" y "editoriales" de una librera.

Las tablas tienen las siguientes estructuras:

- libros: codigo (clave primaria), titulo, autor, codigoeditorial, precio.

- editoriales: codigoeditorial(clave primaria), nombre.

Como en ambas tablas, el cdigo de la editorial se denomina "codigoeditorial",


podemos omitir la parte "on" que indica los nombres de los campos por el cual se
enlazan las tablas, empleando "natural join", se unirn por el campo que tienen en
comn:

select titulo,nombre
from libros as l
natural join editoriales as e;

La siguiente sentencia tiene la misma salida anterior:

select titulo,nombre
from libros as l
join editoriales as e
on l.codigoeditorial=e.codigoeditorial;

Tambin se puede usar "natural" con "left join" y "right join":

select nombre,titulo
from editoriales as e
natural left join libros as l;

que tiene la misma salida que:

select nombre,titulo
from editoriales as e

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 129


ADMINISTRACIN DE BASE DE DATOS

left join libros as l


on e.codigoeditorial=l.codigoeditorial;

Es decir, con "natural join" no se coloca la parte "on" que especifica los campos
por los cuales se enlazan las tablas, porque MySQL busca los campos con igual
nombre y enlaza las tablas por ese campo.

Hay que tener cuidado con este tipo de "join" porque si ambas tablas tiene ms de
un campo con igual nombre, MySQL no sabr por cual debe realizar la unin. Por
ejemplo, si el campo "titulo" de la tabla "libros" se llamara "nombre", las tablas
tendran 2 campos con igual nombre ("codigoeditorial" y "nombre").

Otro problema que puede surgir es el siguiente. Tenemos la tabla "libros" con los
siguientes campos: codigo (del libro), titulo, autor y codigoeditorial, y la tabla
"editoriales" con estos campos: codigo (de la editorial) y nombre. Si usamos
"natural join", unir las tablas por el campo "codigo", que es el campo que tienen
igual nombre, pero el campo "codigo" de "libros" no hace referencia al cdigo de la
editorial sino al del libro, as que la salida ser errnea.

inner join - straight join.

Existen otros tipos de "join" adems del simple "join", "left join", "right join", "cross
join" y "natural join". Vemoslos.

"inner join" es igual que "join". Con "inner join", todos los registros no coincidentes
son descartados, slo los coincidentes se muestran en el resultado:

select nombre,titulo
from editoriales as e
inner join libros as l
on e.codigo=l.codigoeditorial;

Tiene la misma salida que un simple "join":

select nombre,titulo
from editoriales as e
join libros as l
on e.codigo=l.codigoeditorial;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 130


ADMINISTRACIN DE BASE DE DATOS

"straight join" es igual a "join", slo que la tabla de la izquierda es leda


siempre antes que la de la derecha.

join con ms de dos tablas.

Podemos hacer un "join" con ms de dos tablas.

Una biblioteca registra la informacin de sus libros en una tabla llamada "libros",
los datos de sus socios en "socios" y los prstamos en una tabla "prestamos".

En la tabla "prestamos" haremos referencia al libro y al socio que lo solicita


colocando un cdigo que los identifique. Veamos:

create table libros(


codigo int unsigned auto_increment,
titulo varchar(40) not null,
autor varchar(20) default 'Desconocido',
primary key (codigo)
);

create socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);

create table prestamos(


documento char(8) not null,
codigolibro int unsigned,
fechaprestamo date not null,
fechadevolucion date,
primary key (codigolibro,fechaprestamo)
);

Al recuperar los datos de los prestamos:

select * from prestamos;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 131


ADMINISTRACIN DE BASE DE DATOS

Aparece el cdigo del libro pero no sabemos el nombre y tampoco el nombre del
socio sino su documento. Para obtener los datos completos de cada prstamo,
incluyendo esos datos, necesitamos consultar las tres tablas.

Hacemos un "join" (unin):

select nombre,titulo,fechaprestamo
from prestamos as p
join socios as s
on s.documento=p.documento
join libros as l
on codigolibro=codigo;

Analicemos la consulta anterior. Indicamos el nombre de la tabla luego del "from"


("prestamos"), unimos esa tabla con la tabla "socios" especificando con "on" el
campo por el cual se combinarn: el campo "documento" de ambas tablas; luego
debemos hacer coincidir los valores para la unin con la tabla "libros"
enlazndolas por los campos "codigolibro" y "codigo" de "libros". Utilizamos alias
para una sentencia ms sencilla y comprensible.

Note que especificamos a qu tabla pertenece el campos "documento" porque a


ese nombre de campo lo tienen las tablas "prestamos" y "socios", esto es
necesario para evitar confusiones y ambiguedades al momento de referenciar un
campo. En este ejemplo, si omitimos la referencia a las tablas al nombrar el campo
"documento" aparece un mensaje de error indicando que "documento" es
ambiguo.

Para ver todos los prestamos, incluso los que no encuentran coincidencia en las
otras tablas, usamos:

select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
left join libros as l
on l.codigo=p.codigolibro;

Podemos ver aquellos prestamos con valor coincidente para "libros" pero para
"socio" con y sin coincidencia:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 132


ADMINISTRACIN DE BASE DE DATOS

select nombre,titulo,fechaprestamo
from prestamos as p
left join socios as s
on p.documento=s.documento
join libros as l
on p.codigolibro=l.codigo;

UTILIZAR ALIAS EN UNA CONSULTA SQL.


Tenemos que hacer adems de construir la anterior consulta conoce bien el
lenguaje SQL, no tendr dificultades en interpretar la cabecera de la columna del
resultado anterior: sum(SALARIO) / count(*). Pero estaremos de acuerdo en
que no podra entregar a su jefe un informe con semejante encabezamiento. Para
solucionar esto el SQL pone a su disposicin la palabra clave AS, que permite
rebautizar con un alias o sobrenombre las cabeceras de las columnas de
resultado:
En general podemos rebautizar cualquier campo o expresin de la clusula
SELECT, para ello basta con colocar seguido del campo que interese la palabra
clave AS, precediendo al ALIAS que se quiere aplicar. Pongamos otro ejemplo:
nos piden una consulta que devuelva el nombre, apellidos y sueldo de todos los
empleados, pero con los encabezamientos de cada columna en ingls:
En realidad la palabra clave AS es solo un modo de enfatizar que se est
renombrando el campo de tabla, puede omitirla y el resultado ser el mismo. El
motor SQL entiende que si despus de un campo en la clusula SELECT,
colocamos una palabra y ambas estn separados por un espacio en lugar de una
coma, la primera es un campo de tabla y la segunda es su alias o sobrenombre.
Pruebe a llevar la anterior consulta al banco de pruebas eliminando antes de
ejecutarla las palabras claves AS, dejando como mnimo un espacio entre los
campos de tabla y sus alias
Sigamos con la totalizacin de datos. Acabbamos de explicar como calcular la
media de salarios de la tabla EMPLEADOS. El asunto ha quedado resuelto, pero
en realidad nos hemos complicado la vida sobremanera. Se ha hecho as adrede,
con el propsito de ver ms recursos del lenguaje y explicar mejor la totalizacin
de datos. En SQL existe un modo ms simplificado para calcular la media de un
campo mediante la funcin AVG (average, trmino en ingls que significa
promedio) Es de hecho una funcin como SUM o COUNT, pero con distinta
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 133
ADMINISTRACIN DE BASE DE DATOS

funcionalidad. La consulta es equivalente a la que construimos anteriormente y


quedara de la siguiente manera:
Antes de finalizar debo insistir en que estas funciones no devuelven un dato de la
tabla, sino que devuelven un clculo en funcin de los datos que contienen los
registros seleccionados, dando como resultado una nica fila. Por lo que no tiene
sentido mezclar en la clausula SELECT campos de la tabla con funciones de
totalizacin. Una consulta como la siguiente no tiene sentido, y el SGBD
devolver un error
Si estoy obteniendo un dato calculado sobre un grupo de registros, qu sentido
tiene acompaarlo de un dato singular de un solo registro? En la prxima leccin
abordaremos esto con ms detalle pero, veamos como estas situacin puede
darse fcilmente al malinterpretar este recurso.
Un "alias" se usa como nombre de un campo o de una expresin o para
referenciar una tabla cuando se utilizan ms de una tabla (tema que veremos ms
adelante).
Cuando usamos una funcin de agrupamiento, por ejemplo:
select count(*)
from libros
where autor like '%Borges%';

la columna en la salida tiene como encabezado "count(*)", para que el resultado


sea ms claro podemos utilizar un alias:

select count(*) as librosdeborges


from libros
where autor like '%Borges%';

La columna de la salida ahora tiene como encabezado el alias, lo que hace ms


comprensible el resultado.

Un alias puede tener hasta 255 caracteres, acepta todos los caracteres. La
palabra clave "as" es opcional en algunos casos, pero es conveniente usarla. Si el
alias consta de una sola cadena las comillas no son necesarias, pero si contiene
ms de una palabra, es necesario colocarla entre comillas.

Se pueden utilizar alias en las clsulas "group by", "order by", "having". Por
ejemplo:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 134


ADMINISTRACIN DE BASE DE DATOS

select editorial as 'Nombre de editorial'


from libros
group by 'Nombre de editorial';
select editorial, count(*) as cantidad
from libros
group by editorial
order by cantidad;
select editorial, count(*) as cantidad
from libros
group by editorial
having cantidad>2;

No est permitido utilizar alias de campos en las clusulas "where".

Los alias sern de suma importancia cuando rescate datos desde el lenguaje PHP

APLICAR LA SENTENCIA SQL JOIN PARA VARIAS TABLAS.

Son otro tipo de composicin de tablas, tambin denominada composicin


externa. Son una extensin del INNER JOIN.

Las composiciones vistas hasta ahora (el producto cartesiano y el INNER


JOIN) son composiciones internas ya que todos los valores de las filas del
resultado son valores que estn en las tablas que se combinan.

Con una composicin interna slo se obtienen las filas que tienen al menos una
fila de la otra tabla que cumpla la condicin.
Continuando con el artculo anterior, veremos en este las consultas SELECT
combinado columnas de distintas tablas. Este tipo de consultas nos permiten
explotar nuestro almacn de negocio de forma ms efectiva al relacionar datos de
distintas tablas.

CONSULTAS DE VARIAS TABLAS (Producto cartesiano de filas)--

Si no se hacen coincidir los valores de las columnas relacionadas se obtiene gran


duplicidad de filas. Tantas como el producto cartesiano de las filas de las tablas a l
as que se hacen referencia.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 135
ADMINISTRACIN DE BASE DE DATOS

CONVERTIR TIPOS DE DATOS AL MOMENTO DE EJECUTAR LA CONSULTA.

Para crear una consulta de datos anexados, siga estos pasos bsicos:

Cree una consulta de seleccin.


Convierta la consulta de seleccin en una consulta de datos anexados.
Elija los campos de destino para cada columna de la consulta de datos
anexados.
Ejecute la consulta para anexar los registros.

NOTA:

Recuerde que no se pueden deshacer los resultados de una consulta de datos


anexados, por lo que debe proceder con cuidado. Recuerde tambin que los tipos
de datos definidos para los campos de la tabla de origen deben ser compatibles
con los tipos de datos definidos para los campos de la tabla de destino. Por
ejemplo, se pueden anexar nmeros a un campo de texto, pero no se puede
anexar texto a un campo numrico a menos que se use una expresin, como
(Val(Campo_de_texto)), para convertir primero los datos al tipo de datos Nmero.

Para obtener ms informacin sobre los tipos de datos y cmo usarlos, vea el
artculo Modificar o cambiar el tipo de datos definido para un campo.

Crear una consulta de seleccin.

1. Abra la base de datos que contiene los registros que desee anexar.
2. En el grupo Otros de la ficha Crear, haga clic en Diseo de consulta.

Se abre el diseador de consultas y aparece el cuadro de dilogo Mostrar


tabla.

3. Seleccione cualquier combinacin de tablas o consultas que contengan los


registros que desee anexar, haga clic en Agregar y, a continuacin, haga clic
en Cerrar.

Las tablas o consultas aparecen como una o varias ventanas en la seccin


superior de la cuadrcula de diseo de la consulta. En estas ventanas se muestran

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 136


ADMINISTRACIN DE BASE DE DATOS

todos los campos de cada tabla o consulta. En esta ilustracin se muestra una
tabla tpica en el diseador de consultas.

4. Haga doble clic en los campos que desee anexar. Los campos seleccionados
aparecen en la fila Campo de la cuadrcula de diseo (la seccin inferior del
diseador de consultas).

Se puede agregar una expresin como =Fecha() para que se devuelva


automticamente la fecha actual, o bien, se pueden agregar campos de tabla o de
consulta a las celdas de la cuadrcula de diseo. Se puede agregar un campo de
tabla o de consulta por celda.

Para agregar rpidamente todos los campos de una tabla, haga doble clic en el
asterisco (*) que aparece en la parte superior de la lista de campos de tabla. En
esta ilustracin se muestra la cuadrcula de diseo con todos los campos
agregados.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 137


ADMINISTRACIN DE BASE DE DATOS

5. De manera opcional, se puede especificar uno o varios criterios en la fila


Criterios de la cuadrcula de diseo. En la siguiente tabla se muestran algunos
criterios de ejemplo y se explica cmo afectan a las consultas.

CRITERIOS EFECTO

Devuelve todos los nmeros mayores que 234. Para buscar todos los
> 234
nmeros menores que 234, use < 234.

>= "Daz" Devuelve todos los registros desde Daz hasta el final del alfabeto.

Devuelve las fechas comprendidas entre el 2 de febrero de 2007 y el 1 de


Entre #02.02.2007# Y diciembre de 2007 (ANSI-89). Si la base de datos usa los caracteres
#01.12.2007# comodn ANSI-92, use comillas simples (') en vez de signos de
almohadilla. Por ejemplo: Entre '02.02.2007' Y '01.12.2007'.

Encuentra todos los registros en los que el contenido exacto del campo no
es exactamente igual a "Alemania". El criterio devolver registros que
Sin "Alemania"
contienen caracteres adems de "Alemania," como "Alemania (euro)" o
"Europa (Alemania)".

Busca todos los registros, salvo los que empiezan por T. Si la base de
Sin "T*" datos usa los caracteres comodn ANSI-92, use el signo de porcentaje (%)
en vez del asterisco (*).

Busca todos los registros que no terminen en t. Si la base de datos usa el


No "*t" juego de caracteres comodn ANSI-92, use el signo de porcentaje en vez
del asterisco.

En(Canad,Reino En una lista, busca todos los registros que contengan Canad o Reino
Unido) Unido.

En un campo con el tipo de datos Texto, busca todos los registros que
empiecen por las letras comprendidas entre A y D. Si la base de datos usa
Como "[A-D]*"
el juego de caracteres comodn ANSI-92, use el signo de porcentaje en
vez del asterisco.

Busca todos los registros que incluyan el grupo de letras "ar". Si la base
Como "*ar*" de datos usa el juego de caracteres comodn ANSI-92, use el signo de
porcentaje en vez del asterisco.

Busca todos los registros que empiecen por "Casa" y contengan una
Como "Casa Dewe?" segunda cadena de 5 letras, cuyas cuatro primeras letras son "Dewe" y
cuya ltima letra se desconoce (lo cual viene indicado por el signo de
interrogacin). Si la base de datos usa el juego de caracteres comodn

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 138


ADMINISTRACIN DE BASE DE DATOS

ANSI-92, use el carcter de subrayado (_) en vez del signo de


interrogacin.

Busca todos los registros del 2 de febrero de 2007. Si la base de datos


usa el juego de caracteres comodn ANSI-92, incluya la fecha entre
#02.02.2007# comillas simples en vez de usar signos de almohadilla (#). Ejemplo:
'02.02.2007'.

< Fecha() - 30 Devuelve todas las fechas con una antigedad de ms de 30 das.

Fecha() Devuelve todos los registros que contienen la fecha actual.

Entre Fecha() Y Devuelve todos los registros entre la fecha actual y tres meses a partir de
AgregFecha("M", 3, la fecha actual.
Fecha())

Devuelve todos los registros que contengan un valor nulo (en blanco o sin
Es Nulo
definir).

No es Nulo Devuelve todos los registros que contienen un valor.

Devuelve todos los registros que contienen una cadena de longitud cero.
Las cadenas de longitud cero se utilizan cuando es necesario agregar un
valor a un campo obligatorio, pero an no se conoce el valor. Por ejemplo,
""
un campo puede requerir un nmero de fax, pero puede que algunos
clientes no tengan fax. En ese caso, se incluye un par de comillas dobles
sin espacios entre ellas ("") en lugar de un nmero.

6. En el grupo Resultados de la ficha Diseo, haga clic en Ejecutar.

7. Compruebe que la consulta devuelve los registros que desee actualizar. Si


desea agregar o quitar campos de la consulta, vuelva a la vista Diseo y
agregue los campos de acuerdo con lo descrito en el anterior paso, o bien,
seleccione los campos que desee quitar y presione SUPRIMIR para quitarlos de
la consulta.

8. Prosiga con el siguiente procedimiento, mediante el cual va a convertir la


consulta de seleccin en una consulta de datos anexados.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 139


ADMINISTRACIN DE BASE DE DATOS

Convertir la consulta de seleccin en una consulta de datos anexados.

1. Haga clic con el botn secundario en la ficha de documento de la consulta


abierta y haga clic en Vista Diseo en el men contextual.

O bien,

En el panel de exploracin, haga clic con el botn secundario en la consulta y, a


continuacin, haga clic en Vista Diseo en el men contextual.

2. En el grupo Tipo de consulta de la ficha Diseo, haga clic en Anexar.

Aparece el cuadro de dilogo Anexar.

3. Llegado a este punto, podr optar por anexar los registros de una tabla a otra
tabla de la misma base de datos, o bien, a una tabla de otra base de datos.

NOTA Si desea copiar registros a una nueva tabla, deber usar una consulta
de creacin de tabla.

La potencia real de una BD (o ms bien, de un sistema de gestin de BD) reside


en su capacidad para mostrar los datos que se desea y en el orden en que se
necesita. Las consultas permiten plantear preguntas sobre los datos
almacenados en las tablas. Los datos de una consulta pueden proceder de una o
varias tablas

Consulta: Objeto de la BD que permite formular preguntas sobre los datos


almacenados en las tablas. Usadas para ver, cambiar y analizar los datos de
diferentes maneras. Tambin se usan como origen de registros para
losformularios e informes.

Tipos de consultas.

De seleccin: Es el tipo de consulta ms habitual. Obtiene los datos de una o ms


tablas y muestra los resultados en una hoja de datos en la que es posible
actualizar los registros (con algunas restricciones). Tambin puede utilizar una
consulta de seleccin para agrupar los registros y calcular sumas, cuentas,
promedios y otros tipos de totales. Son esencialmente consultas para recuperar
datos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 140


ADMINISTRACIN DE BASE DE DATOS

De tabla de referencias cruzadas: muestra valores resumidos (sumas, cuentas y


promedios) de un campo de una tabla y los agrupa segn un conjunto de hechos
enumerados en el lado izquierdo de la hoja de datos y otro conjunto de hechos
enumerados en la parte superior de la hoja de datos. Permite resumir gran
cantidad de informacin en un formato de slo lectura.
De acciones: Son consultas que realizan cambios a muchos registros en una sola
operacin.
Existen cuatro tipos de consultas de accin:
De eliminacin: Elimina un grupo de registros de una o ms tablas.
De actualizacin: Realiza cambios globales a un grupo de registros de una o ms
tablas, dando la posibilidad de cambiar los datos de las tablas existentes
De datos anexados: Agrega un grupo de registros de una o ms tablas al final de
una o ms tablas. Pueden servir para aprovechar informacin que ya est
registrada en una tabla y se desea anexar a otra.
Consulta de creacin de tabla: Crea una tabla nueva a partir de todos o de parte
de los datos de una o ms tablas.
Consulta SQL: Se crea mediante una instruccin SQL. La consulta de unin , la
consulta de paso a travs , la consulta de definicin de datos y la subconsulta son
ejemplos de consultas especficas de SQL. Estos tipos de consultas requieren
conocimiento del lenguaje SQL (Structured Query Language, un estndar para la
manipulacin de BD relacionales), por lo que se reservan para usuarios
avanzados y quedan fuera del alcance de este material.

APLICAR INSTRUCCIONES AVANZADAS EN LAS CONSULTAS A LA BD.

No. Tiempo
No. Datos solicitados Consulta SQL registros de
obtenidos ejecucin

Mostrar el nombre de
1 todos los estados SELECT destado FROM Estados; 32 0.047 sec.
registrados.

SELECT destado, COUNT(cmunicipios)


Mostrar cuantos FROM Estados INNER JOIN Municipios
2 municipios tiene cada 32 0.078 sec.
estado ON cestados = estado

GROUP BY destado;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 141


ADMINISTRACIN DE BASE DE DATOS

select count(cmunicipios)
Mostrar cuantos
from municipios
3 municipios tiene el 1 0.000 sec.
estado de Morelos where estado=(select cestados from estados where
destado = 'morelos');

SELECT COUNT(cmunicipios)

FROM Estados, Municipios

WHERE estado = cestados AND destado = 'Morelos'

UNION ALL

SELECT COUNT(cmunicipios)

FROM Estados, Municipios

WHERE estado = cestados AND destado = 'Oaxaca'

UNION ALL

SELECT COUNT(cmunicipios)

FROM Estados, Municipios


Mostrar cuantos
WHERE estado = cestados AND destado = 'Guerrero'
municipios tienen los
estados de Morelos, UNION ALL
4 Oaxaca, Guerrero,
6 0.000 sec.
SELECT COUNT(cmunicipios)
Veracruz, Tlaxcala y el
Estado de Mxico FROM Estados, Municipios

WHERE estado = cestados AND destado = 'Veracruz


de Ignacio de la Llave'

UNION ALL

SELECT COUNT(cmunicipios)

FROM Estados, Municipios

WHERE estado = cestados AND destado = 'Tlaxcala'

UNION ALL

SELECT COUNT(cmunicipios)

FROM Estados, Municipios

WHERE estado = cestados AND destado = 'Mxico';

create view vista2 as select destado,count(cmunicipios)


as 'mm' from estados,municipios where
Mostrar el nombre del
cestados=estado
5 estado con menos 2 0.016 sec
municipios group by destado ORDER BY mm limit 2;

select destado from vista2;

create view vista3 as select destado,count(cmunicipios)


as 'mm' from estados,municipios where
Mostrar el nombre del
cestados=estado
6 estado con ms 1 0.063 sec.
municipios group by destado ORDER BY mm desc limit 1;

select destado from vista3;

7 Mostrar el nmero de create view sonora as select count(cmunicipios) as 'son' 1 0.033 sec
municipios entre Sonora

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 142


ADMINISTRACIN DE BASE DE DATOS

y Sinaloa, adems de la from municipios


diferencia entre ellos.
where estado=(select cestados from estados where
destado = 'sonora');

create view sinaloa as select count(cmunicipios) as 'sin'

from municipios

where estado=(select cestados from estados where


destado = 'sinaloa');

select son as sonora, sin as sinaloa, son-sin as


diferiencia from sonora,sinaloa;

SELECT dAsentamiento, cp, dtipoasentamiento,


dmunicipio, destado

FROM Estados, Municipios, Asentamientos,


Muestre el nombre de
TipoAsentamiento
TODAS las localidades
con su cdigo postal, WHERE ctipoasentamiento = 23.837
8 tipo de asentamiento, el tipoasentamiento.ctipoasentamiento AND municipios =
1000
sec.
municipio y el estado al cmunicipios
que pertenece
AND asentamientos.estado = cestados AND
municipios.estado = cestados

GROUP BY dAsentamiento;

SELECT COUNT(dasentamiento) AS TotalLocalidades


Muestre cuantas FROM Estados, Asentamientos, TipoAsentamiento
9 localidades tiene el 1 1.170 sec.
estado de Puebla WHERE ctipoasentamiento = tipoasentamiento

AND estado = cestados AND destado = 'Puebla';

SELECT dmunicipio, COUNT(dasentamiento) AS


TotalLocalidades

FROM Estados, Asentamientos, TipoAsentamiento,


Municipios
Muestre cuantas
localidades tiene cada WHERE ctipoasentamiento = tipoasentamiento
10 municipio del estado de
217 0.016 sec.
AND municipios.estado = cestados AND cmunicipios =
Puebla municipios

AND asentamientos.estado = cestados AND destado =


'Puebla'

GROUP BY dmunicipio;

SELECT dasentamiento AS Localidades


Muestre cuales son las
11 localidades del cdigo FROM Asentamientos 8 0.109 sec.
postal 74420
WHERE cp = 74420;

Muestre cuantas SELECT dtipoasentamiento, COUNT(dasentamiento)


12 localidades tiene cada AS TotalLocalidades 30 3.978 sec.
tipo de asentamiento FROM Asentamientos, TipoAsentamiento

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 143


ADMINISTRACIN DE BASE DE DATOS

WHERE ctipoasentamiento = tipoasentamiento

GROUP BY dtipoasentamiento;

SELECT dasentamiento AS Localidades


Muestre cuales son las
localidades fuera del FROM Estados, Asentamientos
13 cdigo postal 74420 y
1000 0.047
WHERE estado = cestados AND destado = 'Tabasco'
que pertenen a Tabasco
AND cp != 74420;

SELECT destado, dmunicipio, dasentamiento

FROM Estados, Asentamientos, TipoAsentamiento,


Muestre el nombre del Municipios
estado, el municipio y la
WHERE ctipoasentamiento = tipoasentamiento
14 localidad, donde el tipo 315 0.562 sec.
de asentamiento sea AND municipios.estado = cestados AND cmunicipios =
"Gran usuario municipios

AND asentamientos.estado = cestados AND


dtipoasentamiento = 'Gran usuario';

SELECT dasentamiento, dmunicipio

FROM Estados, Asentamientos, TipoAsentamiento,


Municipios

Muestre las localidades WHERE ctipoasentamiento = tipoasentamiento


15 del municipio de Izcar AND municipios.estado = cestados AND cmunicipios = 71 0.000 sec.
de Matamoros municipios

AND asentamientos.estado = cestados AND destado =


'Puebla'

AND dmunicipio = 'Izcar de Matamoros';

SELECT DISTINCT cp

FROM Estados, Asentamientos, Municipios


Muestre que cdigos
WHERE municipios.estado = cestados AND
16 postales pertenecen al
cmunicipios = municipios
5 0.015 sec.
municipio de Tepeojuma
AND asentamientos.estado = cestados

AND dmunicipio = 'Tepeojuma';

SELECT DISTINCT cp

FROM Estados, Asentamientos, Municipios


Muestre que cdigos
WHERE municipios.estado = cestados AND
17 postales pertenecen al
cmunicipios = municipios
1 1.622 sec.
municipio de Atencingo
AND asentamientos.estado = cestados

AND dasentamiento = 'atencingo';

SELECT dmunicipio
Muestre los municipios FROM Estados, Municipios
18 que se llaman igual que 7 0.016 sec.
el estado WHERE cestados = estado AND destado = dmunicipio

GROUP BY dmunicipio;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 144


ADMINISTRACIN DE BASE DE DATOS

SELECT dmunicipio

FROM Municipios
Muestre el municipio con
19 el nombre ms largo WHERE LENGTH(dmunicipio) = 1 0.062 sec.
(SELECT MAX(CHAR_LENGTH(dmunicipio)) FROM
Municipios);

SELECT DISTINCT dasentamiento

Muestre las localidades FROM Asentamientos


de tienen nombre de Ms de
20 santa, menos Santa
WHERE dasentamiento LIKE '%Santa%' 0.187 sec.
1000
Cruz AND dasentamiento NOT LIKE '%Santa Cruz%'

ORDER BY dasentamiento;

CREAR FUNCIONES EN UNA BASE DE DATOS.

Las funciones definidas por el usuario se crean con la instruccin CREATE


FUNCTION, se modifican con la instruccin ALTER FUNCTION y se quitan con la
instruccin DROP FUNCTION. Los nombres completos de las funciones definidas
por el usuario (schema_name.function_name) deben ser nicos.

Directrices.

Los errores de Transact-SQL que producen la cancelacin de una instruccin y


continan con la siguiente instruccin del mdulo, como desencadenadores o
procedimientos almacenados, se tratan de forma distinta dentro de una funcin.
En las funciones, estos errores hacen que se detenga la ejecucin de la funcin.
Esto hace que se cancele la funcin que invoc la instruccin.

Las instrucciones de un bloque BEGIN...END no pueden producir efectos


secundarios. Los efectos secundarios de una funcin son cambios definitivos del
estado de un recurso que est fuera del mbito de la funcin, como una
modificacin de una tabla de base de datos. Los nicos cambios que pueden
realizar las instrucciones de la funcin son cambios en objetos locales de la
funcin, como cursores o variables locales. En una funcin no se pueden llevar a
cabo algunas acciones como, por ejemplo, modificar tablas de base de datos,
realizar operaciones en cursores no locales de la funcin, enviar correo
electrnico, intentar modificar un catlogo o generar un conjunto de resultados que
se devuelve al usuario.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 145


ADMINISTRACIN DE BASE DE DATOS

Si una instruccin CREATE FUNCTION genera efectos secundarios sobre


recursos que no existen en el momento que se emite la instruccin CREATE
FUNCTION, SQL Server ejecuta la instruccin. Sin embargo, SQL Server no
ejecuta la funcin cuando sta se invoca.

El nmero de veces que se ejecuta realmente una funcin especificada en una


consulta puede variar entre los planes de ejecucin generados por el optimizador.
Un ejemplo es una funcin invocada por una subconsulta en una clusula
WHERE. El nmero de veces que se ejecuta la subconsulta y su funcin puede
variar con diferentes rutas de acceso seleccionadas por el optimizador.

CREATE FUNCTION admite una clusula SCHEMABINDING que enlaza la


funcin con el esquema de cualquier objeto al que haga referencia, como tablas,
vistas y otras funciones definidas por el usuario. Se producen errores al intentar
modificar o quitar objetos a los que hace referencia una funcin enlazada con un
esquema.

Para poder especificar SCHEMABINDING en CREATE FUNCTION deben


cumplirse estas condiciones:

Todas las vistas y las funciones definidas por el usuario a las que hace
referencia la funcin deben estar enlazadas con un esquema.
Todos los objetos a los que hace referencia la funcin deben encontrarse en la
misma base de datos que la funcin. Se debe hacer referencia a los objetos
mediante nombres de una o dos partes.
Se debe disponer de permisos REFERENCES en todos los objetos (tablas,
vistas y funciones definidas por el usuario) a los que hace referencia la funcin.

Se puede utilizar ALTER FUNCTION para quitar el enlace con el esquema. La


instruccin ALTER FUNCTION debe volver a definir la funcin sin especificar
WITH SCHEMABINDING.

Sintaxis Funciones.

CREATE [OR REPLACE] FUNCTION [esquema].nombre-funcin


(nombre-parmetro {IN | OUT | IN OUT} tipo-de-dato, ...)
RETURN tipo-de-dato {IS | AS}
Declaracin de variables;
Declaracin de constantes;
Declaracin de cursores;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 146


ADMINISTRACIN DE BASE DE DATOS

BEGIN
Cuerpo del subprograma PL/SQL;
EXCEPTION
Bloque de excepciones PL/SQL;
END;

Ejemplo de creacin de un procedimiento

CREATE OR REPLACE PROCEDURE


contratar_empleado
(w_codigo_emp
IN
emp.codigo_emp%TYPE,
w_depart
IN
emp.cod_depart%TYPE,
w_fecha_alta
IN
emp.fecha_alta%TYPE)
IS
BEGIN
INSERT INTO emp(cdigo_emp, fecha_alta, cod_depart)
VALUES (w_cdigo_emp, w_fecha_alta, w_depart);
END
contratar_empleado;
En este procedimiento se ha definido el tipo de dato de los parmetros de
entrada como del mismo tipo que los campos de la tabla emp , es decir:
nombreParametro IN nombreTabla.nombreColumna
%TYPE
.
Sera equivalente a poner:
w_codigo_emp number,
w_depart varchar..

Llamadas a funciones.

Desde otro procedimiento, funcin y triggers


CREATE PROCEDURE proceso ... IS ...
BEGIN ...
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 147
ADMINISTRACIN DE BASE DE DATOS

/* llamada a la funcin obtener_salario */


w_sal :=
obtener_salario
(w_cdigo);
END;
Desde un bloque annimo
BEGIN
DBMS_OUTPUT.PUT_LINE(Salario cod_emp 1 '||
obtener_salario
(1));
END;
Desde una instruccin SQL
SELECT cod_emp, nom_emp,
obtener_salario
(cod_emp)
FROM emp;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 148


ADMINISTRACIN DE BASE DE DATOS

Ejercicios y tareas de investigacin

2. Crear una tabla


trabajador que almacene su nombre, apellido, salario,cdigo de
trabajador y cdigo de departamento
departamento que guarde nombre de departamento y el cdigo de
departamento

Realizar lo siguiente:

Aplicar la sentencia JOIN para unir las tablas de trabajador y la de


departamento usando el cdigo de departamento como enlace.

Convertir el dato salario a un varchar 2 y mostrarlo.

3. Usar una subconsulta para mostrar todos los salarios de un trabajador


elegido aleatoriamente, se mostrara los salarios mayores al salario del
trabajador de comparacin.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 149


ADMINISTRACIN DE BASE DE DATOS

03
TAREA 03: ELABORAR PROCEDIMIENTOS ALMACENADOS.

OPERACIONES.
En esta tarea trataremos las siguientes operaciones:
Definir la utilidad de un procedimiento almacenado.
Disear procedimientos almacenados simples y complejos.
Administrar los procedimientos almacenados en una bd.

Equipos y Materiales:

Computadora con microprocesadores core 2 Duo o de mayor capacidad.


Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.

Orden de Ejecucin:

Definir la utilidad de un procedimiento almacenado.


Disear procedimientos almacenados simples y complejos.
Administrar los procedimientos almacenados en una bd.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 150


ADMINISTRACIN DE BASE DE DATOS

OPERACIONES
Operacin:

3.1. DEFINIR LA UTILIDAD DE UN PROCEDIMIENTO ALMACENADO.

Un Procedimiento Almacenado es un programa auto controlado escrito en


lenguaje del DBMS, son almacenados como parte de la Base de Datos y sus
metadatos.

Una vez creado un procedimiento almacenado, se puede invocar directamente


desde una aplicacin, o sustituir el nombre de una tabla o vista, por el nombre de
procedimiento en clusulas SELECT. Los procedimientos almacenados pueden
recibir parmetros de entrada y retornar valores a la aplicacin.
Las ventajas de usar los procedimientos almacenados incluyen:

o Aplicaciones que acceden la misma Base de Datos pueden compartir los


procedimientos almacenados, eliminando el cdigo doble y reduciendo el
tamao de las aplicaciones.
o Diseo modular.
o El fcil mantenimiento.
o Cuando un procedimiento se actualiza, los cambios se reflejan
automticamente en todas las aplicaciones, sin la necesidad de recompilar y
relinkear. Las aplicaciones son compiladas slo una vez para cada cliente.
o Los procedimientos almacenados son ejecutados por el servidor, no por el
cliente lo que reduce el trfico en la red y mejora el performance o desempeo,
especialmente para el acceso del cliente remoto.

Un procedimiento almacenado autocreable es un grupo de instrucciones que


llevan a cabo un procedimiento definido, que se termina de crear a travs del
envo de parmetros. En lo sucesivo los llamaremos "Au_Sp".

Ejemplo.

ste es un ejemplo de este tipo de procedimiento (este ejemplo est basado en el


manejador SQL Server). Este ejemplo crea una tabla con una estructura definida,
en una base de datos especfica, este procedimiento debe ser creado en la base
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 151
ADMINISTRACIN DE BASE DE DATOS

de datos MASTER. Este procedimiento es llamado por una funcin todos los das
a las 00:10 otorgndole como nombre de tabla HYS_"FECHAACTUAL".

SET QUOTED_IDENTIFIER OFF


GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE sp_Crear_Tabla_Recicle
(@BaseDeDatos SYSNAME,@TablaRecicle SYSNAME) AS
DECLARE @INSTRUCCION1 CHAR(2000)
DECLARE @INSTRUCCION2 CHAR(2000)
SELECT @INSTRUCCION1='' +
'CREATE TABLE [' + @BaseDeDatos + '].[dbo].[' + @TablaRecicle + '] (' +
'[Id_Reciclaje] [numeric](18, 0) IDENTITY (1, 1) NOT NULL,' +
'[Fecha_Exportacion] [datetime] NOT NULL,' +
'[Nombre] [char] (40) COLLATE database_default NOT NULL,' +
'[Paterno] [char] (30) COLLATE database_default NOT NULL,' +
'[Materno] [char] (30) COLLATE database_default NOT NULL,' +
') ON [PRIMARY] '
SELECT @INSTRUCCION2='' +
'ALTER TABLE [' + @BaseDeDatos + '].[dbo].['+@TablaRecicle+'] WITH
NOCHECK ADD ' +
'CONSTRAINT [DF_'+@TablaRecicle+'_Paterno] DEFAULT
('+CHAR(39)+CHAR(39)+') FOR [Paterno],' +
'CONSTRAINT [DF_'+@TablaRecicle+'_Materno] DEFAULT
('+CHAR(39)+CHAR(39)+') FOR [Materno],' +
'CONSTRAINT [DF_'+@TablaRecicle+'_Resultado] DEFAULT
('+CHAR(39)+CHAR(39)+') FOR [Resultado],' +
'CONSTRAINT [PK_'+@TablaRecicle+'] PRIMARY KEY CLUSTERED ' +
'(' +
' [Id_Reciclaje]' +
') ON [PRIMARY] '

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 152


ADMINISTRACIN DE BASE DE DATOS

3.2. DISEAR PROCEDIMIENTOS ALMACENADOS SIMPLES Y


COMPLEJOS.

Sintaxis para Crear Procedimientos.

o Utilice CREATE PROCEDURE seguido del nombre, los parmetros opcionales


y la palabra clave IS o AS.
o Agregue la opcin OR REPLACE para sustituir un procedimiento existente.
o Escriba un bloque PL/SQL que contenga variables locales, un valor BEGIN y un
valor END (o END procedure_name)

Desarrollo de Procedimientos:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 153


ADMINISTRACIN DE BASE DE DATOS

Qu son los Parmetros?

Parmetros:
o Se declaran despus del nombre del subprograma en la cabecera PL/SQL
o Transfieren o comunican datos entre el emisor de la llamada y el subprograma.
o Se utilizan como variables locales, pero dependen del modo de transferencia de
parmetros:
Un parmetro IN (valor por defecto) proporciona valores para que un
subprograma los procese.
Un parmetro OUT devuelve un valor al emisor de la llamada.
Un parmetro IN OUT proporciona un valor de entrada, que se puede
devolver (salida) como valor modificado.

Parmetros formales: Variables locales que se declaran en la lista de


parmetros de una especificacin de subprograma
Ejemplo:
CREATE PROCEDURE raise_sal(id NUMBER,sal NUMBER) IS
BEGIN
END raise_sal;

Parmetros reales: Valores literales, variables o expresiones utilizadas en la


lista de parmetros del subprograma llamado
Ejemplo:
emp_id := 100;
raise_sal(emp_id, 2000)

Modos de Parmetros de Procedimiento.

o Los modos de parmetros se especifican en la declaracin de parmetros


formales, despus del nombre del parmetro y antes del tipo de dato.
o El modo IN es el valor por defecto si no se especifica ningn modo.

CREATE PROCEDURE procedure(param [mode] datatype)


...

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 154


ADMINISTRACIN DE BASE DE DATOS

Uso de Parmetros IN:

Ejemplo:

Uso de Parmetros OUT:

Ejemplo:

Visualizacin de Parmetros OUT con iSQL*Plus

o Utilice las variables PL/SQL que se imprimen con llamadas al procedimiento


DBMS_OUTPUT.PUT_LINE.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 155
ADMINISTRACIN DE BASE DE DATOS

o Utilice variables del host de iSQL*Plus, ejecute QUERY_EMP con variables del
host e imprima las variables del host.

Uso de Parmetros IN OUT: Ejemplo:

Transferencia de Parmetros:

Ejemplos:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 156


ADMINISTRACIN DE BASE DE DATOS

o Transferencia por notacin posicional.

o Transferencia por notacin con nombre.

Uso de la Opcin DEFAULT para Parmetros.

o Define valores por defecto para parmetros:

o Proporciona flexibilidad combinando la sintaxis de transferencia de parmetros


posicional y con nombre:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 157


ADMINISTRACIN DE BASE DE DATOS

Resumen de los Modos de Parmetros:

IN OUT IN OUT
Modo por defecto Se debe especificar Se debe especificar

Se transfiere al subprograma;
El valor se transfiere al Se devuelve al entono de
se devuelve al entorno de
subprograma llamada
llamada
El parmetro formal funciona
Variable no inicializada Variable inicializada
como una constante
El parmetro real puede ser un
literal, una expresin, una
Debe ser una variable Debe ser una variable
constante o una variable
inicializada
Se le puede asignar un valor No s e puede asignar un valor No se le puede asignar un
por defecto por defecto valor por defecto

Llamada a los Procedimientos.

Puede llamar a los parmetros mediante:


o Bloques annimos.
o Otro procedimiento, como en el siguiente ejemplo:

Excepciones Manejadas

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 158


ADMINISTRACIN DE BASE DE DATOS

Ejemplos:

Excepciones no Manejadas.

Ejemplo:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 159


ADMINISTRACIN DE BASE DE DATOS

Eliminacin de Procedimientos.
Puede eliminar un procedimiento que est almacenado en la base de datos.
Sintaxis:

Ejemplo:

Visualizacin de Procedimientos en el Diccionario de Datos


La informacin de los procedimientos PL/SQL se guarda
en las siguientes vistas del diccionario de datos:

o Vista del cdigo de origen en la tabla USER_SOURCE para ver los


subprogramas de los que es propietario o la tabla ALL_SOURCE para ver los
procedimientos que son propiedad de otros usuarios que le han otorgado el
privilegio EXECUTE.

o Vista de los nombres de procedimientos en USER_OBJECTS.

Ventajas de los Subprogramas:


o Mantenimiento sencillo.
o Integridad y seguridad de datos mejorada.
o Rendimiento mejorado.
o Claridad de cdigo mejorada.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 160


ADMINISTRACIN DE BASE DE DATOS

3.3. ADMINISTRAR LOS PROCEDIMIENTOS ALMACENADOS EN UNA BD.

Un procedimiento almacenado es un programa que se guarda fsicamente en una


base de datos. Su implementacin vara de un gestor de bases de datos a otro.
Este programa esta hecho con un lenguaje propio de cada Gestor de BD y esta
compilado, por lo que la velocidad de ejecucin es muy rpida.

Las principales ventajas son:

El S.G.B.D. es capaz de trabajar ms rpido con los datos que cualquier


programa externo, ya que posee acceso directo a los datos a manipular y slo
necesita enviar el resultado final al usuario.

Slo realizamos una conexin al servidor y este ya es capaz de realizar todas


las comprobaciones sin tener que volver a establecer una conexin.

Podemos reutilizar el procedimiento y este puede ser llamado desde diferentes


aplicaciones y lenguajes. Slo lo programaremos una vez.

La desventaja principal es que se guarda en la B.D., por o que si se corrompe


podemos perder los procedimientos. La solucin como siempre en las BB.DD. es
tener una buena poltica de copias de seguridad.

Bueno dejemos la teora y vayamos a la prctica este es el ejemplo de un


procedimiento almacenado:

DELIMITER //

CREATE PROCEDURE addAutomovil(IN nombre VARCHAR(50),IN plazas


INT)

BEGIN

IF plazas < 6 THEN

INSERT INTO coche VALUES(nombre,plazas);

ELSE

INSERT INTO monovolumen VALUES(nombre,plazas);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 161


ADMINISTRACIN DE BASE DE DATOS

END IF;

END;

Este procedimiento almacenado recibe los parmatros de nombre y nmero de


plazas y en funcin de las plazas del vehculo inserta los datos en la tabla coche o
monovolumen. Es una funcin bien tonta, lo s, incluso podra ser ms lenta como
procedimiento almacenado que como cdigo en nuestro programa. Pero es
simplemente un ejemplo.

Para hacer una llamada al procedimiento almacenado basta con usar la sentencia
call:

> CALL addAutomovil("Nissan Serena",8);

De ahora en adelante, usaremos siempre este procedimiento para introducir


automviles en la B.D. de forma que si un da se debe modificar slo deberemos
corregir el procedimiento.

FUNDAMENTO TERICO:

DEFINIR LA UTILIDAD DE UN PROCEDIMIENTO ALMACENADO.

Definicin de un Procedimiento.
Un procedimiento es un bloque PL/SQL con nombre que puede aceptar
parmetros (a veces denominados argumentos). Generalmente, un procedimiento
se utiliza para realizar una accin. Tiene una cabecera, una seccin de
declaraciones, una seccin ejecutable y una seccin de manejo de excepciones
opcional. Para llamar a un procedimiento, se utiliza el nombre del procedimiento
en la seccin ejecutable de otro bloque PL/SQL.

Un procedimiento se compila y almacena en la base de datos como objeto de


esquema. Si est utilizando los procedimientos con Oracle Forms y Reports, stos
se pueden compilar dentro de los ejecutables de Oracle Forms u Oracle Reports.

Los procedimientos fomentan la capacidad de reutilizacin y mantenimiento. Al


validarlos, se pueden utilizar en cualquier nmero de aplicaciones. Si los requisitos
cambian, slo es necesario actualizar el procedimiento.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 162


ADMINISTRACIN DE BASE DE DATOS

Sintaxis para Crear Procedimientos.

Se crean nuevos procedimientos con la sentencia CREATE PROCEDURE, que


puede declarar una lista de parmetros y debe definir las acciones que debe
realizar el bloque PL/SQL estndar. La clusula CREATE permite crear
procedimientos autnomos que se almacenan en una base de datos Oracle.

Los bloques PL/SQL empiezan por BEGIN, precedido opcionalmente por la


declaracin de variables locales. Los bloques PL/SQL terminan en END o END
procedure_name.
La opcin REPLACE indica que si el procedimiento existe, se borra y se
sustituye por la nueva versin creada por la sentencia.

Otros Elementos Sintcticos:

parameter1 representa el nombre de un parmetro.


La opcin mode define cmo se utiliza un parmetro: IN (valor por defecto),
OUT o IN OUT.
datatype1 especifica el tipo de dato del parmetro, sin ninguna precisin.

Nota: Los parmetros se pueden considerar como variables locales. No se puede


hacer referencia a las variables de sustitucin ni de host (ligadas) en la definicin
de un procedimiento PL/SQL almacenado.

La opcin OR REPLACE no necesita ningn cambio en la seguridad de los


objetos, siempre y cuando el usuario sea el propietario del objeto y tenga el
privilegio CREATE [ANY] PROCEDURE.

Desarrollo de Procedimientos.

Para desarrollar un procedimiento almacenado, realice los siguientes pasos:

1. Escriba el cdigo para crear un procedimiento en un editor o procesador de


texto y, a continuacin, gurdelo como archivo de comandos SQL (normalmente
con una extensin .sql).
2. Cargue el cdigo en una de las herramientas de desarrollo como SQL*Plus o
iSQL*Plus.
3. Cree el procedimiento en la base de datos. La sentencia CREATE
PROCEDURE compila y almacena el cdigo de origen y el valor de m-code
compilado en la base de datos. Si se produce un error de compilacin, el valor

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 163


ADMINISTRACIN DE BASE DE DATOS

de m-code no se almacena y debe editar el cdigo de origen para realizar las


correcciones.

No se puede llamar a un procedimiento que contenga errores de compilacin.


Para ver los errores de compilacin en SQL*Plus o iSQL*Plus, utilice:
- SHOW ERRORS para el procedimiento compilado ms recientemente (el
ltimo).
- SHOW ERRORS PROCEDURE procedure_name para cualquier
procedimiento compilado anteriormente

4. Despus de terminar la compilacin correctamente, ejecute el procedimiento


para realizar la accin deseada. Utilice el comando EXECUTE de iSQL*Plus

Qu son los Parmetros?

Los parmetros se utilizan para transferir valores de datos a y desde el entorno de


llamada y el procedimiento (o subprograma). Los parmetros se declaran en la
cabecera del subprograma, despus del nombre y antes de la seccin de
declaraciones de las variables locales.

Los parmetros estn sujetos a uno de los tres modos de transferencia de


parmetros: IN, OUT o IN OUT.

Un parmetro IN transfiere un valor constante desde el entorno de llamada al


procedimiento.
Un parmetro OUT transfiere un valor del procedimiento al entorno de llamada.
Un parmetro IN OUT transfiere un valor del entorno de llamada al
procedimiento y un valor posiblemente distinto del procedimiento al entorno de
llamada mediante el mismo parmetro. Los parmetros se pueden considerar
como una forma especial de variable local, cuyos valores de entrada inicializa el
entorno de llamada al llamar al subprograma y cuyos valores de salida se
devuelven al entorno de llamada cuando el subprograma devuelve el control al
emisor de la llamada.

Parmetros Formales y Reales.

Los parmetros formales son variables locales que se declaran en la lista de


parmetros de una especificacin de subprograma. En el primer ejemplo, en el
procedimiento raise_sal, los identificadores id y sal variables representan los
parmetros formales.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 164


ADMINISTRACIN DE BASE DE DATOS

Los parmetros reales pueden ser valores literales, variables o expresiones que se
proporcionan en la lista de parmetros de un subprograma llamado. En el segundo
ejemplo, se realiza una llamada a raise_sal, donde la variable emp_id proporciona
el valor de parmetro real para el parmetro formal id y 2000 se proporciona como
el valor de parmetro real para sal. Parmetros reales:

Se asocian a parmetros formales durante la llamada al subprograma.


Pueden ser tambin expresiones, como en el siguiente ejemplo:
raise_sal(emp_id, raise+100);

Los parmetros formales y reales deben ser de tipos de dato compatibles. Si es


necesario, antes de asignar el valor, PL/SQL convierte el tipo de dato del valor de
parmetro real al del parmetro formal

Modos de Parmetros de Procedimiento.

Al crear el procedimiento, el parmetro formal define un nombre de variable cuyo


valor se utiliza en la seccin ejecutable del bloque PL/SQL. El parmetro real se
utiliza al llamar al procedimiento para proporcionar los valores de entrada o recibir
los resultados de salida.

El modo de parmetro IN es el modo de transferencia por defecto. Es decir, si no


se especifica ningn modo con una declaracin de parmetro, el parmetro se
considera un parmetro IN.

Los modos de parmetros OUT y IN OUT se deben especificar explcitamente en


las declaraciones de parmetros.

El parmetro datatype se especifica sin especificacin de tamao. Se puede


especificar:
- Como tipo de dato explcito.
- Con la definicin %TYPE.
- Con la definicin %ROWTYPE.

Nota:
Se pueden declarar uno o ms parmetros formales, separndolos entre s
mediante una coma

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 165


ADMINISTRACIN DE BASE DE DATOS

Uso de Parmetros IN:

Ejemplo:
El ejemplo muestra un procedimiento con dos parmetros IN. Al ejecutar esta
primera sentencia en iSQL*Plus se crea el procedimiento raise_salary en la base
de datos. El segundo ejemplo llama a raise_salary y proporciona el primer valor de
parmetro 176 para el identificador de empleado y un aumento del porcentaje del
salario del 10% para el segundo valor de parmetro.

Para llamar a un procedimiento en iSQL*Plus, utilice el siguiente comando


EXECUTE:

EXECUTE raise_salary (176, 10)

Para llamar a un procedimiento desde otro procedimiento, utilice una llamada


directa dentro de una seccin ejecutable del bloque de llamada. En la ubicacin de
la llamada al nuevo procedimiento, introduzca el nombre del procedimiento y los
parmetros reales. Por ejemplo:
...
BEGIN
raise_salary (176, 10);
END;
Nota: Los parmetros IN se transfieren como valores de slo lectura del entorno
Uso de Parmetros OUT:

Ejemplo:
En este ejemplo, se crea un procedimiento con parmetros OUT para recuperar
informacin sobre un empleado. El procedimiento acepta el valor 171 para el
identificador de empleado y recupera el nombre y el salario del empleado con
identificador 171 en los dos parmetros OUT. El procedimiento query_emp tiene
tres parmetros formales. Dos de ellos son parmetros OUT que devuelven
valores al entorno de llamada, que se muestra en el recuadro de cdigo situado en
la parte inferior de la transparencia. El procedimiento acepta un valor de
identificador de empleado a travs del parmetro id. Las variables emp_name y
emp_salary se rellenan con la informacin recuperada de la consulta en los dos
parmetros OUT correspondientes.

Si imprime los valores devueltos en variables PL/SQL del bloque de llamada que
se muestra en el segundo bloque de cdigo, las variables contendrn los
siguientes valores:
- emp_name contiene el valor Smith.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 166
ADMINISTRACIN DE BASE DE DATOS

- emp_salary contiene el valor 7600.

Nota: Asegrese de que el tipo de dato de las variables de parmetros reales


utilizadas para recuperar valores de los parmetros OUT tiene el tamao suficiente
para contener los valores de datos devueltos.

Si intenta utilizar o leer parmetros OUT dentro del procedimiento que los declara,

Visualizacin de Parmetros OUT con iSQL*Plus

Los ejemplos muestran dos formas de visualizar los valores devueltos de los
parmetros OUT.
- La primera tcnica utiliza variables PL/SQL en un bloque annimo para
recuperar los valores del parmetro OUT. El procedimiento
DBMS_OUPUT.PUT_LINE se llama para imprimir los valores que contienen las
variables PL/SQL. SET SERVEROUPUT debe estar en modo ON.
- La segunda tcnica muestra cmo utilizar las variables iSQL*Plus que se crean
con el comando VARIABLE. Las variables iSQL*Plus son externas al bloque
PL/SQL y se conocen como variables ligadas o de host. Para hacer referencia a
variables de host desde un bloque PL/SQL, debe anteponer dos puntos (:) a los
nombres. Para mostrar los valores almacenados en las variables de host, debe
utilizar el comando PRINT de iSQL*Plus seguido del nombre de la variable
iSQL*Plus (sin los dos puntos, ya que no se trata de un comando PL/SQL o un
contexto).

Para utilizar variables de host y iSQL*Plus al llamar a un procedimiento con los


parmetros OUT, realice los siguientes pasos:

1. Cree un archivo de comandos iSQL*Plus mediante un editor.


2. Agregue comandos para crear las variables, ejecute el procedimiento e imprima
las variables.
3. Cargue y ejecute el archivo de comandos iSQL*Plus.
Nota: Para obtener ms informacin sobre el comando VARIABLE, consulte

Llamada a PL/SQL con Variables de Host

El cdigo PL/SQL que se almacena en la base de datos se puede llamar desde


una gran variedad de entornos, como:

- SQL*Plus o iSQL*Plus
- Oracle Forms y Oracle Reports
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 167
ADMINISTRACIN DE BASE DE DATOS

- Aplicaciones Java y C

Cada uno de los entornos indicados proporciona distintas formas de declarar


variables para almacenar datos en la memoria. Los valores de variable de estas
aplicaciones se definen y mantienen fuera del cdigo PL/SQL almacenado. Cada
entorno proporciona una forma de transferir los datos de las variables a PL/SQL y
recibir valores actualizados del cdigo PL/SQL. En general, la mayora de los
diomas alojan llamadas a subprogramas o bloques PL/SQL.

El sistema PL/SQL utiliza una tcnica llamada enlace para asociar los valores
proporcionados desde ubicaciones externas a variables PL/SQL o parmetros
declarados en los subprogramas PL/SQL.

A diferencia de Java, PL/SQL reconoce las variables de host por la presencia de


los dos puntos antes del nombre de la variable externa cuando se utiliza en un
bloque PL/SQL.

No puede almacenar cdigo PL/SQL con variables de host, ya que el compilador


no puede resolver las referencias a variables de host. El proceso de enlace se
realiza en tiempo de ejecucin.

Uso de Parmetros IN OUT:

Ejemplo:
Con un parmetro IN OUT, puede transferir un valor a un procedimiento que se
puede actualizar. El valor de parmetro real proporcionado desde el entorno de
llamada se puede devolver de las siguientes formas:
- Como el valor original sin cambiar.
- Como un nuevo valor que se define dentro del procedimiento

Nota:
Un parmetro IN OUT funciona como variable inicializada.

El ejemplo de la transparencia crea un procedimiento con un parmetro IN OUT


para aceptar una cadena de 10 caracteres que contenga los dgitos de un nmero
de telfono. El procedimiento devuelve el nmero de telfono con los tres primeros
caracteres entre parntesis y un guin despus del sexto dgito. Por ejemplo, la
cadena de telfono 8006330575 se devuelve como (800) 633-0575.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 168


ADMINISTRACIN DE BASE DE DATOS

El siguiente cdigo utiliza la variable de host phone_no de iSQL*Plus para


proporcionar el valor de entrada transferido al procedimiento FORMAT_PHONE.
El procedimiento se ejecuta y devuelve una cadena actualizada en la variable de
host phone_no.

VARIABLE phone_no VARCHAR2(15)


EXECUTE :phone_no := '8006330575'
PRINT phone_no
EXECUTE format_phone (:phone_no)

Sintaxis de Transferencia de Parmetros.

Para un procedimiento que contiene varios parmetros, puede utilizar diferentes


mtodos para especificar los valores de los parmetros. Los mtodos son:
- Posicional, que muestra los valores de parmetro real en el orden en el que se
declaran los parmetros formales.
- Con nombre, que muestra los valores reales en orden arbitrario y utiliza el
operador de asociacin para asociar cada parmetro real a su parmetro formal
por nombre. El operador de asociacin PL/SQL es un signo igual seguido de un
signo mayor que, sin espacios: =>.
- Combinacin, que muestra los primeros valores del parmetro por posicin y el
resto mediante la sintaxis especial del mtodo con nombre.

Transferencia de Parmetros:

Ejemplos:

En el ejemplo, el procedimiento add_dept declara dos parmetros IN: name y loc.


Los valores de estos parmetros se utilizan en la sentencia INSERT para definir
las columnas department_name y location_id, respectivamente.
La transferencia de parmetros por posicin se muestra en la primera llamada
para ejecutar add_dept debajo de la definicin del procedimiento. El primer
parmetro real proporciona el valor 'TRAINING' para el parmetro name. El
segundo valor de parmetro real 2500 se asigna por posicin al parmetro loc.

La transferencia de parmetros con la notacin con nombre se muestra en el


ltimo ejemplo. Aqu se hace referencia al ltimo parmetro loc, que se declara
como el segundo parmetro formal, segn el nombre en la llamada donde se
asocia al valor real 2400. El parmetro name se asocia al valor 'EDUCATION'. El
orden de los parmetros reales es irrelevante si se especifican todos los valores
de parmetro.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 169
ADMINISTRACIN DE BASE DE DATOS

Nota:
Debe proporcionar un valor para cada parmetro a menos que se asigne un valor
por defecto al parmetro formal. La especificacin de valores por defecto para
parmetros formales se describe a continuacin.

Uso de la Opcin DEFAULT para Parmetros.

Los ejemplos de cdigo de la transparencia muestran dos formas de asignar un


valor por defecto a un parmetro IN. Las dos formas que se muestran utilizan:

- El operador de asignacin (:=), como se muestra para el parmetro name.


- La opcin DEFAULT, como se muestra para el parmetro loc.

Cuando se asignan valores por defecto a parmetros formales, puede llamar al


procedimiento sin proporcionar un valor de parmetro real para el parmetro. Por
lo tanto, puede transferir distinta cantidad de parmetros reales a un subprograma,
ya sea aceptando o sustituyendo los valores por defecto segn sea necesario. Se
recomienda declarar los parmetros sin valores por defecto primero. A
continuacin, puede agregar parmetros formales con valores por defecto sin
tener que cambiar cada llamada al procedimiento.

Nota:
No se pueden asignar valores por defecto a parmetros OUT e IN OUT.

La transparencia muestra tres formas de llamar al procedimiento add_dept:

- El primer ejemplo asigna los valores por defecto para cada parmetro.
- El segundo ejemplo ilustra una combinacin de notacin posicional y con
nombre para asignar valores. En este caso, el uso de notacin con nombre se
muestra como ejemplo.
- El ltimo ejemplo utiliza el valor por defecto del parmetro name y el valor
proporcionado para el parmetro loc.

Normalmente, puede utilizar la notacin con nombre para sustituir los valores por
defecto de los parmetros formales. Sin embargo, no se puede saltar la
especificacin de un parmetro real si no se ha proporcionado ningn valor por
defecto para un parmetro formal.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 170


ADMINISTRACIN DE BASE DE DATOS

Nota:
Todos los parmetros posicionales se deben anteponer a los parmetros con
nombre en una llamada de subprograma. De lo contrario, recibir un mensaje de
error, como se muestra en el siguiente ejemplo:

EXECUTE add_dept(name=>'new dept', 'new location')


Se genera el siguiente mensaje de error:
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to
'ADD_DEPT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Resumen de los Modos de Parmetros.

El modo de parmetro IN es el modo por defecto si no se especifica ningn modo


en la declaracin. Los modos de parmetro OUT e IN OUT se deben especificar
explcitamente en las declaraciones de parmetros.

No se puede asignar un valor a un parmetro formal del modo IN ni modificar ste


en el cuerpo del procedimiento. Por defecto, el parmetro IN se transfiere por
referencia. Se puede asignar un valor por defecto a un parmetro IN en la
declaracin de parmetro formal, en cuyo caso el emisor de la llamada no tendr
que proporcionar un valor para el parmetro si se aplica el valor por defecto.

Los parmetros OUT o IN OUT deben tener un valor asignado antes de volver al
entorno de llamada. No se pueden asignar valores por defecto a los parmetros
OUT e IN OUT. Para mejorar el rendimiento con parmetros OUT e IN OUT, se
puede utilizar la indicacin del compilador NOCOPY para solicitar la transferencia
por referencia.

Nota:
El uso de NOCOPY se describe ms adelante en este curso.

Llamada a los Procedimientos

Puede llamar a los procedimientos mediante:


- Bloques annimos.
- Otro procedimiento o subprograma PL/SQL

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 171


ADMINISTRACIN DE BASE DE DATOS

Algunos ejemplos de las pginas anteriores ilustran cmo utilizar bloques


annimos (o el comando EXECUTE en iSQL*Plus).

Este ejemplo muestra cmo llamar a un procedimiento desde otro procedimiento


almacenado.

El procedimiento almacenado PROCESS_EMPS utiliza un cursor para procesar


todos los registros de la tabla EMPLOYEES y transfiere cada identificador de
empleado al procedimiento RAISE_SALARY, lo que da como resultado un
incremento de salario del 10% en la compaa.

Excepciones Manejadas.

Al desarrollar procedimientos llamados desde otros procedimientos, debe tener en


cuenta los efectos que tienen las excepciones manejadas y no manejadas en la
transaccin y el procedimiento de llamada.

Cuando se produce una excepcin en un procedimiento llamado, el control va


inmediatamente a la seccin de excepciones de dicho bloque. Una excepcin se
considera manejada si la seccin de excepciones proporciona un manejador para
la excepcin producida.

Cuando se produce una excepcin y sta se maneja, tiene lugar el siguiente flujo
de cdigo:
1. Se produce la excepcin.
2. Se transfiere el control al manejador de excepciones.
3. El bloque se termina.
4. El programa o bloque de llamada se sigue ejecutando como si no hubiera
ocurrido nada.

Si se ha iniciado una transaccin (es decir, si se han ejecutado sentencias de


lenguaje de manipulacin de datos (DML) antes de ejecutar el procedimiento en el
que se ha producido la excepcin), la transaccin no se ver afectada.

Excepciones Manejadas:

Ejemplo:
Los dos procedimientos del ejemplo son los siguientes:

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 172


ADMINISTRACIN DE BASE DE DATOS

- El procedimiento add_department crea un nuevo registro de departamento


asignando un nuevo nmero de departamento de una secuencia Oracle y define
los valores de columna department_name, manager_id y location_id con los
parmetros name, mgr y loc, respectivamente.

- El procedimiento create_departments crea ms de un departamento utilizando


llamadas al procedimiento add_department.

El procedimiento add_department recopila todas las excepciones producidas en su


propio manejador. Cuando se ejecuta create_departments, se genera la siguiente
salida:

Added Dept: Media


Err: Adding Dept: Editing
Added Dept: Advertising

El departamento Editing con el valor 99 para manager_id no se ha insertado


debido a una violacin de la restriccin de integridad de clave ajena en
manager_id.

Puesto que la excepcin se ha manejado en el procedimiento add_department, el


procedimiento create_department se sigue ejecutando. Una consulta de la tabla
DEPARTMENTS donde

Excepciones No Manejadas.

Tal como se ha descrito, cuando se produce una excepcin en un procedimiento


llamado, el control va inmediatamente a la seccin de excepciones de dicho
bloque. Si la seccin de excepciones no proporciona un manejador para la
excepcin producida, sta no se maneja.

Se produce el siguiente flujo de cdigo:

1. Se produce la excepcin.
2. El bloque termina porque no existe ningn manejador de excepciones; se
realiza un rollback de cualquier operacin DML realizada en el procedimiento.
3. La excepcin se propaga a la seccin de excepciones del procedimiento de
llamada.

Es decir, el control se devuelve a la seccin de excepciones del bloque de


llamada, si existe.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 173


ADMINISTRACIN DE BASE DE DATOS

Si no se maneja una excepcin, se realiza un rollback de todas las sentencias


DML del procedimiento de llamada y el procedimiento llamado, as como de los
cambios realizados en cualquier variable de host. Las sentencias DML que no se
ven afectadas son sentencias que se han ejecutado antes de llamar al cdigo PL/
SQL cuyas excepciones no se han manejado.

Excepciones No Manejadas:

Ejemplo:
El ejemplo de cdigo de la transparencia muestra add_department_noex, que no
tiene una seccin de excepciones. En este caso, la excepcin se produce cuando
se agrega el departamento Editing. Debido a la falta de manejo de excepciones en
los subprogramas, no se agrega ningn registro de departamento nuevo a la tabla
DEPARTMENTS. Al ejecutar el procedimiento
create_departments_noex se produce un resultado similar al siguiente:

Added Dept: Media


BEGIN create_departments_noex; END;
*
ERROR at line 1:
ORA-02291: integrity constraint (ORA1.DEPT_MGR_FK)
violated - parent key not
found
ORA-06512: at "ORA1.ADD_DEPARTMENT_NOEX", line 4
ORA-06512: at "ORA1.CREATE_DEPARTMENTS_NOEX", line 4

ORA-06512: at line 1

Eliminacin de Procedimientos.

Cuando ya no necesite un procedimiento almacenado, puede utilizar la sentencia


SQL DROP PROCEDURE para eliminarlo.

Nota: Al ejecutar un comando de lenguaje de definicin de datos (DDL) como


DROP PROCEDURE, tanto si es correcto como si no, se confirma cualquier
transaccin pendiente de la que no se puede realizar un rollback.

Visualizacin de Procedimientos en el Diccionario de Datos.

El cdigo de origen para los subprogramas PL/SQL se almacena en las tablas del
diccionario de datos. Los procedimientos PL/SQL compilados correcta o

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 174


ADMINISTRACIN DE BASE DE DATOS

incorrectamente pueden acceder al cdigo de origen. Para ver el cdigo de origen


PL/SQL almacenado en el diccionario de datos, ejecute una sentencia SELECT en
las siguientes tablas:

- En la tabla USER_SOURCE para mostrar el cdigo PL/SQL del que es


propietario.
- En la tabla ALL_SOURCE para mostrar el cdigo PL/SQL para el que el
propietario de dicho cdigo de subprograma le ha otorgado el derecho

EXECUTE.

El ejemplo de consulta muestra todas las columnas que proporciona la tabla


USER_SOURCE:

- La columna TEXT contiene una lnea del cdigo de origen PL/SQL.


- La columna NAME contiene el nombre del subprograma en maysculas.
- La columna TYPE contiene el tipo de subprograma como PROCEDURE,
FUNCTION.
- La columna LINE almacena el nmero de lnea de cada lnea del cdigo de
origen.

La tabla proporciona una columna adems de las columnas.

Ventajas de los Subprogramas.

Los procedimientos y las funciones tienen numerosas ventajas gracias a la


organizacin en mdulos del cdigo:

- El mantenimiento sencillo se consigue porque los subprogramas estn ubicados


en un solo lugar. Slo es necesario realizar las modificaciones en un lugar para
que se apliquen a varias aplicaciones. Esto minimiza tambin la realizacin de
un nmero excesivo de pruebas.
- La seguridad de datos mejorada se puede lograr controlando el acceso indirecto
a los objetos de la base de datos por parte de usuarios sin privilegios mediante
privilegios de seguridad. Los subprogramas ejecutados tienen por defecto los
derechos del responsable de la definicin. El privilegio de ejecucin no permite
que un usuario que realice una llamada acceda directamente a los objetos a los
que puede acceder el subprograma.
- La integridad de los datos se gestiona realizando al mismo tiempo todas las
acciones relacionadas o no realizando ninguna.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 175


ADMINISTRACIN DE BASE DE DATOS

- El rendimiento mejorado se consigue al reutilizar cdigo PL/SQL analizado que


pasa a estar disponible en el rea SQL compartida del servidor. Las llamadas
posteriores al subprograma evitan tener que analizar el cdigo otra vez.

Puesto que el cdigo PL/SQL se analiza durante la compilacin, la sobrecarga de


anlisis de sentencias SQL se evita en tiempo de ejecucin. Se puede escribir
cdigo para reducir el nmero de llamadas de red a la base de datos y, por lo
tanto, disminuir el trfico de red.

- La claridad de cdigo mejorada se alcanza con el uso de nombres y


convenciones adecuadas para describir la accin de las rutinas, la reduccin de
la necesidad de comentarios y la mejora de la claridad del cdigo.

Un procedimiento almacenado (stored procedure en ingls) es un programa (o


procedimiento) el cual es almacenado fsicamente en una base de datos. Su
implementacin vara de un gestor de bases de datos a otro. La ventaja de un
procedimiento almacenado es que al ser ejecutado, en respuesta a una peticin
de usuario, es ejecutado directamente en el motor de bases de datos, el cual
usualmente corre en un servidor separado. Como tal, posee acceso directo a los
datos que necesita manipular y slo necesita enviar sus resultados de regreso al
usuario, deshacindose de la sobrecarga resultante de comunicar grandes
cantidades de datos salientes y entrantes.

Usos tpicos para procedimientos almacenados incluyen la validacin de datos


siendo integrados a la estructura de base de datos (los procedimientos
almacenados utilizados para este propsito a menudo son llamados disparadores;
triggers en ingls), o encapsular un proceso grande y complejo. El ltimo ejemplo
generalmente ejecutar ms rpido como un procedimiento almacenado que de
haber sido implementado como, por ejemplo, un programa corriendo en el sistema
cliente y comunicndose con la base de datos mediante el envo de consultas SQL
y recibiendo sus resultados.

Los procedimientos pueden ser ventajosos: Cuando una base de datos es


manipulada desde muchos programas externos. Al incluir la lgica de la aplicacin
en la base de datos utilizando procedimientos almacenados, la necesidad de
embeber la misma lgica en todos los programas que acceden a los datos es
reducida. Esto puede simplificar la creacin y, particularmente, el mantenimiento
de los programas involucrados.

Podemos ver un claro ejemplo de estos procedimientos cuando requerimos


realizar una misma operacin en un servidor dentro de algunas o todas las bases

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 176


ADMINISTRACIN DE BASE DE DATOS

de datos y a la vez dentro de todas o algunas de las tablas de las bases de datos
del mismo. Para ello podemos utilizar a los Procedimientos almacenados
autocreables que es una forma de generar ciclos redundantes a travs de los
procedimientos almacenados.

Estos procedimientos, se usan a menudo, pero no siempre, para realizar consultas


SQL sobre los objetos de la base de datos de una manera abstracta, desde el
punto de vista del cliente de la aplicacin. Un procedimiento almacenado
permite agrupar en forma exclusiva parte de algo especfico que se desee realizar
o, mejor dicho, el SQL apropiado para dicha accin

Usos.

Los usos 'tpicos' de los procedimientos almacenados se aplican en la validacin


de datos, integrados dentro de la estructura del banco de datos. Los
procedimientos almacenados usados con tal propsito se llaman comnmente
disparadores, o triggers. Otro uso comn es la 'encapsulacin' de un API para un
proceso complejo o grande que podra requerir la 'ejecucin' de varias consultas
SQL, tales como la manipulacin de un 'dataset' enorme para producir un
resultado resumido.

Tambin pueden ser usados para el control de gestin de operaciones, y ejecutar


procedimientos almacenados dentro de una transaccin de tal manera que las
transacciones sean efectivamente transparentes para ellos.

Ventajas.

La ventaja de un procedimiento almacenado, en respuesta a una peticin de


usuario, est directamente bajo el control del motor del gestor de bases de datos,
que corre generalmente en un servidor distinto del gestor de bases de datos
aumentando con ello la rapidez de procesamiento de las peticiones del gestor de
bases de datos.

El servidor de la base de datos tiene acceso directo a los datos necesarios para
manipular y slo necesita enviar el resultado final al usuario. Los procedimientos
almacenados pueden permitir que la lgica del negocio se encuentre como un API
en la base de datos, que pueden simplificar la gestin de datos y reducir la
necesidad de codificar la lgica en el resto de los programas cliente. Esto puede
reducir la probabilidad de que los datos se corrompan por el uso de programas
clientes defectuosos o errneos. De este modo, el motor de base de datos puede
asegurar la integridad de los datos y su consistencia con la ayuda de

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 177


ADMINISTRACIN DE BASE DE DATOS

procedimientos almacenados. Algunos afirman que las bases de datos deben ser
utilizadas para el almacenamiento de datos solamente, y que la lgica de negocio
slo debera aplicarse en la capa de negocio de cdigo, a travs de aplicaciones
cliente que deban acceder a los datos. Sin embargo, el uso de procedimientos
almacenados no se opone a la utilizacin de una capa de negocio.

Procedimientos almacenados en MySQL.

Desde MySQL 5 los procedimientos almacenados empezaron a ser soportados,


como suele suceder en MySQL las sentencias se ejecutan luego de escribir el
signo punto y coma (;), por esta razn antes de escribir el procedimiento
almacenado la funcin del punto y coma se asigna a otros caracteres usando la
sentencia DELIMITER seguida de un carcter tal como |, de esta manera el
procedimiento puede ser escrito usando los punto y comas sin que se ejecute
mientras se escribe; despus de escrito el procedimiento, se escribe nuevamente
la sentencia DELIMITER ; para asignar al punto y coma su funcin habitual.Fven.

DISEAR PROCEDIMIENTOS ALMACENADOS SIMPLES Y COMPLEJOS.

Sintasis:

CREATE PROCEDURE y CREATE FUNCTION


CREATE PROCEDURE sp_name ([parameter[,...]])
[characteristic ...] routine_body
CREATE FUNCTION sp_name ([parameter[,...]])
RETURNS type
[characteristic ...] routine_body
parameter:
[ IN | OUT | INOUT ] param_name type

type:

Any valid MySQL data type

characteristic:

LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA
}

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 178


ADMINISTRACIN DE BASE DE DATOS

| SQL SECURITY { DEFINER | INVOKER }


| COMMENT 'string'

routine_body:

Procedimientos almacenados o comandos SQL vlidos

Estos comandos crean una rutina almacenada. Desde MySQL 5.0.3, para crear
una rutina, es necesario tener el permiso CREATE ROUTINE, y los permisos
ALTER ROUTINE y EXECUTE se asignan automticamente a su creador. Si se
permite logueo binario necesita tambin el permisos SUPER

Por defecto, la rutina se asocia con la base de datos actual. Para asociar la rutina
explcitamente con una base de datos, especifique el nombre como
db_name.sp_name al crearlo.

Si el nombre de rutina es el mismo que el nombre de una funcin de SQL,


necesita usar un espacio entre el nombre y el siguiente parntesis al definir la
rutina, o hay un error de sintaxis. Esto tambin es cierto cuando invoca la rutina
posteriormente.

La clusula RETURNS puede especificarse slo con FUNCTION, donde es


obligatorio. Se usa para indicar el tipo de retorno de la funcin, y el cuerpo de la
funcin debe contener un comando RETURN value.

La lista de parmetros entre parntesis debe estar siempre presente. Si no hay


parmetros, se debe usar una lista de parmetros vaca () . Cada parmetro es un
parmetro IN por defecto. Para especificar otro tipo de parmetro, use la palabra
clave OUT o INOUT antes del nombre del parmetro. Especificando IN, OUT, o
INOUT slo es valido para una PROCEDURE.

El comando CREATE FUNCTION se usa en versiones anteriores de MySQL para


soportar UDFs (User Defined Functions) (Funciones Definidas por el Usuario).
UDFs se soportan, incluso con la existencia de procedimientos almacenados. Un
UDF puede tratarse como una funcin almacenada externa. Sin embargo, tenga
en cuenta que los procedimientos almacenados comparten su espacio de nombres
con UDFs.

Un marco para procedimientos almacenados externos se introducir en el futuro.


Esto permitira escribir procedimientos almacenados en lenguajes distintos a SQL.
Uno de los primeros lenguajes a soportar ser PHP ya que el motor central de

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 179


ADMINISTRACIN DE BASE DE DATOS

PHP es pequeo, con flujos seguros y puede empotrarse fcilmente. Como el


marco es pblico, se espera soportar muchos otros lenguajes.

Un procedimiento o funcin se considera determinista si siempre produce el


mismo resultado para los mismos parmetros de entrada, y no determinista en
cualquier otro caso. Si no se da ni DETERMINISTIC ni NOT DETERMINISTIC por
defecto es NOT DETERMINISTIC.

Para replicacin, use la funcin NOW() (o su sinnimo) o RAND() no hace una


rutina no determinista necesariamente. Para NOW(), el log binario incluye el
tiempo y hora y replica correctamente. RAND() tambin replica correctamente
mientras se invoque slo una vez dentro de una rutina. (Puede considerar el
tiempo y hora de ejecucin de la rutina y una semilla de nmero aleatorio como
entradas implcitas que son idnticas en el maestro y el esclavo.)

Actualmente, la caracterstica DETERMINISTIC se acepta, pero no la usa el


optimizador. Sin embargo, si se permite el logueo binario, esta caracterstica
afecta si MySQL acepta definicin de rutinas.

Varias caractersticas proporcionan informacin sobre la naturaleza de los datos


usados por la rutina. CONTAINS SQL indica que la rutina no contiene comandos
que leen o escriben datos. NO SQL indica que la rutina no contiene comandos
SQL . READS SQL DATA indica que la rutina contiene comandos que leen datos,
pero no comandos que escriben datos. MODIFIES SQL DATA indica que la rutina
contiene comandos que pueden escribir datos. CONTAINS SQL es el valor por
defecto si no se dan explcitamente ninguna de estas caractersticas.

La caracterstica SQL SECURITY puede usarse para especificar si la rutina debe


ser ejecutada usando los permisos del usuario que crea la rutina o el usuario que
la invoca. El valor por defecto es DEFINER.

Esta caracterstica es nueva en SQL:2003. El creador o el invocador deben tener


permisos para acceder a la base de datos con la que la rutina est asociada.
Desde MySQL 5.0.3, es necesario tener el permiso EXECUTE para ser capaz de
ejecutar la rutina. El usuario que debe tener este permiso es el definidor o el
invocador, en funcin de cmo la caracterstica SQL SECURITY.

MySQL almacena la variable de sistema sql_mode que est en efecto cuando se


crea la rutina, y siempre ejecuta la rutina con esta inicializacin.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 180


ADMINISTRACIN DE BASE DE DATOS

La clusula COMMENT es una extensin de MySQL, y puede usarse para


describir el procedimiento almacenado. Esta informacin se muestra con los
comandos SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION .

MySQL permite a las rutinas que contengan comandos DDL (tales como CREATE
y DROP) y comandos de transaccin SQL (como COMMIT). Esto no lo requiere el
estndar, y por lo tanto, es especfico de la implementacin.

Los procedimientos almacenados no pueden usar LOAD DATA INFILE.

Nota:

Actualmente, los procedimientos almacenados creados con CREATE FUNCTION


no pueden tener referencias a tablas. (Esto puede incluir algunos comandos SET
que pueden contener referencias a tablas, por ejemplo SET a:= (SELECT MAX(id)
FROM t), y por otra parte no pueden contener comandos SELECT , por ejemplo
SELECT 'Hello world!' INTO var1.) Esta limitacin se elminar en breve.

Los comandos que retornan un conjunto de resultados no pueden usarse desde


una funcin almacenada. Esto incluye comandos SELECT que no usan INTO para
tratar valores de columnas en variables, comandos SHOW y otros comandos
como EXPLAIN. Para comandos que pueden determinarse al definir la funcin
para que retornen un conjunto de resultados, aparece un mensaje de error Not
allowed to return a result set from a function (ER_SP_NO_RETSET_IN_FUNC).
Para comandos que puede determinarse slo en tiempo de ejecucin si retornan
un conjunto de resultados, aparece el error PROCEDURE %s can't return a result
set in the given context (ER_SP_BADSELECT).

El siguiente es un ejemplo de un procedimiento almacenado que use un parmetro


OUT . El ejemplo usa el cliente mysql y el comando delimiter para cambiar el
delimitador del comando de ; a // mientras se define el procedimiento . Esto
permite pasar el delimitador ; usado en el cuerpo del procedimiento a travs del
servidor en lugar de ser interpretado por el mismo mysql.

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)


-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 181


ADMINISTRACIN DE BASE DE DATOS

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL simpleproc(@a);

Query OK, 0 rows affected (0.00 sec)


mysql> SELECT @a;

+------+
| @a |
+------+
|3 |
+------+

1 row in set (0.00 sec)

Al usar el comando delimiter, debe evitar el uso de la antibarra ('\') ya que es el


carcter de escape de MySQL.

El siguiente es un ejemplo de funcin que toma un parmetro, realiza una


operacin con una funcin SQL, y retorna el resultado:

mysql> delimiter //

mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)

-> RETURN CONCAT('Hello, ',s,'!');

-> //

Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> SELECT hello('world');


+----------------+
| hello('world') |
+----------------+
| Hello, world! |
+----------------+

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 182


ADMINISTRACIN DE BASE DE DATOS

1 row in set (0.00 sec)

Si el comando RETURN en un procedimiento almacenado retorna un valor con un


tipo distinto al especificado en la clusula RETURNS de la funcin, el valor de
retorno se coherciona al tipo apropiado. Por ejemplo, si una funcin retorna un
valor ENUM o SET, pero el comando RETURN retorna un entero, el valor
retornado por la funcin es la cadena para el miembro de ENUM correspondiente
de un conjunto de miembros SET.

SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION.

SHOW CREATE {PROCEDURE | FUNCTION} sp_name

Este comando es una extensin de MySQL . Similar a SHOW CREATE TABLE,


retorna la cadena exacta que puede usarse para recrear la rutina nombrada.

mysql> SHOW CREATE FUNCTION test.hello\G

*************************** 1. row ***************************

Function: hello
sql_mode:

Create Function: CREATE FUNCTION `test`.`hello`(s CHAR(20)) RETURNS


CHAR(50)

RETURN CONCAT('Hello, ',s,'!')

Los procedimientos almacenados y funciones son nuevas funcionalidades de la


versin de MySQL 5.0. Un procedimiento almacenado es un conjunto de
comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los
clientes no necesitan relanzar los comandos individuales pero pueden en su lugar
referirse al procedimiento almacenado.

Algunas situaciones en que los procedimientos almacenados pueden ser


particularmente tiles:

- Cuando mltiples aplicaciones cliente se escriben en distintos lenguajes o


funcionan en distintas plataformas, pero necesitan realizar la misma operacin
en la base de datos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 183


ADMINISTRACIN DE BASE DE DATOS

- Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan


procedimientos almacenados para todas las oparaciones comunes. Esto
proporciona un entorno seguro y consistente, y los procedimientos pueden
asegurar que cada operacin se loguea apropiadamente. En tal entorno, las
aplicaciones y los usuarios no obtendran ningn acceso directo a las tablas de
la base de datos, slo pueden ejectuar algunos procedimientos almacenados.

Los procedimientos almacenados pueden mejorar el rendimiento ya que se


necesita enviar menos informacin entre el servidor y el cliente. El intercambio que
hay es que aumenta la carga del servidor de la base de datos ya que la mayora
del trabajo se realiza en la parte del servidor y no en el cliente. Considere esto si
muchas mquinas cliente (como servidores Web) se sirven a slo uno o pocos
servidores de bases de datos.

Los procedimientos almacenados le permiten tener bibliotecas o funciones en el


servidor de base de datos. Esta caracterstica es compartida por los lenguajes de
programacin modernos que permiten este diseo interno, por ejemplo, usando
clases. Usando estas caractersticas del lenguaje de programacin cliente es
beneficioso para el programador incluso fuera del entorno de la base de datos.

MySQL sigue la sintaxis SQL:2003 para procedimientos almacenados, que


tambin usa IBM DB2.

La implementacin de MySQL de procedimientos almacenados est en progreso.


Toda la sintaxis descrita en este captulo se soporta y cualquier limitacin y
extensin se documenta apropiadamente. Ms discusin o restricciones de uso de
procedimientos almacenados se da en Apndice H, Restricciones en
caractersticas de MySQL.

Se almacenan en la propia Base de Datos y constituyen un objeto ms dentro de


esta. Tienden a mejorar el rendimiento de los sistemas producto a que reducen en
intercambio entre cliente y servidor. Los procedimientos almacenados son
reutilizables, de manera que los usuarios mediante la aplicacin cliente no
necesitan relanzar los comandos individuales, sino que pueden llamar el
procedimiento para ejecutarlo en el servidor tantas veces como sea necesario.

Utilidades.
Los procedimientos almacenados son muy tiles sobre todo en arquitecturas
cliente/servidor donde hay un servidor muy potente el cual se puede aprovechar

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 184


ADMINISTRACIN DE BASE DE DATOS

para ejecutar procesos, consultas y actualizaciones complejas en la base de


datos.
Posibles usos que pueden darse a estos objetos de la base de datos
Por ejemplo, si deseamos obtener un reporte complejo que incluya instrucciones
condicionales y clculos complejos con datos obtenidos de varias tablas, un
procedimiento almacenado es nuestro mejor aliado. Tambin se pueden ejecutar
complejos procesos que a veces tardan horas cuando son ejecutados desde el
cliente, ya que en tales casos la informacin debe pasar del servidor al cliente y
viceversa.
Casi siempre las computadoras servidores son poderosas mquinas con mucha
memoria, discos rpidos y uno o ms procesadores tambin muy rpidos. Por lo
tanto, al ejecutar los procesos mediante procedimientos almacenados estamos
aprovechando toda esa capacidad de cmputo disponible en el hardware del
servidor.
Algunos casos en que pueden resultar particularmente tiles.
Cuando mltiples aplicaciones cliente se escriben en distintos lenguajes o
funcionan en distintas plataformas, pero necesitan realizar la misma operacin en
la base de datos. Cuando la seguridad es muy importante. Los bancos, por
ejemplo, usan procedimientos almacenados para todas las operaciones comunes.
Esto proporciona un entorno seguro y consistente, y los procedimientos pueden
asegurar que cada operacin se loguea apropiadamente. En tal entorno, las
aplicaciones y los usuarios no obtendran ningn acceso directo a las tablas de la
base de datos, slo pueden ejectuar algunos procedimientos almacenados.
Elementos de los procedimientos almacenados.
Los procedimientos almacenados estn compuestos por algunos de estos
elementos:
- Parmetros de entrada (pueden esperar parmetros).
- Parmetros de salida (pueden devolver resultados).
- Declaracin de variables (puede usarse variables en su cuerpo).
- Cuerpo del procedimiento (en su cuerpo se indican las acciones a realizar).

Tanto los parmetros de entrada como los de salida son opcionales. Podemos
tener un procedimiento que no tenga parmetros de entrada, pero s de salida y
viceversa. Como todo buen programador sabe, los parmetros de entrada sirven
para pasarle datos al procedimiento que necesita para llevar a cabo una accin

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 185


ADMINISTRACIN DE BASE DE DATOS

determinada. Los parmetros de salida devuelven al programa cliente que ejecut


el procedimiento el resultado del mismo.

Elementos de los procedimientos almacenados.

Los procedimientos almacenados estn compuestos por algunos de estos


elementos:

- Parmetros de entrada (pueden esperar parmetros).


- Parmetros de salida (pueden devolver resultados).
- Declaracin de variables (puede usarse variables en su cuerpo).
- Cuerpo del procedimiento (en su cuerpo se indican las acciones a realizar).

Tanto los parmetros de entrada como los de salida son opcionales. Podemos
tener un procedimiento que no tenga parmetros de entrada, pero s de salida y
viceversa. Como todo buen programador sabe, los parmetros de entrada sirven
para pasarle datos al procedimiento que necesita para llevar a cabo una accin
determinada. Los parmetros de salida devuelven al programa cliente que ejecut
el procedimiento el resultado del mismo.

Sintaxis.

Para crear un procedimiento almacenado debemos emplear la sentencia CREATE


PROCEDURE.

CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]


AS
-- Sentencias del procedure

Para modificar un procedimiento almacenado debemos emplear la sentencia


ALTER PROCEDURE.

ALTER PROCEDURE<nombre_procedure> [@param1 <tipo>, ...]


AS
-- Sentencias del procedure

El siguiente ejemplo muestra un procedimiento almacenado, llamado


spu_addCliente que aade clientes, o sea, inserta un registro en la tabla Clientes:

CREATE PROCEDURE spu_addCliente @nombre varchar(100),


@apellidos varchar(100),
ESCUELA DE TECNOLOGAS DE LA INFORMACIN 186
ADMINISTRACIN DE BASE DE DATOS

@f_Naciento datetime,
@email varchar(50)
AS
NSERT INTO CLIENTES (nombre, apellidos, f_nacimiento, email)
VALUES (@nombre, @apellidos, @f_naciento, @email)

Ejemplos.
El siguiente ejemplo muestra un procedimiento almacenado en SQL Server que
inserta un registro en la tabla Inventario:
USE [bd_inventario]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Autor: Yosbany
-- Fecha:
-- Descripcin:
-- =============================================
ALTER PROCEDURE [dbo].[Insertar_Inventario]

--Parmetros de entrada

@Descripcion char(15) = '',


@No_inv char(15),
@Marca char(15),
@Modelo char(15),
@No_serie char(15),
@Puesto char(3),
@id int = 0
AS
BEGIN
SET NOCOUNT ON;

-- Sentencia del procedimiento


INSERT INTO Inventario (id, Descripcion, No_inventario, Marca, Modelo,
No_serie, Puesto)
VALUES(@id, @Descripcion, @No_inv, @Marca, @Modelo, @No_serie,
@Puesto);

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 187


ADMINISTRACIN DE BASE DE DATOS

END

Llamando el procedimiento.

En este caso veremos cmo llamarlo desde el lenguaje de programacin C++,


usando la tecnologa ADO que trae C++Builder6:

Por ejemplo, si tenemos un procedimiento almacenado que elimina un registro


segn el id que se le pase, de esta manera, en el gestor SQL Server:

USE [bd_inventario]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author: Yosbany
-- Fecha:
-- Description:

-- =============================================

CREATE PROCEDURE Eliminar_Inventario

-- parmetro id por el que va a eliminar. El procedimiento espera este parmetro


para eliminar el registro que lo contenga.
@id int = 0
AS
BEGIN
SET NOCOUNT ON;

-- sentencia del procedimiento


DELETE FROM Inventario WHERE id = @id;
END

Desde C++ lo llamaramos as: (Usando el componente ADOStoredProc)

ADOStoredProc1->ProcedureName = "Eliminar_inventario"; //Nombre del


procedimiento

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 188


ADMINISTRACIN DE BASE DE DATOS

ADOStoredProc1->Active=false; // Lo desactivamos
TParameters *parameters = ADOStoredProc1->Parameters;

parameters->Clear();

parameters->AddParameter(); //Aadimos el parmetro que espera el


procedimiento
(*parameters)[0]->DataType = ftString;
(*parameters)[0]->Direction = pdInput;
(*parameters)[0]->Size = DBEdit1->Text.Length();
(*parameters)[0]->Value = DBEdit1->Text;

ADOStoredProc1->ExecProc(); // Y finalmente lo ejecutamos

Los procedimientos almacenados permiten aprovechar los recursos del servidor,


ahorrar tiempo creando consultas complejas desde el servidor y permiten
interactuar con otros objetos, generadores, excepciones, tablas y vistas. Por lo
tanto, es importante para todo desarrollador utilizarlos correctamente y saber todo
lo que se puede hacer con ellos.

ADMINISTRAR LOS PROCEDIMIENTOS ALMACENADOS EN UNA BD.

Un procedimiento almacenado de SQL Server es un grupo de una o varias


instrucciones Transact-SQL o una referencia a un mtodo de Common Runtime

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 189


ADMINISTRACIN DE BASE DE DATOS

Language (CLR) de Microsoft .NET Framework. Los procedimientos se asemejan


a las construcciones de otros lenguajes de programacin, porque pueden:
- Aceptar parmetros de entrada y devolver varios valores en forma de
parmetros de salida al programa que realiza la llamada.
- Contener instrucciones de programacin que realicen operaciones en la base
de datos. Entre otras, pueden contener llamadas a otros procedimientos.
- Devolver un valor de estado a un programa que realiza una llamada para indicar
si la operacin se ha realizado correctamente o se han producido errores, y el
motivo de estos.

Ventajas de usar procedimientos almacenados.

En la siguiente lista se describen algunas de las ventajas que brinda el uso de


procedimientos.

- Trfico de red reducido entre el cliente y el servidor.


Los comandos de un procedimiento se ejecutan en un nico lote de cdigo.
Esto puede reducir significativamente el trfico de red entre el servidor y el
cliente porque nicamente se enva a travs de la red la llamada que va a
ejecutar el procedimiento.
Sin la encapsulacin de cdigo que proporciona un procedimiento, cada una de
las lneas de cdigo tendra que enviarse a travs de la red.

- Mayor seguridad.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 190


ADMINISTRACIN DE BASE DE DATOS

Varios usuarios y programas cliente pueden realizar operaciones en los objetos


de base de datos subyacentes a travs de un procedimiento, aunque los
usuarios y los programas no tengan permisos directos sobre esos objetos
subyacentes. El procedimiento controla qu procesos y actividades se llevan a
cabo y protege los objetos de base de datos subyacentes. Esto elimina la
necesidad de conceder permisos en cada nivel de objetos y simplifica los
niveles de seguridad.

La clusula EXECUTE AS puede especificarse en la instruccin CREATE


PROCEDURE para habilitar la suplantacin de otro usuario o para permitir que
los usuarios o las aplicaciones puedan realizar ciertas actividades en la base de
datos sin necesidad de contar con permisos directos sobre los objetos y
comandos subyacentes. Por ejemplo, algunas acciones como TRUNCATE
TABLE no tienen permisos que se puedan conceder. Para poder ejecutar
TRUNCATE TABLE, el usuario debe tener permisos ALTER en la tabla
especificada. Puede que la concesin de permisos ALTER a un usuario en una
tabla no sea lo ideal, pues en realidad el usuario tendr permisos muy
superiores a la posibilidad de truncar una tabla. Si se incorpora la instruccin
TRUNCATE TABLE en un mdulo y se especifica la ejecucin del mdulo como
un usuario con permisos para modificar la tabla, se pueden ampliar los
permisos para truncar la tabla al usuario al que se concedan permisos
EXECUTE para el mdulo.
Al llamar a un procedimiento a travs de la red, solo est visible la llamada que
va a ejecutar el procedimiento. Por lo tanto, los usuarios malintencionados no
pueden ver los nombres de los objetos de base de datos y tabla, incrustados en
sus propias instrucciones Transact-SQL, ni buscar datos crticos.
El uso de parmetros de procedimientos ayuda a protegerse contra ataques por
inyeccin de cdigo SQL. Dado que la entrada de parmetros se trata como un
valor literal y no como cdigo ejecutable, resulta ms difcil para un atacante
insertar un comando en la instruccin Transact-SQL del procedimiento y
comprometer la seguridad.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 191


ADMINISTRACIN DE BASE DE DATOS

Los procedimientos pueden cifrarse, lo que ayuda a ofuscar el cdigo fuente.


Para obtener ms informacin, vea Cifrado de SQL Server.

- Reutilizacin del cdigo.


El cdigo de cualquier operacin de base de datos redundante resulta un
candidato perfecto para la encapsulacin de procedimientos. De este modo, se
elimina la necesidad de escribir de nuevo el mismo cdigo, se reducen las
inconsistencias de cdigo y se permite que cualquier usuario o aplicacin que
cuente con los permisos necesarios pueda acceder al cdigo y ejecutarlo.

- Mantenimiento ms sencillo.
Cuando las aplicaciones cliente llaman a procedimientos y mantienen las
operaciones de base de datos en la capa de datos, solo deben actualizarse los
cambios de los procesos en la base de datos subyacente. El nivel de aplicacin
permanece independiente y no tiene que tener conocimiento sobre los cambios
realizados en los diseos, las relaciones o los procesos de la base de datos.

- Rendimiento mejorado.
De forma predeterminada, un procedimiento se compila la primera vez que se
ejecuta y crea un plan de ejecucin que vuelve a usarse en posteriores
ejecuciones. Como el procesador de consultas no tiene que crear un nuevo
plan, normalmente necesita menos tiempo para procesar el procedimiento.
Si ha habido cambios importantes en las tablas o datos a los que se hace
referencia en el procedimiento, el plan precompilado podra hacer que el
procedimiento se ejecutara con mayor lentitud. En este caso, volver a crear el
procedimiento y forzar un nuevo plan de ejecucin puede mejorar el rendimiento

TIPOS DE PROCEDIMIENTOS ALMACENADOS.


- Definidos por el usuario.
Un procedimiento definido por el usuario se puede crear en una base de datos
definida por el usuario o en todas las bases de datos del sistema excepto en la
base de datos Resource. El procedimiento se puede desarrollar en Transact-
SQL o como una referencia a un mtodo de Common Runtime Language (CLR)
de Microsoft .NET Framework.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 192


ADMINISTRACIN DE BASE DE DATOS

- Temporales.
Los procedimientos temporales son una forma de procedimientos definidos por
el usuario. Los procedimientos temporales son iguales que los procedimientos
permanentes salvo porque se almacenan en tempdb. Hay dos tipos de
procedimientos temporales: locales y globales. Se diferencian entre s por los
nombres, la visibilidad y la disponibilidad. Los procedimientos temporales
locales tienen como primer carcter de sus nombres un solo signo de nmero
(#); solo son visibles en la conexin actual del usuario y se eliminan cuando se
cierra la conexin. Los procedimientos temporales globales presentan dos
signos de nmero (##) antes del nombre; son visibles para cualquier usuario
despus de su creacin y se eliminan al final de la ltima sesin en la que se
usa el procedimiento.

- Sistema.
Los procedimientos del sistema se incluyen con SQL Server. Estn
almacenados fsicamente en la base de datos interna y oculta Resource y se
muestran de forma lgica en el esquema sys de cada base de datos definida
por el sistema y por el usuario. Adems, la base de datos msdb tambin
contiene procedimientos almacenados del sistema en el esquema dbo que se
usan para programar alertas y trabajos. Dado que los procedimientos del
sistema empiezan con el prefijo sp_, le recomendamos que no use este prefijo
cuando asigne un nombre a los procedimientos definidos por el usuario. Para
obtener una lista completa de los procedimientos del sistema, vea
Procedimientos almacenados del sistema (Transact-SQL).
SQL Server admite los procedimientos del sistema que proporcionan una
interfaz de SQL Server a los programas externos para varias actividades de
mantenimiento. Estos procedimientos extendidos usan el prefijo xp_. Para
obtener una lista completa de los procedimientos extendidos, vea
Procedimientos almacenados extendidos generales (Transact-SQL).

- Extendidos definidos por el usuario.


Los procedimientos extendidos permiten crear rutinas externas en un lenguaje
de programacin como C. Estos procedimientos son archivos DLL que una
instancia de SQL Server puede cargar y ejecutar dinmicamente.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 193


ADMINISTRACIN DE BASE DE DATOS

Ejercicios y tareas de investigacin

1. Crear un procedimiento almacenado, donde simplemente le daremos 2


nmeros (primer_numero y segundo_numero), con estos datos realizamos una
suma y devolvemos el resultado. Destacar que primer_numero y
segundo_numero son parmetros de entrada (IN) y que resultado es un
parmetro de salida (OUT).

2. Crear un procedimiento almacenado, donde metamos dos cariables varchar 2 y


que nos muestre todos los datos metidos

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 194


ADMINISTRACIN DE BASE DE DATOS

04

TAREA 04: CREAR DISPARADORES EN UNA BASE DE DATOS.

En esta tarea trataremos las siguientes operaciones:


Definir la utilidad de un disparador.
Implementar disparadores en una base de datos.

Equipos y Materiales:

Computadora con microprocesadores core 2 Duo o de mayor capacidad.


Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.

Orden de Ejecucin:

Definir la utilidad de un disparador.


Implementar disparadores en una base de datos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 195


ADMINISTRACIN DE BASE DE DATOS

OPERACIONES
Operacin:

4.1. DEFINIR LA UTILIDAD DE UN DISPARADOR.

En general, las sentencias de control utilizables por PL/SQL coinciden con las de
cualquier lenguaje de alto nivel. Sin embargo, existen una serie de funciones
utilizables dentro del cuerpo de un disparador que resultan de gran utilidad. Entre
ellas, vamos a estudiar aqu, las funciones inserting, deleting y updating, y la
funcin RAISE_ERROR_APPLICATION.

Funciones booleanas inserting, deleting, updating.


Estas funciones se utilizan cuando el evento de un disparador es compuesto, es
decir, queremos que el disparador se active ante diferentes operaciones DML pero
no queremos que haga lo mismo para cualquiera de los eventos activadores. Con
lo visto hasta ahora, la nica solucin sera disear un disparador para cada una
de las acciones DML de activacin. Sin embargo, con las funciones inserting,
updating y deleting, podremos hacer todo en un nico disparador.

Ejemplo.
CREATE OR REPLACE TRIGGER ejemplo
BEFORE INSERT OR UPDATE OR DELETE ON tabla
BEGIN
IF DELETING THEN
Acciones asociadas al borrado
ELSIF INSERTING THEN
Acciones asociadas a la insercin
ELSE
Acciones asociadas a la modificacin
END IF;
END

Funcin RAISE_APPLICATION_ERROR

Procedimiento que devuelve mensajes de error al usuario cuando ste va a


realizar una operacin no permitida y que interrumpe la ejecucin del disparador.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 196


ADMINISTRACIN DE BASE DE DATOS

DISPARADORES EN SQL (II)


MODELOS AVANZADOS DE BASES DE DATOS 3
Sintaxis: RAISE_APPLICATION_ERROR(nro_eror, mensaje);

Dnde: nro_error es un nmero asignado por el usuario que debe estar entre
20000 y -20999 y mensaje es el mensaje que aparecer por pantalla al usuario
cuando se produzca el error.

Ejemplo.
CREATE OR REPLACE TRIGGER ejemplo
BEFORE DELETE ON tabla
FOR EACH ROW
BEGIN
IF tabla.columna= valor_no_borrable THEN
RAISE_APPLICATION_ERROR(-20000, La fila no se puede
borrar);
END IF;
...
END ejemplo;
. Declaracin de variables

Dentro de un disparador podemos declarar variables que utilizaremos dentro del


cuerpo del mismo.

Sintaxis:
CREATE...
BEFORE...
[FOR EACH ROW ...]
DECLARE
Declaracin de variables
BEGIN
...

La declaracin de variables podr ser:


nombre CONSTANT NUMBER:= valor;
(nombre=valor constante)
nombre TIPO;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 197


ADMINISTRACIN DE BASE DE DATOS

(nombre como variable del tipo especificado)

nombre nombretabla%ROW TYPE;

ROWTYPE es el tipo de los registros OLD y NEW. Con esto crearemos una
variable nombre del tipo de la tabla. Para asignar el valor de una columna se
pondr como: nombre.nombrecolumna, de esta forma podremos hacer
asignaciones del tipo nombre.nombrecolumna = :OLD.nombrecolumna)
nombre nombretabla.nombrecolumna%TYPE

Crea una variable nombre del mismo tipo que el de la columna nombrecolumna
de la tabla nombretabla.

Para asignarle valor a una variable se utiliza el signo :=

Restricciones de los disparadores.


Una tabla mutante es una tabla que est siendo modificada por una operacin
DELETE, INSERT o UPDATE, o una tabla que se ver afectada por los efectos de
un DELETE CASCADE debido a la integridad referencial. Las tablas mutantes slo
deben aparecen en disparadores con nivel de fila. Una tabla sobre la que se define
un disparador es una tabla mutante.

Una tabla de restriccin de la tabla del disparador es una tabla de la que el


disparador puede tener necesidad de leer debido a una restriccin de integridad
referencial.

Las rdenes SQL del cuerpo de un disparador no pueden:

- Leer o modificar ninguna tabla mutante de la orden que provoca el disparo.


- Leer o modificar las columnas de clave primaria o ajena de una tabla de
restriccin de la tabla del disparador. Sin embargo pueden modificarse, si se
quieren, las otras columnas. Es decir, no se podr acceder a las claves
primarias de las tablas unidas a la tabla sobre la que se define el disparador
mediante integridad referencial.

Ejemplo de tabla mutante.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 198


ADMINISTRACIN DE BASE DE DATOS

CREATE OR REPLACE TRIGGER chequear_salario


BEFORE INSERT OR UPDATE ON empleado
FOR EACH ROW
WHEN (new.trabajo<>presidente)
DECLARE
v_salariomin empleado.salario%TYPE;
v_salariomax empleado.salario%TYPE;
BEGIN
SELECT MAX(salario), MIN(salario) FROM empleado
INTO v_salariomin, v_salariomax
FROM empleado
WHERE trabajo=:new.trabajo;
IF :new.salario<v_salariomin OR :new.salario> v_salariomax THEN
RAISE_APPLICATION_ERROR(-20001, Sueldo fuera de rango);
END IF;
END chequear_salario;

Al ejecutar la orden

UPDATE empleado SET salario=1500


WHERE nombre_emp = Cortecero;

Dar un error de tabla mutante ya que el disparador est intentando obtener


informacin de la tabla sobre la que est definido (tabla empleado) y que, por lo
tanto, es mutante.

Disparadores de sustitucin (INSTEAD OF)

Los disparadores de sustitucin (INSTEAD OF) slo pueden definirse sobre vistas
en Oracle 8 y se activan en lugar de la orden DML que provoc el disparo. Los
disparadores de sustitucin deben estar a nivel de fila.

Ejemplo.

CREATE VIEW vista AS


SELECT edificio, sum(numero_asientos) FROM habitaciones
GROUP BY edificio;

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 199


ADMINISTRACIN DE BASE DE DATOS

Es ilegal hace una operacin de borrado directamente en la vista:

DELETE FROM vista WHERE edificio=edificio 7;

Sin embargo, se puede crear un disparador de sustitucin que efecte el borrado


equivalente pero sobre la tabla habitaciones

IMPLEMENTAR DISPARADORES EN UNA BASE DE DATOS.


Un trigger (o disparador) en una Base de datos, es un procedimiento que se
ejecuta cuando se cumple una condicin establecida al realizar una operacin.
Dependiendo de la base de datos, los triggers pueden ser de insercin (INSERT),
actualizacin (UPDATE) o borrado (DELETE). Algunas bases de datos pueden
ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros
objetos.

La estructura bsica de un trigger es:

- Llamada de activacin: es la sentencia que permite "disparar" el cdigo a


ejecutar.
- Restriccin: es la condicin necesaria para realizar el cdigo. Esta restriccin
puede ser de tipo condicional o de tipo nulidad.
- Accin a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se
han cumplido las condiciones iniciales

Tipos.

Existen dos tipos de disparadores que se clasifican segn la cantidad de


ejecuciones a realizar:

- Row Triggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces


si se llama n-veces desde la tabla asociada al trigger.
- Statement Triggers (o Disparadores de secuencia): son aquellos que sin
importar la cantidad de veces que se cumpla con la condicin, su ejecucin es
nica.

Pueden ser de sesin y almacenados; pero no son de fiar y se elimina todo

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 200


ADMINISTRACIN DE BASE DE DATOS

Ejemplo.

Un sencillo ejemplo (para SQL Server) sera crear un Trigger para insertar un
pedido de algn producto cuando la cantidad de ste, en nuestro almacn, sea
inferior a un valor dado.

BEFORE UPDATE ON tabla_almacen


FOR ALL records
IF NEW.producto < 100 THEN
INSERT INTO tabla_pedidos(producto) VALUES ('1000');
END IF;
SELECT DBO.POLVE.TEST

END

Disparadores en MySQL.

Los disparadores son soportados en MySQL a partir de la versin 5.0.2. Algunos


de los soportes existentes son los disparadores para las sentencias INSERT,
UPDATE y DELETE

El estndar SQL:2003 requiere que los disparadores den a los programadores


acceso a las variables de un registro utilizando una sintaxis como REFERENCING
NEW AS n. Por ejemplo, si un disparador est monitoreando los cambios en la
columna salario, podra escribirse un disparador como:

CREATE TRIGGER ver_salario


BEFORE UPDATE ON empleados
REFERENCING NEW ROW AS n, OLD ROW AS o
FOR EACH ROW
IF n.salario <> o.salario THEN
END IF;

Como en MySQL las sentencias se ejecutan luego de escribir el signo punto y


coma (;), cabe destacar que para crear un disparador en MySQL, antes se escribe
la sentencia DELIMITER seguida de un carcter tal como |, la cual asigna la
funcin del punto y coma (;) a otro carcter permitiendo que el disparador sea
escrito usando los punto y comas sin que se ejecute mientras se escribe; despus

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 201


ADMINISTRACIN DE BASE DE DATOS

de escrito el disparador se escribe nuevamente la sentencia DELIMITER ; para


asignar al punto y coma su funcin habitual.

Disparadores en PostgreSQL.

Desde 1997 PostgreSQL soporta el uso de disparadores, estos pueden anexarse


a las tablas pero no a las vistas; aunque a las vistas se les pueden crear reglas.

Al igual que en MySQL los disparadores de PostgreSQL se pueden activar luego


de sentencias INSERT, UPDATE o DELETE

Cuando hay varios disparadores, se activan en orden alfabtico.

Adems de permitir el uso de funciones en el lenguaje nativo de PostgreSQL,


PL/PgSQL, los disparadores tambin permiten invocar funciones escritas en otros
lenguajes como PL/Perl.

En Postgres un disparador ejecuta una funcin la cual contiene el cdigo de lo que


se requiere, esto difiere del mtodo expuesto anteriormente para MySQL que
escribe el cdigo a ejecutarse dentro del mismo disparador.

El siguiente es un ejemplo de disparador creado con su respectiva funcin:

CREATE OR REPLACE FUNCTION actualizar() RETURNS TRIGGER AS


$ejemplo$
BEGIN
NEW.nombre := NEW.nombres || ' ' || NEW.apellidos ;
RETURN NEW;
END;
$ejemplo$ LANGUAGE plpgsql;

CREATE TRIGGER ejemplo


BEFORE INSERT OR UPDATE ON tabla
FOR EACH ROW EXECUTE PROCEDURE actualizar();

Ejemplo 2:

CREATE TRIGGER DIS_t_Libro_insertar ON t_Libro


FOR INSERT

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 202


ADMINISTRACIN DE BASE DE DATOS

AS
DECLARE @descrip VARCHAR(MAX)
SELECT @descrip=Descripcion FROM t_Libro
JOIN inserted
ON inserted.codigolibro=t_Libro.codigo
WHERE t_Libro.codigo=inserted.codigolibro
IF (@descrip >= (SELECT IdAutor FROM inserted ))
UPDATE t_Libro SET Rodaje=Rodaje-inserted.codigolibro
FROM t_Libro
JOIN inserted
ON inserted.codigolibro=t_Libro.codigo
WHERE codigo=t_Libro.codigolibro
ELSE
BEGIN
raiserror ('',10,1)
ROLLBACK TRANSACTION
END

FUNDAMENTO TERICO:

DEFINIR LA UTILIDAD DE UN DISPARADOR.

Conocer mejor los disparadores en SQL. Se ver uno de los principales


inconvenientes que se presentan al trabajar con disparadores, las tablas mutantes.
Tambin se ver un ltimo tipo de disparadores (INSTEAD OF) que se utilizan en
Oracle8 siempre asociados a vistas de la base de datos
Cuerpo del disparador.
En la prctica anterior ya se coment lo que poda incluirse dentro del cuerpo de
un disparador, como sentencias SQL. Pero tambin, en el cuerpo de un disparador
pueden incluirse subprogramas escritos en PL/SQL.

IMPLEMENTAR DISPARADORES EN UNA BASE DE DATOS.

Son usados para mejorar la administracin de la Base de datos, sin necesidad de


contar con que el usuario ejecute la sentencia de SQL. Adems, pueden generar
valores de columnas, previene errores de datos, sincroniza tablas, modifica

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 203


ADMINISTRACIN DE BASE DE DATOS

valores de una vista, etc. Permite implementar programas basados en paradigma


lgico (sistemas expertos, deduccin). sirve para tener bases de datos
relacionales y modificarlas a su gusto

Componentes principales.

La estructura bsica de un trigger es:

- Llamada de activacin: es la sentencia que permite "disparar" el cdigo a


ejecutar.
- Restriccin: es la condicin necesaria para realizar el cdigo. Esta restriccin
puede ser de tipo condicional o de tipo nulidad.
- Accin a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se
han cumplido las condiciones iniciales.

Importar y exportar datos.

DEFINICIONES.
DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS.

En general se considera mejor la importacin cuando se dan alguna de estas


situaciones:

- El archivo que se necesita es relativamente pequeo y no es modificado con


frecuencia por los usuarios de la otra aplicacin de la base de datos.
- No es necesario compartir los datos que se crean con los usuarios de la otra
aplicacin de base de datos.
- Se dispone a reemplazar la antigua aplicacin de base de datos y no ser
necesario tener lo datos en el antiguo formato por ms tiempo.
- Se necesita disponer del mejor rendimiento mientras se trabaja con los datos de
la otra base de datos.
- Esto es debido a que Access opera mejor con una copia local de los datos en
su formato original.

EXPORTACIN.
Una vez elegido el objeto(s) a exportar, Microsft Access abre un cuadro de dilogo
en el que hay que seleccionar la carpeta y el nombre del archivo
al que se exportar el objeto(s) seleccionado(s).

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 204


ADMINISTRACIN DE BASE DE DATOS

Access inicia el Asistente para exportacin de texto donde se puede seleccionar la


codificacin del archivo de texto generado

Si la exportacin se est realizando a un archivo de texto delimitado, se puede


establecer el delimitador que ser utilizado para separar los campos exportados
y el carcter cualificador que encerrar las cadenas de texto.

Adems se puede solicitar la creacin de un primer registro opcional que contenga


el nombre de los campos.

Si la exportacin se est realizando a un archivo de formato de ancho fijo, se


puede ajustar la anchura de las columnas.

Por ltimo hay que elegir el lugar y el nombre del archivo donde sern exportados
los datos.

IDENTIFICAR LOS TIPOS DE FORMATOS QUE SOPORTA UNA BD.

Un campo LONGTEXT se almacena siempre en el formato de representacin


Unicode.

Si se utiliza el nombre del tipo de datos TEXT sin especificar la longitud opcional
(TEXT(25), por ejemplo), se crea un campo LONGTEXT. Esto permite escribir
instrucciones CREATE TABLE que producirn tipos de datos coherentes con
Microsoft SQL Server.

Un campo CHAR se almacena siempre en el formato de representacin Unicode,


que es el equivalente del tipo de datos NATIONAL CHAR del SQL de ANSI.

Si se utiliza el nombre del tipo de datos TEXT y se especifica la longitud opcional


(TEXT(25), por ejemplo), el tipo de datos del campo es equivalente al tipo de datos
CHAR. De ese modo, se mantiene la compatibilidad con versiones anteriores para
la mayora de las aplicaciones de Microsoft Jet, a la vez que se habilita el tipo de
datos TEXT (sin especificacin de longitud) para la alineacin con Microsoft SQL
Server.

Los caracteres de los campos definidos como TEXT (tambin conocidos como
MEMO) o CHAR (tambin conocidos como TEXT(n) con una longitud especfica)
se almacenan en el formato de representacin Unicode. Los caracteres Unicode

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 205


ADMINISTRACIN DE BASE DE DATOS

requieren siempre dos bytes para el almacenamiento de cada carcter. Para las
bases de datos de Microsoft Jet ya existentes que contengan principalmente
datos de tipo carcter, esto puede significar que el tamao del archivo de base
de datos sea casi el doble cuando se convierta al formato Microsoft Jet 4.0. Sin
embargo, la representacin Unicode de muchos juegos de caracteres, antes
denominados juegos de caracteres de un solo byte (SBCS), puede comprimirse
fcilmente a caracteres de un solo byte. Si define una columna CHAR con el
atributo COMPRESSION, los datos se comprimirn automticamente a medida
que se almacenen y se descomprimirn cuando se recuperen de la columna.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN


05 206
ADMINISTRACIN DE BASE DE DATOS

TAREA 05: IMPORTAR Y EXPORTAR DATOS.

En esta tarea trataremos las siguientes operaciones:


Definir la importancia de importar y exportar datos.
Identificar los tipos de formatos que soporta una bd.
Exportar la informacin de una o ms tablas de una bd.
Importar informacin de un fichero a la base de datos.

Equipos y Materiales:
Computadora con microprocesadores core 2 Duo o de mayor capacidad.
Sistema operativo Windows.
Acceso a internet.
Software de manejo de Base de Datos.

Orden de Ejecucin:
Definir la importancia de importar y exportar datos.
Identificar los tipos de formatos que soporta una bd.
Exportar la informacin de una o ms tablas de una bd.
Importar informacin de un fichero a la base de datos.

OPERACIONES

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 207


ADMINISTRACIN DE BASE DE DATOS

5.1. DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS.

Para este ejemplo crearemos una BD sencilla para poder trabajar con ella.

PROCESO PARA CREAR BASES DE DATOS.

A continuacin se presentara la explicacin paso a paso para crear una base de


datos y exportacin e importacin de la estructura y los datos.
Para realizar los siguientes puntos se debe tener instalado y configurado el Oracle
10g express

PASO 1.

Ingresar a la bases de datos Oracle localmente buscando la ruta de la instalacin


que se crea.

Realizamos los pasos segn el grafico. Darle clic en Ir a Pgina Inicial de Base de
Datos.

La otra forma es escribir en la barra de direcciones del navegador la siguiente


direccin http://127.0.0.1:8080/apex

Es similar a la segunda solo que en vez de escribirle 127.0.0.1 o localhost, de tal


forma queda, http://localhost:8080/apex

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 208


ADMINISTRACIN DE BASE DE DATOS

PASO 2.

Cuando ya hemos ingresado a la pgina inicial de la Base de Datos Oracle


entramos con el usuario system y contrasea manager (La contrasea es la que
colocas en la instalacin.

Despus de ingresar el usuario y la contrasea nos encontraremos con la


siguiente pgina

PASO 3.

Vamos al icono que dice Administracin.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 209


ADMINISTRACIN DE BASE DE DATOS

Damos clic a la pestaa Usuarios de Bases de Datos y seguidamente a crear


Usuario.

Le damos un nombre de Usuario y una contrasea, activamos el checkbox de


DBA y le damos activar todo, de tal manera qu:

Finalmente le damos crear.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 210


ADMINISTRACIN DE BASE DE DATOS

PASO 4.

Nos desconectamos del usuario system para entrar con el nuevo usuario creado.

PASO 5.

Procedemos a crear las tablas con nuestro nuevo Usuario, para ello damos clic en
Explorador de Objetos, Luego en la pestaa crear y para finalizar en la pestaa
Tabla

Este nos llevara a la siguiente pgina.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 211


ADMINISTRACIN DE BASE DE DATOS

Le damos el nombre de la tabla y seguidamente los nombres de las columnas e


indicndoles el tipo y tamao.

Al darle siguiente seleccionamos sin rellenar para asignar la llave primaria.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 212


ADMINISTRACIN DE BASE DE DATOS

Le damos siguiente hasta que salga la opcin de crear para finalizar de la


siguiente forma:

Creamos todas las tablas que sean necesarias segn el modelo entidad relacin.

PASO 6.

Cuando ya creemos las respectivas tablas pasamos a llenar los datos en las
distintas tablas, segn el orden corresponda, para no tener problemas con las
llaves forneas

Para esto hacemos lo siguiente:

a. Vamos al inicio y damos clic en Explorador de Objetos, Luego en la pestaa


Examinar y posteriormente en la pestaa Tabla.
b. Sealamos la tabla a llenar y Le damos en la pestaa Datos e insertar fila;
llenamos los campos con los correspondientes datos

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 213


ADMINISTRACIN DE BASE DE DATOS

c. Le damos crear, y hacemos lo mismo hasta llenar los datos que necesitamos y
en todas las tablas que necesitamos

PASO 7.

EXPORTAR LOS DATOS.

Ingresar a consola DOS, desde el Promt del DOS

Escribir la siguiente lnea para exportar los datos de la estructura de nuestra Base
de Datos: exp userid=system/manager file="NombreArchivo".dmp
owner="suUsuario"

Luego presionamos Enter.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 214


ADMINISTRACIN DE BASE DE DATOS

Verificamos el archivo.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 215


ADMINISTRACIN DE BASE DE DATOS

PASO 8.

IMPORTAR.

Ingresamos a consola de DOS y en la lnea de comandos ingresamos la siguiente


lnea: Imp userid=system/manager file="NombreArchivo".dmp fromuser=sai

Nota: antes de ejecutar este comando, se debe crear la cuenta con los privilegios
y roles iguales.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 216


ADMINISTRACIN DE BASE DE DATOS

5.2. IDENTIFICAR LOS TIPOS DE FORMATOS QUE SOPORTA UNA BD.

Tipos de datos en Oracle.

Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.

Tipos de Datos Oracle

Alfanumricos Numricos Fecha Binarios Otros

CHAR NUMBER DATE RAW ROWID

VARCHAR2 FLOAT LONG RAW

VARCHAR BLOB

NCHAR CLOB

NVARCHAR2 NLOB

LONG (Obs.) BFILE

Los valores alfanumricos van encerrados entre comilla simple: 'Alfanumrico' Los
valores numricos son nmero simples: 123 Las fechas van encerradas entre
comillas simples: '1/12/2000' Los valores binarios no pueden ser representados
(son fotos, videos)

Tipo de dato CHAR(b).

Almacena cadenas de caracteres de longitud fija, desde 1 a 2.000 bytes de


ocupacin. El nmero de caracteres que se pueden almacenar se rige segn la
siguiente frmula.

n caracteres = bytes / character set

Para ASCII, el conjunto de caracteres ocupa un byte, por lo que coincide el


nmero de caracteres mximos con la ocupacin del tipo de dato. Si se introduce
un valor de 10 caracteres en un campo de CHAR(100), se tendra que rellenar con
90 posiciones restantes.

As la siguiente expresin es cierta: 'Hola pepe' = 'Hola pepe '

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 217


ADMINISTRACIN DE BASE DE DATOS

Si se intenta introducir un valor demasiado grande para el campo, se intentar


eliminar los espacios finales, y si cabe sin espacios, se introduce. Si an as no
cabe, se retorna un error.

Tipo de dato VARCHAR2(b).

Almacena cadenas de caracteres de longitud variable. Si se define una columna


de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna
ocupar 10 y no 100 como haca con el tipo de dato CHAR.

Tipo de dato VARCHAR(b).

En Oracle es equivalente a VARCHAR2, en futuras versiones permitir distintos


criterios de comparacin.

Tipo de dato NCHAR(b).

Almacena un valor alfanumrico de longitud fija con posibilidad de cambio de


juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC,
UNICODE

Tipo de dato NVARCHAR2(b).

Almacena un valor alfanumrico de longitud variable con posibilidad de cambio de


juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC,
UNICODE

Tipo de dato NUMBER(p,s).

Almacena valores numricos en punto flotante que pueden ir desde 1.0 x 10-130
hasta 9.9(38 nueves) 9 x 10125 . El almacenamiento interno de los valores
numricos en notacin cientfica:

Mantisa x 10exponente

La mantisa puede contener cualquier nmero, entero o decimal, positivo o


negativo. El exponente podr contener cualquier nmero entero, positivo o
negativo. El parmetro p indica la precisin (nmero de dgitos contando los
decimales) que contendr el nmero como mximo. Oracle garantiza los datos con
precisiones de 1 a 38. El parmetro s indica la escala, esto es, el mximo de
dgitos decimales. Hay que tener en cuenta que una columna definida
NUMBER(10,5), podr contener como mximo cualquier nmero siempre y

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 218


ADMINISTRACIN DE BASE DE DATOS

cuando el nmero de dgitos enteros ms el nmero de dgitos decimales no


supere 10 (y no 15). La escala puede ir de -84 a 127. Para definir nmero enteros,
se puede omitir el parmetro s o bien poner un 0 en su lugar. Se puede especificar
una escala negativa, esto lo que hace es redondear el nmero indicado a las
posiciones indicadas en la escala.

Por ejemplo un nmero definido como NUMBER(5,-2), redondear siempre a


centenas. As si intentamos introducir el valor 1355, en realidad se almacenar
1400.

Tipo de dato FLOAT(b).

Almacena un nmero en punto decimal sin restriccin de dgitos decimales.

El parmetro b indica la precisin binaria mxima que puede moverse en el rango


1 a 126. Si se omite el defecto ser 126. Una columna FLOAT(126) es equivalente
a una columna NUMBER(38), aunque la diferencia est en que la columna
NUMBER no podr contener decimales y la columna FLOAT si y con cualquier
escala.

Tipo de dato DATE.

Almacena un valor de fecha y hora.

Para un tipo de dato DATE, Oracle almacena internamente los siguientes datos:

Siglo
Ao
Mes
Da
Hora
Minuto
Segundo

El formato por defecto de las fechas es: 'DD-MON-YYYY' Esto es:

Dos dgitos para el da Las tres primeras siglas del mes (depende del idioma
instalado). Cuatro dgitos para el ao.

Por ejemplo:

'1-JAN-2001' '2-DEC-1943'

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 219


ADMINISTRACIN DE BASE DE DATOS

Este formato puede ser alterado en cualquier momento.

Internamente un fecha se almacena como el nmero de das desde cierto punto


de inicio (por ejemplo el ao 0). Esto permite que las fechas puedan ser tratadas
en operaciones aritmticas normales:

'1-JAN-2001' + 10 = '11-JAN-2001' '1-JAN-2000' - 1 = '31-DEC-1999' '10-MAY-


2000' - '1-MAY-2000' = 9

Tipos de datos binarios.

Permiten almacenar informacin en formato "crudo", valores binarios tal y como se


almacenan en el disco duro o como residen en memoria. Estas columnas se
pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.),
como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos,
videos, fotos, documentos Word, DLLs) o para transportar datos de una base de
datos a otra, ya que el formato binario es el nico formato comn entre cualquier
sistema informtico.

Tipo de dato LONG (Obsoleto).

Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta
para compatibilidad con versiones anteriores. En Oracle y siguientes versiones de
debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades
de datos alfanumricos.

Tipo de dato ROWID.

Representa una direccin de la base de datos, ocupada por una nica fila. El
ROWID de una fila es un identificador nico para una fila dentro de una base de
datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar
punteros a filas concretas.

5.3. EXPORTAR LA INFORMACIN DE UNA O MS TABLAS DE UNA BD.

Exportar una base de datos MySQL.

MySQL propone varias formas de exportar los datos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 220


ADMINISTRACIN DE BASE DE DATOS

La principal es el comando en lnea mysql, que permite realizar casi cualquier


accin sobre las bases de datos en una sola lnea.

Este comando puede ejecutarse desde SSH (por lo tanto deber tener acceso
mediante SSH)

# mysql -h nombre_de_host -u nombre_de_usuario -pcontrasea


base_de_datos > fichero_dump.sql

o bien :

# mysql --host nombre_de_host --user nombre_de_usuario --


passwordcontrasea base_de_datos > fichero_dump.sql

nombre_de_host representa el nombre o la direccin IP de la mquina sobre


la que est instalada la base de datos que desea exportar. Por defecto, se
trata de localhost, es decir, la mquina en la que se ejecuta el comando.

nombre_de_usuario representa el usuario de MySQL con el que gestiona la


base. La mayora de las veces el nombre de usuario tiene el mismo nombre
que el de la base de datos, o bien el usuario de login FTP.

password representa la contrasea MySQL del usuario. Si no se indica


contrasea se solicitar de forma interactiva.

Nota : No debe haber espacio entre la contrasea y el parmetro --password o


-p

base_de_datos es el nombre de la base de datos a exportar.

fichero_dump.sql es el nombre de fichero al cual la base de datos va a ser


exportada.

Si no se indica ningn camino absoluto (PATH), el fichero se guardar en el


mismo directorio en el que se ejecuta el comando mysql.

Nota:
Tenga cuidado de no dar ningn fichero existente en este directorio.

Exportar Toda la Base de Datos (XE) y todos sus respectivos esquemas, usuarios
y objetos (archivo.ORA).

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 221


ADMINISTRACIN DE BASE DE DATOS

Inicio>Todos los programas>Base de Datos Oracle 10g Express


Edition>Realizar Copia de Seguridad de Base de Datos

Se abrir una ventana de comandos que ejecutara el respectivo backup de toda la


base de datos, en el caso de express edition EX.

Exportar nicamente un Esquema Especfico (Archivo.DMP). El esquema que se


trabajara como ejemplo es: CAMILO

En lnea de Comandos, Ejecutar el programa de exportar que se encuentra en el


Oracle Home (D:\oraclexe\app\oracle\product\10.2.0\server\BIN): archivo
EXP.EXE (vara segn configuracin cuando se instala Oracle Server)

Indicar Usuario: System

Contrasea: (indicar contrasea system)

Tamao de buffer: 3000000

Nombre del archivo que se va a generar con la ruta completa, por ejemplo:
c:\epsdistribuida.dmp (dmp es la extensin con la que se debe dejar)

Tipo de exportacin: 1 (Toda la base de datos, ojo que son todos los usuarios
incluyendo el system), 2 (Un usuario) y 3 (Una tablas nada ms). Para este
proceso seleccionar 2

Exportar privilegios: S

Exportar datos de la tabla: S

Comprimir el archivo: S

Nombre de los de los usuarios a exportar. Solo se van a exportar los objetos del
usuario CAMILO. Si es ms de uno, ir colocndolos y dar, cuando no haya ms.

Exportar una base de datos MySQL en PhpMyAdmin.

1. Haga clic en la pestaa Exportar.


2. Marque la casilla Estructura y Datos.
3. Marque la casilla Transmitir.
4. Haga clic en el botn Exportar.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 222


ADMINISTRACIN DE BASE DE DATOS

5.4. IMPORTAR INFORMACIN DE UN FICHERO A LA BASE DE DATOS.

Importar una base de datos en MySQL

El camando mysql permite igualmente importar los datos a partir de un fichero


dump.

Basta para ello utilizar la redireccion "<" indicando el fichero dumpo que contenga
la estructura y los datos SQL.

Nota : Para restaurar una base de datos desde cero, es necesario que la base de
datos est creada y vaca__

# mysql -h nombre_de_host -u nombre_de_usuario -pcontrasea


base_de_datos < fichero_dump.sql

o bien :

# mysql --host nombre_de_host --user nombre_de_usuario -pcontrasea


base_de_datos < fichero_dump.sql

nombre_de_host representa el nombre o la direccin IP de la mquina sobre


la que est instalada la base de datos que desea exportar. Por defecto, se
trata de localhost, es decir, la mquina en la que se ejecuta el comando.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 223


ADMINISTRACIN DE BASE DE DATOS

nombre_de_usuario representa el usuario de MySQL con el que gestiona la


base. La mayora de las veces el nombre de usuario tiene el mismo nombre
que el de la base de datos, o bien el usuario de login FTP.

password representa la contrasea MySQL del usuario. Si no se indica


contrasea se solicitar de forma interactiva.

Nota : No debe haber espacio entre la contrasea y --password o -p

base_de_datos es el nombre de la base de datos a exportar.

fichero_dump.sql es el nombre de fichero al cual la base de datos va a ser


importada.

Oracle, importar respaldo de base de datos.

Despus de algn tiempo de ausentarme, he vuelto con muchas ganas de


compartir varios artculos que tengo almacenados y listos para publicar.

En esta ocasin voy a compartir el procedimiento para importar un respaldo en


oracle 10g a partir de un archivo dmp previamente exportado desde la utilidad que
oracle posee para obtener respaldos completos de una base de datos.

Para ello primero debe instalar oracle 10g en su maquina, como este no es el
tema de este artculo no vamos a mostrar el proceso de instalacin, lo que si es
importante mencionar los siguientes tips:

- Es importante si se est realizando una instalacin bajar el firewall, si se trata


de windows 7 primero debemos configurar y conectar a la red el equipo donde
pretendemos instalar oracle, luego podemos ubicarnos en el panel de control e
inhabilitar los mensajes de advertencia de ejecucin de aplicaciones que viene
por defecto en el SO.
- Es recomendable que mientras dure la instalacin y mientras instalamos toad el
ordenador est conectado a la red puede suceder que debido a que no se
reconoce ninguna entrada ni salida a travs de la red, el servicio de oracle no
se inicie correctamente.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 224


ADMINISTRACIN DE BASE DE DATOS

Para importar la base de datos completa.

Primero debemos instalar Oracle 10g, por ejemplo podemos usar el SID o
identificador nico del servicio de Oracle siguiente: UTNDB

A continuacin el primer paso una vez instalado oracle 10g, es crear el tablespace,
un tablespace es una unidad lgica de almacenamiento dentro de una base de
datos oracle, es un puente entre el sistema de ficheros del sistema operativo y la
base de datos, cada tablespace se compone de, al menos, un datafile y un datafile
solo puede pertenecer a un tablespace, cada tabla o indice de oracle pertenece a
un tablespace, es decir cuando se crea una tabla o indice se crea en un
tablespace determinado.

Para crear un tablespace podemos usar sqlplus que viene por defecto en la
instalacin, para ello debemos ingresar a la bdd con el usuario system all
debemos crear el tablespace llamado ACADEMICO ejecutando el siguiente cdigo
a travs sqlplus:

SQL> CREATE TABLESPACE ACADEMICO DATAFILE


'C:\oracle\product\10.2.0\oradata\utndb\ACADEMICO01.DBF' SIZE 640M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

Luego creamos el usuario sobre utndb dentro del tablespace ACADEMICO con
los siguientes permisos:

GRANT SELECT ON DBA_USERS TO UTNDB WITH GRANT OPTION;


GRANT DROP USER TO UTNDB;
GRANT ALTER USER TO UTNDB;
GRANT CREATE USER TO UTNDB;

Las anteriores lineas indican que el usuario utndb tendr acceso a la vista
DBA_USERS del usuario sys, pues en este caso, varios procedimientos de
nuestra aplicacin hacen referencia y uso de esta vista.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 225


ADMINISTRACIN DE BASE DE DATOS

Con lo anteriormente explicado procedemos a crear el usuario UTNDB para ello


debemos autentificarnos como usuarios sys haciendo uso de las siguiente lineas:

SQL> connect system/password as sysdba;


SQL> CREATE USER UTNDB
IDENTIFIED BY VALUES '5C03C3EA63CDEC90'
DEFAULT TABLESPACE ACADEMICO
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
-- 4 Roles for UTNDB
GRANT SELECT_CATALOG_ROLE TO UTNDB;
GRANT MGMT_USER TO UTNDB;
GRANT DBA TO UTNDB WITH ADMIN OPTION;
GRANT AQ_ADMINISTRATOR_ROLE TO UTNDB WITH ADMIN OPTION;
ALTER USER UTNDB DEFAULT ROLE MGMT_USER, DBA,
AQ_ADMINISTRATOR_ROLE;
-- 8 System Privileges for UTNDB
GRANT GLOBAL QUERY REWRITE TO UTNDB;
GRANT SELECT ANY TABLE TO UTNDB;
GRANT CREATE TABLE TO UTNDB;
GRANT DROP USER TO UTNDB;
GRANT ALTER USER TO UTNDB;
GRANT UNLIMITED TABLESPACE TO UTNDB WITH ADMIN OPTION;
GRANT CREATE USER TO UTNDB;
GRANT CREATE MATERIALIZED VIEW TO UTNDB;
-- 1 Object Privilege for UTNDB
GRANT INSERT, SELECT, UPDATE ON SYS.DBA_USERS TO UTNDB
WITH GRANT OPTION;

Como explique anteriormente nuestra instalacin va a proceder a partir de un


respaldo de la base de datos, debemos disponer de un respaldo, para importar el
respaldo de la bdd a nuestro servidor de base de datos actual debemos abrir una
consola (en windows ejecutamos cmd en la opcion ejecutar del inicio de windows)
y procedemos a importar el dmp usando el siguiente cdigo:

C:\>imp system/fenix file=UTNDBREDEMPLEOS.DMP fromuser=utndb


touser=utndb

Esto importara el respaldo de la base de datos en el usuario utndb que acabamos


de crear. Esto es til cuando nuestra intencin es instalar un respaldo completo

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 226


ADMINISTRACIN DE BASE DE DATOS

que incluya indices, claves foraneas, tablas con campos blob, secuenciasetc
en Oracle

Otro ejemplo de importacin Importacin.

Abrir la pagina Inicial de Base de Datos (Inicio>Todos los programas>Base de


Datos Oracle 10g Express Edition>ir a pagina Inicial de Base de datos).

Ingresar con usuario system, indicando la respectiva contrasea.

Hacer clic en el icono de Administracin>Usuarios de Base de Datos>crear


usuario.

Crear un nuevo usuario con el nombre miagenda (automticamente se creara el


esquema miagenda).

En lnea de comandos, Ejecutar el programa de importar que se encuentra en el


Oracle Home (D:\oraclexe\app\oracle\product\10.2.0\server\BIN): archivo IMP.EXE
(puede variar segn la ubicacin de archivos en la instalacin).

Conectarse a la base de datos con el usuario administrador (SYSTEM) indicando


la respectiva contrasea.

Nombre del archivo que se va a importar con la ruta completa, por ejemplo:

c:\epsdistribuida.dmp.

Tamao de buffer: 3000000.

Mostrar solo el contenido del archivo de importacin: n.

Ignorar errores: S.

Importar privilegios: S.

Importar datos de la tabla: S.

Importar archivo de export de base de datos completa: N (ya que es un export de


un usuario nicamente).

Usuario a importar: miagenda.

Para comenzar el import.


ESCUELA DE TECNOLOGAS DE LA INFORMACIN 227
ADMINISTRACIN DE BASE DE DATOS

FUNDAMENTO TERICO.

DEFINIR LA IMPORTANCIA DE IMPORTAR Y EXPORTAR DATOS.

Exportar a otros ficheros.

Para extraer datos desde una base de datos a un fichero se usa la sentencia
SELECT... INTO OUTFILE.

El resto de las clusulas de SELECT siguen siendo aplicables, la nica diferencia


es que la salida de la seleccin se enva a un fichero en lugar de hacerlo a la
consola.

La sintaxis de la parte INTO OUTFILE es:

[INTO OUTFILE 'file_name' export_options]

file_name es el nombre del fichero de salida. Ese fichero no debe existir, ya


que en caso contrario la sentencia fallar.

En cuanto a las opciones de exportacin son las mismas que para las clusulas
FIELDS y LINES de LOAD DATA. Su sintaxis es:

[FIELDS

[TERMINATED BY '\t']

[[OPTIONALLY] ENCLOSED BY '']

[ESCAPED BY '\\' ]

[LINES

[STARTING BY '']

[TERMINATED BY '\n']

Estas clusulas nos permiten crear diferentes formatos de ficheros de salida.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 228


ADMINISTRACIN DE BASE DE DATOS

La clusula FIELDS se refiere a las opciones de cada columna:

TERMINATED BY 'carcter': nos permite elegir el carcter delimitador que se


usar para separar cada columna. Por defecto, el valor que se usa es el
tabulador, pero podemos usar ';', ',', etc.

[OPTIONALLY] ENCLOSED BY 'carcter': sirve para elegir el carcter usado


para entrecomillar cada columna. Por defecto no se entrecomilla ninguna
columna, pero podemos elegir cualquier carcter. Si se aade la palabra
OPTIONALLY slo se entrecomillarn las columnas de texto y fecha.

ESCAPED BY 'carcter': sirve para indicar el carcter que se usar para


escapar aquellos caracteres que pueden dificultar la lectura posterior del
fichero. Por ejemplo, si terminamos las columnas con ',' y no las
entrecomillamos, un carcter ',' dentro de una columna de texto se interpretar
como un separador de columnas. Para evitar esto se puede escapar esa coma
con otro carcter. Por defecto se usa el carcter '\'.

La clusula LINES se refiere a las opciones para cada fila:

STARTING BY 'carcter': permite seleccionar el carcter para comenzar cada


lnea. Por defecto no se usa ningn carcter para ello.

TERMINATED BY 'carcter': permite elegir el carcter para terminar cada


lnea. Por defecto es el retorno de lnea, pero se puede usar cualquier otro
carcter o caracteres, por ejemplo '\r\n'.

Por ejemplo, para obtener un fichero de texto a partir de la tabla 'gente', con
las columnas delimitadas por ';', entrecomillando las columnas de texto con '"'
y separando cada fila por la secuencia '\r\n', usaremos la siguiente sentecia:

mysql> SELECT * FROM gente

-> INTO OUTFILE "gente.txt"

-> FIELDS TERMINATED BY ';'

-> OPTIONALLY ENCLOSED BY '\"'

-> LINES TERMINATED BY '\n\r';

Query OK, 5 rows affected (0.00 sec)

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 229


ADMINISTRACIN DE BASE DE DATOS

mysql>

El fichero de salida tendr este aspecto:

"Fulano";"1974-04-12"

"Mengano";"1978-06-15"

"Tulano";"2000-12-02"

"Pegano";"1993-02-10"

"Mengano";\N

La fecha para "Mengano" era NULL, para indicarlo se muestra el valor \N.

Importar a partir de ficheros externos.

Por supuesto, el proceso contrario tambin es posible. Podemos leer el contenido


de un fichero de texto en una tabla. El fichero origen puede haber sido creado
mediante una sentecia SELECT ... INTO OUTFILE, o mediante cualquier otro
medio.

Para hacerlo disponemos de la sentencia LOAD DATA, cuya sintaxis ms simple


es:

LOAD DATA [LOCAL] INFILE 'file_name.txt'

[REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY '\t']

[[OPTIONALLY] ENCLOSED BY '']

[ESCAPED BY '\\' ]

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 230


ADMINISTRACIN DE BASE DE DATOS

[LINES

[STARTING BY '']

[TERMINATED BY '\n']

[IGNORE number LINES]

[(col_name,...)]

La clusula LOCAL indica, si aparece, que el fichero est en el ordenador del


cliente. Si no se especifica el fichero de texto se buscar en el servidor,
concretamente en el mismo directorio donde est la base de datos. Esto nos
permite importar datos desde nuestro ordenador en un sistema en que el servidor
de MySQL se encuentra en otra mquina.

Las clusulas REPLACE e IGNORE afectan al modo en que se tratan las filas
ledas que contengan el mismo valor para una clave principal o nica para una fila
existente en la tabla. Si se especifica REPLACE se sustituir la fila actual por la
leda. Si se especifica IGNORE el valor ledo ser ignorado.

La parte INTO TABLA tbl_name indica en qu tabla se insertarn los valores


ledos.

No comentaremos mucho sobre las clusulas FIELDS y LINES ya que su


significado es el mismo que vimos para la sentencia SELECT ... INTO OUTFILE.
Estas sentencias nos permiten interpretar correctamente cada fila y cada columna,
adaptndonos al formato del fichero de texto de entrada.

La misma utilidad tiene la clusula IGNORE nmero LINES, que nos permite que
las primeras nmero lneas no se interpreten como datos a importar. Es frecuente
que los ficheros de texto que usaremos como fuente de datos contengan algunas
cabeceras que expliquen el contenido del fichero, o que contengan los nombres de
cada columna. Usando esta clusula podemos ignorarlas.

La ltima parte nos permite indicar la columna a la que ser asignada cada una de
las columnas ledas, esto ser til si el orden de las columnas en la tabla no es el
mismo que en el fichero de texto, o si el nmero de columnas es diferente en
ambos.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 231


ADMINISTRACIN DE BASE DE DATOS

Por ejemplo, supongamos que queremos aadir el contenido de este fichero a la


tabla "gente":

Fichero de datos de "gente"

fecha,nombre

2004-03-15,Xulana

2000-09-09,Con Clase

1998-04-15,Pingrana

Como vemos, hay dos filas al principio que no contienen datos vlidos, las
columnas estn separadas con comas y, como hemos editado el fichero con el
"notepad", las lneas terminan con "\n\r". La sentencia adecuada para leer los
datos es:

mysql> LOAD DATA INFILE "gente.txt"

-> INTO TABLE gente

-> FIELDS TERMINATED BY ','

-> LINES TERMINATED BY '\r\n'

-> IGNORE 2 LINES

-> (fecha,nombre);

Query OK, 3 rows affected (0.00 sec)

Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

mysql>

El nuevo contenido de la tabla es:

mysql> SELECT * FROM gente;

+-----------+------------+

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 232


ADMINISTRACIN DE BASE DE DATOS

| nombre | fecha |

+-----------+------------+

| Fulano | 1974-04-12 |

| Mengano | 1978-06-15 |

| Tulano | 2000-12-02 |

| Pegano | 1993-02-10 |

| Mengano | NULL |

| Xulana | 2004-03-15 |

| Con Clase | 2000-09-09 |

| Pingrana | 1998-04-15 |

+-----------+------------+

8 rows in set (0.00 sec)

mysql>

IDENTIFICAR LOS TIPOS DE FORMATOS QUE SOPORTA UNA BD.

Estos son los tipos de datos que soporta el SQL de Microsoft Jet versin 4.0

Los sinnimos son palabras equivalentes al tipo de dato indicado.

El tamao indica cunto ocupar una columna del tipo indicado.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 233


ADMINISTRACIN DE BASE DE DATOS

Tipo de dato Sinnimos Tamao Descripcin


Se puede almacenar cualquier tipo de
datos en un campo de este tipo. Los datos
VARBINARY
1 byte por no se traducen (por ejemplo, a texto). La
BINARY BINARY VARYING
carcter forma en que se introducen los datos en
BIT VARYING
un campo binario indica cmo aparecern
al mostrarlos.
BOOLEAN
LOGICAL
Valores S y No, y campos que contienen
BIT LOGICAL1 1 byte
solamente uno de dos valores.
YESNO

INTEGER1
TINYINT BYTE 1 byte Un nmero entero entre 0 y 255.

Se utiliza para campos contadores cuyo


AUTOINCREMENT
COUNTER valor se incrementa automticamente al
crear un nuevo registro.
Un nmero entero comprendido entre
MONEY CURRENCY 8 bytes 922.337.203.685.477,5808 y
922.337.203.685.477,5807.
DATE
Una valor de fecha u hora entre los aos
DATETIME TIME 8 bytes
100 y 9999

Un nmero de identificacin nico utilizado


UNIQUEIDENTIFIER GUID 128 bits
con llamadas a procedimientos remotos.
Un tipo de datos numrico exacto con
valores comprendidos entre 1028 - 1 y -
NUMERIC 1028 - 1. Puede definir la precisin (1 - 28)
DECIMAL 17 bytes
DEC y la escala (0 - precisin definida). La
precisin y la escala predeterminadas son
18 y 0, respectivamente.
Un valor de coma flotante de precisin
SINGLE simple con un intervalo comprendido entre
REAL FLOAT4 4 bytes 3,402823E38 y 1,401298E-45 para
IEEESINGLE valores negativos, y desde 1,401298E-45
a 3,402823E38 para valores positivos, y 0.
Un valor de coma flotante de precisin
DOUBLE doble con un intervalo comprendido entre
FLOAT8 1,79769313486232E308 y
FLOAT IEEEDOUBLE 8 bytes 4,94065645841247E-324 para valores
NUMBER negativos, y desde 4,94065645841247E-
324 a 1,79769313486232E308 para
valores positivos, y 0.
SHORT
SMALLINT INTEGER2 2 bytes Un entero corto entre 32.768 y 32.767.

LONG Un entero largo entre 2.147.483.648 y


INTEGER 4 bytes
INT 2.147.483.647.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 234


ADMINISTRACIN DE BASE DE DATOS

INTEGER4

LONGBINARY Desde cero hasta un mximo de 2.14


GENERAL Lo que se gigabytes.
IMAGE
OLEOBJECT requiera Se utiliza para objetos OLE.

LONGTEXT
LONGCHAR 2 bytes por
MEMO carcter. Desde cero hasta un mximo de 2.14
TEXT
NOTE (Consulte gigabytes.
NTEXT las notas).

TEXT(n)
ALPHANUMERIC
CHARACTER
STRING
VARCHAR
CHARACTER
VARYING 2 bytes por
NCHAR
carcter.
CHAR NATIONAL Desde cero a 255 caracteres.
CHARACTER
(Consulte
NATIONAL CHAR las notas).
NATIONAL
CHARACTER
VARYING
NATIONAL CHAR
VARYING

EXPORTAR LA INFORMACIN DE UNA O MS TABLAS DE UNA BD.

Exportar una base de datos.

Usaremos esta opcin cuando deseemos migrar un alojamiento y tengamos que


importar nuestra base de datos en el nuevo alojamiento o simplemente para
guardarnos una copia de seguridad.

La herramienta que vamos a utilizar es el phpMyAdmin. La manera de acceder a


l depende del acceso que le proporcione la empresa de alojamiento. En el caso
de CDmon se accede desde http://sudominio.com/phpMyAdmin (son importantes
las maysculas) y para acceder necesitar su nombre de usuario y contrasea.

Encontrar sus datos de acceso en su Panel de Control, planes alojados, su


dominio, MySQL, Datos de conexin a la base de datos MySQL. Gestin de
usuarios MySQL

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 235


ADMINISTRACIN DE BASE DE DATOS

Una vez dentro del phpMyAdmin, debemos seleccionar la base de datos que
deseamos exportar a un archivo.

Seleccionada la base de datos debe hacer clic en el enlace "Exportar":

Le aparecer una nueva ventana.

Puede realizar la exportacin de modo "Rpido" haciendo clic en "Continuar".

Puede seleccionar "Personalizar" si no desea exportar todas las tablas, o desea


cambiar "Juego de caracteres del archivo" UTF-8, o puede seleccionar compresin
si quiere que el archivo que se genere ocupe menos espacio.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 236


ADMINISTRACIN DE BASE DE DATOS

Una vez recibido el archivo ya tenemos la copia de la base de datos en nuestro


disco, lista para Importar.

IMPORTAR INFORMACIN DE UN FICHERO A LA BASE DE DATOS.

Importar una base de datos.

Debemos importar un archivo que se ha generado previamente. Si usted est


migrando su base de datos de otro alojamiento a CDmon, deber tener la copia de
la base de datos en un archivo con extensin .sql, .zip, .tar.gz o .tgz en su disco
duro.

Si la base de dados a importar pesa ms de 2 MB deber de realizar la


importacin a travs del panel de control de CDmon,

Si la base de dados pesa menos podr realizarlo desde el phpMyAdmin


(desde http://sudominio.com/phpMyAdmin) y para acceder necesitar su nombre
de usuario y contrasea. Encontrar sus datos de acceso en su Panel de Control,
planes alojados, su dominio, MySQL, Datos de conexin a la base de datos
MySQL. Gestin de usuarios MySQL

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 237


ADMINISTRACIN DE BASE DE DATOS

Primero se ha de escoger la base de dados a la que quiere importar o crearla a


travs del panel de control de CDmon,

Una vez dentro del phpmyadmin, debemos seleccionar la base de datos que
hemos creado y a la cual deseamos importar nuestro archivo.

Seleccionada la base de datos debe hacer clic en el enlace "Importar":

Nos mostrar la ventana donde nos permite examinar en nuestro disco duro el
archivo de la base de datos. Haga clic en "Examinar", seleccione el archivo y
acepte.

En la seleccin de "Juego de caracteres" debera seleccionar la misma opcin que


eligi cuando export la base de datos. Habitualmente se utiliza UTF-8.

Hecho esto slo nos queda hacer clic en "Continuar" y esperar que se cargue el
archivo. Tardar ms o menos dependiendo del tamao del archivo.

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 238


ADMINISTRACIN DE BASE DE DATOS

ESCUELA DE TECNOLOGAS DE LA INFORMACIN 239

Potrebbero piacerti anche