4.3 Modificación o actualización. 9
5.5 Modificación o actuación. 12
6.5 Actualización o modificación (replace). 14
7. OPTIMIZACIÓN DE CONSULTAS. 14
7.4 Operaciones equivalentes. 15
1. INTRODUCCIÓN
Una BD está formada por una colección de datos, entre los cuales se establece una relación, y se encuentran almacenadas sobre un soporte físico.
Su estructura debe poder ser utilizada por varios usuarios de forma concurrente.
El gestor de la BD es el software, que permite la creación de la BD, su manipulación y su uso.
2. MODELO DE DATOS
Un modelo de datos nos va a permitir describir los objetos que intervienen en un sistema, así como las relaciones existentes entre dichos objetos.
Hay 3 niveles de abstracción (el usuario lo puede ver de forma distinta)
– Nivel físico o interno
– Nivel conceptual o lógico
– Nivel de externo
3. MANIPULACIÓN DE DATOS
3.1 Operaciones
a) Recuperación
b) Inserción
c) Eliminación
d) Modificación
3.2 Lenguajes
Los DML (Data Manage Language) o lenguajes de manipulación de datos pueden ser:
– Procedimentales: Se basan en el álgebra relacional
– No procedimentales: Se basan en:
o Cálculo relacional de tuplas (Quel)
o Cálculo relacional de dominios (QBE)
4. SQL
El lenguaje SQL (Structured Query Language), podríamos decir que es híbrido. Se fundamenta en el álgebra relacional y en el cálculo relacional.
4.1 Consultas
4.1.1 Estructura básica
4.1.2 Opciones
4.1.2.1 DISTINCT
Cuando queremos mostrar los valores de filas sin que se repitan los valores de la columna especificada, esta cláusula elimina las tuplas duplicadas cuando ninguna de las columnas indicadas es el campo clave.
SELECT DISTINCT column1, column2, …
FROM table_name;
4.1.2.2 FROM
Se indicarán las tablas que participan en la consulta o bien el “alias”.
4.1.3 Operaciones de conjunto
4.1.3.1 Unión (UNION)
Selecciona todas las filas de 2 conjuntos (A y B) de tuplas dando lugar a un solo conjunto donde se mezclarán las filas de conjunto A y el conjunto B, eliminando las duplicadas.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
4.1.3.2 Intersección (INTERSECT)
Selecciona las filas de los conjuntos indicados dando lugar a un solo conjunto en las que aparecerán sólo las tuplas comunes a todos ellos, eliminando los duplicados.
SELECT supplier_id
FROM suppliers
INTERSECT
SELECT supplier_id
FROM orders;
4.1.3.3 Pertenencia
Cláusula | Operación | Acción |
In: | Igual a (más de un valor) | Selecciona las tuplas cuyo dominio coincida con cualquiera del conjunto de valores especificados |
Not in: | Distinto a (más de un valor) | Selecciona las tuplas cuyo dominio sea distinto a cualquiera del conjunto de valores especificados |
4.1.3.4 MINUS
Selecciona las filas del primer conjunto (A) eliminando las duplicadas, y comparándolo posteriormente con el segundo conjunto (B), dando lugar a un tercer conjunto (C) formado por las filas que aparecen en el primero y no están contenidas en el segundo.
SELECT Txn_Date FROM Store_Information
MINUS
SELECT Txn_Date FROM Internet_Sales;
4.1.3.5 Some
La cláusula SOME devuelve verdadero si al realizar la comparación da verdadero para “algún” valor de la subconsulta.
SELECT atributo1 FROM tabla1 <SOME SELECT atributo2 FROM tabla2
4.1.3.6 ALL
Para buscar un valor que se corresponda con la condición “todos”, muestra las filas obtenidas con 2 sentencias SELECT, incluyendo los registros duplicados indicando la opción “all”.
SELECT atributo1 FROM tabla1 >ALL SELECT atributo2 FROM tabla2
4.1.3.7 EXISTS
Si queremos comprobar que un SELECT que está dentro de otro SELECT principal no está vacío, utilizamos esta cláusula, devolviendo el valor verdadero en caso de no estar vacía; si ha encontrado algún valor.
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
4.1.4 Predicados y operadores
4.1.4.1 Operadores de comparación
4.1.4.2 Operadores aritméticos
4.1.5 Variables
Las variables van asociadas a la cláusula FROM, aplicándose para comparación de tuplas. SELECT atributos FROM relación variable [,…] WHERE predicado
4.1.6 Ordenación
Cláusula ORDER BY
Los registros obtenidos se ordenarán por defecto en orden ascendente y por el primer campo que está definido como clave primaria en la expresión.
SELECT * FROM Customers
ORDER BY Country;
4.1.7 Agregación
4.1.7.1 Funciones
FUNCIONES ARITMÉTICAS
Cuando se utilizan criterios de agrupamiento, en el resultado de la consulta se muestran valores únicos, es decir, eliminan los valores duplicados.
– SUM; COUNT; AVG; MAX; MIN
FUNCIONES DE CARACTERES
4.1.7.2 Agrupamiento
Clausula GROUP BY
Obtiene una fila por cada grupo de valores que se repiten en la columna indicada. Por ejemplo, el número de alumnos pertenecientes al grupo de 1ª.
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
4.1.7.3 Condiciones sobre grupos
HAVING
Muestra solo las filas que cumplan la condición de las obtenidas con la cláusula GROUP BY.
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;
4.2 Inserción o altas
Inserta una fila en la relación con los valores asignados en el mismo orden en que están colocados en la relación. Si no se conoce el orden, opcionalmente se puede indicar la lista de atributos en cualquier orden, pero correspondiéndose con valores asignados.
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES (‘Cardinal’, ‘Tom B. Erichsen’, ‘Skagen 21’, ‘Stavanger’, ‘4006’, ‘Norway’);
4.3 Modificación o actualización
Modifica las filas del atributo sustituyéndolo por la modificación establecida.
UPDATE Customers
SET ContactName = ‘Alfred Schmidt’, City= ‘Frankfurt’
WHERE CustomerID = 1;
4.4 Eliminación o bajas
Elimina las tuplas de la relación especificada que cumpla una condición determinada.
DELETE FROM Customers
WHERE CustomerName=’Alfreds Futterkiste’;
5. QBE
5.1 Características
El QBE (Query-By-Example, consultas con ejemplos) es un lenguaje de manipulación de datos creado por IBM:
– Se fundamenta en el cálculo relacional orientado a dominios.
– Su sintaxis es bidimensional.
– Para realizar las consultas no se indica exactamente lo que queremos obtener, sino un ejemplo de lo que deseamos conseguir.
– Se utiliza “esqueletos” (tabla vacía)
– Los ejemplos están constituidos por constantes y variables de dominios. Los nombres de las variables irán precedidos por el símbolo de subrayado (_)
– Se puede introducir cualquier carácter en el ejemplo sin que se altere el contenido de la base de datos, ya que solo indica qué campos deseamos que se muestren.
– Por defecto, omite los valores duplicados presentándolos sólo una vez. Para que muestre todos los valores, incluido los que se repiten, se añade la orden “ALL”.
– Se utiliza la orden “P” que expresa la acción de “mostrar o imprimir”.
5.2 Recuperación
5.2.1 Consultas
5.2.1.1 Mostrar la relación en su totalidad
Nombre_tabla | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor | P._valor2 | P._valor3 | P._valor4 |
5.2.1.2 Mostrar cualquier campo
Ejemplo. Mostrar los valores del Campo2 y Campo4 (elimina los duplicados)
Nombre_tabla | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor2 | P._valor4 |
5.2.1.3 Mostrar campos incluyendo operadores relacionales
Ejemplo. Mostar los valores del Campo1 cuando el valor del Campo2 sea mayor a 16.
Nombre_tabla | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor | >16 |
5.2.1.4 Mostrar campos estableciendo la condición AND
Ejemplo. Mostar los valores del Campo1 cuando el valor del Campo2 sea mayor a 16 y el valor del Campo4 sea Cádiz.
Nombre_tabla | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor | >16 | Cádiz |
5.2.1.5 Mostrar campos estableciendo la condición OR
Ejemplo. Mostrar los valores del Campo1 cuando el valor de Campo2 sea mayor o igual a 16.
Nombre_tabla | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor1 | >16 | |||
P._valor2 | =16 |
5.2.2 Mostrar consultas de varias relaciones mediante enlaces
Ejemplo. Mostrar los valores del Campo1 del Nombre_tabla1 cuando los valores del Campo1 de la misma tabla es igual que el valor de Campo1 de Nombre_tabla2.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor1 | P._valor |
Nombre_tabla2 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor |
5.2.3 Cuadro de condiciones
5.2.3.1 Varias condiciones en varias relaciones
Ejemplo. Mostrar los valores del Campo1 de Nombre_tabla1 cuando los valores del Campo1 de la misma tabla es igual que el valor de Campo1 de Nombre_tabla2 y que el Campo3 de la segunda tabla sea Cádiz.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor1 | P._valor |
Nombre_tabla2 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor | ||||
Cádiz |
5.2.3.2 Operadores lógicos y relacionales
– Relacionales: =, <, ><, <=,>=, ¬.
– Lógicos: and (&), or (|)
5.2.4 Ordenación
Siempre las ordenaciones se pueden realizar tanto en orden ascendente como descendente, aplicando el orden a uno o varios campos.
– Ascendente: se indica P.A.O.
– Descendente: se indica P.D.O.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor1 | P.A.O |
5.2.5 Agregación
Al eliminar los duplicados por defecto, deben ir acompañadas de “ALL”. Las funciones de agregación son:
Función Acción
MAX Devuelve el valor máximo
MIN Devuelve el valor mínimo
AVG Devuelve el promedio de las tuplas seleccionadas
SUM Devuelve la suma de las tuplas seleccionadas
CNT Devuelve el número total de tuplas que cumplan una condición.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
P._valor1 | P.AVG.ALL.-valor |
5.2.6 Agrupamiento
Al igual que en SQL, se puede actuar sobre grupos de tuplas con el operador G, que realiza la misma función que “group by”.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
P.G | P.AVG.All.-valor |
5.3 Supresión o bajas
Podremos suprimir tuplas completas o determinadas columnas (donde los valores serán sustituidos por valores nulos)
Operador utilizado: D.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
D. | valor |
5.4 Inserción
Podemos insertar una o un conjunto de tuplas. Para la selección de varias tuplas, se utiliza una consulta.
Operador utilizado: I.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
I | Valor_1 | Valor_2 |
5.5 Modificación o actuación
Permite sustituir un valor por otro nuevo o realizar cambios basándonos en el valor existente. Para la selección de varias tuplas, se utiliza una consulta.
Operador utilizado: U.
Nombre_tabla1 | Campo1 | Campo2 | Campo3 | Campo4 |
U. | Criterio_de_selección | Nuevo_valor | ||
6. QUEL
6.1 Características
Es un lenguaje creado para el cálculo relacional de tuplas y empleado en el SBD Ingres.
No se pueden realizar subconsultas anidadas.
No dispone operaciones de intersección, unión ni diferencia.
Al contrario que el SQL, no elimina por defecto los duplicados, por lo que tendremos que incluir la cláusula unique con la cláusula retrieve.
6.2 Consultas
6.2.1 Estructura básica
Range of t₁ is r₁
.
.
.
Range of tₑ is rₑ
Retrieve [unique] (var1, var2,…)
Where P
Donde
t: variable de tupla
r: relación
var: formado por t.a
a: atributo
P: predicado
6.2.2 Consulta sencilla
Una consulta sencilla sería, por ejemplo:
Range of t is clientes
Retrieve t.nombre
Where t.ciudad= “Sevilla”
Obtendríamos todos los nombres de los clientes que viven en “Sevilla”.
6.2.3 Condiciones AND, OR
Los operadores lógicos utilizados en la cláusula where son:
Operador Acción
and y
er o
not negación
6.2.4 Consulta sobre varias relaciones
Se indicarán todas las relaciones participantes, utilizando una cláusula range para cada una de ellas.
Ejemplo:
Range of t is profesores
Range of u IS cursos
Retrieve (u.nombre_profesor, t.telefono)
Where u.nombre_curso= “Linux” AND t.nombre_profesor= u.nombre_profesor
La relación profesores recoge la información de todos los profesores del centro educativo. La relación cursos contiene los cursos relacionados por los profesores. Deseamos obtener el nombre y teléfono de los profesores que han realizado el curso de “Linux”.
6.2.5 Funciones de agregación o de grupo
– Count Realiza el cómputo incluyendo duplicados
– Sum
– Avg
– Max
– Countu Realiza el cómputo eliminando duplicados
– Sumu
– Avgu
– Any
6.2.6 Variables de tuplas
Según la consulta que queramos realizar, puede ser necesario el uso de más de una variable para una misma relación.
6.3 Eliminación (delete)
Se pueden eliminar todas las tuplas o las que cumplan una condición determinada:
Range of t is r
Delete t
Where P
6.4 Inserción (append)
Permite insertar una o un grupo de tuplas:
Range of t is r₁
Append to r₂ (atributo=valor…)
[where P]
6.5 Actualización o modificación (replace)
Cambia o sustituye los valores contenidos en las tuplas.
Range of t is r₁
Replace t (expresión)
[where P]
[replace…
Where P…]
7. OPTIMIZACIÓN DE CONSULTAS
7.1 Introducción
Aplicando el álgebra relacional, debe encontrar la manera más corta de devolver una consulta. Esta optimización sólo es aplicable en los SBDR. Consta de:
– Transformar la consulta a su representación interna. Consiste en el análisis sintáctico de la consulta para convertir al álgebra relacional.
– Proceso de optimización: Debido a que las consultas se pueden realizar de formas diferentes, se deberá establecer la más idónea para aumentar la rapidez sin que afecte negativamente al resto del sistema. Entre las acciones que se llevan a cabo tenemos:
o Seleccionar los índices
o Establecer la secuencia de procesamiento de las filas
7.2 Selección
Al realizar una consulta, existen una serie de pasos que posibilitan la optimización, de manera que disminuyan los resultados intermedios que se almacenan en memoria:
a) Ejecutar en primer lugar las selecciones.
b) Representar las expresiones complejas que utilizan operadores, desglosadas en otras más sencill.as
e: expresión del álgebra relacional
7.3 Proyecciones
Ejecutar las proyecciones lo antes posible
Cuando realizamos la selección, obtenemos una nueva relación formada por todos los atributos de las relaciones participantes. Sin embargo, puede que no todas las columnas nos interesen, por lo que realizaremos una segunda proyección donde se indicarán sólo los atributos involucrados en la continuación del proceso.
7.4 Operaciones equivalentes
Se pueden aplicar las propiedades asociativas y conmutativas a la hora de combinar las relaciones.
7.5 Estimación de costes
Existen una serie de parámetros a tener en cuenta a la hora de establecer una estimación de los costes. Para establecerlos, el sistema utiliza unas estadísticas que permiten calcular la relación resultante de una selección, llegando a establecer la de menor coste. Las estadísticas se basan en los siguientes apartados:
– Número de filas de la relación
– Longitud de la tupla expresada en bytes
– Número de dominios diferentes para un atributo.