cc3201-1 b datos o 2017 clase 5: sql...

92
CC3201-1 BASES DE D ATOS O TOÑO 2017 Clase 5: SQL (II) Aidan Hogan [email protected]

Upload: hathu

Post on 11-Mar-2018

236 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

CC3201-1BASES DE DATOS

OTOÑO 2017

Clase 5: SQL (II)

Aidan Hogan

[email protected]

Page 2: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

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:

Page 3: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Forma básica de una consulta de SQL

Page 4: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Los planetas

Page 5: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

EL TEMA DE HOY …… MÁS SQL!

Capítulo 5.4-5.6 | Ramakrishnan / Gehrke

Page 6: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

El Álgebra Relacional en SQL

¿Hemos visto todo el álgebra en SQL? ¡Sí! (Y un poco más)

Page 7: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

• SELECT, FROM, WHERE

• ORDER BY• JOIN (simple)• UNION, INTERSECT, EXCEPT

• LIKE

• IN, BETWEEN

SQL • Más tipos de JOIN

• Nulos• Consultas anidadas• Agregación

Page 8: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

PRODUCTO CRUZ

Page 9: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruz: CROSS JOIN

Page 10: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

JOINS INTERNOS

Page 11: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: JOIN

Page 12: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: EQUI JOIN

EQUI JOINS usan sólo ‘=‘ en el JOIN

Page 13: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: JOIN

¿Esta consulta es un EQUI JOIN?

¡Sí! Sólo la condición del join cuenta.

Page 14: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: JOIN USING

Se puede usar JOIN USING cuando todos los atributos del JOIN tengan el mismo nombre

Page 15: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: NATURAL JOIN

Un EQUI-JOIN sobre los atributos que las tablas compartan (por pareja con AND).

Page 16: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: SELF JOIN

Un JOIN sobre la tabla misma

Page 17: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Cruzar tablas: INNER JOIN

INNER JOIN por defecto …

Page 18: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

JOINS EXTERNOS

Page 19: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Joins Externos

¿Todos los planetas (y sus aterrizajes sí hay datos disponibles)?

Page 20: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Joins Externos: LEFT [OUTER] JOIN

Se mantienen las tuplas de la izquierda si no hay datos desde la derecha

Page 21: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Joins Externos: RIGHT [OUTER] JOIN

Se mantienen las tuplas de la derecha si no hay datos desde la izquierda

Page 22: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Joins Externos: FULL OUTER JOIN

Se mantienen las tuplas de la derecha y la izquierda

Page 23: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Join Interno versus Joins Externos

Page 24: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

VALORES NULOShttps://es.wikipedia.org/wiki/Null_(SQL)

Capítulo 5.6 | Ramakrishnan / Gehrke

Page 25: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Nulos

DESCONOCIDO o INAPLICABLE

(No significa FALSO)

Page 26: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Nulos: IS NULL

Page 27: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Nulos: IS NOT NULL

Page 28: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Comparación con nulos

Page 29: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Comparación con nulos

¡El nulo en la consulta y el nulo en los datos son distintos!

Page 30: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Comparación con nulos

???

Cuando no importa el valor del desconocido, el resultado se mantiene. Cuando importa el valor del desconocido, el resultado es desconocido.

Page 31: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Comparación con nulos

Cuando no importa el valor del desconocido, el resultado se mantiene. Cuando importa el valor del desconocido, el resultado es desconocido.

Page 32: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Nulos: COALESCE

Elegir el primer valor que no sea NULL

Page 33: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

CONSULTAS ANIDADAS

Capítulo 5.4 | Ramakrishnan / Gehrke

Page 34: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/IN

Subconsulta

Page 35: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/NOT IN

Page 36: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas AnidAnidadasadas: WHERE/NOT IN

Page 37: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/EXISTS

Correlación:La subconsulta depende de la

consulta exterior

Page 38: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/NOT EXISTS

Page 39: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/(NOT) UNIQUE

UNIQUE (no suportado por Postgres):

0 o 1 resultados

Page 40: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/ANY (o SOME)

ANY y SOME son sinónimos

Page 41: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: WHERE/ALL

Page 42: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

MÁS CONSULTAS ANIDADAS

Page 43: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Valor

La subconsulta tiene que devolver un valor y una columna –si no…

Page 44: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Valor

Page 45: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Valor

Page 46: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Fila

Page 47: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Fila

Page 48: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Fila

Page 49: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: Fila

Page 50: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas Anidadas: FROM

El alias Multi es

obligatorio

Page 51: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

REGRESAREMOS A LAB 1

Page 52: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Lab 1

¿Con lo que hemos visto hasta ahora, cuáles preguntas podemos representar con SQL?

Page 53: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

AGREGACIÓN

Capítulo 5.5| Ramakrishnan / Gehrke

Page 54: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Operadores de agregación

Page 55: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: COUNT

Page 56: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: COUNT DISTINCT

Page 57: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: COUNT (DISTINCT afuera)

Page 58: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: COUNT(*)

Page 59: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: AVG

Depende del sistema

Postgres

Page 60: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: AVG DISTINCT

Depende del sistema

Postgres

Page 61: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: AVG (con casting)

Page 62: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: MIN

Page 63: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: MIN

Page 64: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación: MIN

Page 65: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación por planeta: explícitamente

Page 66: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación por planeta: GROUP BY

Page 67: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación por planeta: GROUP BY/HAVING

Page 68: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación por planeta: HAVING/EVERY

Page 69: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Agregación por planeta: HAVING/ANY

Postgres

Page 70: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

LIMITAR RESULTADOS

Más detalles: https://en.wikipedia.org/wiki/Select_(SQL)#Limiting_result_rows

Page 71: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

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 72: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Ordenar resultados: ORDER BY [DESC|ASC]

Page 73: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Devolver n resultados: FETCH FIRST

Una versión estándar (desde SQL:2008) que se usa en Postgres y DB2.

Page 74: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Devolver n resultados: LIMIT

Una versión no estándar que se usa en Postgres, SQLite y MySQL.

Page 75: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Devolver n resultados: TOP

Una versión no estándar que se usa en SQL Server y MS Access.

Page 76: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Devolver n resultados: ROW_NUMBER()

Una versión estándar (desde SQL:2003) que se usa en Postgres, DB2, MS Access, Oracle

Page 77: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Devolver empates: RANK()

Una versión estándar (desde SQL:2003) que devuelva empates en el orden.

Page 78: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Saltar n resultados: LIMIT + OFFSET

Una versión no estándar que se usa en Postgres, SQLite y MySQL.

Page 79: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

MÁS FUNCIONES

¡Dependen mucho del sistema particular!

Page 80: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Aritmético

Page 81: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Aritmético

Page 82: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Strings

Page 83: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Condicionales

Page 84: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

CONSULTAS DIRECTAS VS. CONSULTAS ANIDADAS

Page 85: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

SQL tiene mucha redundancia

Page 86: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas directas vs. consultas anidadas

Nombres y géneros de los co-actores de Liv Tyler.

¿Son equivalentes pero cuál es más eficiente?

Page 87: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas directas vs. consultas anidadas

Nombres y géneros de los co-actores de Liv Tyler.

¿Son equivalentes pero cuál es más eficiente?¡Hay poca diferencia!

Page 88: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Consultas directas vs. consultas anidadas

Nombres y géneros de co-actores de personas con una apellida “L%”.

¡Hay una diferencia (pero es poco predecible)!

Page 89: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

SQL es un lenguaje declarativo

Uno dice lo que quiere, no como se debería computar

Page 90: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

SQL es un lenguaje declarativo

Uno dice lo que quiere, no como se debería computar

– Idealmente, el motor puede elegir el mejor plan de ejecución independientemente de su expresión particular

• Pero, esto es caro, entonces en la práctica, hay diferencias

– Regresaremos al tema de rendimiento y optimización más adelante en el curso

– Pero en general, se puede expresar una consulta en la forma “más natural” y dejar la ejecución al motor

Page 91: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

• SELECT, FROM, WHERE

• ORDER BY• JOIN (simple)• UNION, INTERSECT, EXCEPT

• LIKE

• IN, BETWEEN

SQL • Más tipos de JOIN

• Nulos• Consultas anidadas• Agregación

Page 92: CC3201-1 B DATOS O 2017 Clase 5: SQL (II)aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-05.pdf · INNER JOIN por defecto ... Consultas directas vs. consultas anidadas Nombres

Preguntas?