Sie sind auf Seite 1von 6

OPERACIONES: Operacin 1 2 3 4 4 5 6 Proyeccin Seleccin Diferencia exige compatibilidad Division Producto Cartesiano Interseccion exige compatibilidad Reunion a) Union

exige compatibilidad b) Join natural (join o inner join) c) Left join d) Right join <> < > Smbolo X o *

Nota: un Left join o Rigth join puede anidarse dentro de un inner join, pero no al revs.

Relacin (Control de bancos): Cliente Sucursal Prestamo = = = (nombre_cliente PK, ciudad, calle) (nombre_sucursal PK, activo, ciudad) (num_prestamo PK, nombre_sucursal FK, nombre_cliente FK, importe) Deposito = (num_cuenta PK, nombre_sucursal FK, nombre_cliente FK, saldo)

Ejemplos Consultas: 1. Obtener el nombre de clientes y ciudades donde viven, que cumplan con la condicin de tener un prstamo. Implementacin en SQL: SELECT prestamo.nombre_cliente,ciudad FROM cliente, prestamo WHERE prestamo.nombre_cliente = cliente.nombre_cliente;

Representacin en Algebra Relacional: prestamo.nombre_cliente, ciudad (prestamo.nombre_cliente = cliente.nombre_cliente (cliente x prestamo))

2. Obtener los nombres de los clientes que tienen, una cuenta, un prstamo, o ambas cosas en la sucursal 2: Implementacin en SQL: SELECT nombre_cliente FROM prestamo WHERE nombre_sucursal = 2 UNION SELECT nombre_cliente FROM deposito WHERE nombre_sucursal = 2

Representacin en Algebra Relacional: ( nombre_cliente (nombre_sucursal = "2" (prestamo))) ( nombre_cliente (nombre_sucursal = "2" (deposito)))

3. Obtener el nombre de los clientes que tienen un prstamo en la sucursal principal, pero que no tienen cuenta en dicha sucursal:

Implementacin en SQL: SELECT nombre_cliente FROM prestamo WHERE nombre_sucursal = Principal MINUS SELECT nombre_cliente FROM deposito WHERE nombre_sucursal = Principal o SELECT nombre_cliente FROM prestamo WHERE nombre_sucursal NOT IN(SELECT nombre_cliente FROM deposito WHERE nombre_sucursal = Principal)

Representacin en Algebra Relacional: (nombre_cliente (nombre_sucursal = "Principal" (prestamo))) -( nombre_cliente (nombre_sucursal = "Principal" (deposito))) 4. Obtener los nombres de los clientes que tienen depsito y prstamo al mismo tiempo en la sucursal 10:

Implementacin en SQL: SELECT nombre_cliente FROM prestamo WHERE nombre_sucursal = 10 INTERSECT SELECT nombre_cliente FROM deposito WHERE nombre_sucursal = 10 o SELECT nombre_cliente FROM prestamo WHERE nombre_sucursal

IN(SELECT nombre_cliente FROM deposito WHERE nombre_sucursal = 10)

Representacin en Algebra Relacional: ( nombre_cliente (nombre_sucursal = "10" (prestamo))) (


nombre_cliente (nombre_sucursal = "10" (deposito)))

5. Obtener los nombres de los clientes que tienen prstamo, cuenta, o ambas cosas en la sucursal 10 usando INNER JOIN:

Implementacin en SQL:

SELECT P.nombre_cliente FROM prestamo P INNER JOIN deposito D ON P.nombre_cliente = D.nombre_cliente

WHERE P.nombre_sucursal = 10 AND D.nombre_sucursal = 10

Representacin en Algebra Relacional: ( nombre_cliente (nombre_sucursal = "10" (prestamo))) <> prestamo.nombre_cliente = deposito.nombre_cliente ( nombre_cliente (nombre_sucursal = "10" (deposito)))

SPRIDEN PK SPRIDEN_PIDM SPRIDEN_ID SPRIDEN_LAST_NAME SPRIDEN_FIRST_NAME

STVSTAT SPRADDR PK PK SPRADDR_PIDM SPRADDR_ATYP_CODE SPRADDR_CITY SPRADDR_STREET_LINE1 SPRADDR_STREET_LINE2 SPRADDR_STREET_LINE3 SPRADDR_STAT_CODE SPRADDR_CNTY_CODE SFRSTCR PK PK PK SFRSTCR_TERM_CODE SFRSTCR_PIDM SFRSTCR_CRN SFRSTCR_RSTS_CODE SFRSTCR_GRDE_CODE SFRSTCR_GRDE_CODE_MID DATOS ADICIONALES: SPRIDEN SPRIDEN_CHANGE_IND IS NULL -> CUANDO NO TIENE NINGUN CAMBIO EN SUS NOMBRES SPRADDR SPRADDR_ATYP_CODE='PR' (PERMANENTE) O TM (TEMPORAL) SFRSTCR SFRSTCR_RSTS_CODE SFRSTCR_GRDE_CODE SFRSTCR_GRDE_CODE_MID SFRSTCR_TERM_CODE = 'RW' (REGISTRO WEB) O RE (REGISTRO PRESENCIAL) = NOTA FINAL = NOTA PARCIAL = PERIODO O SEMESTRE PK STVCNTY STVCNTY_CODE STVCNTY_DESC PK STVSTAT_CODE STVSTAT_DESC

STVSTAT STVSTAT_DESC -> NOMBRE DEL DEPARTAMENTO STVCNTY STVCNTY_DESC -> NOMBRE DEL DISTRITO

A. Se necesita elaborar las siguientes consultas SQL: 1. Listar las direcciones principales de los alumnos que estn registrados (activos) en el semestre 201110. El resultado de la consulta debe contener: * SPRIDEN_ID * SPRIDEN_LAST_NAME

* SPRIDEN_FIRST_NAME * SPRADDR_STREET_LINE1 * STVSTAT_DESC * STVCNTY_DESC 2. Listar los nombres, notas parciales y finales de los alumnos que estn registrados (activos) en el semestre 201110 y que son del distrito de TRUJILLO. 3. Listar los nombres, direcciones y nota final de los alumnos que estn registrados (activos) en el semestre 201110 y que obtuvieron como nota final mayor a 14 y que son de LA LIBERTAD. 4. Listar las nombres y nota final de los alumnos que viven en el departamento de La Libertad y que estn registrados (activos) en el semestre 201110 y que hicieron su matrcula presencial. 5. Listar los nombres, notas parciales y finales de los alumnos que estn registrados (activos) en el semestre 201110 y que tienen nota desaprobatoria y que hicieron su registro desde la WEB. 6. Listar los nombres, direcciones y nota final de los alumnos que estn registrados (activos) en el semestre 201110 y que se matricularon por WEB. B. Convertir las consultas anteriores en lgebra relacional C. Optimizar las consultas anteriores aplicando las reglas heursticas

Das könnte Ihnen auch gefallen