Tutorial
Programación en Bases de Datos
Profesor
Dr. Herman Aguilar Mayo
herman_aguilar1@hotmail.com
www.hermanaguilar1.blogspot.com
Temario
Fundamentos
Funciones y Procedimientos
Paquetes y disparadores
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Temario
Fundamentos
• Introducción
• SQL dentro de PL/SQL
• Diferencias y similitudes entre lenguajes de propósito
general y lenguajes de Base de Datos
• Elementos del lenguaje
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Temario
Funciones y Procedimientos
• Introducción
• Estructura
• Desarrollo de procedimientos
• Parámetros
• Eliminación de procedimientos
• Cursores
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Temario
Paquetes y disparadores
• Paquetes
• Introducción
• Creación de paquetes
• Disparadores
• Introducción
• Habilitar y deshabilitar disparadores
• Administración de disparadores
• Creación de disparadores
• Disparadores Before
• Disparadores ASer
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Polí;cas
Evaluación
• 3 parciales (30% c/u)
• Par;cipación (10%)
• Exentos >=8.0 sobre parciales
Asistencia
• Reglamento
Laboratorio
• Cubrir cuota
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Ejercicio
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Ejercicio
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Dato o Valor
Conjunto de caracteres con algún significado, pueden ser
numéricos, alfabé;cos, o alfanuméricos.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Información
Es un conjunto ordenado de datos los cuales son manejados
según la necesidad del usuario, para que un conjunto de datos
pueda ser procesado eficientemente y pueda dar lugar a
información, primero se debe guardar lógicamente en archivos.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Campo
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Registro
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Archivo o Tabla
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Base de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Base de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Base de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Marco Tecnológico
Bases de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Variable
Son espacios reservados en la memoria que, como su nombre
indica, pueden cambiar de contenido a lo largo de la ejecución
de un programa.
La nomenclatura es la misma en Oracle, que en cualquier
lengua de programación
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Comentarios
-- para una línea /* … */ bloque de líneas
Sintaxis
Palabras reservadas Obligatorias circunstanciales Opcionales
(): especificación
[]: opcional
| alguna de las opciones
‘ Apostrofo delimitador de cadenas de caracteres.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Conversión Implícita
10 + ‘5’ = ? 15
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Tipos de Datos
NUMBER (Numérico): Almacena números enteros o de punto
flotante, precisión máxima de 36.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Tipos de Datos
Varchar2 (Carácter de longitud variable): Almacena datos de gpo
carácter empleando sólo la cangdad necesaria aún cuando la
longitud máxima sea mayor. Máximo 4000
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Tipos de Datos
Date (longitud fija): Almacena fechas incluyendo año, mes, día,
hora, minutos y segundos. Se manejan como cadenas con
almacenamiento interno propio. Se puede hacer operaciones
sobre ellas.
-- Date
Fecha date;
/* Indica que puede almacenar fechas */
’05/02/2013’ +1 = ? ‘06/02/2013’
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operaciones ¿Cuáles conoces?
Aritmé;cos
Boleanas
Lógicas
Cadenas
Fechas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Aritmé;cos
+ Suma
- Resta
* Mul;plicación
/ División
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Aritmé;cos con valores nulos
10 + 0 = ? 10
10 + null = ? null
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Relacionales
= Igual
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
<> != Diferente o dis;nto
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Otros Relacionales en Oracle y Bases de Datos
Like
Determina si una cadena de caracteres coincide con un patrón
especificado.
Se usa % para el patrón
Valor like %patron%
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Otros Relacionales en Oracle y Bases de Datos
IN
Permite determinar sin un valor está en una lista.
Calificacion in (6,7,8,9,10)
Más adelante se verá
Calificacion in (query)
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Otros Relacionales en Oracle y Bases de Datos
Between
Permite determinar sin un valor está en un rango.
Calificacion between 6 and 10
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Otros Relacionales en Oracle y Bases de Datos
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Lógicos
And
Or
Not
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Cadenas
‘Juan’||’López’ ? ‘JuanLópez’
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Operadores
Asignación
= en contexto de sql
:= en contexto de pl/sql
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Conceptos Básicos en Oracle
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Tip
¿En programación cuándo no usar punto y
coma?
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
¿Cuáles estructuras conoces?
IF
For
While
Loop
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis IF
if condicion then
Sentencias
[else
Sentencias]
end if;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis IF - Ejemplo
if x>5 then
z := z +1 ;
y := z/2;
end if;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis IF - Ejemplo
if x>5 then
z := z +1 ;
y := z/2;
else
z := z +1 ;
y := z/2;
end if;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis For
for variable in valor_inicial..valor_final loop
[reverse]
sentencias;
end loop;
Notas:
La variable de control no se puede cambiar
El incremento es unitario
Usando reverse el ciclo se invierte
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis For - Ejemplo
for i in 1..10 loop
z := z+ i * 20;
end loop;
Notas:
Variable de control i
Valor inicial 1
Valor final 10
Ciclo del uno hasta 10
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis For - Ejemplo
for i in n..10 loop
z := z+ i * 20;
end loop;
Notas:
Variable de control i
Valor inicial n
Valor final 10
Ciclo desde n hasta 10
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis For - Ejemplo
for i in n..m loop
z := z+ i * 20;
end loop;
Notas:
Variable de control i
Valor inicial n
Valor final m
Ciclo desde n hasta m
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis For - Ejemplo
for i in reverse n..m loop
z := z+ i * 20;
end loop;
Notas:
Variable de control i
Valor inicial n
Valor final m
Ciclo en reversa desde m hasta el n
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis While
while condicion loop
sentencias;
end loop;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis While - Ejemplo
x:= 1;
while x < =10 loop
x := x +2;
end loop;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis loop
Loop
sentencias;
exit when condicion;
sentencias;
end loop;
Notas:
Puede haber varios exit when
El ciclo termina cuando la condición sea verdadera y
no se ejecutaran las sentencias entre exit y end loop
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis loop - Ejemplo
x := 1;
Loop
exit when x >10;
x := x +2;
end loop;
¿A que ciclo tradicional se parece ?
While
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis loop - Ejemplo
x := 1;
Loop
x := x +2;
exit when x >10;
end loop;
¿A que ciclo tradicional se parece ?
Do While
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Estructuras de Control
Sintaxis loop - Ejemplo
x := 1;
Loop
x := x +2;
exit when x >10;
y : = x *2;
exit when y >15;
z : = x +1;
end loop;
¿A que ciclo tradicional se parece ?
Ninguno
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones
Función?
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Predefinidas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Predefinidas
Las podemos clasificar por su ;po de datos
Numéricas
Varchar
Date
Nulos
Otras
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Predefinidas
Sintaxis para usar una función
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Predefinidas
¿Cómo usarlas?
X := suma(5,10); P:=promedio(matricula);
Prin}(”%d”,suma(5,10)); P:=precio(producto_id);
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Predefinidas
¿Cómo usarlas?
MATRICULA PROMEDIO
1 8.85
2 9.0
3 6.5
P:=promedio(matricula);
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Length(‘Programación’) ?
12
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Varchar
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Numéricas
ROUND(8.239,2) ?
8.24
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Numéricas
Trunc(8.239) ?
8
Trunc(8.239,2) ?
8.23
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Numéricas
Floor(8) ?
8
Floor(8.99) ?
8
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Numéricas
Ceil(8.99) ?
9
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones Numéricas
mod(10,null)
null
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Otras Funciones Numéricas
Función Descripción
POWER(valor,exponente) Eleva el valor al exponente indicado
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Fecha
Add_months(’28/02/2013’,36)
’29/02/2016’
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Fecha
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Fecha
Round( fecha [, formato]) Redondea una fecha a un formato.
‘YEAR’ año más cercano ‘HH24’ hora más cercano
‘MONTH’ mes más cercano ‘DAY’ día más cercano (default)
Round (‘01/07/2013 15:23:32', ‘YEAR’) ’01/01/2014’
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Fecha
Trunc( fecha [, formato]) Corta una fecha a un formato.
‘YEAR’ año actual ‘HH24’ hora actual
‘MONTH’ mes actual ‘DAY’ día actual (default)
Trunc(‘01/07/2013 15:23:32', ‘YEAR’) ’01/01/2013’
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Nulos
NVl(valor1, valor2) Regresa valor1 si es no nulo, si no regresa valor2.
Nvl( 0 , 0) Nvl( null , 0)
0 0
Nvl( 0 , null) Nvl( null , null)
0 null
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Conversión
To_char( valor, ‘Formato’) Convierte el valor a varchar según el
formato especificado.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Funciones de Conversión
Formato Descripción Formato Descripción
YY Año en 2 dígitos DDD Día del año en 3 dígitos
MON Las tres primeras letras del SSSSS Segundos transcurridos desde la medianoche
nombre del mes
MONTH Nombre completo del mes AM / PM Indicador AM/PM
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Sintaxis
create or replace func;on nombre
(parametro1 in ;po_dato, parametro2 in ;po_dato, parametro in ;po_dato ) n
return ;po_dato is
[declaración de variables]
begin
sentencias;
return valor;
end;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo
create or replace func;on suma (p_x in number, p_y in number ) return number is
v_z number :=0;
begin
v_z := p_x + p_y;
return v_z;
end;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo SQL Developer
Nueva función
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo SQL Developer
Llenando la pantalla
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo SQL Developer
Pestaña DDL
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo SQL Developer
¿Qué está mal?
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejemplo SQL Developer
Compilación correcta
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Funciones
Ejercicios
Especificación Solución Test Resultado
Suma(x,y) x + y Select suma(5,10) 15
From dual
Par(n) 1 si n%2 es igual a cero, 0 Select par(5) From dual 0
0-no 1-si en otro caso Select par(6) From dual 1
Factorial (n) n*(n-1)*(n-2)*...2*1 Select factorial(5) 120
From dual
Sumatoria(n) n+(n-1)+(n-2)+...2+1 Select sumatoria(5) 15
From dual
Primo(n) Es primo sí y sólo sí n Select primo(5) From dual 1
0-no 1-si solamente es divisible
entre el mismo y la unidad Select primo(6) From dual 0
DML Select
Sentencia para recuperar los datos de las tablas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Select
Query
Consulta
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Sintaxis SqlServer
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Sintaxis MySql
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Sintaxis Oracle
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select
Consultas Sencillas
De una tabla
Sin agrupaciones
Sin operaciones relacionales
Consultas Complejas
De varias tabla
Con agrupaciones
Con operaciones relacionales
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
¿Cuál es la consulta de la siguiente tabla?
NOMBRE APEPAT APEMAT
LUISA HERNÁNDEZ HERNÁNDEZ
ALEJANDRA LOPEZ REYES
ANDRES EDUARDO CHAN MAGAÑA
ROSA MARÍA RUBIO DÍAZ
DANIEL MATA HERNÁNDEZ
MARIANA ÁVALOS GARCÍA
SILVIA GIL ÁLVAREZ
CARMELA ZURITA MARTÍNEZ
HÉCTOR ALVARADO PÉREZ
JESÚS EDUARDO VELEZ GUTIÉRREZ
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
¿Cuál es la consulta de la siguiente tabla?
NOMBRE
Daniel Mata Hernández
Luisa Hernández Hernández
Jesús Eduardo Velez Gugérrez
Rosa María Rubio Díaz
Alejandra Lopez Reyes
Mariana Ávalos García
Silvia Gil Álvarez
Carmela Zurita Mar~nez
Héctor Alvarado Pérez
Andres Eduardo Chan Magaña
select initcap(nombre||' '||apepat||' '||apemat) as nombre
from personas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
¿Cuál es la consulta de la siguiente tabla?
NOMBRE APEPAT APEMAT
ANDRES EDUARDO CHAN MAGAÑA
ROSA MARÍA RUBIO DÍAZ
DANIEL MATA HERNÁNDEZ
CARMELA ZURITA MARTÍNEZ
HÉCTOR ALVARADO PÉREZ
JESÚS EDUARDO VELEZ GUTIÉRREZ
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
¿Cuál sería el resultado de la siguiente consulta?
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Sencillas
¿Cuál sería el resultado de la siguiente consulta?
Select nombre
from municipios
Where nombre like ‘%A%A%’;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Sintaxis múl;ples tablas
Select {*|valores }
From tabla1 [alias], tabla2 [alias],…, tablaN [alias]
[Where Condicion]
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Al consultar de varias tablas el resultado de la proyección
(registros) es:
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Eliminando producto cartesiano ¿Cuál es el registro correcto?
ESTADO_ID NOMBRE MUNICIPIO_ID NOMBRE ESTADO_ID
5 COAHUILA 2 CÁRDENAS 27
6 COLIMA 2 CÁRDENAS 27
7 CHIAPAS 2 CÁRDENAS 27
8 CHIHUAHUA 2 CÁRDENAS 27
9 DISTRITO FEDERAL 2 CÁRDENAS 27
16 MICHOACÁN 2 CÁRDENAS 27
25 SINALOA 2 CÁRDENAS 27
26 SONORA 2 CÁRDENAS 27
27 TABASCO 2 CÁRDENAS 27
28 TAMAULIPAS 2 CÁRDENAS 27
29 TLAXCALA 2 CÁRDENAS 27
30 VERACRUZ 2 CÁRDENAS 27
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Eliminando producto cartesiano ¿Cuál es el registro correcto?
ESTADO_ID NOMBRE MUNICIPIO_ID NOMBRE ESTADO_ID
5 COAHUILA 158 PICHUCALCO 7
6 COLIMA 158 PICHUCALCO 7
7 CHIAPAS 158 PICHUCALCO 7
8 CHIHUAHUA 158 PICHUCALCO 7
9 DISTRITO FEDERAL 158 PICHUCALCO 7
16 MICHOACÁN 158 PICHUCALCO 7
25 SINALOA 158 PICHUCALCO 7
26 SONORA 158 PICHUCALCO 7
27 TABASCO 158 PICHUCALCO 7
28 TAMAULIPAS 158 PICHUCALCO 7
29 TLAXCALA 158 PICHUCALCO 7
30 VERACRUZ 158 PICHUCALCO 7
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Eliminando producto cartesiano ¿Cuál sería la condición?
Select *
From estados, municipios
Where ?
estados.estado_id = municipios.estado_id
Usando alias
Select *
From estados e, municipios m
Where e.estado_id = m.estado_id
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Eliminando producto cartesiano, observando el modelo
select initcap(p.nombre||' '||p.apepat||' '||p.apemat) as nombre,
e.nombre as estado
, colonias c, municipios m
from personas p, estados e
Where p.colonia_id = c.colonia_id
And c.municipio_id = m.municipio_id
And m.estado_id = e.estado_id
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
Select - Complejas
Conclusión para eliminar producto cartesiano
Cuando las llaves que relacionan las tablas sea simples podemos
recordar los siguiente:
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
PL con SQL
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
SELECT – INTO
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
SELECT - INTO
Sintaxis
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
SELECT - INTO
Ejemplo
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
FOR - SELECT
R e c o r r e c o n u n c i c l o f o r
automá;camente la tabla de salida.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
FOR - SELECT
Sintaxis
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
FOR - SELECT
Ejemplo
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Procedimiento
Sintaxis
create or replace procedure nombre
(parametro1 in ;po_dato, parametro2 in ;po_dato, parametro in ;po_dato ) is n
--declaración de variables
begin
sentencias;
end;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Procedimiento
Ejemplo
create or replace procedure registrar_venta_producto
(p_venta_id in number, p_producto_id in number,
p_precio in number, p_can;dad in number, p_descuento in number ) is
v_existencia number :=0;
Begin
--validar existencia
select p.existencia into v_existencia
from productos p where p.producto_id = p_producto_id;
if v_existencia < p_can;dad then
raise_applica;on_error(-20000,'Existencia no válida');
end if;
--registrar venta
insert into ventas_productos (venta_id, producto_id, precio, can;dad, descuento) values
(p_venta_id, p_producto_id, p_precio, p_can;dad, p_descuento);
--actualizar existencia
update productos set existencia = existencia - p_can;dad
where producto_id = p_producto_id;
end;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
Definición
Es un bloque PL/SQL asociado a una tabla,
que se ejecuta automá;camente en una
determinada operación DML (INSERT,
UPDATE o DELETE) sobre dicha tabla.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
Configuración
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
Sintaxis
CREATE OR REPLACE TRIGGER nombre
{BEFORE|AFTER} {DELETE OR INSERT OR UPDATE }
ON tabla FOR EACH ROW
DECLARE -- variables
BEGIN
Sentencias;
END;
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
Ejemplo
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
U;lización de :old y :new
Dentro del ambito de un trigger disponemos de las
variables OLD y NEW . Estas variables se u;lizan del
mismo modo que cualquier otra variable PL/SQL, con la
salvedad de que no es necesario declararlas, con;enen
una copia del registro antes (OLD) y después(NEW) de la
acción que ha ejecutado el trigger. U;lizando esta
variable podemos acceder a los datos que se están
insertando, actualizando o borrando.
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
U;lización de :old y :new
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Trigger
U;lización de predicados : INSERTING, UPDATING y DELETING
raise_applica;on_error(numero,mensaje);
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Provocar un error
Ejemplo
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo
Bases de Datos
PL / SQL
Modelo Ventas Tercer Parcial
Tutorial de Programación en Bases de Datos UJAT - DAIS Profesor Dr. Herman Aguilar Mayo