Escolar Documentos
Profissional Documentos
Cultura Documentos
Manual de iniciacin a
Oracle
rea de Base de Datos
Exes
2008
ndice
NDICE
10
15
TEMA 5 JOIN
18
TEMA 6 SUBCONSULTAS
19
TEMA 7 D.M.L.
21
TEMA 8 D.D.L.
24
TEMA 9 VISTAS
27
29
TEMA 11 PL/SQL
33
39
TEMA 13 CURSORES
47
TEMA 14 EXCEPCIONES
52
55
Pgina 2
TEMA 1
EL MODELO RELACIONAL
El modelo relacional
Diagrama E-R
Mundo real
Modelo conceptual (E-R)
Estructura de un diagrama E-R:
o RECTNGULOS
Entidades
o ELIPSES
Atributos
o ROMBOS
Relaciones
o LNEAS
Conectores
Ejemplo de un diagrama E-R:
Pgina 3
Oracle 8: ORDBMS
Pgina 4
TEMA 2
EL LENGUAJE S.Q.L.
Qu es S.Q.L.
Caractersticas de S.Q.L.
S.Q.L.
La sentencia SELECT
S.Q.L.
Sentencia Bsica
Pgina 5
Ejemplos:
SELECT empno, ename
FROM emp;
SELECT *
FROM emp;
S.Q.L.
Etiquetas de Columnas por defecto
S.Q.L.
Alias de columna
S.Q.L.
Uso de Alias de columna
S.Q.L.
Expresiones aritmticas
Operadores:
o Suma (+)
o Resta (-)
o Multiplicacin (*)
o Divisin (/)
Cualquier sentencia SQL
Precedencia de operadores: * / + Operadores misma prioridad se evalan de izq. a derecha.
Parntesis sobreescriben reglas de precedencia.
Pgina 6
S.Q.L.
Valor NULL
S.Q.L.
Operador de concatenacin
S.Q.L.
Filas duplicadas
Las consultas, por defecto, muestran todas las filas, incluyendo las duplicadas.
Las duplicadas se eliminan usando DISTINCT en la clusula SELECT:
S.Q.L.
Uso de la clusula WHERE
S.Q.L.
Sintaxis de WHERE
Pgina 7
Ejemplo:
S.Q.L.
Operadores de comparacin
S.Q.L.
Ejemplos de comparacin
S.Q.L.
Operadores lgicos
S.Q.L.
Ejemplos con operadores lgicos
Pgina 8
S.Q.L.
Reglas de precedencia
S.Q.L.
Recuperaciones ordenadas
S.Q.L.
Sintaxis de ORDER BY
Ejemplo:
Pgina 9
TEMA 3
FUNCIONES S.Q.L.
S.Q.L.
Funciones SQL
S.Q.L.
Funciones de Caracteres
S.Q.L.
Funciones de conversin caracteres
S.Q.L.
Funciones manipulacin caracteres
Pgina 10
S.Q.L.
Funciones Numricas
S.Q.L.
Ejemplos de funciones numricas
S.Q.L.
Trabajando con fechas
S.Q.L.
Operadores aritmticos de fechas
Sumar o restar un nmero a/o de una fecha da por resultado una fecha.
Restar dos fechas para encontrar la cantidad de das entre esas fechas.
Sumar horas a una fecha dividiendo la cantidad de horas por 24.
S.Q.L.
Funciones de Fecha (I)
Pgina 11
S.Q.L.
Funciones de Fecha (II)
LAST_DAY (fecha)
o Devuelve la fecha del ltimo da del mes que contiene fecha.
ROUND (fecha [,fmt])
o Cuando no se especifica ningn formato, devuelve la fecha del primer
da del mes contenido en fecha. Si fmt=YEAR, encuentra el primer da
del ao.
TRUNC (fecha [,fmt])
o Devuelve la fecha con la porcin del da truncado en la unidad
especificada por el modelo de formato fmt. Si se omite el formato, laf
echa se trunca en el da ms prximo.
S.Q.L.
Ejemplos funciones de fecha
S.Q.L.
Formatos de Fecha (I)
YYYY / YEAR
o Ao completo en nmero / Ao en letras
MM / MONTH
o N del mes con dos dgitos / Nombre completo del mes
DY / DAY
o Da de la semana en tres letras / Nombre completo del da
fm (fill mode)
o Elimina los espacios en blanco de relleno o suprime ceros a la izquierda
Pgina 12
S.Q.L.
Formatos de Fecha (II)
Obtencin de la hora:
o HH / HH12 / HH24
Hora del da / Hora (1-12) / Hora (1-24)
o MI / SS / SSSS
Minutos / Segundos / Segundos despus de medianoche
o AM o PM
Indicador del Meridiano
o Sufijo SP / SPTH o THSP
Deletreo del nmero / Deletreo nmeros ordinales
o Se permiten literales
S.Q.L.
Funciones de conversin (I)
S.Q.L.
Funciones de conversin (II)
S.Q.L.
Funciones de conversin (III)
TO_NUMBER (char)
o Convierte una cadena de caracteres con dgitos en un nmero.
TO_DATE (char [,fmt])
Pgina 13
S.Q.L.
La Funcin DECODE
S.Q.L.
Uso de DECODE
Pgina 14
TEMA 4
FUNCIONES DE GRUPO
S.Q.L.
Funciones de Grupo (I)
S.Q.L.
Funciones de Grupo (II)
S.Q.L.
Funciones de grupo y Nulos
S.Q.L.
NVL y funciones de grupo
Esta media no es correcta porque se han ignorado las filas cuya comisin es
nula.
Solucin: Uso de la funcin NVL para forzar a las funciones de grupo que
admitan los valores nulos.
Pgina 15
S.Q.L.
Sintaxis de GROUP BY
Crea grupo de datos, por lo tanto se pueden usar funciones de grupo para
devolver informacin resumida para cada grupo.
S.Q.L.
Uso de GROUP BY (I)
S.Q.L.
Uso de GROUP BY (II)
S.Q.L.
Consultas no vlidas
S.Q.L.
Clusula HAVING
Pgina 16
S.Q.L.
Sintaxis de HAVING
Pgina 17
TEMA 5
JOIN
S.Q.L.
Concepto de JOIN
S.Q.L.
Tipos de JOIN
S.Q.L.
Ejemplo de Equijoin
Ya que la columna DEPTNO es igual en ambas tablas, sta debe ir prefijada por
el nombre de la tabla para evitar la ambigedad.
S.Q.L.
Ejemplo de Non-Equijoins
En este ejemplo se han usado alias de tablas (e para la tabla emp y s para la tabla
salgrade).
Pgina 18
S.Q.L.
Ejemplo de Outer Join
S.Q.L.
Ejemplo de Self Join
TEMA 6
SUBCONSULTAS
S.Q.L.
Cundo subconsultas?
S.Q.L.
Sintaxis de una subconsulta
Pgina 19
S.Q.L.
Gua Uso de Subconsultas
S.Q.L.
Subconsultas Mono-registro
S.Q.L.
Subconsultas Multi-registro
Devuelven ms de un registro
Se utilizan comparadores multiregistro:
o IN
TRUE si se encuentra en la lista.
o ANY (y sinnimo SOME)
TRUE si la condicin se cumple con
algn registro de la lista devuelta por la subconsulta.
o 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.
S.Q.L.
Ejemplo subc. Multi-registro
Pgina 20
S.Q.L.
Subcons. en clusula FROM
TEMA 7
D.M.L.
S.Q.L.
Manipulacin de Datos (DML)
S.Q.L.
Control de Datos (DCL)
Pgina 21
o
o
o
COMMIT
Finaliza la transaccin actual haciendo que todos los
cambios pendientes pasen a ser permanentes.
ROLLBACK
Finaliza la transaccin en curso descartando todos los
cambios pendientes.
SAVEPOINT
Establece una "marca" dentro de la transaccin en
curso, usada por COMMIT o ROLLBACK.
S.Q.L.
La Sentencia INSERT
S.Q.L.
Insercin de Valores Nulos
S.Q.L.
Insercin Valores Especiales
S.Q.L.
Insercin reg. de otra tabla
Pgina 22
S.Q.L.
La Sentencia UPDATE
S.Q.L.
Modificacin con subconsultas
P.ej.: Modificar el oficio y departamento del empleado 7698, con los valores
correspondientes actualmente al empleado 7499:
S.Q.L.
La Sentencia DELETE
S.Q.L.
Eliminacin con subconsulta
Pgina 23
TEMA 8
D.D.L.
S.Q.L.
Definicin de Datos (DDL)
S.Q.L.
Sentencia CREATE TABLE
S.Q.L.
Reglas para los nombres
S.Q.L.
Tipos de Datos
VARCHAR2(tamao)
CHAR(tamao)
NUMBER(p,s)
DATE
Pgina 24
LONG
CLOB
RAW(tamao) y LONG
RAW
BLOB
BFILE
S.Q.L.
Creacin de tabla por subconsulta
S.Q.L.
Creacin de tabla por subconsulta
Ejemplo:
S.Q.L.
Sentencia ALTER TABLE
Pgina 25
S.Q.L.
Aadir una Columna
S.Q.L.
Modificar una Columna
Puede cambiar el tipo de datos de una columna, su tamao y valor por defecto
Si cambia el valor por defecto, afectar slo a sucesivas inserciones en la tabla.
S.Q.L.
Sentencia DROP TABLE
S.Q.L.
Sentencia RENAME
Pgina 26
TEMA 9
VISTAS
S.Q.L.
Concepto de Vista
Una vista es una tabla lgica basada en una tabla u otra vista.
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.
S.Q.L.
Por qu usar Vistas?
S.Q.L.
Creacin de una Vista
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.
S.Q.L.
Ejemplo creacin de Vista
Pgina 27
S.Q.L.
Eliminacin de una Vista
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.
S.Q.L.
Limitaciones DML en Vistas
S.Q.L.
Creacin de Sinnimos
S.Q.L.
Eliminacin de Sinnimos
Pgina 28
TEMA 10
ENTORNO SQL*PLUS
SQL*PLUS
Entorno de ORACLE
SQL*PLUS
Conexin a SQL*PLUS
SQL*PLUS
Comandos de Edicin
A[PPEND] texto
C[HANGE] /antiguo /nuevo
C[HANGE] /texto /
CL[EAR] BUFF[ER]
DEL [n] [m]
I[INPUT] [texto]
L[IST] [n] [m]
R[UN]
n [texto]
0 texto
SQL*PLUS
Comandos de Ficheros
Pgina 29
ED[IT] nombre_fichero[.ext]
SPO[OL] [nombre_fichero[.ext] | OFF | OUT]
EXIT
SQL*PLUS
Variables de Sustitucin
SQL*PLUS
Uso de variables sustitucin
Use una variable precedida con un ampersand (&) para pedir un valor al usuario:
SQL*PLUS
Caracteres y Fechas con Var. Sust.
SQL*PLUS
Comando SET VERIFY
SQL*PLUS
Variables de Usuario
Pgina 30
o
o
DEFINE
Crea una variable de usuario de tipo CHAR.
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.
SQL*PLUS
Comando DEFINE/UNDEFINE
SQL*PLUS
Comando ACCEPT
SQL*PLUS
Personalizacin del Entorno
Verifique los valores que tiene definidos por medio del comando SHOW.
SQL*PLUS
Parmetros del Entorno
ARRAY[SIZE] { 20 | n }
COLSEP { _ | texto }
FEED[BACK] { 6 | n | ON | OFF]
Pgina 31
HEA[DING] { OFF | ON }
LIN[ESIZE] {80 | n }
LONG { 80 | n }
PAGES[IZE] { 24 | n }
PAU[SE] { OFF | ON | text }
TERM[OUT] { OFF | ON }
SQL*PLUS
Comandos de Formato
COL[UMN] [opcin_de_columna]
BRE[AK] [ON elemento_del_informe]
TTI[TLE] [texto | OFF | ON]
BTI[TLE] [texto | OFF | ON]
SQL*PLUS
Comando COLUMN
CLE[AR]
Limpia cualquier formato definido.
FOR[MAT] formato
Cambia la visualizacin de la columna segn un
modelo de formato.
HEA[DING] texto
Define la cabecera para una columna
JUS[TIFY] {alineacin}
Alinea la cabecera de una columna a la izqda.,
centro o derecha.
PRI[NT] / NOPRI[NT]
Muestra / Oculta la columna.
NUL[L] texto
Especifica el texto a visualizar en caso de valores nulos.
WRA[PPED]
Contina escribiendo en las lneas siguientes.
SQL*PLUS
Formatos con COLUMN
Elemento
Descripcin
Ejemplo Resultado
An
Ancho de columna de n
9
Suprime ceros
999999 1234
0
Fuerza ceros
099999 01234
$
Signo dlar flotante
$9999 $1234
L
Moneda local
L9999 L1234
.
Posicin del punto decimal 9999.99 1234.00
,
Separador de miles
9,999
1,234
SQL*PLUS
Comando BREAK
Pgina 32
SQL*PLUS
Comandos TTITLE y BTITLE
TEMA 11
PL/SQL
PL/SQL
Qu es PL/SQL?
PL/SQL
Estructura Bloques Annimos
[DECLARE]
Define objetos PL/SQL que sern utilizados
dentro del mismo bloque
BEGIN
Sentencias Ejecutables
[EXCEPTION]
Qu hacer si la accin ejecutada causa error
END;
Pgina 33
PL/SQL
Estructura de Procedimiento
PROCEDURE nombre IS
Seccin Declarativa
BEGIN
Seccin Ejecutable
[EXCEPTION]
Seccin de Excepciones
END;
PL/SQL
Estructura de Funcin
PL/SQL
Declaracin de Variables
PL/SQL
Asignacin e Inicializacin de Variables
Asignacin:
Inicializacin:
Pgina 34
PL/SQL
Tipos de Variables
ESCALARES
BOOLEANAS
COMPUESTAS
LOB
DE ENLACE (BIND)
PL/SQL
Variables Escalares
VARCHAR2 (longitud_mxima)
NUMBER [(precisin, escala)]
DATE
CHAR [(longitud_mxima)]
LONG
LONG RAW
BOOLEAN
BINARY_INTEGER
PL/SQL
Atributo %TYPE
PL/SQL
Variables BOOLEANAS
A una variable Boolean slo se le pueden asignar los valores: TRUE, FALSE o
NULL.
Estas variables estn conectadas por los operadores lgicos AND, OR y NOT.
PL/SQL
Tipos de Datos Compuestos
Tipos:
REGISTROS PL/SQL
TABLAS PL/SQL
Contienen componentes internos
o
o
Pgina 35
PL/SQL
Creacin de un Registro
Sintaxis:
PL/SQL
Ejemplo de Registro PL/SQL
PL/SQL
El Atributo %ROWTYPE
PL/SQL
Ventajas de %ROWTYPE
Pgina 36
PL/SQL
Tablas PL/SQL
PL/SQL
Creacin de Tablas PL/SQL
Sintaxis:
Ejemplo:
PL/SQL
Creacin de Tablas PL/SQL
Pgina 37
PL/SQL
Variables LOB
PL/SQL
Variables de Enlace (Bind)
S.Q.L.
Ejercicios
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.
Pgina 38
TEMA 12
GENERALIDADES DE PL/SQL
PL/SQL
Generalidades de PL/SQL (I)
Comentarios en PL/SQL:
o Anteponga a los comentarios de una sola lnea dos guiones (--) a modo
de prefijo.
o Coloque comentarios de varias lneas entre /* y */.
Operadores de PL/SQL:
**, NOT
Exponenciacin, negacin
lgica
+, -
Identidad, negacin
*, /
Multiplicacin, divisin
+, -, ||
Comparacin
AND
Conjuncin
OR
Inclusin
Pgina 39
PL/SQL
Generalidades de PL/SQL (II)
PL/SQL
Generalidades de PL/SQL (III)
PL/SQL
Generalidades de PL/SQL (IV)
PL/SQL
Generalidades de PL/SQL (V)
Cuando trabaje con valores nulos puede evitar algunos de los errores ms
habituales si recuerda las siguientes reglas:
o Las comparaciones en las que se incluyen valores nulos siempre resultan
NULL.
o Si se aplica el operador lgico NOT a un valor nulo resulta NULL.
o En las sentencias de control condicionales, si la condicin resulta NULL,
no se ejecutarn las sentencias asociadas.
PL/SQL
Sentencias SQL en PL/SQL
Manual de iniciacin a Oracle
Pgina 40
PL/SQL
Sentencia SELECT
Sintaxis:
Recuerde, slo se debe de recuperar una fila. Ms de una fila provocar errores.
PL/SQL
Ejemplo de SELECT
PL/SQL
Insercin de Datos
Pgina 41
PL/SQL
Actualizacin de Datos
Aumente el salario de todos los empleados de la tabla emp que son Analistas:
PL/SQL
Supresin de Datos
PL/SQL
Control de Transacciones
Pgina 42
PL/SQL
Control de Transacciones
PL/SQL
Control Flujo de Ejecucin
PL/SQL
Sentencia IF
Sintaxis:
PL/SQL
Flujo de IF-THEN-ELSE
Manual de iniciacin a Oracle
Pgina 43
PL/SQL
Flujo de IF-THEN-ELSIF
PL/SQL
Condiciones Booleanas
PL/SQL
Bucle Bsico: LOOP
Sintaxis:
Pgina 44
PL/SQL
Bucle FOR
Sintaxis:
PL/SQL
Bucle WHILE
Sintaxis:
PL/SQL
Etiquetas y Loops Anidados
Pgina 45
PL/SQL
Etiquetas y Loops Anidados
Ejemplo:
S.Q.L.
Ejercicios Bloques Annimos
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.
Pgina 46
TEMA 13
CURSORES
PL/SQL
Definicin de Cursor
PL/SQL
Control de Cursores
PL/SQL
Declaracin del Cursor
Sintaxis:
PL/SQL
Ejemplo de Declaracin
Pgina 47
PL/SQL
Apertura del Cursor
Sintaxis:
PL/SQL
Recuperacin de Datos
Sintaxis:
PL/SQL
Cierre del Cursor
Sintaxis:
PL/SQL
Atributos de Cursores
Pgina 48
PL/SQL
El Atributo %ISOPEN
PL/SQL
Atributos %NOTFOUND, %ROWCOUNT
PL/SQL
Ejemplo %NOTFOUND, %ROWCOUNT
Ejemplo:
PL/SQL
Bucles FOR de Cursor
Sintaxis:
Pgina 49
PL/SQL
Cursores con Parmetros
Sintaxis:
Permite abrir un cursor varias veces con un juego activo distinto cada vez.
PL/SQL
Cursores con Parmetros
Cada parmetro formal de la declaracin del cursor debe tener un parmetro real
correspondiente en la sentencia OPEN.
La sintaxis de los parmetros es:
PL/SQL
Cursores con Parmetros
PL/SQL
Clusula FOR UPDATE
Sintaxis:
Pgina 50
PL/SQL
Clusula WHERE CURRENT OF
Sintaxis:
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.
S.Q.L.
Ejercicios Cursores
Pgina 51
TEMA 14
EXCEPCIONES
PL/SQL
Concepto de Excepcin
PL/SQL
Interrupcin de Excepciones
Sintaxis:
PL/SQL
Excepciones de Oracle8
Pgina 52
PL/SQL
Excepciones de Oracle8
PL/SQL
Excepciones de Usuario
PL/SQL
Excepciones de Usuario
Ejemplo:
PL/SQL
Funciones para Identificar Excepciones
SQLCODE
Devuelve el valor numrico del cdigo de error SQL. No se
puede referenciar directamente, hay que asignarlo a una variable PL/SQL de tipo
NUMBER.
Pgina 53
SQLERRM
VARCHAR2.
PL/SQL
RAISE_APPLICATION_ERROR
Sintaxis:
PL/SQL
RAISE_APPLICATION_ERROR
SQL Ejercicios
Ejercicios Excepciones
Pgina 54
o
o
o
TEMA 15
FUNCIONES PL/SQL
PL/SQL
Definicin de Funcin
PL/SQL
Sintaxis Creacin Funciones
Pgina 55
PL/SQL
Creacin de una Funcin
PL/SQL
Desde dnde llamarlas
PL/SQL
Restricciones en Funciones
PL/SQL
Borrado de Funciones
Para quitar una funcin de la parte del servidor, utilizando SQL*Plus, ejecutar el
comando DROP FUNCTION.
Sintaxis:
SQL Ejercicios
Ejercicios Funciones
Pgina 56
Pgina 57