Professional Documents
Culture Documents
EL MODELO RELACIONAL
El modelo relacional
RELACIONES
Cardinalidad de Asignacin
Diagrama E-R
Mundo real
RECTNGULOS
ELIPSES
ROMBOS
LNEAS
Entidades
Atributos
Relaciones
Conectores
ENTIDADES
Oracle 8: ORDBMS
Respecto a Oracle7:
o
TEMA 2
EL LENGUAJE S.Q.L.
Qu es S.Q.L.
Existen numerosos productos que soportan SQL, cada uno de ellos con
pequeas diferencias sin apenas importancia (p.ej. Oracle).
Caractersticas de S.Q.L.
Grant, Revoke.
Control de transacciones
o
Restricciones de integridad
o
Referencial, datos.
S.Q.L.
La sentencia SELECT
S.Q.L.
Sentencia Bsica
Ejemplos:
SELECT
FROM
SELECT
FROM emp;
empno,
S.Q.L.
Etiquetas de Columnas por defecto
Izquierda
Derecha
fechas y caracteres
datos numricos
S.Q.L.
Alias de columna
ename
emp;
*
Sintaxis:
o
S.Q.L.
Uso de Alias de columna
Resultado:
S.Q.L.
Expresiones aritmticas
Operadores:
o
Suma (+)
Resta (-)
Multiplicacin (*)
Divisin (/)
Precedencia de operadores: * / + -
S.Q.L.
Valor NULL
S.Q.L.
Operador de concatenacin
Ejemplo:
S.Q.L.
Filas duplicadas
Las consultas, por defecto, muestran todas las filas, incluyendo las
duplicadas.
S.Q.L.
Uso de la clusula WHERE
S.Q.L.
Sintaxis de WHERE
Ejemplo:
S.Q.L.
Operadores de comparacin
= Igual que
<> Distinto
BETWEEN m AND n
IN(lista)
LIKE
IS NULL
Entre m y n (inclusive)
Se encuentra en la lista
Se ajusta a un patrn
Es valor nulo
S.Q.L.
Ejemplos de comparacin
SQL>
SELECT
ename,
WHERE sal BETWEEN 1000 AND 1500;
saL
SQL>
sal,
SELECT
empno,
ename,
FROM
mgr
FROM
emp
EMP
SQL>
SELECT
WHERE ename LIKE _A%;
o
ename
FROM
emp
Sintaxis de LIKE:
SQL>
SELECT
WHERE mgr IS NULL;
ename,
mgr
FROM
emp
S.Q.L.
Operadores lgicos
S.Q.L.
Ejemplos con operadores lgicos
SQL>
SELECT
empno,
WHERE
sal
AND job = CLERK;
ename,
job,
>=
sal
FROM
emp
1100
SQL>
SELECT
empno,
WHERE
sal
OR job = MANAGER;
ename,
job,
>=
sal
FROM
emp
2000
SQL>
SELECT
ename,
job
WHERE job NOT IN (CLERK, MANAGER, ANALYST);
FROM
emp
S.Q.L.
Reglas de precedencia
2: NOT
3: AND
4: OR
S.Q.L.
Recuperaciones ordenadas
ASC
DESC
S.Q.L.
Sintaxis de ORDER BY
Ejemplo:
TEMA 3
FUNCIONES S.Q.L.
S.Q.L.
Funciones SQL
Carcter
Nmero
Fecha
Conversin
S.Q.L.
Funciones de Caracteres
Funciones de conversin
De manipulacin de caracteres:
o
CONCAT
SUBSTR
LENGTH
INSTR
LPAD Y RPAD
De conversin:
o
S.Q.L.
Funciones de conversin caracteres
S.Q.L.
Funciones manipulacin caracteres
S.Q.L.
Funciones Numricas
MOD (m, n)
o
S.Q.L.
Ejemplos de funciones numricas
Resultado: 45.92 46 50
Resultado: 45.92 45 40
S.Q.L.
Trabajando con fechas
DUAL es una tabla virtual de la bd., que puede ser usada para
inspeccionar SYSDATE.
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.
S.Q.L.
Funciones de Fecha (I)
ADD_MONTHS (fecha, n)
o
S.Q.L.
Funciones de Fecha (II)
LAST_DAY (fecha)
o
S.Q.L.
Ejemplos funciones de fecha
ADD_MONTHS(11-JAN-94, 6)
LAST_DAY (01-SEP-95)
19.6774194
11-JUL-94
08-SEP-95
30-SEP-95
01-AUG-95
01-JAN-96
01-JUL-95
01-JAN-95
S.Q.L.
Formatos de Fecha (I)
YYYY / YEAR
o
MM / MONTH
o
DY / DAY
o
fm (fill mode)
o
S.Q.L.
Formatos de Fecha (II)
Obtencin de la hora:
o
HH / HH12 / HH24
MI / SS / SSSS
AM o PM
Se permiten literales
S.Q.L.
Funciones de conversin (I)
De VARCHAR2 o CHAR
a NUMBER
De VARCHAR2 o CHAR
a DATE
De NUMBER
De DATE
a VARCHAR2
a VARCHAR2
S.Q.L.
Funciones de conversin (II)
9: Representa un nmero
$: Signo de dlar
S.Q.L.
Funciones de conversin (III)
TO_NUMBER (char)
o
nmero (expr2).
S.Q.L.
La Funcin DECODE
S.Q.L.
Uso de DECODE
SQL>
SELECT
job,
sal,
DECODE (job, ANALYST, sal*1.1, CLERK, sal*1.15, MANAGER, sal*1.20,
sal)
AS
Nuevo
salario
FROM emp;
TEMA 4
FUNCIONES DE GRUPO
S.Q.L.
Funciones de Grupo (I)
Valor promedio de n.
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.
S.Q.L.
Sintaxis de GROUP BY
S.Q.L.
Uso de GROUP BY (I)
Por defecto, tras un GROUP BY, las filas se ordenan de forma ascendente
Ejemplo:
S.Q.L.
Uso de GROUP BY (II)
Se
pueden
formar
agrupaciones
sobre
mltiples
columnas:
>SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job;
S.Q.L.
Consultas no vlidas
S.Q.L.
Clusula HAVING
S.Q.L.
Sintaxis de HAVING
TEMA 5
JOIN
S.Q.L.
Concepto de JOIN
Ejemplo:
S.Q.L.
Tipos de JOIN
EQUIJOIN
campos.
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:
o
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
S.Q.L.
Ejemplo de Equijoin
S.Q.L.
Ejemplo de Non-Equijoins
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
S.Q.L.
Gua Uso de Subconsultas
S.Q.L.
Subconsultas Mono-registro
Ejemplo:
S.Q.L.
Subconsultas Multi-registro
Devuelven ms de un registro
IN
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
S.Q.L.
Subcons. en clusula FROM
TEMA 7
D.M.L.
S.Q.L.
Manipulacin de Datos (DML)
INSERT
UPDATE
DELETE
S.Q.L.
Control de Datos (DCL)
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
S.Q.L.
La Sentencia UPDATE
S.Q.L.
Modificacin con subconsultas
S.Q.L.
La Sentencia DELETE
S.Q.L.
Eliminacin con subconsulta
TEMA 8
D.D.L.
S.Q.L.
Definicin de Datos (DDL)
CREATE TABLE
Crea una tabla. Para ello el usuario debe de
tener el privilegio CREATE TABLE.
ALTER TABLE
una tabla.
DROP TABLE
Elimina una tabla (datos y estructura) y sus
ndices. No se puede hacer Rollback de esta sentencia.
RENAME
sinnimo.
S.Q.L.
Sentencia CREATE TABLE
Ha de especificar:
o
Nombre de tabla
S.Q.L.
Reglas para los nombres
No deben duplicar el nombre de otro objeto que sea propiedad del mismo
usuario o schema.
S.Q.L.
Tipos de Datos
VARCHAR2(tamao)
CHAR(tamao)
NUMBER(p,s)
DATE
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
S.Q.L.
Aadir una Columna
Puede definir una columna NOT NULL slo si la tabla est vaca.
S.Q.L.
Modificar una Columna
S.Q.L.
Sentencia DROP TABLE
S.Q.L.
Sentencia RENAME
TEMA 9
VISTAS
S.Q.L.
Concepto de Vista
Una vista es una tabla lgica basada en una tabla u otra vista.
Las tablas sobre las cuales se basa una vista se llaman tablas base.
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.
S.Q.L.
Ejemplo creacin de Vista
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.
S.Q.L.
Limitaciones DML en Vistas
S.Q.L.
Creacin de Sinnimos
S.Q.L.
Eliminacin de Sinnimos
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] /texto /
CL[EAR] BUFF[ER]
I[INPUT] [texto]
R[UN]
n [texto]
0 texto
SQL*PLUS
Comandos de Ficheros
GET nombre_fichero[.ext]
STA[RT] nombre_fichero[.ext]
@nombre_fichero[.ext]
ED[IT] nombre_fichero[.ext]
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
DEFINE
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]
HEA[DING] { OFF | ON }
LIN[ESIZE] {80 | n }
LONG { 80 | n }
PAGES[IZE] { 24 | n }
TERM[OUT] { OFF | ON }
SQL*PLUS
Comandos de Formato
COL[UMN] [opcin_de_columna]
SQL*PLUS
Comando COLUMN
CLE[AR]
FOR[MAT] formato
modelo de formato.
HEA[DING] texto
JUS[TIFY] {alineacin}
centro o derecha.
PRI[NT] / NOPRI[NT]
NUL[L] texto
WRA[PPED]
SQL*PLUS
Elemento
Descripcin
An
Ancho de columna de n
Suprime ceros
Fuerza ceros
Moneda local
Separador de miles
SQL*PLUS
Comando BREAK
Para
suprimir
SQL> BREAK ON ename ON job
Para
producir
SQL> BREAK ON report
Para
seccionar
duplicados:
totales
valores
segn
globales:
la
ruptura:
Limpiar
todas
SQL> CLEAR BREAK
las
definiciones
BREAK:
SQL*PLUS
Comandos TTITLE y BTITLE
Definir
cabecera
SQL> TTITLE Informe de|Salarios
Definir
el
pie
SQL> BTITLE Confidencial
de
del
pgina
informe:
del
informe:
TEMA 11
PL/SQL
PL/SQL
Qu es PL/SQL?
PL/SQL
Estructura Bloques Annimos
[DECLARE]
Define
objetos
dentro del mismo bloque
BEGIN
Sentencias Ejecutables
[EXCEPTION]
Qu hacer si la accin ejecutada causa error
END;
PL/SQL
Estructura de Procedimiento
PROCEDURE nombre IS
Seccin Declarativa
BEGIN
Seccin Ejecutable
[EXCEPTION]
Seccin de Excepciones
END;
PL/SQL
que
sern
utilizados
PL/SQL
Estructura de Funcin
BEGIN
Seccin Ejecutable
[EXCEPTION]
Seccin de Excepciones
END;
PL/SQL
Declaracin de Variables
PL/SQL
Asignacin e Inicializacin de Variables
Asignacin:
Inicializacin:
PL/SQL
Tipos de Variables
ESCALARES
BOOLEANAS
COMPUESTAS
LOB
DE ENLACE (BIND)
PL/SQL
Variables Escalares
VARCHAR2 (longitud_mxima)
DATE
CHAR [(longitud_mxima)]
LONG
LONG RAW
BOOLEAN
BINARY_INTEGER
PL/SQL
Atributo %TYPE
Ejemplo:
v_ename
emp.ename%TYPE;
PL/SQL
Variables BOOLEANAS
PL/SQL
Tipos de Datos Compuestos
Tipos:
o
REGISTROS PL/SQL
TABLAS PL/SQL
PL/SQL
Creacin de un Registro
Sintaxis:
PL/SQL
Ejemplo de Registro PL/SQL
PL/SQL
El Atributo %ROWTYPE
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;
PL/SQL
Ventajas de %ROWTYPE
PL/SQL
Tablas PL/SQL
Se almacenan en memoria.
PL/SQL
Creacin de Tablas PL/SQL
Sintaxis:
Ejemplo:
PL/SQL
Creacin de Tablas PL/SQL
PL/SQL
Variables LOB
CLOB
Character Large Object. Se utiliza para almacenar bloques grandes de datos de caracter
BLOB
Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D.
BFILE Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema o
NCLOB
National Language Character Large Object. Se utiliza para almacenar en la B.D. bloques
ancho fijo.
PL/SQL
Variables de Enlace (Bind)
Ejemplo:
S.Q.L.
Ejercicios
Mostrar los nombres de los empleados del deptno 10, junto con los
TEMA 12
GENERALIDADES DE PL/SQL
PL/SQL
Generalidades de PL/SQL (I)
Comentarios en PL/SQL:
o
Operadores de PL/SQL:
**, NOT
+, -
*, /
+, -, ||
AND
OR
PL/SQL
Generalidades de PL/SQL (II)
PL/SQL
Generalidades de PL/SQL (III)
PL/SQL
Generalidades de PL/SQL (IV)
PL/SQL
Cuando trabaje con valores nulos puede evitar algunos de los errores
ms habituales si recuerda las siguientes reglas:
o
PL/SQL
Sentencias SQL en PL/SQL
PL/SQL
Sentencia SELECT
Sintaxis:
PL/SQL
PL/SQL
Ejemplo de SELECT
Insercin de Datos
PL/SQL
Actualizacin de Datos
PL/SQL
Supresin de Datos
PL/SQL
Control de Transacciones
PL/SQL
Control de Transacciones
PL/SQL
Control Flujo de Ejecucin
Sentencias IF condicionales:
o
IF-THEN
IF-THEN-ELSE
IF-THEN-ELSIF
Control de bucles:
o
Bucle FOR
Bucle WHILE
PL/SQL
Sentencia IF
Sintaxis:
PL/SQL
Flujo de IF-THEN-ELSE
PL/SQL
Flujo de IF-THEN-ELSIF
PL/SQL
Condiciones Booleanas
PL/SQL
Bucle Bsico: LOOP
Sintaxis:
NULL).
PL/SQL
Bucle FOR
Sintaxis:
como
un
PL/SQL
Bucle WHILE
Sintaxis:
PL/SQL
Etiquetas y Loops Anidados
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.
TEMA 13
CURSORES
PL/SQL
Definicin de Cursor
PL/SQL
Control de Cursores
DECLARE
OPEN
FETCH
CLOSE
PL/SQL
Declaracin del Cursor
Sintaxis:
PL/SQL
Ejemplo de Declaracin
PL/SQL
Apertura del Cursor
Sintaxis:
PL/SQL
Recuperacin de Datos
Sintaxis:
PL/SQL
Cierre del Cursor
Sintaxis:
No intente recuperar los datos de un cursor una vez que ha sido cerrado
(INVALID_CURSOR).
PL/SQL
Atributos de Cursores
PL/SQL
El Atributo %ISOPEN
Ejemplo:
PL/SQL
Atributos %NOTFOUND, %ROWCOUNT
Utilice %NOTFOUND para determinar cundo salir del bucle de lectura del
cursor.
PL/SQL
Ejemplo %NOTFOUND, %ROWCOUNT
Ejemplo:
PL/SQL
Bucles FOR de Cursor
Sintaxis:
PL/SQL
Cursores con Parmetros
Sintaxis:
Permite abrir un cursor varias veces con un juego activo distinto cada
vez.
PL/SQL
Cursores con Parmetros
PL/SQL
Cursores con Parmetros
PL/SQL
Clusula FOR UPDATE
Sintaxis:
NOWAIT devuelve un error de Oracle si las filas han sido bloqueadas por
otra sesin, de lo contrario se espera.
PL/SQL
Clusula WHERE CURRENT OF
Sintaxis:
S.Q.L.
Ejercicios Cursores
TEMA 14
EXCEPCIONES
PL/SQL
Concepto de Excepcin
Cmo surge? Se produce por un error Oracle o bien puede ser provocada
explcitamente.
PL/SQL
Interrupcin de Excepciones
Sintaxis:
PL/SQL
Excepciones de Oracle8
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.
SQLERRM
Devuelve el mensaje asociado con el nmero de error.
Tipo VARCHAR2.
PL/SQL
RAISE_APPLICATION_ERROR
Sintaxis:
PL/SQL
RAISE_APPLICATION_ERROR
SECCIN EJECUTABLE
SECCIN DE EXCEPCIONES
Ejemplos:
SQL
Ejercicios
Ejercicios Excepciones
TEMA 15
FUNCIONES PL/SQL
PL/SQL
Definicin de Funcin
PL/SQL
Sintaxis Creacin Funciones
PL/SQL
Creacin de una Funcin
PL/SQL
Desde dnde llamarlas
PL/SQL
Restricciones en Funciones
PL/SQL
Borrado de Funciones
Sintaxis: