La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IBD Clase 15.

Presentaciones similares


Presentación del tema: "IBD Clase 15."— Transcripción de la presentación:

1 IBD Clase 15

2 SQL Lenguaje de Consultas Estruturado (SQL)
Lenguaje de trabajo estándard para modelo relacional Componentes DDL: Data Definition Language DML: Data Manipulation Language (AR y CRT) Supongamos que las tablas que tenemos para los ejemplos son: Sucursal= (nombre_sucursal, ciudad_sucursal, activo) Cliente=(nombre-cliente, dirección_cliente, ciudad_cliente) Préstamos=(nombre_sucursal, número_prestamo, importe) PropietarioPrestamo=(nombre_cliente, número_prestamo) Cuenta=(nombre_surcursal, número_cuenta, saldo) Propietariocuenta=(número cuenta, nombrecliente) IBD - CLASE 15 UNLP - Facultad de Informática

3 SQL DDL - Lenguaje de definición de datos.
Definición de esquemas,relaciones, indices y vistas (una vista es una tabla virtual, ya que sus filas no se almacenan físicamente, sino que son producto de una consulta) Autorizaciones al acceso a datos Definición de reglas de integridad. Control de Concurrencia DML - Lenguaje interactivo de manipulación de datos. Consultar datos almacenados. Modificar el contenido de los datos almacenados. IBD - CLASE 15 UNLP - Facultad de Informática

4 SQL Ej1: todas las sucursales de la relación sucursal
Estructura básica: 3 cláusulas Select (equivale a ) From (equivale a x) Where (equivale a ) a1,...,an (p (r1 x ... X rm ) ) equivale a Select a1,..., an From r1,..., rm Where P Ej1: todas las sucursales de la relación sucursal Ejercicio uno: Select nombre_sucursal From sucursal IBD - CLASE 15 UNLP - Facultad de Informática

5 SQL Select * (incluye todos los atributos de las tablas que aparecen en el from) Distinct (eliminan tuplas duplicadas) All (valor por defecto, aparecen todas las tuplas) IBD - CLASE 15 UNLP - Facultad de Informática

6 SQL Ej2: nombres de las sucursales en la relación préstamo sin repetición Operaciones en el select Select nombre, saldo * 3 From cliente Where Operadores lógicos Ej3: préstamos hechos en sucursal X y monto superior a 20000$ Between Ej4: préstamos cuyo monto este entre y 30000$ Ejemplo dos Select distinct nombre_sucursal From préstamo Ejemplo tres: Select número_prestamo Where nombre_sucursal = “x” and importe > 20000 Ejemplo cuatro: Select numero_prestamo From prestamo Where importe between and 30000 IBD - CLASE 15 UNLP - Facultad de Informática

7 SQL From: producto cartesiano
Ej5: nombre de cliente y # prestamo, de la sucursal X. Renombre: tanto para relaciones como para atributos Atributos: presentarlo con otro nombre Select T1.Pac_numero AS Nro_Paciente, from Atenciones AS T1 Relaciones: un producto cartesiano contra si mismo Ej 6: nombre de las sucursales que poseen activo mayor que al menos una sucursal situada en Buenos Aires. Ejemplo cinco: Select nombre_cliente, #prestamo From prestamo, cliente Where prestamo.#prestamo = Cliente.#prestamo and nombre_sucursal = ‘x’ Ejemplo seis: Select distinct T.nombre_sucursal From sucursal as T, sucursal as S Where T.activo > S.activo and S.ciudad_sucursal = ‘Buenos Aires’ IBD - CLASE 15 UNLP - Facultad de Informática

8 SQL Operaciones sobre strings Like, %, _
“Alfa%”: cualquier cadena que empiece con Alfa “%casa%”: cualquier cadena que tenga casa en su interior “_ _ _”: cualquier cadena con tres caracteres “_ _ _%”: cualquier cadena con al menos tres caracteres. Ej7: nombre del clientes cuya domicilio contenga el string XXX Ejemplo siete: Select nombre_cliente From cliente Where domicilio_cliente Like “%XXX%” IBD - CLASE 15 UNLP - Facultad de Informática

9 SQL Ordenamiento de las tuplas resultado
Order By atributo: especifica el atributo por el cual las tuplas serán ordenadas Ej8: presentar todos los clientes ordenados por nombre. Desc, asc: por defecto ascendente, se puede especificar descendente. Facturas=(Nro,Fecha,Hora) Ej9: presentar las facturas del mes de agosto ordenadas por fecha desde el 31 al 1 de agosto y por hora de realización. Ejemplo ocho Select nombre_cliente From cliente Order by nombre_cliente Ejemplo nueve (no tiene nada que ver con la estructura anterior) Select * From Facturas Where Month(Fecha) = 8 Order by fecha desc, hora IBD - CLASE 15 UNLP - Facultad de Informática

10 SQL Operaciones sobre conjuntos
Unión: agrupa las tuplas resultantes de dos subconsultas. Union all conserva duplicados Ej10: clientes con cuentas o prestamos en un banco Intersección: (intersect) idem anterior. Ej11: clientes con cuentas y préstamos en un banco Diferencia: (except) Ej12: clientes con cuentas y sin préstamos en un banco Ejemplo diez: (Select nombre_cliente From Propietariocuentas) Union From Propietarioprestamos) Ejemplo once: From Propietariocuentas) Intersect Ejemplo doce: From Propietariocuentas) Except IBD - CLASE 15 UNLP - Facultad de Informática

11 SQL Funciones de agregación:
Promedio (avg): aplicable a atributos numéricos, retorna el promedio de la cuenta Mínimo (min): retorna el menor elemento no nulo dentro de las tuplas para ese atributo Máximo (max): retorna el mayor elemento no nulo dentro de las tuplas para ese atributo Total (sum): aplicable a atributos numéricos, realiza la suma matemática Cuenta (count): cuenta las tuplas resultantes. Hacer un ejemplo on line no vale la pena poner caso de cada uno IBD - CLASE 15 UNLP - Facultad de Informática

12 SQL Agrupamientos (group by):
Permite agrupar un conjunto de tuplas por algun criterio Ej13: obtener el saldo promedio de las cuentas de cada sucursal. Ej14: contar el número de clientes que tiene cada sucursal. Having: permite aplicar condiciones a los grupos Ej15: presentar las sucursales y su saldo promedio siempre y cuando superen 20000$ Ej16: saldo promedio de cada cliente que vive en La Plata, y tienen al menos 3 cuentas. Ejercicio trece: Select nombre_sucursal, avg(saldo) From cuenta Group by nombre_sucursal Ejemplo catorce: un cliente solo debe contarse una vez aunque tenga varias cuentas, es un solo cliente. Select nombre_sucursal, count(distinct nombre_cliente) From cuenta, propietariocuenta Where cuenta.número = propietariocuenta.número Ejemplo quince: Having avg(saldo) > 20000 Ejemplo dieciseis: Select propietariocuenta.nombre_cliente, avg(saldo) From propietariocuenta, cuenta, cliente Where propietariocuenta.número_cuenta = cuenta.número_cuenta and propietariocuenta.nombre_cliente = cliente.nombre_cliente and ciudad_cliente = “La Plata” Group by propietariocuenta.nombre_cliente Having count (distint propietariocuenta.número_cuenta)>=3 IBD - CLASE 15 UNLP - Facultad de Informática

13 SQL Valores nulos: Subconsultas anidadas
Ej17: Mostrar aquellos préstamos que tengan el importe nulo. (no significa 0) Subconsultas anidadas Pertenecia a conjuntos: IN Ej18: clientes con prestamos y cuentas en el banco, cualquier sucursal (otra forma) Ej19: clientes que tengan prestamo y cuenta en la sucursal llamada “La Plata” Ejemplo diecisiete: Select número_prestamo From préstamo Where importe is null (se puede utilizar is not null) Ejercicio dieciocho: Select distinct nombre_cliente From propietarioprestamo Where nombre_cliente in (Select nombre_cliente From propietariocuenta) Ejercicio diecinueve: From propietarioprestamo as pp, prestamo as p Where pp.#préstamo = p.#prestamo and p.nombre_sucursal=“La Plata” and pp.nombre_cliente in (Select nombre_cliente From propietariocuenta, cuenta Where propietariocuenta.#cuenta = cuenta.#cuenta and cuenta.nombre_sucursal = “LP”) IBD - CLASE 15 UNLP - Facultad de Informática

14 SQL Comparación de Conjuntos
> some ( <, =, >=, <=, <>) Ej20:presentar las sucursales que tengan activo mayor que alguna otra (otra forma) > all ( <, =, >=, <=, <>) Ej21: presentar la sucursal que tenga activo superior a todas (otra forma) Ej22: encontrar la sucursal que tiene el mayor saldo promedio. Ejemplo veinte: Select nombre_sucursal From sucursal Where activo > some ( select activo from sucursal where ciudad_sucursal=“LP”) Ejemplo veintiuno: Where activo > all ( select activo Ejemplo veintidos: From cuenta Group by nombre_sucursal Having avg (saldo) >= all ( select avg saldo from cuenta group by nombre_sucursal) IBD - CLASE 15 UNLP - Facultad de Informática

15 SQL Cláusula Exist: devuelve verdadero si la subconsulta argumento no es vacía. Ej23: obtener los clientes que tienen tanto una cuenta como un préstamo en el banco. Ej24: obtener los clientes que tienen cuentas en todas las sucursales de la ciudad de Buenos Aires. Ejercicio veintitres: Select nombre_cliente From propietarioprestamo Where Exist ( Select * From propietariocuenta Where propietarioprestamo.nombre_cliente=propietariocuenta.nombre_cliente) Ejercicio veinticuatro: Select distinct S.nombre_cliente From propietariocuenta as S Where Not Exist (( Select nombre_sucursal From sucursal Where ciudad_sucursal = “Buenos Aires) except ( Select R.nombre_sucursal From propeitariocuenta as T, cuenta as R Where T.numero_cuenta=R.numero_cuenta and S.nombre_cliente=T.nombre_cliente)) IBD - CLASE 15 UNLP - Facultad de Informática

16 SQL Comprobación de tuplas duplicadas.
Unique: devuelve verdadero si la subconsulta argumento no produce tuplas duplicadas. Ej25: clientes que tienen una sola cuenta en la sucursal llamada XXX. Ejercicio veinticinco: Select T.nombre_cliente From propietariocuenta as T Where unique (( Select R.nombre_cliente From cuenta as C, propietariocuenta as R Where T.nombre_cliente=R.nombre_cliente and R.Nro_cta=C.nro_cuenta and C.nombre_sucursal = “XXX”)) IBD - CLASE 15 UNLP - Facultad de Informática

17 SQL Creación de vistas Una vista es un objeto que no contiene datos por si mismo. Es una clase de tabla cuyo contenido es tomado de otras tablas por medio de la ejecución de una consulta. Create View nombre as <expresion> Ej26: crea una vista con todos los clientes y consultar de ahí todos los de sucursal XXX Ejercicio veintiseis: Create view todos_clientes as select nombre_cte (select nombre_suc, nombre_cte from todos_clientes From cuenta, prop.cuenta where ..... Where nrocta iguales) union (idem prestamos y prestatario IBD - CLASE 15 UNLP - Facultad de Informática

18 SQL Modificación de la BD
Borrado: eliminar una o mas filas de una tabla: DELETE FROM tab_name [WHERE condición]; Ej27: borrar las cuentas de una sucursal Ej28: borrar las cuentas con saldo entre 100 y 200. Ejercicio veintisiete: Delete from cuenta Where nombre_sucursal=“xxx” Ejercicio veintiocho: Where prestamo between 100 and 200 IBD - CLASE 15 UNLP - Facultad de Informática

19 SQL Inserción: INSERT INTO tab_name (<column_name>,) VALUES (<valor>,) Existen dos maneras básicas de insertar. Insertar la fila completa Insertar sólo algunas columnas de una fila En el segundo caso se debe necesariamente especificar los nombres de las columnas que se van a completar. Ej29: agregar una cuenta Ejercicio veintinueve: insert into cuenta values (...,.....,.....) IBD - CLASE 15 UNLP - Facultad de Informática

20 SQL Actualización Unión de relaciones
Ej30: modificar el saldo de las cuenta incrementar en un 5%. Unión de relaciones Realizar en cláusula From productos naturales Inner Join: producto natural entre atributos que se indican, quedando el atributo en común repetido Ej31: producto entre préstamo y propietarioprestamo Ejercicio treinta: update cuenta set saldo = saldo * 1.05 Ejercicio treinta y uno: prestamo inner join propietarioprestamo on prestamo.numero_prestamo = propietarioprestamo.número_prestamo Comentarios: se realiza la búsqueda de los número de prestamos de la tabla prestamo, si se encuentra en la otra tabla aparece en el resultado, primero todos los atributos de prestamo y luego todos los de propietario prestamo. IBD - CLASE 15 UNLP - Facultad de Informática

21 SQL Left outer Join: primero se calcula el inner join (idem anterior) y luego cadat tupla t perteneciente a la relación de la izquierda que no encontro par aparece en el resultado con valores nulos en los atributos del segundo lado. Right outer Join: idem anterior pero aparecen las tuplas t de la relación de la derecha Full outer join: aparecen las tuplas colgadas de ambos lados. Otras variantes: Natural: evita que el atributo común (por el que se hace la unión aparezca dos veces) IBD - CLASE 15 UNLP - Facultad de Informática

22 QBE Query By Example: Sintaxis bidimensional: una consulta se expresa como una tabla Se expresa la consulta con un “ejemplo” Se basa en el cálculo relacional de dominios Ejemplos en Access IBD - CLASE 15 UNLP - Facultad de Informática

23 SQL Ejercicios: Tablas Proveedor=(#prov, prnombre, situación, ciudad)
Partes(#par, color, panombre, situación, ciudad) Proyectos=(#proy, proynombre, ciudad) RPPP=(#prov, #par, #proy, cantidad) IBD - CLASE 15 UNLP - Facultad de Informática

24 SQL Ejercicios Obtener todos los detalles de los proyectos de Córdoba
#prov, que suministre parte al proyecto A1 ordenado por proveedor Envios con cantidad entre 300 y 500 #prov, #proy, #par para aquellas tuplas donde los tres elementos sean de la misma ciudad #parte suministradas por un proveedor de Córdoba a un Proyecto de Córdoba Cantidad de proyectos que tenga a S1 como proveedor Cantidad total de partes P1 suminstradas por S1 Select * b) select #prov From proyectos From RPPP Where ciudad=“Cordoba” Where #proy=“A1” Order by #proy c) Select * d) Select #Proy, #Prov, #Par From RPPP From Proveedor, parte, proyecto Where Cantidad between Where Proveedor.ciudad= parte. 300 and ciudad and Parte.ciudad=...... e) Select # f)Select count (distinct #proy) From RPPP, proyecto, proveedor From RPPP Where (proy.ciudad=“C” and Where (#prov=“S1) prov.ciudad=“C” and RPPP.#proy= proy.#proy and RPPP.#prov= Prov. G) Select Sum cant #prov) From RPPP Where (#prov=“S1” and #par=“P1”) IBD - CLASE 15 UNLP - Facultad de Informática

25 SQL Envíos que no tengan la cantidad nula
Obtener los colores de las partes suministras por proveedor S1. Obtener proyectos para los cuales s1 es el único proveedor Cambiar a Gris el color de las partes Rojas Eliminar el proyecto que no tenga envíos. Proveedor que vivan en igual ciudad que el proveedor S1. Proveedor que tenga máxima su situación Todos los proveedores menos el que tenga máxima su situación Nombres de los proveedores que suministran la parte P2. h) Select #proy, #par, #prov i) Select distinct color From RPPP From RPPP; Parte Where (cant is not null) Where (#Prov=“S1” and RPPP.#par=Parte.#par) j) Select #proy I’) Select distinct color From RPPP as RP From Parte Where Not Exist ( Where #par in (Select * Select * From RPPP From RPPP as RP Where #prov=“s1”) Where( RP2.#prov<>”S1” and k) Update Partes RP1.#proy=RP2.#proy) ) Set color = “Gris” where Color = “Rojo” l) Delete From Proyectos m) Select #prov Where #proy not in From Proveedor ( Select * Where ciudad = ( Select Ciudad From RPPP) From proveedor Where #prov=s1) IBD - CLASE 15 UNLP - Facultad de Informática

26 SQL Presentar aquellos proveedores que suministren todas las partes existentes en la tabla Obtener los número de partes provistas por más de un proveedor. Para este caso considerar que un proveedor sólo participa en un proyecto. Informar el número de parte que se suministre a un proyecto cualquiera tal que en promedio se suministro supere 200. o) select #prov From proveedor p) Select prnombre Where situacion < ( From proveedor select max(situacion) Where Exist ( Select * From proveedor) From RPPP r) Select #par Where( #parte=‘P2’ and From RPPP proveedor.#prov=#prov)) Group by #par q) Select prnombre Having count(*) > 1 From Proveedor s) Select # par Where not exist (si no las provee  existe) From RPPP (Select * ( no existe ene la tenrior no las provee) Group By #par From Parte Having Avg(cant) > 200 Where Not Exist (Select * (todas las partes que provee un proveedor) From RPPP Where (#prov=Prov.#prov and #par = Partes.#Par))) n ) Select #Prov from Proveedor as P1 where P1.situacion in (select max(P2.situacion) from Proveedor as P2 ) IBD - CLASE 15 UNLP - Facultad de Informática


Descargar ppt "IBD Clase 15."

Presentaciones similares


Anuncios Google