sábado, 27 de julio de 2013
Ejercicio para Base de datos 1(Despresurizado)
Ejercicio 1
Crearemos una
tabla que contenga datos de productos: código, nombre, precio y fecha de alta,
para que podamos trabajar con datos de texto, numéricos y de tipo fecha.
Los pasos que
realizaremos son los siguientes:
- Crear la base de datos
- Comenzar a usarla
- Introducir 3 datos de ejemplo
- Mostrar todos los datos
- Mostrar los datos que tienen un cierto nombre
- Mostrar los datos que comienzan por una cierta inicial
- Ver sólo el nombre y el precio de los que cumplen una condición (precio > 22)
- Ver el precio medio de aquellos productos cuyo nombre comienza con "Silla"
- Modificar la estructura de la tabla para añadir un nuevo campo: "categoría"
- Dar el valor "utensilio" a la categoría de todos los productos existentes
- Modificar los productos que comienza por la palabra "Silla", para que su categoría sea "silla"
- Ver la lista categorías (sin que aparezcan datos duplicados)
- Ver la cantidad de productos que tenemos en cada categoría
Suponiendo que
MySQL está instalado. El primer paso es crear la base de datos:
CREATE DATABASE abarrotes;
Y comenzar a usarla:
USE abarrotes;
Para crear la
tabla productos:
create table productos (
codigo varchar(3),
nombre varchar(30),
precio decimal(6,2),
fechaalta date,
primary key (codigo)
);
Para introducir
varios datos de ejemplo:
INSERT INTO productos VALUES ('a01','Afilador', 2.50, '2007-11-02');
INSERT INTO productos VALUES ('s01','Silla mod. ZAZ', 20, '2007-11-03');
INSERT INTO productos VALUES ('s02','Silla mod. XAX', 25, '2007-11-03');
Para visualizar
todos los datos y comprobar que son correctos:
SELECT * FROM productos;
y deberíamos
obtener
+--------+----------------+--------+------------+
| codigo |
nombre | precio | fechaalta |
+--------+----------------+--------+------------+
| a01 | Afilador |
2.50 | 2007-11-02 |
| s01 | Silla mod. ZAZ | 20.00 | 2007-11-03 |
| s02 | Silla mod. XAX | 25.00 | 2007-11-03 |
+--------+----------------+--------+------------+
Para ver qué
productos se llaman "Afilador":
SELECT * FROM productos WHERE nombre='Afilador';
+--------+----------+--------+------------+
| codigo |
nombre | precio | fechaalta |
+--------+----------+--------+------------+
| a01 | Afilador | 2.50 | 2007-11-02 |
+--------+----------+--------+------------+
Si queremos
saber cuáles comienzan por S:
SELECT * FROM productos WHERE nombre LIKE 'S%';
+--------+----------------+--------+------------+
| codigo |
nombre | precio | fechaalta |
+--------+----------------+--------+------------+
| s01 | Silla mod. ZAZ | 20.00 | 2007-11-03 |
| s02 | Silla mod. XAX | 25.00 | 2007-11-03 |
+--------+----------------+--------+------------+
Si queremos ver
cuales tienen un precio superior a 22, y además no deseamos ver todos los
campos, sino sólo el nombre y el precio:
SELECT nombre, precio FROM productos WHERE precio > 22;
+--------------------+--------+
| nombre | precio |
+--------------------+--------+
| Silla mod. XAX
| 25.00 |
+----------------+--------+
Promedio de los
precios de las sillas:
SELECT avg(precio) FROM productos WHERE LEFT(nombre,5) = 'Silla';
+-------------+
| avg(precio) |
+-------------+
| 22.500000 |
+-------------+
Esto de mirar
las primeras letras para saber si es una silla o no... tal vez no sea la mejor
opción. Parece más razonable añadir un nuevo campo: la "categoría". Para
eso vamos a modificar la estructura de la tabla, para hacerlo:
ALTER TABLE productos ADD categoria varchar(10);
Comprobamos qué
ha ocurrido con un "SELECT" que muestre todos los datos:
SELECT * FROM productos;
+--------+----------------+--------+------------+-----------+
| codigo |
nombre | precio | fechaalta | categoria |
+--------+------------
----+--------+------------+-----------+
| a01 | Afilador |
2.50 | 2007-11-02 | NULL |
| s01 | Silla mod. ZAZ | 20.00 | 2007-11-03 | NULL |
| s02 | Silla mod. XAX | 25.00 | 2007-11-03 | NULL |
+--------+----------------+--------+------------+-----------+
Ahora, todas las
categorías tienen el valor NULL, vamos a dar el valor "utensilio" a
la categoría de todos los productos existentes
UPDATE productos SET categoria='utensilio';
Modificaremos
los productos que comienza por la palabra "Silla", para que su
categoría sea "silla"
UPDATE productos SET categoria="silla"
WHERE LEFT(nombre,5) = 'Silla';
+--------+----------------+--------+------------+-----------+
| codigo |
nombre | precio | fechaalta | categoria |
+--------+----------------+--------+------------+-----------+
| a01 | Afilador |
2.50 | 2007-11-02 | utensilio |
| s01 | Silla mod. ZAZ | 20.00 | 2007-11-03 | silla |
| s02 | Silla mod. XAX | 25.00 | 2007-11-03 | silla |
+--------+----------------+--------+------------+-----------+
Para ver la
lista categorías (sin que aparezcan datos duplicados), deberemos usar la
palabra "distinct"
SELECT DISTINCT categoria FROM productos;
+-----------+
| categoria |
+-----------+
| utensilio |
| silla |
+-----------+
Finalmente, para
ver la cantidad de productos que tenemos en cada categoría, deberemos usar
"count" y agrupar los datos con "group by", así:
SELECT categoria, count(*) FROM productos group by categoria;
+-----------+----------+
| categoria |
count(*) |
+-----------+----------+
| silla |
2 |
| utensilio
| 1 |
+-----------+----------+
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario