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



Documentos relacionados
Bases de Datos 2. Teórico

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

Bases de Datos: Structured Query Language (SQL)

SQL (Structured Query Language)

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

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

Conceptos Avanzados de Bases de datos

SQL. Orígenes y Evolución

SQL (Structured Query Language)- DML

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

Práctica 3. Consultas SQL

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

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

APÉNDICE SQL (Structures Query Language)

SQL Server FEMEPA SQL Server 2000

MANUAL BÁSICO DEL LENGUAJE SQL

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

Unidad. Lenguaje SQL. (Structured Query Language)

Tema 33. El lenguaje SQL

8 SQL SERVER 2008 RA-MA

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

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

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

Bases de Datos Relacionales

Bases de Datos SQL - Ejemplos

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

1. DML. Las subconsultas

Base de datos relacional

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

Base de datos Lenguaje SQL

SQL Los fundamentos del lenguaje

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

ÍNDICE PRIMERA PARTE... 17

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

Consultas con combinaciones

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

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

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

5- Uso de sentencias avanzadas

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

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

Temario. Índices simples Árboles B Hashing

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

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

CONSULTAS BASICAS EN SQL SERVER

ÍNDICE INTRODUCCIÓN...13

6- Combinación de tablas

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

6 - Recuperar algunos registros (where)

BASES DE DATOS I CONSULTA DE DATOS

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

ADMINISTRACIÓN DE BASE DE DATOS

SERVICIO NACIONAL DE APRENDIZAJE SENA

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

Bases de datos: Sistemas de bases de datos:

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

T12 Vistas y tablas temporales

Crear BD en. Isis Bonet Cruz, PhD

DML en SQL. Consultas sencillas usando el DML de SQL

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

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

DML SQL II. Comparaciones con relaciones

Tema 4. Lenguajes de consulta comerciales

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

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

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

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

EXPLOTACIÓN DE BASES DE DATOS CON ACCESS

BASES DE DATOS - SQL. Javier Enciso

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

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

Acceso a bases de datos MySQL con PHP

Tema 4. Manipulación de datos con SQL

Restricciones de Integridad

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

Tutorial de SQL - El comando SELECT

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.

Grupo Kybele, Pág. 1

Bases de Datos 2. Teórico

select nombre from profesores where categoria='aso6';

Álvaro Herrera Modelamiento Avanzado de Datos con PostgreSQL

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

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

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

Guía práctica de SQL

Vistas en postgresql

1.264 Tema 7. Introducción a SQL

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

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

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

ADMINISTRACION DE BASES DE DATOS EN ORACLE

Repaso de Conceptos Básicos de Bases de Datos

FORMACIÓN E-LEARNING. Curso de Lenguaje SQL para Oracle

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

SQL: Lenguaje de Interrogación Estructurado

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.

Curso SQL Nivel Avanzado 1. Miguel Jurado García

Transcripción:

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

Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más aceptado Standard aprobado por ANSI e ISO en 1986. Existen varios dialectos: -86, -89, - 92, :1999, :2003, :2006 2

Características de Standard Lenguaje no procedural. 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. 3

Características de Standard (2) 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 4

como Data Definition Language Permite crear, modificar y eliminar objetos de la base de datos Tablas Vistas Usuarios Etc. 5

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 6

Operaciones sobre tablas CREATE TABLE Crea un nueva tabla de la base Parámetros (entre otros): 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) 7

Ejemplo Productos ( #prod, nombre, peso) 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 8

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

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 10

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

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 12

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 13

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

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; 15

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

Ejemplos Precio del que vende el producto 7 el fabricante 2. SELECT precio FROM VENTAS WHERE "#fab" = 2 and "#prod" = 7; Número de los fabricantes que vendieron el producto 200 a menos de $100000. SELECT "#fab" FROM VENTAS WHERE precio < 100000 and "#prod" = 200; 17

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) 18

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. 19

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; 20

Join (2) En lugar de imponer la igualdad puedo usar el operador JOIN SELECT nombre, "#prod" FROM (VENTAS JOIN FABRICANTES ON VENTAS."#fab"=FABRICANTES."#fab") También existe el NATURAL JOIN (elimina columnas con nombres repetidos) SELECT nombre, "#prod" FROM (VENTAS NATURAL JOIN FABRICANTES) 21

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 22

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

Ejemplo de JOINs (2) 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 +------+------+------+------+ 24

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"; TENGO DOS PROBLEMAS! SELECT FABRICANTES.nombre as nomfab, PRODUCTOS.nombre as nomprod FROM VENTAS, FABRICANTES, PRODUCTOS WHERE VENTAS."#fab" = FABRICANTES."#fab" AND VENTAS."#prod" = PRODUCTOS."#prod"; 25

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; TENGO DOS PROBLEMAS! SELECT p1.nombre, p2.nombre FROM PRODUCTOS p1, PRODUCTOS p2 WHERE p1."#prod"!= p2."#prod" AND p1.peso = p2.peso; 26

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. 27

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

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; 29

Funciones de agregación (2) 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); 30

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) 31

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; 32

Consultas anidadas Qué son?: 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> (SELECT Bj,..., Bk FROM S1,..., Sn WHERE Q) IN = ANY > ANY = ALL > ALL 33

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

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 200. SELECT nombre FROM FABRICANTES F1, VENTAS V1 WHERE F1."#fab" = V1."#fab" AND V1."#prod" = 200 AND NOT EXISTS (SELECT * FROM VENTAS V2 WHERE V2."#fab"=F1."#fab" AND V2."#prod" <> 200) Vende el producto 200 Y no vende nada más 35

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. 36

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. 37

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 F."#fab" as nfab, nombre, sum(precio) FROM FABRICANTES F, VENTAS V WHERE F."#fab" = V."#fab" GROUP BY F."#fab", nombre 38

GROUP BY - Regla de sintaxis En una sentencia (Postgre) 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. 39

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; 40

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 F."#fab", nombre, sum(precio) FROM FABRICANTES F, VENTAS WHERE F.."#fab" = VENTAS."#fab" and "#prod" > 2 GROUP BY F."#fab", nombre HAVING count(*) > 5; 41

Sub-consultas en el FROM Equivalente al uso de vistas. Dar el máximo del promedio de ventas de cada fabricante. SELECT MAX (promedio) FROM (SELECT AVG (precio) as promedio FROM ventas GROUP BY "#fab") as promedios 42

Valor NULL 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; 43

Cambios de formato Dar el nombre y departamento de los fabricantes separados por " - ". SELECT nombre '-' departamento AS fab FROM FABRICANTES; es el operador de concatenación de string. 44

Cambios de formato (2) Mayúsculas y minúsculas Dar el peso de los productos con nombre = play I. No recordamos si la descripción fue ingresada con minúsculas o con mayúsculas. select peso from PRODUCTOS where upper (nombre) = 'PLAY I'; EQUIVALENTES select peso from PRODUCTOS where lower (nombre) = 'play i'; 45

Cambios de formato (3) En resumen: Existen funciones que permiten manipular los tipos de datos por defecto. También hay funciones específicas de cada manejador. RECURRIR A LOS MANUALES 46

Material de consulta en la WEB Tutorial sobre de la W3C http://www.w3schools.com/sql/default.asp Tutorial y ejecución de consultas http://sqlzoo.net/ Documentación Postgre http://www.postgresql.org/docs/ LABORATORIO Vamos a usar Postgre 8.4 http://www.postgresql.org 47