14增删改查综合运用

--删除数据表
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 ));

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值