sql (dml) - javeriana calicic.javerianacali.edu.co/wiki/lib/exe/fetch.php?media=materias:sql.pdf ·...

Post on 22-Mar-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SQL (DML)

Carlos A. Olarte (carlosolarte@puj.edu.co)Gestion y Modelacion de Datos

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Outline

1 Actualizacion, Insercion y Modificacion

2 Consultas (Queries)

3 Renombramiento

4 Ordenamiento

5 Reuniones

6 Operaciones sobre conjuntos

7 Funciones de Agregacion

8 Subconsultas Anidadas

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Insert

insert into PERSONAS values (1,’carlos’,’olarte’);

insert into PERSONAS (cc,nom,apellido)

values (1,’carlos’,’olarte’);

insert into PERSONAS (cc,nom,apellido)

values (’1’,’carlos’,’olarte’), (’2’,’juan’,’perez’);

insert into PERSONAS (cc,nom,apellido)

select id,nom1 || ’ ’ || nom2 || ’ ’ , lname

from PEOPLE;

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Update

update PERSONAS set nombre=’carlos alberto’

where cc= ’1’;

update PRODUCTOS set precio=precio*1.03;

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Delete

delete from PERSONAS where cc = ’1’;

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Estructura basica

SELECT <ATRIBUTOS>

FROM <RELACIONES>

WHERE <CONDICIONES>

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Select (π)

Corresponde a la operacion de Proyeccion.

Por defecto no elimina los duplicados. Si se quiere eliminar losduplicados se debe utilizar la palabra reservada distinct

Para especificar todos los atributos se puede utiliza el sımboloasterisco (*)

Es posible utilizar funciones SQL incorporadas.

Ejemplos:

select codigo

from productos

select *

from productosselect distinct nombre

from clientes

select id,nombre,precio,precio*0.16 iva, precio * 1.16 totalfrom productos;

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Where(σ)

Corresponde a la operacion de seleccion.

Conectivos logicos

AND (∧)

OR (∨)

NOT (¬)

Operaciones sobre cadenas

LIKE (Busqueda depatrones)

(Cualquier caracter)

% (Cualquie subcadena)

\ (Caracter de escape)

Operadores de Comparacion

<

>

<=

>=

<> ( 6=)

BETWEEN xxx AND yyy(rangos)

Valores Nulos

IS NULL

IS NOT NULL

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Ejemplos

select * from x where codigo>3

select * from x where codigo>3 and apellido=’perez’

select * from x where nombre like ’P%’

select * from x where nombre like ’__A__’

select * from x where length(telefono) <= 7

select * from x where precio between 10 and 20

select * from x where fecha between

date ’2011-02-03’ and date ’2012-02-01’

select * from x where to_char(fecha,’yyyy’) = ’2012’

select * from x where apellido is null

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Renombramiento (ρ)

Se efectua por medio de alias tanto en la clausula select comoen la clausula from

select c.nombre from ciudades c

select c.id identificador from ciudades c

select id as identificador from ciudades

select id as identificador from ciudades as c

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Ordenamiento

Mediante la clausula order by es posible definir el orden en elque se presentan las tuplas. Por defecto se ordenanascendentemente (asc) y se puede especificar en orden inverso(desc)

select cod,nom,apell from est order by cod

select cod,nom,apell from est order by cod asc

select cod,nom,apell from est order by cod desc

select cod,nom,apell from est order by apell,nom

select cod,nom,apell from est order by apell desc, nom

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Restringiendo el Numero de Filas

select nombre, apellidofrom personasorder by fnacimientoLIMIT 20;

select cod,nombre, preciofrom productosorder by precioLIMIT 10 OFFSET 30;

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Reuniones

Dado que r ./θ s = σθ(r × s),ρp(Personas) ./P.ciu id=C .id ρc(Ciudades) se puede expresar como:

select * from personas p, ciudades c where p.ciu id = c.id;

Tambien puede utilizarse la sentencia JOIN:

select * from personas p INNER JOIN join ciudades c on ( p.ciu id= c.id);

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Reuniones Externas

La reunion externa ρp(Personas) =./P.ciu id=C .id ρc(Ciudades) sepuede expresar utilizando un outer join1:

select * from personas p, ciudades c where p.ciu id = c.id(+);

O utilizando la sentencia LEFT JOIN:

select p.*,c.* from personas p LEFT JOIN ciudades c on(p.ciu id= c.id);

Si por el contrario se quiere calcular P ./=θ C se utilizarıa:

select * from personas p, ciudades c where p.ciu id(+) = c.id;

select p.*,c.* from personas p RIGHT JOIN ciudades c on(p.ciu id= c.id);

1Solo disponible en oracleCarlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Reuniones

Producto Cartesiano

select * from a cross join b;select * from a, b;

Full join (=./ ∪ ./=)

select * from a full join join b;

clausula using

select * from tabla1 inner join tabla2 using (atr1);’atr1’ debe ser un atributo en comun entre tabla1 y tabla2.

Natural Joins

select * from tabla1 natural inner join tabla2;realiza el join entre tabla1 y tabla2 con los atributos que seancomunes.

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Operaciones sobre conjuntos (∪,∩,−)

Por defecto eliminan los duplicados. Para conservarlos seutiliza la palabra reservada all 2

select apellido,nombre from estudiantes

union select apellido,nombre from profesores

select apellido,nombre from estudiantes

union all select apellido,nombre from profesores

select apellido,nombre from estudiantes

intersect select apellido,nombre from profesores

select apellido,nombre from estudiantes

except select apellido,nombre from profesores

2En Oralce: except → minusCarlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Funciones de Agregacion

Estructura General

SELECT AAGRUPAMIENTO,FAGRUPAMIENTO

FROM ...

WHERE ...

GROUP BY AAGRUPAMIENTO

HAVING <CONDICIONES SOBRE GRUPOS>

Funciones de Agrupamiento

COUNT (Conteo)

AVG (Promedio)

SUM (Sumatoria)

MAX (Maximo)

MIN (Mınimo)

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Ejemplos

select count(*) from x

select count(*),apellido from personas

group by apellido

select count(*),apellido from personas

group by apellido having count(*)>3

select sum(saldo),count(*), avg(saldo),id_sucursal

from cuentas group by id_sucursal

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Subconsultas Anidadas

Pertenencia a conjuntos (IN y NOT IN)

select * from materias

where codigo in (select mat_codigo

from matriculas

where est_codigo=1234)

select * from matriculas

where periodo not in (’2004-2’,’2005-1’)

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Continuacion

Comparacion de Conjuntos (SOME, ALL)

WHERE A1 =SOME (<Subquery>) Chequea si existe unatupla de la subconsulta que sea igual a A1

WHERE A1 =ALL (<Subquery>) Chequea si todas las tuplasde la subconsulta son iguales a A1

select * from materias where

codigo =some (select mat_codigo from materias

where est_codigo=14565)

select * from notas where

nota >=all (select nota from notas)

a

aComo expresar la primera consulta por medio de ./ o una clausula IN?

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Comprobacion de relaciones vacıas (EXISTS, NOTEXISTS)

EXISTS retorna verdadero si la subconsulta no es vacıa

NOT EXISTS para chequear la inexistencia de tuplas en elresultado de una subconsulta

select * from cursos cur where exists

(select cur_cod from matriculas

where cur_cod = cur.codigo)

Por medio de not exists (B minus A) puede calcularse A ⊇ B. Porejemplo, dado r(r1, s1) y s(s1) que calcula la siguiente expresion?

select distinct rout.r1 from r rout where not exists(

select s.s1 from s minus select r.s1 from r

where r.r1 = rout.r1)

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Ejercicios

Dado el modelo:

departamentos(id,nombre)empleados(id,nombre, telefono,direccion,emp jefe id, dep id)

productos(cod,nombre,descripcion,unitario)

facturas(num,fecha,emp id)

detalle(fac num, pro cod, cantidad, valor)

Escribir la consulta SQL que retorne:1 El total (en dinero) de la factura X.2 El valor total facturado por el empleado X en Junio 2009.3 El numero de unidades vendidas del producto X entre las

fechas Y y Z.4 El producto mas vendido en el 2009.5 El numero de facturas por empleado entre las fechas X y Y.6 El nombre de los empleados que son jefes en el depto X.7 El valor facturado por el departamento X en los ultimos 10

anos.8 Los empleados que vendieron mas de 50 productos en el 2012.

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

Ejercicios

1 El nombre de todos los empleados con su respectivo jefe.

2 El detalle de los productos vendidos en la factura X.

3 Los productos que no se vendieron en el mes de febrero 2012.

4 El total facturado en el 2012 por cada departamento.

5 Los departmentos que tienen mas de 10 empleados.

6 El empleado que ha vendido todos los productos.

7 Los empleados que vendieron menos de X cantidad de dineroen el 2012

Carlos A. Olarte (carlosolarte@puj.edu.co) Gestion y Modelacion de DatosSQL (DML)

top related