Bases de Datos 2. Teórico



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

Bases de Datos 1. Teórico: Structured Query Language

SQL (Structured Query Language)

Bases de Datos: Structured Query Language (SQL)

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

A.1. Definiciones de datos en SQL

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

APÉNDICE SQL (Structures Query Language)

SQL. Orígenes y Evolución

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

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

SQL (Structured Query Language)- DML

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

Conceptos Avanzados de Bases de datos

Tema 33. El lenguaje SQL

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Unidad. Lenguaje SQL. (Structured Query Language)

MANUAL BÁSICO DEL LENGUAJE SQL

8 SQL SERVER 2008 RA-MA

Base de datos Lenguaje SQL

SQL Server FEMEPA SQL Server 2000

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

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

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

Práctica 3. Consultas SQL

Bases de Datos SQL - Ejemplos

CONSULTAS BASICAS EN SQL SERVER

1. DML. Las subconsultas

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

Bases de Datos Relacionales

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

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

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

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

Consultas con combinaciones

ÍNDICE PRIMERA PARTE... 17

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

Base de datos relacional

SQL Los fundamentos del lenguaje

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

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

BASES DE DATOS I CONSULTA DE DATOS

Temario. Índices simples Árboles B Hashing

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

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

DML en SQL. Consultas sencillas usando el DML de SQL

ÍNDICE INTRODUCCIÓN...13

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

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

T12 Vistas y tablas temporales

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

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

6- Combinación de tablas

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

5- Uso de sentencias avanzadas

Crear BD en. Isis Bonet Cruz, PhD

Acceso a bases de datos MySQL con PHP

SERVICIO NACIONAL DE APRENDIZAJE SENA

Bases de datos: Sistemas de bases de datos:

6 - Recuperar algunos registros (where)

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

DML SQL II. Comparaciones con relaciones

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

ADMINISTRACIÓN DE BASE DE DATOS

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

Tema 4. Lenguajes de consulta comerciales

Bases de Datos 2. Teórico

Tema 4. Manipulación de datos con SQL

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

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.

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Restricciones de Integridad

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

BASES DE DATOS - SQL. Javier Enciso

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

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

Grupo Kybele, Pág. 1

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

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

Tutorial de SQL - El comando SELECT

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

Vistas en postgresql

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

select nombre from profesores where categoria='aso6';

Guía práctica de SQL

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

1.264 Tema 7. Introducción a SQL

Sub consultas avanzadas

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

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

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

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN

EJERCICIOS RESUELTOS

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

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

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

Diseño de bases de datos

Transcripción:

Bases de Datos 2 Teórico

Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina automáticamente tuplas repetidas. El mismo lenguaje puede ser usado: En forma interactiva (EJ: consola) Embebido en un lenguaje de programación.

Características de SQL Standard Su poder de expresión incluye al álgebra relacional y la extiende Se identifican dos sublenguajes: DDL (Data Definition Language): Permite crear, modificar y eliminar objetos de la base EJ: CREATE, ALTER, DROP DML (Data Manipulation Language): Permite crear, modificar, eliminar y recuperar datos EJ: INSERT, UPDATE, DELETE, SELECT

SQL como Data Definition Language Permite crear, modificar y eliminar objetos de la base de datos (Tablas, Vistas)

Qué es una tabla? Un conjunto de valores organizados en columnas y filas Una tabla es la representación de una relación, pero no son estrictamente equivalentes

Operaciones sobre tablas CREATE TABLE Crea un nueva tabla de la base Parámetros: Nombre de la tabla Nombre de cada columna Tipo de datos de cada columna Restricciones de clave primaria y clave foránea sobre otras tablas ALTER TABLE Modifica una tabla existente DROP TABLE Elimina la definición de la tabla (y los datos almacenados en ella si existen)

Ejemplo Productos ( #prod, nombre, peso, descripción) Contiene todos los productos Fabricantes ( #fab, nombre, departamento) Contiene los fabricantes de productos Ventas ( #fab, #prod, precio) Indica que fabricante vende que producto y a que precio

Ejemplo CREATE TABLE productos( #prod integer NOT NULL, nombre character varying(50), CONSTRAINT productos_pk PRIMARY KEY (#prod) ) CREO LA TABLA PRODUCTOS ALTER TABLE productos add peso double precision AGREGO LA COLUMNA PESO A LA TABLA PRODUCTOS

Qué es una vista? Una vista es una tabla virtual que se basa en el resultado de una consulta. Sus atributos son atributos de tablas o de otras vistas. Pueden usarse en consultas como si fueran tablas

Operaciones sobre vistas CREATE VIEW: crea una vista ALTER VIEW: modifica una vista DROP VIEW: elimina la vista

Ejemplo Quiero ofrecer una vista sobre la tabla productos en la que NO aparezca el peso CREATE VIEW productos2 AS( SELECT #prod, nombre FROM productos ) Devuelve el código de producto y el nombre de cada producto

SQL como Data Manipulation Language Permite crear, modificar, eliminar y recuperar datos INSERT: agrega tuplas a una tabla UPDATE: cambia tuplas de una tabla DELETE: borra tuplas de una tabla SELECT: recupera datos

Ejemplos Insertar una nueva venta del producto 530 a precio 15000, para el fabricante 25: INSERT INTO VENTAS VALUES (25, 530, 15000);

Ejemplos Incrementar el precio del producto número 530 en un 10% UPDATE VENTAS SET precio = precio * 1.1 WHERE #prod = 530; Borrar toda la información de ventas con precio mayor a $50000. DELETE FROM VENTAS WHERE precio > 50000;

Recuperación de datos Select : devuelve tuplas de la base SELECT A1,...,An FROM R1,...,Rm WHERE P donde: A1,...,An son nombres de atributos (puede usarse *) R1,...,Rm son nombres de tablas. P es una condición. en Algebra Relacional : π A 1,..., An ( σ P (R1 x... x Rm) )

Ejemplos Dar el precio al que vende el producto 7 el fabricante 2. SELECT precio FROM VENTAS WHERE #fab = 2 and #prod = 7; Dar el número de los fabricantes que vendieron el producto 4 a menos de $100. SELECT #fab FROM VENTAS WHERE precio < 100 and #prod = 4;

Orden de tuplas Dar los #prod de los productos fabricados, pero ordenados en forma ascendente. SELECT #prod FROM VENTAS ORDER BY #prod asc; La cláusula ORDER BY permite indicar el campo por el cual se ordena el resultado. Se indica el orden (ASC o DESC)

Filtrado de repetidos Dar los #prod de los productos vendidos, filtrando los repetidos. SELECT DISTINCT #prod FROM VENTAS ORDER BY #prod; La cláusula DISTINCT filtra tuplas repetidas.

Join Dar los nombres de fabricantes y los #prod. que venden. SELECT nombre, #prod FROM VENTAS, FABRICANTES WHERE VENTAS.#fab = FABRICANTES.#fab; Dar los nombres de fabricantes y los #prod. Que venden, tales que vendió el producto a $100. SELECT nombre, #prod FROM VENTAS, FABRICANTES WHERE VENTAS.#fab = FABRICANTES.#fab and precio = 100;

Join En lugar de imponer la igualdad puedo usar el operador JOIN SELECT nombre, #prod FROM (VENTAS JOIN FABRICANTES ON VENTAS.#fab = FABRICANTES.#fab)

Otros tipos de JOIN En el JOIN sólo se incluyen en el resultado tuplas que coincidan en valor en los campos de JOIN. LEFT JOIN: se agrega, para cada tupla de T1 que no satisface la condición de JOIN con NINGUNA de T2, una fila con NULOS en las columnas de T2 RIGHT JOIN: análogo al LEFT pero se incluyen todos los de T2 FULL JOIN: equivale a la unión del LEFT y RIGHT

Ejemplo de JOINs T1 A B T2 A C 1 a 1 xxx 2 b 3 yyy 3 c 5 zzz SELECT * FROM t1 JOIN t2 ON t1.a = t2.a; A B A C 1 a 1 xxx 3 c 3 yyy

Ejemplo de JOINs SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a; A B A C 1 a 1 xxx 2 b NULL NULL 3 c 3 yyy SELECT * FROM t1 RIGHT JOIN t2 ON t1.a = t2.a; A B A C 1 a 1 xxx 3 c 3 yyy NULL NULL 5 zzz

Renombre de atributos Dar los nombres de fabricantes y los nombres de los productos que venden. SELECT nombre, nombre FROM VENTAS, FABRICANTES, PRODUCTOS WHERE VENTAS.#fab = FABRICANTES.#fab AND VENTAS.#prod = PRODUCTOS.#prod; SELECT FABRICANTES.nombre as nomfab, PRODUCTOS.nombre as nomprod FROM VENTAS, FABRICANTES, PRODUCTOS WHERE VENTAS.#fab = FABRICANTES.#fab AND VENTAS.#prod = PRODUCTOS.#prod;

Alias Dar las parejas de nombres de productos con igual peso. SELECT nombre, nombre FROM PRODUCTOS, PRODUCTOS WHERE PRODUCTOS.#prod!= PRODUCTOS.#prod AND PRODUCTOS.peso = PRODUCTOS.peso; SELECT p1.nombre, p2.nombre FROM PRODUCTOS p1, PRODUCTOS p2 WHERE p1.#prod!= p2.#prod AND p1.peso = p2.peso;

Union Dar los #fab que son de Montevideo o que venden algún producto a precio mayor que $500. SELECT #fab FROM FABRICANTES WHERE departamento = Montevideo" UNION SELECT #fab FROM VENTAS WHERE precio > 500; La UNION elimina tuplas repetidas.

Diferencia Dar los #fab que no venden ningún producto. SELECT #fab FROM FABRICANTES EXCEPT SELECT #fab FROM VENTAS; SELECT #fab FROM FABRICANTES WHERE #fab not IN (SELECT #fab FROM VENTAS)

Funciones de agregación Las funciones de agregación extienden al álgebra relacional (EJ: contar tuplas, sumar cantidades, etc.) Decir cuantos fabricantes hay. SELECT count(#fab) FROM FABRICANTES; Dar el precio máximo de venta. SELECT max(precio) FROM VENTAS;

Funciones de agregación Las funciones de agregación aplican sobre conjuntos de tuplas, no sobre tuplas individuales. Ejemplo: devolver el fabricante que ha vendido el producto más caro. SELECT #fab FROM VENTAS WHERE precio = max(precio); SELECT #fab FROM VENTAS WHERE precio = (SELECT max(precio) FROM VENTAS);

Funciones y Operadores aritméticos Expresiones en las cláusulas SELECT y WHERE Se pueden utilizar expresiones aritméticas que combinen atributos (+, *, /) Se pueden aplicar funciones sobre atributos: round (n), abs (n), mod (m, n), sign (n)

Ejemplos sobre el SELECT Para cada producto dar su numero y su peso en gramos (supongamos que el peso esta kg.). select #prod, peso * 1.000 from PRODUCTOS; Queremos que el resultado de peso * 1.000 sea redondeado a 2 cifras decimales. select #prod, round (peso * 1.000, 2) from PRODUCTOS;

Ejemplos sobre el WHERE Dar los nombres de los productos que pesan 3 (tres) veces más que su volumen. select nombre from PRODUCTOS where peso = 3 * volumen;

Consultas anidadas Consultas que se ubican dentro de la cláusula WHERE de otra consulta. Ejemplo SELECT A1,...,An FROM R1,...,Rm WHERE (Aj,,Ak) <op-comp> IN = ANY (SELECT Bj,..., Bk = ALL FROM S1,..., Sn > ANY WHERE Q) > ALL

Ejemplo Dar los nombres de los fabricantes que venden productos que también son vendidos por el fabricante número 1. SELECT f.nombre FROM FABRICANTES f, VENTAS v WHERE f.#fab = v.#fab AND f.#fab <> 1 AND v.#prod IN (SELECT #prod Productos FROM VENTAS vendidos por WHERE VENTAS.#fab = 1) el fabricante 1

Función EXISTS Para qué sirve?: para chequear si el resultado de una consulta anidada es vacío. Ejemplo: Dar los nombres de los fabricantes que sólo venden el producto numero 2. SELECT nombre FROM FABRICANTES F1, VENTAS V1 Vende el WHERE F1.#fab = V1.#fab AND producto 2 V1.#prod = 2 AND NOT EXISTS (SELECT * Y no vende FROM VENTAS V2 nada más WHERE V2.#fab=F1.#fab AND V2.#prod <> 2)

Agrupamiento de tuplas Dar, para cada fabricante, la cantidad de productos que vendió. Esto implica: Tomar cada grupo de tuplas en Ventas correspondiente a un fabricante. Contar la cantidad de tuplas en el grupo. Para realizar esta operación es necesaria la cláusula GROUP BY.

GROUP BY Es una cláusula más que se agrega al SELECT, FROM, WHERE Ejemplo: SELECT #fab, count(*) FROM VENTAS GROUP BY #fab Cómo funciona? Genera un grupo por cada #fabricante distinto. De cada grupo devuelve el #fabricante y la cantidad de tuplas de dicho grupo.

Ejemplos Dar el número de fabricante y los promedios de precios a los cuales vendió. SELECT #fab, avg(precio) FROM VENTAS GROUP BY #fab Dar los nombres de fabricante y sus totales de precio vendidos. SELECT #fab, nombre, sum(precio) FROM FABRICANTES F, VENTAS V WHERE F.#fab = V.#fab GROUP BY #fab, nombre

GROUP BY - Regla de sintaxis En una sentencia SQL que tiene cláusula GROUP BY, las expresiones en el SELECT pueden ser sólo: Atributos presentes en la cláusula GROUP BY. Funciones de agregación sobre atributos. Expresiones aritméticas que utilicen los anteriores. El agrupamiento se realiza después de aplicar el WHERE. O sea, sobre las tuplas que cumplen la condición.

Condiciones sobre grupos Con la cláusula HAVING se pueden especificar condiciones sobre los grupos. Por ejemplo: Dar el número de fabricante y los promedios de precios a los cuales vendió, pero para los fabricantes con más de 3 ventas. SELECT #fab, avg(precio) FROM VENTAS GROUP BY #fab HAVING count(*) > 3;

Ejemplos Dar los nombres de fabricantes que hicieron más de 5 ventas sobre productos con #prod mayor que 2, junto con el total de precio vendido. SELECT #fab, nombre, sum(precio) FROM FABRICANTES, VENTAS WHERE FABRICANTES.#fab = VENTAS.#fab and #prod > 2 GROUP BY #fab, nombre HAVING count(*) > 5;

Valor NULL SQL permite chequear en una consulta si un valor es nulo. Predicados: IS NULL, IS NOT NULL Ejemplo: Devolver los nombres de los fabricantes de los que no se conoce el departamento donde trabajan. SELECT nombre FROM FABRICANTES WHERE departamento IS NULL;

Cambios de formato Mayúsculas y minúsculas Dar los nombres de los productos con descripción = rojos. No recordamos si la descripción fue ingresada con minúsculas o con mayúsculas. select nombre from PRODUCTOS where upper (desc) = 'ROJO'; select nombre from PRODUCTOS where lower (desc) = 'rojo';

Cambios de formato En resumen: Existen funciones que permiten manipular los tipos de datos por defecto. También hay funciones específicas de cada manejador.