No es un bug, es una característica no documentada

lunes, 19 de enero de 2015

Bases de datos. Consultas SQL (IV)

9:31 Posted by Inazio , No comments
A continuación los ejercicios 7 de la unidad 3, consistentes en la actualización de campos de las tablas.

EJERCICIOS: Actualización de tablas

1. Realizar las inserciones de las siguientes filas:


insert into compradores (cif_comprador, nombre_social, domicilio_social, localidad, codigo_postal, telefono)
values ('111111-L','TELARES ASUNCION', 'C. LA RUA 5', 'ALBACETE', '02002', '97223141'),
         ('22222-J', 'TEXTIL LAGO', 'PLAZA MAYOR 2', 'ALMERIA', '04131', '95434567');

insert into articulos (referencia_articulo, descripcion_articulo, precio_unidad, iva, existencias_actuales)
values ('01-LANA', 'LANA 100% NATURAL', 31.09, 10, 100),
         ('02-ALGODON', 'ALGODON DE 2 CABOS', 18.00, 10, 155),
         ('03-SED', 'SEDA CHINA', 55.50, 15, 190),
         ('04-LINO', 'LINO EUROPEO', 44.00, 12, 250);

insert into facturas (factura_no, fecha_factura, cif_cliente, cod_oficina)
values (1, '2004-05-12', '111111-L', 1212),
         (2, '2004-07-18', '111111-L', 1231),
         (3, '2004-07-31', '222222-J', 1406),
         (4, '2004-08-10', '222222-J', 1212);

insert into lineas_facturas
values (1, '01-LANA', 120),
         (1, '04-LINO', 75),
         (2, '01-LANA', 20),
         (2, '02-ALGODON', 50);

2. Insertar un nuevo artículo con valores


insert into articulos (referencia_articulo, precio_unidad, iva)
values ('06-CUERO', 10.99, 10);


select * from articulos;


Los campos a los que no hago referencia para rellenar se ponen con NULL automáticamente, porque desconocen el valor que deben tomar.

3. Hacer una rebaja del IVA en un punto para cada artículo

update articulos set iva=iva-1;

4. Modificar la descripción del artículo de referencia 01-LANA para que el nuevo valor sea LANA 
90%NATURAL 10%ACRILICO.

update articulos set descripcion_articulo='LANA 90%NATURAL/10%ACRILICO' where descripcion_articulo like '01-LANA';

5. Indicar los pasos necesarios para modificar el articulo de referencia 01-LANA para que la nueva referencia sea 01-LANA90/10.

SET @@FOREIGN_KEY_CHECKS=0; -- Deshabilitar claves ajenas para poder modificar el dato

update articulos set referencia_articulo='01-LANA90/10' where referencia_articulo like '01-LANA';

SET @@FOREIGN_KEY_CHECKS=1; -- Rehabilitar las claves ajenas de nuevo

6. Borrar de la tabla FACTURAS la factura con el valor de factura_no igual a 2. Observar que ha sucedido en las tablas facturas y líneas de factura. Para comprobarlo hacer un listado de las filas.

delete from facturas
where factura_no=2;
select * from facturas;



Han sido borrados todos los registros que estaban con factura_no=2, con todos sus campos, y como tiene borrado en cascada, se borrarán también los registros que tienen en clave ajena en la tabla lineas_facturas.

Para poder trabajar con las tablas creadas en el tema anterior vamos a insertar algunos valores. Estas inserciones son indispensables para poder realizar los siguientes ejercicios

1. Realizar las inserciones de las siguientes filas:


insert into compradores
values ('111111-L', 'TELARES ASUNCION', 'C. LA RUA 5', 'ALBACETE', '02002', '97223141'),
         ('222222-J', 'TEXTIL LAGO', 'PLAZA MAYOR', 'ALMERIA', '04131', '95434567');
insert into articulos
values ('01-LANA', 'LANA 100% NATURAL', 31.09, 10, 100),
         ('02-ALGODON', 'ALGODON DE 2 CABOS', 18.00, 10, 155),
         ('03-SEDA', 'SEDA CHINA', 55.50, 15, 190),
         ('04-LINO', 'LINO EUROPEO', 44.00, 12, 250);

insert into facturas (factura_no, fecha_factura, cif_cliente, cod_oficina)
values (1, '2004-05-12', '111111-L', 1212),
         (2, '2004-07-18', '111111-L', 1231),
         (3, '2004-07-31', '222222-J', 1406),
         (4, '2004-08-10', '222222-J', 1212);

insert into lineas_facturas
values (1, '01-LANA', 120),
         (1, '04-LINO', 75),
         (2, '01-LANA', 20),
         (2, '02-ALGODON', 50);

2. Insertar un nuevo artículo con valores


insert into articulos
values ('01-YUTE', 'YUTE FINO', 25.99, 12, 15);

3. Borrar los artículos cuyo código contenga un 5

delete from articulos
where referencia_articulo like '%5%';

4. Modificar todos los artículos que tengan IVA con el valor 10 para que el nuevo IVA sea 8.

update articulos
set iva=8
where iva=10;

5. Incrementar el precio de los artículos con una subida del 5%.

update articulos set precio_unidad=round((precio_unidad*1.05),2)

6. Insertar una nueva factura y sus líneas de factura 



insert into facturas (factura_no, fecha_factura, cif_cliente, cod_oficina)
values (5,curdate(), '111111-L', 1231);

insert into lineas_facturas
values (5,'01-LANA',60),

         (5,'04-LINO',25);

7. Borrar la factura número 2 y sus líneas de factura

delete from facturas
where factura_no=2;

8. Modificar la factura de número 5 y sus líneas para que tengan el valor 2.

set @@foreign_key_checks=0;

update facturas
set factura_no=2
where factura_no=5;

update lineas_facturas
set factura_no=2
where factura_no=5;

set @@foreign_key_checks=1;

0 comentarios:

Publicar un comentario