Manipulación de datos en SQL

Documentos relacionados
Prácticas EDAT Curso 12/13

SQL. Carlos A. Olarte BDI

Capítulo 4. Realización de consultas

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

1. DML. Las consultas multitabla

Insertar Datos en Tablas

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

Bases de datos 1. Teórico: Algebra Relacional

ÍNDICE PRIMERA PARTE... 17

Ser capaces de realizar una consulta dentro de otra

Sistemas de Bases de Datos II

Consultas Complejas:

Bases de Datos SQL - Ejemplos

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

Consultas con combinaciones

Guía de ejercicios de SQL Prof. Mauricio E. Fernández N. Semestre Agosto-Diciembre de 2012

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

Consultas SQL INNER JOIN

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

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

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

MATERIAL INTRODUCTORIO ORACLE 11G

Unidad. Lenguaje SQL. (Structured Query Language)

SQL. Álgebra Relacional Selección y proyección Operaciones sobre conjuntos: unión, intersección, diferencia, producto Reunión natural

Bases de Datos Ejercicios de SQL

DML en SQL. Consultas sencillas usando el DML de SQL

3ra. Parte. Bases de Datos Relacionales

Modulo I: Introducción Gestores de Bases De Datos

BASES DE DATOS I. Algebra Relacional

6- Combinación de tablas

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

Características del lenguaje SQL

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

ÍNDICE INTRODUCCIÓN...17

Computación Web (Curso 2015/2016)

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

Bases de Datos 2. Teórico

SQL Server FEMEPA SQL Server 2000

Ficheros y Bases de Datos Curso Primer Parcial. 7 de FEBRERO de Nombre:

Lenguaje SQL - Ejercicios

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

Introducción a las bases de datos.

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

Bases de Datos Relacionales

ÍNDICE INTRODUCCIÓN...13

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

Crear BD en. Isis Bonet Cruz, PhD

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

Conceptos Avanzados de Bases de datos

Conceptos Avanzados de Programación en Internet

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

MANUAL BÁSICO DEL LENGUAJE SQL

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

Introducción a SQL (DML)

Práctica 3: El lenguaje SQL (1ª parte). Programa de prácticas: (5ª sesión). Lenguaje SQL: manipulación de datos (consulta y actualización):

Práctica 3. Consultas SQL

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

Práctica A: Procedimientos para agrupar y resumir datos

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

Sql Basico. Seminar Introduction

8 SQL SERVER 2008 RA-MA

2.5.- El lenguaje estándar SQL

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

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

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

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

Modelo relacional. El modelo relacional

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

Ejemplo de gestión de datos con SQL

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

Temario. Índices simples Árboles B Hashing

: 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

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

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Procesamiento y Optimización de consultas Material Preliminar en preparación

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

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

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

1. DML. Las subconsultas

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

En este curso se presenta un análisis profundo de la base de datos MySQL para los sistemas operativos Windows y Linux.

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

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

Unidad 7. CONSULTAS MULTITABLA

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

Curso SQL Nivel Avanzado 1. Miguel Jurado García

2 Bloque de consulta básico

Tipo de Dato TRANSACT SQL

Lenguaje SQL. 1- Seleccionar las ciudades de más de 1 millón de habitantes.

Guía de implementación Softland en SQL Server Versión 1.0

A.1. Definiciones de datos en SQL

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

BASES DE DATOS I CONSULTA DE DATOS

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Transcripción:

Manipulación de datos en SQL Consultas a una sola tabla Consultas a varias tablas Funciones agregadas Agrupación Consultas anidadas Ejemplo: esquema relacional EMPLEADO (num_emp, nombre, tarifa_hora, cualificacion, num_sup) EDIFICIO (num_edi, direccion, tipo, nivel, estado) ASIGNACION (num_emp, num_edi, fecha_ini, num_dias)

Consultas a una sola tabla. Obtener el nombre de todos los fontaneros SELECT NOMBRE WHERE CUALIFICACION= SELECT columnas FROM tabla WHERE condición NUM_EMP NOMBRE TARIFA_HORA CUALIF. NUM_SUP M. Pérez R. Gómez 0 Carpintero P. Morán Pintor H. Rico 8 C. Barrero 7 A. Cerrato 0 Pintor NOMBRE resultado consulta H. Rico

El símbolo * Listar todos los datos sobre edificios de oficinas FROM EDIFICIO WHERE TIPO= Oficina NUM_EDI DIRECCION TIPO NIVEL ESTADO Azcoitia, Oficina Pelícano, 89 Tienda Argüeso, Vivienda Mineros, Oficina Tavira, 78 Oficina Alcalá, 9 Almacén resultado consulta NUM_EDI DIRECCION Azcoitia, TIPO Oficina NIVEL ESTADO Mineros, Oficina Tavira, 78 Oficina

El operador DISTINCT SQL no elimina tuplas repetidas Listar todos los valores de tarifa por hora distintos SELECT DISTINCT TARIFA_HORA 7 NUM_EMP NOMBRE TARIFA_HORA CUALIF. NUM_SUP M. Pérez R. Gómez 0 Carpintero P. Morán Pintor H. Rico 8 C. Barrero 7 A. Cerrato 0 Pintor TARIFA_HORA resultado consulta 0 8 8

El operador DISTINCT (II) Sólo se especifica una vez Ejemplo: hallar todas las combinaciones diferentes de valores de cualificación y tarifa_hora SELECT DISTINCT CUALIFICACION, TARIFA_HORA 9 La cláusula ORDER BY Obtener el nombre y la tarifa_hora de todos los electricistas ordenándolos por nombre en orden creciente, y por tarifa_hora en orden decreciente SELECT NOMBRE, TARIFA_HORA ORDER BY CUALIFICACION, TARIFA_HORA DESC Equivalente a ORDER BY, DESC 0

El operador AS Listar todos los números de empleado junto con el número del edificio al que están asignados SELECT NUM_EMP AS EMPLEADO, NUM_EDI AS EDIFICIO FROM ASIGNACION Expresiones Secuencia de operaciones que, cuando se ejecuta, devuelve valor único Valores numéricos: +, -, *, / Cadenas: CONCAT ( ) SELECT que devuelve un solo valor no se puede especificar ORDER BY si resultado es tabla vacía - valor NULL Pueden aparecer en vez de valor (en SELECT o en WHERE)

Expresiones (II) + A CONCAT B TARIFA_HORA *. TARIFA_HORA + (SELECT TARIFA_HORA FROM EMPLEADO WHERE NUM_EMP = 0) + Expresiones (III) Cuál es el salario semanal para cada electricista? SELECT NOMBRE, Salario semanal =, 0 * TARIFA_HORA WHERE CUALIFICACION=

NUM_EMP NOMBRE TARIFA_HORA CUALIF. NUM_SUP M. Pérez 0 90 R. Gómez 0 Carpintero 90 P. Morán Pintor 0 H. Rico 8 0 C. Barrero 00 A. Cerrato 0 Pintor NOMBRE resultado consulta M. Pérez C. Barrero Salario Semanal = 80 Salario Semanal = 0 Operadores de comparación Quién tiene una tarifa por hora entre 0 y 0 euros? WHERE TARIFA_HORA >= 0 AND TARIFA_HORA <= 0 Operadores de comparación: =, <>, <, >, <=, >= Conectivas booleanas: AND, OR, NOT

El operador BETWEEN Quién tiene una tarifa por hora entre 0 y 0 euros? WHERE TARIFA_HORA BETWEEN 0 AND 0 7 El operador BETWEEN (II) Listar todos las asignaciones de trabajo que empezarán en las próximas dos semanas FROM ASIGNACION WHERE FECHA_INI BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL DAY 8

YEAR, MONTH, DAY Listar todos las asignaciones de trabajo que empezarán en diciembre FROM ASIGNACION WHERE FECHA_INI.MONTH = 9 El operador IN Listar todos los datos sobre fontaneros, carpinteros y electricistas WHERE CUALIFICACION IN (, Carpintero, ) 0

El operador LIKE Listar todos los datos sobre empleados cuya cualificación empieza por Elec WHERE CUALIFICACION LIKE Elec% % - cero o más caracteres _ - un carácter El operador LIKE (II) Listar todos los datos sobre edificios cuya dirección contiene el carácter _ FROM EDIFICIO WHERE DIRECCION LIKE %/_% ESCAPE / definimos carácter de escape anteponemos carácter de escape a _ o %

El operador IS NULL Obtener todos los datos de aquellos empleados que no tienen supervisor WHERE DNI_SUPER IS NULL IS NOT NULL, NOT IN, NOT BETWEEN, NOT LIKE Consultas a múltiples tablas Cuáles son las cualificaciones de los empleados asignados al edificio? SELECT CUALIFICACION, ASIGNACION WHERE EMPLEADO.NUM_EMP = ASIGNACION.NUM_EMP AND NUM_EDI = EMPLEADO (num_emp, nombre, tarifa_hora, cualificacion, num_sup) ASIGNACION (num_emp, num_edi, fecha_ini, num_dias)

Procesamiento de la consulta ASIGNACION EMPLEADO NUM_EMP NUM_EDI FECHA_ INI NUM_ DIAS NUM_EMP NOMBRE TARIFA_ HORA CUALIF. NUM_SUP 0/ 8/0 0 R. Gómez 0 Carpintero 7/ C. Barrero /0 0/08 08/0 NUM_EMP Procesamiento de la consulta (II) Producto cartesiano NOMBRE TARIFA_ HORA CUALIF. NUM_SUP NUM_EMP NUM_EDI FECHA_ INI NUM_ DIAS 0/ 8/0 0 7/ /0 0/08 08/0

Procesamiento de la consulta (III) WHERE E.NUM_EMP NOMBRE TARIFA_ HORA CUALIF. NUM_SUP A.NUM_EMP NUM_EDI FECHA_ INI NUM_ DIAS /0 R. Gómez 0 Carpintero 8/0 0 C. Barrero 08/0 7 Procesamiento de la consulta (IV) SELECT CUALIFICACION Carpintero 8

Otro ejemplo Listar todos los empleados junto con el nombre de su supervisor SELECT A.NOMBREE AS EMPLEADO, B.NOMBREE AS SUPERVISOR A, EMPLEADO B WHERE B.DNI = A.DNI_SUPER 9 Más de dos relaciones Listar los nombres de los empleados asignados a edificios de oficinas SELECT NOMBRE, ASIGNACION, EDIFICIO WHERE EMPLEADO.NUM_EMP = ASIGNACION.NUM_EMP AND ASIGNACION.NUM_EDI = EDIFICIO.NUM_EDI AND TIPO = Oficina EMPLEADO (num_emp, nombre, tarifa_hora, cualificacion, num_sup) ASIGNACION (num_emp, num_edi, fecha_ini, num_dias) EDIFICIO (num_edi, direccion, tipo, nivel, estado) 0

NATURAL JOIN Listar los nombres de los empleados asignados a edificios de oficinas SELECT NOMBRE NATURAL JOIN ASIGNACION NATURAL JOIN EDIFICIO WHERE TIPO = Oficina EMPLEADO (num_emp, nombre, tarifa_hora, cualificacion, num_sup) ASIGNACION (num_emp, num_edi, fecha_ini, num_dias) EDIFICIO (num_edi, direccion, tipo, nivel, estado) INNER y OUTER JOIN INNER JOIN - sólo incluye tuplas que se corresponden OUTER JOIN - incluye además todas las tuplas de una o ambas tablas LEFT, RIGHT, FULL Si se omite tipo de reunión - INNER Si aparece LEFT, RIGHT O FULL se puede omitir OUTER A cualquier tipo (excepto a UNION) podemos anteponerle NATURAL

INNER y OUTER JOIN (II) Nombre de todos los empleados junto con el nombre del departamento que dirigen (si es el caso) SELECT NOMBREE, NOMBRED LEFT JOIN DEPARTAMENTO ON EMPLEADO.dni = DEPARTAMENTO.dni_dir