2. Lenguajes de bases de datos
s Lenguaje de definición de datos DDL, es
una serie de definiciones que especifican el
esquema de la base de datos
s Lenguaje de manejo de datos DML,
permite manipular la base de datos,
utilizando las operaciones de recuperar,
insertar, actualizar y borrar. Hay 2 tipos:
- DML procedimental, se especifica qué
datos se necesitan y cómo obtenerlos.
- DML no procedimentales, solo se indica
qué datos se necesitan, no cómo
obtenerlos.
3. SQL
s SQL se ha establecido claramente en el lenguaje estándar de
bases de datos relacionales.
s Es un lenguaje LDD o de definición de datos, LMD de
manipulación de datos, y LCD o de control de datos. Todo
esto en un solo lenguaje SQL.
s Los comandos más importante son:
s LDD, definición de datos:
CREATE TABLE, CREATE INDEX, CREATE VIEW, DROP
TABLE, DROP INDEX, DROP VIEW, ALTER TABLE,
COMMENT.
s LMD, manipulación de datos:
SELECT, INSERT, UPDATE, DELETE.
s LCD, control de datos:
GRANT, REVOKE, COMMIT, ROOLBACK.
4. SQL
SELECT
s Permite recuperar información de la base de datos.
s Junto con insert, update y delete permiten manipular los
datos de cualquier forma.
SELECT - SELECCIÓN
préstamo (nom_suc nro_pres importe)
CAÑOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
Ej.1.- “Los préstamos de la sucursal JUNIN” :
select * from prestamo where
nom_suc=‘JUNIN’
JUNIN 125 1800
JUNIN 132 1600
5. SQL
SELECT - SELECCIÓN
préstamo (nom_suc nro_pres importe)
CAÑOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
Ej.2.- “Los préstamos de la sucursal JUNIN,
con importe mayor a 1650” :
select * from prestamo where
nom_suc=‘JUNIN’ and importe>1650
JUNIN 125 1800
6. SQL
SELECT - SELECCIÓN
resp_presta (nom_clien nom_emple nro_pres)
SUCHA RAMONA 134
MARCO JAIME 122
RUBÉN RUBÉN 178
Ej.3.- “Los clientes que tienen el mismo nombre que
su oficial de créditos” :
select * from resp_presta where
nom_clien=nom_emple
RUBÉN RUBÉN 178
7. SQL
SELECT - PROYECCIÓN
préstamo (nom_suc nro_pres importe)
CAÑOTO 144 1500
BOLIVAR 122 1200
JUNIN 125 1800
BOQUERON 188 1500
JUNIN 132 1600
BOLIVAR 177 1550
Ej.4.- “Número de préstamo e importe de los
préstamos con importe mayor a 1500” :
select nro_pres, importe from préstamo
where importe = 1500 125 1800
132 1600
177 1550
8. SQL
SELECT - PROYECCIÓN
resp_presta (nom_clien nom_emple nro_pres)
SUCHA RAMONA 134
MARCO JAIME 122
RUBÉN RUBÉN 178
Ej.5.- “Los clientes que tienen el mismo nombre que
su oficial de créditos, sin repetir el nombre” :
select nom_clien from resp_presta
where nom_clien=nom_emple
RUBÉN
9. SQL
SELECT - PRODUCTO
cliente resp_presta
(nom_clien calle ciudad) (nom_clien nom_emple nro_pres)
MARCO calle5 La Paz SUCHA RAMONA 134
RUBÉN calle12 Potosí MARCO JAIME 122
RUBÉN RUBÉN 178
Ej.6.- “Los clientes que tienen oficial y la ciudad
donde radican”. Select * from cliente, resp_presta:
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBÉN RUBÉN 178
RUBÉN calle12 Potosí SUCHA RAMONA 134
RUBÉN calle12 Potosí MARCO JAIME 122
RUBÉN calle12 Potosí RUBÉN RUBÉN 178
10. SQL
SELECT - PRODUCTO
Select * from cliente, resp_presta :
cliente. resp_presta.
nom_clien calle ciudad nom_clien nom_emple nro_pres
MARCO calle5 La Paz SUCHA RAMONA 134
MARCO calle5 La Paz MARCO JAIME 122
MARCO calle5 La Paz RUBÉN RUBÉN 178
RUBÉN calle12 Potosí SUCHA RAMONA 134
RUBÉN calle12 Potosí MARCO JAIME 122
RUBÉN calle12 Potosí RUBÉN RUBÉN 178
Select * from cliente, resp_presta where
resp_presta.nom_clien, cliente.nom_clien
cliente. atiende.
nom_clien calle ciudad nom_clien nom_emple nro_pres
MARCO calle5 La Paz MARCO JAIME 122
RUBÉN calle12 Potosí RUBÉN RUBÉN 178
11. SQL
SELECT - PRODUCTO
Select * from cliente, resp_présta
where resp_presta.nom_clien, cliente.nom_clien
cliente. resp_préstamo.
nom_clien calle ciudad nom_clien nom_emple nro_pres
MARCO calle5 La Paz MARCO JAIME 122
RUBÉN calle12 Potosí RUBÉN RUBÉN 178
Select cliente.nom_clien, ciudad from cliente, resp_présta
where resp_presta.nom_clien, cliente.nom_clien
cliente.
nom_clien ciudad
MARCO La Paz
RUBÉN Potosí
12. SQL
SELECT - RENOMBRAR
s Permite cambiar el nombre de la relación,
para diferenciar atributos del mismo nombre.
cliente resp_presta
(nom_clien calle ciudad) (nom_clien nom_emple nro_pres)
SUCHA calle5 Sta. Cruz SUCHA RAMONA 134
RUBÉN calle12 Potosí MARCO JAIME 122
RAMONA calle8 Tarija RUBÉN RUBÉN 178
RENATO calle1 Potosí
Select * from cliente, resp_presta, cliente as cl
13. SQL
SELECT - UNION
prestatario (nro_pres nom_clien)
144 MARCO
125 SUCHA
impositor (nro_cuen nom_clien)
174 MARCO
182 RUBEN
Ej.7.- “Los clientes que tienen préstamo o depósito”
(select nom_clien from prestatario) union
(select nom_clien from impositor)
nom_suc
MARCO
SUCHA
RUBEN
14. SQL
SELECT - DIFERENCIA
prestatario (nro_pres nom_clien)
144 MARCO
125 SUCHA
impositor (nro_cuen nom_clien)
174 MARCO
182 RUBEN
Ej.7.- “Los clientes que tienen préstamo pero no
tienen depósito”
(select nom_clien from prestatario) except
(select nom_clien from impositor)
nom_suc
SUCHA
15. SQL
SELECT - INTERSECCIÓN
prestatario (nro_pres nom_clien)
144 MARCO
125 SUCHA
impositor (nro_cuen nom_clien)
174 MARCO
182 RUBEN
Ej.7.- “Los clientes que tienen préstamo y depósito”
(select nom_clien from prestatario) intersect
(select nom_clien from impositor)
nom_suc
MARCO
16. SQL
SELECT - OUTER JOIN
s Reunión externa.- Cuando hacemos
producto natural, las tuplas de una tabla que
no se combinan con tuplas de la otra tabla
no aparecen en la relación resultante.
1 Select * from tabla1, tabla2
where tabla1.columna (+) = tabla2.columna
en el producto natural mantiene las tuplas de
r que no se combinan.
17. SQL
SELECT - OUTER JOIN
2 Select * from tabla1, tabla2
where tabla1.columna = tabla2.columna
(+)
en el producto natural mantiene las tuplas de
s que no se combinan.
3 Select * from tabla1, tabla2 where
tabla1.columna (+) = tabla2.columna (+)
en el producto natural mantiene las tuplas de
r y s que no se combinan.
18. SQL
SELECT - FUNCIONES AGREGADAS
s Funciones agregadas.- se puede usar las
funciones agregadas: sum, avg, max, min,
count, count_distinct, etc. Se usan así:
select sum(importe) from préstamo
suma todos los importes de la relación
préstamo.
s Agrupación.- Saca los resultados agrupando
por los atributos indicados. La forma es:
select sum(importe) from préstamo
group by nom_suc
suma los préstamos de cada sucursal.
19. SQL
DELETE
s Hasta ahora todos los programas se han
centrado en extraer información. Es
necesario además, insertar, borrar y
modificar información en la base de datos.
s Borrado.- Permite eliminar tuplas de la
base de datos. Se expresa así:
delete from r where <condición>
donde r es una relación y es una condición
where de SQL, que obtiene las tuplas de r
que se eliminarán.
20. SQL
INSERT, UPDATE
s Inserción.- Permite aumentar una o varias
tuplas en la base de datos. Se usa:
insert into r E
donde r es una relación y E es un consulta
“select” o “values(...)” donde se indican los
datos de la tupla a insertar.
s Actualización.- Permite modificar uno o
varios valores de la base de datos. Se puede
usar la proyección extendida:
update set <asigna> where <condición>
21. SQL
VISTAS
s create view v as E; donde E es una
consulta “select” del SQL, y v es el nombre
de la vista.
22. QBE
s Query by example QBE es un lenguaje para
bases de datos relacionales, basado en el
cálculo relacional de dominios.
s Por tanto es lo más próximo a un lenguaje
no procedural, en la práctica no existe como
lenguaje, está inmerso en los lenguajes
comerciales, con excelentes resultados.
s También se conoce el QUEL basado en el
cálculo relacional de tuplas, el cual no los
trataremos.
23. QBE
SELECT
s Permite recuperar información de la
base de datos. QBE elimina los
resultados duplicados por default.
s Junto con insert, update y delete
permiten manipular los datos de
cualquier forma.
24. QBE
SELECT - SELECCIÓN
resp_préstamo (nom_clien nom_emple nro_pres)
SUCHA RAMONA 134
MARCO JAIME 122
RUBÉN RUBÉN 178
Ej.3.- “Los clientes que tienen el mismo nombre que
su oficial de créditos” :
resp_préstamo nom_clien nom_emple nro_pres
P. _x _x
RUBÉN RUBÉN 178
25. SQL
DELETE
s Hasta ahora todos los programas se han
centrado en extraer información. Es
necesario además, insertar, borrar y
modificar información en la base de datos.
s Borrado.- Permite eliminar tuplas de la
base de datos. Por ejemplo para eliminar los
préstamos de la sucursal JUNIN:
préstamo nom_suc nro_pres importe
D. BOLIVAR
26. QBE
INSERT, UPDATE
s Inserción.- Permite aumentar una o varias
tuplas en la base de datos. Por ejemplo para
insertar un cliente:
cliente nom_clien calle ciudad
I. JOSELITO ca3 SCZ
s Actualización.- Permite modificar uno o
varios valores de la base de datos. Por
ejemplo para incrementar el 5% a todos los
saldos de las cuentas:
cuenta nom_suc nro_cuen saldo
U. _x * 1.05
_x