Академический Документы
Профессиональный Документы
Культура Документы
http://www.mundoracle.com/
Crditos Este manual pertenece a la empresa Expertos en Servicios de Consultora Exes, S.L., que tiene todos los derechos sobre esta obra. Asimismo se prohbe expresamente su reproduccin, transformacin, fijacin, distribucin en cualquiera de sus formas (total, parcial, en papel, en formato electrnico) incluyendo el tratamiento informtico del documento en cualquier parte del mundo de acuerdo con las Leyes y Convenios Internacionales. La utilizacin de este documento por cualquier persona diferente a la compradora del derecho de uso est expresamente prohibida. El contenido de este manual est protegido por la ley penal vigente, atenindose, en caso de mal uso, a responder frente a la justicia. El fin de este documento es el uso particular del comprador de su uso, quedando expresamente prohibida la utilizacin por empresas o centros de formacin, o cualquier otro, incluyendo a los empleados de cualquier tipo, colaboradores o alumnos. Si alguna persona est interesada en la utilizacin de este manual, se puede poner en contacto con Exes en www.exes.es o en exes@exes.es. Marcas Comerciales: Las designaciones utilizadas por las empresas para distinguir sus productos suelen ser marcas registradas. Exes solo ha utilizado estas marcas en beneficio de sus fabricantes, dado el carcter divulgativo de la formacin. Los ejemplos y pantallas no se consideran reales. Se ha puesto el mximo empeo en ofrecer al usuario una informacin completa del tema tratado. Sin embargo, Exes no asume ninguna responsabilidad derivada de su uso, ni de la violacin de las patentes ni otros derechos de terceras partes que pudieran ocurrir.
www.detodoprogramacion.com
Diagrama E-R
Mundo real Modelo conceptual (E-R)
Oracle 8: ORDBMS
www.detodoprogramacion.com
Posibilidad de almacenar objetos (extensin a Oracle7) Modelo de datos relacional orientado a objeto Ventajas de la programacin orientada a objetos Respecto a Oracle7: > rendimiento y funcionalidad de transacciones online Soporte de aplicaciones cliente-servidor Soporte de aplicaciones basadas en Web distribuidas Escalabilidad a decenas de miles de usuarios Hasta 512 petabytes Manejo de datos multimedia (imagen sonido, video).
Caractersticas de S.Q.L.
Lenguaje de definicin de datos (DDL) Create, Alter, Drop. Lenguaje de manipulacin de datos (DML) Insert, Update, Delete.
www.detodoprogramacion.com
Lenguaje de control de datos (DCL) Grant, Revoke. Control de transacciones Commit, Rollback, Savepoint Restricciones de integridad Referencial, datos.
empno,
ename emp; *
Etiquetas y datos, por defecto, se muestran en maysculas. Posibilidad del uso de alias de columnas.
S.Q.L.
www.detodoprogramacion.com
Alias de columna
Un alias de columna renombra un encabezamiento de columna. til, especialmente, en clculos. Sintaxis: Sigue inmediatamente al nombre de la columna mediante la palabra clave AS entre ellos. Se requiere encerrar un alias entre comillas dobles si contiene espacios en blanco, caracteres especiales o es case sensitive.
www.detodoprogramacion.com
www.detodoprogramacion.com
Ejemplo:
sal,
mgr
FROM
EMP
www.detodoprogramacion.com
ename
FROM
emp
empno, sal
ename,
job, >=
sal
FROM
emp 2000
SQL> SELECT ename, job WHERE job NOT IN (CLERK, MANAGER, ANALYST);
FROM
emp
www.detodoprogramacion.com
2: NOT 3: AND 4: OR
Ejemplo:
www.detodoprogramacion.com
Carcter Nmero Fecha Conversin Funciones a nivel de grupo. Tipos: Manipulan grupos de filas y devuelven un resultado por cada uno de ellos.
www.detodoprogramacion.com
INITCAP: Convierte la primera letra de cada palabra en maysculas, y el resto en minscula. Atencin: Usar una funcin de conversin dentro de la clusula WHERE puede ser altamente ineficiente porque si la columna afectada forma parte de un ndice ste lo desactiva, provocando un bajo rendimiento.
www.detodoprogramacion.com
SQL> SELECT ROUND(45.923, FROM SYS.DUAL; Resultado: 45.92 46 50 SQL> SELECT FROM SYS.DUAL; TRUNC(45.923,
2),
ROUND(45.923,
0),
ROUND(45.923,
-1)
2),
TRUNC(45,923),
TRUNC(45.923,
-1)
Resultado: 45.92 45 40
www.detodoprogramacion.com
Aade n meses a fecha, segn calendario. N debe de ser un nmero entero y puede ser negativo. NEXT_DAY (fecha, caracter) Devuelve la fecha del da especificado (carcter) siguiente a fecha. Carcter puede ser un nmero representando un da o una cadena de caracteres, p.ej. FRIDAY.
www.detodoprogramacion.com
01-JAN-95
MI / SS / SSSS
Minutos / Segundos / Segundos despus de medianoche
AM o PM
Indicador del Meridiano
Se permiten literales
S.Q.L.
www.detodoprogramacion.com
a VARCHAR2 a VARCHAR2
Estas conversiones se realizan por asignaciones, si Oracle 8 puede convertir el tipo de dato del valor utilizado en la asignacin en el tipo de dato que era el objetivo de la asignacin.
TO_NUMBER (char) Convierte una cadena de caracteres con dgitos en un nmero. TO_DATE (char [,fmt]) Convierte una cadena de caracteres representando una fecha en un valor de fecha segn el fmt especificado. Si se omite el fmt, el formato es DDMON-YY. NVL (expr1, expr2) Convierte un nulo (expr1) a un valor de tipo fecha, cadena o nmero (expr2).
Hace las veces de sentencia CASE o IF-THEN-ELSE, para facilitar consultas condicionales. Descifra una expresin despus de compararla con cada valor de bsqueda. Si la expresin es la misma que la bsqueda, se devuelve el resultado. Si se omite el valor por defecto, se devolver un valor nulo donde una bsqueda no coincida con ninguno de los valores resultantes.
www.detodoprogramacion.com
www.detodoprogramacion.com
Las funciones de grupo IGNORAN los valores nulos de las columnas. Qu resultado obtendramos se calculamos la media de la comisin de los empleados?
Crea grupo de datos, por lo tanto se pueden usar funciones de grupo para devolver informacin resumida para cada grupo.
www.detodoprogramacion.com
La columna referenciada por GROUP BY no es necesario seleccionarla. Todas las columnas mencionadas en la SELECT que no son funciones de grupo, tienen que estar en la clusula GROUP BY . Se pueden formar agrupaciones sobre mltiples columnas: >SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job;
TEMA 5 JOIN
www.detodoprogramacion.com
NON-EQUIJOIN Por desigualdad, sin correspondencia directa entre campos de tablas. La relacin se puede establecer mediante criterios de rango (<, >, BETWEEN, ...) Y dos ms adicionales: OUTER JOIN Para ver, tambin, las filas que no complen la condicin de Join. El operador de un Outer Join es el signo ms (+), en el lado del join que es deficiente en informacin. SELF JOIN Combinacin de una tabla consigo misma.
Ya que la columna DEPTNO es igual en ambas tablas, sta debe ir prefijada por el nombre de la tabla para evitar la ambigedad.
www.detodoprogramacion.com
En este ejemplo se han usado alias de tablas (e para la tabla emp y s para la tabla salgrade).
En este ejemplo se muestran los nmeros y nombres de departamentos, incluidos aquellos que no tienen empleado.
todos los
En este ejemplo la clusula WHERE contiene la combinacin "dnde un jefe de un trabajador coincide con el nmero de empleado para el jefe".
TEMA 6 SUBCONSULTAS
S.Q.L. Cundo subconsultas?
Quin tiene un salario superior al de Jones
La subconsulta se ejecuta una vez y antes de la consulta principal. El resultado de ella es usado por la consulta principal externa.
www.detodoprogramacion.com
No aada una clusula ORDER BY a una subconsulta. Utilice operadores a nivel de fila para subconsultas que devuelvan solo una fila MONOREGISTRO. Utilice operadores que actan sobre varios registros para subconsultas que devuelven ms de una fila MULTIREGISTRO.
ANY (y sinnimo SOME) TRUE si la condicin se cumple con algn registro de la lista devuelta por la subconsulta. ALL TRUE si la condicin se cumple con todos los registros de la lista devuelta por la subconsulta. El operador NOT puede ser utilizado con los operadores IN, ANY y ALL.
www.detodoprogramacion.com
Este ejemplo muestra los nombres, salarios, nm. Departamentos y media de salarios, de todos los empleados que cobran ms que la media de salarios de su departamento.
TEMA 7 D.M.L.
S.Q.L. Manipulacin de Datos (DML)
Sentencias DML son: INSERT UPDATE DELETE Aade registros a una tabla. Modifica registros existentes de una tabla. Elimina registros existentes de una tabla.
Mediante esta sentencia slo se inserta un registro cada vez. El nombre de las columnas es opcional. Si se omiten se deben colocar los valores en el orden que las columnas tienen en la tabla.
www.detodoprogramacion.com
Mtodo Explcito: Especificar NULL o el string vaco (), para cadenas y fechas, en la lista de VALUES:
www.detodoprogramacion.com
Los registros a eliminar se especifican en la clusula WHERE. Si se omite WHERE se borrarn todos los registros de la tabla.
TEMA 8 D.D.L.
S.Q.L. Definicin de Datos (DDL)
Sentencias DDL son: CREATE TABLE Crea una tabla. Para ello el usuario debe de tener el privilegio CREATE TABLE. ALTER TABLE Permite modificar la estructura definida para una tabla.
www.detodoprogramacion.com
DROP TABLE Elimina una tabla (datos y estructura) y sus ndices. No se puede hacer Rollback de esta sentencia. RENAME sinnimo. Cambia el nombre de una tabla, vista, secuencia o
Necesario tener privilegio CREATE TABLE. Ha de especificar: Nombre de tabla Para las columnas: nombre, tipo de dato y tamao.
S.Q.L. Tipos de Datos VARCHAR2(tamao) CHAR(tamao) NUMBER(p,s) DATE LONG CLOB Dato carcter de longitud variable. Mx. 4000. Dato carcter de longitud fija. Mx. 255. Dato numrico de longitud variable.p entre 1..38; s entre 84..127 Valores de fecha y hora. Entre el 1 Enero 4712 A.C. Y el 31 Diciembre del 4712 D.C. Dato carcter de long.variable hasta 2 Gb. Dato carcter single-byte de hasta 4 Gb.
www.detodoprogramacion.com
Datos Binarios segn tamao especificado y Datos Binarios de long.variable hasta 2 Gb. Datos Binarios hasta 4 Gb. Datos binarios almacenados en fich. Externo. Hasta 4 Gb.
Ejemplo:
www.detodoprogramacion.com
con valores nulos para todos los registros. Puede definir una columna NOT NULL slo si la tabla est vaca.
Se borra estructura, datos e ndices de la tabla. Borrado Fsico. No se puede hacer Rollback de la sentencia. Slo el propietario de la tabla u otro usuario con el permiso DROP ANY TABLE puede eliminar una tabla.
Permite cambiar el nombre de una tabla, vista, secuencia o sinnimo. Debe ser el propietario del objeto.
TEMA 9 VISTAS
S.Q.L. Concepto de Vista
Una vista es una tabla lgica basada en una tabla u otra vista.
www.detodoprogramacion.com
No contiene datos en s misma, pero es como una ventana a travs de la cual se pueden ver o cambiar los datos de las tablas. Podemos representar con ellas subconjuntos lgicos o combinaciones de datos. Las tablas sobre las cuales se basa una vista se llaman tablas base. Se almacenan en el Diccionario de Datos, USER_VIEWS.
FORCE: Crea la vista sin importar que la tabla base exista o no. WITH CHECK OPTION: Especifica que solamente las filas accesibles a la vista pueden ser insertadas o actualizadas. CONSTRAINT: Nombre asignado a la restriccin CHECK OPTION. WITH READ ONLY: Asegura que ninguna operacin DML pueda realizarse sobre esta vista.
www.detodoprogramacion.com
Al borrar una vista no perder los datos, porque la vista est basada en tablas subyacentes de la B.D. nicamente el creador o un usuario con el privilegio DROP ANY VIEW puede eliminar una vista.
Simplifican el acceso a los objetos al crear otro nombre para un objeto (sinnimo). Hacen referencia a una tabla propia o de otro usuario. Permite acortar la longitud de los nombre de los objetos a la vez que elimina la necesidad de cualificar el objeto con un esquema. El DBA puede crear un sinnimo pblico accesible a todos los usuarios.
www.detodoprogramacion.com
www.detodoprogramacion.com
Si la variable no existe, SQL*PLUS le solicita al usuario un valor. SQL*PLUS no descarta la nueva variable una vez que esta es usada.
SQL*PLUS
www.detodoprogramacion.com
ACCEPT Acepta un valor introducido por el usuario y lo almacena en una variable, adems de permitir introducir literales informativos as como definir el tipo de variable.
www.detodoprogramacion.com
Verifique los valores que tiene definidos por medio del comando SHOW.
www.detodoprogramacion.com
TERM[OUT] { OFF | ON }
CLE[AR]
Define la cabecera para una columna Alinea la cabecera de una columna a la izqda., centro o
Especifica el texto a visualizar en caso de valores nulos. Contina escribiendo en las lneas siguientes.
SQL*PLUS Formatos con COLUMN Elemento Descripcin An Ancho de columna de n 9 Suprime ceros 0 Fuerza ceros Ejemplo Resultado 999999 099999 1234 01234
www.detodoprogramacion.com
$ L . ,
Signo dlar flotante $9999 Moneda local L9999 Posicin del punto decimal 9999.99 Separador de miles 9,999
globales:
Para seccionar valores segn SQL> BREAK ON ename SKIP 4 ON job SKIP2 Limpiar todas SQL> CLEAR BREAK las
la
ruptura:
definiciones
BREAK:
Definir cabecera SQL> TTITLE Informe de|Salarios Definir el pie SQL> BTITLE Confidencial de
del
informe:
pgina
del
informe:
TEMA 11 PL/SQL
PL/SQL Qu es PL/SQL?
www.detodoprogramacion.com
Lenguaje de procesamiento procedimental. Implementado por Oracle. Dispone de estructuras de programacin similares a las de la mayora de los lenguajes de programacin. Objetivo: Interactuar con la B.D.
PL/SQL
que
sern
utilizados
www.detodoprogramacion.com
Reglas para nombres: Dos variables pueden tener el mismo nombre, si estn en bloques diferentes. El nombre de la variable (identificador) no debera ser el mismo que el de una columna de una tabla utilizada en el bloque.
Inicializacin:
www.detodoprogramacion.com
PL/SQL
www.detodoprogramacion.com
Variables BOOLEANAS
A una variable FALSE o NULL. Boolean slo se le pueden asignar los valores: TRUE,
Estas variables estn conectadas por los operadores lgicos AND, OR y NOT.
Los componentes individuales del registro se referenciarn de forma cualificada; en este ejemplo:
www.detodoprogramacion.com
Define un registro con la estructura de la tabla o vista de la B.D. Los campos del registro toman sus nombres y tipos de datos de las columnas de la vista o tabla. Ejemplo: DECLARE registro_empleado emp%ROWTYPE;
www.detodoprogramacion.com
Sintaxis:
Ejemplo:
CLOB BLOB
Character Large Object. Se utiliza para almacenar bloques grandes de datos de caracteres. Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D. Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema BFILE operativo, fuera de la B.D. National Language Character Large Object. Se utiliza para almacenar en la B.D. bloques NCLOB grandes de datos NCHAR de un byte nico o multi-bytes de ancho fijo. PL/SQL Variables de Enlace (Bind)
Son variables de SQL*Plus. Las pueden referenciar bloques de PL/SQL mediante el uso del ampersand (&). Ejemplo:
S.Q.L. Ejercicios
www.detodoprogramacion.com
Basados en las tablas emp y dept del usuario Scott de la database Oracle. Crear el modelo de datos necesario para representar la actividad de un Videoclub. Mostrar los nombres de los empleados del deptno 10, junto con los meses que llevan trabajando en la empresa. Extraer el nombre de empleado y su fecha de alta en la empresa con formato Dia ( letras) , mes ( letras ), ao, horas, minutos y segundos. Mostrar el n de empleado, job, nombre, as como la comisin. Si no tiene comisin, poner el texto Sin Comisin. La informacin debe de salir ordenada por n de empleado en descendente. N de empleado con el salario mas alto. Nombre de deptno y Nombre de empleado que mas tarde entr en la empresa, para cada uno de los departamentos. Incrementar un 20% el salario de todos los empleados que no son de Bostn. Borrar los empleados cuyo nombre no comienza por A , que no son Analistas y que trabajan en New York. Nombre de empleado, suma de salario y comisin para los empleados cuyo salario es superior a la media de su departamento.
www.detodoprogramacion.com
**, NOT +, *, / +, -, || =, !=, <, >, <=, >=, IS NULL, LIKE, BETWEEN, IN AND OR PL/SQL Generalidades de PL/SQL (II)
Bloques Anidados y mbito de la Variable:
Exponenciacin, negacin lgica Identidad, negacin Multiplicacin, divisin Suma, resta, concatenacin Comparacin Conjuncin Inclusin
www.detodoprogramacion.com
Recuerde, slo se debe de recuperar una fila. Ms de una fila provocar errores.
www.detodoprogramacion.com
www.detodoprogramacion.com
PL/SQL Sentencia IF
Sintaxis:
PL/SQL
www.detodoprogramacion.com
Condiciones Booleanas
No declare el ndice; se declara implcitamente como un BINARY_INTEGER. Fuera del bucle el ndice no est definido. Los lmites desde..hasta deben de ser literales numricos. Pueden ser expresiones que se convierten en valores numricos.
www.detodoprogramacion.com
Salga al bucle externo con la sentencia EXIT que hace referencia a la etiqueta. Los nombres de etiquetas deben ir antes de la palabra LOOP y entre los delimitadores << >>.
Basados en las tablas Emp & Dept del esquema del usuario Scott de Oracle Actualizar los vendedores con una comisin mayor que 350$ con un incremento del 15% de su salario. Si la operacin afecta a mas de tres empleados, deshacer la transaccin, en cualquier otro caso validar la transaccin. Informar por pantalla de la operacin realizada. Insertar en la tabla TEMP 100 filas. En la primera columna se insertar un ndice secuencial (1, 2, 3...) y en la segunda columna un comentario indicando si el nmero generado es par o impar. Actualizar el trabajo a DIRECTOR a todos aquellos empleados cuyo salario sea mayor que 2000$. Almacenar el nmero de empleados actualizados por la operacin en la tabla TEMP. Si los afectados son mas de cinco personas, borrar los empleados cuyo salario sea mayor que 3000$, insertar en la tabla TEMP el nmero de empleados borrados y validar la transaccin. Calcular por medio de un bloque PL/SQL 9i annimo el total de ganancias de los empleados (salario y comisin) y cuntos de stos tienen un salario superior a 2000$ para todos los departamentos de la empresa.
TEMA 13
www.detodoprogramacion.com
CURSORES
PL/SQL Definicin de Cursor
tiles para las consultas que devuelven ms de una fila. Son declarados y nombrados por el programador, y manipulados por medio de sentencias especficas en las acciones ejecutables del bloque.
4. Si todava existen filas sin leer, volver a 3. 5. Si no existen ms filas a leer CLOSE
No incluya la clusula INTO en la declaracin del cursor. Si es necesario procesar filas en algn orden, incluya la clusula ORDER BY .
PL/SQL
www.detodoprogramacion.com
Si la consulta no devuelve ninguna fila, no se producir ninguna excepcin al abrir el cursor. Para los cursores declarados con la clusula FOR UPDATE, la sentencia OPEN bloquea estas filas.
Incluya, en el FETCH, el mismo nmero de variables que las definidas en el cursor, y en el mismo orden. Compruebe si el cursor tiene filas.
Cierre el cursor una vez completado el procesamiento de las filas. Si es necesario, vuelva a abrir el cursor. No intente recuperar los datos de un cursor una vez que ha sido cerrado (INVALID_CURSOR).
www.detodoprogramacion.com
PL/SQL
www.detodoprogramacion.com
Permite abrir un cursor varias veces con un juego activo distinto cada vez.
El bloqueo explcito le permite denegar el acceso mientras dura una transaccin. Bloquee las filas antes de la actualizacin o supresin. La clusula FOR UPDATE es la ltima clusula de una sentencia SELECT, incluso despus del ORDER BY. NOWAIT devuelve un error de Oracle si las filas han sido bloqueadas por otra sesin, de lo contrario se espera.
PL/SQL
www.detodoprogramacion.com
Incluya la clusula FOR UPDATE en la definicin del cursor para bloquear las filas. Especifique WHERE CURRENT OF en la sentencia UPDATE o DELETE para referirse a la fila actual del cursor.
Incrementar la comisin, en funcin del salario, de los empleados de Bostn y Nueva York segn su antigedad y cargosegn la siguiente tabla:
TEMA 14 EXCEPCIONES
PL/SQL Concepto de Excepcin
Qu es una excepcin? Es un identificador de PL/SQL que surge durante la ejecucin. Cmo surge? Se produce por un error Oracle o bien puede ser provocada explcitamente. Cmo se gestiona? Interrumpindola con un manejador de excepciones o propagndola al entorno de llamadas.
PL/SQL
www.detodoprogramacion.com
Interrupcin de Excepciones
Sintaxis:
www.detodoprogramacion.com
SQLERRM VARCHAR2.
PL/SQL RAISE_APPLICATION_ERROR
Sintaxis:
Utilice el procedimiento RAISE_APPLICATION_ERROR para comunicar de forma interactiva una excepcin predefinida, devolviendo un cdigo y un mensaje de error no estndar.
PL/SQL RAISE_APPLICATION_ERROR
Se utiliza en dos lugares distintos: SECCIN EJECUTABLE SECCIN DE EXCEPCIONES Ejemplos:
Ejercicios
Para un nmero de empleado dado (por medio de comandos SQL*Plus), incrementarle el salario en un 10%. Controlar dos excepciones predefinidas de ORACLE, NO_DATA_FOUND y TOO_MANY_ROWS. Por medio de comandos SQL*Plus, aceptar tres valores que correspondan al nmero, nombre y localidad de un departamento. Realizar un bloque PL/SQL 9i que inserte en la tabla DEPT los valores aceptados.
www.detodoprogramacion.com
Controlar los siguientes errores: Si el departamento ya existe, insertar en la tabla TEMP un error. Si algn dato de los insertados es de mayor longitud que la especificada en la tabla, insertar un error en la tabla TEMP. Si se producen otros errores, insertar en la tabla TEMP el nmero y el mensaje del error producido. Nota: El error ORACLE de longitud del dato fuera del rango es el 1438
www.detodoprogramacion.com
Condiciones en clusulas WHERE y HAVING. Clusulas ORDER BY y GROUP BY . Clusula VALUES de un comando INSERT. Clusula SET de un comando UPDATE.
Ejercicios
Crear la funcin ALTA_DEPT con tres argumentos: nmero, nombre y localidad del departamento. Este procedimiento debe comprobar que los nmeros de departamento son mltiplos de 10, si no es as dara un error. Crear la funcin BAJA_DEPT con un argumento. Dado un nmero de departamento, borrarlo. Crear la funcin MOD_DEPT con dos argumentos. Dado un nmero de
www.detodoprogramacion.com
departamento, actualizar la localidad al destino indicado en el parmetro. Informar con un booleano si se ha realizado correctamente la operacin.
www.detodoprogramacion.com