SlideShare una empresa de Scribd logo
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.

Más contenido relacionado

Similar a bd2-teorico02.pdf

Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
Juan Martinez Cataldi
 
Vistas (1)
Vistas (1)Vistas (1)
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
Luis Jherry
 
Grupo1 tics-2 (2)
Grupo1 tics-2 (2)Grupo1 tics-2 (2)
Grupo1 tics-2 (2)
Jhonny Snt
 
Guía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez HGuía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez H
José Ricardo Tillero Giménez
 
diapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptxdiapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptx
rch_bar
 
diapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptxdiapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptx
polo28slp
 
Implementación de bases de datos agrupamiento y funciones de agregado
Implementación de bases de datos agrupamiento y funciones de agregadoImplementación de bases de datos agrupamiento y funciones de agregado
Implementación de bases de datos agrupamiento y funciones de agregado
M.c. Omar Jasso
 
Que es una consulta
Que es una consultaQue es una consulta
Que es una consulta
lorena_stars
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
MaraMagdalenaBlancoR
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
Erwin Fischer
 
Teoria sql
Teoria sqlTeoria sql
Teoria sql
Victor Morales
 
Ejemploddl dml-ok
Ejemploddl dml-okEjemploddl dml-ok
Ejemploddl dml-ok
BB
 
Funciones de las hojas de cálculo
Funciones de las hojas de cálculoFunciones de las hojas de cálculo
Funciones de las hojas de cálculo
Javier Fernandez Castelo
 
Sentencias sql
Sentencias sqlSentencias sql
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx
LeydyVeronicaDelgado
 
Guia de ejercicio sql
Guia de ejercicio sqlGuia de ejercicio sql
Guia de ejercicio sql
Ashley Stronghold Witwicky
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
jhonatantrel
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docx
dcam4
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
doctorandoperu
 

Similar a bd2-teorico02.pdf (20)

Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
Vistas (1)
Vistas (1)Vistas (1)
Vistas (1)
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Grupo1 tics-2 (2)
Grupo1 tics-2 (2)Grupo1 tics-2 (2)
Grupo1 tics-2 (2)
 
Guía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez HGuía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez H
 
diapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptxdiapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptx
 
diapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptxdiapositiva-clase-unidad-4-sql.pptx
diapositiva-clase-unidad-4-sql.pptx
 
Implementación de bases de datos agrupamiento y funciones de agregado
Implementación de bases de datos agrupamiento y funciones de agregadoImplementación de bases de datos agrupamiento y funciones de agregado
Implementación de bases de datos agrupamiento y funciones de agregado
 
Que es una consulta
Que es una consultaQue es una consulta
Que es una consulta
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Teoria sql
Teoria sqlTeoria sql
Teoria sql
 
Ejemploddl dml-ok
Ejemploddl dml-okEjemploddl dml-ok
Ejemploddl dml-ok
 
Funciones de las hojas de cálculo
Funciones de las hojas de cálculoFunciones de las hojas de cálculo
Funciones de las hojas de cálculo
 
Sentencias sql
Sentencias sqlSentencias sql
Sentencias sql
 
8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx8 Guía_Fundamentos de Base de Datos (2).docx
8 Guía_Fundamentos de Base de Datos (2).docx
 
Guia de ejercicio sql
Guia de ejercicio sqlGuia de ejercicio sql
Guia de ejercicio sql
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 
Cheat_MySQL.docx
Cheat_MySQL.docxCheat_MySQL.docx
Cheat_MySQL.docx
 
Subconsultas
SubconsultasSubconsultas
Subconsultas
 

Último

APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
VeronicaCabrera50
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
LudmilaOrtega3
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
JonathanCovena1
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
DavidCamiloMosquera
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
acgtz913
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
EricaCouly1
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
saradocente
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
ROCIORUIZQUEZADA
 
Chatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdfChatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdf
Demetrio Ccesa Rayme
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
100078171
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Alejandrino Halire Ccahuana
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
YeniferGarcia36
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
JorgeVillota6
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
israelsouza67
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
shirherrer
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 

Último (20)

APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdfAPUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
APUNTES UNIDAD I ECONOMIA EMPRESARIAL .pdf
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
 
Chatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdfChatgpt para los Profesores Ccesa007.pdf
Chatgpt para los Profesores Ccesa007.pdf
 
A VISITA DO SENHOR BISPO .
A VISITA DO SENHOR BISPO                .A VISITA DO SENHOR BISPO                .
A VISITA DO SENHOR BISPO .
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
 
200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural200. Efemerides junio para trabajar en periodico mural
200. Efemerides junio para trabajar en periodico mural
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 

bd2-teorico02.pdf

  • 1. Bases de Datos 2 Teórico
  • 2. 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.
  • 3. 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
  • 4. SQL como Data Definition Language  Permite crear, modificar y eliminar objetos de la base de datos (Tablas, Vistas)
  • 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:  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, 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
  • 8. 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
  • 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. 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
  • 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 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) )
  • 16. 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;
  • 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  En lugar de imponer la igualdad puedo usar el operador JOIN SELECT nombre, #prod FROM (VENTAS JOIN FABRICANTES ON VENTAS.#fab = FABRICANTES.#fab)
  • 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 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
  • 23. 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
  • 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; 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; 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. 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  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. 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;
  • 33. 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
  • 34. 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
  • 35. 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)
  • 36. 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.
  • 37. 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.
  • 38. 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
  • 39. 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.
  • 40. 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;
  • 41. 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;
  • 42. 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;
  • 43. 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';
  • 44. 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.