Professional Documents
Culture Documents
Tutorial Programacin en Bases de Datos Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com
UJAT - DAIS
Presentacin
UJAT - DAIS
Presentacin
Objetivo 2004: Conocer los lenguajes de programacin empotrados en las bases de datos, que permitan la creacin de procedimientos y rutinas almacenados. Objetivo 2010: Conocer e implementar procedimientos almacenados en un lenguaje de programacin de bases de datos. Permitiendo que las reglas del negocio de un sistema para una organizacin se localicen dentro del servidor de bases de datos.
UJAT - DAIS
Arquitectura
3 Capas 2 Capas usando BD
UJAT - DAIS
Temario
UJAT - DAIS
Polticas Evaluacin 3 parciales (30% c/u) Participacin (10%) Exentos >=8.0 sobre parciales
Asistencia Reglamento
Laboratorio Cubrir cuota Respeto a la clase y a los compaeros
UJAT - DAIS
Ejercicio
UJAT - DAIS
Ejercicio
Realizar una funcin en C / Java que reciba dos nmeros y regrese la suma.
UJAT - DAIS
Modelo de Base de Datos a utilizar sobre un sistema bsico de control escolar Nombre de tablas plural Nombre de campos singular Restricciones (PK, UK, FK, NN, Check, TD) Normalizacin (1F, 2FN, 3FN)
UJAT - DAIS
Archivo de Excel con el contenido inicial de cada una de las tablas que conforman la Base de Datos
UJAT - DAIS
Script que contiene las sentencias para que una vez instalada la base de datos, crear y llenar las tablas con datos con sus restricciones.
UJAT - DAIS
Instalador (setup.exe) de la Base de Datos Oracle Express Edition versin 11 para Windows 32.
UJAT - DAIS
UJAT - DAIS
Entorno de desarrollo para Java Si ya cuenta con la herramienta en otra versin, con esa puede trabajar. Aqu se vern buenas prcticas de programacin como nomenclaturas, herencia y encapsulacin. Ambiente Windows.
UJAT - DAIS
Empezando instalacin
UJAT - DAIS
Ubicacin de instalacin
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Conectando SqlDeveloper
Puedes seleccionar las opciones que quieras y darle aceptar o cancelar, esto es para que desde el explorador de Windows el Sistema Operativo reconozca que son archivos que puede abrir con SqlDeveloper
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Llenar los datos Nombre de Conexin: puede ser cualquiera (te sugiero system) Usuario: System (s la Base de Datos es nueva) Contrasea: La que le colocaste cuando instalaste la BD
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Se puede observar que existen muchas tablas y que son para la administracin de la base de datos.
UJAT - DAIS
Conectando Creando la conexin Para una mejor organizacin NO se debe de trabajar con el usuario System, para ello haremos: Conectarse como System Crear un usuario nuevo Darle permisos al nuevo usuario Crear una nueva conexin con el nuevo usuario Trabajar con el nuevo usuario.
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Conectando Creando la conexin Crear la nueva conexin con los datos del nuevo usuario.
UJAT - DAIS
Dato o Valor
Conjunto de caracteres con algn significado, pueden ser numricos, alfabticos, o alfanumricos.
UJAT - DAIS
Informacin
Es un conjunto ordenado de datos los cuales son manejados segn la necesidad del usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a informacin, primero se debe guardar lgicamente en archivos.
UJAT - DAIS
Campo
Es la unidad ms pequea (atmica) a la cual uno puede referirse en un programa. Desde el punto de vista del programador representa una caracterstica de un individuo u objeto.
Ejemplos:
Matrcula Marca Color
Raza
Existencia
Fecha
Nombres Nombre
UJAT - DAIS
Registro
Coleccin de campos de iguales o de diferentes tipos. Desde el punto de vista del programador representa una entidad u objeto.
Ejemplos:
Alumno Marca Color
Boleto
Tienda
Libro
UJAT - DAIS
Archivo o Tabla
Coleccin de registros almacenados siguiendo una estructura homognea.
Ejemplos:
5 COAHUILA 6 COLIMA 7 CHIAPAS COMPUTADORA TELEVISOR LCD TELEVISOR VIDEOCAMARA MINICOMPONENTE 6990 5795 1995 2790 1995
ANDRES EDUARDO CHAN ROSA MARA RUBIO DANIEL MATA MARIANA VALOS
UJAT - DAIS
Base de Datos
Es una coleccin de archivos interrelacionados. Creados con un DBMS. Una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales son Software DBMS Los datos Personal encargado del manejo del sistema.
Prueba ACID
UJAT - DAIS
Base de Datos
UJAT - DAIS
Base de Datos
UJAT - DAIS
SQL ?
Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas. Una de sus caractersticas es el manejo del lgebra y el clculo relacional que permiten efectuar consultas con el fin de recuperar de forma sencilla informacin de inters de bases de datos, as como hacer cambios en ella.
UJAT - DAIS
SQL Historia
Los orgenes del SQL estn ligados a los de las bases de datos relacionales. En 1970 E. F. Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el clculo de predicados. Basndose en estas ideas, los laboratorios de IBM definen el lenguaje SEQUEL (Structured English Query Language) que ms tarde sera ampliamente implementado por el sistema de gestin de bases de datos (SGBD) experimental System R, desarrollado en 1977 tambin por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial.
UJAT - DAIS
SQL Historia
El SEQUEL terminara siendo el predecesor de SQL, siendo este una versin evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de gestin de bases de datos relacionales surgidos en los aos siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versin estndar de este lenguaje, el "SQL-86" o "SQL1". Al ao siguiente este estndar es tambin adoptado por la ISO.
UJAT - DAIS
SQL Historia
Sin embargo, este primer estndar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definicin de almacenamiento que se consider suprimirlas. As que, en 1992, se lanz un nuevo estndar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".
UJAT - DAIS
SQL Historia
En la actualidad el SQL es el estndar de facto de la inmensa mayora de los SGBD comerciales, aunque la diversidad de aadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estndar SQL-92 es general y muy amplio.
UJAT - DAIS
Categoras de SQL ? DDL: Data Definition Language Lenguaje de Definicin de Datos Create Alter Drop
UJAT - DAIS
Categoras de SQL ? DML: Data Manipulation Language Lenguaje de Manipulacin de Datos Insert Update Delete Select
UJAT - DAIS
Categoras de SQL ? DCL: Data Control Language Lenguaje de Control de Datos Grant Revoke
UJAT - DAIS
Categoras de SQL ? TCL: Transaction Control Language Lenguaje de Control de Transacciones Commit Rollback Save point Set Transaction
UJAT - DAIS
Variable
Son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecucin de un programa. La nomenclatura es la misma en Oracle, que en cualquier lengua de programacin
UJAT - DAIS
Comentarios
-- para una lnea /* */ bloque de lneas
Sintaxis Palabras reservadas Obligatorias circunstanciales Opcionales (): especificacin []: opcional | alguna de las opciones Apostrofo delimitador de cadenas de caracteres.
UJAT - DAIS
Conversin Implcita
10 + 5 = ? 15
UJAT - DAIS
Tipos de Datos
NUMBER (Numrico): Almacena nmeros enteros o de punto flotante, precisin mxima de 36.
-- NUMBER [(precisin, escala)] Saldo NUMBER(16,2); /* Indica que puede almacenar un valor numrico de 16 posiciones, 2 de ellas decimales. Es decir, 14 enteros y dos decimales */
UJAT - DAIS
Tipos de Datos
Varchar2 (Carcter de longitud variable): Almacena datos de tipo carcter empleando slo la cantidad necesaria an cuando la longitud mxima sea mayor. Mximo 4000 -- VARCHAR2 (longitud mxima) nombre VARCHAR2(20); /* Indica que puede almacenar valores alfanumricos de hasta 20 posiciones */ /* Cuando la longitud de los datos sea menor de 20 no se rellena con blancos */ JUAN ANTONIO
Tutorial de Programacin en Bases de Datos
JUAN ANTONIO
UJAT - DAIS
Tipos de Datos
Date (longitud fija): Almacena fechas incluyendo ao, mes, da, 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
05/02/2013 +1 = ?
05/feb/2013 14:22:55
06/02/2013
UJAT - DAIS
UJAT - DAIS
Operadores
Aritmticos + * / Suma Resta Multiplicacin Divisin
Nota: el residuo est como funcin Usar parntesis para alterar la precedencia de los operadores
UJAT - DAIS
Operadores
Aritmticos con valores nulos Valor null en base de datos significa ausencia de valor o que no est definido. 10 + 0 = ? 10
10 + null = ? null
UJAT - DAIS
Operadores
Relacionales = > >= < <= <> Igual Mayor que Mayor o igual que Menor que Menor o igual que != Diferente o distinto
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Like
Determina si una cadena de caracteres coincide con un patrn especificado.
UJAT - DAIS
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) Ms adelante se ver
Calificacion in (query)
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Between
Permite determinar sin un valor est en un rango. Calificacion between 6 and 10
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Is null determina si un valor no est definido marca is null marca is not null
UJAT - DAIS
Operadores
Lgicos And Or Not
UJAT - DAIS
Operadores
Cadenas || une dos valores de tipo cadena
Juan||Lpez ?
JuanLpez
UJAT - DAIS
Operadores
Asignacin = en contexto de sql
:= en contexto de pl/sql
UJAT - DAIS
Qu es una condicin?
UJAT - DAIS
UJAT - DAIS
Create Table tabla ( campo1 tipo_dato(l,p) [default valor] [not null], campo2 tipo_dato(l,p) [default valor] [not null], . . campoN tipo_dato(l,p) [default valor] [not null] ) Nota: se pueden crear las restricciones, pero se harn con instrucciones alter.
UJAT - DAIS
Agregar campo alter table tabla add campo tipo_dato(l,p) [default valor] [not null] ; Quitar campo alter table tabla drop column campo; Renombrar campo alter table tabla rename column campo to nuevo;
Modificar campo (tipo de datos y precisin) alter table tabla modify tipo_dato(l,p);
UJAT - DAIS
Primary Key ? Identifica de manera nica a un registro dentro de una tabla. Cules son las dos propiedades? nico Not null
UJAT - DAIS
Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS TABASCO
Nombre
Agregar (8,TABASCO)
Ya existe la llave 8 en la tabla? No, entonces
UJAT - DAIS
Estado_id
5 6 7 6 COAHUILA COLIMA CHIAPAS
Nombre
NUEVO LEN
UJAT - DAIS
Estado_id
5 6 7 7 COAHUILA COLIMA CHIAPAS
Nombre
Error integridad
de
UJAT - DAIS
UJAT - DAIS
No fue elegida como PK Se usa para evitar duplicados Puede ser null
alter table tabla add constraint nombre unique (llave); Cmo hace la base de datos la validacin?
UJAT - DAIS
Al definirla, la base de datos garantiza que la llave (FK) exista en la otra tabla.
alter table tabla add constraint nombre foreign key (llave) References tabla_referencia (llave);
UJAT - DAIS
1 2 3 4
8 7 8 8
6 7 8
Si, entonces
1 2 3 6
8 7 8 15
6 7 8
Error integridad
de
No, entonces
Check ?
Condicin que debe de cumplirse a nivel registro
Al definirla, la base de datos garantiza que todos los registro de la tabla cumplan la condicin.
alter table tabla add constraint nombre check (condicion);
UJAT - DAIS
UJAT - DAIS
En la tabla personas los campos apepat y apemat pueden ser nulos, Como se puede valirdar que tenga ambos o alguno de los dos?
Alter table personas add constraint personas_ap_am_nn_chk Check (apepat is not null or apemat is not null);
UJAT - DAIS
UJAT - DAIS
DML
Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com
DML?
Data Manipulation language
UJAT - DAIS
UJAT - DAIS
Qu validaciones hace la base de datos para alterar el estado de la base de datos? PK UK FK Check NN TD
permitir
UJAT - DAIS
Inserta
UJAT - DAIS
Bases de Datos Sentencia Insert Sintaxis Insert into tabla ( campo1, campo2, , campoN ) values ( valor1 , valor2 , , valorN ) ; Debe de haber correspondencia entre los campos y los valores ? N campos = N valores Campo X y valor X mismo TD
Cules son los campos mnimos a insertar en una tabla? No nulos u obligatorios
UJAT - DAIS
Bases de Datos Sentencia Insert Ejercicios Insertar un registro de cada tabla, segn las tablas en Excel
UJAT - DAIS
Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS TABASCO
Nombre
Si, entonces
UJAT - DAIS
Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS null
Nombre
No, entonces
UJAT - DAIS
Bases de Datos Sentencia Insert S la base de datos est vaca, en cules tablas se pueden insertar registros ? Estados Conclusin ? Marcas Lneas Personas
Son las tablas que no tiene llaves forneas o que no son obligatorias Regularmente son catlogos.
UJAT - DAIS
Bases de Datos Sentencia Insert Cul es la tabla en la que se insertan registros a lo ltimo?
Ventas_productos Conclusin ?
Es la tabla que tiene llave forneas y que no est siendo referenciada Regularmente son de produccin.
UJAT - DAIS
s de una tabla
V V F V
Se puede actualizar todos los campos o los campos que se deseen Slo se actualizan los registros que cumplan una condicin
Bases de Datos Sentencia Update Sintaxis Update tabla set campo1 = valor1, campo2 = valor2, campoN = valorN [where condicion ]; S se omite la condicin se actualizan todos los registros
UJAT - DAIS
UJAT - DAIS
1 2 3 4
8 7 8 8
6 7 8
Si, entonces
UJAT - DAIS
1 2 3 4
8 7 8 8
6 7 8
UJAT - DAIS
1 2 3 4
8 7 8 8
6 8 7 8 8
No, entonces
UJAT - DAIS
Bases de Datos Sentencia Update Debido a que ya paso la temporada decembrina y se cuenta con sobre inventario, los precios de electrnica bajaran un 15% Se puede realizar en una sola sentencia? Cul sera? Update productos set precio = precio * 0.85 Where linea_id = 1;
UJAT - DAIS
s de una tabla
V V F V
UJAT - DAIS
Bases de Datos Sentencia Delete Sintaxis Delete from tabla [where condicion ];
UJAT - DAIS
UJAT - DAIS
1 2 2 3 3 4 4
8 7 7 8 8 8
6 7 8
Si, entonces
UJAT - DAIS
1 2 3 4
8 7 8 8
6 7 8
UJAT - DAIS
1 2 3 4
8 7 8 8
6 7 8
No, entonces
UJAT - DAIS
PK
UK FK Check NN TD Sintaxis
X X X X X
Siempre y cuando este involucrada la restriccin
UJAT - DAIS
Universidad Jurez Autnoma de Tabasco Divisin Acadmica de Informtica y Sistemas Tutorial Programacin en Bases de Datos Parte III
Funciones Predefinidas
Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com
Funcin?
Subprograma que realiza operaciones y que regresa un valor
Elementos o caractersticas? Nombre Entrada (lista de parmetros) Sentencias Tipo de datos a regresar
Salida (un valor)
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
UJAT - DAIS
Bases de Datos Funciones Predefinidas En bases de datos para las funciones hay que tener en cuenta:
Las funciones se almacenan dentro de la base de datos. No se requiere import o include. Una vez creadas ya se puede usar No se tiene acceso a dispositivos E/S
UJAT - DAIS
Bases de Datos Funciones Predefinidas Las podemos clasificar por su tipo de datos
Numricas
Varchar Date Nulos Otras
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
MATRICULA 1 2 3
PROMEDIO
UJAT - DAIS
Lower(texto)
Upper(texto)
Initcap(texto)
Convierte un texto a palabras capital initcap(Programacin en Bases de Datos) ? Programacin En Bases De Datos
UJAT - DAIS
RTrim(texto)
Elimina espacios por la derecha rtrim( Programacin en Bases de Datos ) ? Programacin en Bases de Datos
Trim(texto)
Elimina espacios por ambos lados trim( Programacin en Bases de Datos ) ? Programacin en Bases de Datos
UJAT - DAIS
SubStr(texto,i[, n])
posicion . Si
n partir de la
Substr(Programacin en Bases de Datos,5,3) ? ram Substr(Programacin en Bases de Datos,1) ? Programacin en Bases de Datos Substr(Programacin en Bases de Datos,26,30) ? Datos
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Length(texto)
UJAT - DAIS
texto,
6
instr(Programacin en Bases de Datos,a,7) ? 8 instr(Programacin en Bases de Datos,a,7,3) ?
27
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Replace(texto,patron, reemplazo)
UJAT - DAIS
la
por la
UJAT - DAIS
8.24
UJAT - DAIS
Trunc(8.239) ? 8 Trunc(8.239,2) ?
8.23
UJAT - DAIS
Floor(n )
Floor(8.239) ?
Floor(8) ?
8
Floor(8.99) ?
UJAT - DAIS
Ceil(n )
Floor(8.239) ?
9
Floor(8) ?
8
Floor(8.99) ?
UJAT - DAIS
Mod(n1,n2 )
mod(10,2) ?
0
mod(10,3) ?
1
mod(10,null)
null
UJAT - DAIS
Descripcin
Eleva el valor al exponente indicado Calcula la raz cuadrada de n Devuelve 1 si n es positivo, cero si vale cero y -1 si es negativo Calcula el valor absoluto de n Calcula en, es decir el exponente en base e del nmero n Logaritmo neperiano de n Logaritmo en base 10 de n Calcula el seno de n (n tiene que estar en radianes)
COS(n)
TAN(n) ACOS(n) ASIN(n) ATAN(n) SINH(n) COSH(n) TANH(n)
Sysdate Obtiene la fecha del servidor (mquina donde est instalada la base de datos).
sysdate?
26/02/2013 19:40:54
Considere el siguiente escenario: En un estacionamiento se detect, que un cobrador al momento de registrar la salida de los vehculos en el sistema registraba menos horas que las utilizadas, pero s cobraba completo a los clientes, quedndose con el importe del resto.
UJAT - DAIS
01/03/2014
Add_months(28/02/2013,36)
29/02/2016
UJAT - DAIS
0.9677419354838709677419354838709677419355
months_between ('01/04/2013', '01/03/2013' )
UJAT - DAIS
Bases de Datos Funciones de Fecha Round( fecha [, formato]) Redondea una fecha a un formato. YEAR ao ms cercano MONTH mes ms cercano
Round (01/07/2013 15:23:32', YEAR)
HH24 hora ms cercano DAY da ms cercano (default) 01/01/2014 01/04/2013 02/03/2013 01/03/2013 15:00:00
UJAT - DAIS
Bases de Datos Funciones de Fecha Trunc( fecha [, formato]) Corta una fecha a un formato. YEAR ao actual MONTH mes actual
Trunc(01/07/2013 15:23:32', YEAR)
HH24 hora actual DAY da actual (default) 01/01/2013 01/03/2013 01/03/2013 01/03/2013 15:00:00
UJAT - DAIS
Bases de Datos Funciones de Nulos NVl(valor1, valor2) Regresa valor1 si es no nulo, si no regresa valor2.
UJAT - DAIS
Bases de Datos Funciones de Conversin To_char( valor, Formato) Convierte el valor a varchar segn el formato especificado.
UJAT - DAIS
Formato
Descripcin
Da del ao en 3 dgitos Hora de 0 a 23
DDD HH24
YYYY
MM MON MONTH DY DAY DD
Ao en 4 dgitos
Mes del ao en 2 dgitos Las tres primeras letras del nombre del mes Nombre completo del mes Las tres primeras letras del da de la semana Nombre completo del da de la semana Da del mes en 2 dgitos
MI
SS SSSSS AM / PM HH12
/.,
Minutos (0 a 59)
Segundos (0 a 59) Segundos transcurridos desde la medianoche Indicador AM/PM Hora de 1 a 12 Separadores
Q
WW D
Semestre
Semana del ao Da de la semana (del 1 al 7)
Universidad Jurez Autnoma de Tabasco Divisin Acadmica de Informtica y Sistemas Tutorial Programacin en Bases de Datos Parte IV
Select
Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com
DML
Select
Sentencia para recuperar los datos de las tablas Es la nica sentencia para recuperar Se puede usar dentro de PL/SQL Hace proyecciones sobre los datos Genera una tabla en memoria (ResultSet o Cursor)
Query
Consulta
UJAT - DAIS
Bases de Datos Select Partes ms importantes de una consulta Select: especifica las columnas o valores a seleccionar From: el origen de los datos Where: especifica los renglones o registros a seleccionar
UJAT - DAIS
Sintaxis SqlServer
UJAT - DAIS
Sintaxis MySql
UJAT - DAIS
Sintaxis Oracle
UJAT - DAIS
UJAT - DAIS
* Selecciona todos los campos de la tabla Consultar todos los campos de personas ?
UJAT - DAIS
ANDRES EDUARDO CHAN ROSA MARA DANIEL MARIANA SILVIA CARMELA HCTOR RUBIO MATA VALOS GIL ZURITA ALVARADO
cita@hotm ail.com
reyh@hot mail.com jhd@hotma il.com
10 VEGJ821605HTG
JESS EDUARDO
VELEZ
GUTIRREZ
16/05/1982
7943
UJAT - DAIS
Bases de Datos Select - Sencillas Sintaxis por valores Select valor1 [as alias], valor2 [ as alias], , valorN [ as alias] From tabla
El alias sirve para cambiarle el nombre al campo de salida
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Bases de Datos Select - Sencillas Sintaxis con condicin Select valor1 [as alias], valor2 [ as alias], , valorN [ as alias] From tabla [Where Condicion]
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Usando alias
Select * From estados e, municipios m Where e.estado_id = m.estado_id
UJAT - DAIS
Slo se puede eliminar el producto cartesiano siempre y cuando exista relacin directa entre las dos tablas.
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Bases de Datos Select - Complejas Cul sera la consulta para la siguiente tabla?
NOMBRE Daniel Mata Hernndez Luisa Hernndez Hernndez Jess Eduardo Velez Gutirrez Alejandra Lopez Reyes Mariana valos Garca Silvia Gil lvarez Carmela Zurita Martnez Hctor Alvarado Prez ESTADO TABASCO TABASCO CHIAPAS TABASCO TABASCO TABASCO TABASCO TABASCO
select initcap(p.nombre||' '||p.apepat||' '||p.apemat) as nombre, e.nombre as estado from personas p, estados e , colonias c, municipios m Where p.colonia_id = c.colonia_id And c.municipio_id = m.municipio_id And m.estado_id = e.estado_id
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
UJAT - DAIS
Universidad Jurez Autnoma de Tabasco Divisin Acadmica de Informtica y Sistemas Tutorial Programacin en Bases de Datos Parte V
PL / SQL
Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com
Objetos
Funciones
Procedimientos
Triggers
UJAT - DAIS
Funciones Definidas
Funciones que los propios usuarios crean en la base de datos Una vez creadas slo hay que llamarlas por su nombre
Al crearlas se deben definir los datos mnimos (parmetros) que necesita para cumplir su objetivo
En base de datos se llaman funciones almacenadas Se programan igual que en los lenguajes tradicionales
UJAT - DAIS
Procedimientos Definidos
Procedimientos que los propios usuarios crean en la base de datos Una vez creados slo hay que llamarlos por su nombre
Al crearlos se deben definir los datos mnimos (parmetros) que necesita para cumplir su objetivo
En base de datos se llaman procedimientos almacenados Se programan igual que en los lenguajes tradicionales
UJAT - DAIS
Bases de Datos PL / SQL Triggers Procedimientos que los propios usuarios crean en la base de datos asociados a una tabla Se pueden ejecutar automticamente cuando ocurra:
Insert
Se pueden ejecutar
Update
Delete
Before
Validar Calcular Convertir
Tutorial de Programacin en Bases de Datos UJAT - DAIS
After
Replicar Propagar DML Auditar
Profesor M. en I.S. Herman Aguilar Mayo
Variable
Son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecucin de un programa. La nomenclatura es la misma en Oracle, que en cualquier lengua de programacin
UJAT - DAIS
Comentarios
-- para una lnea /* */ bloque de lneas
Sintaxis Palabras reservadas Obligatorias circunstanciales Opcionales (): especificacin []: opcional | alguna de las opciones Apostrofe delimitador de cadenas de caracteres.
UJAT - DAIS
Conversin Implcita
10 + 5 = ? 15
UJAT - DAIS
Tipos de Datos
NUMBER (Numrico): Almacena nmeros enteros o de punto flotante, precisin mxima de 36.
-- NUMBER [(precisin, escala)] Saldo NUMBER(16,2); /* Indica que puede almacenar un valor numrico de 16 posiciones, 2 de ellas decimales. Es decir, 14 enteros y dos decimales */
UJAT - DAIS
Tipos de Datos
Varchar2 (Carcter de longitud variable): Almacena datos de tipo carcter empleando slo la cantidad necesaria an cuando la longitud mxima sea mayor. Mximo 4000 -- VARCHAR2 (longitud mxima) nombre VARCHAR2(20); /* Indica que puede almacenar valores alfanumricos de hasta 20 posiciones */ /* Cuando la longitud de los datos sea menor de 20 no se rellena con blancos */ JUAN ANTONIO
Tutorial de Programacin en Bases de Datos
JUAN ANTONIO
UJAT - DAIS
Tipos de Datos
Date (longitud fija): Almacena fechas incluyendo ao, mes, da, 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
05/feb/2013 14:22:55
05/02/2013 +1 = 06/02/2013
UJAT - DAIS
UJAT - DAIS
Operadores
Aritmticos + * / Suma Resta Multiplicacin Divisin
Nota: el residuo est como funcin Usar parntesis para alterar la precedencia de los operadores
UJAT - DAIS
Operadores
Aritmticos con valores nulos Valor null en base de datos significa ausencia de valor o que no est definido. 10 + 0 = ? 10
10 + null = ? null
UJAT - DAIS
Operadores
Relacionales = > >= < <= <> Igual Mayor que Mayor o igual que Menor que Menor o igual que != Diferente o distinto
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Like
Determina si una cadena de caracteres coincide con un patrn especificado.
UJAT - DAIS
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) Ms adelante se ver
Calificacion in (query)
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Between
Permite determinar sin un valor est en un rango. Calificacion between 6 and 10
UJAT - DAIS
Operadores
Otros Relacionales en Oracle y Bases de Datos
Is null determina si un valor no est definido marca is null marca is not null
UJAT - DAIS
Operadores
Lgicos And Or Not
UJAT - DAIS
Operadores
Cadenas || une dos cadenas
Juan||Lpez ?
JuanLpez
UJAT - DAIS
Operadores
Asignacin = en contexto de sql
:= en contexto de pl/sql
UJAT - DAIS
UJAT - DAIS
While
Loop
UJAT - DAIS
Sintaxis IF
UJAT - DAIS
Sintaxis IF - Ejemplo
UJAT - DAIS
Sintaxis IF - Ejemplo
Sintaxis For
for variable in [reverse] valor_inicial..valor_final loop
sentencias;
end loop; Notas: La variable de control no se puede cambiar El incremento es unitario Usando reverse el ciclo se invierte
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
z := z+ i * 20; end loop; Notas: Variable de control i Valor inicial 1 Valor final 10 Ciclo del uno hasta 10
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
z := z+ i * 20; end loop; Notas: Variable de control i Valor inicial n Valor final 10 Ciclo desde n hasta 10
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
z := z+ i * 20; end loop; Notas: Variable de control i Valor inicial n Valor final m Ciclo desde n hasta m
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Sintaxis While
while condicion loop
sentencias;
end loop;
UJAT - DAIS
UJAT - DAIS
Sintaxis loop
Loop sentencias; exit when condicion; sentencias; end loop; Notas: Puede haber varios exit when El ciclo termina cuando la condicin sea verdadera y no se ejecutaran las sentencias entre exit y end loop
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
UJAT - DAIS
UJAT - DAIS
Sintaxis
create or replace function nombre (parametros) return tipo_dato as --declaracin de variables begin sentencias; return valor; end;
UJAT - DAIS
Sintaxis
create or replace function nombre (parametro1 in tipo_dato, parametro2 in tipo_dato, parametro return tipo_dato as --declaracin de variables begin sentencias; return valor; end;
n in tipo_dato )
UJAT - DAIS
Ejemplo
create or replace function suma (p_x in number, p_y in number ) return number as v_z number :=0;
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Ejercicios
Especificacin Suma(x,y) Solucin x+y Test Select suma(5,10) From dual Resultado 15
0
1 120 15 1 0 4 1
Mcd(x,y)
Sintaxis
create or replace procedure nombre (parametro1 in tipo_dato, parametro2 in tipo_dato, parametro --declaracin de variables begin sentencias; end;
n in tipo_dato ) is
UJAT - DAIS
Ejemplo
create or replace procedure registrar_venta_producto (p_venta_id in number, p_producto_id in number, p_precio in number, p_cantidad 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_cantidad then raise_application_error(-2000,'Existencia no vlida'); end if; --registrar venta insert into ventas_productos (venta_id, producto_id, precio, cantidad, descuento) values (p_venta_id, p_producto_id, p_precio, p_cantidad, p_descuento); --actualizar existencia update productos set existencia = existencia - p_cantidad where producto_id = p_producto_id; end;
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Definicin
Es un bloque PL/SQL asociado a una tabla, que se ejecuta automticamente en una determinada operacin DML (INSERT, UPDATE o DELETE) sobre dicha tabla.
UJAT - DAIS
Configuracin
Pueden definirse para las operaciones INSERT, UPDATE o DELETE, y pueden ejecutarse antes o despus de la operacin. El modificador BEFORE AFTER indica que el trigger se ejecutar antes o despus de ejecutarse la sentencia DML.
UJAT - DAIS
Sintaxis
CREATE OR REPLACE TRIGGER nombre {BEFORE|AFTER} {DELETE OR INSERT OR UPDATE } ON tabla FOR EACH ROW DECLARE -- variables BEGIN Sentencias; END;
UJAT - DAIS
Ejemplo
UJAT - DAIS
UJAT - DAIS
UJAT - DAIS
Como un trigger se puede ejecutar en cualquiera de las tres operaciones DML, hay tres funciones booleanas que pueden emplearse para determinar de qu operacin se trata. Estos predicados son INSERTING, UPDATING y DELETING. If inserting then If updating then If deleting then
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
Es el mecanismo que permite obtener datos de las tablas (SQL -select) y depositarlos en las estructuras de datos de PL.
UJAT - DAIS
Pasa cada uno de los campos de la tabla de salida (select) a variables definidas dentro de un bloque PL.
UJAT - DAIS
Select valor1 , valor2 , , valorN Into variable1, variable2, , variableN From tablas Where condicion Cada uno de los valores de la tabla de salida son pasados a las variables. Debe de haber correspondencia La tabla debe de tener uno y solo un registro
UJAT - DAIS
V_NOMBRE JUAN
V_APEPAT PEREZ
V_APEMAT LOPEZ
V_SEXO 2
V_FECHA_NACIMIENTO 01/01/2000
UJAT - DAIS
for
UJAT - DAIS
For registro in (sql) loop sentencias; End loop; La tabla se recorre automticamente. Los datos se pueden acceder a travs de registro. No importa el nmero de registros.
UJAT - DAIS
For reg in (select * from alumnos) loop if reg.sexo=1 then v_c := v_c +1; end if; End loop; Cuenta cuantos alumnos son mujeres.
UJAT - DAIS
ANDRES EDUARDO CHAN ROSA MARA DANIEL MARIANA SILVIA CARMELA HCTOR RUBIO MATA VALOS GIL ZURITA ALVARADO
cita@hotm ail.com
reyh@hot mail.com jhd@hotma il.com
10 VEGJ821605HTG
JESS EDUARDO
VELEZ
GUTIRREZ
16/05/1982
7943
UJAT - DAIS
raise_application_error(numero,mensaje);
Detiene la ejecucin de un bloque PL Aplica Rollback a todas las operaciones de la transaccin Normalmente se usa con un IF El numero puede ser personalizable entre -20000..- 30000 El mensaje es un texto que la aplicacin que invoca, recibe como error
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo
UJAT - DAIS