Está en la página 1de 3

CREATE DATABASE SUPERMERCADO;

USE SUPERMERCADO;

CREATE TABLE CATEGORIA


(
ID smallint NOT NULL primary KEY,
NOMBRE VARCHAR(30) NOT NULL
);

CREATE TABLE PRODUCTO


(
CODIGO INTEGER NOT NULL primary KEY,
NOMBRE VARCHAR (40) NOT null,
PRECIO FLOAT NOT NULL,
IDCATEGORIA smallint NOT NULL,
foreign key (IDCATEGORIA) references CATEGORIA(ID)
on update cascade #SE USA PARA ACTUALIZAR EN BASE DE DATOS
ON delete cascade #AL BORRAR LA CATEGORIA, BORRA LOS DATOS DE LAS DEMAS TABLAS
);

insert into CATEGORIA values (1,'GASEOSA');


insert into CATEGORIA values (2,'CARNE');
insert into CATEGORIA values (3,'ENERGIZANTE');
insert into CATEGORIA values (4,'ABARROTES');

select*
FROM categoria;

select*
FROM PRODUCTO;

insert INTO PRODUCTO valueS (1001,'COCA COLA 2 LTS',10,1);


insert INTO PRODUCTO valueS (1002,'COCA COLA 3 LTS',15,1);
insert INTO PRODUCTO valueS (1003,'ARROZ 1KG',7,4);
insert INTO PRODUCTO valueS (1004,'CARNE DE RES',40,2);
insert INTO PRODUCTO valueS (1005,'AZUCAR 1KG',5,4);
insert INTO PRODUCTO valueS (1006,'FANTA 2 LTS',10,1);
insert INTO PRODUCTO valueS (1007,'RED BULL 1 LTS',12,3);

UPDATE CATEGORIA
SET ID=5
WHERE ID=1;

set sql_safe_updates=0;#ACTIVAR CODIGO PARA BORRAR NOMBRE


DELETE FROM CATEGORIA
WHERE NOMBRE ='GASEOSA';
#1. IDENTIFICAR LAS TABLAS QUE PARTICIPAN
#2.RELACIONAR LAS TABLAS
#3. CRITERIO DE BUSQUEDA
#4. QUE ES LO QUE SE VA HA MOSTRAR
#MOSTYRAR TODOS LOS PRODUCTOS DE LA CATEGORIA GASEOSA
SELECT CODIGO,PRODUCTO.NOMBRE,PRECIO
FROM PRODUCTO,CATEGORIA
WHERE IDCATEGORIA=ID AND CATEGORIA.NOMBRE='GASEOSA' AND PRECIO=10;

SELECT CODIGO,NOMBRE,PRECIO
FROM PRODUCTO
WHERE IDCATEGORIA IN(SELECT ID
FROM CATEGORIA
WHERE NOMBRE='GASEOSA')
OR IDCATEGORIA IN(SELECT ID
FROM CATEGORIA
WHERE NOMBRE='ABARROTES');

select CODIGO,NOMBRE,PRECIO
FROM PRODUCTO
WHERE IDCATEGORIA IN(1,4);

#MOSTRAR LA CANTIDAD DE PREODUCTOS QUE EXISTEN DE LA CATEGORIA GASEOSA


SELECT COUNT(*)
FROM PRODUCTO,CATEGORIA
WHERE IDCATEGORIA=ID AND CATEGORIA.NOMBRE='GASEOSA';

SELECT COUNT(*)
FROM PRODUCTO
WHERE IDCATEGORIA IN(SELECT ID
FROM CATEGORIA
WHERE NOMBRE='GASEOSA');

#MOSTRAR TODOS LOS PRODUCTOS, MENOS LOS DE LA CATEGORIA GASEOSA


SELECT CODIGO,NOMBRE,PRECIO
FROM PRODUCTO
WHERE IDCATEGORIA NOT IN(SELECT ID
FROM CATEGORIA
WHERE NOMBRE='GASEOSA');

SELECT*
FROM PRODUCTO;

#MOSTRAR EL PRECIO MAYOR DE TODOS LOS PRODUCTOS


SELECT MAX(PRECIO)
FROM PRODUCTO;

#MOSTRAR EL PRECIO MENOR DE TODOS LOS PRODUCTOS


SELECT MIN(PRECIO)
FROM PRODUCTO;

#MOSTRAR EL PRECIO PROMEDIO DE LOPS PRODUCTOS


SELECT AVG(PRECIO)
FROM PRODUCTO;

#MOSTRAR EL PRECIO MAYOR DE LA CATEGORIA CARNES


SELECT MAX(PRECIO)
FROM PRODUCTO
WHERE IDCATEGORIA IN (SELECT ID
FROM CATEGORIA
WHERE NOMBRE='CARNE');

#MOSTRA LA CANTIDAD DE PRODUCTOS EXISTENTES POR CADA CATEGORIA


SELECT IDCATEGORIA,CATEGORIA.NOMBRE,COUNT(*) AS CANTIDAD
FROM PRODUCTO,CATEGORIA
WHERE IDCATEGORIA=ID
GROUP BY IDCATEGORIA
ORDER BY CANTIDAD ASC;

CREATE TABLE Cliente


(
ID INTEGER NOT NULL primary KEY,
NOMBRE VARCHAR (60) NOT null,
SEXO char NOT NULL,
TELEFONO integer
);

insert INTO Cliente valueS (111,'Joaquin Chumacero','M',7120030);


insert INTO Cliente valueS (222,'Saturnino Mmani','M',3562221);
insert INTO Cliente valueS (333,'Fabiola Mendez','F',7002020);

CREATE TABLE NOTAVENTA


(
NRO INTEGER NOT NULL primary KEY,
FECHA date NOT null,
MONTO float NOT NULL,
CICliente integer not null,
foreign key(CICliente) references Cliente(CI)
ON UPDATE CASCADE
ON DELETE CASCADE
);
insert INTO NOTAVENTA valueS (100,10/01/2023,45,111);
insert INTO NOTAVENTA valueS (101,10/01/2023,64,222);

CREATE TABLE VENDE


(
NROVENTA INTEGER NOT NULL,
CODIGOP INTEGER NOT null,
CANTIDAD INTEGER NOT NULL,
PRECIO FLOAT NOT NULL,
primary key(NROVENTA,CODIGOP),
foreign key(NROVENTA) REFERENCES NOTAVENTA(NRO)
ON UPDATE CASCADE
ON DELETE CASCADE,
foreign key (CODIGOP) REFERENCES PRODUCTO(CODIGO)
ON UPDATE CASCADE
ON DELETE CASCADE
);
insert INTO VENDE valueS (100,1001,2,10);
insert INTO VENDE valueS (100,1006,5,5);
insert INTO VENDE valueS (101,1003,2,7);
insert INTO VENDE valueS (101,1007,3,10);
insert INTO VENDE valueS (101,1001,2,10);

También podría gustarte