Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Language (SQL)
Fundamentos de Bases de
Datos
InCo - 2011
Un poco de historia
SQL
SQL
SQL
SQL
Tablas
Vistas
Usuarios
Etc.
Qu es una tabla?
Un conjunto de valores organizados en
columnas y filas
Una tabla es la representacin de una
relacin, pero no son estrictamente
equivalentes
SQL
CREATE TABLE
ALTER TABLE
DROP TABLE
SQL
Nombre de la tabla
Nombre de cada columna
Tipo de datos de cada columna
Restricciones de clave primaria y clave fornea sobre otras
tablas
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
SQL
Ejemplo
CREATE TABLE productos
CREO LA
( "#prod" integer NOT NULL,
TABLA
PRODUCTOS
nombre character varying(50),
CONSTRAINT productos_pk PRIMARY KEY
("#prod")
)
ALTER TABLE productos
add column peso double precision
SQL
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
SQL
10
SQL
11
Ejemplo
Quiero ofrecer una vista sobre la tabla
productos
en la que NO aparezca el peso
CREATE VIEW productos2 AS
( SELECT "#prod", nombre
Devuelve el cdigo de
producto y el nombre de
FROM productos
cada producto
)
SQL
12
SQL
13
Ejemplos
SQL
14
Ejemplos
UPDATE VENTAS
SET precio = precio * 1.1
WHERE "#prod" = 530;
15
Recuperacin de datos
donde:
en Algebra Relacional :
SQL
16
Ejemplos
Precio del que vende el producto 7 el
fabricante 2.
SELECT precio
FROM VENTAS
WHERE "#fab" = 2 and "#prod" = 7;
Nmero de los fabricantes que vendieron el
producto 200 a menos de $100000.
SELECT "#fab" FROM VENTAS
WHERE precio < 100000 and "#prod" = 200;
SQL
17
Orden de tuplas
SELECT "#prod"
FROM VENTAS
ORDER BY "#prod" asc;
SQL
18
Filtrado de repetidos
SQL
19
Join
SQL
20
Join (2)
SQL
21
SQL
22
Ejemplo de JOINs
T1
T2
A
1
C
xxx
yyy
zzz
+------+------+------+------+
| A
| B
| A
| C
|
+------+------+------+------+
| 1
| a
| 1
| xxx |
| 3
| c
| 3
| yyy |
+------+------+------+------+
+------+------+------+
| A
| B
| C
|
+------+------+------+
| 1
| a
| xxx |
| 3
| c
| yyy |
+------+------+------+
SQL
23
SQL
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
TENGO DOS
PROBLEMAS!
25
Alias
26
Union
27
Diferencia
EQUIVALENTES
SQL
SELECT
EXCEPT
SELECT
"#fab" FROM
FABRICANTES
28
Funciones de agregacin
Las funciones de agregacin extienden al
lgebra relacional (EJ: contar tuplas,
sumar cantidades, etc.)
Decir cuantos fabricantes hay.
SELECT count("#fab")
FROM FABRICANTES;
SELECT max(precio)
FROM VENTAS;
SQL
29
30
SQL
31
SQL
32
Consultas anidadas
Qu son?:
Ejemplo
SELECT A1,...,An
FROM R1,...,Rm
WHERE (Aj,,Ak) <op-comp>
(SELECT Bj,..., Bk
FROM S1,..., Sn
WHERE Q)
SQL
IN
= ANY
> ANY
= ALL
> ALL
33
Ejemplo
SELECT f.nombre
FROM FABRICANTES f, VENTAS v
WHERE f."#fab" = v."#fab" AND
f."#fab" <> 10 AND v."#prod" IN
(SELECT "#prod"
Productos
FROM VENTAS
vendidos por
el fabricante 10WHERE VENTAS."#fab" = 10)
SQL
34
Funcin EXISTS
Para qu sirve?:
Ejemplo:
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)
SQL
Vende el
producto 200
Y no vende
nada ms
35
Agrupamiento de tuplas
Esto implica:
SQL
36
GROUP BY
Es una clusula ms que se agrega al
SELECT, FROM, WHERE
Ejemplo:
Cmo funciona?
SQL
37
Ejemplos
SELECT
F."#fab" as nFab, nombre,
sum(precio)
FROM
FABRICANTES F, VENTAS V
WHERE
F."#fab" = V."#fab"
GROUP BY F."#fab",
nombre
SQL
Fundamentos de Bases de Datos - INCO
2011
38
SQL
39
SQL
40
Ejemplos
SQL
41
Sub-consultas en el FROM
Equivalente al uso de vistas.
Dar el mximo del promedio de ventas de
cada fabricante.
SQL
42
Valor 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;
SQL
43
Cambios de formato
SQL
|| es el operador de concatenacin de
string.
44
Maysculas y minsculas
Dar el peso de los productos con nombre =
play I. No recordamos si la descripcin fue
ingresada con minsculas o con maysculas.
select peso
from PRODUCTOS
where upper (nombre) = 'PLAY I';
EQUIVALENTES
SQL
select peso
from PRODUCTOS
where lower (nombre) = 'play i';
Fundamentos de Bases de Datos - INCO
2011
45
En resumen:
SQL
46
Documentacin PostgreSQL
http://www.postgresql.org/docs/
LABORATORIO
Vamos a usar PostgreSQL 8.4
http://www.postgresql.org
SQL
47