Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.
-
Upload
graciana-alfaro -
Category
Documents
-
view
220 -
download
4
Transcript of Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.
Bases de Datos con JAVADr. Mario Rossainz López
Aplicaciones WEBPrimavera 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.
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.
Bases de Datos Relacionales
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.
SQL (Structured Query Language)CREATE TABLE Clientes( DNI CHAR(10) NOT NULL PRIMARY KEY, Nombre CHAR(10) NOT NULL, Apellido CHAR(25) NOT NULL,);
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’)
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’
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%’
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´)
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´)
SQL con una sola tablaMODIFICANDO datos:
UPDATE Clientes SET Edad=15 WHERE DNI=‘123456789’
UPDATE Clientes SET Nombre=´Ana´ WHERE Nombre=´Elena´
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
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
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
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)
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)
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)
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
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)
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)
SQL con varias tablasEJEMPLO: Saber cual es el menor nombre
alfabéticamente hablando
SELECT Nombre FROM Clientes WHERE Nombre <= ALL (SELECT Nombre FROM Clientes)