• No se han encontrado resultados

Capitulo7 ProgramacionSQL

N/A
N/A
Protected

Academic year: 2020

Share "Capitulo7 ProgramacionSQL"

Copied!
44
0
0

Texto completo

(1)

Programación

SQL

(2)

2

Gestionadores de Bases de

Datos (DBMS)

‹

Es el software que permite administrar

bases de datos, a través de ella el

usuario puede usar los datos con

mucha transparencia.

‹

En términos simples es una interfaz

datos usuario.

‹

Los basados en el modelo relacional

(3)

Tipos de RDBMS

‹

De escritorio

‹

Características

Š Para pocos usuarios

Š Programación en una sola capa Š Débil en:

Š Concurrencia, Š Transacciones Š Recuperación

(4)

4

RDBMS de escritorio

Aplicación

BDE/DAO

Base de Datos

Aplicación

(5)

Tipos de RDBMS

‹

Basado en Servidor

‹

Características

Š Para muchos usuarios

Š Programación en varias capas Š Fuerte en

Š Concurrencia Š Transacciones Š Recuperación

Š Ej. Oracle, MsSQL, Interbase, Informix,

(6)

6

RDBMS basado en servidor

Aplicación

Cliente SQL

Aplicación

Cliente SQL Servidor

SQL

(7)

Potencialidades en

Servidores SQL

‹ Trabajo es más productivo

‹ Concurrencia, implementar transacciones atómicas ‹ Conversación basada en el lenguaje SQL

‹ Mantener Código en el servidor ‹ Procedimientos:

Š Conjuntos de instrucciones que se guardan en la base de

datos. Evitan que los datos viajen

‹ Triggers:

Š Son también secuencia de instrucciones pero se activan en

(8)

8

Criterios para evaluar un

servidor SQL

‹

Plataformas Soportadas.

‹

Soporte a tipos de datos.

‹

Lenguaje de triggers y procedimientos.

‹

Implementación de transacciones,

recuperación y aislamiento.

‹

Segmentación.

‹

Replicación.

(9)

Oracle

‹ Acepta varias plataformas, como Windows, Unix,

Linux, etc.

‹ Permite funciones avanzadas. ‹ Segmentación y Replicación. ‹ Todos los tipos de datos.

‹ Extensión procedimental de le lenguaje PL/SQL que

es completo y potente.

‹ Paquetes y tipos de datos abstractos.

‹ Definen Clases((ya un DBMS objeto relacional) ‹ Lenguaje de triggers completo.

‹ Alto costo, por licencia y sobre todo por

(10)

10

Interbase

‹ Acepta muchas plataformas

‹ El mantenimiento Simple. Aunque su entorno de

administración deja mucho que desear.

‹ Cada base de datos se localiza en un archivo .gdb ‹ Las Copias de seguridad se pueden realizar en

caliente

‹ Acepta todo tipo de datos y orientado a cumplir los

estándares.

‹ El uso de Restricción de Integridad Referencial es

completo

(11)

MS SQL Server

‹ Entorno MS Windows

Š Win NT, WINxx, Windows XP, Windows 2003.

‹ Instalación y manejo sencillos.

‹ Mantenimiento avanzado algo complicado ‹ No copias de seguridad en vivo

‹ Integridad referencial no muy sofisticado.

‹ Muy particular su lenguaje de procedimientos:

Transact-SQL

‹ Integración con otros productos

‹ Las últimas versiones MS SQL Server 7.0, MS SQL

(12)

12

Procedimientos Almacenados

‹

Un procedimiento se puede entender

como un algoritmo cuya definición

reside en la base de datos y es

(13)

Definición y ejecución de un

Procedimiento-1

‹

ORACLE

‹

Para crear:

Create or replace procedure

<<

nombre>>

(<<

parámetros>>

)

as

<<CuerpodeProcedimiento>>

‹

Llamar procedimientos:

(14)

14

Ejemplo-1

CREATE OR REPLACE PROCEDURE clienteInsProc (

v_nit IN CHAR,

v_nombre IN CHAR, v_direccion IN CHAR, v_telefono IN CHAR) AS

BEGIN

INSERT INTO cliente(nit, nombre, direccion, telefono)

VALUES(v_nit, v_nombre, v_direccion, v_telefono); END;

(15)

Definición y ejecución de un

Procedimiento-2

‹ INTERBASE ‹ Para crear:

create procedure <<

nombre>>

[(<<

parametrosdeentrada>>

)]

[returns (<<

parametros de salida>>

)] as

<<Cuerpodeprocedimiento>>

‹ Llamar procedimientos:

execute procedure <<nombre>>

(16)

16

Ejemplo-2

SET TERM !! ;

CREATE PROCEDURE clienteInsProc ( v_ruc CHAR(10),

v_nombre CHAR(25), v_direccion CHAR(10), v_telefono CHAR(10)) AS

BEGIN

INSERT INTO cliente(ruc,nombre, direccion, telefono) VALUES(:v_ruc,:v_nombre,:v_direccion,:v_telefono); END

; !!

(17)

Definición y ejecución de un

Procedimiento-3

‹

MS SQL SERVER

‹

Para crear

Create procedure <<

nombre>>

(<<parametrosdeEntradaySalida>>)

as

<<cuerpodeprocedimiento>>

‹

Llamar procedimientos:

(18)

18

Ejemplo 3

CREATE PROCEDURE clienteInsProc ( @ruc char(10),

@nombre char(25) =NULL, @direccion char(10) =NULL, @telefono char(10) =NULL) AS

BEGIN

INSERT INTO cliente(ruc,nombre,direccion, telefono) VALUES(@ruc,@nombre,@direccion,@telefono) END

(19)

Ejecutando el procedimiento

‹

MS SQL Server

Š

EXEC clienteInsProc ’452341’, ’JOSE

(20)

20

Ejemplo 4

‹

Actualiza la tabla historial (registro de

materias aprobadas) con los datos de la

tabla registro para algún estudiante en

particular conocido su

ci

:

Estudiante(ci,nom,dir,tel,ing,fechanac)

Registro(ci,sigla,sem,nota)

(21)

Ejemplo 4 - código MS SQL

Server

CREATE PROCEDURE act_hist (@cix CHAR(15)) AS

BEGIN

DELETE FROM historial WHERE ci=@cix

INSERT INTO historial (ci,sigla,sem,nota) SELECT ci,sigla,sem,nota

FROM registro

(22)

22

Aspectos Complementarios

de

(23)

Uso de variables o

identificadores

-1

‹

ORACLE

La declaración se hace así:

declare

<<

nombrevar>>

tipo

‹

Ej.

(24)

24

Uso de variables o

identificadores

-2

‹

INTERBASE

Para Declarar:

declare variable

<<

nombrevar>>

tipo

‹

Ej.

(25)

Uso de variables o

identificadores

-3

‹

MS SQL SERVER

Al igual que en los anteriores, excepto que

el nombre siempre debe comenzar con el

símbolo @:

declare

<<

nombrevar>>

tipo

‹

Ej.

(26)

26

Asignaciones-1

‹

ORACLE

Para la Asignación se usa :=

<<Variable>>

:=<<

Expresión>>

‹

Ej.

x:=x+1

(27)

Asignaciones-2

‹

INTERBASE

La asignación es algo muy simple

Variable

=

Expresion

‹

Ejemplo.

(28)

28

Asignaciones-3

‹

MS SQL SERVER

Una asignación se ve algo distinto

select

<<Variable>>

=<<

Expresión>>

‹

Ej.

select

@y=@y+1;

(29)

Estructuras de Control-1

‹ ORACLE

‹ Condicionales

if (<<condicion>>)

then

<<instruccion1>>

[else

<< instruccion2>>]

‹ Ciclos

while (<<Condicion>>) loop

<<instrucción>>

(30)

30

Estructuras de Control-2

‹

INTERBASE

Condicionales

if

(<<

condicion>>

)

then

<<

instruccion1>>

[

else

<<instruccion2>>

]

‹

Ciclos

while

(<<c

ondicion>>

)

do

(31)

Estructuras de Control-3

‹ Condicionales

if (<<condicion>>)

<< instruccion1>>

[else

<< instruccion2>>]

select case

when <<condicion1>> then <<valor1Mostrar>> …

when <<condicionN>> then <<valorNMostrar>> end

‹ Ciclos

while (<<Condicion>>) do

(32)

32

Un poco de código

MS SQL Server

DECLARE @x INT SET @x=2

SELECT @x=@x+4 SELECT @x

IF @x>5

SELECT 'mayor a 5' SELECT CASE

(33)

Cursores

‹

Un cursor es una variable de “tipo tabla”,

concretamente puede entenderse como un

conjunto de registros.

‹

pasos:

1. Declarar 2. Abrir

3. Usar (normalmente en una estructura repetitiva hasta fin del cursor)

(34)

34

Oracle

-

cursor

<<

nombre>>

is

<<

sentenciaSelect>>

-

open

<<

nombre>>

-

fetch

<<

nombre>>

into

<<

variables>>

(35)

Interbase

‹

Iteracion en consultas (equivalente a

cursores).

-

for

<<

instruccionSelect>>

into

<<

variables>>

(36)

36

MS SQL Server

-

declare

<<

nombre>>

cursor for

<<

sentenciaSelect>>

-

open

<<

nombre>>

-

fetch next from

<<

nombre>>

into

<<

variables>>

(37)

Un ejemplo de cursores

MS SQL Server-1

‹

Actualiza los datos de la tabla paralelos con la

información que hay en la tabla registro, del

siguiente modelo relacional.

Estudiante(ci,nom,dir,tel,ing,fechanac) Registro(ci,sigla,sem,nota)

Materia(sigla,nom,creditos) Historial(ci,sigla,sem,nota)

(38)

38

Un ejemplo de cursores

MS SQL Server-1

/*CURSORES*/

CREATE PROCEDURE l_par (@semx CHAR(7))

AS

DECLARE @sigla CHAR(7),@inscritos INT,@aprobados INT,@reprobados INT

/* Declaracion del cursor*/ DECLARE lpara CURSOR FOR SELECT sigla FROM paralelo WHERE sem=@semx

/* Abrir el cursor */ OPEN lpara

(39)

Un ejemplo de cursores

MS SQL Server-2

FETCH NEXT FROM lpara INTO @sigla WHILE (@@FETCH_STATUS=0)

BEGIN

SELECT @inscritos=COUNT(*) FROM registro

WHERE sigla=@sigla AND sem=@semx SELECT @aprobados=COUNT(*)

FROM registro

(40)

40

Un ejemplo de cursores

MS SQL Server-3

SELECT @reprobados=COUNT(*) FROM registro

WHERE sigla=@sigla AND sem=@semx AND nota < 51 UPDATE paralelo SET

inscritos=@inscritos,reprobados=@reprobados,aprobados=@ap robados WHERE CURRENT OF lpara

/* Usar el cursor */

FETCH NEXT FROM lpara INTO @sigla END

‹ /*cerrar el cursor*/ ‹ CLOSE lpara

(41)

Disparadores (triggers)

‹

Un trigger es código que se almacena

en la base de datos, su comportamiento

es lo que le diferencia de un

procedimiento,

‹

Se activa con algún evento con un

elemento de la base de datos Ej. una

(42)

42

Ejemplo

‹

Mantiene sincronizada el total de la

tabla factura con los datos de detalle.

Š

Factura(num,fecha,nit,total)

Š

Detalle(num,codpro,cantidad,monto)

‹

Al inserta o adicionar una fila detalle se

(43)

Código

ORACLE

CREATE OR REPLACE TRIGGER facturasuma AFTER INSERT ON detalle

FOR EACH ROW BEGIN

UPDATE factura

SET total=total+:new.monto

WHERE numero=:new.numero ;

(44)

44

Referencias

Documento similar

U-Ranking cuenta con la colaboración del Ministe- rio de Universidades, al permitirnos el acceso al Sistema Integrado de Información Universitaria (SIIU). El SIIU es

Asegurar una calidad mínima en los datos es una de las tareas más difíciles de conseguir para los organismos públicos cuyo objetivo es publicar datos lo más rápidamente posible

Introducción a las Bases de Datos: Sistemas de Bases de Datos frente a Sistemas de Ficheros.. Lledó Museros /

Esto nos deja claro que, dentro de este tipo de terapias, son el Qigong y el Tai Chi las que muestran unos resultados más prometedores a la hora de establecerse

Si para construir y evaluar una FBF necesitamos una interpretación y un LPO, para todo esquema de base de datos relacional (BDR) y para cada estado de base de datos

{ En el servicio ADSL, el envío y recepción de datos se establece desde el ordenador del usuario a través de un módem ADSL Estos desde el ordenador del usuario a través de un

Para definir el comportamiento de una Casa Inteligente, es factible la utilización del modelo de reglas ECA (evento-condición-acción), ampliamente utilizado en el

Cuando se realiza una revisión integrativa entorno a un tema como el de la sintomatología presente en los pacientes con enfermedad oncológica avanzada, que motivan el