Sei sulla pagina 1di 12

DB2

RESEÑA HISTORICA
ENTORNO
QUE ES
CARACTERÍSTICAS
QUE TAMAÑO PUEDE TENER UNA TABLA
TIPOS DE DATOS
OPERADORES Y FUNCIONES
TIPOS DE TABLAS
DEFINICIÓN DE DATOS(TRIGGERS DESDE QUE VERSIÓN ES
SOPORTADA)
PROGRAMAS BÁSICOS UTILIDADES ADICIONALES.

Reseña Histórica:

1970: Se da el origen del DB2, y pertenece a la firma IBM.

1983: Se empezó a vender DB2 con la versión 2.0.

1994:DB2 UDB (DB2 Universal Database) fue construido en base a dos productos incluidos en
el DB2 de AIX, DB2 Common Server, que para propósitos generales incluía funciones
avanzadas para el mercado de servidores de bases de datos, con soporte de hardware SMP y
OLTP; y el DB2 Parallel Edition, que fue desarrollado para soportar aplicaciones de gran
escala, como Data Warehousing y Data Mining.

En la actualidad la tecnología de gestión de datos de IBM es utilizada por más de 40 millones


de usuarios de 300.000 empresas en todo el mundo. Mientras que la evolución del DB2,
Universal Data Base dispone de más de 6 millones de usuarios y 1.300.000 licencias
instaladas.

Arquitectura basica de DB2: El nombre de DB2 es una abreviatura de Database 2. Es un


producto SGBD para el sistema operativo MVS
DB2 coopera con (“se anexa a”, en la terminología del producto) cualquiera de los tres entornos
de susbsistemas de MVS: CICS, TSO e IMS. Estos sistemas cooperan con los recursos de
DB2 para suministrar comunicación de datos y gestion de transacciones. La figura anterior
muestra las realciones entre los diversos componentes de DB2, DB2 proporciona acceso
concurrente a las bases de datos para los usuarios de IM/VS-DC(information Management
System/Virtual Storage-Data Communications: sistema de gestion de
información/alamacenamiento virtual-comunicacionde datos), CICS(Customer Information
Control System: sistema de control de información de clientes) y TSO(Time Sharing Option:
opcion de tiempo compartido), tanto interactivos como por lotes. CICS es un sistema de
supervisión de teleproceso: un producto de IBM que muchas industrias utilizan para procesar
transacciones de negocios, IMS/DC es un entorno de comunicación de datos que maneja
bases de datos IMS jerarquica. TSO es un entorno de tiempo compartido producido por IBM y
en uso desde ahce muchos años. Con el recurso “llamar y anexar” CAF(Call Attach Facility)
una aplicación puede interactuar con una base de datos DB2 sin la ayuda de estos
supervisores. Las bases de datos DB2 se pueden utilizar desde programas de aplicación
escritos en COBOL, PL/1, FORTRAN,C, PROLOG o lenguaje ensamblador de IBM.

Los puntos que siguen describen con mayor detalle el empleo de los diversos susbsistemas
ilustrados en la figura anterios:

1.- Una paliación DB2 consiste en programas escritos en los lenguajes antes mencionados se
ejecutan bajo el control de uno y solo uno de los tres subsistemas: IMS, CICS o TSO. Las
apliaciones DB2 IMS, CICS y TSO se ejecutan por separado; de hecho, se describen en
distintos juegos de manuales.

2.- Las aplicaciones IMS, CICS y TSO pueden compartir las mismas bases de datos DB2,
CSP(Cross Systems Product: producto intersistemas) hace posible ejecutar bajo CICS una
aplicación creada bajo TSO, y viceversa.

3.-DB2 ofrece dos recursos en linea principales: QMF(Query Management Facility: recurso de
gestion de consultas) bajo CICS o CAF, y DB2 Interactive (DB2i) bajo TSO.
DB2i acompaña a DB2: permite a los usuarios profesionales introducir SQL interactivamente a
través de una interfaz llamada SPUFI y les ayuda a preparar programas y utilerias para su
ejecución.

4.- Ademas de las bases de datos DB2, las bases de datos IMS tambien son accesibles desde
una aplicación DB2 bajo los entornos IMS o CICS, pero no bajo TSO. La misma aplicación TSO
se puede ejecutar por lotes o en linea, dirigiendo la E/S del programa a archivos o usando
terminales para E/S

Como se muestra en la figura anterior otros dos recursos QMF y DXT desempeñan importantes
papeles en el empleo de DB2.

QMF(Query Management Facility). QMF es un producto de IBM que se vende por separado y
que actua como lenguajes de consulta y elaborador de informes. Se ejecuta simplemente como
aplicación TSO en linea. Permite a usuarios finales no técnicos hacer consultas adhoc en SQL
O en QBE y muestra los resultados de dichas consultas como informes con formato. Puede
tener acceso a bases de datos DB2 y SQL/DS. La salida de QMF se puede dirigir a otras
utilerias a fin de dibujar graficas de barras (con la utileria interactiva de graficación, Interactive
Chart Utility) y otras presentaciones graficas de los datos (con el administrador de presentación
grafica de datos, Graphical Data Display Manager). Los usuarios construyen formas de manera
interactiva y asi controlan la presentación de los resultados de la consulta.

DXT(Data Extract). Este es un programa de utileria que extrae datos de bases de datos IMS o
de archivos VSAM(Virtual Storage Acces Meted: metodo de acceso de almacenamiento virtual)
o SAM(Sequential Access Meted: metodo de acceso secuencial) y los convierte en un archivo
secuencial. DXT puede especificar las solicitudes de extracción en forma de interactiva o como
trabajos por lotes. Este archivo secuencial tiene un formato adecuado para cargarse
directamente en una base de datos DB2. DXT es un producto independiente de IBM.

La Familia DB2 y DB2/2:

SQL/DS es el primer SGBD relacional de IBM que pertenece a la “familia DB2”. Los recursos
de definición y manipulación de datos en ambos sistemas son esencialmente idénticos, y solo
muestran diferencias sintacticas secundarias. Los dos emplean SQL como lenguaje de consulta
interactiva y como lenguaje de programación de bases de datos, pues lo incorporan en un
lenguaje anfitrion. En un principio, DB2 usaba el codigo SQL/DS para las partes superiores del
sistema (por ejemplo, las funciones de optimizacion y procesamiento de consultas). Las partes
“inferiores” de DB2 se construian a partir de cero. Los recursos QMF

Y DXT pueden usarse tanto con DB2 como con SQL/DS; sin embargo, el almacenamiento de
datos en SQL/DS y DB2 es diferente. Por ejemplo, conceptos como los espacios de tabla de
DB2 no tienen contraparte en SQL/DS. Ademas, DB2 permite usar técnicas especializadas
para manejar bases de datos grandes y cargas de trabajo pesadas que son exclusivas del
sistema operativo MVS. Asi como DB2 proporciona un recurso SQL interactivo para los
usuarios finales a través de DB2i, SQL/DS puede ofrecer a estos algunos recursos a través de
su componente ISQL(SQL interactivo). El IBM Database 2 OS/2(abreviado DB2/2) es el ultimo
de los SGBDR de IBM. Se ejecuta bajo OS/2 y se introdujo en 1988 con el nombre OS/2
Extended Edition Database Manager. Cabe señalar que el SGBD AS/400 DBMS es diferente de
los SGBDR de la familia DB2. La mayor parte de sus funcionalidad reside en hardware
propietario.
Organización de Datos y Procesos en DB2:

Veamos primero como los usuarios y los programas de apliacacion perciben las bases de datos
DB2. todos los datos se visualizan como relaciones o “tablas” (termino legitimo en DB2). Las
tablas son de dos tipos: tablas base, que existen físicamente como datos almacenados, y
vistas, que son tablas virtuales sin identidad física independiente en el almacenamiento. Una
tabla base consiste en uno o mas archivos VSAM.

Procesamiento de Aplicaciones. En la fig 2 se muestra de forma simplificada la preparación de


una aplicación DB2 en SQL incorporado. Indica la secuencia de procesos por la que deben
pasar las aplicaciones de los usuarios para tener acceso a una base de datos DB2. los
componentes principales del flujo de la aplicación SQL son el precompilador, el
enlazador(Bind), el supervisor durante la ejecución y el manejador de datos almacenados. En
pocas palabras, realizan las siguientes funciones:

Precompilador. La tarea del precompiladors procesar las instrucciones de SQL


incorporadas en un programa escrito en un lenguaje anfitrion. El precompilador genera dos
tipos de salidas: el programa fuente original, donde las instrucciones de SQL incorporado son
reemplazados por llamadas CALL; y modulos de solicitud a la base de datos (DBRM: database
request module), que son colecciones de instrucciones de SQL en forma de arbol de análisis
sintactico y que constituyen la entrada al proceso de enlace.

Enlazador: Este componente atiende ambos tipos de solicitudes de SQL: aquellas que
aparecen en programas de aplicación que han de ejecutarse una y otra vez, y las consultas ad
hoc que se ejecutan solo una vez. En la primera categoría, después de un análisis detallado y
una optimizacion de consulta, uno o mas DBRM relacionados se compilan solo una vez para
producir un plan de aplicación. Asi , como el costo de este enlace se amortiza durante las
multilples ejecuciones del programa, se justifica plenamente. Ademas, el proceso de enlace
permite a una aplicación construir e introducir una instrucción en SQL (dinamico) para que se
ejecute de inmediato. El enlazador analiza sintacticamente todos los enunciados SQL. Las
instrucciones de manipulación de SQL se enlazan para producir codigo ejecutable, pero los
enunciados de definición y control solo se analizan y se dejan en una forma que se interpreta
en el momento de la ejecución. La salida del enlazador se denomina plan o paquete.

Supervisor durante la ejecución: Con este termino nos referimos a los servicios de DB3 que
controlan la ejecución de la aplicación. La ejecución de una llamada SQL dentro de un
ptrograma de aplicación real sigue los pasos de procesamiento ilustrados en la fig 3. cuando se
esta ejecutando el modulo de carga del programa de aplicación y llega a una instrucción CALL
insertada por el precompilador, el control pasa al supervisor a través del modulo apropiado de
interfaz de lenguaje de DB2. el supervisor durante la ejecucion obtiene el plan de aplicación y,
aprovechando la información de control en este, solicita que el manejador de datos
almacenados tenga acceso real a la base de datos.

Manejador de Datos Almacenados: Este es el componente del sistema que maneja la base de
daos física. Contiene lo que en DB2 se llama Data Manager(gestor de datos), asi como el
Buffer Manager(gestor de almacenamiento intermedio), Log Manager(gestor de bitacora), etc.
Juntos realizan todas las funciones necesarias ara manipular la base de datos almacenada –
buscar, leer, actualizar- según los requerimientos del plan de aplicación. Este componente
actualiza los indices si es necesario. A fin de lograr el desempeño optimo de las reservas de
almacenamiento

intermedio de lectura anticipada (read-ahead) y el de buscar al lado (look-aside). El manejador


de datos almacenados puede otorgar acceso disperso y enlazado a las tablas del sistema
almacenadas en el catalogo; tiene acceso a los datos o a los indices proporcionando
identificadores de paginas al gestor de almacenamiento intermedio. El tamaño de las paginas
es de 4096 bytes y corresponde al tamaño de pagina del sistema operativo

Procesamiento Interactivo. Los usuarios en linea de DB2 pueden tener acceso a la base de
datos mediante el recurso DB2i(DB2 interactivo), que es una apliacacion en linea ejecutable
bajo DB2. Para que un usuario en linea pueda comunicarse con esta aplicación en linea
requiere los servicios de un gestor de comunicación de datos(DC: data communication). En el
caso de DB2, la funcion de gestor de comunicación de datos la desempeña el componente
TSO de MVS, el recurso de comunicación de datos DC de IMS, o el CICS. DB2i acepta
instrucciones en SQL de una terminal y los transfiere a DB2 para que los ejecute Incluso
durante la ejecución interactiva, las instrucciones de SQL se compilan y se genera el plan de
aplicación correspondiente; los resultados se devuelven a la terminal y el plan se desecha
después de la ejecución.

Utilerias: Los servicios de base de datos incluyen un conjunto de utilerias, las cuales
describiremos mas adelante

Definición de Datos en DB2:

Sabemos que recursos de definición de datos tiene SQL, estos recursos permiten crear,
eliminar y alterar (cuando sea apropiado) tablas base, vistas e indices.

Entre sus instrucciones se encuentran las siguientes:

Para tablas Para vistas Para indices


CREATE TABLE CREATE VIEW CREATE INDEX

ALTER TABLE ALTER INDEX

DROP TABLE DROP VIEW DROP INDEX

No existe la instruccion ALTER VIEW(alterar vista). ALTER INDEX(alterar indice) si existe, pero
maneja los parámetros fisicos de los indices. Durante la creación, no se impone explícitamente
a las tablas base ningun ordenamiento de las tuplas. El ordenamiento de las columnas es
implícito e virtud del orden en que estan los nombres de las columnas en la instrucción
CREATE TABLE.

DB2 maneja el concepto de valores nulos. Cualquier columna puede contener un valor nulo a
menos que la definición de esa columna en CREATE TABLE especifique explícitamente NOT
NULL. Las columnas en las que se permiten valores nulos se representan físicamente en la
base de datos almacenada mediante dos columnas: la columna de datos propiamente dicha y
una columna oculta de indicadores, con un byte de ancho, en la que un valor hexadecimal de
FF significa que se debe ignorar el valor de datos correspondiente (es decir, es nulo) y un valor
de OO indica que el valro correspondiente es valido (no nulo).

El Catalogo del Sistema:

En DB2, el administrador de bases de datos u otros usuarios autorizados pueden tener acceso,
a través de SQL, a las tablas denominadas catalogo. El catalogo del sistema DB2 contiene una
gran variedad de información, como definiciones de tablas base, vistas, indices, aplicaciones,
usuarios, privilegios de acceso y planes de aplicación. El sistema consulta estas descripciones
para efectuar ciertas tareas; por ejemplo, durante la optimizacion de consultas el componente
denlazador usa el catalogo para obtener iformacion sobre los indices.

DB2 adopta un enfoque uniforme para almacenar los datos y el catalogo: ambos se almacenan
como tablas. En vez de describir exhaustivamente el catalogo, daremos una idea de su
contenido mencionando unas cuantas tablas importantes:

1.- SYSTABLES: Esta tiene una entrada por cada tabla base del sistema. La información
relativa a cada tabla incluye, entre otras cosas, sus nombre, el nombre de quien la creo y el
numero total de columnas que contiene.

2.-SYSCOLUMNS: Esta contiene una entrada por cada columna(atributo) definida en el


sistema. Para cada columna, se almacena su nombre, el nombre de la tabla a la que
pertenece, su tipo e información adicional. El mismo nombre de columna puede aparecer en
varias tablas.

3.-SYSINDEXES. Esta contiene, para cada indice, su nombre, el nombre de la tabla indizada,
el nombre del usuario que creo el indice, etc.

Consulta de la información del catalogo. Como el catalogo esta organizado en forma de tablas,
puede consultarse con SQL, igual que cualquier otra tabla. Por ejemplo, consideremos la
consulta

SELECT NAME

FORM SYSTABLES

WHERE COLCOUNT>5

Esta consulta SQL busca en el catalogo los nombres de las tablas que contienen mas de cinco
columnas.
El nombre del creador de las tablas del catalogo es SYSIBM; por tanto, hacemos referencia al
nombre completo de una tabla, como SYSTABLES, escribiendo SYSIBM, SYSTABLES. El
sistema crea automáticamente entradas de catalogo para las tablas del catalogo. Los usuarios
autorizados tienen acceso al catalogo para consultarlo. Asi , quienes tienen privilegio de
SELECT para el catalogo del sistema, si no estan familiarizados con la estructura de la base de
datos, pueden consultar el catalogo para conocerla mejor.

Por ejemplo, la consulta

SELECT TBNAME

FROM SYSIMB.SYSCOLUMNS

WHERE NAME=’NUMEROD’

Lista los nombres de las tablas DEPARTAMENTO Y LUGARES_DEPTOS porque contienen la


columna NUMEROD. La disponibilidad para el usuario de la misma interfaz SQL para tener
acceso a los metadatos, y no solo a los datos, es un recurso importante de DB2

Actualizacion de la información del Catalogo: Si bien para los usuarios la consulta del catalogo
es informativa, su actualizacion puede ser realmente devastadora. Por ejemplo, una solicitud
corriente de actualizacion como

DELETE

FROM SYSIBM.SYSTABLES

WHERE CREATOR=NAVATHE

Eliminara el catalogo las entradas de todas las tablas creadas por NAVATHE. En consecuencia,
dejan de existir las definiciones de dichas tablas, aunque todavía existan las tablas mismas. En
esencia, las tablas se han vuelto inaccesibles. A fin de evitar tales situaciones, no esta
permitido realizar las operaciones UPDATE, DELETE ni INSERT en las tablas del catalogo;
estas funciones se llevan a cabo con ALTER TABLE, DROP TABLE y CERATE TABLE, que son
las instrucciones definición de datos en SQL. El enunciado COMMENT (comentario) de SQL es
util porque permite almacenar información textual sobre una tabla o columna del catalogo.

Por ejemplo con referencia a la definición de base de datos de la fig......................, el enunciado


“COMMENT ON COLUMN DEPENDIENTE.NSSE.IS’ Si ambos padres de un dependiente son
empleados, el dependiente se representa dos veces’” se almacena en las columnas REMARKS
apropiadas de la entrada en la tabla SYSCOLUMNS.

Manipulación de Datos en DB2:

SQL es el lenguaje de manipulación de datos primordial de DB2. Como referencia rapida,


ofrecemos la siguiente lista con algunos tipos de obtenciones y actualizaciones que permite
realizar el SQL de DB2; las versiones mas nuevas de DB2 tal vez manejen algunas de las
características que por ahora no estan disponibles:

1.-Obtenciones simples de tablas(OO).

2.- Presentar las filas completas de la tabla que satisfacen una condicion previamente
especificada (C1C).

3.- Obtenciones con eliminación de filas repetidas(C11A)


4.- Obtencion con valores calculados a partir de las columnas(C15)

5.- Ordenación del resultado de una consulta(C28).

6.- Obtenciones con condiciones que implican conjuntos e intervalos. Estas se realizan con
diversos tipos de constructores:

a. Con IN (C13)
b. Con BETWEEN : DB2 permite construcciones con BETWEEN o NOT BETWEEN;
p. Ej.,”WHERE SALARIO BETWEEN 50 000 AND 100 000”.
c. Con LIKE (C25, C26).
d. Con NULL en comparaciones(C14).

7. Obtención a partir de multiples tablas mediante reuniones(C1,C2,C8, etc).

8. Consultas anidadas: La Anidacion puede lograrse pasando los resultados de la subconsulta


interior a la consulta exterior, mediante IN. En general, las consultas pueden anidarse hasta
cualquier numero de niveles. Como se ilustra en C4A, las subconsultas interior y exterior
pueden referirse a la misma tabla

9. Con EXIXTS: La cuantificacion existencial se logra conectando dos subconsultas con


EXISTS. Como no es posible aplicar directamente la cuantificacion universal, ello se hace con
NOT EXISTS.

10. Empleo de funciones integradas: las funciones del SQL de DB2 incluyen COUNT, SUM,
AVG, MAX y MIN, EXISTS tambien se considera una funcion integrada, aunque, en vez de
devolver un valor numerico o de cadena, devuelve un valor lógico.

11. Agrupación y condiciones sobre grupos.

12UNION: Es posible obtener la union de los resultados de subconsultas, siempre que sean
compatibles con la union . En DB2 la posibilidad de incluir cadenas en la instrucción SELECT
resulta muy util junto con UNION. Por ejemplo, si queremos obtener una lista de las personas
que trabajaron mas de 40 horas o que trabajaron en el proyecto P5, podriamos introducir

SELECT NSSE,’trabajo mas de 40 horas.’

FROM TRABAJA_EN

WHERE HORAS>40

UNION SELECT NSSE,’trabajo en el proyecto P5’

FROM TRABAJA_EN

WHERE NÚMP=P5

Los resultados podrían verse ai:

1000 trabajo mas de 40 horas,

1002 trabajo mas de 40 horas

Observer que si no ubieramos incluido restricciones de cadena en la clausula SELECT, la


entidad repetida (1002) habria sido eliminada.
13. CONTAINS, INTERSECTION y MINUS. El SQL de DB2 no cuenta con estos operadores.

Se deben sustituir por construcciones con EXISTS y NOT EXISTS. Ademas, DB2 no maneja la
union externa (OUTER UNION).

14. Inserción (A1,A1A,A3B).

15. Eliminación: Se logra con DELETE(A4A-A4D). Si queremos eliminar por ejemplo la


definición de la tabla debemos usar DROP TABLE.

16. Modificación: Se logra con UPDATE(A5,A6).

Las instrucciones de actualizacion de SQL de DB2 tienen el defecto de que cuando en un


INSERT , DELETE O UPDATE interviene una subconsulta, la subconsulta anidada no puede
hacer referencia a la tabla destino de la operación. Por ejemplo, si queremos actualizar el valor
de HORAS en todas las filas, asignándole el promedio de las horas, seria deseable un tipo de
construcción como el que sigue, pero que no esta permitido en DB2

UPDATE TRABAJA_EN

SET HORAS=X

WHERE X=(SELECT AVG(HORAS)

FROM TRABAJ_EN)

(Una construccione que hiciera innecesaria X eliminando la clausula WHERE y anidara un


SELECT dentro del UPDATE funcionaria aun mejor.) En la practica, el resultado se logra
obteniendo primero el promedio y empleando después ese promedio para hacer la
actualizacion.

DB2 Version 2 Release 3 (y Versión 3) se ajustan a las especificaciones ISO/ANSI SQL89. por
ello, es posible que algunas de las siguientes características de SQL2, no esten disponibles en
DB2:

1. La orden CREATE DOMAIN(como mecanismo para definir nuevos tipos que sirvan
para referirse a conjuntos de valores).
2. Empleo de tablas reunidas dentro de la clausula FROM
3. La orden CREATE ASSERTION y las instrucciones TRIGGER con procedimientos
de accion.

Procesamiento de vistas:

Se puede definir una vista en DB2 con la instrucción CREATE VIEW seguida de una consulta
SQL. Debemos tener presentes los siguientes puntos al definir vistas en DB2:

• En una definición de vista pueden intervenir una o mas tablas; puede incluir reunines y
funciones integradas.
• Si no se especifican nombres de columnas en la definición de vista, se pueden asignar
automáticamente, excepto cuando se utilicen funciones integradas, expresiones
aritméticas o restricciones.
• La consulta SQL con que se define la vista no puede usar UNION ni ORDER BY.
• Es posible definir vistas sobre vistas ya existentes.
• Cuando se define una vista con la clausula WITH CHECK OPTION, cualquier INSERT
o UPDATE en terminos de esa vista se sometera a comprobación para confirmar que ,
en efecto, se satisfaga el predicado de definición de la vista. Por ejemplo, en la
instrucción siguiente el predicado de definición de la vista es SALDO>500:

CREATE VIEW SUGETO_DE_CREDITO

AS SELECT NUMCLI, NOMBRE, NUMTEL

FROM CLIENTE

WHERE SALDO>500

WITH CHECK OPTION

Obtencion de datos de vistas. Al especificar consultas para obtecion de datos las vistas
se tratan igual que las tablas base. Pueden haber problemas cuando un atributo de la
vista sea resultado de una funcion integrada aplicada a una tabla base subyacente. Por
ejemplo, consideremos la siguiente definición de vista:

CREATE VIEW RESUMEN_DEPTO(NDEP,SALARIOTOTAL)

AS SELECT ND, SUM(SALARIO)

FROM EMPLEADO

GROUP BY ND

Veamos ahora dos consultas. En primer lugar, la consulta

SELECT NDEP

FROM RESUMEN_DEPTO

WHERE SALARIOTATAL>100 000

No es valida, por que despues de la coversion la clausula WHERE quedara como


WHERE SUM(SALARIO)>100 000, y no pueden incluirse funciones integradas en una
clausula WHERE. La conversión correcta (¿puede escribirla el lector?) contiene una
clausula HAVING, pero en DB2 no es posible una consulta convertida como esa. En
segundo lugar, la consulta

SELECT SUM(SALARIOTOTAL)

FROM RESUMEN_DEPTO

Tampoco es valida, porque SUM(SALARIOTOTAL) equivale a SUM(SUM(SALARIO)), y


DB2 no permite anidar las funciones integradas.

Actualizacion de vistas. DB2 no cuenta con recursos para investigar lo que un usuario
desea hacer cuando especifica una actualizacion de vista. Por añadidura, no hay
mecanismos para analizar una actualizacion y determinar si equivale a un conjunto
unico de actualizaciones de las relaciones base. Por tanto, DB2 adopta un enfoque
mas bien restringido al permitir unicamente la actualizacion de vistas de una sola
relacion. Ademas , incluso en el caso de vistas de una sola ralcion, valdran las
siguientes restricciones:

• No se puede actualizar una vista si (a) en su definición interviene una funcion


integrada(b) su definición tiene DISTINCT en la clausula SELECT, (c) su definición
incluye una subconsulta y la clausula FROM de dicha subconsulta hace referencia a la
tabla base sobre la cual esta definida la vista, o (d) hay una clausula GROUP BY en la
definición de la vista.
• Si un campo de la vista se deriva de una expresión aritmética o de una constante, no
se permite inserciones ni actualizaciones; sin embargo, si se permite DELETE (ya que
es posible eliminar una fila correspondiente de la tabla base).

Empleo de SQL incorporado:

Incorporar SQL en programas escritos en COBOL, PL/I, FORTRAN, C, PROLOG y lenguaje


ensamblador. Las pautas de incorporación son las siguientes:

• Cualesquiera tablas base o vistas que utilice el programa deberan declararse por
medio de un enunciado DECLARE. Esto facilita la comprensión del programa y ayuda
al precompilador a verificar la sintaxis.
• Las instrucciones de SQL incorporado deben ir precedidas por EXEC SQL y pueden ir
en cualquier lugar en que este permitida una instrucción ejecutable del lenguaje
anfitrion.
• El SQL incorporado puede incluir recursos de definición de datos, como CREATE
TABLE Y DECLARE-CURSOR, que son puramente declarativos.
• Las instrucciones de SQL pueden hacer referencia a variables del lenguaje anfitrion
precedidas por un signo de dos puntos.
• Las variables anfitrion que reciban valores de SQL deberan tener tipos de datos
compatibles con las definiciones de campos en SQL. La compatibilidad no se define
con mucha rigurosidad; por ejemplo, las cadenas de caracteres de diversas longitudes
o los datos numericos de naturaleza binaria o decimal se consideran compatibles, DB2
se encarga de las conversiones apropiadas.
• El area de comunicación de SQL (SQL Communication Area: SQLCA) actua como area
de retroalimentación comun entre el programa de aplicación y DB2. Un indicador de
estado SQLCODE, contiene un valor numerico que muestra el resultado de una
consulta(por ejemplo, cero indica que se complito con éxito, y +100 indica que se
ejecuto la consulta peor que el resultado es nulo).
• No se necesita un cursor para una consulta de obtención de datos SQL que devuelva
una sola tupla, ni para las instrucciones UPDATE, DELETE o INSERT(excepto cuando
se requiera el CURRENT OF de un registro)
• Puede usarse un programa de utileria especial llamado DCLGEN(generador de
declaraciones) para construir automáticamente enunciados DECLARE TABLE en PL/1
a partir de las definiciones CREATE TABLE en SQL. Tambien se generan
automáticamente estructuras PL/1 o COBOL que corresponden a las definiciones de
las tablas.
• Las instucciones WHENEVER(siempre que), colocada fuera de linea, permite revisar
SQLCODE para detectar una situación especifica. En lo ejmplos

WHENEVER NOTFOUND PERFORM X;


WHENEVER SQLERROR GO TO Y;

NOTFOUND Y SQLERROR son palabras reservadas del sistema que


corresponden a SQLCODE = 100 y SQLCODE = otro valor que no sea 0
ni 100, respectivamente.
Integridad referencial:

Almacenamiento de datos:
Espacio de tablas y tablas almacenadas.
Espacios de indices e indices
Utilerias de DB2.
Características internas de DB2
Seguridad y autorización
Procesamiento de transacciones

Potrebbero piacerti anche