M2_Modulo 2 - WordPress.com

Anuncio
25/02/2016
1
MÓDULO 2: SESIÓN 2
SISTEMAS DE BASES DE
DATOS RELACIONALES
Departamento de Informática
Informática Aplicada a la Gestión Pública. GAP
INDICE
2

Introducción a las bases de datos relacionales
 Conceptos
C

básicos
bá i
Planificación y diseño de BDR
 Modelos
de datos
 Conceptos del Modelo E-R

Explotación de BDR
 SQL
(DDL, DML y DCL). Saber hacerlo en forma gráfica
 Ejemplos
1
25/02/2016
Sistemas de Bases de Datos Relacionales
3
Introducción a los sistemas de bases de
datos relaciones
 Planificación y diseño de un sistema de
base de datos relacional
 Explotación de un sistema de base de
datos relacional

Introducción a las BBDDRR
4
Las bases de datos relacionales se basan
en el modelo de datos relacional
desarrollado por Codd a principio de los
años 70
 Características

 Basado
en
un
reducido
conjunto
de
conceptos
 Permite la manipulación de los datos
mediante operaciones algebraicas
2
25/02/2016
Conceptos básicos
5



Toda la información se almacena en tablas, también denominadas relaciones

Una tabla es la forma en que un usuario ve sus datos

Se divide horizontalmente en filas y verticalmente en columnas
A cada una de las filas de una tabla se le denomina tupla, y representa un registro
A cada columna se le denomina atributo y contiene información referente a un único
campo

La cardinalidad de una tabla es el número de filas que contiene

El grado de una tabla es el número de columnas que posee



Cada fila de una tabla debe ser identificada de forma única por un atributo o conjunto
de atributos denominado clave de la tabla
Al conjunto de posibles valores que puede tomar una columna se denomina dominio,
pudiendo ser : Dominio continuo o Dominio discreto
Para representar una tabla utilizaremos el siguiente esquema
NOMBRE_TABLA (A1, A2, .....Am, Am+1,.....An)
Ejemplo
6
Supongamos que queremos almacenar datos de los clientes de una empresa
CLIENTE (DNI,
(DNI NOMBRE,
NOMBRE APELLIDOS
APELLIDOS, DIREC,
DIREC LOC,
LOC PROV,
PROV E_CIVIL)
E CIVIL)
DNI
NOMBRE
APELLIDOS
DIREC
LOC
PROV
E_CIVIL
25005696
Alberto
Díaz Olid
Álamos, 7
Jaén
Jaén
Casado
27102234
María
Gómez Abad Nogal, 5
Jaén
Jaén
Soltera
24566477
Salvador
Ros Bueno
Martos
Jaén
Divorciado





Grado:
Cardinalidad:
Clave:
Dominio Discreto:
Dominio Continuo:
Colón, 3
7
3
DNI
PROV, LOC, E_CIVIL
DNI, NOMBRE, APELLIDOS, DIREC
3
25/02/2016
Restricciones de las tablas
7





Todos los registros de una tabla son del mismo tipo.
Para almacenar registros
g
distintos se usan tablas
distintas
Cada campo se almacena en una columna de la tabla.
Cada columna se identifica mediante un nombre de
columna
No se permite la existencia de dos columnas (campos)
con el mismo nombre
En ninguna tabla existen registros duplicados
El orden de los registros en la tabla es indiferente. En
cada momento se pueden recuperar los registros en un
orden particular
Álgebra relacional
8



El álgebra relacional es un sistema cerrado de
operaciones definidas sobre relaciones (tanto los
operandos como los resultados son relaciones)
Permite construir fórmulas o expresiones
combinando unas operaciones con otras, de manera
que los resultados de unas sean operando de otras
El álgebra
g
relacional se compone
p
de un conjunto
j
de
operaciones definidas sobre tablas que usan
operadores relacionales, obteniendo a su vez otras
tablas
4
25/02/2016
Planificación y Diseño de una BDDR
9



A la hora de determinar una base de datos debemos
establecer un proceso partiendo del acotamiento de una
parcela del mundo exterior, aquél que nos interesa representar
en los datos. En este proceso se debe aprender, comprender y
conceptualizar dicho mundo exterior transformándolo en un
conjunto de ideas y definiciones que supongan una imagen fiel
del comportamiento del mundo real. A esta imagen del mundo
exterior la llamaremos Modelo Conceptual
Un vez definido el modelo conceptual, éste se ha de
transformar en una descripción de datos, atributos y relaciones
que denominaremos Esquema Conceptual de Datos
Por último, este esquema conceptual habrá que traducirlo a
estructuras almacenables en soportes físicos
Modelo de datos
10
5
25/02/2016
Modelo de datos
11


Grupo de herramientas conceptuales para describir los datos, sus
relaciones, su semántica y sus limitaciones de tal forma, que facilita la
interpretación de nuestro mundo real y su representación en forma de
datos, en nuestro mundo informático
Un modelo de datos contiene dos tipos de propiedades que se
obtienen a partir de las propiedades del mundo real

Propiedades Estáticas. Son invariables en el tiempo. Quedan especificadas en el
modelo de datos por las estructuras. La parte estática se define mediante el esquema
de la base de datos,, con el lenguaje
g j de definición de datos ((DDL).)

Propiedades Dinámicas. Son las propiedades que varían con el tiempo. En el modelo
de datos son las operaciones. La parte dinámica se define a través de un conjunto de
operaciones con el lenguaje de manipulación de datos (DML). Las operaciones sobre
un modelo de datos pueden ser de:

Selección. Localización de los datos deseados

Acción. Realización de una acción sobre los datos seleccionados. Dicha acción puede ser:
Recuperación (obtención de los datos seleccionados) y Actualización (modificación, inserción y
borrado)
Modelo Entidad – Relación (ER)
12




Es el más extendido de los modelos de datos para describir esquemas
conceptuales
E t bl
Establece
relaciones
l i
simultáneas
i ltá
entre
t varias
i entidades
tid d por medio
di de
d
herramientas gráficas permitiendo la representación de esquemas de fácil
lectura incluso para aquellos sistemas con relaciones complejas
El Modelo Entidad-Relación es una técnica especial de representación
gráfica que incorpora información relativa a los datos y la relación
existente entre ellos, para darnos una visión del mundo real
Las características del modelo E-R son





Reflejan tan sólo la existencia de los datos, no lo que se hace con ellos
Se incluyen todos los datos del sistema en estudio y,
y por tanto no es orientado a
aplicaciones particulares
Es independiente de las bases de datos y sistemas operativos concretos
No se tienen en cuenta restricciones de espacio, almacenamiento ni tiempo de
ejecución
Está abierto a la evolución del sistema
6
25/02/2016
Conceptos básicos
13

Entidad




objeto real o abstracto con características diferenciadoras capaces de
hacerse distinguir de otros objetos y del cual se almacena información
Una entidad toma como significado conceptos u objetos que juegan un
papel importante en el sistema u organización
Gráficamente las entidades se representan con su nombre encerrado
en un rectángulo
Atributos



una unidad básica e indivisible de información acerca de una entidad
que sirve para identificarla o describirla
Gráficamente los atributos se representan con su nombre encerrado
en una elipse o un rectángulo de bordes redondeados
Los atributos se unen a sus entidades mediante líneas
Ejemplos
14
PELICULA
COD
MATRICULA
TITULO
MARCA
DURACION
MODELO
PRECIO
COLOR
TIPO
AUTOMOVIL
CV
NSS
PAIS
KM
DNI
AÑO
SEGURO
NOMBRE
DNI
PROFESOR
DPTO
F_COMPRA
AREA
CATEGORIA
DESPACHO
7
25/02/2016
Claves de una entidad
15
Se denomina Superclave de una entidad a un conjunto de uno o más atributos que
permite identificar de forma única a cada ocurrencia de la entidad. Es decir, dados
los valores de los atributos que forman la superclave, es posible conocer el resto de
valores de los atributos de la entidad

Si de una superclave no se puede obtener ningún subconjunto que sea a su vez
superclave, se dice que dicha superclave es una Clave Candidata. Es decir, una clave
candidata será una superclave con un número mínimo de atributos

De todas las claves candidatas existentes en una entidad, el diseñador ha de
escoger una, que se denominará Clave Principal o Primaria. Normalmente, se
elegirá como clave primaria aquella que sea la más restrictiva entre las candidatas.
Gráficamente se representa subrayando
s bra ando los atributos
atrib tos que
q e forman parte de la clave
cla e
primaria

Al resto de las claves candidatas de una entidad que no han sido elegidas como
primarias se les llamará Claves Alternativas

Si un atributo o conjunto de atributos de una entidad es clave primaria de otra
entidad, a dicho conjunto de atributos se le denomina Clave Foránea o Clave Ajena
de la entidad

Ejemplos
16

Superclaves

{NSS}

{DNI}

{NOMBRE, DESPACHO}

{NOMBRE, DPTO}

{DNI, DPTO}

{NSS, DNI, AREA}

{NSS, DNI, CATEGORIA}

{NSS, DNI, DESPACHO}

{NSS DNI
{NSS,
DNI, NOMBRE
NOMBRE, DPTO}

{NSS, DNI, NOMBRE, AREA}

{NSS, DNI, NOMBRE, CATEGORIA}

{NSS, DNI, NOMBRE, DESPACHO}

{DNI, NOMBRE, DPTO, AREA}

{NSS, DNI, NOMBRE, DPTO, DESPACHO}

{NOMBRE, DESPACHO, AREA}


C. Candidatas

{NSS}

{DNI}

{NOMBRE, DESPACHO}
C. Principal


{NSS}
C. Alternativas

{DNI}

{NOMBRE, DESPACHO}
8
25/02/2016
Relaciones
17




Las entidades por sí solas no describen la realidad
de unn sistema de información
No basta con identificar objetos, hay además que
establecer las asociaciones existentes entre los
mismos a través de Relaciones
Relación significa la existencia de algo común entre
entidades
Las relaciones se representan mediante rombos y el
nombre de la relación en su interior
Grado de una relación
18

El Grado de una Relación representa la participación en la relación
de cada una de las entidades afectadas y existen 3 tipos posibles:




1:1 (una a una). A cada ocurrencia de una entidad le corresponde no más
de una ocurrencia de la otra y a la inversa
1:n (una a muchas). A cada ocurrencia de la primera entidad le pueden
corresponder varias ocurrencias de la segunda y a cada ocurrencia de la
segunda le corresponde no más de una ocurrencia de la primera
n:m (muchas a muchas). A cada ocurrencia de la primera entidad le
pueden corresponder varias ocurrencias de la segunda y viceversa
El grado de las relaciones se puede representar de dos formas
diferentes (a veces se utilizan ambos métodos en el mismo diagrama)


Indicando el grado en los segmentos que asocian las entidades de la
relación
Incluyendo en los segmentos que asocian las entidades una flecha para
indicar el grado 1, y dos flechas para mostrar el grado n o m
9
25/02/2016
Ejemplos
19
1
1
LOCALIDAD
TIENE
ALCALDE
1
M
PADRE
P-H
HIJO
1
M
SECCION
TRABAJA
N
EMPLEADO
M
AUTOR
ESCRIBE
LIBRO
Ejemplos
20
N
M
PROFESOR
IMPARTE
N
ASIGNATURA
N
P-D
D-P
1
1
1
DPTO
1
D-D
DIRECTOR
10
25/02/2016
Ejemplos
NSS
N_COLEG
DNI
DNI
NOMBRE
21
NOMBRE
ACTOR
N_ARTISTICO
ABOGADO
ESPECIALID
NSS
N_COLEG
N
F_NAC
N
AÑO_T
PAIS
COD
REPRES
AÑO_E
COD
PAPEL
FECHA
ACT-PEL
CONSULTA
CACHE
COD
HORA
F_CONTRAT
COD
OSCAR
TITULO
DNI
TIPO
M
NOMBRE
M
CLIENTE
DIRECCION
PELICULA
DURACION
PRECIO
LOCALIDAD
TIPO
PROVINCIA
PAIS
TLF
AÑO
Explotación de un SBDR
22




En un SGBD las operaciones sobre los datos se realizan a través de
consultas formuladas con un lenguaje específico declarativo
SQL (Structured Query Language – Lenguaje de Consulta
Estructurado) se considera el lenguaje estándar de base de datos
relacional
SQL es algo más que un lenguaje de consulta como su propio
nombre indica, puesto que no sólo ofrece funciones de recuperación,
sino también una diversidad de operaciones de actualización y
manipulación de información y estructura de los datos
La versión original de SQL fue desarrollada por IBM (San José
Research Laboratory) a mediados de los años setenta. A partir de
entonces, se han derivado numerosas versiones hasta que en 1986,
el American National Standards Institute (ANSI) publicó un SQL
estándar
11
25/02/2016
Lenguajes específicos en SQL
23
El Lenguaje de Definición de Datos (DDL - Data Definition Language)


Permite describir el esquema
q
de la base de datos mediante un conjunto
j
de
instrucciones

El DDL proporciona órdenes para definir, eliminar y modificar tablas, así como para
crear índices y vistas
El Lenguaje de Manipulación de Datos (DML - Data Management
Language)


Permite el acceso a los datos almacenados en una base de datos

El DML está basado en el álgebra relacional e incluye órdenes para insertar,
insertar suprimir,
suprimir
y modificar tuplas (filas) de la base de datos
El Lenguaje de Control de Datos (DCL - Data Control Language)


Permite establecer derechos de acceso a los usuarios, comprobaciones de integridad y
control de transacciones

Incluye órdenes para dar y quitar privilegios, así como para completar y abortar
transacciones
Características
24



Sencillez. Principalmente derivada de la sencillez conceptual
del modelo en el que se basa, el modelo relacional
Carácter estándar. Existe una especificación estándar de este
lenguaje, la ANSI SQL. No obstante, cada fabricante refleja
las peculiaridades propias de su SGBD modificando su SQL
Lenguaje declarativo. SQL es un lenguaje declarativo.
Cuando realizamos una consulta, describimos cuál es el
conjunto de datos que queremos obtener,
obtener sin tener que
especificar cuál es la estrategia de recuperación de esos
datos. Especificamos QUÉ queremos, sin decir CÓMO
conseguirlo. Los lenguajes en los que es necesario decir cómo
obtener los datos, se denominan lenguajes imperativos
12
25/02/2016
Notación
25
El lenguaje SQL consta de una serie de sentencias cada una de las cuales requiere
una acción específica por parte del SGBD (por ejemplo la creación de una tabla, la
inserción de datos en una tabla...)
Todas las órdenes en SQL comienzan con un verbo que indica la operación a realizar
(CREATE, ALTER, UPDATE...) seguido de una o más cláusulas que especifican los datos
sobre los que actuar o proporcionan más detalles de la operación que hay que llevar
a cabo (WHERE, FROM, SET...)
Algunas cláusulas son opcionales y otras obligatorias pero todas deben comenzar con
una palabra clave. Las palabras clave no pueden ser utilizadas para designar
objetos de la base de datos, tales como nombres de tabla o de columna
La normativa ANSI especifica las palabras claves que se pueden utilizar en las
órdenes SQL. Sin embargo, la mayoría de productos comerciales SQL incluyen,
además
d á del
d l conjunto
j t de
d palabras
l b
clave
l
estándar,
tá d
extensiones
t i
significativas
i ifi ti
que
permiten la construcción de sentencias más complejas
A la hora de expresar las distintas construcciones de SQL seguiremos la siguiente
notación:








Las palabras clave aparecerán en este texto en mayúsculas
Los corchetes indican algo opcional
Las llaves encierran alternativas de las que se debe elegir una
Tipos de datos
26

Numéricos


SMALLINTEGER e INTEGER (o SMALLINT e INT).
INT)
Antonio1
DECIMAL(a,b) o NUMERIC(a,b).




CHAR(n)
Fechas


FLOAT(a,b), REAL y DOUBLE_PRECISION.
Alfanuméricos


a = longitud total
b = dígitos a la derecha del punto decimal
El nombre de tipo más usual es DATE
Lógicos

Los nombres de tipos más comunes son BOOLEAN y LOGICAL.
13
Diapositiva 26
Antonio1 A simple vista diferentes definiciones pueden servir para el mismo tipo dipo de
dato: NUMERIC y DECIMAL
Antonio Sánchez; 04/03/2012
25/02/2016
Constantes y Expresiones
27


Se pueden utilizar constantes numéricas, de cadena,
de fecha
Expresiones
 Aritméticas
 De
cadenas
 Con fechas
 Boleanas

Valores Nulos (NULL)
Ejemplos de operaciones
28
Antonio2
INSERT INTO PROFESOR
VALUES (348, NULL, ‘Asociado’, ‘602’, {15-9-2010})
INSERT INTO PROFESOR (C
(C_PROF,
PROF NOMBRE
NOMBRE, FF_CONTR)
CONTR)
VALUES (348, {1-9-2010}, ‘Carlos López Calvo’)
E
Erróneas
INSERT INTO PROFESOR
VALUES (348, ‘Carmen Mª Valdivieso Guevara’, NULL, ‘652’,NULL)
C_PROF
NOMBRE
CATEGORI DPTO F_CONTR
A
344
Ana Osorio Bueno
Asociado
653 20-9-2010
345
Alberto Gutiérrez Paz
NULL
NULL
23-9-2010
346
María Tapia Mora
Ayudante
618
2-2-2011
347
Blas González Rus
NULL
618
15-2-2011
348
Carmen Mª Valdivieso Guev
NULL
652
NULL
14
Diapositiva 28
Antonio2 Intenta introducir un valor nulo en el campo NOMBRE que tiene la restricción que
no admite valores nulos.
Antonio Sánchez; 04/03/2012
25/02/2016
Ejemplos de posibles consultas
29
PERSONAL(C_EMP, NOMBRE, PUESTO, SALARIO,
DPTO FF_NAC)
DPTO,
NAC)
 Aumentar el salario en un 5%
UPDATE PERSONAL
SET
SALARIO=SALARIO*1.05

Ascender
A
d a Director
Di t all empleado
l d Juan
J
Sánchez
Sá h
Molina
UPDATE PERSONAL
SET
PUESTO=’Director’
WHERE
NOMBRE=’Juan Sánchez Molina’
Condiciones (cláusula WHERE)
30

Condiciones de comparación

=, <>, <=, >=, >, <




WHERE SALARIO >= 1000
WHERE CATEGORIA = 'Ayudante'
WHERE F_CONTR < {1-10-2010}
Condiciones de correspondencia con patrón ([NOT] LIKE)


Comprueba si el valor de un columna de tipo cadena de caracteres se corresponde a un
patrón especificado
Permite comparar cadenas alfanuméricas haciendo uso de símbolos comodín


_ Sustituye a un único carácter
% Sustituye a varios caracteres



Condiciones de valor nulo (IS [NOT] NULL)

Comprueba si una columna tiene valores desconocidos o nulos


WHERE CIUDAD LIKE 'Villa%'
WHERE DPTO LIKE '61_‘
WHERE CATEGORIA IS NULL
Condición de rango (BETWEEN x AND y)

Selecciona valores dentro del rango x - y

WHERE SALARIO BETWEEN 3000 AND 6000
(es equivalente a WHERE (SALARIO >= 3000) AND (SALARIO<= 6000)
15
25/02/2016
Condiciones de pertenencia a conjunto
31

IN lista_valores: Comprueba si un valor se corresponde con un elemento de un
conjunto de valores


op ALL lista_valores: Selecciona valores que cumplen la operación op con todos los
elementos de la lista de valores. op puede ser <, >, <=, >=, <>


WHERE CIUDAD IN (('Almería'
Almería , 'Granada'
Granada , 'Jaén‘)
Jaén )
es equivalente a
WHERE (CIUDAD = 'Almería') OR (CIUDAD = 'Granada') OR (CIUDAD = 'Jaén')
WHERE CIUDAD <> ALL ('Almería', 'Granada', 'Jaén‘)
es equivalente a
WHERE NOT ((CIUDAD = 'Almería') OR (CIUDAD = 'Granada') OR (CIUDAD = 'Jaén'))
o es equivalente a
WHERE (CIUDAD <> 'Almería') AND (CIUDAD <> 'Granada') AND (CIUDAD <> 'Jaén'))
op ANY lista_valores: Selecciona valores que cumplen la operación op con algún
elemento de la lista de valores

WHERE CIUDAD = ANY ( 'Almería', 'Granada', 'Jaén‘)
es equivalente a
WHERE (CIUDAD = 'Almería') OR (CIUDAD = 'Granada') OR (CIUDAD = 'Jaén'))
Condiciones complejas
32

Cada una de esta operaciones de comparación pueden ser
combinadas haciendo uso de los operadores booleanos

OR

AND

NOT




WHERE (NOMBRE LIKE 'Antonio%') OR (C_EMP BETWEEN 30 AND 60)
WHERE (SALARIO > 100000 ) AND (PUESTO IS NULL)
WHERE NOT (C_EMP = 10) OR (C_EMP = 12)
Se pueden generar condiciones tan complejas como sea necesario
pero hay
ha que
q e tener mucho
m cho cuidado
c idado con el uso
so de paréntesis


WHERE NOT ((C_EMP = 10) OR (C_EMP = 12)) AND ((NOMBRE LIKE 'Antonio%') OR (C_EMP BETWEEN 30
AND 60))

WHERE NOT (C_EMP = 10) OR (C_EMP = 12) AND (NOMBRE LIKE 'Antonio%') OR (C_EMP BETWEEN 30
AND 60)
OJO: Los resultados de ambas sentencias son distintos
16
25/02/2016
SELECT
33

Es la operación fundamental de SQL

La sentencia SELECT es la más potente y compleja de las sentencias de SQL



Selecciona un conjunto de registros de una o más tablas que cumplan una
condición (en caso de no poner condición, se seleccionan todas las filas de la
tabla)
Permite también crear un filtro seleccionando solamente algunos campos de la
tabla
Su sintaxis más usual es la siguiente, aunque esta orden es muy flexible y
admite muchas variaciones:
SELECT
{ * | ALL | DISTINCT | lista_columnas/expresiones}
FROM
lista_tablas
[WHERE
condición]
[ORDER BY
lista_columna
[GROUP BY
lista_columnas]
[HAVING
condición]
orden]
SELECT
34

CONSULTA DE TODAS LAS FILAS Y COLUMNAS DE
UNA TABLA


CONSULTA DE TODAS LAS FILAS Y ALGUNAS
COLUMNAS DE UNA TABLA


SELECT nombre_columnas FROM nombre_tabla
CONSULTA DE DETERMINADAS FILAS DE UNA
TABLA


SELECT * FROM tabla
SELECT * FROM tabla WHERE condición
CONSULTA ORDENADA

SELECT * FROM tabla ORDER BY nombre_columnas
17
25/02/2016
Ejemplos con Tabla PROFESOR
35
C_PROF
NOMBRE
CATEGORIA DPTO
F_CONTR
344
Ana Osorio Bueno
Asociado
653
20-9-2010
345
Alberto Gutiérrez Paz
NULL
NULL
23-9-2010
346
María Tapia Mora
Ayudante
618
2-2-2011
347
Blas González Rus
NULL
618
15-2-2011
348
Carmen Mª Valdivieso Guev
NULL
652
NULL
Ejemplos sentencia SELECT
36

SELECT * FROM PROFESOR

SELECT C_PROF, NOMBRE FROM PROFESOR

SELECT * FROM PROFESOR WHERE DPTO LIKE '61_‘

SELECT * FROM PROFESOR WHERE CATEGORIA IS NOT NULL

SELECT NOMBRE FROM PROFESOR
WHERE F_CONTR BETWEEN {1-1-2010} AND {31-12-2010}

SELECT * FROM PROFESOR
WHERE (C_PROF<347) AND (NOMBRE NOT LIKE ‘A%’)
18
25/02/2016
Resultados con Tabla PROFESOR
37
C_PROF
NOMBRE
CATEGORIA
DPTO
F_CONTR
344
Ana Osorio Bueno
Asociado
653
20-9-2010
345
Alberto Gutiérrez Paz
NULL
NULL
23-9-2010
346
María Tapia Mora
Ayudante
618
2-2-2011
347
Blas González Rus
NULL
618
15-2-2011
348
Carmen Mª Valdivieso Guev
NULL
652
NULL
SELECT C_PROF, NOMBRE FROM PROFESOR
C_PROF
NOMBRE
344
Ana Osorio Bueno
345
Alberto Gutiérrez Paz
346
María Tapia Mora
347
Blas González Rus
348
Carmen Mª Valdivieso Guev
SELECT * FROM PROFESOR WHERE DPTO LIKE '61_‘
C_PROF
NOMBRE
F_CONTR
346
CATEGORI DPT
A
O
María Tapia Mora Ayudante 618
347
Blas González Rus
15-2-2011
NULL
618
2-2-2011
Resultados con Tabla PROFESOR
38
C_PROF
NOMBRE
CATEGORIA
DPTO
F_CONTR
344
Ana Osorio Bueno
Asociado
653
20-9-2010
345
Alberto Gutiérrez Paz
NULL
NULL
23-9-2010
346
María Tapia Mora
Ayudante
618
2-2-2011
347
Blas González Rus
NULL
618
15-2-2011
348
Carmen Mª Valdivieso Guev
NULL
652
NULL
SELECT * FROM PROFESOR WHERE CATEGORIA IS NOT NULL
C_PROF
NOMBRE
344
Ana Osorio Bueno
346
María Tapia Mora
CATEGORI DPTO F_CONTR SELECT NOMBRE FROM PROFESOR
A
WHERE F_CONTR BETWEEN {1-1-2010}
Asociado 653 20-9-2010
AND {31-12-2010}
Ayudante 618
2-2-2011
NOMBRE
Ana Osorio Bueno
SELECT * FROM PROFESOR
Alberto Gutiérrez Paz
WHERE (C_PROF<347) AND (NOMBRE NOT LIKE
‘A%’)
C_PROF
346
NOMBRE
María Tapia Mora
CATEGORIA
Ayudante
DPTO
618
F_CONTR
2-2-2011
19
25/02/2016
Consulta usando operaciones
39


En las expresiones SELECT se pueden utilizar
e presiones tales como operaciones aritméticas o
expresiones
con cadenas de caracteres, pudiéndose utilizar
paréntesis en estas expresiones
Ejemplo con Tabla ARTÍCULOS
C_ART
C
ART
3
4
5
6
PRECIO
1000
500
2000
1000
IVA
12
7
12
12
COMISION
1.0
0.5
1.0
0.75
Ejemplos haciendo operaciones
40

SELECT * FROM ARTICULO ORDER BY PRECIO

SELECT * FROM ARTICULO ORDER BY PRECIO DESC

SELECT PRECIO, IVA, (PRECIO+PRECIO*IVA/100) FROM ARTICULOS

SELECT C_ART, PRECIO, PRECIO*COMISION/100 FROM ARTICULOS
WHERE (PRECIO*(1+IVA/100))>1000

SELECT IVA,
IVA C_ART
C ART FROM ARTICULO ORDER BY IVA DESC,
DESC C_ART
C ART ASC

SELECT * FROM ARTICULO ORDER BY DESC, DESC
20
25/02/2016
Resultados con Tabla ARTICULOS
41
C_ART
PRECIO
IVA
COMISION
3
1000
12
1.0
4
500
7
0.5
5
2000
12
1.0
6
1000
12
0.75
SELECT * FROM ARTICULO ORDER BY PRECIO
SELECT PRECIO, IVA,
C_ART
PRECIO
IVA
COMISION
5
2000
12
1.0
3
1000
12
1.0
6
1000
12
0.75
4
500
7
0.5
(PRECIO+PRECIO*IVA/100)
FROM ARTICULOS
(PRECIO+PRECIO*IVA)/100
IVA)/100
PRECIO IVA (PRECIO+PRECIO
1000
1120
12
500
7
535
2000
12
2240
1000
12
1120
Resultados con Tabla ARTICULOS
42
C_ART
PRECIO
IVA
COMISION
3
1000
12
1.0
(PRECIO+PRECIO*IVA/100) FROM ARTICULOS
4
500
7
0.5
5
2000
12
1.0
PRECI IV PRECIO+PRECIO*IVA
/100
O
A
6
1000
12
0.75
SELECT PRECIO, IVA,
SELECT C_ART, PRECIO, PRECIO*COMISION/100 FROM ARTICULOS
WHERE (PRECIO*(1+IVA/100))>1000
C_ART
PRECIO
3
1000
PRECIO*COMIS
ION/100
10
5
2000
20
6
1000
7,5
1000 12
1120
7
535
2000 12
2240
1000 12
1120
500
SELECT IVA, C_ART FROM
ARTICULO ORDER BY IVA DESC,
C ART ASC
C_ART
IVA
C_ART
12
3
12
5
12
6
7
4
21
25/02/2016
Consultas con funciones agregadas
43

Las funciones agregadas son funciones que devuelven información resumen
sobre grupos de filas. Esta funciones agregadas son las siguientes:
 COUNT: Devuelve el número de filas que cumplen la condición. COUNT(*)
incluye los valores nulos en la cuenta. COUNT(DISTINCT columna) devuelve
el numero de valores distintos, no incluyendo nulos
 COUNT { (*) | [DISTINCT] columna}
 SUM (columna/expresión): Devuelve la suma de los valores. La columna o
expresión debe ser numérica
 AVG (columna/expresión): Devuelve la media de los valores.
valores La columna o
expresión debe ser numérica
 MAX(columna/expresión): Devuelve el valor máximo. La columna o
expresión debe ser numérica
 MIN(columna/expresión): Devuelve el valor mínimo. La columna o
expresión debe ser numérica
Ejemplos con funciones agregadas
44

SELECT COUNT(*) FROM ARTICULO

SELECT COUNT(DISTINCT IVA) FROM ARTICULO

SELECT COUNT(DISTINCT PRECIO) FROM ARTICULO WHERE IVA=12

SELECT SUM(PRECIO) FROM ARTICULO WHERE COMISION<1.0

SELECT SUM(PRECIO*COMISION/100)
(
/
) FROM ARTICULO

SELECT AVG(PRECIO) FROM ARTICULO

SELECT MAX(PRECIO) FROM ARTICULO

SELECT MIN(PRECIO) FROM ARTICULO
22
25/02/2016
Resultados con la tabla ARTICULOS
45

C_ART
PRECIO
IVA
3
1000
12
1.0
4
500
7
05
0.5
5
2000
12
1.0
6
1000
12
0.75
SELECT COUNT(*) FROM ARTICULO


CIO*COMISION/100)
/
)
Devolvería 1500
SELECT SUM(PRECIO*COMISION/100) FROM ARTICULO

FROM ARTICULOS
Devolvería 2
SELECT SUM(PRECIO) FROM ARTICULO WHERE COMISION<1.0


PRECIO,IVA,COMISION,(PRE
Devolvería 2
SELECT COUNT(DISTINCT PRECIO) FROM ARTICULO WHERE IVA=12


SELECT C_ART,
Devolvería 4
SELECT COUNT(DISTINCT IVA) FROM ARTICULO


COMISION
C_AR PRECIO
T
3
1000
4
500
5
2000
6
1000
IVA
12
7
12
12
COMISIO PRECIO*COMI
N
SION/100
1
10
0,5
2,5
1
20
0,75
7,5
Devolvería 40
Resultados con la tabla ARTICULOS
46

C_ART
PRECIO
IVA
COMISION
3
1000
12
1.0
4
500
7
0.5
5
2000
12
1.0
6
1000
12
0.75
SELECT AVG(PRECIO) FROM ARTICULO


SELECT MAX(PRECIO) FROM ARTICULO


Devolvería 1125
Devolvería 2000
SELECT MIN(PRECIO) FROM ARTICULO

Devolvería 500
23
25/02/2016
Consulta de información agrupada
47


SQL permite obtener una tabla agrupada que
contiene una fila por cada grupo.
grupo Esta fila contendrá
información resumen sobre el grupo. Para obtener
esta información agrupada se hace uso de la
cláusula GROUP BY
Ejemplos con Tabla PEDIDOS
C_ART
C
ART
3
6
3
4
5
3
F PED
F_PED
1-3-2010
1-3-2010
15-8-2010
27-2-2010
11-12-2010
27-2-2010
CANT
12
8
10
2
10
5
F SUM
F_SUM
2-3-2010
3-3-2010
3-9-2010
2-3-2010
20-12-2010
2-3-2010
Ejemplos de información agrupada
48


C_ART
3
6
3
4
5
F_PED
1-3-2010
1-3-2010
15 8 2010
15-8-2010
27-2-2010
11-12-2010
CANT
12
8
10
2
10
3
27-2-2010
5
SELECT C_ART, SUM(CANT) FROM PEDIDO
GROUP BY C_ART
ORDER BY C_ART
SELECT C_ART, SUM(CANT) FROM PEDIDO
GROUP BY C_ART
HAVING SUM(CANT)<10
F_SUM
2-3-2010
3-3-2010
3 9 2010
3-9-2010
2-3-2010
20-12-2010
2-3-2010
C_ART
3
4
5
6
C_ART
6
4
CANT
27
2
10
8
CANT
8
2
24
25/02/2016
Consulta usando varias tablas
49
Se pueden realizar consultas de más de una
tabla
bl de
d la
l base
b
d datos,
de
d
especificando
ifi d las
l
relaciones entre las distintas tablas en la
cláusula WHERE y las tablas que intervienen
en la cláusula FROM
 Este tipo
p de consultas son muyy comunes y
aportan una gran flexibilidad a la hora de
acceder a la información

Consulta usando varias tablas
50


Disponemos de la tabla ARTICULO y de la tabla PEDIDO
Se desea comprobar los códigos y el precio de los artículos
pedidos en el mes de marzo de 2010




Para consultar el precio debemos incluir en la cláusula FROM la tabla
ARTICULO puesto que es la que contiene este campo
Además, se necesita también la tabla PEDIDO para especificar la
condición (F_PED BETWEEN {1-3-2010} AND {31-3-2010})
Pero, la consulta únicamente debe incluir los artículos cuyo código de
artículo coincide en ambas tablas
La consulta correcta sería la siguiente:

SELECT ARTICULO.C_ART, ARTICULO.PRECIO, PEDIDO.C_ART, PEDIDO.F_PED
FROM
ARTICULO, PEDIDO
WHERE
PEDIDO.F_PED BETWEEN {1-3-2010} AND {31-3-2010}
AND ARTICULO.C_ART=PEDIDO.C_ART
25
25/02/2016
Alias de tablas
51
Cuando se utilizan varias tablas en una consulta o cuando los nombres de
tablas son muy largos se pueden utilizar alias de tablas especificando el
nombre del alias después del nombre real de la tabla en la cláusula FROM

Cuando una cláusula FROM contiene un alias, éste debe ser utilizado para
identificar la tabla en las referencias de columnas cualificadas


SELECT ARTICULO.C_ART, ARTICULO.PRECIO, PEDIDO.C_ART, PEDIDO.F_PED
FROM
WHERE
ARTICULO, PEDIDO
PEDIDO.F_PED BETWEEN {1-3-2010} AND {31-3-2010}
AND ARTICULO.C_ART=PEDIDO.C_ART
Si utilizamos alias para cada una de las tablas (A para la tabla ARTICULO y P
para la tabla PEDIDO)


SELECT A.C_ART, A.PRECIO, P.C_ART, P.F_PED
FROM
ARTICULO A, PEDIDO P
WHERE
P.F_PED BETWEEN {1-3-2010} AND {31-3-2010}
AND A.C_ART=P.C_ART
Subconsultas
52



Una subconsulta es una consulta dentro de otra
Es decir,
decir un SELECT anidado en la cláusula WHERE de otro
SELECT
Esta anidación permite realizar consultas complejas, que no
serían posible, o poco eficiente haciendo consultas simples

SELECT columnas FROM tabla
WHERE columna
l
op (SELECT columna
l
FROM tabla
t bl WHERE condición)
di ió )


El operador (op) a utilizar dependerá del número de valores
que se van a obtener en la subconsulta
Las subconsultas pueden aparecer en cualquier orden en la que
se pueda utilizar la cláusula WHERE (SELECT, UPDATE, DELETE)
26
25/02/2016
Ejemplos con la Tabla PROFESOR
53

Consultar los nombres de los profesores que
están
á adscritos
d i all mismo
i
d
departamento
que ell
profesor 347


SELECT NOMBRE FROM PROFESOR
WHERE DPTO =(SELECT DPTO FROM PROFESOR WHERE C_PROF=
347)
Consultar el precio de los artículo pedidos el
mismo día que se pidió el artículo 3

SELECT PRECIO FROM ARTICULO WHERE C_ART IN
(SELECT DISTINCT(C_ART) FROM PEDIDO WHERE F_PED IN
(SELECT F_PED FROM PEDIDO WHERE C_ART=3)
)
Normas generales para subconsultas
54





Las subconsultas deben generar una única columna
La subconsulta debe estar limitada por paréntesis
Las subconsultas que generen una única fila se pueden
usar tanto con operadores simples como con
operadores multivaluados (que utilizan más de un valor,
por ejemplo IN)
Las subconsultas que produzcan más de una fila se
pueden
d usar sólo
l con operadores
d
multivaluados
l l d
El operador BETWEEN no se puede utilizar con una
subconsulta
27
25/02/2016
Lenguaje de Control de Datos (DCL)
55



Permite controlar el acceso a la base de datos y su
utilización
Normalmente es el Administrador de la Base de
Datos el encargado de utilizar las órdenes DCL
Las órdenes principales son:
 COMMIT
(confirmar las operaciones de manera
definitiva))
 ROLLBACK (deshacer las operaciones)
 GRANT (asignar derechos)
 REVOKE (eliminar derechos)
Resumen
56

Introducción a las bases de datos relacionales
 Conceptos
C

básicos
bá i
Planificación y diseño de BDR
 Modelos
de datos
 Conceptos del Modelo E-R

Explotación de BDR
 SQL
(DDL, DML y DCL)
 Ejemplos
28
Descargar