Vous êtes sur la page 1sur 6

EJERCICIO 2 MYSQL

A. Ingresar las sigueintes tablas en una base de datos llamada VIDEOTIENDA, debajo de
cada uno de los ITEMS escribir el codigo empleado para realizar cada uno de los
ejercicios.
1. Crear al base de datos Videotienda.
mysql> create database videotienda;
2. Crear las tablas expuestas a continuación con sus claves primarias y foráneas.

TABLA SOCIO
NOMBRE DEL CAMPO TIPO DE CAMPO PROPIEDAD
Doc_Socio Int
Nombre Varchar (20) PK
Ciudad Varchar (20) Not null
Teléfono Int Not null
Cod_Pelicula Int FK, Not Null
mysql> create table socio (doc_socio int,nombre varchar(20) primary key,ciudad
varchar(20),telefono int,cod_pelicula int);

mysql> alter table socio add constraint fk_pelic foreign key(cod_pelicula) references
pelicula(cod_pelicula);

TABLA PELICULA
NOMBRE DEL CAMPO TIPO DE CAMPO PROPIEDAD
Cod_Pelicula Int Autonumerico, PK
Titulo Varchar (20) Not null
Genero Varchar (20) Not null
Valor_Compra Mediumint Not null
mysql> create table pelicula (cod_pelicula int primary key auto_increment,titulo
varchar(20),genero varchar(20),valor_compra mediumint);

TABLA ALQUILER
NOMBRE DEL CAMPO TIPO DE CAMPO PROPIEDAD
Num_Alquiler Int Autonumerico, PK
Doc_Socio Int FK, Not null
Cod_Pelicula Int FK, Not null
Fecha_Retiro Date Not null
Fecha_Entrega DateTime Not null
Valor_Alquiler Smallint Not null
mysql> create table alquiler (num_alquiler int primary key auto_increment,doc_socio
int,cod_pelicula int,fecha_retiro date,fecha_entrega datetime,valor_alquiler smallint);

mysql> alter table alquiler add constraint fk_soc foreign key (doc_socio) references socio
(doc_socio);

mysql> alter table alquiler add constraint fk_peli foreign key(cod_pelicula) references
pelicula(cod_pelicula);

3. En la tabla Socio Cambiar la clave principal al campo Doc_Socio.

mysql> alter table socio drop primary key;


mysql> alter table socio add primary key(doc_socio);

4. En la tabla Socio quitar la FK del campo Cod_Pelicula.

mysql> alter table socio drop foreign key fk_pelic;

mysql> drop index fk_pelic on socio;

5. Ingresar 7 datos a cada tabla; tengan en cuenta lo sgte: En la tabla película los géneros
son (Comedia, Acción, Drama, Romántico, Infantil); el valor_Compra debe estar entre
25000 y 95000. En la tabla Alquiler las fechas de retiro deben estar entre enero y
diciembre de 2017; La fecha de entrega debe estar entre enero y diciembre con su
respectiva hora; El Valor_Alquiler debe estar entre 3000 y 10000.

mysql> insert into socio values ('123',"juan","ibague",'2723454','1');

mysql> insert into socio values ('456',"carlos","bogota",'2722145','2');

mysql> insert into socio values ('789',"jimmy","medellin",'2726794','3');

mysql> insert into socio values ('321',"sebastian","cali",'2724350','4');

mysql> insert into socio values ('665',"jose","cucuta",'2726439','5');

mysql> insert into socio values ('967',"ramon","ibague",'2729821','6');

mysql> insert into socio values ('593',"maria","santa marta",'2722125','7');

mysql> insert into pelicula values ('',"Mi abuelo es un peligro","comedia",'30000');

mysql> insert into pelicula values ('',"braven","accion",'45000');

mysql> insert into pelicula values ('',"son como niños","comedia",'60000');

mysql> insert into pelicula values ('',"coco","infantil",'75000');

mysql> insert into pelicula values ('',"El libro de la vida","romantico",'80000');

mysql> insert into pelicula values ('',"it","accion",'25000');

mysql> insert into pelicula values ('',"hombre al agua","drama",'40000');

mysql> insert into alquiler values ('','123','1','20170314','20170427012212','3500');

mysql> insert into alquiler values ('','321','2','20170430','20170511024521','5000');

mysql> insert into alquiler values ('','456','3','20170604','20170831191134','7500');

mysql> insert into alquiler values ('','123','4','20170723','20170921202357','8000');

mysql> insert into alquiler values ('','665','5','20170905','20171128233208','6500');

mysql> insert into alquiler values ('','789','6','20171201','20171230151732','3000');

mysql> insert into alquiler values ('','967','7','20170517','20170703114506','9000');

6. Actualizar al menos uno de los datos de cada uno de los atributos de cada una de las
tablas.
mysql> update alquiler set fecha_retiro='20171108' where num_alquiler='1';
mysql> update alquiler set fecha_entrega='20170631221048' where num_alquiler='2';
mysql> update alquiler set valor_alquiler='5500' where num_alquiler='7';
mysql> update pelicula set titulo="jumanji" where cod_pelicula='6';
mysql> update pelicula set genero="comedia" where cod_pelicula='7';
mysql> update pelicula set valor_compra="50000" where cod_pelicula='6';
mysql> update socio set nombre="daniela" where doc_socio='123';
mysql> update socio set ciudad="cartagena" where doc_socio='665';
mysql> update socio set telefono='2723590' where doc_socio='456';

7. De la tabla película cambiar el titulo varchar (20) a titulo varchar (25).

mysql> alter table pelicula modify titulo varchar(25);

8. De la tabla película cambiar el genero varchar (20) a generos varchar (25).

mysql> alter table pelicula modify genero varchar(25);

9. Por medio de los operadores aumentar el Valor_Alquiler en 10%. (Actualización)


mysql> update alquiler set valor_alquiler=(valor_alquiler+(valor_alquiler*0.1));
10. Mostrar la tabla Alquiler completa con el campo Valor_Alquiler ya cambiado.
+--------------+-----------+--------------+--------------+---------------------+----------------+
| num_alquiler | doc_socio | cod_pelicula | fecha_retiro | fecha_entrega |
valor_alquiler |
+--------------+-----------+--------------+--------------+---------------------+----------------+
| 1| 123 | 1 | 2017-11-08 | 2017-04-27 01:22:12 | 3850 |
| 2| 321 | 2 | 2017-04-30 | 0000-00-00 00:00:00 | 5500 |
| 3| 456 | 3 | 2017-06-04 | 2017-08-31 19:11:34 | 8250 |
| 4| 123 | 4 | 2017-07-23 | 2017-09-21 20:23:57 | 8800 |
| 5| 665 | 5 | 2017-09-05 | 2017-11-28 23:32:08 | 7150 |
| 6| 789 | 6 | 2017-12-01 | 2017-12-30 15:17:32 | 3300 |
| 7| 967 | 7 | 2017-05-17 | 2017-07-03 11:45:06 | 6050 |
+--------------+-----------+--------------+--------------+---------------------+----------------+
11. Por medio de los operadores disminuir Valor_Compra en 15%. (Actualización)
mysql> update pelicula set valor_compra=(valor_compra-(valor_compra*0.15));
12. Mostrar la tabla Película completa con el campo Valor_Compra ya cambiado.
+--------------+----------------------+-----------+--------------+
| cod_pelicula | titulo | genero | valor_compra |
+--------------+----------------------+-----------+--------------+
| 1 | Mi abuelo es un peli | comedia | 25500 |
| 2 | braven | accion | 38250 |
| 3 | son como niños | comedia | 51000 |
| 4 | coco | infantil | 63750 |
| 5 | El libro de la vida | romantico | 68000 |
| 6 | jumanji | accion | 42500 |
| 7 | hombre al agua | comedia | 34000 |
+--------------+----------------------+-----------+--------------+
13. Mostrar sin actualizar el duplicado del Valor_Alquiler en una columna llamada
Cop_Val_Alqui.
mysql> select valor_alquiler,valor_alquiler*2 as cop_val_alqui from alquiler;
+----------------+---------------+
| valor_alquiler | cop_val_alqui |
+----------------+---------------+
| 3850 | 7700 |
| 5500 | 11000 |
| 8250 | 16500 |
| 8800 | 17600 |
| 7150 | 14300 |
| 3300 | 6600 |
| 6050 | 12100 |
+----------------+---------------+
14. Realizar dos ejercicios donde se muestre la utilización de los operadores AND, OR y
Between.
mysql> select *from pelicula where cod_pelicula between '2' and '6';
+--------------+---------------------+-----------+--------------+
| cod_pelicula | titulo | genero | valor_compra |
+--------------+---------------------+-----------+--------------+
| 2 | braven | accion | 38250 |
| 3 | son como niños | comedia | 51000 |
| 4 | coco | infantil | 63750 |
| 5 | El libro de la vida | romantico | 68000 |
| 6 | jumanji | accion | 42500 |
+--------------+---------------------+-----------+--------------+
mysql> select *from socio where nombre="daniela" or nombre="jimmy";
+-----------+---------+----------+----------+--------------+
| doc_socio | nombre | ciudad | telefono | cod_pelicula |
+-----------+---------+----------+----------+--------------+
| 123 | daniela | ibague | 2723454 | 1|
| 789 | jimmy | medellin | 2726794 | 3|
+-----------+---------+----------+----------+--------------+
mysql> select *from socio where nombre="daniela" and ciudad="ibague";
+-----------+---------+--------+----------+--------------+
| doc_socio | nombre | ciudad | telefono | cod_pelicula |
+-----------+---------+--------+----------+--------------+
| 123 | daniela | ibague | 2723454 | 1|
+-----------+---------+--------+----------+--------------+
15. Realizar 2 ejercicios con ORDER BY.
mysql> select nombre from socio order by nombre asc;
+-----------+
| nombre |
+-----------+
| carlos |
| daniela |
| jimmy |
| jose |
| maria |
| ramon |
| sebastian |
+-----------+
mysql> select cod_pelicula from socio order by cod_pelicula desc;
+--------------+
| cod_pelicula |
+--------------+
| 7|
| 6|
| 5|
| 4|
| 3|
| 2|
| 1|
+--------------+
16. Mostrar cuantas películas ha alquilado cada uno de los socios de la videotienda.
mysql> select doc_socio, count(cod_pelicula) from alquiler group by doc_socio;
+-----------+---------------------+
| doc_socio | count(cod_pelicula) |
+-----------+---------------------+
| 123 | 2|
| 321 | 1|
| 456 | 1|
| 665 | 1|
| 789 | 1|
| 967 | 1|
+-----------+---------------------+
17. Mostrar el promedio del valor de alquiler.
mysql> select avg(valor_alquiler) from alquiler;
+---------------------+
| avg(valor_alquiler) |
+---------------------+
| 6128.5714 |
+---------------------+
18. Mostrar el promedio del valor de alquiler por cada socio.
mysql> select doc_socio, avg(valor_alquiler) from alquiler group by doc_socio;
+-----------+---------------------+
| doc_socio | avg(valor_alquiler) |
+-----------+---------------------+
| 123 | 6325.0000 |
| 321 | 5500.0000 |
| 456 | 8250.0000 |
| 665 | 7150.0000 |
| 789 | 3300.0000 |
| 967 | 6050.0000 |
+-----------+---------------------+

19. Mostrar cual fue el número de películas alquiladas por día.


mysql> select fecha_retiro, count(cod_pelicula) from alquiler group by fecha_retiro;
+--------------+---------------------+
| fecha_retiro | count(cod_pelicula) |
+--------------+---------------------+
| 2017-04-30 | 1|
| 2017-05-17 | 1|
| 2017-06-04 | 2|
| 2017-07-23 | 1|
| 2017-09-05 | 1|
| 2017-11-08 | 1|
+--------------+---------------------+
20. Mostrar las fechas y la sumatoria de los valores de alquiler de los días donde la
sumatoria de los valores de alquiler hayan sido mayores o iguales al promedio de los
valores de alquiler.

mysql> Select fecha_entrega,sum(valor_alquiler) as val_alqui,avg(valor_alquiler) from alquiler


group by fecha_entrega having sum (valor_alquiler)>=avg(valor_alquiler);

Vous aimerez peut-être aussi