Publicado el 16 de Abril del 2017
2.017 visualizaciones desde el 16 de Abril del 2017
575,8 KB
14 paginas
Creado hace 17a (31/10/2007)
SSSSQLQLQLQL
Lenguajes de consulta para bases de datos
Álgebra Relacional
Selección y proyección
Operaciones sobre conjuntos: unión, intersección, diferencia, producto
Reunión natural
Consultas SQL
Bibliografía
- C.J. Date:
“Introducción a los sistemas de bases de datos”
Pearson Educación, 2001. ISBN 968-444-419-2.
- Ramez A. Elmasri & Shamkant B. Navathe:
“Fundamentos de Sistemas de Bases de Datos”.
Addison-Wesley, 2002 [3ª edición]. ISBN 84-782-9051-6.
- Henry F. Korth, Abraham Silberschatz & S. Sudarshan:
“Fundamentos de Bases de Datos”.
Mc-Graw Hill, 2002 [4ª edición]. ISBN 84-481-3654-3.
- Olga Pons, Nicolás Marín, Juan Miguel Medina, Silvia Acid & Mª Amparo Vila:
“Introducción a las bases de datos”
Granada: Librería Fleming, 2003
Lenguajes de consulta
Lenguajes de con
sulta
Lenguajes de con
Lenguajes de con
sulta
sulta
Un lenguaje de consulta es un lenguaje
que permite al usuario solicitar información de la base de datos.
p.ej. SQL, Query-by-example…
Al trabajar con bases de datos relacionales, se utilizan dos tipos de lenguajes:
DDL [Data Definition Language]
Manipulación del esquema de la base de datos
- Creación, modificación y eliminación de tablas.
- Establecimiento de restricciones de integridad
o Restricciones sobre los valores de los atributos.
o Claves primarias.
o Claves externas.
DML [Data Manipulation Language]
Gestión de los datos almacenados en la base de datos
- Obtención de datos de la base de datos (consultas).
-
- Modificación de los datos existentes en la base de datos (actualizaciones).
- Eliminación de datos de la base de datos (borrado).
Introducción de nuevos datos en la base de datos (inserciones).
Bases de Datos
1
© Fernando Berzal
Álgebra Relacional
Álgebra Relacional
Álgebra Relacional
Álgebra Relacional
El Álgebra define operaciones que nos permiten manipular relaciones (tablas).
Las operaciones usan una o dos relaciones existentes para obtener una nueva.
El resultado de una operación puede utilizarse como entrada en otra operación.
Trabajadores
id_trabajador
nombre
tarifa_hr
tipo_de_oficio
id_supv
1235
1412
2920
3231
1540
1311
3001
F. Aguilera
A. Calvo
N. Marín
O. Pons
J.M. Medina
J.C. Cubero
D. Sánchez
12,50
13,75
10,00
17,40
11,75
15,50
8,20
Electricista
Fontanero
Carpintero
Albañil
Fontanero
Electricista
Albañil
1311
1540
null
null
null
null
3231
Selección o restricción
Selección de las tuplas que satisfacen una condición.
σtipo_de_oficio=’Electricista’(Trabajadores)
id_trabajador
nombre
tarifa_hr
tipo_de_oficio
id_supv
1235
1311
F. Aguilera
J.C. Cubero
12,50
15,50
Electricista
Electricista
1311
null
σtarifa_hr>12(Trabajadores)
id_trabajador
nombre
tarifa_hr
tipo_de_oficio
id_supv
1235
3231
1311
F. Aguilera
O. Pons
J.C. Cubero
12,50
17,40
15,50
Electricista
Albañil
Electricista
1311
null
null
Bases de Datos
2
© Fernando Berzal
Proyección
Selección de un subconjunto de atributos de una relación
πnombre, tarifa_hr, tipo de oficio (Trabajadores)
nombre
tarifa_hr
tipo_de_oficio
F. Aguilera
A. Calvo
N. Marín
O. Pons
J.M. Medina
J.C. Cubero
D. Sánchez
12,50
13,75
10,00
17,40
11,75
15,50
8,20
Electricista
Fontanero
Carpintero
Albañil
Fontanero
Electricista
Albañil
Operaciones sobre conjuntos
Como una relación es un conjunto de tuplas,
se pueden utilizar las operaciones típicas sobre conjuntos:
Unión
Intersección
Diferencia
Producto
Permite combinar datos de dos relaciones.
Forma parejas de tuplas (producto cartesiano).
Permite identificar las tuplas comunes a dos relaciones.
Identifica las tuplas de una relación que no están en otra.
X Y
x1 y1
x2 y1
x3 y2
×
A B
a1 b1
a4 b2
=
X Y A B
a1 b1
x1 y1
a4 b2
x1 y1
x2 y1
a1 b1
a4 b2
x2 y1
a1 b1
x3 y2
x3 y2
a4 b2
Bases de Datos
3
© Fernando Berzal
Reunión [natural]
La operación de reunión se usa para conectar datos de distintas relaciones
(siguiendo los enlaces que vienen determinados por las claves externas)
X A
x1 a1
x2 a1
x3 a2
X B
x1 b1
x3 b2
=
X A B
x1
a1 b1
a2 b2
x3
En realidad, la reunión se obtiene combinando el producto cartesiano con la
selección y la proyección:
Supongamos que queremos hacer la reunión natural de dos relaciones, A y
B, las cuales tienen los atributos C1, ..., Cn en común. La reunión de A
con B se obtiene realizando las siguientes operaciones:
- Se hace el producto cartesiano de A y B.
La relación resultante tendrá dos columnas para cada C1, ..., Cn.
- Se seleccionan aquellas tuplas del producto cartesiano para las cuales
los valores de las columnas C1, ..., Cn son iguales en A y en B.
- Se proyecta una sola copia de las columnas C1, ..., Cn junto a los
atributos específicos de las relaciones A y B.
Bases de Datos
4
© Fernando Berzal
BBBBase de datos
ase de datos
ase de datos
ase de datos
Biblioteca con los libros clasificados por temas
(con los temas organizados jerárquicamente)
Libro (ISBҭ, Título, Autor, Editorial, Año)
Tema (ID, Descripción, SUPER)
acerca_de (ISBҭ, ID)
Bases de Datos
5
© Fernando Berzal
Consultas SQL
Consultas SQL
Consultas SQL
Consultas SQL
Sentencia SELECT
Consultas simples
select <atributos>
from <tablas>
select *
from temas;
select título, autor
from libros;
select editorial
from libros
Bases de Datos
6
© Fernando Berzal
Eliminación de duplicados
select distinct …
select distinct editorial
from libros;
Especificación de condiciones
select …
from …
where <condición>
select título, autor, editorial
from libros
where editorial=”Prentice-Hall”;
select título, autor, año
from libros
where año>2000;
Bases de Datos
7
© Fernando Berzal
Operadores lógicos
AND, OR, NOT
select título, autor, editorial
from libros
where editorial=”Prentice-Hall”
or editorial=”Addison-Wesley”
or editorial=”Pearson”;
Valores nulos
IS NULL / IS NOT NULL
select *
from temas
where super is not null;
Expresiones aritméticas
Se pueden incluir expresiones aritméticas, tanto en la lista de atributos que
acompaña a SELECT como en las condiciones especificadas en la cláusula WHERE.
p.ej. select pedido, precio*unidades, precio*unidades*0.16
from pedidos
where precio*unidades > 100;
Bases de Datos
8
© Fernando Berzal
Producto cartesiano
Cuando incluimos varias tablas en la cláusula FROM
- Para hacer referencia a los atributos, se utiliza la notación tabla.atributo
- Cuando una tabla se repite, es necesario utilizar alias: … [AS] alias
select *
from temas t1, temas t2;
Reunión
Combinamos producto cartesiano, selección y proyección
select *
from temas as t1, temas as t2
where t1.super=t2.id;
select t1.ID as ID, t1.Descripción as Tema,
from temas as t1, temas as t2
where t1.super=t2.id;
t2.Descripción as Asignatura
Bases de Datos
9
© Fernando Berzal
Manejo de cadenas de caracteres
- Operador LIKE “...”
- Comodines
SQL
'
%
_
Access
"
*
?
Significado
Delimitación de cadenas
Cualquier cadena
Un único caracter
select *
from libros
where título like “Intro*”
select *
from libros
where isbn like "84????????"
select *
from libros
where título like "*bases de datos"
Bases de Datos
10
© Fernando Berzal
Orden de presentación de los datos
- Claúsula ORDER BY
- Orden ascendente (ASC, por defecto) y descendente (DESC)
select autor,título,año
from libros
order by autor
select año, título, autor
from libros
where título like "* bases de datos"
order by año, título
select año, título, autor
from libros
where título like "* bases de datos"
order by año desc, título
Bases de Datos
11
© Fernando Berzal
Funciones de agregación
Resumen de los datos almacenados en la base de datos
p.ej. Número de libros editados en España:
select count(*) as “Libros editados en España”
from libros
where libros.ISBN like "84*";
p.ej. Número de libros por temas
select tema, count(*) AS Libros
from acerca_de
group by tema
select temas.descripción, count(*) AS Libros
from acerca_de,temas
where acerca_de.tema = temas.id
group by temas.descripción
Bases de Datos
12
© Fernando Berzal
Otras consultas de ejemplo
Libros de bases de datos
select libros.título, libros.autor
from libros, acerca_de, temas
where libros.isbn = acerca_de.isbn
and acerca_de.tema = temas.id
and temas.descripción = "Bases de datos"
order by libros.título
Listado de libros por temas
select temas.descripción, libros.título, libros.autor
from libros,acerca_de,temas
where libros.isbn = acerca_de.isbn
and acerca_de.tema = temas.id
order by temas.descripción, libros.título
Bases de Datos
13
© Fernando Berzal
Comentarios de: SQL Lenguajes de consulta para bases de datos (0)
No hay comentarios