Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

22
Bases de Datos con JAVA Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015

Transcript of Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

Page 1: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

Bases de Datos con JAVADr. Mario Rossainz López

Aplicaciones WEBPrimavera 2015

Page 2: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

Bases de Datos RelacionalesUna base de datos relacional puede contener un conjunto

de tablas relacionadas entre sí.Cada tabla esta definida por una serie de campos y

conformada por una lista de tuplas.

Page 3: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

Bases de Datos RelacionalesLos campos forman las columnas de la tabla,

definen el tipo y variedad de datos.Las filas de los datos se denominan tuplas o

registrosA cada valor de un campo definido en una

tupla se le denomina atributo.Las tablas pertenecientes a una base de

datos relacional pueden “relacionarse” entre sí utilizando campos clave comunes entre las tablas.

Page 4: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

Bases de Datos Relacionales

Page 5: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL (Structured Query Language)SQL es un lenguaje de manipulaciòn de bases

de datos relacionalesLas sentencias de SQL se dividen en dos

grupos:DDL: Data Definition LanguageDML: Data Manipulation LanguageEJEMPLO: La sentencia CREATE pertenece al

tipo DDL y permite crear tablas en una base de datos.

Page 6: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL (Structured Query Language)CREATE TABLE Clientes( DNI CHAR(10) NOT NULL PRIMARY KEY, Nombre CHAR(10) NOT NULL, Apellido CHAR(25) NOT NULL,);

Page 7: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaAÑADIR una tupla en la tabla clientes:INSERT INTO Clientes(DNI,Nombre,Apellido) VALUES (‘123456789’,’Luis’,’Rodriguez’)

Puesto que estamos añadiendo todos los campos, podemos prescindir de su enumeración:

INSERT INTO Clientes VALUES (‘123456789’,’Luis’,’Rodriguez’)

Page 8: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaSeleccionar atributos de campos en la tabla

CLIENTESSELECT Nombre, Apellido FROM Clientes

SELECT DNI, Nombre, Apellido FROM ClientesSELECT * FROM Clientes

SELECT DNI FROM Clientes WHERE Nombre=‘Juan’

SELECT Apellido FROM Clientes WHERE Edad<18 AND Nombre=‘Jorge’

Page 9: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaSQL permite incluir en sus condiciones los

operadores:<, <=,>,>=,<>AND, OR, NOTIS NULL, IS NOT NULLLIKE, BETWEEN AND, IN, ALL, ANY, EXIST, etc.

La palabra LIKE por ejemplo funciona en combinación con el carácter ‘%’ que hace de comodín, por ejemplo:

SELECT * FROM Clientes WHERE Nombre LIKE ‘J%’

Page 10: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaSi deseamos seleccionar todos los campos pertenecientes a las

tuplas cuyos atributos EDAD se encuentran entre 15 y 30 años:

SELECT * FROM Clientes WHERE Edad BETWEEN 15 AND 30

El operador IN permite trabajar con un conjunto de valores. Por ejemplo, para seleccionar los apellidos de los clientes que se llamen Jorge, Jesus o Elena podemos usar las sentencias:

SELECT Apellido FROM Clientes WHERE Nombre=´Jorge´ OR Nombre=´Jesus´ OR Nombre=´Elena´

SELECT Apellido FROM Clientes WHERE Nombre IN (´Jorge´,´Jesus´,´Elena´)

Page 11: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaBORRADO de tuplas:

DELETE FROM Clientes WHERE Nombre=´Jorge´ AND Apellido=´Ramirez´

DELETE FROM Clientes WHERE Edad>=65

DELET FROM Clientes WHERE Nombre NOT IN ( ´Jorge´)

Page 12: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con una sola tablaMODIFICANDO datos:

UPDATE Clientes SET Edad=15 WHERE DNI=‘123456789’

UPDATE Clientes SET Nombre=´Ana´ WHERE Nombre=´Elena´

Page 13: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasCÓDIGO NOMBRE DIRECCIÓN

1 Luis Miguel 14 sur 505

2 Beatriz 16 de sept y 7 pte.

3 Joaquin 20 sur 303 altosReferenci

aNombre Precio Concepto

1 Sandias 25.00 Kilo

2 Aceite 40.00 Litro

3 Camisas 350.00 UnidadCÓDIGO Referencia Cantidad

1 1 5

3 2 10

2 3 8

Clientes

Productos

Pedidos

Page 14: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Seleccionar a partir de la tabla de PEDIDOS

una lista con las direcciones a las que hay que enviar cada pedido y el nombre del destinatario.

SELECT Nombre, Direccion, Referencia, Cantidad FROM Clientes, Pedidos WHERE Clientes.Codigo=Pedidos.Codigo

SELECT Clientes.Nombre, Direccion, Productos.Nombre, Cantidad FROM Clientes, Productos, Pedidos WHERE Clientes.Codigo=Pedidos.Codigo AND Pedidos.Referencia=Productos.Referencia

Page 15: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablas

EJEMPLO: Seleccionar los clientes que han comprado algo (No deseamos que existan repeticiones, es decir, cada clientes que haya realizado una compra sólo aparecerá una vez):

SELECT DISTINCT Nombre, Direccion FROM Clientes, Pedidos WHERE Clientes.Codigo=Pedidos.Codigo

Page 16: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Selección más restrictiva buscando

solamente los clientes que han comprado un producto:

SELECT DISTINCT Nombre, Direccion FROM Clientes, Pedidos WHERE Clientes.Codigo=Pedidos.Codigo AND Referencia=5

SELECT Nombre, Direccion FROM Clientes WHERE EXIST (SELECT Codigo FROM Pedidos WHERE Clientes.Codigo=Pedidos.Codigo AND Referencia=2)

Page 17: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Seleccionar los clientes que

todavía no han comprado, es decir, buscamos clientes cuyo código no se encuentre en la tabla de Pedidos:

SELECT Nombre, Direccion FROM Clientes WHERE Codigo NOT IN (SELECT Codigo FROM Pedidos)

Page 18: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Seleccionar los clientes que han

comprado alguna vez usando el operador IN:

SELECT Nombre, Direccion FROM Clientes WHERE Codigo IN (SELECT Codigo FROM Pedidos)

EJEMPLO: Seleccionar los clientes que han comprado un producto concreto osando IN

SELECT Nombre, Direccion FROM Clientes WHERE Codigo IN (SELECT Codigo FROM Pedidos WHERE Referencia=5)

Page 19: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Obtener el pedido con mayor

número de unidades usando ALL, es decir, el que tenga el campo Cantidad mayor:

SELECT nombre, Direccion, Referencia, Cantidad FROM Clientes, Pedidos WHERE Cantidad >= ALL (SELECT cantidad FROM Pedidos) AND Clientes.Codigo=Pedidos.Codigo

Page 20: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Usar ANY para seleccionar

valores que se encuentran en algún campo, seleccionando en este caso los clientes que han comprado algo:

SELECT Nombre, Direccion FROM Clientes WHERE Codigo= ANY(SELECT Codigo FROM Pedidos)

Page 21: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO usando ANY para seleccionar los

clientes que no tienen ningún pedido:

SELECT Nombre, Direccion FROM Clientes WHERE Codigo <> ALL (SELECT Codigo FROM Pedidos)

Page 22: Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.

SQL con varias tablasEJEMPLO: Saber cual es el menor nombre

alfabéticamente hablando

SELECT Nombre FROM Clientes WHERE Nombre <= ALL (SELECT Nombre FROM Clientes)