clase 15 - lenguaje de consultas estruturado (sql)

26
IBD Clase 15

Upload: darwin-arias-martinez

Post on 24-Oct-2015

31 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

IBD

Clase 15

Page 2: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 152

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)

Page 3: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 153

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.

Page 4: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 154

SQL

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 PEj1: todas las sucursales de la

relación sucursal

Page 5: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 155

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)

Page 6: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 156

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 20000 y

30000$

Page 7: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 157

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.

Page 8: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 158

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

Page 9: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 159

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.

Page 10: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1510

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

Page 11: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1511

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.

Page 12: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1512

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.

Page 13: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1513

SQL

Valores nulos: • 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”

Page 14: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1514

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.

Page 15: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1515

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.

Page 16: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1516

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.

Page 17: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1517

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

Page 18: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1518

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.

Page 19: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1519

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

Page 20: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1520

SQL

Actualización• 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

Page 21: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1521

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)

Page 22: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1522

QBE

Query By Example:Sintaxis bidimensional: una consulta

se expresa como una tablaSe expresa la consulta con un

“ejemplo”Se basa en el cálculo relacional de

dominiosEjemplos en Access

Page 23: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1523

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)

Page 24: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1524

SQL

EjerciciosA. Obtener todos los detalles de los proyectos de

CórdobaB. #prov, que suministre parte al proyecto A1

ordenado por proveedor C. Envios con cantidad entre 300 y 500D. #prov, #proy, #par para aquellas tuplas donde

los tres elementos sean de la misma ciudadE. #parte suministradas por un proveedor de

Córdoba a un Proyecto de CórdobaF. Cantidad de proyectos que tenga a S1 como

proveedorG. Cantidad total de partes P1 suminstradas por S1

Page 25: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1525

SQL

H. Envíos que no tengan la cantidad nulaI. Obtener los colores de las partes suministras

por proveedor S1.J. Obtener proyectos para los cuales s1 es el

único proveedorK. Cambiar a Gris el color de las partes RojasL. Eliminar el proyecto que no tenga envíos.M. Proveedor que vivan en igual ciudad que el

proveedor S1.N. Proveedor que tenga máxima su situaciónO. Todos los proveedores menos el que tenga

máxima su situaciónP. Nombres de los proveedores que suministran la

parte P2.

Page 26: Clase 15 - Lenguaje de Consultas Estruturado (SQL)

UNLP - Facultad de InformáticaIBD - CLASE 1526

SQL

Q. Presentar aquellos proveedores que suministren todas las partes existentes en la tabla

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

S. Informar el número de parte que se suministre a un proyecto cualquiera tal que en promedio se suministro supere 200.