Práctica III Inserciones, borrados y actualizaciones
Vamos a continuar practicando el lenguaje SQL con tres nuevos tipos de consulta. inserciones, borrados y actualizaciones, para ello usaremos la base de datos clientes (click para descargar). Antes de empezar hagamos un poco de memoría:
Sabemos:
- Crear (CREATE table, database, view).
- Borrar (DROP table, database, view)
- Consultar (Select….from…..where….order by……groupby……having…..)
- Usar Join para haer consutas sonbre varías tablas.
- Usar funciones de grupo (SUM, MAX, MIN, COUNT, AVG….)
Como os comentaba al principio, ahora vamos a aprender a hacer inserciones, borrados y actualizaciones, sobre la base de datos clientes, pero a diferencia de cuando trabajamos con la base de datos world, la base de datos clientes esta muy mal hecha y por eso antes de empezar tenemos que arreglarla el modelo debería quedar como mínimo como se muestra en la figura:
- Las cadenas de caracteres tienen que ser de un tipo apropiado para el idioma
- Para hacer relaciones con clave foranea las tablas tienen que estar en InnoDB
- La base de datos también tiene que ser del tipo apropiado para el idioma.
- Algunas tablas no tienen ningún campo apropiado para usarse como clave, por tanto tendrás que crearlo
- Para evitar problemas en un principio es recomendable usar RESTRICT tanto en borrados como en inserciones.
- Quizas sobre alguna tabla…
- Seguramente se podrán hacer otras mejoras al modelo…
Insert
INSERT INTO table (a,b,c) VALUES (1,2,3)
INSERT INTO EMPLEADOS (`EMP_NO`, `NOMBRE`, `APELLIDO`, `OFICIO`, `DIR`, `FECHA_ALT`, `SALARIO`, `COMISION`, `TIENDA`)VALUES (NULL, 'Pedro', 'Rodriguez', 'Vendedor', 'Calle mira al rio 13', '2011-01-16', '1300', '10', '4444-A');
Update
UPDATE ARTICULOS SET ARTICULO = ‘Macarrones finos’ WHERE `ARTICULOS`.`ID_articulo` =1;
Delete
Delete from articulos where id_articulo=1;
Ejercicios
- Inserta 5 empleados
- Inserta 10 pedidos
- Sube el sueldo un 10 % a todos los empleados.
- Inserta un articulo nuevo, haz un pedido de este articulo y actualiza su stock.
- Pon a cero el stock de los macarrones y pide 600 más.
- Borra todos los proveedores con menos de un pedido (Cuidado, tenemos muchos proveedores sin pedidos nos quedaremos sin proveedores)
- Llega un regalo de otra compañia y todos los stock suben en 100 unidades.
- Una toRmenta arrasa el almacen y todos los stocks bajan un 70 %.
- A cambiado el IVA, el anterior era del 16% y ahora tenemos que aplicar un 18%.
- Sube 100 euros el sueldo del empleado que más pedidos tenga hechos
Método para sacar el empleado que más pedidos hace
Lo más aconsejable es utilizar una vista de esta forma:
CREATE VIEW EMPLEADO_CUENTA ASSELECT EMPLEADO, COUNT(ID_PEDIDO) AS CUENTA FROM PEDIDOSGROUP BY EMPLEADO;SELECT EMPLEADO FROM EMPLEADO_CUENTAWHERE CUENTA=(SELECT MAX(CUENTA) FROM EMPLEADO_CUENTA)
SELECT EMPLEADO FROM PEDIDOSGROUP BY EMPLEADOHAVING COUNT(ID_PEDIDO)=(SELECT MAX(CUENTA) FROM(SELECT COUNT(ID_PEDIDO) AS CUENTA FROM PEDIDOS GROUP BY EMPLEADO)AUX);
Originally posted 2011-01-16 17:55:02.