You are on page 1of 226

Universidad Jurez Autnoma de Tabasco Divisin Acadmica de Informtica y Sistemas

Tutorial Programacin en Bases de Datos Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com

Objetivo del Material

El presente material tiene como objetivo


Apoyar la materia de Programacin en Bases de Datos Potencializar los conocimientos del alumno en Bases de Datos Mostrar un panorama completo Bases de Datos Desarrollo de Sistemas (Java) Proporcionar Sistema de Informacin bsico (Altas, Bajas, Cambios y Consultas) Documentacin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Presentacin

rea de formacin: Sustantiva Profesional Horas Tericas:2 Prcticas:3 Crditos: 7

Conocimientos previos: Modelado, Diseo y Manejo de Bases de Datos, Programacin.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Arquitectura
3 Capas 2 Capas usando BD

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Temario

SQL DDL DML PL/SQL Caractersticas Funciones Procedimientos Triggers

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Ejercicio

Realizar un programa en C / Java que lea dos nmeros e imprima la suma.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Ejercicio

Realizar una funcin en C / Java que reciba dos nmeros y regrese la suma.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD Modelo BD dais control_escolar.jpg

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)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD tablas control_escolar.xls

Archivo de Excel con el contenido inicial de cada una de las tablas que conforman la Base de Datos

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD control_escolar.sql

Script que contiene las sentencias para que una vez instalada la base de datos, crear y llenar las tablas con datos con sus restricciones.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD Carpeta OracleXE112_Win32

Instalador (setup.exe) de la Base de Datos Oracle Express Edition versin 11 para Windows 32.

Ms adelante se mostrar la instalacin y configuracin.


Para Windows 64 u otros Sistemas Operativos descargar de www.oracle.com con solo registrarse. Se recomienda esta versin por ser ligera para su equipo, pero si ya cuenta con otra versin, la puede utilizar.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD Carpeta sqldeveloper-3.2.20.09.87

Herramienta grfica para el desarrollo y programacin de la base de datos.

Ejecutable java (sqldeveloper.exe) que contiene el JDK.


Ms adelante se mostrar el uso de esta herramienta.

Si cuenta con otra herramienta la puede utilizar.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Material de Apoyo CD netbeans-7.0.1-ml-javaee-windows.exe

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Instalando Oracle Express Edition

Empezando instalacin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Instalando Oracle Express Edition

Ubicacin de instalacin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Instalando Oracle Express Edition


Definir el password para los usuarios Sys y System que son los administradores de la base de datos.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Instalando Oracle Express Edition


Resumen de los que se va a instalar

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando SqlDeveloper

La primera vez mostrara la pantalla

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

Conectando Creando la conexin Agregar una conexin dando click en el cono +

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

Conectando Creando la conexin Conectado como System

Se puede observar que existen muchas tablas y que son para la administracin de la base de datos.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Creando el nuevo usuario

En el rbol de objetos ubicar otros usuarios

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Creando el nuevo usuario

Darle el nombre y contrasea que desee, a como se muestra en la figura.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Creando el nuevo usuario

Asignarle permiso de DBA para tener acceso libre.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Creando el nuevo usuario

En la pestaa SQL se pueden ver las instrucciones sql. Darle aplicar.


Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Usuario creado!!!

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Conectando Creando la conexin Crear la nueva conexin con los datos del nuevo usuario.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Dato o Valor
Conjunto de caracteres con algn significado, pueden ser numricos, alfabticos, o alfanumricos.

Cmo se puede obtener ? Campo o variable Constante Expresin Funcin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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

Folio Apellido Calificacin

Raza

Existencia

Fecha

Nombres Nombre
UJAT - DAIS

Tutorial de Programacin en Bases de Datos

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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

Cliente Raza Taller Auto Ciudad

Boleto

Tienda

Libro

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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

MAGAA DAZ HERNNDEZ GARCA

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Base de Datos

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Sistema Manejador de Base de Datos Data Base Management System DMBS


Un DBMS es una coleccin de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de una tarea especfica. El objetivo primordial de un sistema manejador base de datos es proporcionar un entorno que sea a la vez conveniente y eficiente para ser utilizado al extraer, almacenar y manipular informacin de la base de datos. Todas las peticiones de acceso a la base, se manejan centralizadamente por medio del DBMS, por lo que este paquete funciona como interfaz entre los usuarios y la base de datos.
Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Base de Datos

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

SQL ?

Structured Query Language Lenguaje Estructurado de Consulta

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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".

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Categoras de SQL ? DDL: Data Definition Language Lenguaje de Definicin de Datos Create Alter Drop

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Categoras de SQL ? DML: Data Manipulation Language Lenguaje de Manipulacin de Datos Insert Update Delete Select

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Categoras de SQL ? DCL: Data Control Language Lenguaje de Control de Datos Grant Revoke

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Marco Tecnolgico Bases de Datos

Categoras de SQL ? TCL: Transaction Control Language Lenguaje de Control de Transacciones Commit Rollback Save point Set Transaction

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Conversin Implcita
10 + 5 = ? 15

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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 */

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operaciones Cules conoces?


Aritmticos Boleanas Lgicas Cadenas Fechas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Aritmticos + * / Suma Resta Multiplicacin Divisin

Nota: el residuo est como funcin Usar parntesis para alterar la precedencia de los operadores

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Relacionales = > >= < <= <> Igual Mayor que Mayor o igual que Menor que Menor o igual que != Diferente o distinto

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Otros Relacionales en Oracle y Bases de Datos

Like
Determina si una cadena de caracteres coincide con un patrn especificado.

Se usa % para el patrn


Valor like %patron%

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos 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) Ms adelante se ver

Calificacion in (query)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos 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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Lgicos And Or Not

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Cadenas || une dos valores de tipo cadena

Juan||Lpez ?

JuanLpez

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Operadores
Asignacin = en contexto de sql

:= en contexto de pl/sql

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Conceptos Bsicos en Oracle

Qu es una condicin?

Cmo se especifica una lista?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Modelo de Ventas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia CREATE

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter Modificando campos

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);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

Primary Key ? Identifica de manera nica a un registro dentro de una tabla. Cules son las dos propiedades? nico Not null

Al definirla, la base de datos garantiza que no habr duplicados.


alter table tabla add constraint nombre primary key (llave);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera lgica, cmo valida la Base de datos la Primary Key ?


Estado actual de la Tabla

Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS TABASCO

Nombre

Agregar (8,TABASCO)
Ya existe la llave 8 en la tabla? No, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera lgica, cmo valida la Base de datos la Primary Key ?


Estado actual de la Tabla

Estado_id
5 6 7 6 COAHUILA COLIMA CHIAPAS

Nombre

La operacin no procede porque sera en contra de la integridad

NUEVO LEN

Agregar (6,NUEVO LEN)


Ya existe la llave 6 en la tabla? Si, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera lgica, cmo valida la Base de datos la Primary Key ?


Estado actual de la Tabla

Estado_id
5 6 7 7 COAHUILA COLIMA CHIAPAS

Nombre

Error integridad

de

Actualizar (6,COLIMA) a (7,COLIMA)


Ya existe la llave 7 en la tabla? Si, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera tcnica, cmo valida la Base de datos la Primary Key ?


Qu pasa si la tabla tiene muchos registros? Utiliza un ndice para realizar las bsquedas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

Unique Key ? Identifica de manera nica a un registro dentro de una tabla.

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?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

Foreign Key ? Identifica a un registro de otra tabla.

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);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera lgica, cmo valida la Base de datos la Foreign Key ?


Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 7 8

COLIMA CHIAPAS TABASCO

Agregar (4,COMALCALCO, 8) Existe la llave 8 (PK) en la tabla estados?


Tutorial de Programacin en Bases de Datos UJAT - DAIS

Si, entonces

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

De manera lgica, cmo valida la Base de datos la Foreign Key ?


Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 6

BALANCN REFORMA CUNDUACN XALAPA

8 7 8 15

6 7 8

COLIMA CHIAPAS TABASCO

Agregar (6,XALAPA, 15) Existe la llave 15 (PK) en la tabla estados?


Tutorial de Programacin en Bases de Datos UJAT - DAIS

Error integridad

de

No, entonces

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

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);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

En la tabla personas el campo sexo es numrico de 1


Cuntos valores puede representar? 101 = 10 = [0-9]

Se podra considerar (covencin o acuerdo): 1= mujer 2=hombre


Cul sera la instruccin para crear la restriccin?
Alter table personas add constraint personas_sexo_chk check ( sexo in (1,2));

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

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);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Alter - Constraints

Qu otras restricciones puede identificar en el modelo?


alter table PRODUCTOS add constraint PRODUCTOS_COSTO_CHK check (costo>=0);
alter table PRODUCTOS add constraint PRODUCTOS_EXISTENCIA_CHK check (existencia>=0);
Alter table PRODUCTOS add constraint PRODUCTOS_PRECIO_COSTO_CHK check (precio>costo)
alter table VENTAS_PRODUCTOS add constraint VENTAS_PRODUCTOS_CANTIDAD_CHK check (cantidad>=0);
alter table VENTAS_PRODUCTOS add constraint VENTAS_PRODUCTOS_DESCUENTO_CHK check (cantidad*precio>= descuento);

alter table VENTAS_PRODUCTOS add constraint VENTAS_PRODUCTOS_PRECIO_CHK check (precio>0);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Universidad Jurez Autnoma de Tabasco Divisin Acadmica de Informtica y Sistemas

Tutorial Programacin en Bases de Datos Parte II

DML
Profesor M. en I.S. Herman Aguilar Mayo herman_aguilar1@hotmail.com www.hermanaguilar1.blogspot.com

Bases de Datos DML

DML?
Data Manipulation language

Sentencias ? Insert Update Delete Select

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Lenguaje de Manipulacin de Datos

Qu sentencias alteran el estado de la base de datos?


Insert Update Delete Select

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Lenguaje de Manipulacin de Datos

Qu validaciones hace la base de datos para alterar el estado de la base de datos? PK UK FK Check NN TD

permitir

Adems la base de datos verifica la sintaxis de la sentencia

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Insert En qu consiste?

Inserta

un registro en una tabla


n
registros se debe especificar

Para insertar sentencias

La sentencia debe cumplir todas las validaciones

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Insert Ejercicios Insertar un registro de cada tabla, segn las tablas en Excel

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Insert

Insert into estados (estado_id, nombre ) values (8, TABASCO);


Estado actual de la Tabla

Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS TABASCO

Nombre

Cumple todas las validaciones?

Si, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Insert

Insert into estados (estado_id, nombre ) values (8, null);


Estado actual de la Tabla

Estado_id
5 6 7 8 COAHUILA COLIMA CHIAPAS null

Nombre

Cumple todas las validaciones?

No, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Update En qu consiste? Actualiza registro

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

La sentencia debe cumplir todas las validaciones


Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Update Ejercicio Modificar registros de cada tabla

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Update


Update municipios set nombre=CRDENAS where nombre=BALANCN
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN CRDENAS REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 7 8

COLIMA CHIAPAS TABASCO

Cumple todas las validaciones?

Si, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Update


Update municipios set nombre=CRDENAS where nombre=BALANCAN
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 7 8

COLIMA CHIAPAS TABASCO

No hay ninguna modificacin Cumple todas las validaciones?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Update


Update estados set estado_id = 8, nombre=TABASCO
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 8 7 8 8

COLIMA TABASCO CHIAPAS TABASCO TABASCO

Cumple todas las validaciones?

No, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete En qu consiste? Borra registro

s de una tabla
V V F V

Slo se borran los registros que cumplan una condicin

La sentencia debe cumplir todas las validaciones

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete Sintaxis Delete from tabla [where condicion ];

S se omite la condicin se borran todos los registros

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete Ejercicio Borrar registros de cada tabla

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete


Delete from municipios where nombre=BALANCN
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 2 3 3 4 4

BALANCN REFORMA REFORMA CUNDUACN CUNDUACN COMALCALCO COMALCALCO

8 7 7 8 8 8

6 7 8

COLIMA CHIAPAS TABASCO

Cumple todas las validaciones?

Si, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete


Delete from estados where nombre like %O% and nombre like O%
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 7 8

COLIMA CHIAPAS TABASCO

Cumple todas las validaciones?

Ningn registro cumple la condicin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencia Delete


Delete from estados where estado_id = 7;
Estado actual Municipios
Municipio_id Nombre Estado_id

Estado actual de Estados


Estado_id Nombre

1 2 3 4

BALANCN REFORMA CUNDUACN COMALCALCO

8 7 8 8

6 7 8

COLIMA CHIAPAS TABASCO

Cumple todas las validaciones?

No, entonces

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Sentencias DML


Actividad final: Llenar la siguiente tabla segn aplique la sentencia y la restriccin Insert Update Delete

PK
UK FK Check NN TD Sintaxis

X X X X X
Siempre y cuando este involucrada la restriccin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Bases de Datos Funciones

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

Bases de Datos Funciones

Desde el punto de vista del usuario (programador) Qu tipo de funciones hay?


Pre- Definidas (con el lenguaje) Definidas (por el usuario)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Predefinidas Las podemos clasificar por su tipo de datos

Numricas
Varchar Date Nulos Otras

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Predefinidas Sintaxis para usar una funcin

nombreFuncion[(parmetro1, parmetro2, parmetroN)]

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Predefinidas Cmo usarlas?

Una vez definida, hacemos lo siguiente:


Invocarla por su nombre Pasarle los parmetros Contar con el dato a regresar X := suma(5,10); Printf(%d,suma(5,10)); P:=promedio(matricula); P:=precio(producto_id);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Predefinidas Cmo usarlas?

Select matricula, promedio(matricula) From alumnos

MATRICULA 1 2 3

PROMEDIO

8.85 9.0 6.5


P:=promedio(matricula);

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Varchar

Lower(texto)

Convierte un texto a minsculas lower(Programacin en Bases de Datos) ? programacin en bases de datos

Upper(texto)

Convierte un texto a maysculas upper(Programacin en Bases de Datos) ?

PROGRAMACIN EN BASES DE DATOS

Initcap(texto)

Convierte un texto a palabras capital initcap(Programacin en Bases de Datos) ? Programacin En Bases De Datos

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Varchar

RTrim(texto)

Elimina espacios por la derecha rtrim( Programacin en Bases de Datos ) ? Programacin en Bases de Datos

LTrim(texto) Elimina espacios por la izquierda ltrim( 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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Varchar

SubStr(texto,i[, n])
posicion . Si

Obtiene una subcadena tamao

n partir de la

i n se omite se retorna hasta encontrar el fin de la cadena


Programacin

Substr(Programacin en Bases de Datos,1,12) ?

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

Bases de Datos Funciones Varchar

Length(texto)

Obtiene el tamao de una cadena

Length(Programacin) ? 12 Length(Programacin en Bases de Datos) ? 30

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Varchar

InStr(texto,patron [,i [, n]])


dentro del

Obtiene la posicin del

texto,

se puede especificar una posicin

patron inicial i para

empezar a buscar y la n aparicin. instr(Programacin en Bases de Datos,en) ? 14 instr(Programacin en Bases de Datos,a) ?

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

Bases de Datos Funciones Varchar

Replace(texto,patron, reemplazo)

Reemplaza dentro del

texto cada aparicin del patron por el reemplazo.


replace(Programacin en Bases de Datos,a,x) ? Progrxmxcin en Bxses de Dxtos replace(Programacin en Bases de Datos,o,y) ?

Prygramacin en Bases de Datys

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Varchar

texto por izquierda con el relleno hasta alcanzar la longitud.


LPad(texto, longitud, relleno) Rellena el

la

texto derecha con el relleno hasta alcanzar la longitud.


RPad(texto, longitud, relleno) Rellena el

por la

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Numricas

Round(n [,decimales]) Redondea n con los decimales indicados.


ROUND(8.239) ? 8 ROUND(8.239,2) ?

8.24

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Numricas

Trunc(n [,decimales]) Corta n con los decimales indicados.

Trunc(8.239) ? 8 Trunc(8.239,2) ?

8.23

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Numricas

Floor(n )

Obtiene el entero igual o menor que n


8

Floor(8.239) ?

Floor(8) ?

8
Floor(8.99) ?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Numricas

Ceil(n )

Obtiene el entero igual o mayor que n

Floor(8.239) ?

9
Floor(8) ?

8
Floor(8.99) ?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones Numricas

Mod(n1,n2 )
mod(10,2) ?

Obtiene residuo de dividir n1 entre n2

0
mod(10,3) ?

1
mod(10,null)

null

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Otras Funciones Numricas


Funcin
POWER(valor,exponente) SQRT(n) SIGN(n) ABS(n) EXP(n) LN(n) LOG(n) SIN(n)

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)

Calcula el coseno de n (n tiene que estar en radianes)


Calcula la tangente de n (n tiene que estar en radianes) Devuelve en radianes el arcocoseno de n Devuelve en radianes el arcoseno de n Devuelve en radianes el arcotangente de n Devuelve el seno hiperblico de n Devuelve el coseno hiperblico de n Devuelve la tangente hiperblica de n
UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Tutorial de Programacin en Bases de Datos

Bases de Datos Funciones de Fecha

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.

Cmo es posible que pueda burlar al sistema?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones de Fecha

Add_Months( fecha, n) Suma n meses a la fecha.


Add_months(01/03/2013,12)

01/03/2014
Add_months(28/02/2013,36)

29/02/2016

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones de Fecha

Months_between( fecha1, fecha2) Obtiene la diferencia en meses entre fecha1 y fecha2 .


months_between (30/03/2013', '01/03/2013' )

0.9677419354838709677419354838709677419355
months_between ('01/04/2013', '01/03/2013' )

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Round (15/03/2013 15:23:32 ', MONTH)


Round (01/03/2013 15:23:32 ', DAY) Round (01/03/2013 15:23:32 ', HH24)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Trunc(15/03/2013 15:23:32 ', MONTH)


Trunc(01/03/2013 15:23:32 ', DAY) Trunc(01/03/2013 15:23:32 ', HH24)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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) 0 Nvl( 0 , null) 0

Nvl( null , 0) 0 Nvl( null , null) null

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones de Conversin To_char( valor, Formato) Convierte el valor a varchar segn el formato especificado.

To_number( valor, Formato) Convierte el valor a number segn el formato especificado.


To_date( valor, Formato) Convierte el valor a Date segn el formato especificado.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Funciones de Conversin


Formato YY YYY Descripcin
Ao en 2 dgitos Ao en 3 dgitos

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)

Los Formatos se pueden combinar


Los Formatos que representan un nombre siguen el orden de maysculas / minsculas
UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Tutorial de Programacin en Bases de Datos

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

Bases de Datos Select

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)

La salida siempre ser una tabla


Tutorial de Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select

Convencin del mismo significado


Select

Query
Consulta

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select

Sintaxis SqlServer

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select

Sintaxis MySql

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select

Sintaxis Oracle

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select Para hacer la sintaxis ms sencilla, vamos a ver


Consultas Sencillas De una tabla Sin agrupaciones Sin operaciones relacionales Consultas Complejas De varias tabla Con agrupaciones Con operaciones relacionales

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas Sintaxis por partes


Select * From tabla

* Selecciona todos los campos de la tabla Consultar todos los campos de personas ?

Select * From personas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas Select * From personas


PERSONA_I D RFC 1 2 3 4 5 MAHD8301078E7 6 AAGM852105X5T 7 GIAS821412G3A 8 ZUMC802510G6U 9 AAPH802510H4T NOMBRE LUISA ALEJANDRA APEPAT APEMAT EMAIL TELEFON O CALLE JUAREZ aleji@hotm ail.com 12345 CASA FECHA_NACI MIENTO SEXO COLONIA_ID JEFE_ID 23 30/12/1982 11/02/1977 22/01/1982 GREGORIO MNDEZ 4 08/08/1982 07/01/1983 12456 PINO SUREZ 123568 14 21/05/1985 14/12/1982 ALLENDE 24567 ALTOS 25/10/1980 05/05/1982 1 1 2 2 2 1 1 2 2 3431 1837 2449 2443 1320 3 46 1978 1 HERNNDEZ HERNNDEZ LOPEZ REYES MAGAA DAZ HERNNDEZ GARCA LVAREZ MARTNEZ PREZ

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas


Cul es la consulta de la siguiente tabla?
NOMBRE LUISA ALEJANDRA ANDRES EDUARDO ROSA MARA DANIEL MARIANA SILVIA CARMELA HCTOR JESS EDUARDO APEPAT HERNNDEZ LOPEZ CHAN RUBIO MATA VALOS GIL ZURITA ALVARADO VELEZ APEMAT HERNNDEZ REYES MAGAA DAZ HERNNDEZ GARCA LVAREZ MARTNEZ PREZ GUTIRREZ

Select nombre, apepat, apemat from personas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas


Cul es la consulta de la siguiente tabla?
NOMBRE Daniel Mata Hernndez Luisa Hernndez Hernndez Jess Eduardo Velez Gutirrez Rosa Mara Rubio Daz Alejandra Lopez Reyes Mariana valos Garca Silvia Gil lvarez Carmela Zurita Martnez Hctor Alvarado Prez Andres Eduardo Chan Magaa

select initcap(nombre||' '||apepat||' '||apemat) as nombre from personas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas Sintaxis con condicin Select valor1 [as alias], valor2 [ as alias], , valorN [ as alias] From tabla [Where Condicion]

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas


Cul es la consulta de la siguiente tabla?
NOMBRE ANDRES EDUARDO ROSA MARA DANIEL CARMELA HCTOR JESS EDUARDO APEPAT CHAN RUBIO MATA ZURITA ALVARADO VELEZ APEMAT MAGAA DAZ HERNNDEZ MARTNEZ PREZ GUTIRREZ

Select nombre, apepat, apemat as nombre from personas Where sexo =2

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas


Cul sera el resultado de la siguiente consulta? Select nombre, precio from productos Where mod(existencia,3)=0;

El nombre y precio de todos los productos cuya existencia sea mltiplo de 3

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas


Cul sera el resultado de la siguiente consulta? Select nombre from municipios Where nombre like %A%A%;

El nombre de todos los municipios cuyo nombre contenga dos A.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Sintaxis mltiples tablas Select {*|valores } From tabla1 [alias], tabla2 [alias],, tablaN [alias] [Where Condicion] * Selecciona todos los campos de todas las tablas S un campo es comn, se debe colocar tabla.campo Se tiene acceso a todos los campos de todas las tablas tanto en select como en where. Podemos usar alias para las tablas, si es as, entonces debemos referirnos a los campos por el alias y no por la tabla

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Al consultar de varias tablas el resultado de la proyeccin (registros) es: Producto cartesiano entre todas las tablas Se multiplica la cantidad de registros de cada tabla

De qu tamao es la proyeccin de la siguiente consulta? Select * From estados, municipios


Campos = estados (2) + municipios (3) =5 Registro= estados (12) * municipios (12) =144

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Eliminando producto cartesiano Cul es el registro correcto?
ESTADO_ID NOMBRE 5 COAHUILA 6 COLIMA 7 CHIAPAS 8 CHIHUAHUA 9 DISTRITO FEDERAL 16 MICHOACN 25 SINALOA 26 SONORA 27 TABASCO 28 TAMAULIPAS 29 TLAXCALA 30 VERACRUZ MUNICIPIO_ID NOMBRE 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS 2 CRDENAS ESTADO_ID 27 27 27 27 27 27 27 27 27 27 27 27

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Eliminando producto cartesiano Cul es el registro correcto?
ESTADO_ID NOMBRE 5 COAHUILA 6 COLIMA 7 CHIAPAS 8 CHIHUAHUA 9 DISTRITO FEDERAL 16 MICHOACN 25 SINALOA 26 SONORA 27 TABASCO 28 TAMAULIPAS 29 TLAXCALA 30 VERACRUZ MUNICIPIO_ID NOMBRE ESTADO_ID 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 158 PICHUCALCO 7 7 7 7 7 7 7 7 7 7 7 7

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Eliminando producto cartesiano Cul sera la condicin?
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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Complejas


Eliminando producto cartesiano, observando el modelo

Cul es la relacin entre las dos tablas? Municipios.estado_id (fk) = estados.estado_id(pk)

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

Bases de Datos Select - Complejas Conclusin para eliminar producto cartesiano


Slo se puede eliminar cuando exista relacin directa o indirecta Cuando exista relacin indirecta se debe de colocar las tablas intermediarias en el from y en el where las condiciones respectivas Cuando las llaves que relacionan las tablas sea simples podemos recordar los siguiente:

n tablas en el from, n-1 condiciones en el where

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Bases de Datos PL / SQL

Objetos
Funciones

Procedimientos
Triggers

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

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

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Conversin Implcita
10 + 5 = ? 15

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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 */

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operaciones Cules conoces?


Aritmticos Boleanas Lgicas Cadenas Fechas

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Aritmticos + * / Suma Resta Multiplicacin Divisin

Nota: el residuo est como funcin Usar parntesis para alterar la precedencia de los operadores

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Relacionales = > >= < <= <> Igual Mayor que Mayor o igual que Menor que Menor o igual que != Diferente o distinto

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Otros Relacionales en Oracle y Bases de Datos

Like
Determina si una cadena de caracteres coincide con un patrn especificado.

Se usa % para el patrn


Valor like %patron%

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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)

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Lgicos And Or Not

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Cadenas || une dos cadenas

Juan||Lpez ?

JuanLpez

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Recordando Conceptos Bsicos

Operadores
Asignacin = en contexto de sql

:= en contexto de pl/sql

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Tip

En programacin cundo no usar punto y coma?

En los encabezados de las estructuras

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Estructuras de Control

Cules estructuras conoces?


IF For

While
Loop

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Estructuras de Control

Sintaxis IF

if condicion then Sentencias [else Sentencias] end if;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Estructuras de Control

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

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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. 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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. 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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. 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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Estructuras de Control

Sintaxis While
while condicion loop

sentencias;
end loop;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 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

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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos UJAT - DAIS Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Sintaxis
create or replace function nombre (parametros) return tipo_dato as --declaracin de variables begin sentencias; return valor; end;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

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 )

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo
create or replace function suma (p_x in number, p_y in number ) return number as v_z number :=0;

begin v_z := p_x + p_y; return v_z; end;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo SQL Developer Nueva funcin

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo SQL Developer Llenando la pantalla

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo SQL Developer Pestaa DDL

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo SQL Developer Qu est mal?

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejemplo SQL Developer Compilacin correcta

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Funciones

Ejercicios
Especificacin Suma(x,y) Solucin x+y Test Select suma(5,10) From dual Resultado 15

Par(n) 0-no 1-si


Factorial (n) Sumatoria(n) Primo(n) 0-no 1-si

1 si n%2 es igual a cero, 0 en otro caso


n*(n-1)*(n-2)*...2*1 n+(n-1)+(n-2)+...2+1 Es primo s y slo s n solamente es divisible entre el mismo y la unidad el nmero mayor que divide a ambos nmeros
UJAT - DAIS

Select par(5) From dual


Select par(6) From dual Select factorial(5) From dual Select sumatoria(5) From dual Select primo(5) From dual Select primo(6) From dual Select mcd(8,12) From dual Select mcd(8,9) From dual

0
1 120 15 1 0 4 1

Mcd(x,y)

Tutorial de Programacin en Bases de Datos

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Procedimiento

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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_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

Bases de Datos PL / SQL Trigger

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Trigger

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. 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 Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Trigger

Ejemplo

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Trigger

Utilizacin de :old y :new


Dentro del ambito de un trigger disponemos de las variables OLD y NEW . Estas variables se utilizan del mismo modo que cualquier otra variable PL/SQL, con la salvedad de que no es necesario declararlas, contienen una copia del registro antes (OLD) y despus(NEW) de la accin que ha ejecutado el trigger. Utilizando esta variable podemos acceder a los datos que se estn insertando, actualizando o borrando.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Trigger

Utilizacin de :old y :new

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Trigger


Utilizacin de predicados : INSERTING, UPDATING y DELETING

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

Bases de Datos PL / SQL PL con SQL

Es el mecanismo que permite obtener datos de las tablas (SQL -select) y depositarlos en las estructuras de datos de PL.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL SELECT INTO

Pasa cada uno de los campos de la tabla de salida (select) a variables definidas dentro de un bloque PL.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL SELECT - INTO


Sintaxis

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL SELECT - INTO


Ejemplo
Select nombre, apepat, apemat, sexo, fecha_nacimiento Into v_nombre, v_apepat, v_apemat, v_sexo, v_fecha_nacimiento From alumnos Where matricula = p_matricula;
Nombre JUAN Apepat PEREZ Apemat LOPEZ Sexo 2 Fecha_nacimiento 01/01/2000

V_NOMBRE JUAN

V_APEPAT PEREZ

V_APEMAT LOPEZ

V_SEXO 2

V_FECHA_NACIMIENTO 01/01/2000

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL FOR - SELECT

Recorre con un ciclo automticamente la tabla de salida.

for

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL FOR - SELECT


Sintaxis

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL FOR - SELECT


Ejemplo

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.

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos Select - Sencillas Select * From alumnos


PERSONA_I D RFC 1 2 3 4 5 MAHD8301078E7 6 AAGM852105X5T 7 GIAS821412G3A 8 ZUMC802510G6U 9 AAPH802510H4T NOMBRE LUISA ALEJANDRA APEPAT APEMAT EMAIL TELEFON O CALLE JUAREZ aleji@hotm ail.com 12345 CASA FECHA_NACI MIENTO SEXO COLONIA_ID JEFE_ID 23 30/12/1982 11/02/1977 22/01/1982 GREGORIO MNDEZ 4 08/08/1982 07/01/1983 12456 PINO SUREZ 123568 14 21/05/1985 14/12/1982 ALLENDE 24567 ALTOS 25/10/1980 05/05/1982 1 1 2 2 2 1 1 2 2 3431 1837 2449 2443 1320 3 46 1978 1 HERNNDEZ HERNNDEZ LOPEZ REYES MAGAA DAZ HERNNDEZ GARCA LVAREZ MARTNEZ PREZ

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

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

Bases de Datos PL / SQL Provocar un error


Sintaxis

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

Bases de Datos PL / SQL Provocar un error


Ejemplo

if v_existencia < p_cantidad then raise_application_error(-20000,'Existencia no vlida'); end if;

Tutorial de Programacin en Bases de Datos

UJAT - DAIS

Profesor M. en I.S. Herman Aguilar Mayo

You might also like