manual básico db2

75
 SSSSSSSSS SSS SSSSSSS SSSSSSS SSS SSSSSSSSS QQQQQQQ QQ QQ QQ QQ QQ QQ QQ QQQ QQQQQQ QQ LL LL LL LL LLLLLLLL LLLLLLLLL // // // // // // DDDDDDD DDDDDDDD DD DD DD DD DD DD DDDDDDDD BBBBBBB BBBBBBBB BB BB BBBBBBBB BB BB BBBBBBBB 222222222 222 2222222 2222222 222 222222222

Upload: angel-arteaga

Post on 15-Jul-2015

346 views

Category:

Documents


2 download

TRANSCRIPT

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 1/75

 

SSSSSSSSS

SSSSSSSSSSSSSSSSS

SSSSSSSSSSSS

QQQQQQQQQ QQQQ QQQQ QQQQ QQQQQQQQQ QQ

LLLLLLLLLLLLLLLLLLLLLLLLL

////////

////

DDDDDDDDDDDDDDDDD DDDD DDDD DDDDDDDDDD

BBBBBBB

BBBBBBBBBB BBBBBBBBBBBB BBBBBBBBBB

222222222222

22222222222222222222222222

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 2/75

 

I

INDICE________ 

CEPTOS.

Conceptos ................................................ 1Tablas ................................................... 1Tipos de datos que puede contener una columna de una tabla 2Indices .................................................. 2

ANISMOS DE SEGURIDAD DE LOS DATOS.

Vistas ................................................... 2Racf (Resource Access Control Facility) .................. 3Passwords de ficheros Vsam .............................. 3Autorizacion ............................................. 3

ANISMOS DE INTEGRIDAD DE LOS DATOS.

Concurrencia ............................................. 3Recuperacion de datos .................................... 3- Unidad de recuperacion ............................... 3

Ayudas a la programacion ................................. 4- Spufi ................................................ 4

- Paneles para preparacion de programas ................ 4- Paneles para mantenimiento de planes ................. 4- DCLGEN (Declarations Generator) ...................... 4- Online Help .......................................... 5

RUCTURA DE UN PROGRAMA QUE OPERA EN UN ENTORNO CICS.

Estructura de un programa que opera en un entorno cics ... 5Preparacion del programa para la ejecucion ............... 5- Traslacion ........................................... 5- Precompilacion ....................................... 6

- Compilacion y link-edicion ........................... 6- Binding .............................................. 6

TRUCCIONES S.Q.L.

Instrucciones basicas .................................... 7Clausula Where ........................................... 8Select into .............................................. 8Update ................................................... 9Delete ................................................... 9Insert ................................................... 10Insercion a la vez de varias filas de una tabla en otra .. 10

Funciones del cursor ..................................... 11Declare cursor ........................................... 11Open ..................................................... 12

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 3/75

 

Fetch .................................................... 12

II

Whenever not found ....................................... 13Update ................................................... 13Delete ................................................... 14Close .................................................... 14Opciones de la instruccion select ........................ 15- Operaciones aritmeticas .............................. 15- Funciones Built-in ................................... 16- Avg .................................................. 16- Max .................................................. 16- Min .................................................. 16

- Sum .................................................. 16- Count ................................................ 16- Clausulas Group by, Having y Order by ................ 17- Group by ............................................. 17- Having ............................................... 18- Order by ............................................. 18- Union ................................................ 19

Seleccion de datos de varias tablas en una fila (join) ... 20Opciones de las condiciones de busqueda .................. 21- Between ... And ...................................... 21- In ................................................... 21- Like ................................................. 21- Is null .............................................. 22

TAS.

Concepto ................................................. 22Proceso de una vista ..................................... 23Subquery ................................................. 24Formas de incluir una subquery en una clausula where ohaving ................................................... 24- Inmediatamente despues de un operador de comparacion.. 24- Despues de un operador de comparacion seguido de allo any .................................................. 25

- Despues de In, para indicar que el valor de la expre-sion debe estar entre los valores devueltos por la sub-query .................................................. 25- Despues de Exists, verificacion de que puede ser en-contrada una fila con la condicion de la subquery ...... 26

Subquery correlativa ..................................... 26Otros ejemplos ........................................... 26- Con una SELECT ....................................... 26- Con una UPDATE ....................................... 27- Con una DELETE ....................................... 27

FI.

Crear y probar instrucciones SQL ......................... 27Creacion de una tabla .................................... 28

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 4/75

 

Creacion de una vista .................................... 28Creacion de una tabla .................................... 28Crear un nombre alternativo o sinonimo para una tabla ovista y dar de baja ese sinonimo ......................... 28

III

ELES.

Panel Principal .......................................... 28- Especificar un fichero de entrada .................... 28- Especificar un fichero de salida ..................... 28- Especificar las opciones de proceso .................. 29

Panel de opciones por defecto ............................ 29

- Especificar otras opciones de proceso ................ 29- Definir caracteristicas del fichero de salida ........ 29- Especificar defectos para el formato de salida ....... 30

Panel Commit/Rollback .................................... 30Restricciones ............................................ 30

IFICACION DE INSTRUCCIONES SQL EN UN PROGRAMA COBOL.

Definir un area de comunicacion llamada SQLCA ............ 31Describir cada tabla o vista a la que acceda el programa . 31Codificar instrucciones SQL .............................. 32- Variables y estructuras host ......................... 32

- Variables indicador .................................. 33Manejo de codigos de retorno de errores : LA SQLCA ....... 33Manejo de condiciones excepcionales: Instruccion Whenever. 35- Tres condiciones que se pueden especificar ........... 36- Dos acciones que se pueden especificar ............... 36

Sugerencias para la codificacion de instrucciones SQL .... 36- Facilitar el uso de indices por el DB2 ............... 36- Facilitar la seleccion de datos de dos o mas tablas .. 36

Notas sobre DB2 / SQL .................................... 37

NDICE I.

Ejemplos de instrucciones sql en cobol II ................ 37- Distinct ............................................. 37- Count ................................................ 38- Sum .................................................. 38- Union ................................................ 39- Between (not between) ................................ 40- In (not in) .......................................... 40- Like (not like) ...................................... 40- Group by ............................................. 40- Max .................................................. 41- Min .................................................. 41- Having ............................................... 41

OMENDACIONES PARA EL DISEÑO DE APLICACIONES EN DB2.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 5/75

 

Administracion de datos .................................. 42Administracion de base de datos .......................... 42Administracion del sistema DB2 ........................... 43Programador del sistema DB2 .............................. 43Operacion del sistema DB2 ................................ 44Analisis de aplicaciones ................................. 44

Programacion de aplicaciones ............................. 45

IV

Soporte de centro de informacion ......................... 45Representantes de los usuarios ........................... 46Macro actividades a desarrollar en un proyecto ........... 46

- Planificacion ........................................ 46- Hw/sw instal. ........................................ 46- Diseño y desarrollo aplicacion ....................... 46- Operacion y recuperacion ............................. 47- Gestion Rdto. ........................................ 47

NIFICACION.

Gestion del proyecto ..................................... 47Seleccion de la aplicacion piloto ........................ 47Definicion de estandares ................................. 48Identificar los recursos a proteger ...................... 48

EÑO Y DESARROLLO DE LA APLICACION.

Establecer el entorno de desarrollo de la aplicacion ..... 48Analisis de aplicaciones ................................. 49Diseño de Base de Datos .................................. 49Desarrollo y prueba de programas ......................... 49Paso de desarrollo a produccion .......................... 50

EÑO DE BASES DE DATOS.

Introduccion ............................................. 51

EÑO LOGICO DE BASES DE DATOS.

Analisis de datos ........................................ 51Normalizacion ............................................ 52Integridad referencial ................................... 53

EGRIDAD DE DATOS.

Un adecuado diseño de base de datos ...................... 53- Analisis total de los datos .......................... 53- Normalizacion de los datos ........................... 53

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 6/75

 

Un adecuado diseño de modulos, codificacion y pruebas .... 54

DIMIENTO Y CONCURRENCIA EN BASE DE DATOS.

Concurrencia ............................................. 55Trabajo realizado por el DB2 para el SQL ................. 55

Diseño fisico de bases de datos .......................... 56Seleccion de indices ..................................... 60

1

CONCEPTOS_________ 

El DB2 es un sistema de manejo de bases de datos basado en un moderelacional de datos. Rueda bajo sistema operativo MVS/SP como un ssistema de este:

+-------------+¦ TERMINAL ¦¦ CICS/OS/VS ¦+-------------+

¦+---------¦--------------------------------------------------¦ v

¦ +------------+ MVS/SD¦ ¦ CICS/OS/VS ¦-------------+ Sistema Operativo¦ +------------+ ¦¦ ¦ ¦¦ v v¦ +------------+ +-------+ +-----------+¦ ¦ IMS/VS ¦ ¦ DB2 ¦<------- ¦ TSO y ¦¦ ¦ DB ¦ +-------+ ¦ BATCH ¦¦ +------------+ ¦ +-----------++---------¦------------------¦-------------------------------

¦ ¦v v

+----------+ +-----------++----------+ ¦ +----------+ ¦¦ Bases de ¦ ¦ ¦ Bases de ¦ ¦¦ Datos ¦--+ ¦ Datos ¦----+¦ IMS/VS ¦ ¦ DB2 ¦¦ DL/I ¦ ¦ ¦+----------+ +----------+

TABLAS______ 

Los datos en las bases de datos DB2 estan disponibles para un progde aplicacion como un conjunto de tablas. Las tablas son estructur

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 7/75

 

datos de dos dimensiones, compuestas de FILAS y COLUMNAS.

Un nombre de tabla esta formado por un identificador de la personacreo la tabla, y de un nombre descriptivo de esta, separados por p

2

TIPOS DE DATOS QUE PUEDE CONTENER UNA COLUMNA DE UNA TABLA__________________________________________________________ 

. Cadenas de caracteres EBCDIC:CHAR - Cadenas de longitud fijaVARCHAR - Cadenas de longitud variable

. Datos numericos:SMALLINT - Enteros binarios de media palabraINTEGER - Enteros binarios de una palabraDECIMAL - Numeros decimales

FLOAT - Numeros de coma flotante

. Cadenas de caracteres graficos:GRAFHIC - DBCS (Double Byte Character Data) de longitudVARGRAPHIC - DBCS de longitud variable

INDICES_______ 

El DB2 proporciona dos mecanismos de acceso a tablas, acceso secuey acceso directo mediante indices. El indice debe ser unico.

Estan basados en los valores de los datos de una o mas columnas, ymantenidos automaticamente por el DB2 cuando se produce un cambiolos datos contenidos en la tabla. Un programa no se refiere a losces, sino que el DB2 selecciona el indice para acceder a los datosel programa requiere.

El DB2 nunca usa como indice una columna que va a ser actualizada,una columna que esta siendo comparada con otra de la misma fila.

MECANISMOS DE SEGURIDAD DE LOS DATOS

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 8/75

 

____________________________________ 

VISTAS______ 

Permiten a un usuario acceder solo a ciertas filas o columnas de utabla.

3

RACF (Resource Access Control Facility)_______________________________________ 

Proporciona control de acceso al DB2 por usuarios o aplicaciones ntorizados, a los ficheros vsam que contienen las bases de datos, adispositivo de acceso directo, etc.

PASSWORDS DE FICHEROS VSAM__________________________ 

Se usan en ficheros no protegidos con RACF.

AUTORIZACION____________ 

Mediante instrucciones GRANT y REVOKE de identificadores de usuari

MECANISMOS DE INTEGRIDAD DE LOS DATOS_____________________________________ 

CONCURRENCIA____________ 

El DB2 permite que mas de un programa acceda a los mismos datos almismo tiempo.

La concurrencia es controlada mediante LOCKS. Consisten en asociarrecurso DB2 con un programa, de forma que esta asociacion afecta apueden acceder otros programas al mismo recurso. Existen varios tiS (Share), U (Update), X (Exclusive), etc.

Ningun programa podra acceder a los datos que hayan sido cambiadosotro programa, pero que todavia no esten en la base.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 9/75

 

RECUPERACION DE DATOS_____________________ 

Unidad de recuperacion______________________ 

Proceso que ocurre entre dos puntos de COMMIT. Es una secuencia deacciones que necesita ser completada para que cualquiera de las ac

4

nes individuales que la forman pueda considerarse como acabada.

Ejemplo:

Una transaccion que transfiere fondos de una cuenta A a otra B, deprimero sustraer la cantidad a transferir de la cuenta A, y luegoa la cuenta B. Cuando se terminen ambas acciones, y no antes, losde ambas cuentas seran consistentes.

Una unidad de recuperacion se señala como completa mediante un COMSynchronization (Sync) Point, de las siguientes formas:

1. Implicitamente al final de una transaccion: EXEC CICS RETURN

2. Explicitamente en puntos de la transaccion: EXEC CICS SYNCPOI

3. Implicitamente : EXEC DLI TERM

4. Implicitamente en un programa BATCH-DLI : EXEC DLI CHKP

Si ocurre una accion y otra no, se dice que la base de datos ha pesu integridad o consistencia. Para lograr que los datos recuperenvalor que tenian antes de comenzar la unidad de recuperacion, se uopcion ROLLBACK para el comando SYNCPOINT.

AYUDAS A LA PROGRAMACION________________________ 

Spufi:_____ Permite usar el SQL sin tener que codificar un programa com

mediante instrucciones que pueden ser ejecutadas y mostradael terminal.

Paneles para preparacion de programas:_____________________________________ Permiten la precompilacion,

pilacion, link-edicion y binding de un programa. Solo se ne

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 10/75

 

ta especificar el nombre del fichero que contiene las instrnes fuente.

Paneles para mantenimiento de planes:____________________________________ Con las opciones BIND, REBIN

FREE. Permiten crear, cambiar o borrar el plan de cualquier

grama DB2.

DCLGEN (Declarations Generator):_______________________________ Usa la informacion del catalogo D

para:

. Crear definiciones de las estructuras de tablas o vistque van a ser guardadas en librerias de Copys para su

5

terior inclusion en los programas.

. Producir instrucciones SQL DECLARE TABLE

ONLINE HELP:___________ Proporciona ayuda durante la ejecucion del spufi.

ESTRUCTURA DE UN PROGRAMA QUE OPERA EN UN ENTORNO CICS______________________________________________________ 

+-----------------------------------------------+¦ APLICACION ¦¦ ¦¦ 1 - Area de datos <-----------+ ¦¦ 2 - SQLCA ¦ ¦¦ ¦ ¦¦ +--> 3 - Entrada al programa ¦ ¦¦ ¦ 4 - Tratar mensaje de entrada ¦ ¦

¦ ¦ 5 - Proceso ¦ ¦¦ ¦ 6 - Instrucciones SQL ---+ ¦ ¦¦ ¦ 7 - Mensaje de salida ¦ ¦ ¦¦ ¦ +-- 8 - Terminacion ¦ ¦ ¦¦ ¦ ¦ ¦ ¦ ¦+---¦--¦----------------------------¦----¦------+

¦ ¦ ¦ ¦¦ ¦ v ¦

+--------¦--------------+ +-----------+ -----> +-----¦ ENTRY ¦ CICS/OS/VS ¦ ¦ CICS/OS/VS¦ ¦ DB2¦ v ¦ +-----------+ <----- +-----¦ EXIT ¦+-----------------------+

1- DB2 pone los valores de las columnas recuperadas en las variab

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 11/75

 

del programa.

2- Cada programa que accede a datos DB2 debe tener un area de datllamada SQLCA (SQL Comunication Area), usada por el DB2 para dal programa si la ejecucion de la ultima instruccion SQL ha sicorrecta, mediante un codigo de retorno , que se puede examinalos campos SQLCODE y SQLWARN0 (deben ser cero y blanco).

PREPARACION DEL PROGRAMA PARA LA EJECUCION__________________________________________ 

a. Traslacion de las instrucciones EXEC por el CICS/OS/VS.__________ 

6

b. Precompilacion del programa.______________ 

El precompilador busca errores de sintaxis, y prepara cada inccion SQL para compilacion o ensamblaje, dando como resultadoconjunto de instrucciones fuente (modulo fuente).

Ademas, el DB2 crea un DBRM (Data Base Request Module), que susado en el paso d, y contiene informacion acerca de cada insccion SQL precompilada.

c. Compilacion ( o ensamblaje) y link-edicion.___________ ____________ 

Cada modulo fuente es compilado o ensamblado para dar lugar amodulo de carga. Al link-editar, los modulos de carga se enlaen un unico modulo objeto.

d. Relacionar el programa y los datos DB2 (binding)._______ 

Se relaciona el programa (el DBRM que representa las peticionSQL hechas por el programa) y las tablas y vistas DB2 que seren procesar. Esto da lugar a un plan de aplicacion, el cualalmacenado por el DB2 y usado cuando se ejecute el programa.El proceso de binding incluye los siguientes pasos:

. Examinar la validez de los nombres de columnas, tablvistas utilizados en el programa

. Verificar que la persona esta autorizada a realizaroperaciones de acceso especificadas por las instruccSQL del programa

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 12/75

 

. Seleccionar los caminos de acceso a los datos DB2 quprograma quiere procesar

Cuando se va a hacer bind de una aplicacion se puede especifi

- Isolation level:

. RR el lock afecta a todas las filas que toca el prog

. CS el lock afecta a todas las filas a las que el proesta accediendo actualmente

Se puede hacer lock del espacio de tabla entero que contienebla que se quiere proteger mediante una instruccion lock tabl

. Para permitir a otras aplicaciones recuperar, pero ntualizar, borrar o insertar filas se usa

EXEC SQL LOCK TABLE nombre_de_tablaIN SHARE MODE

END-EXEC

7

. Para impedir que otras aplicaciones accedan a la tabcualquier forma se usa

EXEC SQLLOCK TABLE nombre_de_tablaIN EXCLUSIVE MODE

END-EXEC

- Resource adquisition time

. USE, por defectoindica que se quieren adquirir los locks cuando loscios de tablas asociados sean accedidos por primera

. ALLOCATE

indica que se quieren adquirir los locks cuando se ael plan de aplicacion

- Resource release time

. COMMIT, por defectoindica que se quieren liberar los locks en cada puntcommit

. DEALLOCATEindica que se quieren retener los locks hasta que teel programa

- Explain pa h selection

. YES

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 13/75

 

se pide al DB2 informacion acerca de las decisionesesta tomando en el establecimiento de caminos de acca los datos

. NO

Si cambian las caracteristicas de la tabla o vista a la que a

el programa, el plan de aplicacion ya no es valido, y el progno puede ser ejecutado. Cuando se intenta hacerlo, el DB2 autticamente hace un rebind intentando crear un nuevo plan.

INSTRUCCIONES S.Q.L.____________________ 

INSTRUCCIONES BASICAS

______________________ 

Las instrucciones en lenguaje S.Q.L. (Structured Query Language) pten comunicar peticiones de acceso a datos al DB2. Es usado por elministrador de la base de datos para crear y cambiar definiciones

8

datos, por el administrador del sistema en cuanto a autorizacionesusuarios de los datos, y por el programador de aplicaciones para rperar y actualizar datos.

La primera clausula de una instruccion SQL dice al DB2 que operaciquiere realizar.

Los nombres de variables van precedidos de ':'.

CLAUSULA WHERE______________ 

Especifica una condicion de busqueda que, identificara la fila o fque se quieren recuperar, borrar o actualizar. La condicion de buspuede estar formada por uno o varios predicados separados por AND

El DB2 primero evalua las clausulas NOT, luego AND y por ultimo ORpuede cambiar el orden de evaluacion por medio de parentesis, queexaminados primero.

Ejemplos:

. WHERE NOT WORKDEPT = 'C01'

. WHERE EMPNO = :EMPID

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 14/75

 

. WHERE JOBCODE + EDUCLVL > 70

. WHERE SEX = 'V' AND (DEPT = 'C1' OR DEPT = 'C2')

SELECT INTO___________ 

Funcion_______ 

Recuperar una fila especifica.

Formato_______ 

EXEC SQL

SELECT nombres_de_las_columnas que nos interesanINTO nombres_de_vbles usadas para contener los datos recuperaFROM nombre_de_la_tabla o vista que contiene los datosWHERE condicion_de_busqueda

END-EXEC

Se pueden especificar hasta 300 columnas en la clausula SELECT. Siquieren recuperar todas las columnas, en el mismo orden en que apaen la fila, se pondra un asterisco, en lugar del nombre de las colel valor de la primera columna especificada se guardara en la prim

9

variable especificada en la clausula INTO, el de la segunda en lagunda, etc.

Si ninguna fila satisface la condicion, el DB2 devuelve un codigoNOT FOUND (SQLCODE=100).

Si la clausula WHERE permitiera recuperar los valores de las columde dos o mas filas, DB2 devuelve un codigo de error en el SQLCODErecupera nada.

Si varias filas cumplieran la condicion, se usara una instruccionDECLARE CURSOR para seleccionar las filas, seguida de una instruccFETCH para mover los valores de las columnas a las variables una fcada vez.

UPDATE______ 

Funcion

_______ 

Cambiar el valor de una o mas columnas en cada fila que satisface

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 15/75

 

condicion de busqueda de la clausula WHERE. Tambien se puede usarborrar un valor de una fila , cambiando el valor de la columna a N

Formato_______ 

EXEC SQLUPDATE nombre_de_la_tabla o vistaSET columnas que se quieren actualizar = nuevo valorWHERE condicion_de_busqueda

END-EXEC

El nuevo valor especificado para una columna puede ser el nombre dotra columna de la misma fila, una constante, una variable, una exsion aritmetica, un valor nulo, etc.Si se omite la clausula WHERE, el DB2 actualiza cada fila de la tao vista con los valores dados.

DELETE______ 

Funcion_______ 

Quitar filas enteras de una tabla, no columnas especificas.

10

Formato_______ 

EXEC SQLDELETE

FROM nombre_de_la_tabla o vistaWHERE condicion_de_busquedaEND-EXEC

Si se omite la clausula WHERE, se borraran todas las filas de la tbla o vista. Para borrar la definicion de una tabla, ademas de sucontenido, se usa la instruccion DROP.

INSERT______ 

Funcion_______ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 16/75

 

Añadir nuevas filas a una tabla o vista, se puede:. Especificar los valores de las columnas que se quieren insert. Incluir una instruccion SELECT en la INSERT para decir al DB2los datos para la nueva fila estan contenidas en otra tabla o

Formato_______ 

EXEC SQLINSERTINTO nombre_de_la_tabla o vista (nombres de columnas)VALUES (valor_de_cada_columna especificada en la clausula INT

END-EXEC

Si se especifican menos nombres de columnas de los que hay en la fel DB2 les asigna valores por defecto.

Si se intenta insertar una fila que duplica otra existente en la t. Si la tabla tiene un indice unico, la fila no es insertada, yDB2 proporciona un SQLCODE -803

. Si la tabla no tiene un indice unico, la fila es insertada sin

INSERCION A LA VEZ DE VARIAS FILAS DE UNA TABLA EN OTRA TABLA_____________________________________________________________ 

Ejemplo:Se crea una tabla llamada EMPTIME con las columnas EMPNUMBER,

PROYNUMBER, STARTDATE y ENDDATE, y se usa la INSERT para llenarla.

11

EXEC SQLINSERT INTO USERA.EMPTIME

(EMPNUMBER, PROYNUMBER, STARTDATE, ENDDATE)SELECT EMPNO, PROYNO, COMIENZO, FINFROM DSN.EMP

END-EXEC

En una SELECT embebida en una INSERT no se puede poner UNION ni OR

El numero de columnas de la SELECT debe ser el mismo de la INSERT.datos que se seleccionan deben ser compatibles con las columnas enque se van a insertar. Para las columnas que no se especifiquen sesertaran los valores por defecto establecidos cuando se creo la taCuando se inserta una fila en una vista, si esta no contiene todascolumnas de la tabla base, el DB2 inserta en ellas valores por def

FUNCIONES DEL CURSOR____________________ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 17/75

 

El cursor permite a un programa recuperar un conjunto de filas, yprocesar una fila cada vez.

El DB2 construye una 'tabla de resultados' para guardar todas lasrecuperadas al ejecutar una instruccion SELECT, y utiliza el cursohacerlas disponibles al programa. Un cursor identifica la fila act

de la tabla de resultados, que el programa puede recuperar secuencmente hasta que alcanza el fin de los datos ( SQLCODE=100, NOT FOUUn programa puede utilizar varios cursores, para cada uno de ellosutilizan las siguientes instrucciones:

DECLARE CURSOR______________ 

Funcion

_______ Se usa para definir e identificar un conjunto de filas que van a saccedidas con un cursor.

Formato_______ 

EXEC SQLDECLARE nombre_del_cursorCURSOR FOR SELECT columna 1, columna 2 .....FROM nombre_de_la_tabla

WHERE columna 1 = condicion_de_busquedaFOR UPDATE OF columna 2 ...(columnas de cada fila que se

quieren actualizar)END-EXEC

12

La instruccion DECLARE CURSOR nombra un cursor. La instruccion SEL

define un conjunto de filas, que formaran la tabla de resultados.

Es posible actualizar una columna de la tabla identificada aunquesea parte de la tabla de resultados (que no haya sido nombrada eninstruccion SELECT), nombrandola en la clausula FOR UPDATE OF.

Cuando DB2 evalua una instruccion SELECT, puede ocurrir que variassatisfagan la condicion de busqueda, y que algunas de ellas estendadas. Para especificar que no se desean, se codificara:

SELECT DISTINCT columna 1, columna 2, .....

OPEN____ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 18/75

 

Funcion_______ 

Le dice al DB2 que se esta preparado para procesar la primera filala tabla de resultados.

Formato_______ 

EXEC SQLOPEN nombre_del_cursor

END-EXEC

FETCH_____ 

Funcion_______ 

Mover a las variables del programa el contenido de la fila selecci

Formato_______ 

EXEC SQLFETCH nombre_del_cursor

INTO variable 1, variable 2 ....END-EXEC

Cuando se utiliza la instruccion FETCH, el DB2 usa el cursor paratar a la siquiente fila de la tabla de resultados.

13

WHENEVER NOT FOUND

__________________ 

Funcion_______ 

Para detectar que ya no tenemos mas filas para procesar se puede:

. Examinar si el SQLCODE tiene valor 100, esto ocurre cuando unatruccion FETCH ha recuperado la ultima fila de la tabla de resdos y se da otra FETCH. Ejemplo: IF SQLCODE = 100 GO TO NO-DAT

. Codificar la instruccion WHENEVER NOT FOUND bifurcando a otra

del programa.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 19/75

 

Formato_______ 

EXEC SQLWHENEVER NOT FOUND GO TO direccion_simbolica

END-EXEC

UPDATE______ 

Funcion_______ 

Una vez que se ha recuperado la fila actual, se puede actualizar econ UPDATE.

Formato_______ 

EXEC SQLUPDATE nombre_de_la_tablaSET columna 1 = valor , columna 2 = valor ....WHERE CURRENT OF nombre_del_cursor

END-EXEC

Cada columna que se quiere actualizar debe haber sido nombrada premente en la clausula FOR UPDATE OF de la instruccion DECLARE CURSOLa clausula WHERE identifica el cursor que apunta a la fila que va

ser actualizada. Despues de actualizar una fila, la posicion del cpermanece en esa fila hasta que se utilice una instruccion FETCH pla siguiente fila.

Con la instruccion UPDATE se actualizan varias filas con una solatruccion SQL, mientras que UPDATE ... WHERE CURRENT OF, permite obuna copia de la fila, examinarla, y entonces, actualizarla.

14

DELETE______ 

Funcion_______ 

Una vez que se ha recuperado la fila actual, se puede borrar con D

Formato_______ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 20/75

 

EXEC SQLDELETE FROM nombre_de_la_tablaWHERE CURRENT OF nombre_del_cursor

END-EXEC

La clausula WHERE identifica el cursor que apunta a la fila que vaborrada. Despues de borrar una fila, no se puede actualizar o borr

utilizando ese cursor, hasta que se de una FETCH para la siguienteCon la instruccion DELETE se borran varias filas con una sola instccion SQL, mientras que DELETE ... WHERE CURRENT OF, permite obtenuna copia de la fila, examinarla, y entonces, borrarla.

CLOSE_____ 

Funcion

_______ Cerrar el cursor una vez que se ha terminado de procesar las filasla tabla de resultados si se quiere volver a utilizarlo. El DB2 ciel cursor automaticamente cuando termina el programa.

Formato_______ 

EXEC SQLCLOSE nombre_del_cursor

END-EXEC

Si el programa completa una unidad de recuperacion todos los cursoabiertos son cerrados automaticamente por el DB2. Si el cursor seve a abrir, el proceso comenzara al principio de la tabla de resuly se tendra que restablecer la posicion del cursor.

Ejemplo:Supongamos que se quieren actualizar los datos de los empleados detabla DSN.EMPL dando un SYNCPOINT cada 100 filas.

15

1. Declarar el cursor como conjunto de filas de EMPNO > UPD-EMP

EXEC SQL (valor actualDECLARE EMPLEADO CURSOR FOR del limiteSELECT EMPNO, SALARY mas bajo)FROM DSN.EMPLWHERE EMPNO > :UPD-EMPORDER BY EMPNO

END-EXEC

2. Abrir el cursor y mover los datos de la tabla de resultadosfila cada vez, de forma que el limite mas bajo de la tabla s

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 21/75

 

tualiza en UPD-EMP.

EXEC SQL : EXEC SQLOPEN EMPLEADO : FETCH EMPLEADO

END-EXEC : INTO :UPD-EMP, :UPD-SAL: END-EXEC

3. Borrar una fila

EXEC SQLDELETE FROM DSN.EMPLWHERE EMNO = :UPD-EMP

END-EXEC

4. Al abrir el cursor de nuevo, la condicion de busqueda de laprocesara la DSN.EMPL basandose en el valor actual de UPD-EM

OPCIONES DE LA INSTRUCCION SELECT_________________________________ 

OPERACIONES ARITMETICAS_______________________ 

La instruccion SELECT se puede usar para realizar operaciones aritcas con los datos antes de que sean proporcionados al programa. Es

consigue mediante operadores aritmeticos en la lista de columnas.SELECT JOBCODE + 10 . . .

Los operadores aritmeticos se pueden usar con columnas de datos dedos como INTEGER, SMALLINT, DECIMAL, o FLOAT, con constantes numery variables.

El valor de la expresion aritmetica se asigna a una variable, peroreemplaza al valor de la columna de la tabla o vista.

16

FUNCIONES BUILT-IN__________________ 

Permiten obtener informacion acerca de las filas que satisfacen ladicion de busqueda. Se puede incluir mas de una en cada instruccio

LECT. La funcion BUILT-IN se aplica a cada fila que satisface la ccion de busqueda, ignorando los valores nulos.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 22/75

 

AVG___ 

Promedio de los valores de una o mas columnas que contengan datos

ricos.

MAX___ 

Maximo valor de una o mas columnas.

MIN___ 

Minimo valor de una o mas columnas.

SUM___ 

Suma del valor de una o mas columnas.

COUNT_____ 

. Numero de filas que satisfacen la condicion de busqueda:

EXEC SQLSELECT COUNT(*)INTO EMP-COUNT

FROM DSN-EMPWHERE JOBCODE >= 50END-EXEC

17

. Numero de valores unicos de una columna en particular:

EXEC SQLSELECT COUNT (DISTINCT DEPTNO)

INTO DST-COUNTFROM DSN-EMP

END-EXEC

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 23/75

 

CLAUSULAS GROUP BY, HAVING Y ORDER BY_____________________________________ 

No se pueden especificar en una instruccion SELECT dentro de la DECURSOR, cuando se pretenda actualizar una columna o borrar una fil

GROUP BY________ 

Divide las filas que satisfacen la condicion de busqueda en gruposgun una o mas columnas especificadas en esta clausula. El resultadla aplicacion de una funcion BUILT-IN, no sera ya un valor unico,

tantos valores como grupos. Si hay valores nulos en una columna esficada en GROUP BY, el DB2 los considera en un grupo por separado.

Ejemplo:Calculo del salario medio por departamento el resultado sera unapor departamento al no especificar WHERE, se procesan todas las fi

EXEC SQLDECLARE XYZ CURSOR FORSELECT WORKDEPT, AVG(SALARY)FROM DSN-EMPGROUP BY WORKDEPT

END-EXEC

.......................................EXEC SQL

FETCH XYZINTO :WORK-DEPT, :AVG-SALARY

END-EXEC

Es posible agrupar por mas de una columna.

Ejemplo:

Calculo del salario medio por departamento y por sexo. El resultadseran dos filas por departamento (una por cada sexo), para las cua

se calculara el promedio.

18

EXEC SQLDECLARE XYZ CURSOR FORSELECT WORKDEPT, SEX, AVG(SALARY)

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 24/75

 

FROM DSN-EMPGROUP BY WORKDEPT, SEX

END-EXEC.......................................EXEC SQL

FETCH XYZINTO :WORK-DEPT, :SEX, :AVG-SALARY

END-EXEC

HAVING______ 

Se usa seguida de la clausula GROUP BY, para especificar que solodesean los grupos que satisfagan una condicion.

Se codifica como la clausula WHERE, pudiendo contener predicados m

ples, la clausula DISTINCT, HAVING NOT, y funciones BUILT-IN.Ejemplo:Calculo del salario medio de las mujeres por departamento, pero sopara los departamentos en los que todos los empleados poseen un nide educacion igual o superior a 16.

EXEC SQLDECLARE XYZ CURSOR FORSELECT WORKDEPT, AVG(SALARY), MIN(EDUCLFROM DSN-EMPWHERE SEX = 'F'GROUP BY WORKDEPT

HAVING MIN(EDUCLVL) >= 16END-EXEC.......................................EXEC SQL

FETCH XYZINTO :WORK-DEPT, :AVG-SALARY, :MIN-EDUC

END-EXEC

ORDER BY________ 

Indica el orden en el que se quieren recuperar las filas, el cualespecifica mediante el nombre de la columna o columnas, o un numer(ORDER BY 3 especifica que se quiere ordenar por la tercera columnde la tabla de resultados) cuando en la SELECT no se ha especificaun nombre de columna sino una expresion aritmetida, funcion BUILT-etc.

19

Todas las columnas de la claurula ORDER BY se han de haber especifen la SELECT.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 25/75

 

Por defecto se toma orden ascendente. Si se encuentran valores nulson tratados como los mas altos. Los caracteres graficos se ordenaen secuencia EBCDIC.

Se pueden especificar secuencias de orden secundarias.

Ejemplo:

Recuperar el nombre y numero de departamento de las mujeres empleaordenado por numero de departamento descendente, y dentro de cdepartamento por nombre de empleado.

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMPNAME, WORKDEPTFROM DSN-EMPWHERE SEX = 'F'ORDER BY WORKDEPT DESC, EMPNAME

END-EXEC.......................................EXEC SQL

FETCH XYZINTO :PGM-NAME, :WORK-DEPT

END-EXEC

UNION_____ 

Permite combinar dos o mas instrucciones SELECT para formar una untabla de resultados, eliminando las filas duplicadas. Se usa paraclar valores de varias tablas, pero el conjunto de filas seleccionde una tabla es añadido al conjunto de filas seleccionado de otra.

Los tipos de datos y longitudes de las columnas nombradas en la inccion SELECT deben ser identicos. Por ejemplo, SELECT A, B UNION Xla columna A debe ser identica a la X, y la columna B a la Y.

Para especificar las columnas por las que se quiere ordenar se debusar numeros, y nunca nombres de columnas.

Para identificar de que instruccion SELECT procede cada fila, se iye una constante al final de la lista de cada SELECT.

SELECT A, B, 'A1' UNION X, Y, 'B1'

El DB2 devolvera la constante correspondiente a cada instruccion Sen la ultima columna de la fila.

20

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 26/75

 

Ejemplo:

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMPNO

FROM DSN.EMP1WHERE WORKDEPT = :WORK-DEPT

UNIONSELECT DISTINCT EMPNOFROM DSN-EMP2WHERE PROJNO = :NUM-PROY

END-EXEC.......................................EXEC SQL

FETCH XYZINTO :EMP-NUMBER

END-EXEC

SELECCION DE DATOS DE VARIAS TABLAS EN UNA FILA (JOIN)______________________________________________________ 

Es posible formar una fila de la tabla de resultados para la cualparte de las columnas procedieran de una tabla, y otra parte de otSi coinciden los nombres de columna de dos tablas, habra que califlos, poniendo como prefijo el nombre de la tabla.

En la instruccion SELECT se listan los nombres de las columnas que

quieren. Si en su lugar se coloca un *, el DB2 devuelve una fila fda por todas las columnas de la primera fila, unido a todas las desegunda.

Si no se especifica la clausula WHERE cada fila de la primera tablconcatenada a cada fila de la segunda tabla para formar una tablaresultados, cuyo numero de filas sera el producto del numero de fide cada tabla.

Ejemplo:A=3 B=2 AB=6

Este metodo se puede usar para crear una vista, pero esta no puedeprocesada mediante instrucciones UPDATE, DELETE o INSERT.

Es posible unir una tabla o vista consigo misma, y hasta 7 tablas.Ei se usa la clausula GROUP BY en la definicion de una vista, la vno puede ser unida con otra tabla.

Ejemplo:

Queremos recuperar las columnas EMPNO y LASTNAME de la tabla DSN.Ey las columnas ACTNUM y EMPTIME de la DSN.EMP2.

21

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 27/75

 

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMP1.EMPNO, LASTNAME, ACTNUM, EMPTIFROM DSN.EMP1, DSN-EMP2WHERE EMP1.EMPNO = EMP2.EMPNO

END-EXEC

.......................................EXEC SQL

FETCH XYZINTO :EMP-NUMBER, :NAME, :ACTIV, :TIME

END-EXEC

OPCIONES DE LAS CONDICIONES DE BUSQUEDA_______________________________________ 

Todas ellas se pueden codificar con NOT.

BETWEEN ... AND_______________ 

Especifica que la condicion debe ser satisfecha por cualquier valoeste comprendido entre los dos valores especificados.

WHERE EDUCLVL BETWEEN 13 AND 16

IN__ 

Indica que se esta interesado en las filas para las que el valor dcolumna especificada esta entre los valores que se listan.

WHERE WORKDEPT IN ('A00', 'C01', 'E02')

LIKE____ 

Indica que se esta interesado en las filas para las que el valor dcolumna especificada es similar al que se proporciona. El grado derecido es determinado por dos caracteres especiales usados en la cque se incluye en la condicion de busqueda:

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 28/75

 

22

. Un '_' para cualquier caracter simple

. Un '%' para una cadena de caracteres. A no ser que el % prece

la cadena de caracteres, la cadena buscada puede comenzar enquier parte de la columna

Se usan cuando no se conocen todos los caracteres de una columna oimporta su contenido.

Ejemplo:

. Para encontrar todos los empleados que viven en San Jose, debemotar seguros de que San Jose no es parte del nombre de otra ciudaporque el DB2 nos devolveria tambien esa fila.

WHERE TOWN LIKE '%SAN JOSE%'. Para encontrar todos los empleados que viven en ciudades que comden por SAN.

WHERE TOWN LIKE 'SAN%'

IS NULL_______ 

Indica que se esta interesado en las filas para las que el valor dcolumna especificada es nulo.

WHERE CODIGO IS NULL

Para indicar que se esta interesado en las filas para las que el vde la columna especificada es blancos.

WHERE CODIGO = ' '

VISTAS______ 

CONCEPTO________ 

Una vista no contiene datos. Es una definicion almacenada de un coto de filas y columnas. Cuando un programa accede a los datos defipor una vista, el DB2 procesa la definicion de la vista. El resultes un conjunto de filas a las que el programa puede acceder median

instrucciones SQL.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 29/75

 

23

Una vista es como una ventana a traves de la cual un programa puedacceder solo a los datos que necesita. Las vistas se pueden usar i

cambiablemente con las tablas cuando se recuperan datos, y puedenvarse de una o mas tablas. Puede tener nombres de columnas diferende los nombres de las tablas.

Las funciones de una vista son:- Seguridad: No permitir el acceso de algunos usuarios a todos lo

datos de una tabla.

- Hacer disponible a una aplicacion un subconjunto de una tabla,lo cual es mas facil codificar instrucciones SQL ya que solo selas columnas y filas de una tabla que se necesitan.

Una vista basada en una tabla de empleados puede contener filaspara un determinado departamento.

- Resumir datos de una tabla y hacerlos disponibles:

. La suma de valores de una columna

. El maximo valor de una columna

. El promedio de valores de una columna

. El resultado de una expresion aritmetica con una o mcolumnas

Cuando se actualizan los datos de una vista, se actualizan los datde la tabla de la que se deriva, y, al contrario, si los datos de

tabla cambian, los datos accesibles a traves de vistas basadas entabla tambien cambian.

PROCESO DE UNA VISTA____________________ 

Una vista se puede crear via SPUFI.

Para insertar una fila en una tabla por medio de una vista, la fil

debe tener un valor para cada columna de la tabla que no posee unvalor por defecto.

Si se crea una vista usando funciones BUILT-IN o las clausulas DISo GROUP BY, solamente es posible usar la instruccion SELECT para e

Si una columna de una vista es definida por medio de una expresionmetica, no se podra actualizar la columna o insertar filas en la v

Si se crea una vista especificando 'WITH CHECK OPTION', todas lasciones y actualizaciones contra la vista son chequeadas antes paraprobar que la fila esta conforme con la definicion de la vista.

Si la vista es resultado de un JOIN, los datos de esta pueden serseleccionados, pero no se puede insertar, borrar o actualizar.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 30/75

 

24

No se puede crear un indice para una vista.

Si la instruccion SELECT usada para crear una vista contiene un *lugar de una lista de columnas, y mas tarde alguien añade otra cola la tabla en la cual se basa la vista, la nueva columna no aparecen la vista a menos que la vista sea creada de nuevo.

SUBQUERY

________ 

En una SELECT anidada en otra SELECT la primera se llama SELECTOUTER-LEVEL, y la interna SUBQUERY.

Cuando se usa una SUBQUERY el DB2 la evalua, y sustituye el valorresulta de ella en la clausula WHERE o HAVING de nivel superior, ypuede existir una SUBQUERY dentro de otra, hasta cinco, e incluso,de haber varias condiciones de busqueda conectadas por operadorescionales, cada una con SUBQUERYS.

La instruccion SELECT de una SUBQUERY solo puede especificar 1 col

1 funcion BUILT-IN o 1 expresion aritmetica.

Una SUBQUERY no puede contener una clausula ORDER BY.

Cuando la instruccion de nivel superior es otra SELECT:

. La SUBQUERY puede basarse en la misma tabla o vista o en otra

. Se puede usar una SUBQUERY en una instruccion WHERE incluso sSELECT es parte de una DECLARE CURSOR, INSERT o CREATE VIEW.

Cuando la instruccion de nivel superior es UPDATE o DELETE la SUBQno puede basarse en la misma tabla o vista.

FORMAS DE INCLUIR UNA SUBQUERY EN UNA CLAUSULA WHERE O HAVING_____________________________________________________________ 

1) Inmediatamente despues de un operador de comparacion____________________________________________________ 

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMPNO, LASTNAME, JOBCODE

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 31/75

 

FROM DSN.EMP1WHERE EDUCLEVEL >

(SELECT AVG (EDUCLEVEL)FROM DSN.EMP2

END-EXEC

25

.......................................

EXEC SQLFETCH XYZINTO :EMP-NUMBER, :NAME, :CODE

END-EXEC

2) Despues de un operador de comparacion seguido de:________________________________________________ 

. ALL, para indicar que el valor proporcionado debe ser comparauna determinada forma con todos los valores que devuelva la SRY.

Ej: WHERE EXPRESION > ALL SUBQUERY

para satisfacer la WHERE, el valor de la expresion de

ser mayor que todos los valores devueltos por la SUBQSi la SUBQUERY no selecciona ningun valor la condiciosatisfecha.

. ANY, para indicar que el valor proporcionado debe ser comparauna determinada forma con cualquiera de los valores que devuela SUBQUERY.

Ej: WHERE EXPRESION > ANY SUBQUERY

3) Despues de IN, para indicar que el valor de la expresion debe e_______________________________________________________________ entre los valores devueltos por la SUBQUERY.___________________________________________ 

Ejemplo:

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMPNO, LASTNAME, JOBCODEFROM DSN.EMP1WHERE EMPNO IN

(SELECT DISTINCT EMPNOFROM DSN.EMP2WHERE PROYNO = 'M1')

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 32/75

 

END-EXEC.......................................EXEC SQL

FETCH XYZINTO :EMP-NUMBER, :NAME, :CODE

END-EXEC

26

4) Despues de EXISTS para verificar que al menos puede ser encontr_______________________________________________________________ una fila que cumpla la condicion de la SUBQUERY.

_______________________________________________ 

Ejemplo:

WHERE EXISTS SUBQUERY

No es necesario especificar nombres de columna en la SELECT, sinya que la SUBQUERY no va a devolver datos.

SUBQUERY CORRELATIVA

____________________ 

En una SUBQUERY normal, el DB2 ejecuta la SUBQUERY una vez, sustitel resultado en la parte derecha de la condicion de busqueda, y evla SELECT de nivel superior segun el valor de la condicion de busq

Una SUBQUERY correlativa se ejecuta una vez para cada fila de la to vista mencionada en la SELECT de nivel superior, de forma que selua la SUBQUERY para cada fila.

Se usa para calcular algun valor que puede ser diferente para cada

Es igual que una normal excepto porque despues de especificar el nde la tabla en la clausula FROM, proporcionamos un nombre de correcion, variable que representa la fila actual. Para especificar lalacion se prefija el nombre de columna con un nombre de correlacio

OTROS EJEMPLOS______________ 

Con UPDATE o SELECT, la SUBQUERY y la instruccion de nivel super

deben referirse a diferente tabla.

En una INSERT, ni la SUBQUERY ni la SELECT de nivel superior den

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 33/75

 

de la INSERT, pueden basarse en la misma tabla en la que se inse

. Con una SELECT______________ 

Esta SELECT recuperara las columnas especificadas para cada emplcuyo JOBCODE es superior a la media de su departamento.

27

EXEC SQLDECLARE XYZ CURSOR FORSELECT EMPNO, LASTNAME, WORKDEPT, JOBCODE

FROM DSN.EMP ESTAFILAWHERE JOBCODE >(SELECT AVG (JOBCODE)FROM DSN.EMPWHERE WORKDEPT = ESTAFILA.WORKDE

END-EXEC.......................................EXEC SQL

FETCH XYZINTO :EMP-NUMBER, :NAME, :DEPT, :CODE

END-EXEC

. Con una UPDATE______________ 

EXEC SQLUPDATE DSN.EMP1 ESTAFILASET DATE = 9999WHERE 840901 >

(SELECT MAX (ENDATE)FROM DSN.EMP2WHERE PROJNO = ESTAFILA.PROJNO)

END-EXEC

. Con una DELETE______________ 

EXEC SQLDELETE FROM DSN.EMP1 ESTAFILAWHERE NON EXISTS

(SELECT *FROM DSN.EMP2WHERE PROJNO = ESTAFILA.PROJNO)

END-EXEC

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 34/75

 

SPUFI_____ 

SPUFI (SQL PROCESSOR USING FILE INPUT) permite:

- Crear y probar instrucciones SQL antes de incluirlas en un progr________________________________ 

28

- Creacion de una tabla_____________________ 

CREATE TABLE TEMPL(EMPNO CHAR(6) NOT NULL,WORKDEPT CHAR(3) NOT NULL,JOBCODE DECIMAL(3) )IN TESTTAB.DSN77EMP;

- Creacion de una vista_____________________ 

La instruccion CREATE VIEW se usa para establecer la definicionvista. La vista se crea cada vez que es referenciada por una insccion SQL.

CREATE VIEW EMPDATA ASSELECT *FROM DSN.EMPWHERE WORKDEPT = 'C1'

- Crear un nombre alternativo o sinonimo para una tabla o vista

_____________________________________________________________ 

CREATE SYNONIM MITABLA FOR DSN.TABEMPL

y dar de baja ese sinonimo.___________________________ 

DROP SYNONIM MITABLA

PANELES

_______ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 35/75

 

1) Panel Principal_______________ 

. Especificar un fichero de entrada,_________________________________ que contiene las instruccSQL que se quieren ejecutar, cuya longitud de registro sera

. Especificar un fichero de salida_________________________________, que recoge cada instrucciel resultado de la ejecucion, que seran los datos recuperadouna SELECT, o un SQLCODE en otras. Tambien incluye estadisti

29

. Especificar las opciones de proceso___________________________________ (YES por defecto)

- CHANGE DEFAULTS: Poniendo YES se accede al panel de opciopor defecto.

- EDIT INPUT: Editar o no el fichero de entrada.

- EXECUTE: Ejecutar o no las instrucciones del fichero de e

- AUTOCOMMIT: Dar o no un punto de COMMIT.

- BROWSE OUTPUT: Displayar o no el fichero de salida.

2) Panel de opciones por defecto._____________________________ 

. Especificar otras opciones de proceso_____________________________________ 

- ISOLATION LEVEL: Por defecto RR.

RR (REPEATABLE READ), garantiza que los valores de la

de datos leidos o cambiados por SPUFI no pueden sebiados por otro programa hasta que SPUFI alcance uto de COMMIT.

CS (CURSOR STABILITY), garantiza que ningun programa pmodificar los datos de una fila en la cual SPUFI tposicionado un cursor. Esto proporciona maxima conrrencia.

- MAX SELECT LINES: Por defecto 250.Maximo numero de filas que devolvera una SELECT.

. Definir caracteristicas del fichero de salida_____________________________________________ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 36/75

 

- RECORD LENGTH: Por defecto 4092.No puede ser menor que la del fichero de entrada.

- BLOCK SIZE: Por defecto 4096.

- RECORD FORMAT: Por defecto VB.

- DEVICE TYPE: Por defecto SYSDA.

30

. Especificar defectos para el formato de salida______________________________________________ 

- MAX NUMERIC FIELD: Por defecto 20.Anchura maxima para campos numericos.

- MAX CHAR FIELD: Por defecto 80.Anchura maxima para campos de caracteres.

- COLUMN HEADING: Por defecto NAMES.NAMESLABELSANYBOTH

3) PANEL COMMIT/ROLLBACK_____________________ 

Si en el panel principal se especifica NO para AUTOCOMMIT, unaque se completa la ejecucion se displaya este panel, en el queindicara una de estas opciones:

. COMMIT: Salvar los cambios en la base de datos.

. ROLLBACK : Borrar los cambios en la base de datos.

. DEFER

RESTRICCIONES_____________ 

Se pueden usar todas las instrucciones excepto:

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 37/75

 

CLOSE EXECUTE OPENDECLARE FETCH PREPAREDESCRIBE INCLUDE WHENEVER

Las opciones no soportadas por spufi son:. INTO en la SELECT. WHERE CURRENT en la UPDATE y DELETE

31

CODIFICACION DE INSTRUCCIONES SQL EN UN PROGRAMA COBOL______________________________________________________ 

1) Definir un area de comunicacion llamada SQLCA

_____________________________________________ 

Es un area de datos en la cual el DB2 devuelve informacion acerdel resultado de la ejecucion de cada instruccion SQL.

WORKING-STORAGE SECTIONEXEC SQL

INCLUDE SQLCAEND-EXEC

Con esta instruccion el precompilador incluira:

01 SQLCA.05 SQLCAID PIC X(8).05 SQLCABC PIC S9(9) COMP.05 SQLCODE PIC S9(9) COMP.05 SQLERRM.

49 SQLERRML PIC S9(4) COMP.49 SQLERRMC PIC X(70).

05 SQLERRP PIC X(8).05 SQLERRD OCCURS 6 TIMES PIC S9(9) COMP.05 SQLWARN.

10 SQLWARN0 PIC X(1).10 SQLWARN1 PIC X(1).

10 SQLWARN2 PIC X(1).10 SQLWARN3 PIC X(1).10 SQLWARN4 PIC X(1).10 SQLWARN5 PIC X(1).10 SQLWARN6 PIC X(1).10 SQLWARN7 PIC X(1).

05 SQLEXT PIC X(8).

2) Describir cada tabla o vista a la que acceda el programa________________________________________________________ 

Esto puede hacerse de dos formas:

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 38/75

 

. Codificando una instruccion DECLARE en la data division, especando nombre de la tabla y listando cada columna y su tipo de

EXEC SQLDECLARE DSN.TDEPT TABLE(DEPNUM CHAR(3) NOT NULL,DEPNOM VARCHAR(36) NOT NULL)

END-EXEC

32

. Previamente a la precompilacion con el DCLGEN.

Para incluir en el programa las declaraciones producidas porEXEC SQL

INCLUDE nombre_del_miembroEND-EXEC

3) Codificar instrucciones SQL___________________________ 

Cada instruccion comienza con EXEC SQL y termina con END-EXEC.

En lugar de instrucciones COPY se codificara INCLUDE.

No se pueden usar nombres de variables que comiencen por SQL, nnombres de entradas externas o de plan que comiencen por DSN, yque estan reservados para el DB2.

No se pueden usar constantes figurativas como ZERO o SPACE en icciones SQL.

VARIABLES Y ESTRUCTURAS HOST

____________________________ 

Las variables HOST son campos de datos, definidos en el programla WORKING STORAGE o en la LINKAGE SECTION, y especificados enopcion INTO de una instruccion SELECT o FETCH, en los cuales selos valores de los datos recuperados por el DB2. Las variablesse codifican en las instrucciones SQL precedidas por dos puntos

Una estructura HOST es un conjunto de variables HOST definidasDATA DIVISION del programa. Puede tener un maximo de dos nivelecepto la declaracion de una cadena de caracteres de longitud vaque requiere un numero de nivel 49. Para identificar un campo d

de una estructura en una instruccion SQL se codificara el nombrestructura seguido de un punto y el nombre del campo.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 39/75

 

La parte entera de un numero nunca es truncada, si un numero noen una variable o en una columna, se trunca la parte decimal sine y si no da un error.

La declaracion de variables HOST se hace en niveles 01 o 77 (lanivel 77 no pueden ser usadas en instrucciones SQL).

Una cadena de caracteres de longitud variable debe tener un niv01 a 48, y contener dos campos elementales a nivel 49:

. Campo de longitud PIC S9(4) COMP.

. Campo de valor PIC X(80). (Como maximo).

33

VARIABLES INDICADOR___________________ 

Una variable indicador es un entero de media palabra.

La variable indicador se especifica precedida de dos puntos inmtamente despues de la variable HOST.

Ejemplo:

EXEC SQLSELECT TELFNUM

INTO :TELEF:INDNULLFROM DSN.TABEMPLWHERE EMPNO = :EMPID

END-EXEC

Se usa para:

. Indicar si ha sido asignado un valor nulo a su variable asociad_______________________________________________________________ 

Si el valor de la columna que se esta recuperando es nulo el DBne un valor negativo en la variable indicador ( si no se usaradaria un error), y el valor de la variable HOST no se alterara.

. Verificar que una cadena de caracteres recuperada no ha sido tr_______________________________________________________________ 

Si la variable indicador contiene un entero positivo, este espela longitud original de la cadena.

. Colocar un valor nulo en una columna

____________________________________ 

Cuando se procesa una instruccion UPDATE el DB2 chequea la vari

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 40/75

 

indicador. Si esta contiene un valor negativo, el valor de la cna se pondra como nulo. Si contiene un valor mayor que -1 la vable asociada contiene un valor para la columna.

4) MANEJO DE CODIGOS DE RETORNO DE ERRORES : LA SQLCA

__________________________________________________ 

SQLCAID_______ 

Cadena de caracteres (long 8) que identifica la SQLCA (valor 'S

34

SQLCABC_______ 

Entero de una palabra que especifica la longitud de la SQLCA. Slor es siempre 136 (X'88').

SQLCODE_______ 

Es un entero de una palabra. Puede tener los siguientes valoresZERO la instruccion se ha ejecutado correctamente

-n ha ocurrido un error

+n la instruccion se ha ejecutado correctamente pero ha ocurri-do una condicion excepcional

+100 no existen datos para procesar

SQLERRM_______ 

Cadena de caracteres de longitud variable (maximo 70) que descruna condicion de error.

SQLERRD_______ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 41/75

 

SQLERRD(3) indica el numero de filas insertadas, actualizadas oborradas en una tabla.

SQLWARN0

________ 

Si es blanco, el resto de las variables SQLWARN tambien lo es.otra forma sera W, y al menos otra SQLWARN sera tambien W.

35

SQLWARN1________ 

Si es W al menos el valor de una columna ha sido truncado al alnarlo en una variable HOST.

SQLWARN2________ 

Si es W al menos un valor nulo ha sido eliminado de el conjuntoargumentos de una funcion.

SQLWARN3________ 

Si es W el numero de variables HOST especificado en una instrucSQL es distINTO del numero de columnas en la tabla o vista.

SQLWARN4________ 

Si es W una UPDATE o DELETE dinamica no incluye una clausula WH

5) MANEJO DE CONDICIONES EXCEPCIONALES: INSTRUCCION WHENEVER_________________________________________________________ 

Hace que el DB2 chequee la SQLCA y continue procesando el progro bifurque a otra area del programa si encuentra un error. Pued

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 42/75

 

tablecerse mas de una WHENEVER para una misma condicion a lo ladel programa, de forma que una WHENEVER afecta a todas las instcciones SQL siguientes hasta que se encuentre otra.Ejemplo:

EXEC SQLWHENEVER CONDICION ACCION

END-EXEC

36

Se pueden especificar tres condiciones:______________________________________ 

. SQLWARNING indica que se quiere hacer cuando SQLWARN0 = W o SQcontiene un valor positivo distinto de 100.

. SQLERROR indica que se quiere hacer cuando SQLCODE < 0

. NOT FOUND indica que se quiere hacer cuando el DB2 no puede entrar una fila que satisfaga la instruccion SQL o cuando no hayfilas para hacer una fetch (SQLCODE=100)

Se pueden especificar dos acciones:__________________________________ 

. CONTINUE el programa continua su ejecucion.

. GO TO el programa bifurca a otra area del programa, cuyo nombre ira precedido de dos puntos.

SUGERENCIAS PARA LA CODIFICACION DE INSTRUCCIONES SQL_____________________________________________________ 

Para facilitar el uso de indices por el DB2___________________________________________ 

. Usar BETWEEN en lugar de >= AND <=

. Evitar conversiones numericas especificando los mismos tipos detos en las comparaciones, y usar datos de la misma longitud

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 43/75

 

. Evitar el uso de predicados con LIKE que comiencen por '%' o '_ 

. Evitar expresiones aritmeticas en un predicado

Para facilitar la seleccion de datos de dos o mas tablas

________________________________________________________ 

. Proporcionar datos redundantes en las JOIN de tablas

. Usar JOIN en lugar de SUBQUERYS correlativas o de SUBQUERYS con

37

NOTAS SOBRE DB2 / SQL._____________________ 

- DECLARE CURSOR.

Esta sentencia SQL no actualiza el SQLCODE.

- SQLCODE = 100.

Si se declara un cursor para la SELECT y no hay filas que satislas condiciones de busqueda el DB2 nos devuelve un SQLCODE = 10

en la primera FETCH que se haga.

- SELECT SUM(COLUMNA) EN COBOL:

Si no se efectuo la suma -no existen filas para las condicionesbusqueda- el valor que se devuelve en el campo resultado de lasuma sera nulos y en determinados casos se produce un SQL = -30Conclusion: Preveerlo en cobol utilizando indicador variable

que devolvera valor negativo si el campo al que estasociado contien valores nulos.

NOTA: En CSP el campo que recoge la suma queda a cerosy el SQLCODE devuelve ceros.

APENDICE I__________ 

EJEMPLOS DE INSTRUCIONES SQL EN COBOL II

________________________________________ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 44/75

 

DISTINCT________ 

*----------------------------------------------------------------** LEER TABLA DE ALTAS DE CLIENTE. *

*----------------------------------------------------------------*

BUSCA-ALTAS.MOVE TVACLTEA TO CVANORAA-AEXEC SQL

SELECT DISTINCT CVANORAA, CVANCTAAINTO :CVANORAA-A, :CVANCTAA-AFROM FVAORALVWHERE CVANORAA = :CVANORAA-A

END-EXEC.

38

COUNT_____ 

*----------------------------------------------------------------**CUENTA EL NUMERO DE DOMICILIACIONES DE UNA ENTIDAD EMISORA **----------------------------------------------------------------*

CUENTA-DOMICILI.

EXEC SQLSELECT

COUNT (*)INTO :CDOIMPOP-MFROM FDOMAESVWHERE CDOEMISA = :CDOEMISA-M

END-EXEC.

SUM___ 

*----------------------------------------------------------------**SUMA EL CONTENIDO DEL CAMPO CVANTITP **----------------------------------------------------------------*

77 IND-NULL PIC S9(4) COMP VALUE 0.SELECT2-FVAORBCV.

MOVE 0 TO IND-NULL CVANTITP-C SQLCODE.

EXEC SQLSELECT SUM(CVANTITP)

INTO :CVANTITP-C :IND-NULL

FROM FVAORBCVWHERE CVAENTIA = :WS-ENTI-DEPOS-1234 AND

CVACLTEA = :CVACLTEA-C AND

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 45/75

 

CVAPIVAA = :CVAPIVAA-C ANDCVAOBSTA = '03' ANDCVATIOPA = '5'

END-EXEC.

IF SQLCODE = NOENCONTRADO OR IND-NULL < 0THEN . . .

39

UNION_____ 

*------------------------------------------------------*

* SELECCIONAR DE CARTERAS LA SUMA DE TITULOS QUE EL ** CLIENTE POSEE DE LA CLAVE VALOR AMPLIACION Y QUE ** ESTEN EN SITUACION '0' O '1'. ** SE RECUPERARA UN FILA POR CADA DISTINTO CLTE EN CADA** CARTERA. **------------------------------------------------------*

DECLARE-CURSOR1.MOVE CORRECTO TO SQLCODE.

EXEC SQLDECLARE CURSOR1 CURSOR FOR

SELECT

D.CVACLICA, SUM(CVAUNUMP - CVAPNUMP + 1)FROM

FVACARTV DWHERE(D.CVAENTIA = :W-ENTIDAD ANDD.CVACLANA >= :WS-CVACLA00 ANDD.CVACLANA <= :WS-CVACLA19 ORD.CVAENTIA = :W-ENTIDAD ANDD.CVACLANA >= :WS-CVACLA40 ANDD.CVACLANA <= :WS-CVACLA59) ANDD.CVASITIA IN('0', '1')

GROUP BY

D.CVACLICAUNION ALLSELECT

P.CVACLICA, SUM(CVANTITP)FROM

FVACAPRV PWHERE(P.CVAENTIA = :W-ENTIDAD ANDP.CVACLANA >= :WS-CVACLA00 ANDP.CVACLANA <= :WS-CVACLA19 ORP.CVAENTIA = :W-ENTIDAD ANDP.CVACLANA >= :WS-CVACLA40 ANDP.CVACLANA <= :WS-CVACLA59) AND

P.CVASITIA IN('0', '1')GROUP BY

P.CVACLICA

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 46/75

 

ORDER BY 1END-EXEC.

IF SQLCODE NOT = CORRECTO ANDSQLCODE NOT = NOENCONTRADOTHEN

MOVE 'DECLARE-CURSOR1' TO WS-PARRAFO

MOVE 'FVACARTV' TO DET8-TABLAPERFORM FIN-DB2.

40

BETWEEN (not between)

_______ 

WHERE CAMPO1 BETWEEN 13 AND 16igual que WHERE CAMPO1 >=13 AND CAMPO 1 <= 16

IN (not in)__ 

WHERE CAMPO1 IN ('A00', 'C01', 'E21')

igual que WHERE CAMPO1 = 'A00'OR CAMPO1 = 'C01'OR CAMPO1 = 'E21'

LIKE (not like)____ 

WHERE CAMPO1 LIKE 'TIO %' (que empienza por "TIO ")WHERE CAMPO1 LIKE '%RAMIRO%' (que lleva "RAMIRO" en

cualquier posicion)

GROUP BY con clausulas AVG, MAX, MIN, HAVING________ (AVG)

EXEC SQLDECLARE XMP1 CURSOR FOR

SELECT DEPARTAMENTO, SEXO, AVG(SALARIO)FROM TABLA1

GROUP BY DEPARTAMENTO, SEXOEND-EXEC.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 47/75

 

EXEC SQLFETCH XMP1INTO :CAMPO1, :CAMPO2, CAMPO3

END-EXEC.

41

(Nos da la media de salario agupando por departamento y sexo.)___________________________________________________________ (MAX)

EXEC SQLSELECT MAX(SALARIO)

INTO :CAMPO1

FROM TABLA1WHERE DEPARTAMENTO = 'AX21'END-EXEC.

(Nos da el mayor valor del campo salario del departamento AX21.)_____________________________________________________________ (MIN)

EXEC SQLSELECT MIN(SALARIO)

INTO :CAMPO1FROM TABLA1WHERE DEPARTAMENTO = 'AX21'

END-EXEC.

(Nos da el menor valor del campo salario del departamento AX21.)_____________________________________________________________ (HAVING)

EXEC SQLDECLARE XMP1 CURSOR FORSELECT DEPARTAMENTO, AVG(SALARIO), MIN(EDLI)FROM TABLA1WHERE SEXO = 'V'

GROUP BY DEPARTAMENTOHAVING MIN(EDLI) >= 16

END-EXEC.

EXEC SQLFETCH XMP1INTO :CAMPO1, :CAMPO2, CAMPO3

END-EXEC.

(Nos da la media del salario y el valor minimo del campo EDLI pordepartamento cuando el campo sexo sea = 'V' y el minimo de EDLI

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 48/75

 

sea mayor o igual que 16).

42

RECOMENDACIONES PARA EL DISEÑO DE APLICACIONES EN DB2_____________________________________________________ 

WLM.-IBMSon varias las funciones involucradas e

implementacion de una aplicacion en DB2, debiendo tenercuenta el que una misma persona puede realizar mas defuncion.

Las principales funciones que sera necesario desason:

ADMINISTRACION DE DATOS

_______________________ 

Las tareas a desarrollar consisten en, sobre la basetener una vision corporativa de los datos, desarrolmodelos logicos y mantener diccionario de datos, ademas de

* Establecer convenciones para la denominacion deentidades de datos, las relaciones entre datos yatributos importantes.

* Definir reglas de integridad de datos.

* Desarrollar vistas de usuario.

* Soporte al Administrador de base de datos y aanalistas de aplicaciones.

* Participar en las sesiones de diseño de base de datos.

ADMINISTRACION DE BASE DE DATOS_______________________________ 

Es responsabilidad de esta funcion el diseño y creaciode objetos DB2, tales como tablas, vistas e indic

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 49/75

 

incluyendo ademas:

* Diseño de modelos fisicos de datos.

* Desarrollo de nombres estandard para objetos DB2 , tacomo espacios de tablas, tablas, indices y vistas.

* Definicion y creacion de objetos DB2.

* Asistir a los analistas de aplicaciones en los prototipfuncionales.

43

* Desarrollar modelos de JCl para utilitis.

* Recomendaciones de procedimiento de backup/recovery plas tablas de aplicacion.

* Soporte a los programadores de aplicaciones en la pruebalas aplicaciones DB2.

* Participar en las revisiones de diseño de aplicaciones.

* Dar soporte tecnico a miembros del equipo de desarrollo.

ADMINISTRACION DEL SISTEMA DB2______________________________ 

Es responsabilidad de esta funcion el controlar esubsistema DB2. Normalmente esta funcion no existeinicio, y entonces es compartida por el Administrador deBase de Datos y el Programador del Sistema.responsabilidades que incluye son:

* Definir el entorno de operacion (hw. y sw.).

* Definir las opciones iniciales de instalacion.

* Suministrar la guia de funcionamiento al programadorsistema y al operador.

* Suministrar informacion a la funcion de planificacioncapacidad.

* Establecer directrices de backup y recuperacion.

* Controlar y perfeccionar el funcionamiento del subsistDB2.

* Participar en las revisiones de diseño.

* Realizar diagnostico de errores,tanto del sistema como

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 50/75

 

aplicaiones.

* Establecer directrices para el uso de las funcionesseguridad del subsistema DB2 y coordinar su uso confuncion de seguridad de la organizacion de administracio

PROGRAMADOR DEL SISTEMA DB2___________________________ 

Esta funcion es similar a la tradicional de programadodel sistema, en lo que se refiere al entorno DB2 incluye:

44

* Instalacion de los productos prerrequisito.

* Instalacion de DB2 y otros productos relacionados.

* Implementar procedimientos para la determinacion dproblemas.

* Aplicar mantenimiento de sw.

* Ejecutar las herramientas de medicion de rendimiento

control, suministrando la informacion a las funcionesADMINISTRACION DEL SUBSISTEMA DB2 Y DE PLANIFICACIONCAPACIDAD.

* Implementar procedimiento de backup y recovery.

* Suministrar autorizacion inicial.

* Desarrollar procedimientos de operacion y entrenamientooperadores.

OPERACION DEL SYSTEMA DB2_________________________ 

Esta responsabilidad incluye:

* Arrancar, parar y controlar el subsistema DB2.

* Controlar los mensajes del DB2 y tomar las acciopertientes.

* Comunicacion con los demas operadores del sistema ( CIC

TP).

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 51/75

 

ANALISIS DE APLICACIONES________________________ 

Esta funcion tiene la responsabilidad de determinardocumentar los requerimientos de la aplicacion, incluyendo

definicion de las relaciones entre los datos y los modelosuso. En concreto, esta responsabilidad incluye:

* Definicion de los requerimientos de la aplicacion.

* Definicion de las relaciones entre datos y modelos usado

* Desarrollo del diseño logico de la aplicacion.

* Definir las especificaciones de los programas.

45

* Coordinar las revisiones del diseño.

* Coordinar las pruebas integradas de programas.

PROGRAMACION DE APLICACIONES____________________________ 

Esta funcion es responsable del desarrollo de programae incluye:

* Codificar y probar programas.

* Implementar las reglas de integridad de datos.

* Codificar rutinas comunes, tales como rutinas de salicodigos de retorno del SQL,puntos de control logicos,etc

* Creacion y carga de datos de prueba en tablas.

* Participar en las revisiones del diseño y planificacionpruebas.

* Desarrollar procedimientos de backup y recuperacion paraaplicacion.

SOPORTE DE CENTRO DE INFORMACION________________________________ 

El requerimiento de esta funcion surgira si se vanutilizar herramientas orientadas a usuarios finales, ta

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 52/75

 

como QMF o AS. Las responsabilidades que incluye efuncion son:

* Añadir nuevos usuarios y mantener sus profiles.

* Soporte de consultas a usuarios finales.

* Asistir a los usuarios en la localizacion y acceso dedatos que requieren.

* Controlar el uso de disco por los usuarios finales.

* Desarrollo de consultas comunes y complejas.

46

REPRESENTANTES DE LOS USUARIOS______________________________ 

Las responsabilidades iniciales de los usuarios son:

* Asesoramiento en la identificacion y definicion de lentidades de la empresa y de sus procesos.

* Definicion de las reglas de integridad.

* Definicion de los objetivos de seguridad, disponibilidadrendimiento.

* Pudiendo tambien involucrarse en la fase de desarrollola aplicacion,para facilitar la creacion de prototipos

cons4 -- e informes.

En una fase inicial, las funciones de ADMINISTRACION DDATOS Y ADMINISTRACION DE BASES DE DATOS, pueden ser asumipor una sola persona.

Igualmente que en el caso anterior, las funcioones dPROGRAMACION DEL SISTEMA DB2 y ADMINISTRACION DEL SISTDB2, pueden ser tambien asumidas por una sola persona.

MACRO ACTIVIDADES A DESARROLLAR EN UN PROYECTO

______________________________________________ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 53/75

 

¦Gestion de Proyecto.PLANIFICACION¦Seleccionar la aplicacion piloto.

¦Definicion de estandares.¦Identificar los recursos a proteger.

¦Definir el entorno de software.

¦Verificar requerimientos hw.HW/SW INSTAL.¦Verificar requerimiento sw.

¦Determinar las opciones de instal. del DB¦Instalar DB2.

¦Preparacion del entorno.¦Desarrollar rutinas y proc. comunes.

DISEÑO Y ¦Analisis de la aplicacion.DESARROLLO ¦Diseño de Bases de Datos.APLICACION ¦Desarrollo de programas y prueba.

¦Paso de desarrollo a produccion.

47

¦Procedimientos de arranque y parada.¦Definir procedim. Backup y Recovery.

OPERACION Y ¦Preparar procedim. de control.RECUPERACION ¦Desarrollar proced. recovery y backup sis

¦Desarrollar proced. backup y recovery de¦ aplicaciones.

¦Estrategia de desarrollo.GESTION RDTO ¦Definir entorno de herramientas.

¦Analizar y refinar.¦

De la lista de actividades expuesta, como se observexisten algunas que solo es necesario realizarlas una votras que habra que realizarlas ciclicamente y finalmeaquellas que son propias de cada aplicacion a desarrollar.

Del conjunto de funciones expuestas, sera necesariasignarlas a personas que formen parte del Proyecto y quemenos seran:

* Una persona como Administrados de Base de DatosAdministrador de Datos.

* Dos analistas de aplicaciones, uno actuando como liderproyecto.

* Dos o mas programadores de aplicaciones.

* Una persona, con el papel de Programador del SistemaAdministrador de Datos del Sistema.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 54/75

 

PLANIFICACION._______________ 

1.-Gestion del Proyecto.

Consistira en el desarrollo de la planificacionProyecto , definiendo la duracion de cada una de lastareas y la dedicacion a ellas de los recursos del equique en algunos casos no sera del 100%.

I5 Planificacion de la formacion y entrenamientodiferentes miembros del equipo.

2.-Seleccion de la aplicacion piloto.

En la que participaran el administrador de la basdatos y analista de aplicaciones.

48

Debera ser una aplicacion de bajo riesgo, que tengaamplio espectro de aplicacion de herramientas, c

simulacion completa y no compleja ademas de facildemostrar a los usuarios finales.

3.-Definicion de Estandares.

Participaran en administrador de base de datosadministrador de datos, el programador del sistema yanalista de la aplicacion.

Su actividad consistira en :

a) Denominacion de los objetos DB2, programas, coptransacciones, usuarios, jobs.

b) Directrices para el diseño de tablas y deaplicacion.

c) Directrices para la programacion de la aplicacion

d) Directrices de documentacion.

e) Procedimientos especificos de instalacion.

4.-Identificar los recursos a proteger.

Definir un entorno de acceso limitado de datos

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 55/75

 

autorizaciones y responder a los requerimientos de auditor

Ser responsable el administrador del sistema, y apersonal que tenga la responsabilidad de mantener el entode seguridad. Ademas participarna el administrador de bade datos y analista de aplicaciones.

Las tareas a realizar son:

* Definir los objetivos de seguridad.

* Identificar los recursos a proteger.

* Establecer los grupos de autorizacion.

DISEÑO Y DESARROLLO DE LA APLICACION____________________________________ 

1.-Establecer el entorno de desarrollo de la aplicac

Consistira en preparar el entorno de trabajoprogramador de aplicaciones, en cuya actividad participara

49

administrador del sistema y el administrador de basesdatos.

El entorno de trabajo estara integrado por librerprocedimientos (jcl's, utilidades, etc.) y rutinas comunesverificacion SQLCA, frecuencia de puntos de control,etc).

2.-Analisis de aplicaciones.

Consistira en la eleccion y aplicacion demetodologia por parte de los analistas de aplicaciones,

para las tareas de:

* Definicion de requerimientos.

* Diseño externo.

* Modelo logico de datos.

* Diseño interno.

Actividades importantes, integradas en las señalason:

- ANALISIS DE DATOS.

- DESARROLLAR PROTOTIPOS FUNCIONALES ( QMF, CSP, SQL

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 56/75

 

- DIRECTRICES PARA EL DISEÑO DE APLICACIONES.

3.-Diseño de Base de Datos.

Tarea a realizar por el administrador de base de da

con la colaboracion del analista de aplicaciones.

4.-Desarrollo y prueba de programas.

Consistira basicamente en la codificacion y prueblos programas de la aplicacion, el responsable directo sel programador de aplicaciones y tambien participaraanalista de aplicaciones el el administrador de basedatos.

Las tareas a realizar son:

* Crear datos de prueba.

* probar las llamadas SQL.

* Desarrollar los programas.

* Prueba unitaria.

* prueba integrada.

50

5.-Paso de Desarrollo a Produccion.

El responsable ser el lider del projecto y particitodo el equipo en esta actividad, cyuas tareasimportantes son:

* Desarrollar el plan de migracion.

* Revisar el rendimiento de la aplicacion.

* Obtener el espacio en disco de produccion.

* Informar al personal de produccion de la carga esperada.

* Desarrollar una lista de puntos claves para el manejoproblemas.

* Mover definiciones de bases de datos (DDL).

* Crear librerias y mover programas de aplicacion.

* Realizar la integracion de las tareas en CICS, TSO.

* Cargar nuevos datos.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 57/75

 

* Nuevos usuarios.

* Establecer autorizaciones.

* Ejecutar RUNSTATS.

* Preprocesar, compilar, link y bind de programas.

* Pasar el EXPLAIN a todos los planes y verificar que se ulos caminos esperados.

* Establecer procedimientos de contabilidad.

El DB2 suministra rutinas de servicio llam"attachement facilities" que conectan el programaaplicacion al DB2 para permitir usar sus servicios.comando DSN y sus interfases asociadas, DSNELI (para TSOBatch ), DSNCLI ( para CICS ) , son las facilidades stand

de conexion al DB2.Por tanto cualquier programa de aplicacion

totalmente dependiente de la conexion al DB2. Por ejempno se pueden cambiar los nombres de planes, antesfinalizar la aplicacion. Si el DB2 termina, tambterminar la aplicacion.

51

DISEÑO DE BASES DE DATOS________________________ 

INTRODUCCION.-______________ 

En el proceso de diseño de bases de datos, deber a huna primera fase de diseño en la que se definiese

"Arquitectura de datos" o "Modelo de datos corporativo",represente de forma general a la entidad, sin entrardetalles, simplemente a nivel de U Grupos de DatosRelaciones entre estos U ( un empleado, un departamentcliente, un prestamo, etc.), lo cual supondra el iniciodiseño del Sistema de Informacion de la entidad.

Una vez cubierta la fase anterior, se iniciaraproceso de analisis de cada una de las aplicacionesubsistemas definidos en el Sistema de Informacion, yconsiguiente al "analisis de los datos" propios deaplicacion, definiendo entonces el contenido de pantallinformes y otros ficheros que requiera el usuario.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 58/75

 

DISEÑO LOGICO DE BASES DE DATOS_______________________________ 

A)ANALISIS DE DATOS.____________________ 

1)Establecer normas de denominacion de los datos pevitar sinonimos(elementos con diferente nombre y misignificado) y homonimos (elementos con el mismo nombrdiferente significado).

2)Durante la elaboracion del modelo de datos, nueU entidades U se crearan siempre que dos entidU relacionen U en una forma varios a varios.

Un ejemplo podra ser que un cliente ha prestado variavales y que un aval ha sido hecho por varios clientes.cual nos llevara a aconsejar la creacion de una taextra de Avales/clientes.

En esta fase se definiran tambien los atributos derelaciones y de las entidades. En consecuenciadiferentes items de datos que integran una entidamediante que claves y tipos de las mismas establecerelas relaciones entre las diferentes entidades.

52

3)En la teoria relacional, clave primaria o candidataimplica camino de acceso o secuencia.

4)Foreign keys son frecuentemente buenas candidatas pararendimiento de indices. (se puede usar en joins).

Las Foreign Keys son las llamadas "claves ajenas", es decolumna(s) de una entidad que es clave primaria en otra.Siendo muchas veces "claves candidatas" en la primera.

5)Un "Clustering index" es aquel que determina el ordenfisico de las filas de una tabla.

B)NORMALIZACION_______________ 

Una vez realizado el analisis de datos, se procederanormalizar las entidades (tablas) en tercera forma norma

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 59/75

 

1)Primera forma normal. Consiste en la eliminacion decampos repetitivos mediante la creacion de una nuentidad. La cual incluye una Foreign Key en la nuentidad, para asi poder realizar JOIN con lasentidades.

La importancia de esta normalizacion, viene dfundamentalmente por la eliminacion de campos repetidosdara lugar a un no deseado mantenimiento de los camimplicados.

2)Segunda forma normal. Consiste en determinar que daelementales son dependientes de campos de claveprimaria. Una nueva entidad se creara con estos campincluyendo tambien una foreign key en la nueva entidpara asi poder hacer join con las dos.

3)Tercera forma normal. Consiste en determinar que daelementales son dependientes de solamente una parte declave primaria. Una nueva entidad se creara con escampos, incluyendo una foreign key en la nueva entidpara asi poder hacer join con las dos entidades.

La importancia de la normalizacion en segunda y tercforma normal, consiste en evitar anomalias de actualizac( en especial en lo que se refiere a la integridaddatos, tal como borrado desintencionado de registros ).una tabla contiene campos no dependientes de la cl

primaria completa, entonces podran darse anomalias enactualizacion.

53

C)INTEGRIDAD REFERENCIAL________________________ 

La integridad referencial puede ser definida como:

* Siempre que se necesita cambiar una tabla (insertactualizar, borrar), que condiciones deben existir enotras tablas?.

* Siempre que se modifica una tablas, que otras tabdeben ser cambiadas?.

Estos aspectos afectan al desarrollo, a la planificacionla recuperacion, etc.

NOTA: En la version 2 del DB2, la integridad referencialuna funcion del DB2, la cual asegura la validacion de la

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 60/75

 

relaciones entre una y otra tabla. Se pueden definircriterios referenciales, por ejemplo el que un empleadopueda ser dado de alta en una departamento si este noexiste. Tambien que una fila de una tabla de departamentno puede ser borrada, mientras existan empleados asignada ese departamento, etc.

INTEGRIDAD DE DATOS:_____________________ 

1.-UN ADECUADO DISEÑO DE BASE DE DATOS._______________________________________ 

* ANALISIS TOTAL DE LOS DATOS.

Todos los campos que son necesarios y no derivablalmacenaran en una tabla.

* NORMALIZACION DE LOS DATOS, PARA EVITAR:

Restricciones artificiales en la aplicacion.Almacenamiento redundante de datos. (excepto pForeign Keys).

Cualquier posible anomalia en la actualizacion.

54

2.-UN ADECUADO DISEÑO DE MODULOS, CODIFICACION Y PRUEBAS._________________________________________________________ 

* Implementar las reglas de integridad referedefinidas al diseñar las bases de datos.

* Definir e implementar las unidades logicatrabajo.(LUW)

Para en cada una de ellas poder establecer los pde Commit en los programas batch o de Sync en

interactivos.

Esto es un aspecto importante en cuanto a integrida

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 61/75

 

rendimiento.

-Una orientacion en programas interactivos puede ser:Diseñar la aplicacion de tal modo que una LUWcorresponda con cada pantalla que se visualiza.

Siempre que haya un CICS RETURN supone un S

implicito.

Evitar cancelaciones, de tal forma que cualquier codde retorno imprevisto, suponga un rollback y mensajesusuario, ademas de escribir la SQLCA en un ficheroerrores.

Una LUW se corresponde con el uso de un thread, ctiempo debe minimizarse, por cuanto supone asigrecursos ( plan, DBD's, espacio de tablas, indicespor ello el thread debe procurar liberarse cuandodialoga con el terminal. Debe tambien recordarse que

Rollback actua desde el ultimo commit o sync.-Una orientacion en programas batch puede ser:

En programas de significada actividad de actualizacser necesario usar Commit y prever restauracion logi

Las Commit deberan hacerse cada cierto numero de LUW,base a cuantos bloqueos puede tener el IRLM ( estoaplicable a bloqueos de paginas o tambien cada 10 ominutos.

No olvidar que todo programa batch que realice Com

periodicos debe tener restauracion logica o debe povolver a ser ejecutado sin afectar a la integridadlos datos.

55

RENDIMIENTO Y CONCURRENCIA EN BASE DE DATOS___________________________________________ 

ALGUNOS DE LOS FACTORES CLAVES SON :____________________________________ 

A)CONCURRENCIA.______________ 

* Esperas por liberacion de bloqueos pueden escondercausa de un lento rendimiento.

* Pueden producirse fallos del SQL debido a quesobrepasa el numero de bloqueos concurrentes del I

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 62/75

 

debido a un lock timeout o a un deadlock.

B)TRABAJO REALIZADO POR EL DB2 PARA EL SQL.___________________________________________ 

* El factor clave consiste en el numero de paginas queleidas y/o escritas por el DB2,lo cual es funcion delde acceso y la cardinalidad de las columnas.

-Informacion sobre la cardinalidad de las columnasdisponible en el Catalogo del DB2 (SYSIBM.SYSCOLUMNS.COLCARD), para columnas que sonprimera de un indice. Informacion sobre la cardinalide indices completos tambien esta disponible enCatalogo del DB2 (tabla SYSIBM.SYSINDEXES, columFIRSTKEYCARD Y FULLKEYCARD.

-Informacion sobre el plan de acceso esta disponibleDB2 EXPLAIN. Se puede usar para una sentencia SQL o puna Plan completo. Esta informacion incluye:

Secuencia en la que los conjuntos (query-blocks)sentencias son procesadas. (ejemplos de sentenciasque tiene varios query-blocks son subselects, UNIONsJOINs).

Secuencia de acciones dentro de un query-block.Si se esta usando un indice. (se suministra el nomb

Como se esta usando un indice (MATCHCOLS=0 indicbusqueda por indice con mucho tiempo de ejecucion).

56

Si hay bloqueo a nivel de pagina o espacio de tabl(TSLOCKMODE). Cuando es igual a X o S reduciraconcurrencia.

Si se hace clasificacion y porque. (hay ocho columnde indicador de sort).

* LOS SIGUIENTES ASPECTOS AFECTAN A LA ELECCION DE UDE ACCESO DEL DB2.

La consulta.

Los indices definidos.

Los parametros DDL. (ejemplo locksize).

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 63/75

 

Los parametros bind. (ejemplo isolation).

Las estadisticas en el DB2 para el espacio de tablas,tablas y los indices, incluyendo:

-Tamaño de la tabla.

-Cardinalidad de los indices.Indices con pocos valodistintos son menos usados por el DB2.

-Como esta organizado el espaciotablas.(clustered?).

-Como estan organizados los indices,

-Cual es el nivel de actualidad de las estadistirespecto al estado actual de los datos(RUNSTATS).

* DEFINIR SOLAMENTE LOS INDICES IDONEOS (UTILES), LOSDEGRADAN PROGRAMAS DE USUARIO Y DE UTILIDAD.

* TABLAS E INDICES BIEN ORGANIZADOS REDUCEN I/Os.

El catalogo del DB2 nos informa de este niorganizacion.

* IMPRESCINDIBLE EL USO DE PROTOTIPOS.

DISEÑO FISICO DE BASES DE DATOS

________________________________ 

A continuacion vamos a ofrecer una serie de recomendacioen la definicion de los diferentes objetos del DB2: Grude almacenamiento, Bases de datos, Espacios de tablTablas, Indices y Vistas.

57

1)Si las tablas usan muy frecuentemente el JOIN, habraconsiderar la posibilidad de desnormalizar las tablalmacenando los datos duplicados para evitar la necesidel JOIN.

Habra que analizar el equilibrio entre el incrementocoste del JOIN y el incremento del coste de mantenimiede datos duplicados.

2)Aconsejar el uso de NOT NULL en las columnas, a noque exista requerimiento por parte de la aplicacion. C

columna nula afecta negativamente al rendimiento y requiun byte extra por fila y ademas complican la logicaprograma, que debe verificar las nulas,

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 64/75

 

3)Colocar las columnas VARCHAR al final de la tabla. Etipo de columnas solo se definiran, cuando la variabilidel tamaño sea significativo, unos 20 bytes de media.

4)El usar ficheros Vsam definidos por el usuario, en lude la definicion de grupos de almacenamiento, da maflexibilidad en la operacion. Permitiendonos incremenespacios de tablas o indices y/o mover un fichero DB2tener que hacer descarga, borrado, y carga de la tabse podra usar el REORG con UNLOAD o DSN1COPY para cambde lugar ficheros DB2).

5)Limitar el nombre de indice a ocho caracteres, para pousar el mismo nombre cuando se usen gruposalmacenamiento o se definan ficheros DB2.

6)Asignar un prefijo a los objetos DB2 por cada aplicacipara facilitar las consultas al catalogo del DB2.

7)Se aconseja una tabla por espacio de tablas.

8)Usar LOCKSIZE TABLESPACE:

Cuando una tabla es accedida en modo de solo lecturaCuando un solo usuario la actualiza. (ej. progr

batch).

Recordar que este atributo se puede modificar antedespues de ejecutar un programa mediante el bind. Osolucion sera codificar LOCK TABLE en el programa.

En este caso tambien es aconsejable usar SUBPAGES = 1los indices.

58

9)Usar LOCKSIZE ANY cuando se ha decidido bloqueo deEn este caso el DB2 actua de la siguiente manera:

* En el momento del BIND el DB2 elige normalmente bloqde pagina, a excepcion de que ISOLATION = rr y scan detabla se realize.

* Durante la ejecucion el DB2 escalara el bloque a nivel

tabla si, y solamente si, el numero de paginas actualmebloqueadas en la tabla exceda al numero especificado climite en NUMLKTS.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 65/75

 

En este caso subpages debe ser > 1 , en base al nivelactividad y al tamaño de la tabla.

10)Usar CLOSE = NO a no ser que el fichero se use muy

11)Todos los accesos a los datos deben de realizarsea traves de VISTAS, nunca a traves de las tablasIncluso en el supuesto de que la VISTA sea igual a la tTambien conviene definir sinonimos para cada vista, deforma que los accesos sean independientes del creadortabla o vista.Otras ventajas son:

* Incrementa la flexibilidad de la autorizacion :usuarios de la vista tendran acceso solamente a las colde la vista.

* Incrementa la simplicidad de las sentencias SQL: Limiel acceso al conjunto de filas y columnas que integravista.

* Incrementa el control sobre los programas y sus accelos datos.( SELECT USER FROM SYSAPPL.USERVIEW )

12)Antes de cargar los datos crear siempre primeindices.

13)Considerar el particionar grandes tablas. La eleccnumero de particiones sera en base al tamaño de la tablanumero de indices, la configuracion de los discosplanificacion de utilidades.

* Facilita el REORG , COPY y RECOVER por particion.

* Facilita el reducir de tamaño los ficheros del DB2.

* Un aspecto importante es en que medida es particionala clave del cluster. Puede ocurrir que la naturalezalos datos dificulten una buena o aceptable distribucion

las particiones. En caso de que la clave primaria

59

consideremos como "no particionable", las soluciones son

-Tener una gran tabla.

-Crear multiples tablas.

-Definir otro indice primario que facilite la particion.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 66/75

 

* En general evitar tener tablas o particiones mayores35% del disco.

14)Normalmente usar solo PCTFREE, para establecer ellibre.

15)En tablas pequeñas considerar espacio libre extrareducir la contencion. Consideraciones generales entorespacio libre son las siguientes:

* A mayor espacio libre:

-menor frecuencia de Reorganizacion.

-menor contencion.

-incremento del tiempo de ejecucion de los programas d

-incremento de I/O de una sentencia SQL que accemultiples filas.

-mayor ocupacion de disco.

16)Aspectos generales de almacenamiento, que puedenal rendimiento.

* En tablas de acceso muy frecuente, procurar colocarlen los discos mas rapidos y en los de cabecera.

* La anterior recomendacion aplicarla al Catalogo yDirectorio del DB2.

* Igualmente con lo referente a los espacios de tabltemporales del DB2. (usadas en join, subselect, ordby,..).

* Procurar evitar el uso de espacio secundario en datosindices, ajustando adecuadamente el tamaño de las tablaEl uso de espacios secundarios degrada el rendimiento.

* Cuando se usen grupos de almacenamiento, asignar un so

volumen a cada grupo. Facilitara el control.

* Evitar usar mas del 75% de cada volumen.

60

SELECCION DE INDICES

____________________ 

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 67/75

 

La seleccion de indices es uno de los aspectosimportantes en el diseño, siendo la mas notable consecuenel rendimiento, ademas de permitirnos forzar la unicidadregistros en donde la clave sea unica.

1)Cuando para una tabla se defina mas de un indice, defi

de forma explicita el indice cluster. Debiendo ser aqbajo cuyo criterio es normalmente procesado el conjuntodatos.

2)Evitar indices que empiecen por la misma columna, conexcepcion de que las pruebas demuestren una utiliimportante.

3)En indices de multiples columnas, la secuencia decolumnas es un aspecto muy importante, especialmente en

que se refiere a la primera columna. Todo ello es criticola seleccion del camino de acceso y por tanto enrendimiento. Consultar manual GG24-3004.

4)Es necesario analizar la relacion coste-beneficio existeen cada indice candidato, antes de decidir su utilizacion.

* Los costes aumentan :

-Al realizar inserciones, borrados e inclactualizacion.

-Al procesar utilidades (LOAD, REORG, CHECK y RUNSTATS

* Los beneficios son:

-Muy limitados si el DB2 tiene ya un indice alternatque le permitira realizar de forma eficientesentencia SQL.

-Reduccion del tiempo de acceso a los datos.

-Reduccion del tiempo de proceso, al poder realifunciones sin tener que hacer una clasificacion previa

5)Una vez cargadas las tablas, realizado el RUNSTATS y heel bound de los planes de la aplicacion, se debe analizarlos indices definidos estan siendo usados eficientementedeterminar las causas de situaciones diferentes, para podecidir si es necesario anular o crear otros indices.

61

Para ello es necesario trabajar sobre un entorno de tabmuy similar al que vaya a darse en produccion.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 68/75

 

* Consultar las tablas de SYSINDEXES Y SYSCOLUMNS, para

-analizar en que medida un indice es unico o no.

-que indices no estan siendo usados por lasestaticas.

-si un indice no es usado, puede ser debido a unasdefectuosas o que sobra el indice.

-para las sql dinamicas hacer un seguimiento conExplain.

DISEÑO, CODIFICACION Y PRUEBA DE APLICACIONES_____________________________________________ 

ACCESO DE DATOS_______________ 

Hemos señalado anteriormente que los programas y consulalmacenadas, accederan siempre a las tablas atraves de VIS, lo cual hace que las sentencias sql sean independientescreador de las tablas y de los cambios de las mismas.

Otros aspectos importantes a tener en cuenta son:

1)Evitar que en las clausulas WHERE se den las siguiencondiciones:

-Forzar hacer la conversion numerica para columnumericas. Para ello se deben hacer las variableliterales host, del mismo tipo de datos, precisionescala.

-Especificar una serie de caracteres mayor que la longide la columna. Procurar siempre que la variable o litesea menor o igual en tamaño.

-Codificar argumentos de busqueda que constitupredicados que el DB2 no pueda decidir su uso contraindices. Estos aspectos son ampliamente analizadosGG24-3004.

2)Si hay varias tecnicas para codificar una sentencia Sanalizar cual de ellas es la mas eficiente.

62

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 69/75

 

3)Algunas tecnicas que ayudan a elegir el mejor caminoacceso son:

a)Si se va a actualizar una columna de un indice, entonceste indice no se considerara por el DB2 en sus criterio

de busqueda. El procedimiento aconsejable sera:

1)DECLARE y OPEN, una SELECT con el criterio de actualiz

2)FETCH a fila ( proxima).

3)Cambiar el valor de la columna en el programa.

4)DELETE de fila usando la clave primaria unica.

5)Re-Insertar la fila con el nuevo valor de la columna.

6)Repetir los pasos 2-5 para continuar actualizando fila

4)Siempre que sea posible usar JOIN's en lugar de SubqueryPrototipo previo.

5)Evitar el uso del operando OR, a no ser que cada predicse refiera a la misma columna y el operador de comparacsea =.

-Una alternativa al OR es UNION. Tener en cuenta que eopcion no presenta registros duplicados.

6)Si en el acceso a grandes volumenes de informacion seobliga al DB2 a hacer Sort interno, porque no disponga enacceso de un indice ( casos de JOIN, ORDER BY, GROUPDISTINCT), entonces valorar el hacer un DFSORT.

DESARROLLO Y PRUEBA DE PROGRAMAS________________________________ 

1)Fase de prueba unitaria.--------------------------

Cada desarrollador debe responsabilizarse de precompilcompilar, linkeditar y hacer bind de sus programas, adede disponer de sus tablas de prueba, para lo cual cadapodra tener su propia base de datos y gruposalmacenamiento. Todo ello reducira ademas la contencen el catalogo del DB2.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 70/75

 

63

2)Fase de Prueba de la aplicacion.----------------------------------

Primero se debe determinar que usuario haceprecompilacion, compilacion, linkedita y bind, evitandoel que si otro usuario hace el bind del plan, el origipierda la autoridad sobre el mismo.

Determinar que ficheros se utilizaran en las pruebas par

-codigo fuente.

-DBRM.

-Modulos.-JCL's.

Prever un mecanismo para determinar que planes debenrebound, cuando un programa se modifica. ( tablacatalogo : SYSIBM.SYSDBRM ).

¦ Programa ¦¦ Fuente ¦

¦v

¦ Traductor ¦¦ Comandos Cics ¦

¦v

¦ Precompilador ¦¦ DB2 ¦

¦¦ ¦v v

¦ DBRM ¦ ¦ Compilador ¦¦ Cobol ¦

¦

v ¦¦ BIND ¦ v¦ linkaje ¦

¦v ¦

¦ PLAN ¦ v¦ modulo ¦

El Plan se almacena una tabla del catalogo del DB2, y esconsecuencia de las sentencias SQL, de las definiciones delas tablas e indices sobre las que actua, etc., con objetooptimizar el camino de acceso a los datos.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 71/75

 

64

GESTION DE CAMBIOS EN BD________________________ 

Por cambios en :

-Tablas y/o vistas (DROP, CREATE, ALTER).

-Adicion o baja de indices.

-Cambios en el espacio de tablas (ALTER).

A)Si una tabla y/o indice se crea y se carga con datos,inmediato se debe:

1)RUNSTATS sobre los objetos afectados.

2)Todos los planes afectados por los cambios debenrebound.

B)Si se crea una nueva tabla y/o vista o dropped, y recreaEntonces se debe de hacer inmediatamente:

1)Hacer un re-GRANT de autorizacion para la tablavista.

2)Avisar a los usuarios afectados para re-CREATEsinonimos para la tabla y/o vista.

3)Todos los planes afectados por el cambio deberebound. (*).

(*) Tambien despues de ALTER una tabla, un espaciotablas o indice y despues de DROP de un indice.

OPTIMIZACION DEL BIND______________________ 

1)Se hara un REBIND de un plan siempre que se desee queDB2 vuelva a determinar sus caminos de acceso. Algunos cason:

-Despues de crear un indice para una tabla que ya tedatos.( CREATE ---> RUNSTATS ---> REBIND ).

-Despues de ALTER un espacio de tablas, tabla o indice.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 72/75

 

-En la mayoria de los casos, despues de un RUNSTATS.

-Despues de cambios significativos en los datos:REORG ---> RUNSTATS ---> REBIND

65

2)Para reducir el numero de bloqueos de paginas, hacer Bcon ISOLATION = CS (cursor stability, es aconsejable desdepunto de vista de concurrencia, si se va a acceder una svez a una fila en una transaccion, pero si se accede amisma file varias veces no se garantiza consistencia,tanto cuando existen razones de integridad se requiISOLATION = RR (lectura repetible).

3)Para mejorar el rendimiento : BIND con RELE(DEALLOCATE)

Para mejorar la concurrencia BIND con RELEASE (COMMIT).

Nota: En la preparacion de esta primera parte seutilizado, basicamente, el GG24-3004-00 IBM DATABASEAPPLICATION DESIGN AND TUNING GUIDE, el SC26-413Development Guide y la publicacion DB2 APPLICATDEVELOPMENT RECOMMENDATIONS.

NUEVAS FUNCIONES Y MEJORAS DEL DB2 R3_____________________________________ 

Resumimos en este apartado las mejoras quereferencian en el manual GG24-3182 : IBM DATABASE 2 RELE3 NOTEBOOK. En el citado manual existen tambien ejempsobre la aplicacion de las mejoras aportadas por el DB2 R3

1.-MEJORAS EN EL LENGUAJE SQL:

A)Funciones escalares para:

* Convertir valores de un tipo de datos a otro.

* Extraer sub-series de series.

* Sustituir valores NULL en busqueda de datos, por ovalor especificado por el usuario,

Las nuevas funciones escalares son: DECIMAL, DIGI

FLOAT, HEX, INTEGER, LENGTH, SUBSTR, VALUE Y VARGRAPHILas anteriores funciones : MAX, MIN, COUNT, AVG y Sahora se denomina funciones de columna.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 73/75

 

B)Nuevo operador de concatenacion para series.

66

C)Mejoras en el operador UNION:

* UNION ALL para retener valores duplicados.

* Eliminacion de restricciones del UNION.

D)Eliminacion de algunas restricciones en :

* Operador UNION ALL.

* Operador LIKE.

* INSERT con subselect.

* Clausula SET de la sentencia UPDATE SQL.

E)Posibilidad de manejar los errores de division por cy otras operaciones de conversion y aritmetiinvalidas.

F)Nuevos tipos de datos : DATE, TIME y TIMESTAMP.

G)Nuevos tipos de datos para numeros de simple precisy coma flotante.

H)Eliminacion de algunas restricciones de las VIEW.

2.-MEJORAS EN LA OPERACION.

A)Soporte DL/I Batch.

B)Mejoras en programas de utilidad:

* LOAD REPLACE de una particion. Antes solo era posia nivel de espacio de tablas.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 74/75

 

* MODIFY .... (*) , que permite a un usuario bortodas las entradas en SYSIBM.SYSCOPY, de un espaciotablas, particion o fichero.

* RECOVERY INDEX que permite recuperar de una pasadalista de indices o todos los indices de un espaciotablas.

67

* RUNSTATS mejorado, al recojer mejores estadisticas pincrementar el rendimiento de las sentencias SQL.

3.-MEJORAS DE RENDIMIENTOS.

A)En los programas de utilidad reseñados.

B)en UNION ALL.

C)En :

* Evitar sort innecesarios en ORDER BY y GROUP BY.

* Clasifica el resultado de una IN subquery.

5/13/2018 Manual Básico DB2 - slidepdf.com

http://slidepdf.com/reader/full/manual-basico-db2-55a74f1a6dfad 75/75

 

68

________________________________________________________________ 

________________________________________________________________ 

SE DEBEN UTILIZAR VARIABLES DEFINIDAS EN NIVEL 01 DED PARA CONDICIONES DE BUSQUEDA DEL DB2. LAS VARIABLESA CLAUSULA WHERE HAN DE ESTAR DEFINIDAS EN LA WORKING,GARANTIZAR UN RESULATADO OPTIMO.

________________________________________________________________ ________________________________________________________________