Anda di halaman 1dari 17

Sistemas Manejadores de Bases de Datos y Bases de Datos BASE DE DATOS: Coleccin de archivos que alojan y guardan la relacin existe

entre registros MANEJADOR DE BD(DBMS):Grupo de programas escritos que pueden definir y localizar datos existentes en una bd. TIPOS DE ORGANIZACON: FISICA: Espacio y ubicacin para alojar datos. LOGICA: Relaciones lgicas que estn almacenadas en bd, sus elementos son:

ENTIDAD: Objeto particular que es representado en una base de datos(tabla) RELACION: Correspondencia entre entidades(llaves). o UNO A UNO: Un padre le corresponde a un hijo o UNO A MUCHO: Un padre le corresponden n hijos o MUCHOS A MUCHOS: Un padre le corresponden n hijos y cada hijo le corresponden n padres.

TIPOS DE BD:

JERARQUICAS: Basada en una relacin uno a uno o uno a muchos, de arriba abajo entre los datos. RED:(mediante un algoritmo, para accesar las tablas) Establece relaciones desde uno a uno, uno a muchos y muchos a muchos. Apropiada para el rpido procesamiento de altos volmenes de informacin. RELACIONAL:(se maneja mediante algn dato que las relacione) Almacenamiento en tablas(renglones y columnas), una fila corresponde a un registro y columna a un solo campo del registro. La relacin se mantiene atendiendo la unin de columnas comunes(integridad referencial).

Ventajas de un DBMS. Velocidad. Los datos accedidos rpidamente. Seguridad. acceso a datos controlado Reduce la redundancia de datos. Los datos slo pueden ser almacenados una vez. Datos compartidos. Ms de una persona puede acceder a los mismos datos. Integridad de los datos. Puede ser mantenida exacta y consistentemente. Almacenamiento lgico de los datos. No es necesario conocer dnde se encuentran los datos almacenados, es suficiente hacer referencia lgica a los datos. SQL SQL (Structure Query Language). Es un lenguaje de manipulacin de datos, en combinacin con un manejador de base de datos permite acceder y manipular datos. Y son accedidos a travs de QUERIES, que son sentencias casi en lenguaje ingls DB2 Caractersticas de DB2: Utiliza lenguaje SQL (Structure Query Language), para acceder a los datos. -Data Definition Language (DDL). Definicin de las tablas de las bases de datos. Manipula la estructura de las tablas. CREATE, ALTER, DROP -Data Manipulation Language (DML). Permite la manipulacin o procesamiento de los datos de las tablas. SELECT, UPDATE, INSERT, DELETE -Control. Destinados a permitir o denegar los niveles de accesos a las tablas.(a los usuarios, y principalmente al DBA) GRANT, REVOKE

TERMINOS DB2 TABLA: Es similar a un archivo, se encuentra compuesta de columnas y renglones. Vista: Es una representacin alternativa de los datos de una o ms tablas. Funciones bsicas de SQL. -Seleccionar (acceder) datos de las tablas (SELECT). SELECT [*][nombre_columna1,nombre_columnaN] FROM tabla WHERE condicin SELECT Seleccin de todos los registros SELECT * FROM PRESIDENTES Seleccin de datos de columnas separadas por comas(,) y cuyo orden aparecer en el orden especificado en el query SELECT PRE_NOMBRE, PRE_SEXO FROM PRESIDENTES Selecciona los datos de las columnas especificadas por su posicin y en dicho orden en que se especifica en el query SELECT 5,1 FROM PRESIDENTES La sentencia SELECT DISTINCT permite seleccionar datos de la tabla y eliminar de la seleccin aquellos duplicados. El resultado de los renglones es secuenciado en las columnas de izquierda a derecha ORDER BY puede ser usado para controlar la secuencia. WHERE - WHERE. Permite establecer condiciones especificas de la seleccin de datos, donde, Valor puede ser numrico, alfanumrico o variable, donde los valores alfanumricos van entre apstrofes SELECT PRE_NOMBRE FROM PRESIDENTES WHERE PRE_SEXO = 'M' Operadores de comparacin. = Igual, <> No igual, > Mayor, >= Mayor o igual, < Menor, <= Menor o igual .

WHERE puede ser combinado con las clusulas AND y OR. OR - Permite vincular las condiciones de bsqueda en un query, la seleccin regresa los registros que cumplan con alguna de las condiciones especificadas. SELECT PRE_NOMBRE, PRE_OFIC,PRE_SEXO FROM PRESIDENTES WHERE PRE_OFIC = TORONTO OR PRE_OFIC = GENOVA AND - Se utiliza para vincular las condiciones de bsqueda en un query, la seleccin regresa los registros que cumplan con todas las condiciones especificadas. SELECT STAFF_NOMBRE,STAFF_SALARIO,STAFF_PUESTO FROM STAFF WHERE STAFF_PUESTO =DIRECTOR AND STAFF_SALARIO > 40000 OR y AND mltiples. Se puede vincular ms de una condicin a travs de OR y AND SELECT PRE_NOMBRE, PRE_ANTI FROM PRESIDENTES WHERE PRE_NOMBRE= JOHNSON S L OR PRE_SEXO = F OR PRE_ANTI > 4 SELECT PRE_NOMBRE, PRE_ANTI FROM PRE_SEXO = F AND PRE_ANTI > 4 PRESIDENTES WHERE PRE_NOMBRE= JOHNSON S L AND

OR y AND combinados. Se puede vincular ms de una condicin a travs de OR y AND en forma combinada. SQL evalan primero las condiciones AND, en caso de que no sean utilizados parntesis. SELECT FLIGHT, DEPARTS, DESTINATION FROM AIRLINE_SCHEDULE WHERE DEPARTS > 'PM1200' AND DESTINATION = 'NEW YORK' OR DESTINATION = 'NEWARK' IN Esta clusula se usa para sustituir los ORs en una misma columna. SELECT FLIGHT, DEPARTS, DESTINATION FROM AIRLINE_SCHEDULE WHERE FLIGHT IN (101,184,193) BETWEEN, esta clusula permite seleccionar un rango de valores. SELECT FLIGHT, DEPARTS, DESTINATION FROM AIRLINE_SCHEDULE WHERE FLIGHT >=101 AND FLIGHT <= 142 LIKE, esta clusula en conjuncin con el signo de % o _ permite buscar en una columna un subconjunto de caracteres. % Ignora de cero a cualquier nmero de caracteres. _ Ignora exactamente un carcter. SELECT FLIGHT, DEPARTS, DESTINATION FROM AIRLINE_SCHEDULE WHERE DESTINATION LIKE %YORK (Selecciona los que tengan cualquier o ningn carcter y el patrn YORK) SELECT STAFF_NOMBRES, STAFF_SALARIOS, STAFF_PUESTO FROM STAFF WHERE STAFF_PUESTO LIKE VEN% (Selecciona los que empiezan con el patrn VEN y despus cualquier o ningn caracter ) SELECT STAFF_NOMBRES, STAFF_SALARIOS, STAFF_PUESTO FROM STAFF WHERE STAFF_NOMBRE LIKE __A% (Ignora las primeras 2 posiciones del nombre y comienza con el patrn A y despus cualquier caracter o ninguno) NOT LIKE, esta combinacin hace lo contrario a like, Excluye los que empiezan con el patrn VEN y despus cualquier o ningn caracter SELECT STAFF_NOMBRES, STAFF_SALARIOS, STAFF_PUESTO FROM STAFF WHERE STAFF_PUESTO NOT LIKE VEN% Parntesis y clusula WHERE. Los parntesis se pueden utilizar para eliminar el orden en que SQL evala las expresiones. El uso de parntesis con mltiples condiciones de bsqueda permite mejorar la legibilidad de la consulta. El orden de bsqueda cuando se usan los parntesis es: o Se evalan las expresiones encerradas en parntesis o Son consideradas las condiciones vinculadas con AND o Se evalan las condiciones vinculadas con OR o Los parntesis se pueden utilizar para eliminar el orden en que SQL evala las expresiones. o El uso de parntesis con mltiples condiciones de bsqueda permite mejorar la legibilidad de la consulta. o El orden de bsqueda cuando se usan los parntesis es: Se evalan las expresiones encerradas en parntesis Son consideradas las condiciones vinculadas con AND Se evalan las condiciones vinculadas con OR

SELECT FLIGHT, DEPARTS, DESTINATION FROM AIRLINE_SCHEDULE WHERE (DESTINATION = 'NEW YORK' OR DESTINATION = 'NEWARK) AND DEPARTS > 'PM1200

Uso de valores Nulos en condiciones. Los valores nulos hacen referencia a un valor especial que indica ausencia de valor. En algunos manejadores se representan por un guin -. Reglas de manejo para valores nulos: Si una condicin es aplicada en una columna que contiene valores nulos, los registros no son seleccionados. Si se realiza un clculo utilizando una columna que contenga valores nulos, los registros que contienen nulos sern ignorados. SELECT COM_NAME, COM_JOB, COM_SALARY, COM_COMM FROM COMMISSION WHERE COM_JOB = CLERK AND COM_COMM < 1000.00 Seleccin de valores nulos en una columna: SELECT columna1,,columnaN FROM tabla WHERE columna IS NULL Seleccin de valores no nulos en una columna: SELECT columna1,, columnaN FROM tabla WHERE columna IS NOT NULL ELECT con valores calculados. Se puede generar una columna con el resultado de un clculo. + : Sumar * : Multiplicar -: Restar / : Dividir SELECT COM_JOB, COM_SALARY, COM_COMM, COM_SALARY + COM_COMM FROM COMMISSION WHERE COM_JOB = SALES SELECT COM_JOB, COM_SALARY, COM_COMM, COM_SALARY + COM_COMM FROM COMMISSION WHERE COM_SALARY + COM_COMM > 15000 AND COM_JOB = SALES Funciones de columnas. Reducir los datos de una columna en un valor nico. Funciones usadas solamente para datos numricos. SUM Total de los valores en una columna. AVG Promedio de los valores en una columna. SUM (Columna1+Columnan) AVG (Columna1+Columnan) SELECT SUM(COM_SALARY), AVG(COM_SALARY), MIN(COM_SALARY), MAX(COM_SALARY) FROM COMMISSION WHERE COM_JOB = CLERK

Funciones usadas para cualquier otro tipo de datos. MIN Valor mnimo en una columna. MAX Valor mximo en una columna. COUNT Nmero de ocurrencias que cumplen la condicin buscada, Nmero de renglones que cumplen la condicin. COUNT( DISTINCT Columna ) Nmero de valores nicos en la columna. SELECT COUNT(DISTINCT COM_JOB), COUNT(*) FROM COMMISSION WHERE COM_SALARY > 0

Asignar literales para identificar los resultados; estas deben estar entre apstrofe(). SELECT SUM SALARY : , SUM(COM_SALARY), AVG SALARY : , AVG(COM_SALARY), FROM COMMISSION WHERE COM_JOB = CLERK

SUM SALARY :

44767.20

AVG SALARY :

14922.40

GROUP BY agrupa columnas.

Puede tener columnas mltiples. Las columnas no necesitan ser parte de las indicadas en el select. Las columnas seleccionadas deben formar parte de una funcin o estar indicadas en el GROUP BY. Un rengln de sumatoria es mostrado por cada valor existente en la columna especificada en el GROUP BY. Todos los nulos son un grupo nico. SELECT COM_JOB, SUM(COM_SALARY), SUM(COM_COMM) FROM COMMISSION WHERE COM_JOB <> MGR GROUP BY COM_JOB ORDER BY 3

DATE, TIME, TIMESTAMP son datos almacenados internamente como decimal empacado, pero sin signo

En la programacin se trata solamente con el formato externo, el cual es una cadena de Caracteres

Registros especiales: DATE: Fecha del da de hoy TIME:Hora del da de hoy SELECT FECHA FROM TABLA WHERE FECHA < CURRENT DATE

TIMESTAMP: Fecha y hora del da de hoy

ORDER BY ORDER BY: Especifica el orden en el que deben ser listados los datos accedidos, los resultantes de la consulta estn ordenados en funcin de lo indicado en el ORDER BY. En vez de utilizar los nombres de las columnas con la clusula ORDER BY, se pueden utilizar nmeros que correspondan al orden en que las columnas se listan en la sentencia SELECT SELECT PRE_NOMBRE, PRE_SEXO,PRE_ANTI FROM PRESIDENTES WHERE PRE_NAC > 1921 ORDER BY 2, 3 ORDENACION POR UNA COLUMNA SELECT PRE_NOMBRE, PRE_SEXO,PRE_OFIC FROM PRESIDENTES ORDER BY PRE_NOMBRE ORDENACION POR MAS DE UNA COLUMNA SELECT PRE_NOMBRE, PRE_SEXO,PRE_ANTI FROM PRESIDENTES WHERE PRE_NAC > 1921 ORDER BY PRE_SEXO, PRE_ANTI ORDENADOS ASCENDENTE Y DESCENDENTE SELECT PRE_ANTI FROM PRESIDENTES ORDER BY PRE_ANTI ASC SELECT PRE_ANTI FROM PRESIDENTES ORDER BY PRE_ANTI DESC

Insertar o adicionar datos a las tablas (INSERT). INSERT , permite la adicin nuevos registros a una tabla existente. INSERT INTO tabla [ (columna1, columna2, columnan) ] VALUES (valor1, valor2, valorN) Reglas para uso del comando INSERT: Debe haber un valor para cada columna de la tabla.

Los valores deben estar listados en el orden en que las columnas aparecen en la tabla, en caso de no

haber listado las columnas ya que estas son opcionales. Los valores deben estar separados por comas. Cada campo alfanumrico (caracter) debe estar entre comillas. Los valores numricos no requieren comillas.

Insercin de registros sin especificacin de columnas. El orden de los valores debe ser el mismo en el que se encuentran organizadas las columnas de la tabla.

Insercin de registros especificando los nombres de columnas. De esta forma se pueden asignar los valores a los campos directamente en cualquier orden, sin llevar el mismo orden en que se encuentran organizadas las columnas de la tabla.

Insercin de registros con valores nulos. El valor nulo slo puede ser asignado para aquellas columnas que fueron definidas para valores nulos. Cuando la columna maneja nulos, sta puede ser omitida del query.

Insercin de renglones mltiples; para esto es necesario tener una tabla que contenga las mismas columnas

Actualizar, modificar o dar mantenimiento a las tablas (UPDATE). UPDATE, permite la actualizacin de nuevos registros a una tabla existente. Si la clusula WHERE es omitida, la actualizacin se realiza en todos los registros de la tabla.Si se desea actualizar mas de una columna, se deber separar por una coma y un espacio

UPDATE TELEFONOS SET EXT = 111, NO_TELEF = 6666666666 WHERE APELLIDO = DIETZ AND NOMBRE = ELLEN

Actualizacin de TODOS los registros en una columna especifica.

UPDATE TELEFONOS SET NO_TELEF = 4444444444

Eliminar o borrar datos de las tablas (DELETE). DELETE permite el borrado de registros de una tabla. Si la clusula WHERE es omitida, todos los registros de la tabla son borrados. La tabla queda vaca. Eliminacin de registros con una condicin especifica DELETE FROM TELEFONOS WHERE APELLIDO = BAKER Eliminacin de registros de una tabla DELETE FROM TELEFONOS

SUBSELECT. Es un select dentro de la condicin del Where, del Select principal para que nos proporcione el valor o los valores de condicin para satisfacer al select principal ESTO ES EN LA MISMA TABLA. Cuando DB encuentra

un Select dentro de otro, evaluara primero el select interno y su resultado se substituira para evaluar el select principal. Se pueden codificar hasta cinco niveles (subselect`s).

SUBSELECT De Valor nico, ya que la evaluacin del subselect , nos da como resultado un nico valor. SUBSELECT De mltiples valores, la evaluacin del subselect, devuelve mltiples valores o ALL La condicin deber cumplirse con todos los valores devueltos. SELECT EMNUME, EMAPEL, EMFENT, EMSALA, EMCTRA, EMDPTO FROM TAEMPL WHERE EMSALA > ALL (SELECT EMSALA FROM TAEMPL WHERE EMDPTO = 30) ORDER BY EMNUME o ANY La condicin deber cumplirse con alguno de los valores devueltos (acepta tambin el SOME) SELECT EMNUME, EMAPEL, EMFENT, EMSALA, EMCTRA, EMDPTO FROM TAEMPL WHERE EMSALA > ANY (SELECT EMSALA FROM TAEMPL WHERE EMDPTO = 30) ORDER BY EMNUME

SUBSELECT Relacionada: son aquellas en que debe evaluarse o calcularse para cada fila candidata al Select principal, las subselects vistas anteriormente se evaluaban y su resultado serva para todas las filas candidatas del select principal. SELECT EMNUME, EMAPEL, EMFENT, EMSALA, EMCTRA, EMDPTO FROM TAEMPL WHERE EMSALA > (SELECT AVG(EMSALA) FROM TAEMPL WHERE EMDPTO = A.EMDPTO) ORDER BY EMNUME JOIN: Es un select que se crea para el acceso a varias tablas, donde califica tanto el nombre de la tabla como los campos a ocupar. SELECT FROM WHERE AND A.EMAPEL, A.EMNUME, B.EMAPEL, A.EMFENT, B.NUMEMP B.EMPENTR, EMPL A, REGTO B A.EMFENT = B.EMPENTR A.EMNUME > B.NUMEMP

UNION: Consiste en efectuar varias consultas unidas por la palabra UNION.que genera un solo resultado con la intervencion de varias tablas, las columnas por las que se realiza la UNION deben de ser de tipo compatible, asi como en longitudes, no podr utilizarse el UNION en subselect`s ni al crear una vista, asignar los nombres de las columnas de l Select principal UNION ALL

UNION (SIMPLE) SELECT DPJDTO FROM TDEPTO UNION SELECT EMNUME FROM TAEMPL WHERE EMCTRA > = 200 ORDER BY 1

DPJDTO 000500 000600 000700 001000

Sentencias SQL. Deben ser codificadas al inicio y final de cada sentencia, entre las columnas 12 y 72 del programa COBOL EXEC SQL que indica el inicio de la sentencia SQL SELECT * INTO :DCLGEN-EMP FROM EMPLEADOS END-EXEC que indica el final de la sentencia SQL

Variables Host: Son los campos de trabajo declarados en la Working-Storage a imagen en tipo y longitud de cmo fueron definidos en la Base de Datos. Estos campos pueden ser usados directamente entre los dos lenguajes. Pueden ser usadas para realizar INSERT, UPDATE, DELETE y recibir valores de columnas. Pueden ser usadas en clusulas WHERE.

Reglas del uso de variables Host: No necesariamente deben ser iguales a los nombres de las columnas.

Deben ser definidas en la Working-Storage. Cuando son usadas en una sentencia SQL deben ser precedidas por :. La definicin de las variables host debe coincidir con cada una de las columnas definidas en la tabla. La longitud y el tipo definidos para las variables Host, deben ser idnticas a la definicin de las columnas de la tabla DB2.

INCLUDE: Permite integrar copys a la Working-Storage: EXEC SQL INCLUDE copy END-EXEC. La definicin de la tabla en DB2, as como su definicin COBOL generalmente se encuentran en un solo copy, los cuales son llamados DCLGEN.

Comunicacin y manejo de errores. La ejecucin de un query involucra un estatus de ejecucin, a travs de cdigos de retorno o error. Estos cdigos de retorno son informados en la SQLCA (SQL Communication Area), la cual es incluida en la Working Storage por medio de la sentencia INCLUDE. El campo ms usado de la SQLCA es: SQLCODE.El cual indica si la sentencia SQL fue ejecutada o no correctamente. Los valores ms frecuentes de este campo son:

Comunicacin y manejo de errores

DISPLAY. Es una sentencia COBOL que permite desplegar mensajes de error durante la ejecucin de un programa

Seleccin de informacin simple. A travs de la sentencia SELECT se puede acceder a un slo rengln de la tabla que cumpla con el criterio establecido.

EXEC SQL SELECT nombre_columna INTO :host-variable FROM tabla WHERE condicin. END-EXEC.

Un CURSOR, es un mtodo de SQL para acceso de uno o ms renglones que cumplen un criterio establecido. El uso de un cursor requiere de cuatro sentencias: DECLARE, OPEN, FETCH, CLOSE. o La sentencia DECLARE, define y le da nombre al rea de trabajo que alojar los renglones recuperados de la ejecucin de la sentencia SQL incluida en el cuerpo del DECLARE. o La sentencia DECLARE, se incluye en la working-storage despus de los INCLUDE de las tablas a utilizar en el programa y no es una sentencia ejecutable. o La opcin WITH HOLD evita que el cursor se cierre como consecuencia de una operacin COMMIT. o Todos los cursores se cierran implcitamente con una operacin ROLLBACK.

La sentencia OPEN, activa el cursor declarado en working-storage y es la instruccin que ejecuta el SELECT declarado en el cursor alojando los datos que cumplen con la condicin. Sintaxis Ejemplo EXEC SQL MOVE WS-SALARIO TO EMP-SALARIO. OPEN nombre_cursor EXEC SQL END-EXEC. OPEN EMPLEADO_CURSOR END-EXEC. La sentencia FETCH, accede uno a uno los registros del cursor empezando desde el primero. Sintaxis EXEC SQL FETCH nombre_cursor INTO :HOST1, :HOST2, :HOSTn END-EXEC. Ejemplo EXEC SQL FETCH EMPLEADO_CURSOR INTO :EMP-ID, :EMP-NOMBRE, :EMP:_SALARIO, :EMP_COMM END-EXEC.

La sentencia CLOSE, libera los recursos asignados al cursor. Sintaxis EXEC SQL CLOSE nombre_cursor END-EXEC. Ejemplo EXEC SQL CLOSE EMPLEADO_CURSOR END-EXEC.

Insercin de registros en una tabla. EXEC SQL INSERT INTO nombre-tabla VALUES (:variable-host1, :variable-host2) END-EXEC

Actualizacin de registros en una tabla EXEC SQL UPDATE nombre-tabla SET columna1 = :variable-host1, columna2 = :variable-host2 WHERE condicin END-EXEC Eliminacin de registros en una tabla.

EXEC SQL DELETE FROM nombre-tabla WHERE condicin END-EXEC

Termina la unidad de trabajo actual y empieza una nueva. EXEC SQL COMMIT END-EXEC. Actualiza y confirma todos los cambios hechos por ALTER, CREATE, DROP, DELETE, INSERT, UPDATE, GRANT, REVOKE registrados en el log. Todos los cursores abiertos con WITH HOLD, se conservan as como los SELECT preparados para estos cursores. Los cursores abiertos sin WITH HOLD se cierran y las declaraciones preparadas, para ellos se destruyen. Al final del proceso de una aplicacin, se considera una aplicacin implcita de COMMIT si termina exitsamente o de ROLLBACK si termina con cdigo de retorno de error.

ROLLBACK elimina las modificaciones hechas a la base de datos por ALTER, CREATE, DROP, INSERT, DELETE, UPDATE, GRANT, REVOKE HASTA la ltima actualizacin efectuada.

EXEC SQL ROLLBACK END-EXEC. Los cursores abiertos se cierran. Todas las pginas con LOCK se liberan.

Modificacin de Tablas en COBOL. 05 WS-INCREMENTO PIC 9(03)V99 VALUE 200.00 05 WS-NUM-UPDATE PIC 9(04) VALUE 1000. 05 WC-CONT-REGS PIR 9(04) VALUE ZEROES. PERFORM LEE-CURSOR

EXEC SQL UPDATE COMMISSION SET COM_SALARY = COM_SALARY + :WS-INCREMENTO END-EXEC. IF SQLCODE = 0 ADD 1 TO WC-CONT-REGS IF WC-CONT-REGS > = WS-NUM-UPDATE PERFORM 900-COMMIT MOVE ZEROES TO WC-CONT-REGS END-IF ELSE PERFORM 910-ABORTA END-IF. -----------------------------------------------------------------------------------------------------------------------------900-COMMIT. EXEC SQL COMMIT END-EXEC. DISPLAY CAMBIOS EFECTUADOS A LA BASE DE DATOS. 900-COMMIT-EXIT. EXIT. 910-ABORTA. EXEC SQL ROLLBACK END-EXEC. DISPLAY ERROR EN PROCESO LOS CAMBIOS NO SE EJECUTARON. 910-ABORTA-EXIT. EXIT.