Tema 36 – La manipulación de datos.

Tema 36 – La manipulación de datos.

1. INTRODUCCIÓN.. 2

2. MODELO DE DATOS. 2

3. MANIPULACIÓN DE DATOS. 3

3.1 Operaciones. 3

3.2 Lenguajes. 3

4. SQL. 3

4.1 Consultas. 4

4.2 Inserción o altas. 8

4.3 Modificación o actualización. 9

4.4 Eliminación o bajas. 9

5. QBE. 9

5.1 Características. 9

5.2 Recuperación. 9

5.3 Supresión o bajas. 11

5.4 Inserción. 11

5.5 Modificación o actuación. 12

6. QUEL. 12

6.1 Características. 12

6.2 Consultas. 12

6.3 Eliminación (delete). 13

6.4 Inserción (append). 14

6.5 Actualización o modificación (replace). 14

7. OPTIMIZACIÓN DE CONSULTAS. 14

7.1 Introducción. 14

7.2 Selección. 14

7.3 Proyecciones. 14

7.4 Operaciones equivalentes. 15

7.5 Estimación de costes. 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

image

image

image

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)

image

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

image

image

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

image

4.1.4.2 Operadores aritméticos

image

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

image

image

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.