Consultas Complejas:

Documentos relacionados
all : Permite la aparición de filas idénticas (valor por defecto). distinct: No permite la aparición de filas idénticas.

Lenguaje SQL 1ª Parte: Manipulación de Bases de Datos

2.5.- El lenguaje estándar SQL

ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?

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

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

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Unidad. Lenguaje SQL. (Structured Query Language)

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

Bases de Datos 2. Teórico

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

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

ÍNDICE PRIMERA PARTE... 17

ÍNDICE INTRODUCCIÓN...17

BASES DE DATOS (IG18 Semipresencial) El Modelo Relacional Algebra Relacional y SQL

Bases de Datos SQL - Ejemplos

Temario. Índices simples Árboles B Hashing

Ser capaces de realizar una consulta dentro de otra

Características del lenguaje SQL

6- Combinación de tablas

8 SQL SERVER 2008 RA-MA

A.1. Definiciones de datos en SQL

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: SELECT. Ing. Alfonso Vicente, PMP

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

Base de datos I Facultad de Ingeniería. Escuela de computación.

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

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

Universidade da Coruña Departamento de Computación. Ampliación de SQL. Luis A. González Ares.

Manipulación de datos en SQL

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

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

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

Sistemas de Bases de Datos II ITS / ITSB EMT CETP

Consultas con combinaciones

ÍNDICE INTRODUCCIÓN...13

Tema 4. SQL. Juan Ignacio Rodríguez de León

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

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

select nombre from profesores where categoria='aso6';

SQLModificaciones a la BD

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

SQL (Structured Query Language)

Lenguaje SQL. SQL Structured Query Languaje. Capacidades del Lenguaje. Estructura Básica de una consulta SQL

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

2.4. Unidades de aprendizaje. Modelo Académico de Calidad para la Competitividad PSGB-02 15/22

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

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Consultas SQL INNER JOIN

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

1. DML. Las subconsultas

Temario. Índices simples Árboles B Hashing

Tema 4. Manipulación de datos con SQL

Bases de Datos: Structured Query Language (SQL)

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

1. Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos.

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

SQL Los fundamentos del lenguaje

Modificación de datos

CURSO DE SQL SERVER 2005

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) OPERADORES DE ÁLGEBRA RELACIONAL

BASES DE DATOS - SQL. Javier Enciso

ST31_Querying Microsoft SQL Server

UNIVERSIDAD TECNOLÓGICA ECOTEC FACULTAD DE SISTEMAS COMPUTACIONALES SYLLABUS. Base de Datos II CODIGO COM 338 CREDITOS 3

SQL Server FEMEPA SQL Server 2000

Sub consultas avanzadas

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

Guía práctica de SQL

Tema 4. Lenguajes de consulta comerciales

Oracle Database 10g: Introducción a SQL

Tema 33. El lenguaje SQL

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

Oracle Database: Introducción a SQL

FICHEROS Y BASES DE DATOS 2º ITIG 25/1/2002 NOMBRE

Bases de Datos Relacionales

BASES DE DATOS I CONSULTA DE DATOS

Taller SQL - SUP. Introducción al Lenguaje SQL. Claúsula Where. Sentencia Select Sentencia Insert Sentencia Update Sentencia Delete

Práctica 3: El lenguaje SQL (1ª parte). (4ª sesión)

DML en SQL. Consultas sencillas usando el DML de SQL

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

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

Curso SQL Nivel Avanzado 1. Miguel Jurado García

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

SQL (Structured Query Language)- DML

8283: Administración y programación en Microsoft SQL Server 2012

LENGUAJE DE MANIPULACIÓN DE DATOS

Oracle Fundamentos. Programa de Estudio.

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

ADMINISTRACION DE BASES DE DATOS EN ORACLE

3 Consultas y subconsultas

Consulta y manipulación de datos. El lenguaje SQL

TITULACIÓN Ingeniero Técnico en Informática de Gestión ASIGNATURAS DE SEGUNDO CURSO DEL PLAN 1999 BASE DE DATOS PROGRAMA:

SQL. Orígenes y Evolución

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

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

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

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 10. Álgebra Relacional

Transcripción:

Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Un grupo se puede entender como un conjunto de filas con el mismo valor para el conjunto de columnas por las que se agrupa (las incluidas en la cláusula GROUP BY). Obtener el el nombre de de cada equipo y la la edad media de de los los ciclistas de de dicho equipo: select nomeq, AVG(edad) from Ciclista group by nomeq ; Nomeq Edad Banesto 22 ONCE 25 PDM 32 Banesto 25 Kelme 28 ONCE 30 Kelme 29 Banesto 28 Bases de Datos Curso 2006/07 DSIC-UPV 1 Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Las funciones agregadas en las consultas agrupadas funcionan de forma diferente que en las consultas normales, devolviendo un valor por cada grupo formado. Nomeq Edad Banesto 22 Banesto 25 Banesto 28 ONCE 25 Un Valor ONCE 30 por Grupo PDM 32 Kelme 29 Kelme 28 select nomeq, AVG(edad) from Ciclista group by by nomeq ; Bases de Datos Curso 2006/07 DSIC-UPV 2

Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Entonces para la consulta: select nomeq, AVG(edad) from Ciclista group by by nomeq ; La solución, es: Nomeq Edad Banesto 25 ONCE 27,5 PDM 32 Kelme 28,5 Bases de Datos Curso 2006/07 DSIC-UPV 3 Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Ejemplo incorrecto: select nomeq, nombre, AVG(edad) from Ciclista group by by nomeq ; La La regla sintáctica que que aplican los los sistemas relacionales para asegurar el el buen funcionamiento de de las las consultas agrupadas es es la la siguiente: en en la la selección de de una una consulta agrupada, sólo pueden aparecer referencias a columnas por por las las cuales se se agrupa, referencias a funciones agregadas o literales. Bases de Datos Curso 2006/07 DSIC-UPV 4

Consultas Complejas: SELECCIÓN-AGRUPAMIENTO GROUP y WHERE: Si Si se se incluye la la cláusula where, la la aplicación de de esta cláusula se se produce previamente a la la agrupación 4 1 2 3 select nomeq, AVG(edad) from Ciclista where edad>25 group by by nomeq ; Bases de Datos Curso 2006/07 DSIC-UPV 5 Consultas Complejas: SELECCIÓN-AGRUPAMIENTO GROUP, WHERE y HAVING: La La cláusula HAVING sólo puede ir ir en en consultas agrupadas y es es similar a WHERE, pero en en un un orden diferente: 1º) 1º) Condición WHERE (se (se usa usa para las las filas) 2º) 2º) Agrupamiento y cálculo de de valores agregados 3º) 3º) Condición HAVING (se (se usa usa para los los grupos) En En la la cláusula HAVING sólo podrán aparecer directamente referencias a columnas por por las las cuales se se agrupan o a funciones agregadas. Bases de Datos Curso 2006/07 DSIC-UPV 6

Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Obtener el el nombre de de cada equipo y la la edad media de de sus sus ciclistas con con más más de de 25 25 años, de de aquellos equipos con con más más de de 3 corredores mayores de de 25 25 años. select nomeq, AVG(edad) from Ciclista where edad>25 group by by nomeq having COUNT(dorsal)>3; Bases de Datos Curso 2006/07 DSIC-UPV 7 Consultas Complejas: SELECCIÓN-AGRUPAMIENTO Obtener el el nombre del del ciclista y el el número de de puertos que que ha ha ganado, siendo la la media de de la la pendiente de de éstos superior a 10. 10. select C.nombre, COUNT(P.nompuerto) from Ciclista C, C, Puerto P where C.dorsal=P.dorsal group by by dorsal, nombre Agrupar siempre por por CP CP having AVG(P.pendiente)>10; Bases de Datos Curso 2006/07 DSIC-UPV 8

Trabajo a realizar Consultas Agrupadas y Generales (Ciclismo, Música y Biblioteca) Bases de Datos Curso 2006/07 DSIC-UPV 9 Combinaciones de Tablas Existen varias formas de de combinar dos dos tablas en en el el lenguaje SQL SQL dando lugar a una una expresión de de tabla : 1º) 1º) Incluir varias tablas en en la la cláusula FROM. 2º) 2º) Uso Uso de de subconsultas en en las las condiciones de de las las cláusulas WHERE o HAVING. 3º) 3º) Combinaciones conjuntistas de de tablas: utilizando operadores de de la la teoría de de conjuntos para combinar las las tablas. 4º) 4º) Concatenaciones de de tablas: utilizando diferentes formas variantes del del operador concatenación del del Álgebra Relacional. Bases de Datos Curso 2006/07 DSIC-UPV 10

Combinaciones Conjuntistas de Tablas Corresponden a los los operadores unión, diferencia e intersección del del Álgebra Relacional: 1º) 1º) UNION 2º) 2º) EXCEPT 3º) 3º) INTERSECT Permiten combinar tablas que que tengan esquemas compatibles. Bases de Datos Curso 2006/07 DSIC-UPV 11 Combinaciones Conjuntistas de Tablas UNIÓN: expresión_tabla union [all] término_tabla Realiza la la unión de de las las filas de de las las tablas provenientes de de las las dos dos expresiones. Se Se permitirán o no no duplicados según se se incluya o no no la la opción all. Obtener el el nombre de de todo el el personal de de la la vuelta: (select nombre from Ciclista) UNION (select director from Equipo); Bases de Datos Curso 2006/07 DSIC-UPV 12

Combinaciones Conjuntistas de Tablas INTERSECCIÓN: expresión_tabla intersect término_tabla Realiza la la intersección de de las las filas de de las las tablas provenientes de de las las dos dos expresiones. Obtener los los nombres de de las las personas que que son son tanto ciclistas como directores de de equipo : (select nombre from Ciclista) INTERSECT (select director from Equipo); Bases de Datos Curso 2006/07 DSIC-UPV 13 Combinaciones Conjuntistas de Tablas DIFERENCIA: expresión_tabla except término_tabla En Oracle es Minus Realiza la la diferencia de de las las filas de de las las tablas provenientes de de las las dos dos expresiones. Obtener los los nombres que que aparecen en en la la tabla de de ciclistas y no no en en la la de de directores: (select nombre from Ciclista) MINUS (select director from Equipo); Bases de Datos Curso 2006/07 DSIC-UPV 14

Concatenaciones de Tablas Corresponden a variantes del del operador concatenación del del Álgebra Relacional: 1º) Producto cartesiano (cross join) 2º) Concatenación interna (natural join) 3º) Concatenación externa (Left, Right, Full) 4º) Concatenación unión (union join) Bases de Datos Curso 2006/07 DSIC-UPV 15 Concatenaciones de Tablas Producto Cartesiano (cross join): tabla1 CROSS JOIN tabla2 Equivale a: a: SELECT * FROM tabla1, tabla2 Bases de Datos Curso 2006/07 DSIC-UPV 16

Concatenaciones de Tablas Concatenación Interna (1): referencia_tabla [natural] join [inner]referencia_tabla [on [on expresión_condicional using (comalista_columna) ] tabla1 JOIN tabla2 ON ON expresión_condicional Equivale a: a: Select * FROM tabla1, tabla2 WHERE expresión_condicional Bases de Datos Curso 2006/07 DSIC-UPV 17 Concatenaciones de Tablas Concatenación Interna (2): tabla1 JOIN tabla2 USING (c1, c2,.., cn) Equivale a: a: tabla1 JOIN tabla2 ON ON tabla1.c1 = tabla2.c1 AND tabla1.c2 = tabla2.c2 AND AND tabla1.cn = tabla2.cn Equivale a: a: Select * FROM tabla1, tabla2 WHERE tabla1.c1 = tabla2.c1 AND tabla1.c2 = tabla2.c2 AND AND tabla1.cn = tabla2.cn Bases de Datos Curso 2006/07 DSIC-UPV 18

Concatenaciones de Tablas Concatenación Interna (3): tabla1 NATURAL JOIN tabla2 Equivale a: a: tabla1 join tabla2 using ( c1, c2,..., cn) Donde tabla1 y tabla2 tienen n atributos Es Es un un JOIN por todos los atributos comunes de de las tablas). Bases de Datos Curso 2006/07 DSIC-UPV 19 Concatenaciones de Tablas Concatenación Interna (4): Obtener el el dorsal y nombre de de los los ciclistas que que han han llevado maillots: SELECT cl.dorsal, cl.nombre FROM (Ciclista NATURAL JOIN Llevar) AS AS cl; Equivale a: a: SELECT c.dorsal, c.nombre FROM Ciclista c, c, Llevar l WHERE c.dorsal = l.dorsal; Bases de Datos Curso 2006/07 DSIC-UPV 20

Concatenaciones de Tablas Concatenación Externa (1): referencia_tabla [natural] {left [outer] right [outer] full [outer] } JOIN referencia_tabla [on [on expresión_condicional using (comalista_columna) ] FULL, se se muestran las tuplas no no concatenadas de de tabla1 y tabla2 Bases de Datos Curso 2006/07 DSIC-UPV 21 Concatenaciones de Tablas Concatenación Externa (2): tabla1 LEFT ON JOIN tabla2 ON expresión_condicional (Concat. interna de de tabla1 y tabla2) union (tuplas de de la la tabla1 que no no están en en la la concatenación interna con valores nulos en en el el resto de de columnas) RIGHT equivale a LEFT con la la diferencia de de que las tuplas que se se muestran son las de de tabla2. Bases de Datos Curso 2006/07 DSIC-UPV 22

Concatenaciones de Tablas Concatenación Externa (3): EJERCICIO 33: 33: Obtener nombre de de todos los los equipos indicando cuantos ciclistas tiene cada uno: 1ª 1ª Opción (Incorrecta) SELECT e.nomeq, count(c.dorsal) FROM Equipo E, E, Ciclista C WHERE E.nomeq=C.nomeq GROUP BY BY e.nomeq; 2ª 2ª Opción (Correcta) SELECT e.nomeq, count(c.dorsal) El equipo PDM con 0 ciclistas no aparece FROM ( Equipo E LEFT JOIN Ciclista C ) on on E.nomeq=C.nomeq GROUP BY BY e.nomeq; Bases de Datos Curso 2006/07 DSIC-UPV 23 Concatenaciones de Tablas Concatenación Externa (4): EJERCICIO 33: 33: Obtener nombre de de todos los los equipos indicando cuantos ciclistas tiene cada uno: En En versiones anteriores de de ORACLE No No existe el el JOIN como tal. SELECT e.nomeq, count(c.dorsal) FROM Equipo E, E, Ciclista C WHERE E.nomeq=C.nomeq(+) GROUP BY BY e.nomeq; Se pone (+) en la parte de la ICA de la tabla de la que no se quieren mantener las tuplas Bases de Datos Curso 2006/07 DSIC-UPV 24

Concatenaciones de Tablas Concatenación Unión: tabla1 UNION JOIN tabla2 Crea una tabla donde el el esquema es es la la unión de de los esquemas de de las dos tablas, que pueden ser distintos. tuplas de de tabla1 con valores nulos en en las columnas de de tabla2 union tuplas de de tabla2 con valores nulos en en las columnas de de tabla1. Bases de Datos Curso 2006/07 DSIC-UPV 25 Introducción n de Información Instrucción INSERT: insert into tabla [(comalista_columna)] {default values values (comalista_átomos) expresión_tabla} Si no se incluye la lista de columnas se deberán insertar filas completas de tabla. Si se incluye la opción default values se insertará una única fila en la tabla con los valores por defecto apropiados en cada columna (según la definición de tabla). En la opción values (comalista_átomos) los átomos vienen dados por expresiones escalares. En la opción expresión_tabla, se insertarán las filas resultantes de la ejecución de la expresión ( SELECT ). Bases de Datos Curso 2006/07 DSIC-UPV 26

Introducción n de Información Instrucción INSERT: Añadir un un ciclista de de dorsal 101, nombre Joan Peris, edad 20 20 años y del del equipo Kelme : insert into Ciclista values (101, Joan Peris, 20, Kelme ); Bases de Datos Curso 2006/07 DSIC-UPV 27 Modificación n de Información Instrucción UPDATE: update tabla set comalista_asignaciones [where expresión_condicional] En donde una asignación es de la forma: columna = {default null expresión_escalar} Si se incluye la cláusula where sólo se aplicará a las filas que hagan cierta la condición. Bases de Datos Curso 2006/07 DSIC-UPV 28

Modificación n de Información Instrucción UPDATE: Incrementar un un 10% 10% la la pendiente del del puerto Aitana al al haberse cerrado la la carretera que que había en en buen estado y ser ser necesario subir por por otra peor: UPDATE Puerto SET pendiente = pendiente * 1.10 WHERE nompuerto = Aitana ; Bases de Datos Curso 2006/07 DSIC-UPV 29 Eliminación n de Información Instrucción DELETE: delete from tabla [where expresión_condicional] Si se incluye la cláusula where se eliminarán aquéllas que hagan cierta la condición. Eliminar la la información del del ciclista Miguel Indurain ya ya que que se se ha ha jubilado: DELETE FROM Ciclista WHERE nombre = Miguel Indurain ; Bases de Datos Curso 2006/07 DSIC-UPV 30

Trabajo a realizar Consultas Generales (Ciclismo, Música y Biblioteca) Bases de Datos Curso 2006/07 DSIC-UPV 31