增删改查综合运用

133 阅读2分钟

删除数据表
DROP TABLE purchase PURGE;
DROP TABLE product PURGE;
DROP TABLE customer PURGE;
--数据表创建
CREATE TABLE product(
productid VARCHAR2(5),
productname VARCHAR2(20) NOT NULL ,
unitprice NUMBER,
category VARCHAR2(50),
provider VARCHAR2(50),
CONSTRAINT pk_productid PRIMARY KEY(productid),
CONSTRAINT ck_unitprice CHECK(unitprice>0)
);


CREATE TABLE customer(
customerid VARCHAR2(5),
name VARCHAR2(20) NOT NULL,
location VARCHAR2(50),
CONSTRAINT pk_customerid PRIMARY KEY(customerid)
);


CREATE TABLE purchase(
customerid VARCHAR2(5),
productid VARCHAR2(5),
quantity NUMBER,
CONSTRAINT fk_customerid FOREIGN KEY(customerid) REFERENCES customer(customerid) ON DELETE CASCADE,
CONSTRAINT fk_productid FOREIGN KEY(productid) REFERENCES product(productid) ON DELETE CASCADE,
CONSTRAINT ck_quantity CHECK(quantity BETWEEN 0 AND 20)
);

INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('M01','jiajieshi',8.00,'yagao','baojie');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('M02','jiajieshi',10.00,'yagao','lianhelihua');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('M03','gaolujie',12.00,'yagao','baojie');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('M04','shufujia',12.00,'xiangzao','baojie');

INSERT INTO customer(customerid,name,location)
VALUES('C01','郑','江西');
INSERT INTO customer(customerid,name,location)
VALUES('C02','郑题','广州');
INSERT INTO customer(customerid,name,location)
VALUES('C03','冠以','北京');
INSERT INTO customer(customerid,name,location)
VALUES('C04','一一','上海');



INSERT INTO purchase(customerid ,productid,quantity)
VALUES('C03','M04',2);
INSERT INTO purchase(customerid ,productid,quantity)
VALUES('C01','M01',2);
INSERT INTO purchase(customerid ,productid,quantity)
VALUES('C04','M04',3);
INSERT INTO purchase(customerid ,productid,quantity)
VALUES('C02','M03',2);
INSERT INTO purchase(customerid ,productid,quantity)
VALUES('C03','M02',5); ​



--求购买了供应商‘baojie’产品的所有顾客;

--数据表:

costomer表:顾客

product表:供应商‘baojie’信息

purchase表:购买了供应商‘baojie’产品

--关联关系:

product.productid=purchase.productid;

costomer.customerid=purchase.customerid;



--找出供应商baojie的产品

SELECT productid

FROM product

WHERE provider='baojie';



--找出购买了baojie产品的顾客信息

SELECT *

FROM costomer

WHERE customerid IN(

SELECT customerid

FROM purchase

WHERE productid IN (

SELECT productid

FROM product

WHERE provider='baojie'));




--求购买的商品包含了顾客'冠以'所购买的所有商品的顾客(姓名);

SELECT customerid

FROM customer

WHERE name='冠以';



SELECT *

FROM customer ca

WHERE NOT EXISTS(

SELECT p1.productid

FROM purchase p1

WHERE customerid =(

SELECT customerid

FROM customer

WHERE name='冠以')

MINUS

SELECT p2.productid

FROM purchase p2

WHERE customerid=ca.customerid)

AND ca.name<>'冠以';


--求牙膏卖出数量最多的供应商;

--先找出牙膏对应的商品编号productid,然后从购买表中找出牙膏商品编号的总的数量,根据商品编号分组可以得出每一个商品编号对应的数量;再求出数量最多对应的商品编号;

SELECT PRODUCER
FROM product
WHERE productid=(
SELECT productid,SUM(QUANTITY)
FROM PURCHASE
WHERE productid IN(
SELECT productid FROM product WHERE category='yagao')
GROUP BY productid
HAVING SUM(QUANTITY)=(
SELECT MAX(SUM(QUANTITY))
FROM PURCHASE
WHERE productid IN(
SELECT productid FROM product WHERE category='yagao')
GROUP BY productid ));