DML SQL II. Comparaciones con relaciones



Documentos relacionados
DML en SQL. Consultas sencillas usando el DML de SQL

1. DML. Las subconsultas

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

A.1. Definiciones de datos en SQL

MANUAL BÁSICO DEL LENGUAJE SQL

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Sub consultas avanzadas

Bases de Datos 2. Teórico

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Bases de Datos: Structured Query Language (SQL)

Unidad. Lenguaje SQL. (Structured Query Language)

FUNCIONES EN SQL SERVER

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Tutorial de SQL - El comando SELECT

El lenguaje SQL es un lenguaje estándar para el acceso y

SQL (Structured Query Language)

Práctica 3. Consultas SQL

5- Uso de sentencias avanzadas

select nombre from profesores where categoria='aso6';

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

Procedimientos para agrupar y resumir datos

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE)

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Curso SQL Nivel Avanzado 1. Miguel Jurado García

SQL Server FEMEPA SQL Server 2000

EXISTS y NOT EXISTS. Empleados que no trabajan en el proyecto 527.

Tema 4. Manipulación de datos con SQL

Restricciones de Integridad

T12 Vistas y tablas temporales

Consultas con combinaciones

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

S.Q.L. (Lenguaje de Consulta Estructurada)

Boletín de Problemas de la Asignatura II18 Bases de Datos. Ingeniería Informática Universitat Jaume I

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Bases de Datos SQL - Ejemplos

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Trabajo con Subconsultas

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

SQL. Orígenes y Evolución

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

ESQUEMA DE BASE DE DATOS ATROPELLOS

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Definición de XQuery.

Entrarás a formar parte de nuestra bolsa de empleo a la que acuden las empresas en busca de nuestros alumnos.

S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas. Sistemas de Bases de Datos II - ITS EMT CETP

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

BREVE INTRODUCCIÓN AL SQL Aplicación al Programa Escuela Última actualización: 17/10/2000

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Subconsultas. Copyright Oracle Corporation, All rights reserved.

3 Consultas y subconsultas

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

Base de datos Lenguaje SQL

Primeramente estudiaremos la forma básica de la sentencia SELECT, que esta formado por:

ÍNDICE PRIMERA PARTE... 17

1.264 Tema 7. Introducción a SQL

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRÓNICA Y COMPUTACIÓN

Ficheros y Bases de Datos Curso Ingeniería Técnica de Informática Primer Parcial. 1-Junio Nombre:

Tema: SUBCONSULTAS Y CREACION DE VISTAS.

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Nociones de performance

PHP y MySQL. Indice: Switch Bucles For While do...while

Guía de ejercicios de SQL

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

Base de datos Procedimientos Almacenados y Funciones

SQL Los fundamentos del lenguaje

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Grupo Kybele, Pág. 1

Bases de datos: Sistemas de bases de datos:

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Primer Parcial de Fundamentos de Base de Datos

Bases de datos relacionales y el modelo entidad-relación

SENTENCIAS Y CONSULTAS EN SQL SERVER

Capítulo 12: Indexación y asociación

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

EJERCICIOS RESUELTOS

CONSULTAS SIMPLES SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

8 SQL SERVER 2008 RA-MA

Práctica A: Procedimientos para agrupar y resumir datos

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

Diseño de Bases de Datos Bases de Datos Documentales Grao en Información e Documentación Curso 2013/2014

Repaso de Conceptos Básicos de Bases de Datos

Sql Basico. Seminar Introduction

Hoja1!C4. Hoja1!$C$4. Fila

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

TEMA 20: CONCEPTOS BÁSICOS DE SQL

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Modelos y Bases de Datos

SQL (Structured Query Language)- DML

Optimización de consultas Resumen del capítulo 14

Principios de Bases de Datos Relacionales, Normalización. Unidad 4

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Descriptor del curso. Nombre del curso: Haciendo consultas en SQL Server Descripción:

Transcripción:

DML SQL II Comparaciones con relaciones

Subconsultascopiar Hasta ahora las condiciones en WHERE involucraban valores escalares Pero, como en el caso de Julie Andrews puede que aparezca SELECT como parte de la condición descrita en WHERE Esta subconsulta puede devolver un valor O puede devolver una relación que será procesada valor por valor usando IN, EXISTS, ALL, ANY, BETWEEN...

Subconsultas que Involucran Escalares Reparto de 'Star Wars' que tiene id 1 SELECT nombre FROM actor, reparto WHERE pelicula_id=1 AND actor_id=actor.id;

Subconsultas que Involucran Escalares En lugar de realizar un producto escalar podemos hacer primero una subconsulta que con los identificadores de los actores SELECT nombre FROM actor WHERE id = (SELECT DISTINCT actor_id FROM reparto WHERE pelicula_id = 1 ); Run-time error, si se genera más de una tupla actor_id 12345

Condiciones que Involucran Relaciones 1. EXISTS R : TRUE sii R es una relación no vacía 2.s IN R : TRUE si s esta en R Sea s un escalar, R debe ser una relación compuesta por un único atributo 3. s op ALL R, op = {<,>,<>,=, }: TRUE si s es mayor, menor, etc que TODOS los valores de R. 4. s op ANY R : TRUE si s es mayor, menor, que al menos un valor de R

Operadores en Subconsultas SELECT... WHERE... at < ALL/ANY (subconsulta) atributo? ALL/ANY > ALL/ANY? ALL/ANY = ALL/ANY <> ALL/ANY Se puede preceder con NOT, e.g.: SELECT... WHERE... NOT (at < ALL/ANY...)

Operadores en Subconsultas: IN Asumiendo que una subconsulta produzca varias tuplas t Si la tupla t tiene el mismo numero de atributos que una relación R podemos comprobar si t esta contenida en R usando el operador IN SELECT... WHERE... at IN (subconsulta) se puede usar en conjunción con NOT: SELECT... WHERE... at NOT IN Forma General: SELECT... WHERE... at IN (subconsulta) donde at puede ser tanto un escalar como una tupla.

Ejemplo de uso de IN-I Películas protagonizadas por Harrison Ford Opción 1: Usando el producto escalar SELECT titulo FROM actor, pelicula, reparto WHERE nombre = 'Harrison Ford' AND actor.id=actor_id AND pelicula_id=pelicula.id;

Ejemplo-I (Cont) Opción 2: Usando consultas anidadas y el operador IN SELECT titulo FROM pelicula WHERE id IN (SELECT pelicula_id FROM reparto WHERE (actor_id) IN (SELECT id FROM actor ); WHERE nombre = 'Harrison Ford' )

Ejemplo-II Nombres y estrellas de todas las películas en las que actuó 'Julie Andrews' Primero encontremos los id de sus películas SELECT pelicula_id FROM reparto, actor WHERE actor_id=actor.id AND nombre='julie Andrews'; y luego los nombres de las películas y las estrellas SELECT titulo, nombre FROM pelicula, reparto, actor WHERE pelicula_id=pelicula.id AND actor_id=actor.id AND ord=1 AND pelicula.id IN (SELECT pelicula_id FROM reparto, actor WHERE actor_id=actor.id AND nombre='julie Andrews');

Ejemplo-II (Cont) EXPLAIN SELECT titulo, Actor1.nombre FROM pelicula, reparto Reparto1, reparto Reparto2, actor Actor1, actor Actor2 WHERE Reparto1.pelicula_id=pelicula.id AND Reparto2.pelicula_id=pelicula.id AND Reparto1.actor_id=Actor1.id AND Reparto2.actor_id=Actor2.id AND Reparto1.ord=1 AND Actor2.nombre='Julie Andrews' ;

Subconsultas que se ejecutan varias veces Hasta la fecha las subconsultas se han evaluado una sola vez. Pero esto no es necesariamente así. Es posible evaluar la subpregunta por cada valor del atributo/s que se compare Chequeo de consistencia (ejemplo capítulo anterior pag 20) SELECT Star1.nombre, Star1.id FROM actor Star1, actor Star2 WHERE Star1.nombre = Star2.nombre AND Star1.id < Star2.id;

Correlated Subqueries tuples que pertenecen a la relacion Star1 Chequeo de consistencia SELECT nombre, id FROM actor Star1 tuples que pertenecen a la relacion actor WHERE nombre = ANY (SELECT nombre FROM actor ); WHERE id < Star1.id AND nombre = Star1.nombre Para cada iteración de la consulta principal se realiza la subconsulta

Ejemplos Actores que han trabajado con 'Orson Welles' Primero encontremos los id de sus películas SELECT pelicula_id FROM reparto, actor WHERE actor_id=actor.id AND nombre= 'Orson Welles'; y luego los nombres de quien a trabajado en esas películas SELECT nombre, titulo FROM actor, reparto, pelicula WHERE actor.id=actor_id AND pelicula_id=pelicula.id AND pelicula_id IN (SELECT pelicula_id FROM reparto, actor WHERE actor_id=actor.id AND nombre='orson Welles');

Otro Ejemplo Actores que han realizado al menos una película antes de 1930 Lo podemos rescribir como Encuentra todos los actores tales que exista al menos una película en la que hayan actuado antes de 1930 SELECT DISTINCT nombre FROM reparto,actor WHERE actor.id= actor_id AND EXISTS ( SELECT * from pelicula WHERE agno < 1930 AND id = pelicula_id);

SELECT DISTINCT nombre FROM reparto,actor, pelicula WHERE actor.id= actor_id AND pelicula.id= pelicula_id AND agno < 1930;

Subconsultas en FROM!!!! También es posible usar una subconsulta en lugar de una relación ya almacenada como entrada de FROM Es obligatorio proporcionar un alias Películas estrenadas en 1978 por orden de numero de actores en el reparto SELECT COUNT(titulo), Temp.cc FROM (SELECT pelicula_id, COUNT(actor_id) AS cc FROM reparto, pelicula WHERE agno=1978 AND pelicula_id=id GROUP BY pelicula_id) AS Temp, pelicula WHERE pelicula_id=id ORDER BY Temp.cc; COUNT: devuelve el numero de tuplas

Subconsultas en FROM!!!! Repetir con view Películas estrenadas en 1978 por orden de numero de actores en el reparto SELECT COUNT(titulo), Temp.cc FROM (SELECT pelicula_id, COUNT(actor_id) AS cc FROM reparto, pelicula WHERE agno=1978 AND pelicula_id=id GROUP BY pelicula_id) AS Temp, pelicula WHERE pelicula_id=id ORDER BY Temp.cc; COUNT: devuelve el numero de tuplas

Agregación Operaciones que calculan un valor único a partir de una columna de valores SUM, AVG, MIN, MAX, COUNT Cuántas películas, actores, relaciones hay en la base? SELECT COUNT(*) FROM pelicula; solo vale para count Si queremos estar seguros de que no contamos el mismo actor dos veces SELECT COUNT(nombre) FROM actor; SELECT COUNT(DISTINCTnombre)FROM actor;

Agrupando Tuplas A menudo no queremos agrupar TODA la columna Listado de actores ordenado por numero de veces que son estrellas Queremos una salida como: nombre Count (ord=1) Pedro Pérez 1 Joe Dalton 3 Para ello se usa GROUP BY seguido de una lista con los atributos a agrupar

GROUP BY SELECT A1, SUM(A2) FROM R1 GROUP BY A1; Muy importante!! SELECT tiene dos clases de términos (1) Agregaciones (2) Atributos que aparecen en la orden GROUP BY Cuando la orden SELECT tiene agregados SOLO aquellos atributos que se mencionan en GROUP BY pueden aparecer no agregados.

Ejemplo GROUP BY Listado de actores ordenado por numero de veces que son estrellas (solo para aquellos con mas de 10 estrellatos) CREATE VIEW ranking AS SELECT actor_id, count(pelicula_id) AS stars FROM reparto WHERE ord=1 GROUP BY actor_id; SELECT nombre, stars FROM actor, ranking WHERE id=actor_id and stars > 10 ORDER BY stars;

HAVING Permite seleccionar grupos en base a alguna propiedad del grupo SELECT x, sum(y) FROM test1 GROUP BY x HAVING sum(y) > 3;

Sintaxis de una consulta SQL Si aparecen deben hacerlo en este orden SELECT FROM WHERE GROUP BY HAVING ORDER BY obligatorios

Procesamiento de una Consulta 1. Crear el producto descrito en FROM 2. Aplicar las restricciones descritas en WHERE 3. Si no hay group-by, proyectar la relación (2) tal y como describa SELECT. Hacer ORDER BY. Fin. 4. En caso contrario agrupar las tuplas por valores tal y como este especificado por GROUP-BY 5. Aplíquese HAVING 6. Aplíquese SELECT. 7. ORDER BY. Fin.

GROUP BY

Procesamiento de una consulta con funciones de agregacion