0% encontró este documento útil (0 votos)
5 vistas19 páginas

Gestión de Artículos y Tiendas en SQL

Ejercicios básicos Oracle database

Cargado por

akamekun124
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas19 páginas

Gestión de Artículos y Tiendas en SQL

Ejercicios básicos Oracle database

Cargado por

akamekun124
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1.

Da de alta un nuevo artículo de 'Primera' categoría para los


fabricantes de 'FRANCIA' y abastece con 5 unidades de ese artículo a
todas las tiendas y en la fecha de hoy.

2. Inserta un pedido de 20 unidades en la tienda '1111A' con el


artículo que mayor número de ventas haya realizado.

3. Da de alta una tienda en la provincia de 'MADRID' y abastécela


con 20 unidades de cada uno de los artículos existentes.

4. Da de alta dos tiendas en la provincia de 'SEVILLA' y


abastécelas con 30 unidades de artículos de la marca de fabricante
'GALLO'.

5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10


unidades en los artículos de 'Primera' categoría.

6. Para aquellos artículos de los que se hayan vendido más de 30


unidades, realiza un pedido de 10 unidades para la tienda con NIF
'5555-B' con la fecha actual.

7. Cambia los datos de la tienda con NIF '1111-A' igualándolos a


los de la tienda con NIF '2222-A'.

8. Cambia todos los artículos de 'Primera' categoría a 'Segunda'


categoría del país 'ITALIA'.

9. Modifica aquellos pedidos en los que la cantidad pedida sea


superior a las existencias del artículo, asignando el 20 por 100 de las
existencias a la cantidad que se ha pedido.

10. Elimina aquellas tiendas que no han realizado ventas.

11. Elimina los artículos que no hayan tenido ni compras ni ventas.

12. Borra los pedidos de 'Primera' categoría cuyo país de


procedencia sea 'BÉLGICA'.

13. Borra los pedidos que no tengan tienda.

14. Resta uno a las unidades de los últimos pedidos de la tienda con
NIF '5555-B'.

Tablas ARTICULOS, FABRICANTES, TIENDAS, PEDIDOS Y VENTAS (hacer


DESC de las tablas)
Un almacén de distribución de artículos desea mantener información
sobre las ventas hechas por las tiendas que compran al almacén.
Dispone de las siguientes tablas para mantener esta información:

ARTICULOS: almacena cada uno de los artículos que el almacén puede


abastecer a las tiendas. Cada artículo viene determinado por las
columnas: ARTICULO, COD_FABRICANTE, PESO y CATEGORIA. La
categoría puede ser 'Primera', 'Segunda' o 'Tercera'.

FABRICANTES: contiene los países de origen de los fabricantes de


artículos. Cada COD_FABRICANTE tiene su país.

TIENDAS: almacena los datos de las tiendas que venden artículos.


Cada tienda se identifica por su NIF.

PEDIDOS: son los pedidos que realizan las tiendas al almacén. Cada
pedido se identifica por: NIF, ARTICULO, COD_FABRICANTE, PESO,
CATEGORIA y FECHA_ PEDIDO. Cada fila de la tabla representa un
pedido.

VENTAS: almacena las ventas de artículos que hace


cada una de las tiendas. Cada venta se identifica
por: NIF, ARTICULO, COD_ FABRICANTE, PESO,
CATEGORIA y FECHA_VENTA. Cada fila de la tabla
representa una venta.
TABLA ARTICULOS

Para que en CATEGORIA solo se puedan añadir las palabras: primera,


segunda y tercera, se utiliza la restricción CHECK.
TABLA FABRICANTES

Para que cada código de fabricante tenga su país, se pone al país


como NOT NULL.
TABLA TIENDAS

En la tabla tiendas se añade información de la tienda: el nombre, la


dirección, el teléfono y el NIF.
1. Da de alta un nuevo artículo de 'Primera' categoría para
los fabricantes de 'FRANCIA' y abastece con 5 unidades
de ese artículo a todas las tiendas y en la fecha de hoy.
Para dar de alta a un artículo se añade (con INSERT INTO) el artículo y
sus características a la tabla ARTICULOS, pero antes se añade el
código de fabricante y el país a la tabla de FABRICANTES (aunque ni
tendría ningún efecto si se hiciese del contrario).

Para que se vea la cantidad de productos que se añaden a las tiendas,


se añade otra columna (con ALTER TABLE PEDIDOS (nombre de la
tabla) ADD CANTIDAD_ARTICULOS (nombre de la columna)
NUMBER(3)).

2. Inserta un pedido de 20 unidades en la tienda '1111A'


con el artículo que mayor número de ventas haya realizado.

Se crea la tienda 1111A, mirar qué artículo tiene más ventas (SELECT
* FROM VENTAS) y después, se añaden 20 pedidos del artículo a
PEDIDOS.

3. Da de alta una tienda en la provincia de 'MADRID' y


abastécela con 20 unidades de cada uno de los artículos
existentes.
En la dirección de la tienda pones la provincia a la que pertenezca (en
este caso Madrid). Y luego, se le añaden 20 unidades del artículo 1 y
20 del artículo 2.

4. Da de alta dos tiendas en la provincia de 'SEVILLA' y abastécelas


con 30 unidades de artículos de la marca de fabricante 'GALLO'.

Primero, se dan de alta las tiendas, luego, se le añade a la tabla de


fabricantes el nombre para poner el nombre de los fabricantes.
Después, se añade el fabricante (GALLO).

5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10


unidades en los artículos de 'Primera' categoría.

Hay que añadir la columna CANTIDAD_ARTICULOS para poder señalar


la cantidad de artículos que se van a vender.

6. Para aquellos artículos de los que se hayan vendido más


de 30 unidades, realiza un pedido de 10 unidades para la
tienda con NIF '5555-B' con la fecha actual.
Primero, hay que saber de qué artículo (o artículos) se han vendido
más de 30 unidades, para ello se hace un SELECT de la tabla VENTAS.
Y cuando ya se sabe el artículo, se hace un INSERT INTO en la tabla
de PEDIDOS para añadir 10 unidades de ese artículo a la tienda con
NIF ‘5555-B'.

7. Cambia los datos de la tienda con NIF '1111-A'


igualándolos a los de la tienda con NIF '2222-A'.

Se añaden las tiendas con el NIF '1111-A' y '2222-A'. Y luego, se


utiliza el UPDATE para cambiar los valores de la tienda con NIF '1111-
A'.

8. Cambia todos los artículos de 'Primera' categoría a 'Segunda'


categoría del país 'ITALIA'.
Con UPDATE se actualiza la columna CATEGORIA, pero para que solo
cambie la que tiene categoría primera y es de Italia, se utilizan
WHERE y AND (añadiendo una condición a cada uno).

9. Modifica aquellos pedidos en los que la cantidad pedida sea


superior a las existencias del artículo, asignando el 20 por 100 de las
existencias a la cantidad que se ha pedido.

10. Elimina aquellas tiendas que no han realizado ventas.

DELETE Y WHERE

11. Elimina los artículos que no hayan tenido ni compras ni ventas.

DELETE WHERE Y AND

12. Borra los pedidos de 'Primera' categoría cuyo país de


procedencia sea 'BÉLGICA'.
Añadir la columna PAIS, para poder añadir un artículo de BELGICA. Y
luego, eliminar pedidos que cumplan dos condiciones (que sean de
primera categoría y que sean de Bélgica).

13. Borra los pedidos que no tengan tienda.

Borra los pedidos los cuales su NIF esté vacío.

14. Resta uno a las unidades de los últimos pedidos de la


tienda con NIF '5555-B'.

Hay que actualizar la tabla (poniendo que los pedidos se resten 1) con
la condición de que sean los pedidos de la tienda con NIF '5555-B'.

1. Da de alta un nuevo artículo de 'Primera' categoría para los


fabricantes de 'FRANCIA' y abastece con 5 unidades de ese
artículo a todas las tiendas y en la fecha de hoy.

Primero, debes insertar un nuevo artículo en la tabla ARTICULOS,


asegurándote de que su categoría sea 'Primera' y que pertenezca a
un fabricante de 'FRANCIA'. Luego, deberás insertar 5 unidades de
este artículo en cada tienda.

sql

Copiar código
-- Insertar un artículo de categoría 'Primera' para los fabricantes de
'FRANCIA'

INSERT INTO ARTICULOS (ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA)

SELECT 'ART1234', COD_FABRICANTE, 1.0, 'Primera'

FROM FABRICANTES

WHERE PAIS = 'FRANCIA';

-- Obtener el ID del artículo insertado

SELECT ARTICULO

FROM ARTICULOS

WHERE CATEGORIA = 'Primera' AND ARTICULO = 'ART1234';

-- Insertar 5 unidades de este artículo en todas las tiendas

INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA, FECHA_PEDIDO)

SELECT [Link], 'ART1234', A.COD_FABRICANTE, 1.0, 'Primera', SYSDATE

FROM TIENDAS T, ARTICULOS A

WHERE [Link] = 'ART1234';

2. Inserta un pedido de 20 unidades en la tienda '1111A' con


el artículo que mayor número de ventas haya realizado.

Aquí debes encontrar el artículo más vendido y luego insertar un


pedido de 20 unidades en la tienda 1111A.

sql

Copiar código

-- Encontrar el artículo con mayor número de ventas

SELECT ARTICULO, SUM(CANTIDAD) AS TOTAL_VENDIDO

FROM VENTAS

GROUP BY ARTICULO

ORDER BY TOTAL_VENDIDO DESC

FETCH FIRST 1 ROWS ONLY;


-- Insertar el pedido de 20 unidades para la tienda '1111A' con el
artículo más vendido

INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA, FECHA_PEDIDO)

SELECT '1111A', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,


SYSDATE

FROM ARTICULOS

WHERE ARTICULO = (SELECT ARTICULO

FROM VENTAS

GROUP BY ARTICULO

ORDER BY SUM(CANTIDAD) DESC

FETCH FIRST 1 ROWS ONLY);

3. Da de alta una tienda en la provincia de 'MADRID' y


abastécela con 20 unidades de cada uno de los artículos
existentes.

Primero debes insertar la tienda en la tabla TIENDAS, luego


abastécela con 20 unidades de todos los artículos existentes.

sql

Copiar código

-- Insertar la tienda en Madrid

INSERT INTO TIENDAS (NIF, PROVINCIA)

VALUES ('9999M', 'MADRID');

-- Abastecer la tienda con 20 unidades de todos los artículos

INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA, FECHA_PEDIDO)

SELECT '9999M', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,


SYSDATE

FROM ARTICULOS;
4. Da de alta dos tiendas en la provincia de 'SEVILLA' y
abastécelas con 30 unidades de artículos de la marca de
fabricante 'GALLO'.

Primero, debes insertar las dos tiendas en la provincia de SEVILLA y


luego abastécelas con 30 unidades de artículos fabricados por
'GALLO'.

sql

Copiar código

-- Insertar dos tiendas en Sevilla

INSERT INTO TIENDAS (NIF, PROVINCIA)

VALUES ('1111S', 'SEVILLA');

INSERT INTO TIENDAS (NIF, PROVINCIA)

VALUES ('1112S', 'SEVILLA');

-- Abastecer ambas tiendas con 30 unidades de artículos del


fabricante 'GALLO'

INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA, FECHA_PEDIDO)

SELECT [Link], [Link], A.COD_FABRICANTE, [Link],


[Link], SYSDATE

FROM TIENDAS T

JOIN ARTICULOS A ON A.COD_FABRICANTE = (SELECT


COD_FABRICANTE FROM FABRICANTES WHERE PAIS = 'GALLO')

WHERE [Link] = 'SEVILLA';

5. Realiza una venta para todas las tiendas de 'TOLEDO' de 10


unidades en los artículos de 'Primera' categoría.

Aquí se deben realizar ventas en todas las tiendas de TOLEDO para


artículos de categoría 'Primera'.

sql

Copiar código

-- Realizar venta de 10 unidades de artículos 'Primera' para las


tiendas de Toledo
INSERT INTO VENTAS (NIF, ARTICULO, CANTIDAD, FECHA_VENTA)

SELECT [Link], [Link], 10, SYSDATE

FROM TIENDAS T

JOIN ARTICULOS A ON [Link] = 'Primera'

WHERE [Link] = 'TOLEDO';

6. Para aquellos artículos de los que se hayan vendido más de


30 unidades, realiza un pedido de 10 unidades para la tienda
con NIF '5555-B' con la fecha actual.

Primero, debes verificar cuáles artículos han tenido más de 30


unidades vendidas y luego realizar un pedido de 10 unidades para la
tienda 5555-B.

sql

Copiar código

-- Insertar pedido de 10 unidades para la tienda '5555-B' para


artículos con ventas superiores a 30 unidades

INSERT INTO PEDIDOS (NIF, ARTICULO, COD_FABRICANTE, PESO,


CATEGORIA, FECHA_PEDIDO)

SELECT '5555-B', ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,


SYSDATE

FROM ARTICULOS

WHERE ARTICULO IN (SELECT ARTICULO

FROM VENTAS

GROUP BY ARTICULO

HAVING SUM(CANTIDAD) > 30);

7. Cambia los datos de la tienda con NIF '1111-A' igualándolos


a los de la tienda con NIF '2222-A'.

Para este ejercicio, se realiza una actualización de los datos de la


tienda con NIF 1111-A para que coincidan con los de la tienda 2222-A.

sql

Copiar código

-- Cambiar los datos de la tienda '1111-A' igualándolos a los de '2222-


A'
UPDATE TIENDAS

SET PROVINCIA = (SELECT PROVINCIA FROM TIENDAS WHERE NIF =


'2222-A')

WHERE NIF = '1111-A';

8. Cambia todos los artículos de 'Primera' categoría a


'Segunda' categoría del país 'ITALIA'.

Aquí se actualizan los artículos de categoría 'Primera' a 'Segunda' en


los artículos cuyo fabricante es de 'ITALIA'.

sql

Copiar código

-- Actualizar artículos de 'Primera' categoría a 'Segunda' para los


fabricantes de Italia

UPDATE ARTICULOS

SET CATEGORIA = 'Segunda'

WHERE CATEGORIA = 'Primera' AND COD_FABRICANTE IN

(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS =


'ITALIA');

9. Modifica aquellos pedidos en los que la cantidad pedida sea


superior a las existencias del artículo, asignando el 20% de
las existencias a la cantidad que se ha pedido.

Este ejercicio requiere hacer una verificación de las existencias y


luego ajustar las cantidades.

sql

Copiar código

-- Asignar el 20% de las existencias al pedido si la cantidad pedida es


mayor

UPDATE PEDIDOS P

SET [Link] = [Link] * 0.2

WHERE [Link] > (SELECT EXISTENCIAS FROM ARTICULOS


WHERE ARTICULO = [Link]);

10. Elimina aquellas tiendas que no han realizado ventas.

Se elimina de la tabla TIENDAS aquellas tiendas que no tengan ventas


asociadas.
sql

Copiar código

-- Eliminar tiendas sin ventas

DELETE FROM TIENDAS

WHERE NIF NOT IN (SELECT DISTINCT NIF FROM VENTAS);

11. Elimina los artículos que no hayan tenido ni compras ni


ventas.

Este ejercicio elimina los artículos que no han tenido compras ni


ventas registradas.

sql

Copiar código

-- Eliminar artículos sin compras ni ventas

DELETE FROM ARTICULOS

WHERE ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM


PEDIDOS)

AND ARTICULO NOT IN (SELECT DISTINCT ARTICULO FROM VENTAS);

12. Borra los pedidos de 'Primera' categoría cuyo país de


procedencia sea 'BÉLGICA'.

Elimina los pedidos cuyo artículo sea de categoría 'Primera' y su


fabricante sea de 'BÉLGICA'.

sql

Copiar código

-- Eliminar pedidos de 'Primera' categoría y país 'BÉLGICA'

DELETE FROM PEDIDOS

WHERE CATEGORIA = 'Primera' AND COD_FABRICANTE IN

(SELECT COD_FABRICANTE FROM FABRICANTES WHERE PAIS =


'BÉLGICA');

13. Borra los pedidos que no tengan tienda.

Elimina los pedidos que no están asociados a ninguna tienda.

sql

Copiar código
-- Eliminar pedidos sin tienda

DELETE FROM PEDIDOS

WHERE NIF NOT IN (SELECT NIF FROM TIENDAS);

14. Resta uno a las unidades de los últimos pedidos de la


tienda con NIF '5555-B'.

Para esto, actualizamos la cantidad de los últimos pedidos de la


tienda 5555-B restando 1 unidad.

sql

Copiar código

-- Restar 1 a las unidades de los últimos pedidos de la tienda '5555-B'

UPDATE PEDIDOS

SET CANTIDAD = CANTIDAD - 1

WHERE NIF = '5555-B' AND FECHA_PEDIDO = (SELECT


MAX(FECHA_PEDIDO) FROM PEDIDOS WHERE NIF = '5555-B');

También podría gustarte