Ejemplo Alias


select count(title) total
from film f join film_category fc on f.film_id=fc.film_id
join category c on fc.category_id = c.category_id
where name='Action'

Ejercicios Sakila

Películas de la categoría ‘Action’

Actores que han trabajado en películas de la categoría ‘Action’

Clientes de Argentina

Clientes que hayan alquilado películas de la categoría ‘Action’


select title from film join film_category using (film_id)
join category using (category_id)
where name='Action'

select distinct first_name,last_name
from actor join film_actor using(actor_id)
join film using(film_id)
join film_category using(film_id)
join category using(category_id)
where name='action'
order by first_name, last_name

select country,first_name,last_name from country join city
on country.country_id=city.country_id
join address on city.city_id=address.city_id
join customer on address.address_id=customer.address_id
where country='argentina'
order by first_name, last_name

select distinct first_name, last_name
from customer join rental using (customer_id)
join inventory using (inventory_id)
join film using (film_id)
join film_category using (film_id)
join category using (category_id)
where name='Action'

select first_name, last_name from country join city using (country_id)
join address using (city_id)
join customer using (address_id)
join rental using (customer_id)
join inventory using (inventory_id)
join film using (film_id)
join film_category using (film_id)
join category using (category_id)
where name='Action' and country='argentina'

Ejercicios Sakila sql

Actores que tengan una x en el nombre o en el apellido

Direcciones de california que tengan ‘274’ en el número de teléfono

Películas ‘Épicas’ (Epic) o ‘Brillantes’ (brilliant) que duren más de 180 minutos

Películas que duren entre 100 y 120 minutos o entre 50 y 70 minutos

Películas que cuesten 0.99, 2.99 y tengan un rating ‘g’ o ‘r’ y que hablen de cocodrilos (cocodrile)

Direcciones de ontario o de punjab o que su código postal acabe en 5 o que su teléfono acabe en 5

SELECT * FROM sakila.actor
where first_name like '%x%' or last_name like '%x%'

SELECT * FROM sakila.address
where district='california' and phone like '%274%'


SELECT * FROM sakila.film
where (description like '%epic%' or description like '%brilliant%') 
and length>180

SELECT * FROM sakila.film
where length between 100 and 120 or length between 50 and 70

SELECT * FROM sakila.film
where description like '%crocodile%' and rental_rate in (0.99,2.99) 
and rating in ('R','G')

SELECT * FROM sakila.address
where district='ontario' or district='punjab'
or postal_code like '%5' or phone like '%5'

Ejercicio tablas

Si tenemos la tabla ‘productos’ del examen con los siguientes campos:

Referencia varchar

Precio decimal

Stock decimal

Insertar los siguientes registros:

Disolvente, 1 €, 2000

Emulsionante, 3 €, 1500

Colorante rojo, 4 €, 200

Tinta verde, 10 €, 100

Después cambiar el stock del colorante rojo a 300 y de la tinta verde a 50

Eliminar el disolvente

Mostrar los registros.

CRUD en Mysql

INSERT INTO table_name ( field1, field2,...fieldN )
   VALUES
   ( value1, value2,...valueN );

UPDATE table_name SET field1 = new-value1, field2 = new-value2
[WHERE Clause]
DELETE FROM table_name [WHERE Clause]
SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[WHERE condition1 [AND [OR]] condition2.....

Examen

Una empresa de fabricación de tintas nos ha pedido una base de datos.

La empresa necesita guardar información de sus clientes, concretamente el NIF y la razón social. Los clientes hacen pedidos, de los que queremos saber la fecha y la dirección de envío (calle, cp y población).

Los pedidos pueden ser de varios productos. De los productos queremos guardar la referencia, el precio y el stock que tenemos en almacén.

Por otro lado algunos productos se componen de otros productos. Para esos productos necesitamos guardar la la cantidad de cada uno de los productos de los que se componen. Por ejemplo yo puedo tener un producto tinta azul que se componga de 1 litro de disolvente, medio litro de colorante azul y 0,2 litros de espesante. Pero todos son productos.

Se pide el Modelo E-R, el modelo lógico y la implementación en base de datos (dejadla en los comentarios con vuestro nombre)

 

 

DROP TABLE IF EXISTS `clientes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `clientes` (
`idclientes` int(11) NOT NULL AUTO_INCREMENT,
`nif` varchar(45) DEFAULT NULL,
`razonsocial` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idclientes`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


— Dumping data for table `clientes`

LOCK TABLES `clientes` WRITE;
/*!40000 ALTER TABLE `clientes` DISABLE KEYS */;
/*!40000 ALTER TABLE `clientes` ENABLE KEYS */;
UNLOCK TABLES;


— Table structure for table `pedido_producto`

DROP TABLE IF EXISTS `pedido_producto`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pedido_producto` (
`idpedido_producto` int(11) NOT NULL AUTO_INCREMENT,
`idpedido` int(11) DEFAULT NULL,
`idproducto` int(11) DEFAULT NULL,
PRIMARY KEY (`idpedido_producto`),
KEY `fk_pedido_idx` (`idpedido`),
KEY `fk_producto_idx` (`idproducto`),
CONSTRAINT `fk_pedido` FOREIGN KEY (`idpedido`) REFERENCES `pedidos` (`idpedidos`) ON UPDATE CASCADE,
CONSTRAINT `fk_producto` FOREIGN KEY (`idproducto`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


— Dumping data for table `pedido_producto`

LOCK TABLES `pedido_producto` WRITE;
/*!40000 ALTER TABLE `pedido_producto` DISABLE KEYS */;
/*!40000 ALTER TABLE `pedido_producto` ENABLE KEYS */;
UNLOCK TABLES;


— Table structure for table `pedidos`

DROP TABLE IF EXISTS `pedidos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pedidos` (
`idpedidos` int(11) NOT NULL AUTO_INCREMENT,
`fecha` date DEFAULT NULL,
`calle` varchar(45) DEFAULT NULL,
`cp` varchar(45) DEFAULT NULL,
`poblacion` varchar(45) DEFAULT NULL,
`idcliente` int(11) DEFAULT NULL,
PRIMARY KEY (`idpedidos`),
KEY `fk_cliente_idx` (`idcliente`),
CONSTRAINT `fk_cliente` FOREIGN KEY (`idcliente`) REFERENCES `clientes` (`idclientes`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


— Dumping data for table `pedidos`

LOCK TABLES `pedidos` WRITE;
/*!40000 ALTER TABLE `pedidos` DISABLE KEYS */;
/*!40000 ALTER TABLE `pedidos` ENABLE KEYS */;
UNLOCK TABLES;


— Table structure for table `producto_producto`

DROP TABLE IF EXISTS `producto_producto`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `producto_producto` (
`idproducto_producto` int(11) NOT NULL AUTO_INCREMENT,
`idproductofinal` int(11) DEFAULT NULL,
`idproductocomponente` int(11) DEFAULT NULL,
`cantidad` decimal(10,4) DEFAULT NULL,
PRIMARY KEY (`idproducto_producto`),
KEY `fk_productofinal_idx` (`idproductofinal`),
KEY `fk_productocomponente_idx` (`idproductocomponente`),
CONSTRAINT `fk_productocomponente` FOREIGN KEY (`idproductocomponente`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE,
CONSTRAINT `fk_productofinal` FOREIGN KEY (`idproductofinal`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


— Dumping data for table `producto_producto`

LOCK TABLES `producto_producto` WRITE;
/*!40000 ALTER TABLE `producto_producto` DISABLE KEYS */;
/*!40000 ALTER TABLE `producto_producto` ENABLE KEYS */;
UNLOCK TABLES;


— Table structure for table `productos`

DROP TABLE IF EXISTS `productos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `productos` (
`idproductos` int(11) NOT NULL AUTO_INCREMENT,
`referencia` varchar(45) DEFAULT NULL,
`precio` decimal(10,4) DEFAULT NULL,
`stock` decimal(10,4) DEFAULT NULL,
PRIMARY KEY (`idproductos`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;