62
CC3201-1 BASES DE DATOS O TOÑO 2018 Clase 5: El Cálculo Relacional + SQL (I) Aidan Hogan [email protected]

CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

CC3201-1BASES DE DATOS

OTOÑO 2018

Clase 5: El Cálculo Relacional + SQL (I)

Aidan Hogan

[email protected]

Page 2: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

LA ÚLTIMA VEZ ...

Page 3: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Álgebra Relacional

Page 4: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

¿Se necesita un operador nuevo aquí?

Formalizando demasiadas preguntas

Y ¿marcas de vino que tienen un

vino de cada origen de vinos?

Una tarea.

Page 5: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

La solución completa …

Page 6: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

División (una abreviatura)

¿Cuáles marcas de vino tienen un

vino de cada región de vinos?

Page 7: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

EL CÁLCULO RELACIONAL

(En breve)

Capítulo 4.3 | Ramakrishnan / Gehrke

Page 8: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

¿hay otra forma de

formalizar consultas?

Page 9: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Tuplas

¿Cuáles cervezas hay?

Page 10: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección

¿Cuáles cervezas de la marca

“Austral” hay?

Page 11: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección (>, ∧, etc.)

¿Cuáles ales son

más fuertes que 4,8?

Page 12: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Proyección

Un paso atrás …

¿Cuáles tipos de cerveza hay?

Page 13: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional:Selección + Proyección

Y ¿cuáles tipos tienen una cerveza

más fuerte que 4,8?

Page 14: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección + Proyección + Intersección

Estoy curioso ¿cuáles marcas de

cerveza tienen un ale y un lager?

Page 15: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección + Proyección + Diferencia

Y ¿cuáles marcas de cervezas

tienen un ale pero no un lager?

Page 16: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección + Proyección + Unión

Y ¿cuáles marcas de cervezas

tienen un ale o un lager?

¿En el cálculo?

Page 17: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Selección + Proyección + Unión

Y ¿cuáles marcas de cervezas

tienen un ale o un lager?

Page 18: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: Join

¿Cuáles son los pares de nombres de

cervezas donde la primera cerveza

sea más fuerte que la segunda?

Page 19: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: División

¿Cuáles marcas de vino que tienen

un vino de cada origen de vinos?

¿En el cálculo?

Page 20: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: División

¿Cuáles marcas de vino tienen un

vino de cada región de vinos?

Page 21: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: División

¿Cuáles marcas de vino tienen un

vino de cada región de vinos con

un precio mayor que 4000?

Page 22: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional (de tuplas)

• Fórmulas atómicas:

• Una fórmula puede ser

– Una fórmula atómica o

– Sean (recursivamente) p y q formulas:

¿Se necesitan todos estos operadores?

Page 23: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: División

¿Cuáles marcas de vino tienen un

vino de cada región de vinos con

un precio mayor que 4000?

¿Sin ?…

Page 24: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El Cálculo Relacional: División

¿Cuáles marcas de vino tienen un

vino de cada región de vinos con

un precio mayor que 4000?

equivalente a

Page 25: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Consultas (no) seguras

• Sintácticamente correcta pero …

• Pide todas las tuplas que no estén en Cerveza (pero que satisfagan el esquema de Cerveza)

– ¡Puede ser infinito! (“No segura”)

Una consulta es segura si puede generar

todas las soluciones considerando solo las

constantes en los datos y la consulta.

Una definición aproximada

Page 26: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El álgebra versus el cálculo (seguro)

… tienen la misma expresividad.

Page 27: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El álgebra versus el cálculo (seguro)

… tienen la misma expresividad.

¿Qué piensan ustedes?¿Cuál es mejor … el álgebra o el cálculo?

Page 28: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

STRUCTURED QUERY LANGUAGE

(SQL)

El lenguaje estructurado de consulta

Capítulo 5 Database Management Systems,Ramakrishnan / Gehrke (Third Edition)

Page 29: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

El álgebra y el cálculo

… ¿cómo se pueden expresar estos lenguajes matemáticos en un lenguaje computacional?

Page 30: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Los inicios de SQL …

Conceptualizado por

Donald Chamberlin (IBM) y Raymond F. Boyce (IBM)

en 1974

Page 31: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

1974 …

Page 32: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

La evolución de SQL

Page 33: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Sistemas de bases de datos (con SQL)

http://db-engines.com/en/ranking/relational+dbms

¡Varios sistemas pueden tener varias interpretaciones del estándar de SQL!

Pero normalmente el “core” de SQL es compatible en los sistemas más populares.

Page 34: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

SQL en alto nivel

• Lenguaje de Manipulación de Datos (LMD)– o DML: Data Manipulation Language en inglés

– Actualizar filas, consultar tablas, etc.

• Lenguaje de Definición de Datos (LDD)– o DDL: Data Definition Language en inglés

– Crear y definir tablas

• Disparadores (triggers), transacciones, seguridad, SQL dinámico, etcétera

Page 35: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Los planetas

Page 36: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Mientras tanto en Plutón …

Page 37: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Forma básica de una consulta de SQL

Page 38: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Proyectar todo: SELECT *

Page 39: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

¡Cuidado!

Page 40: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Proyectar algo: SELECT [v1, …, vn]

Page 41: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Seleccionar filas: WHERE (=|<>|<|<=|etc.)

Page 42: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Seleccionar filas: WHERE … AND … (OR|NOT)

Page 43: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Duplicados: SELECT

¿Algún problema aquí?

Page 44: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las
Page 45: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Distinto: SELECT DISTINCT

SQL “torce las reglas” del álgebra relacional a veces, por ejemplo, para permitir

duplicados, orden, extensiones, etcétera.

¿Qué piensan ustedes?¿Duplicados en tablas/resultados son útiles?

Page 46: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Ordenar resultados: ORDER BY [DESC|ASC]

Page 47: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Reunir tablas: JOIN

Page 48: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Alias: AS

Page 49: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Alias: tablas

Page 50: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Unión (distinta): UNION

Page 51: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Unión (con alias): UNION + AS

Page 52: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Unión (bruta): UNION ALL

Page 53: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Diferencia: EXCEPT

Page 54: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Intersección: INTERSECT

Page 55: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Patrones simples: LIKE

Page 56: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Patrones simples: NOT LIKE

Page 57: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

LIKE

¡Distinción de mayúsculas depende de

la configuración de un sistema en particular!

Page 58: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Abreviatura: IN

Page 59: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Abreviatura: BETWEEN

Page 60: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Una tarea

• Pensar en la forma de representar estas consultas usando el álgebra y el cálculo

Page 61: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

LA PRÓXIMA VEZ, CONTINUAREMOS CON MÁS:

STRUCTURED QUERY LANGUAGE (SQL)

Capítulo 4 & 5 | Ramakrishnan / Gehrke

Page 62: CC3201 Bases de Datos - Aidan Hoganaidanhogan.com/teaching/cc3201-1-2018/lectures/BdD2018-05.pdf · Consultas (no) seguras •Sintácticamente correcta pero … •Pide todas las

Preguntas?