Beruflich Dokumente
Kultur Dokumente
Sublenguajes:
DDL (Data Definition Language)
DML (Data Manipulation Language)
SQL: Structured Query Language
(standard)
Lenguaje no procedural
Devuelve el código de
producto y el nombre de
cada producto
SQL como DML
Ejemplo:
INSERT
Ejemplo:
Ejemplos
Incrementar el precio del producto número 530 en
un 10%
UPDATE VENTAS
SET precio = precio * 1.1
WHERE #prod = 530;
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 :
A1,...,An (P (R1 x ... x Rm) )
Recuperación de datos
En Algebra Relacional la proyección permite
seleccionar las columnas y la selección permite
seleccionar las tuplas.
Ejemplos
Dar el precio al que vende el producto 7 el fabricante
2.
SELECT precio
FROM VENTAS
WHERE #fab = 2 AND #prod = 7;
SELECT #fab
FROM VENTAS
WHERE precio < 100 AND #prod = 4;
Orden de las tuplas
Dar el número de los productos fabricados
ordenados en forma ascendente.
SELECT #prod
FROM VENTAS
ORDER BY #prod ASC;
SELECT nombre
FROM PRODUCTOS
WHERE peso > volumen * 3;
Consultas anidadas
¿Qué son?
Consultas que se ubican dentro de la cláusula
WHERE de otra consulta.
Ejemplo
SELECT A1,...,An
IN
FROM R1,...,Rm = ANY
WHERE (Aj,…,Ak) <op-comp> > ANY
= ALL
(SELECT Bj,..., Bk > ALL
FROM S1,..., Sn
WHERE Q)
Ejemplo
Dar los nombres de los fabricantes que venden
productos que 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
vendidos por FROM VENTAS
el fabricante 1
WHERE VENTAS.#fab = 1)
Función EXISTS
¿Para qué sirve?
Chequea 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 F1.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 mas
WHERE V2.#fab = F1.#fab AND
V2.#prod <> 2);
Agrupamiento de tuplas
¿Cómo funciona?
Genera un grupo por cada #fab distinto.
De cada grupo devuelve el #fab y la cantidad de
tuplas de dicho grupo.
Ejemplos
Dar el número de fabricante y el promedio de los
precios a los cuales vendió sus productos.
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.
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
Puedo aplicar formatos a la salida.
EJEMPLO: Dar el nombre y departamento de los
fabricantes separados por " - ".
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.
B es su posición en la BD.
LABORATORIO
Vamos a usar PostgreSQL 9.6.2
https://www.enterprisedb.com/downloads/postgre
s-postgresql-downloads#windows
Referencias