La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

B ASES DE D ATOS 1 Teórico: Structured Query Language.

Presentaciones similares


Presentación del tema: "B ASES DE D ATOS 1 Teórico: Structured Query Language."— Transcripción de la presentación:

1 B ASES DE D ATOS 1 Teórico: Structured Query Language

2 H ISTORIA Los orígenes del SQL están ligados a los orígenes de las bases de datos relacionales Estandarizado por ANSI en 1986 (SQL-86) Hubieron varias revisiones: o SQL-89 o SQL-92 o SQL-1999 o SQL-2003 o SQL-2006 o SQL-2008 o SQL-2011

3 C ARACTERÍSTICAS Opera sobre conjunto de tuplas No elimina automáticamente tuplas repetidas Lenguaje no procedural Su poder de expresión incluye el álgebra relacional y lo extiende Se distinguen dos sublenguajes: DDL (Data Definition Language) DML (Data Manipulation Language)

4 D ATA D EFINITION L ANGUAGE (DDL) Permite crear, modificar y eliminar objetos de la base de datos: Tablas o Una tabla es un conjunto de valores organizados en filas y columnas. Es la representación de una relación aunque no son estrictamente equivalentes Vistas o Una vista es una tabla virtual basada en el resultado de una consulta. Pueden usarse en consultas como si fueran tablas Usuarios

5 O PERACIONES SOBRE TABLAS CREATE TABLE Crea una nueva tabla Parámetros: Nombre de la tabla Nombre y tipo de dato de cada columna Restricciones de clave primaria y clave foránea sobre otras tablas ALTER TABLE Modifica una tabla existente DROP TABLE Elimina una tabla existente y elimina los datos almacenados en ella

6 E JEMPLO Sistema de Información relativo a hospitales: HOSPITALES (codHosp, nomHosp, direccion) MEDICOS (ciMed, nomMed, especialidad) PACIENTES (ciPac, nomPac, fchNac, sexo)

7 E JEMPLO Creo la tabla hospitales: CREATE TABLE hospitales( codHosp integer NOT NULL, nomHosp character varying(40), direccion character varying(20) ); ALTER TABLE hospitales add constraint hospitales_pkey PRIMARY KEY (codHosp);

8 O PERACIONES SOBRE VISTAS CREATE VIEW Crea una vista Ejemplo: Creo una vista sobre la tabla hospitales en la que no aparezca la dirección: CREATE VIEW hospitalesSinDir AS (SELECT codHosp, nomHosp FROM hospitales ); ALTER VIEW Modifica una vista DROP VIEW Elimina una vista

9 D ATA M ANIPULATION L ANGUAGE (DML) Permite crear, modificar, eliminar y recuperar datos: INSERT Agrega tuplas a una tabla Ejemplo: INSERT INTO hospitales VALUES (1, Maciel, 25 de Mayo 174); UPDATE Actualiza tuplas de una tabla Ejemplo: UPDATE hospitales SET direccion = 25 de Mayo 172) WHERE codHosp = 1;

10 DML DELETE Borra tuplas de una tabla Ejemplo: DELETE hospitales WHERE nomHosp = Maciel; SELECT Recupera datos Ejemplo: SELECT direccion FROM hospitales WHERE nomHosp = Maciel;

11 R ECUPERACIÓN DE DATOS Sintaxis: SELECT A1, …, An FROM R1, …, Rm WHERE C; donde: A1, …, An son nombres de atributos. También se puede utilizar (*) R1, …, Rm son nombres de tablas C es una condición booleana

12 C LÁUSULA ORDER BY La cláusula ORDER BY permite ordenar el resultado ascendentemente o descendentemente (ASC ó DESC) Ejemplo : Devolver los códigos de los hospitales ordenados ascendentemente SELECT codHosp FROM hospitales ORDER BY codHosp ASC ;

13 C LÁUSULA DISTINCT La cláusula DISTINCT permite filtrar tuplas repetidas Ejemplo : Devolver las especialidades, sin repetir, de los médicos SELECT DISTINCT especialidad FROM medicos;

14 O PERADOR JOIN JOIN es un operador que se utiliza para combinar datos de dos o más tablas basados en una relación entre determinadas columnas en estas tablas En el JOIN sólo se incluyen en el resultado tuplas que coincidan en valor en los campos del JOIN

15 E JEMPLO PERSONAS (ci, nombre, apellido, fchNac, lugarNac) TECNOLOGOS (ci, fchTitulo) Obtener los nombres y apellidos de los Tecnólogos: SELECT nombre, apellido FROM (personas JOIN tecnologos ON personas.ci = tecnologos.ci);

16 O TROS TIPOS DE JOIN NATURAL JOIN : Elimina columnas con nombres repetidos LEFT JOIN : 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 a LEFT JOIN pero se incluyen todos los de T2 FULL JOIN : Equivalente a la unión de LEFT JOIN y RIGHT JOIN

17 A LIAS Ejemplo : Devolver las parejas de cédulas de identidad de las personas que tienen igual nombre pero distinto apellido SELECT p1.ci, p2.ci FROM personas p1, personas p2 WHERE p1.nombre = p2.nombre and p1.apellido <> p2.apellido;

18 R ENOMBRAR ATRIBUTOS Ejemplo : PRODUCTOS (nroProd, nombre, peso) FABRICANTES ( nroFab, nombre, departamento) VENTAS ( nroFab, nroProd, precio) Dar los nombres de fabricantes y los nombres de los productos que venden SELECT fabricantes.nombre as nomFab, productos.nombre as nomProd FROM ventas, fabricantes, productos WHERE ventas.nroFab = fabricantes.nroFab and ventas.nroProd = productos.nroProd;

19 U NIÓN (UNION) Ejemplo : Devolver la cédula de identidad de las personas que nacieron en el año 2000 o que nacieron en Salto SELECT ci FROM personas WHERE personas.fchNac >= to_date('01/01/2000','dd/mm/yyyy') and personas.fchNac <= to_date('31/12/2000','dd/mm/yyyy') UNION SELECT ci FROM personas WHERE personas.lugarNac = Salto; La UNION elimina tuplas repetidas

20 D IFERENCIA (NOT IN) Ejemplo : Devolver las cédulas de identidad de las personas que no se recibieron de Tecnólogo SELECT ci FROM personas WHERE ci NOT IN (SELECT ci FROM tecnologos);

21 F UNCIONES Y OPERADORES ARITMÉTICOS En las cláusulas SELECT y WHERE se pueden aplicar funciones y operadores aritméticos sobre atributos: Funciones : round (n), abs (n), etc Operadores aritméticos : (+, *, /)

22 F UNCIONES DE AGREGACIÓN Las funciones de agregación extienden el álgebra relacional Se aplican sobre conjuntos de tuplas, no sobre tuplas individuales Permiten sumar, obtener el máximo, contar tuplas, etc

23 C ONSULTAS ANIDADAS Las consultas anidadas son consultas dentro de la cláusula WHERE de otra consulta Sintaxis : SELECT A1, …, An FROM R1, …, Rm WHERE Aj, …, Ak ( SELECT B1, …, Bk FROM S1, …, Sm WHERE C); donde puede ser: IN = ANY > ANY = ALL > ALL

24 F UNCIÓN EXISTS La función EXISTS sirve para chequear si el resultado de una consulta no es vacío Ejemplo : Dar los nombres de los fabricantes que sólo venden el producto número 15. SELECT nombre FROM fabricantes f1, ventas v1 WHERE f1.nroFab = v1.nroFab and v1.nroProd = 15 AND NOT EXISTS (SELECT * FROM ventas v2 WHERE v2.nroFab = f1.nroFab and v2.nroProd <> 15);

25 C LÁUSULA GROUP BY La cláusula GROUP BY sirve para agrupar tuplas El agrupamiento se realiza después de aplicar el WHERE, es decir, sobre las tuplas que cumplen la condición En el SELECT sólo puede haber atributos presentes en la cláusula GROUP BY, funciones de agregación sobre atributos y/o expresiones aritméticas

26 E JEMPLO ACTIVIDADES (ci-est, cod-as, cod-car, tipo-act, fecha, aprobo, nota) En esta relación: Se guardan todas las actividades que realizan los estudiantes en la facultad Estas actividades pueden ser de distintos tipos (examen (E) o realización de curso (RC)) El atributo aprobo tiene valor S o N. Si este atributo tiene valor S asumimos que la asignatura esta aprobada totalmente, no importa el tipo de actividad que sea El atributo fecha corresponde a la fecha en la que se realizó la actividad

27 E JEMPLO Dar una lista que contenga código de asignatura, código de carrera y cantidad de aprobados a partir del 01/12/2001 SELECT cod-as, cod-car, COUNT (*) FROM actividades WHERE fecha > to_date(01/12/2001,dd/mm/yyyy) and aprobo = S GROUP BY cod-as, cod-car;

28 C LÁUSULA HAVING La cláusula HAVING sirve para especificar condiciones sobre grupos 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 nroFab, avg(precio) FROM VENTAS GROUP BY nroFab HAVING count(*) > 3;

29 S UB - CONSULTAS EN EL FROM Utilizar sub-consultas en el FROM es equivalente al uso de vistas Ejemplo : Dar el máximo del promedio de ventas de cada fabricante SELECT MAX (promedio) FROM (SELECT AVG (precio) as promedio FROM ventas GROUP BY nroFab) as promedios

30 C AMBIOS DE FORMATO Por defecto existen funciones que permiten manipular los tipos de datos Los manejadores también disponen de funciones específicas Concatenación de string : Se utiliza el operador | | Mayúsculas y minúsculas : upper( ), lower( )

31 M ATERIAL DE CONSULTA Tutorial de SQL Tutorial interactivo de SQL Documentación PostgreSQL


Descargar ppt "B ASES DE D ATOS 1 Teórico: Structured Query Language."

Presentaciones similares


Anuncios Google