2. Introducción a SQL y PL/SQL
Orlando Lara Betancourt
Introducción a SQL y PL/SQL
1-2
3. Contenido
1. Introducción a Bases de Datos
2. Creación y Manejo de Objetos de Bases de Datos
3. Sentencias Basicas de SQL
4. Manipulación de Datos con SQL
5. Control de Acceso
6. Fundamentos de PL/SQL
7. Estructuras de Control
8. PL/SQL y su interacción con Oracle
9. Manejo de Errores
10.Creación de SubProgramas
Introducción a SQL y PL/SQL
1-3
6. Conceptos Basicos
Base de Datos: Conjunto de datos estructurados,
almacenados que se consultan a través de
aplicaciones.
Diseño de Bases de datos
–
Conceptual: Especificación de la realidad
–
Lógico: Descripcion de la estructura de la BD
–
Fisico: Implementación de la Estructura
Introducción a SQL y PL/SQL
1-6
7. Modelo Entidad Relación (MER)
Entidad: Objeto sobre el cual se puede tener
información.
Atributo: Caracteristica de la entidad
–
Relación: Asociación entre dos o mas Entidades
–
Dominio: Conjunto de valores de un atributo
Cardinalidad: Numero de correspondencias.
Identificador: Atributo que identifica una única
ocurrencia de la Entidad.
Introducción a SQL y PL/SQL
1-7
8. Modelo Entidad Relación (MER)
Cliente
# Cedula
Nombre
Direccion
Telefono
Sexo (M/F)
1:n
Tiene
1:1
Pertenece
Introducción a SQL y PL/SQL
1-8
Factura
# No Fact
Fecha
Valor
9. Modelo Relacional de Datos (MRD)
Estructura Fisica de la Base de Datos
Entidades Tablas: Singular a Plural
Atributos Campos
Identificador Campo Clave
Normalización: Proceso estandar para evitar:
–
Redundancia de Información
–
Inconsistencia de Información
–
Perdida de Información en Cascada
–
Anomalias de Inserción
Introducción a SQL y PL/SQL
1-9
10. Modelo Relacional de Datos (MRD)
Clientes
# Cedula n(10) NN
Nombre v(50) NN
Direccion v(80)
Telefono v(20)
Sexo (M/F) v(1)
1:n
Tiene
1:1
Pertenece
Introducción a SQL y PL/SQL
1-10
Facturas
# No Fact n(4) NN
Fecha date
Valor n(9,2)
Cedula n(10) NN
11. Bases de Datos Oracle
Consulta
de Datos
Manipulación
de Datos
Almacenamiento
de Datos
Introducción a SQL y PL/SQL
1-11
12. Bases de Datos Oracle
RDBMS (Relational Database Management System)
Garantizar el maximo aprovechamiento de los
recursos.
Esta formado por dos Elementos:
Administración de recursos (Hardware) del
Sistema.
–
Datos: Conforman la propia BD y son de dos tipos:
– Diccionario de datos: BD de los Objetos y
seguridad
– Datos: Datos del Usuario
–
Tratamientos: Aplicaciones para el manejo de los
datos (SQL Plus, DBA Studio, OEM, Forms, etc)
Introducción a SQL y PL/SQL
1-12
13. Aquitectura de la Base de Datos Oracle
Introducción a SQL y PL/SQL
1-13
14. Aquitectura de la Base de Datos Oracle
Introducción a SQL y PL/SQL
1-14
15. Aquitectura de la Base de Datos Oracle
Mandatory Background Processes
DBWn
LGWR
SMON
PMON
CKPT
Introducción a SQL y PL/SQL
1-15
16. Aquitectura de la Base de Datos Oracle
Introducción a SQL y PL/SQL
1-16
17. Resumen
Conceptos de Bases de Datos
Modelo Entidad Relación
Modelo Relacional de Datos
Caracteristicas de un RDBMS
Arquitectura de la Base de Datos Oracle
Introducción a SQL y PL/SQL
1-17
18. Creación y Manejo de Objetos de
Bases de Datos
Introducción a SQL y PL/SQL
1-18
19. Overview
Principales Objetos de la Base de Datos
Creación de Tablas
Tipos de Datos en Oracle
Alterando Tablas
Instrucciones Drop y Truncate
Creación de constraints
Creación de Vistas
Consultando datos de una vista
Creación y Uso de Secuencias
Creación y Uso de Indices
Creación de Sinonimos
Introducción a SQL y PL/SQL
1-19
20. Principales Objetos de la Base de Datos
Tablas
Vistas
Secuencias
Indices
Sinonimos
Procedimientos
Funciones
Paquetes
Introducción a SQL y PL/SQL
1-20
21. Creacion de Tablas
Create table Empleados (
Codigo number(10) not null primary key,
Nombre varchar2(50) not null,
Salario number (9,2) default 0,
Depto number(4));
Codigo
Nombre
Salario
Introducción a SQL y PL/SQL
1-21
Depto
22. Tipos de Datos
Tipo Carácter
Tipo Numerico
–
–
–
–
–
–
NUMBER (L,P)
Tipo Fecha
–
CHAR
LONG
NCHAR
NVARCHAR2
VARCHAR2
DATE
LOB
Introducción a SQL y PL/SQL
1-22
23. Alterando Tablas
Alter table Empleados Add
(Comision number(9,2));
Codigo
Nombre
Salario
Introducción a SQL y PL/SQL
1-23
Depto
Comision
24. Instrucciones Drop y Truncate
Drop table Empleados;
Elimina la definición de la tabla.
Truncate table Empleados;
Elimina los datos de la tabla
Introducción a SQL y PL/SQL
1-24
25. Creación de constraints
ALTER TABLE EMPLEADOS ADD (
CONSTRAINT PK_EMPLEADOS PRIMARY KEY
(CODIGO));
ALTER TABLE EMPLEADOS ADD (
CONSTRAINT FK_EMPL_DPTO FOREIGN KEY
(DEPTO) REFERENCES DEPTOS (CODIGO));
Introducción a SQL y PL/SQL
1-25
26. Creación de Vistas
CREATE OR REPLACE VIEW EMP_DEPTO AS
Select Empleados.Codigo CodEmp,
Empleados.Nombre NomEmp,
Empleados.Salario SalEmp,
Deptos.Nombre Depto
From
Empleados,Deptos
Where
Empleado.Depto = Deptos.Codigo;
Introducción a SQL y PL/SQL
1-26
27. Consultando Datos de una Vista
Select CodEmp,NomEmp,
SalEmp,Depto
From EMP_DEPTO;
CodEmp
NomEmp
SalEmp
Depto
10
Andres Escobar R
10000 Ventas
20
Carlos Velasquez
30
Juan Manuel Rivas
20000 Ventas
40
Jose Juaquin Velez
50000 Recursos Humanos
50
Mario Hernandez
5000 Planeación
1000 Ventas
Introducción a SQL y PL/SQL
1-27
28. Creación y Uso de las Secuencias
CREATE SEQUENCE SEQEMPLEADOS
START WITH 1
INCREMENT BY 1
MAXVALUE 1E27
MINVALUE 1;
Introducción a SQL y PL/SQL
1-28
29. Creación y Uso de Indices
CREATE UNIQUE INDEX IDX_CODEMP ON
EMPLEADOS (CODIGO);
CREATE INDEX IDX_NOMEMP ON
EMPLEADOS (NOMBRE);
Introducción a SQL y PL/SQL
1-29
30. Creacion de Sinonimos
CREATE SYNONYM PEGASO.OBSEMULT FOR
GAS.OBSEMULT@DESA;
CREATE PUBLIC SYNONYM PEGASO.OBSEMULT
FOR GAS.OBSEMULT@DESA;
CREATE PUBLIC DATABASE LINK DESA
CONNECT TO DESA
IDENTIFIED BY ud953_f1
USING 'DESA';
Introducción a SQL y PL/SQL
1-30
34. Instrucción Select
Select *
From Empleados;
Codigo
Nombre
Empleados
#Codigo
Nombre
Salario
Salario
10
Andres Escobar R
10000
20
Carlos Velasquez
5000
30
Juan Manuel Rivas
20000
40
Jose Juaquin Velez
50000
50
Mario Hernandez
1000
Introducción a SQL y PL/SQL
1-34
35. Limitando la Cantidad de Registros
Select *
From Empleados
Where Salario > 10000;
Codigo
Nombre
Salario
30
Juan Manuel Rivas
20000
40
Jose Juaquin Velez
50000
La clausula Where determina la condición de la consulta
Introducción a SQL y PL/SQL
1-35
36. Desplegar Datos de Multiples Tablas
Deptos
#Codigo
Nombre
Codigo
1:n
Tiene
1:1
Pertenece
Empleados
#Codigo
Nombre
Salario
Depto
Nombre
10
Recursos Humanos
20
Ventas
30
Planeación
Introducción a SQL y PL/SQL
1-36
37. Desplegar Datos de Multiples Tablas
Select Empleados.Codigo,
Empleados.Nombre,
Empleados.salario,
Deptos.Nombre Depto
Alias
From
Empleados,Deptos
Where
Empleados.Depto = Deptos.Codigo;
Codigo
Nombre
Salario
Depto
10
Andres Escobar R
10000 Ventas
20
Carlos Velasquez
30
Juan Manuel Rivas
20000 Ventas
40
Jose Juaquin Velez
50000 Recursos Humanos
50
Mario Hernandez
5000 Planeación
1000 Ventas
Introducción a SQL y PL/SQL
1-37
38. Instrucción Order By
Select Empleados.Codigo,
Empleados.Nombre,
Empleados.Salario,
From
Empleados
Order
by Empleados.Salario;
Codigo
Nombre
Salario
Depto
50
Mario Hernandez
1000 Ventas
20
Carlos Velasquez
5000 Planeación
10
Andres Escobar R
10000 Ventas
30
Juan Manuel Rivas
20000 Ventas
40
Jose Juaquin Velez
50000 Recursos Humanos
Introducción a SQL y PL/SQL
1-38
39. Resumen
Instrucciones básicas de SQL para consultar
datos.
–
Select
–
Where
–
Alias
–
Joins
–
Order by
Introducción a SQL y PL/SQL
1-39
42. Insertando Datos (insert)
Insert into Empleados
Values (60,’Jota Mario Valencia’,
3000,10);
Empleados
Codigo
60
Nombre
Jota Mario Valencia
Salario
3000
Introducción a SQL y PL/SQL
1-42
Depto
10
43. Insertando Datos (insert)
Insert into Empleados
(Codigo,Nombre,Salario,Depto)
Values (60,’Jota Mario Valencia’,
3000,10);
Empleados
Codigo
60
Nombre
Jota Mario Valencia
Salario
3000
Introducción a SQL y PL/SQL
1-43
Depto
10
44. Actualizando Datos (update)
Update Empleados
Set Depto = 10;
Codigo
Nombre
Salario
Depto
10
Andres Escobar R
10000
10
20
Carlos Velasquez
5000
10
30
Juan Manuel Rivas
20000
10
40
Jose Juaquin Velez
50000
10
50
Mario Hernandez
1000
10
Introducción a SQL y PL/SQL
1-44
45. Eliminado Datos (delete)
Delete Empleados
Where Codigo = 10;
Codigo
Nombre
20
Carlos Velasquez
30
Salario
Depto
5000
10
Juan Manuel Rivas
20000
10
40
Jose Juaquin Velez
50000
10
50
Mario Hernandez
1000
10
Introducción a SQL y PL/SQL
1-45
50. Conceptos
Usuarios: SYS y SYSTEM
CREATE USER ORLANDOL
IDENTIFIED BY VALUES 'ECE5A72B8C80CBE3’;
Privilegios
- Tablas
- Vistas
- Secuencias
- Procedimientos
- Funciones
- Paquetes
DML (Data Manipulation)
DDL (Data Definition)
Labor de DBA
Introducción a SQL y PL/SQL
1-50
51. Conceptos
Roles: Facilita la administración
–
Roles de Aplicación: Conjunto de privilegios
necesarios para ejecutar la Aplicación.
–
Roles de Usuario: Se crea un role para un grupo de
usuarios con privilegios comunes.
CREATE ROLE ROLGAS;
Introducción a SQL y PL/SQL
1-51
52. Otorgar (Grant) y Revocar (Revoke)
Accesos a los objetos de la Base de Datos
GRANT DELETE, INSERT, SELECT, UPDATE
ON
ACTA TO ROLGAS;
GRANT EXECUTE
ON
PROLEGALIZAR TO JUANCM;
REVOKE DELETE, INSERT, SELECT, UPDATE
ON
ACTA FROM ROLGAS;
Introducción a SQL y PL/SQL
1-52
53. Ejemplo de Uso de Seguridad
Introducción a SQL y PL/SQL
1-53
56. Overview
Declaración de Variables
–
–
NOT NULL
–
%TYPE
–
DEFAULT
%ROWTYPE
Convenciones de Nombres de variables
Asignación de Valores a las variables
Expresiones y Comparaciones
Funciones del Lenguaje
Introducción a SQL y PL/SQL
1-56
57. Declaración de Variables
sbCadena varchar2(50);
nuValor
number (9,2);
dtFecha
date;
blExiste boolean;
nuCodigo Empleados.Codigo%type;
rtEmp
Empleados%rowtype;
nuValor
number(9,2) DEFAULT –1;
sbCadena varchar2(50) NOT NULL := ‘CADENA’;
Introducción a SQL y PL/SQL
1-57
58. Convenciones de Nombres de Variables
sb Cadena
nu Numerico
dt Fecha
bl Booleano
rt Registro
cu Cursores
cn Constante
Introducción a SQL y PL/SQL
1-58
59. Asignación de Valores a las variables
nuValor Empleados.Codigo%type;
...
nuValor := 25
select Codigo
into nuValor
from Empleados
where Codigo = 25;
Introducción a SQL y PL/SQL
1-59
63. Expresiones y Comparaciones
IS NULL
–
BETWEEN
–
IF Variable IS NULL THEN ...
45 BETWEEN 38 AND 44
IN y NOT IN
–
–
WHERE CODIGO IN (2,3,4)
WHERE NOT IN (6,7)
CONCATENAR
–
‘suite’||’case’ ‘suitecase’
Introducción a SQL y PL/SQL
1-63
65. Expresiones y Comparaciones
CASE
select
sysdate fecha, to_number(TO_CHAR(sysdate, 'SS')) Minuto, 'Segundos ' ||
CASE
WHEN (to_number(TO_CHAR(sysdate, 'SS')) IS NULL) THEN 'Nulos'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 0) THEN 'Cero'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 1) THEN 'Uno'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 2) THEN 'Dos'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 3) THEN 'Tres'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 4) THEN 'Cuatro'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 5) THEN 'Cinco'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 6) THEN 'Seis'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 7) THEN 'Siete'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 8) THEN 'Ocho'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 9) THEN 'Nueve'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) = 10) THEN 'Diez'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) > 10 AND
to_number(TO_CHAR(sysdate, 'SS')) < 31) THEN 'entre 11 y 30'
WHEN (to_number(TO_CHAR(sysdate, 'SS')) in
(31,32,33,34,35,36,37,38,39))
THEN 'in (31,32,33,34,35,36,37,38,39)'
ELSE
'entre 40 y 59'
END as Opcion
from dual
Introducción a SQL y PL/SQL
1-65
67. Resumen
Fundamentos básicos de PL/SQL
Declaracion de Variables
Convenciones
Asignación de Valores a Variables
Expresiones y Comparaciones
Funciones del Lenguaje
Introducción a SQL y PL/SQL
1-67
70. Condicionales
IF – THEN
IF condicion THEN
secuencia de instrucciones
END IF;
Ejemplo:
IF codigo = 5 THEN
nuValor := 50000;
END IF;
Introducción a SQL y PL/SQL
1-70
71. Condicionales
IF – THEN – ELSE
IF condicion THEN
secuencia de instrucciones 1;
ELSE
secuencia de instrucciones 2;
END IF;
Ejemplo
IF codigo = 5 THEN
nuValor := 50000;
ELSE
nuValor := 10;
END IF;
Introducción a SQL y PL/SQL
1-71
72. Condicionales
IF – THEN – ELSIF
IF condicion1 THEN
secuencia de instrucciones 1;
ELSIF condicion2 THEN
secuencia de instrucciones 2;
ELSE
secuencia de instrucciones 3;
END IF;
Introducción a SQL y PL/SQL
1-72
74. Iteraciones
WHILE – LOOP
WHILE condicion LOOP
secuencia de instrucciones
END LOOP;
Ejemplo
WHILE total <=25000 LOOP
total := total + 20;
...
END LOOP;
Introducción a SQL y PL/SQL
1-74
75. Iteraciones
FOR – LOOP
FOR contador IN [REVERSE] desde..hasta
LOOP
secuencia de instrucciones;
END LOOP;
Ejemplo:
FOR i IN 1..10 LOOP
...
total := total + (i*10);
END LOOP;
Introducción a SQL y PL/SQL
1-75
77. 8
PL/SQL y su Interacción con Oracle
Introducción a SQL y PL/SQL
1-77
78. Overview
Caracteristicas de PL/SQL
Paso de Parametros a los cursores
Manejo de Cursores
–
–
Implicit
Explicit
Variables tipo cursor
Atributos de los cursores
–
–
–
–
%FOUND
%NOTFOUND
%ISOPEN
%ROWCOUNT
Introducción a SQL y PL/SQL
1-78
79. Caracteristicas de PL/SQL
Soporte de SQL
Soporta Programación Orientada a Objetos
Mejor Perfomance
Portable
Integrado con SQL
Manejo de Seguridad
Introducción a SQL y PL/SQL
1-79
80. Manejo de Cursores
Explicit Cursor
–
Comandos: OPEN, FETCH, CLOSE.
Declaración
DECLARE
CURSOR <Nombre>
[(parametro1,parametro2...)] IS
instrucción SELECT...
Introducción a SQL y PL/SQL
1-80
81. Manejo de Cursores
Declare
cursor cuEmpleados is
select codigo,nombre
from empleados
where salario > 1000;
nuCodigo Empleados.Codigo%type;
sbNombre Empleados.Nombre%type;
Begin
open cuEmpleados;
fetch cuEmpleados into nuCodigo,sbNombre;
...
close cuEmpleados;
End;
Introducción a SQL y PL/SQL
1-81
82. Manejo de Cursores
Implicit Cursor
–
No utilizan las instrucciones OPEN, FETCH y CLOSE.
–
Utilizan Atributos de los Cursores para determinar el
estado del cursor.
Ejemplo:
...
SELECT codigo
INTO nuValor
FROM Empleados;
Introducción a SQL y PL/SQL
1-82
83. Manejo de Cursores
FOR CURSOR
declare
cursor cuEmpleados is
select codigo,nombre
from
Empleados
where Salario > 1000;
begin
For rtEmp in cuEmpleados loop
...
rtEmp.Codigo ...
rtEmp.Nombre ...
end loop;
end;
Introducción a SQL y PL/SQL
1-83
84. Paso de Parametros a Cursores
DECLARE
CURSOR cuEmpleados (nuSalario number) is
SELECT codigo,nombre
FROM
Empleados
WHERE
Salario > nuSalario;
Introducción a SQL y PL/SQL
1-84
85. Variables tipo cursor
DECLARE
CURSOR cuEmpleados is
SELECT *
FROM
Empleados;
rtEmp cuEmpleados%rowtype;
BEGIN
OPEN cuEmpleados
FETCH cuEmpleados into rtEmp;
..
CLOSE cuEmpleados;
Introducción a SQL y PL/SQL
1-85
86. Atributos de los Cursores
%FOUND: Es verdadero si se encontraron registros
del cursor.
%NOTFOUND: Es verdadero si NO se encontraron
registros del cursor.
%ISOPEN: Es verdadero si el cursor está abierto.
%ROWCOUNT: Devuleve la cantidad de registros que
retorna el cursor.
Introducción a SQL y PL/SQL
1-86
87. Resumen
Uso de SQL y PL/SQL
Uso de los Cursores
–
–
Implicit
Explicit
FOR CURSOR
Parametros de los cursores
Atributos de los cursores
Introducción a SQL y PL/SQL
1-87
90. Instrucción Exception
En Oracle las Advertencias o Mensajes de Error son
llamados Excepciones (Exception).
Permite capturar los errores del
sistema y mantener un control
sobre las aplicaciones.
Pueden ser predefinidas o
creadas por el programador
Introducción a SQL y PL/SQL
1-90
92. User Define Exception
Declaración
DECLARE null_salary EXCEPTION;
Inicializa la variable de Error
PRAGMA EXCEPTION_INIT (null_salary,-60);
DECLARE
null_salary EXCEPTION;
PRAGMA EXCEPTION_INIT (null_salary,-60);
BEGIN
... RAISE null_salary;
EXCEPTION
WHEN null_salary THEN
-- Manejo del Error
Introducción a SQL y PL/SQL
1-92
93. Mensajes de Error
Utilizacion de Tablas de Mensaje
Funcion que retorne Mensaje Ej: fsbMensaje();
Mensajes Oracle SQLERRM
Mensajes ORA-XX
Introducción a SQL y PL/SQL
1-93
97. SubProgramas
Funciones
CREATE OR REPLACE
FUNCTION nombre (parametro1,parametro2)
return <tipo de dato> IS|AS
declaraciones locales;
BEGIN
-- Instrucciones
EXCEPTION
-- Manejo de Errores
END;
Introducción a SQL y PL/SQL
1-97
98. SubProgramas
Funciones (Uso de RETURN)
CREATE OR REPLACE
FUNCTION balance (cuenta number) RETURN number
IS
declaraciones locales;
BEGIN
-- Instrucciones
return nuValor;
EXCEPTION
-- Manejo de Errores
END;
Introducción a SQL y PL/SQL
1-98
99. SubProgramas
Procedimientos: Ejecuta Acción especifica
CREATE OR REPLACE
PROCEDURE inserta_tabla IS
declaraciones locales;
BEGIN
-- Instrucciones
EXCEPTION
-- Manejo de Errores
END;
Introducción a SQL y PL/SQL
1-99