Sie sind auf Seite 1von 41

INFORMTICA APLICADA

UNIDAD DIDCTICA 3

Tema 8 - Bases de Datos Relacionales
Me lo explicaron y lo olvid, lo v y lo aprend, lo hice y lo entend.
- Confucio -
2
Necesidad de Almacenamiento
Cada organizacin tiene necesidades de informacin
Una empresa necesita para guardar informacin sobre los
empleados, departamentos, y los salarios
Estas piezas de informacin son llamadas de datos
Estos datos se almacenan en distintos medios de
comunicacin y en diferentes formatos (ficheros en disco
duro, hojas de clculo, copias en papel en archivadores)
Una base de datos es una coleccin organizada de
informacin
3
Bases de datos y
Sistemas de gestin de bases de datos
Base de Datos (BD):
Coleccin estructurada de datos segn un cierto esquema
Caractersticas:
Integridad, seguridad,
persistencia
Independencia de datos
Los programas que acceden a la
base de datos no dependen de la
representacin fsica de los datos
Los datos no dependen de los
programas
Arquitectura en Niveles
Nivel Lgico o Esquema Lgico
Estructuras conformes a un modelo de
datos
Nivel Externo o Esquema externo
Vistas de usuario derivadas del esquema
lgico
Nivel Fsico o Esquema Fsico
Implementacin del nivel lgico
4
Bases de datos y
Sistemas de gestin de bases de datos
Sistema de Gestin de Base de Datos (SGBD):
Herramienta software para la creacin y manipulacin de bases de datos.

Aplicacin 1 Aplicacin i
SGBD
SO
Esq. externo
Esq. Lgico
(especificacin)
Esq. Fsico
(implementacin)
Se basan en:
Modelos de Datos:
Conjunto de conceptos y reglas que permiten estructurar
los datos de forma que quedan representadas todas sus
propiedades tanto estticas como dinmicas.
Modelo relacional Tuplas
y relaciones.
Modelo jerrquico.
Modelo de Red.
Modelo OO.
Proporcionan
Lenguajes de definicin de
esquemas.
Lenguajes de manipulacin de
datos.
5
Gestor de Bases de Datos
Tablas de
Usuario
Diccionario
de Datos
Servidor
6
Definicin de BD Relacional
Coleccin de Relaciones o tablas bi-dimensionales
Database
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Nombre Tabla: DEPT
EMPNO ENAME JOB DEPTNO
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
Nombre Tabla: EMP
7
Integridad referencial
Garantiza que una entidad (fila o registro) siempre se
relaciona con otras entidades vlidas, es decir, que
existen en la base de datos
Implica que en todo momento dichos datos sean
correctos, sin repeticiones innecesarias, datos perdidos y
relaciones mal resueltas
Todas las bases de datos relacionales gozan de esta
propiedad gracias a que el software gestor de base de
datos vela por su cumplimiento
8
Modelo de datos
Modelo que
tiene el cliente
en mente




Modelo de Entidades
del cliente
Modelo en Tablas
del Modelo de
Entidades
Tablas en disco




Server
Conjunto de conceptos y reglas que permiten
estructurar los datos de forma que quedan
representadas todas sus propiedades tanto
estticas como dinmicas.
9
Modelo de datos entidad-relacin
Modelo para la definicin del esquema conceptual de una BD que proporciona un lenguaje de
definicin de tipo grfico aunque no (originalmente) un lenguaje de manipulacin
Grado de una relacin: nmero de
entidades participan en la relacin.
funcin 1
Entidad
Relacin
Relacin binaria reflexiva
funcin 2
Entidad1 Entidad2
Relacin binaria
Relacin
Entidad1 Entidad2
Relacin ternaria
Relacin
Entidad3
Entidad Relacin Atributo Atributo
Clasificacin de atributos
Simples o escalares
Compuestos o
estructurados
n
Segn su estructura
Monoevaluado: un valor
como mximo
Multievaluado: n valores
como mximo
Segn valores que
puede tomar en
cada instancia de la
entidad o relacin
Bsico: representa informacin
que debe almacenarse.
Derivado: representa informacin
que puede obtenerse a partir de
otra informacin
Segn el tipo de
informacin
Atributo
Atributo
Comp.
Atributo1
Atributo2
Atributo
10
Modelo de datos entidad-relacin
Restricciones sobre atributos
Restriccin de valor no nulo.
El atributo debe tener un valor no nulo.
Entidad
Atributo
Entidad
Atributo
Entidad
Atributo
Restriccin de unicidad.
Las distintas ocurrencias de una entidad deben
tomar valores distintos para el atributo.
Restriccin de identificacin.
Ana las restricciones de valor no nulo y unicidad.
Un atributo con estas restricciones sirve para
identificar la entidad.
Restricciones sobre relaciones
A B
1
R
1
A B
1
R
n
A B
1
R
n
Relacin binaria 1:1 sin restricciones de existencia
Relacin binaria 1:n sin restricciones de existencia.
Un ejemplar de la Entidad A se relaciona con
ninguno o hasta n de B. Una de B se relaciona con
ninguna o una de A.
Relacin binaria 1:n con restriccin de existencia de B.
Todo ejemplar de la Entidad B est relacionado con al
menos un A ( y segn el ejemplo como mximo 1 A).
Relacin binaria 1:n con restriccin de dependencia
de identificacin. B (entidad dbil) depende de la
relacin R para su identificacin.
A
B
1
R
n
11
Modelo de datos entidad-relacin
Profesor Asignatura
Docencia
Asignado
Grupo
Relacin de Agregacin
La entidad agregada tiene el
nombre de la relacin sobre la
que se define y hereda los
atributos de las entidades
participantes y los de la
relacin.
12
Ejemplo: Base de datos docente
Profesor:
Cdigo, nombre, telfono, categora,
Departamento al que pertenece.
Asignaturas que imparte, indicando en cada una
de ellas el nmero total de grupos de prctica y
teora asignados.

Asignatura:
Cdigo, nombre, curso, semestre, crditos de
teora y prctica, grupos de teora y prctica.
Departamento al que est adscrita.
Profesores que la imparten, indicando para
cada uno de ellos el nmero total de grupos de
prctica y teora asignados.

Departamento:
Cdigo, nombre, director, telfono.
Profesores que pertenecen al mismo.
Asignaturas adscritas al mismo.
Restricciones :
Un profesor pertenece a un departamento y slo a uno.
Una asignatura est adscrita a un departamento y slo a
uno.
No puede haber dos departamentos con el mismo
cdigo.
No puede haber dos profesores con el mismo cdigo.
No puede haber dos asignaturas con el mismo cdigo.
El director del departamento debe ser un profesor.
Un profesor slo puede ser director de un
departamento.
Se debe conocer el nombre de los departamentos.
Se deben conocer el nombre, los crditos, los grupos y el
semestre de las asignaturas.
Se deben conocer los grupos asignados a un profesor en
una asignatura.
Los grupos de clase deben ser enteros positivos.
13
Modelo entidad-relacin
Departamento
cdigo
nombre
categora
telfono
Profesor Asignatura
1
Pertenece
n
nombre
cdigo telfono
director
Adscrita
1
n
Docencia
gr_pract gr_teo
n n
cdigo
nombre
teora
practica
Grupo
Asignado
cdigo
aula
n
n
Cdigo, nombre,
telfono, categora,
Departamento al
que pertenece.
Asignaturas que imparte, indicando
en cada una el nmero de grupos
de prctica y teora asignados.
Cdigo, nombre, director, telfono.
Profesores que pertenecen al mismo.
Asignaturas adscritas al mismo.
Cdigo, nombre, curso, semestre, grupos
de teora y prctica.
Departamento al que est adscrita
(exactamente 1).
Profesores que la imparten, indicando
para cada uno de ellos el nmero total de
grupos de prctica y teora asignados.
Falta asignacin
tipos de datos a atributos
15
Modelo relacional. Tipos de datos
Se distinguen los siguientes bsicos:
Numricos: con o sin signo, booleanos y varios tipos enteros con 6,
8, 16, 24, 32 y 63 bits. Float y double igual que en C (norma IEEE)
Fecha: date (yyyy-mm-dd), time (hh:mm:ss), datetime (yyyy-mm-dd
hh:mm:ss), timestamp (nmero de segundos transcurridos desde el
epoch ('1970-01-01 00:00:00' UTC) )
Cadenas de caracteres: char (campo de longitud fija, texto plano),
varchar (campo de longitud variable pero acotada, texto plano),
binary (campo de longitud fija, texto binario), varbinary (campo de
longitud variable pero acotada, texto binario)
Datos binarios: blob de 8, 16, 24 y 32 bits, de propsito general
16
Modelo de datos relacional.
Valor nulo, clave primaria y clave externa
Informacin faltante: Hiptesis de existencia de Valor Nulo.
Necesidad de Lgica Tri-valuada (true, false, indefinido) (T, F, ?)
Valor no nulo. Sobre un conjunto de atributos K de R no debe haber en R una tupla que tenga valor
nulo en algn atributo de K.
Conjunto de atributos de su esquema que son elegidos para identificar de forma unvoca a sus tuplas.
Propiedades Necesarias: Restriccin de Valor no nulo y Restriccin de unicidad.
Es aconsejable que sea Mnima: los atributos que la forman son necesarios
Unicidad sobre un conjunto de atributos K de R : No debe haber ninguna tupla en R que tengan el
mismo valor en todos los atributos de K.
CLAVE EXTERNA O AJENA (REFERENCIA LA RELACIN S EN LA RELACIN R)
CLAVE PRIMARIA
Atributos identificadores de S incluidos en el esquema de R.
Debe asegurarse que los valores que los atributos de la clave ajena toman en las tuplas de R
aparecen en alguna tupla de S.
Generalmente se utiliza la clave primaria de S como clave ajena en R
17
Transformacin ER a modelo relacional.
Entidades y Atributos
1. Transformar cada entidad en un tabla. El identificador de la
entidad ser la CP de la tabla. Si no existiera, se debe crear un
atributo
2. Puede ser necesario crear tablas adicionales para almacenar
los atributos multivaluados de un entidad. Estas tablas tendrn
CP = valor + CP_entidad
3. Los atributos compuestos se aplanan, quedando reducidos a
los valores finales
4. El resto de propiedades de los atributos (derivados, nulos, etc.)
se especifican tal cual aparecen en el ER
18
Ejemplo de Transformacin
ALUMNO (exp, nombre, apellido1, apellido2, fecha_nac)
TELEFONOS_ALUMNOS (exp, telefono)
Expediente Telefono
Fecha_nac
Nombre
Apellido1
Apellido2
Nombre
completo
Alumno
n
19
Transformacin ER a modelo relacional.
Relaciones
Toda relacin puede ser convertida en una tabla con los
atributos de la relacin y las CA de las entidades con que
se relaciona
Tres posibilidades a la hora de convertir relaciones:
1. Se crea una tabla para la relacin (evitable)
2. Si una de las entidades es poco relevante, se pueden incluir
todos sus atributos y los atributos de la relacin en la otra
entidad
3. Incluir la CP de una entidad en la tabla que representa a la otra
como una CA, ms los atributos de la relacin

20
Transformacin ER a modelo relacional.
Relaciones binarias 1-a-1
Empleado Ordenador
Asignado
1 1
1. EMPLEADO (Atr_Emp)
ORDENADOR (Atr_Ord)
ASIGNADO (CP_Emp, CP_Ord, Atr_Asig)
2.a EMPLEADO (Atr_Emp, Atr_Ord, Atr_Asig)
2.b ORDENADOR (Atr_Ord, Atr_Emp, Atr_Asig)
3.a EMPLEADO(Atr_Emp, CP_Ord, Atr_Asig)
ORDENADOR (Atr_Ord)
3.b EMPLEADO (Atr_Emp)
ORDENADOR (Atr_Ord, CP_Emp, Atr_Asig)
21
Transformacin ER a modelo relacional.
Relaciones binarias 1-a-1
1. PERSONA (Atr_Pers, CP_Otra_Pers, Atr_Casada)
2. PERSONA (Atr_Pers)
CASADA_CON (CP_Pers, CP_Otra_Pers, Atr_Casada)
Casada
con
1
1
Persona
22
Transformacin ER a modelo relacional.
Relaciones binarias 1-a-n
1. DEPARTAMENTO (Atr_Dep)
PROFESOR (Atr_Emp, CP_Dep, Atr_Pertenece)
2. DEPARTAMENTO (Atr_Dep)
PROFESOR (Atr_Emp)
PERTENECE (CP_Emp, CP_Dep, Atr_Pertenece)
Profesor
Pertenece
n 1
Departamento
23
Transformacin ER a modelo relacional.
Relaciones binarias n-a-m
ALUMNO (Atr_Alumno)
ASIGNATURA (Atr_Asignatura)
MATRICULADO (Atr_Matriculado, CP_Alu, CP_Asig)
Alumno Asignatura
n m
Matriculado
24
Base de datos docente
PROFESOR
Cdigo Nombre Categora Telfono Pertenece_Dpto
DEPARTAMENTO
Cdigo Nombre Director Telfono
ASIGNATURA
Cdigo Nombre Teora Prctica Adscrita_Dpto
INFORMTICA APLICADA


UNIDAD DIDCTICA 3

Tema 9 El Lenguaje SQL
Me lo explicaron y lo olvid, lo v y lo aprend, lo hice y lo entend.
- Confucio -
26
SQL. Conceptos fundamentales
Instruccin SQL
Manipulacin de datos: consultas y actualizaciones.
Definicin de datos.
Gestin de sesin.
Interactivamente.
Embebidas en un lenguaje de programacin.
Se pueden
ejecutar
Tabla Coleccin de filas Relacin (conjunto de tuplas)
Vista Tabla virtual (no almacenada fsicamente)
Conjunto nominado de dominios, tablas, vistas y privilegios.
Agrupamiento de esquemas.
Dependiente de la implementacin
Esquema
Catlogo
Cualquier operacin va acompaada de un IDENTIFICADOR
DE AUTORIZACIN.
Concepto de ROL: Agrupacin de privilegios.
Usuario y
privilegio
27
SQL. Conceptos fundamentales
Conexin
Asociacin entre un cliente SQL y un servidor de la BD.
Sesin
Contexto en el cual un usuario ejecuta una secuencia de instrucciones SQL
a travs de una conexin.
Transaccin
Unidad lgica de procesamiento formada por una secuencia de
instrucciones SQL.
Independientes de la
topologa del sistema
(ACID)
Atomicidad: asegura que la operacin se ha realizado completamente o
no se ha realizado. Evita que quede a medias.
Consistencia: asegura que slo se empieza aquello que se puede acabar.
Se ejecutan slo aquellas operaciones que no rompen las reglas y
directrices de integridad de la base de datos.
Aislamiento: asegura que una operacin no puede afectar a otras. Esto
asegura que la realizacin de dos transacciones sobre la misma
informacin sean independientes y no generen ningn tipo de error.
Durabilidad: asegura que una vez realizada la operacin, sta persistir y
no se podr deshacer aunque falle el sistema.
28
SQL. Lenguaje de definicin de datos
Ejemplo
Definicin de tablas
CREATE TABLE Proveedor (
dni INTEGER
PRIMARY KEY CHECK(dni > 0),
nombre VACHAR(40) NOT NULL,
direccin CHAR(25),
ciudad CHAR(30),
descuento NUMERIC(2,2))
Tres restricciones de integridad:
dni clave primaria
dni > 0
nombre no puede tener valor nulo.

CREATE TABLE nombre (elem
1
,, elem
n
)

elem ::= col | restriccion_tabla

col ::== nombre tipo [restriccion_columna]

Instrucciones relacionadas:
ALTER TABLE: modificacin de la definicin de la
tabla (poner, quitar y modificar elementos).
DROP TABLE: eliminacin de la tabla
29
Insercin de filas INSERT INTO tabla(col
1
, col
2
,, col
n
) VALUES (val
1
, val
2
,, val
n
)


Modificacin de valores
de columnas
UPDATE tabla SET col
1
= val
1
, ..., col
n
= val
n
[WHERE condicion]



Eliminacin de filas
INSER INTO Proveedor
(dni, nombre, direccin, ciudad)
VALUES (10000, Pepe Mas, C/Cuenca, 12,
VALENCIA)
Las columnas slo se incluyen si no se insertan valores en
todas, como es el caso (falta descuento). Las columnas
que no aparecen en INSERT se ponen a NULL.
UPDATE Proveedor
SET direccin = Juan Fdz
WHERE dni = 10000
Cambia la direccin del proveedor con dni 10000 a Juan
Fdz.
UPDATE Proveedor
SET descuento = descuento * 1,1
Incrementa el descuento de todos los proveedores un 10%
DELETE FROM Proveedor
WHERE ciudad = VALENCIA AND
descuento < 0,5
Borra aquellos proveedores de Valencia cuyo descuento sea
inferior al 50%.
DELETE FROM tabla [WHERE condicion]



SQL. Lenguaje de manipulacin de datos
30
SQL. Lenguaje de manipulacin de datos
Consultas de recuperacin de datos
SELECT [ALL | DISTINCT] {col
1
, col
2
, ..., col
n
| * }
FROM tabla
[WHERE condicion]
condicion utiliza operadores lgicos y de comparacin
col
i
puede obtenerse de una expresin expr
i
sobre la col
i


Ejemplos
SELECT DISTINTC ciudad
FROM Proveedor
Resultado: tabla con una columna (ciudad)
sin filas duplicadas

SELECT dni, nombre, descuento*100
FROM Proveedor
WHERE ciudad = VALENCIA OR
ciudad = CASTELLN
Resultado: tabla con las filas dni, nombre y
descuento (multiplicado por 100) con los
proveedores de VALENCIA y CASTELLN
SELECT *
FROM Proveedor
WHERE ciudad = VALENCIA
Resultado: tabla con todas las columnas y
filas de Proveedor donde la columna
ciudad es VALENCIA.

31
SQL. Funciones en consultas SELECT
Funcin Resultado
LOWER('SQL Course')
UPPER('SQL Course')
INITCAP('SQL Course')
sql course
SQL COURSE
Sql Course


SELECT empno, ename, deptno
FROM emp
WHERE LOWER(ename) = juan';
32
SQL. Funciones en consultas SELECT
CONCAT('Good', 'String')
SUBSTR('String',1,3)
LENGTH('String')
INSTR('String', 'r')
LPAD(sal,10,'*')
GoodString
Str
6
3
******5000
Funcin Resultado

SELECT CONCAT(CONCAT (nombre, ; Cargo: ), categora) PROF, telefono,
LENGHT(nombre) LONGITUD
FROM profesor
WHERE SUBSTR(categoria,1,2)=PT;
//categoras: PTU, PTE, PCOL, CU, PAYU

PROF telefono LONGITUD
Juan Lpez; Cargo: PTU 968326465 10
Luisa Prez; Cargo: PTEU 968325654 11
33
SQL. Funciones en consultas SELECT
meses entre dos fechas MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
ROUND
TRUNC
aadir meses a fechas
prximo da a una fecha
ltimo da de un mes
Fecha redondeada
Fecha truncada
Funcin Descripcin
34
Ejemplo: BD de almacn de compra-venta
Proveedor:
dni, nombre, direccin, ciudad, descuento.

Pieza:
Cdigo, descripcin, color y peso.
Por defecto el color de una pieza es
indeterminado.

Oferta:
Proveedor que oferta, cdigo de la pieza
ofertada y precio.

Cliente:
Dni, nombre, direccin y ciudad.

Pedido:
Nmero, fecha, cliente, proveedor, pieza,
precio.

Restricciones :
No puede registrarse un proveedor de nombre
desconocido.
No puede registrarse una pieza sin descripcin.
No puede haber piezas rojas de ms de 100 Kg de peso.
No puede registrarse un cliente de nombre desconocido.
Debe conocerse el cliente que hace un pedido.

Sea el siguiente esquema correspondiente a una base de datos de una empresa que contiene informacin sobre la
lista de precios de varios proveedores y sobre los pedidos que le hacen sus clientes.
35
Diagrama ER del almacn de compra-venta
nombre
Proveedor
dni
descripcion
codigo
nombre
dni
Cliente
precio
Oferta
nmero fecha
Pieza
Pedido
36
SQL. Lenguaje de definicin de datos
Definicin de relaciones:

tabla ::= CREATE TABLE nombre (elemento_tabla
1
,, elemento_tabla
n
)

elemento_tabla ::= columna | restriccin_tabla

columna ::= nombre tipo_datos [DEFAULT {NULL | valor}]
[restriccin_columna
1
,, restriccin_columna
n
]

restriccin_columna ::= [CONSTRAINT nombre]
{ NOT NULL | UNIQUE | PRIMARY KEY
| REFERENCES nombre_tabla [(nombre_columna)]
| [MATCH {FULL | PARTIAL | SIMPLE}]
| [ON DELETE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]
| [ON UPDATE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]
| CHECK(condicin)
}
CREATE TABLE proveedor (
dni INTEGER PRIMARY KEY,
nombre VARCHAR(40) NOT NULL,
direccin CHAR(25),
ciudad CHAR(30)
)


37
SQL. Lenguaje de definicin de datos
Definicin de relaciones (cont.):

restriccin_tabla ::= [CONSTRAINT nombre]
{ UNIQUE(nom_col
1
,, nom_col
n
)
| PRIMARY KEY(nom_col
1
,, nom_col
n
)
| FOREIGN KEY(nom_col
1
,, nom_col
n
)
REFERENCES nombre_tabla[(nom_col
1
,, nom_col
n
)]
| [MATCH {FULL | PARTIAL | SIMPLE}]
| [ON DELETE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]
| [ON UPDATE {CASCADE | SET NULL | SET DEFAULT | NO ACTION}]
| CHECK(condicin)
}
CREATE TABLE pieza (
cdigo INTEGER CONSTRAINT pieza_cp PRIMARY KEY,
desc VARCHAR(40) NOT NULL,
color CHAR(20) DEFAULT indeterminado,
peso FLOAT,

CONSTRAINT r1 CHECK(color <> rojo OR peso > 100)
)
38
SQL. Lenguaje de definicin de datos
CREATE TABLE oferta(
dni INTEGER CONSTRAINT oferta_prov_ca REFERENCES proveedor(dni),
cdigo CHAR(4) CONSTRAINT oferta_pieza_ca REFERENCES pieza,
precio FLOAT,

CONSTRAINT oferta_cp PRIMARY KEY (dni, cdigo)
)

CREATE TABLE cliente(
dni INTEGER CONSTRAINT cliente_cp PRIMARY KEY,
nombre VARCHAR(40) NOT NULL,
direccin CHAR(25),
ciudad CHAR(30)
)

CREATE TABLE pedido(
nmero INTEGER CONSTRAINT pedido_cp PRIMARY KEY,
fecha DATE,
cliente INTEGER NOT NULL CONSTRAINT ped_cli_ca REFERENCES cliente(dni),
proveedor INTEGER ,
pieza INTEGER,
precio FLOAT,

CONSTRAINT ped_oferta_ca FOREIGN KEY (proveedor, pieza)
REFERENCES oferta (dni, cdigo)
MATCH FULL
)
39
SQL. Lenguaje de definicin de datos
Definicin de vistas:

Vista: Relacin (virtual) derivada definida por una relacin de derivacin a partir de relaciones bsicas o derivadas
de la base de datos.

tiles para:
Definicin de la vista externa: las vistas son de slo lectura (mayor seguridad)
Limitar la cantidad de datos visibles a los usuarios (filtrando tuplas o columnas o ambos)
Preparacin de consultas complejas en varios pasos

Creacin de una vista en SQL:

CREATE VIEW nombre AS
SELECT
FROM
WHERE

Eliminacin de una vista en SQL:

DROP VIEW nombre

CREATE VIEW clientesCartagena AS
SELECT * FROM clientes
WHERE ciudad=Cartagena

SELECT * FROM clientesCartagena

CREATE VIEW clientesCartagena AS
SELECT nombre, direccin, ciudad
FROM clientes
WHERE ciudad=Cartagena


FILTRO TUPLAS


FILTRO TUPLAS +
COLUMNAS


40
SQL. Predicados y consultas
Comparacin
Obtener el cdigo y la descripcin de las piezas de color verde cuyo peso sea de 10 Kg
SELECT cdigo, desc FROM pieza
WHERE color = VERDE AND peso = 10
SELECT cdigo, desc FROM pieza
WHERE (color, peso ) =(VERDE, 10 )

Predicado IN Pertenencia a un conjunto de valores. expr [NOT] IN (expr
1
, , expr
n
)
dni y nombre de los proveedores cuya ciudad sea de Valencia, Alicante o Castelln.
SELECT dni, nombre FROM proveedor
WHERE ciudad IN (VALENCIA, ALICANTE, CASTELLN)
Predicado BETWEEN Pertenencia a un rango de valores.
expr
1
[NOT] BETWEEN expr
2
AND expr
3

cdigo, descripcin y peso de los piezas cuya peso est comprendido entre 20 y 25 Kg.
SELECT codigo, desc, peso FROM pieza WHERE peso BETWEEN 20 AND 25
41
SQL. Predicados y consultas
Meta-caracteres
_ Cualquier carcter
% Cadena de caracteres
* Carcter precedente repetido de 0 a veces
+ Carcter precedente repetido de 1 a veces
[] La cadena contiene alguno de los caracteres incluidos en los corchetes
[^] La cadena NO contiene alguno de los caracteres incluidos en los
corchetes
expr

IS [NOT] NULL
Comprobar si una expresin
tiene valor nulo.


dni y nombre de los proveedores
cuya ciudad tiene un valor definido.
SELECT dni, nombre FROM
proveedor
WHERE ciudad IS NOT NULL
Predicados LIKE y SIMILAR Conformidad de una cadena de caracteres con patrn dado.
expr_cadena

[NOT] LIKE patrn [ESCAPE carcter]
expr_cadena

[NOT] SIMILAR patrn [ESCAPE carcter]


dni y ciudad de proveedores cuyo nombre
empiece por N, contenga Prez y termine
por O seguido por cualquier carcter.










SELECT dni, ciudad FROM proveedores
WHERE nombre LIKE N%Prez%O_
SELECT codigo, peso FROM piezas WHERE desc LIKE %#_% ESCAPE #
ESCAPE indica el carcter a utilizar para que los meta-caracteres sean tratados como caracteres normales.
Obtener el cdigo y el peso de las piezas cuya descripcin contenga el carcter _.

42
SQL. Predicados, consultas y subconsultas
Metodologa general de construccin de consultas
Identificar la informacin a obtener:
Identificar la tabla o tablas origen de los datos (FROM)
Determinar los atributos (columnas) y las expresiones a aplicar sobre los mismos para
obtener la informacin deseada (Lista de seleccin, SELECT)
Determinar las condiciones a cumplir (expresiones lgicas en WHERE).
Ej: cdigo y la descripcin de las piezas que estn a la venta por un precio superior a 10





Ej: dni y nombre de los proveedores que ofertan alguna pieza roja y alguna pieza a un precio inferior a 10

SELECT codigo, desc FROM pieza
WHERE codigo IN (SELECT codigo FROM oferta WHERE precio > 10)
SELECT dni, nombre FROM proveedor
WHERE dni IN (SELECT dni FROM oferta WHERE precio < 10)
AND
dni IN (SELECT dni FROM oferta WHERE codigo IN (SELECT codigo FROM pieza
WHERE COLOR = rojo))

Das könnte Ihnen auch gefallen