drop table PRODUCT cascade constraints; create table PRODUCT ( id NUMBER not null, --主键 pcode VARCHAR2(20) not null, --商品编号 pname VARCHAR2(20), --商品名称 inprice NUMBER(7,2), --进价 outprice NUMBER(7,2), --售价 toma VARCHAR2(20), --管理员名称 lastcou NUMBER, --剩余数量 ptype VARCHAR2(5), --商品类型 mark NUMBER, --有效标志 createtime DATE --生产日期 ); alter table PRODUCT ADD CONSTRAINT pk_product primary key (ID); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (1, ‘f-qq45‘, ‘香蕉‘, 2.8, 4, ‘张三‘, 12, ‘a‘, 1, to_date(‘05-05-2017‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (2, ‘f-56tt‘, ‘苹果‘, 3.4, 5, ‘张三‘, 33, ‘a‘, 1, to_date(‘16-06-2016‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (3, ‘f-332‘, ‘梨‘, 2.7, 4, ‘张三‘, 76, ‘a‘, 1, to_date(‘23-09-2016‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (4, ‘f-20‘, ‘猪肉‘, 14, 16, ‘张三‘, 56, ‘b‘, 1, to_date(‘31-12-2013‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (5, ‘f-qq46‘, ‘圆珠笔‘, 3, 5, ‘王五‘, 55, ‘e‘, 1, to_date(‘14-09-2016‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (6, ‘f-57tt‘, ‘樱桃‘, 8, null, ‘王五‘, 12, ‘a‘, 1, to_date(‘22-05-2006‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (7, ‘f-292‘, ‘三文鱼‘, 5, 8, ‘王五‘, 23, ‘b‘, 1, to_date(‘31-07-2001‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (8, ‘f-604‘, ‘螺丝刀‘, 12, 15, ‘王五‘, 72, ‘c‘, 1, to_date(‘24-02-2013‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (9, ‘f-qq47‘, ‘扳手‘, 14, 19, ‘王五‘, 90, ‘c‘, 1, to_date(‘14-05-2015‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (10, ‘f-58tt‘, ‘钳子‘, 10, 13, ‘张三‘, 97, ‘c‘, 1, to_date(‘28-03-2012‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (11, ‘f-916‘, ‘矿泉水‘, 2.5, 3, ‘李四‘, 44, ‘d‘, 1, to_date(‘21-07-2012‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (12, ‘f-1228‘, ‘杏仁露‘, 4, 5, ‘李四‘, 38, ‘d‘, 1, to_date(‘22-02-2013‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (13, ‘f-59tt‘, ‘钢笔‘, null, 43, ‘李四‘, 22, ‘e‘, 1, to_date(‘30-09-2013‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (14, ‘f-1540‘, ‘铅笔‘, .5, .8, ‘赵六‘, 72, ‘e‘, 1, to_date(‘14-05-2017‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (15, ‘f-1852‘, ‘大马哈鱼‘, 1.5, 2, ‘赵六‘, 76, ‘b‘, 1, to_date(‘17-05-2012‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (16, ‘f-2164‘, ‘鸡蛋‘, 2.7, 4, ‘赵六‘, 56, ‘b‘, 1, to_date(‘14-09-2010‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (17, ‘p-123h‘, ‘雪碧‘, 2, 3, ‘王五‘, 50, ‘d‘, 1, to_date(‘01-05-2017‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (18, ‘p-111h‘, ‘冰红茶‘, 2, 3, ‘王五‘, 40, ‘d‘, 1, to_date(‘18-05-2017‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (19, ‘p-18-h‘, ‘可乐‘, 2, 3, ‘王五‘, 30, ‘d‘, 1, to_date(‘09-05-2017‘, ‘dd-mm-yyyy‘)); insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (20, ‘f-qq46‘, ‘圆珠笔‘, 3, 5, ‘王五‘, 55, ‘e‘, 1, to_date(‘14-09-2016‘, ‘dd-mm-yyyy‘)); commit; -- 为商品名称添加一个非空约束, 为剩余数量添加一个检查约束(剩余数量 >= 5) -- 使用insert into任意添加三条数据(数据信息自定)加到这个表中 -- 删除‘猪肉‘的那条记录 -- 将‘扳手‘和‘钳子‘的商品名称分别改为‘16号扳手‘和‘小号钳子‘, 并将这两个商品的管理人员都改为‘赵六‘ -- 查询商品类型为‘a‘的所有商品, 并按照售价由大到小排序 -- 查询王五负责的c类商品 -- 查询剩余数量小于50的所有商品 -- 查询剩余数量在60-80之间的所有商品 -- 查询商品名称带‘笔‘的和带‘鱼‘的记录 -- 查询商品编号中带‘tt‘的记录 -- 查询商品类型为a, d, c的所有商品 -- !查询商品编号重复的记录, 并将他们删除 -- 查询整个表中每一类商品的剩余数量, 并按照剩余数由大到小排序 -- 查询所有‘e‘类型商品, 并按照剩余库存数量排序 -- 查询管理商品种类数量少于4的管理员名称和管理的商品种类数量 -- 查询所有的管理员名称和其手上所管理的所有商品种类数量 -- .查询所有的管理员名称和其手上所管理的所有‘a‘类商品种类数量, 数量为0的直接显示为0 -- 查询所有商品中剩余数量最少的一个 -- 查询生产日期在2015-5-31之前的数据 //棒棒哒~~ -- !假设所有商品的有效期是一年(按照365天计算), 截止到2017-06-01为标准, 查询所有商品的信息, 并且加一列标注是否过期 -- !将所有过期的商品的有效标志改为0 -- 查询每个管理员所管理的所有商品的平均进价价格和售价价格, 并四舍五入保留2位小数 -- !!查询假设每个管理员把所有商品售完后各自的利润总和(不计进价和售价为空的商品 用nvl)
select t.*, t.rowid from PRODUCT t; --添加三条数据 INSERT INTO product t VALUES(21,‘xg‘,‘西瓜‘,1.99,3.00,‘ 张三‘,50,‘d‘,1,to_date(20170908,‘yyyymmdd‘)); INSERT INTO product t VALUES(22,‘lb‘,‘萝卜‘,1.22,2.00,‘ 李四‘,34,‘e‘,1,SYSDATE); INSERT INTO product t VALUES(23,‘dg‘,‘冬瓜‘,1.5,2.10,‘ 赵六‘,68,‘c‘,1,SYSDATE); COMMIT; --删除猪肉那条数据 DELETE product WHERE ID =4; COMMIT; --将‘扳手‘和‘钳子‘的商品名称分别改为‘16号扳手‘和‘小号钳子‘, 并将这两个商品的管理人员都改为‘赵六‘ UPDATE product t SET pname = ‘16号扳手‘ ,toma =‘赵六‘ WHERE t.id = 9; UPDATE product t SET pname = ‘小号钳子‘,toma =‘赵六‘ WHERE t.id = 10; COMMIT; --查询商品类型为‘a‘的所有商品, 并按照售价由大到小排序 SELECT t.* FROM product t WHERE t.ptype = ‘a‘ ORDER BY t.outprice desc; -- 查询王五负责的c类商品 SELECT t.* FROM product t WHERE t.toma = ‘王五‘ AND t.ptype = ‘c‘; --查询剩余数量小于50的所有商品 SELECT t.* FROM product t WHERE t.lastcou < 50; --查询剩余数量在60-80之间的所有商品 SELECT t.* FROM product t WHERE t.lastcou > 60 AND t.lastcou < 80 ; --查询商品名称带‘笔‘的和带‘鱼‘的记录 SELECT t.* FROM product t where t.pname LIKE ‘%笔%‘ OR t.pname LIKE ‘%鱼%‘ --查询商品编号中带‘tt‘的记录 SELECT t.* FROM product t WHERE t.pcode LIKE ‘%tt%‘ --查询商品类型为a, d, c的所有商品 select t.* from PRODUCT t WHERE t.ptype = ‘a‘ OR t.ptype = ‘b‘ OR t.ptype = ‘c‘
--查询商品编号重复的记录, 并将他们删除 DELETE FROM product WHERE pcode =(SELECT t.pcode from PRODUCT t GROUP BY t.pcode HAVING COUNT(1)>1); COMMIT; -- 查询整个表中每一类商品的剩余数量, 并按照剩余数由大到小排序 SELECT t.* FROM product t ORDER BY t.lastcou DESC -- 查询所有‘e‘类型商品, 并按照剩余库存数量排序 SELECT t.* FROM product t WHERE t.ptype = ‘e‘ ORDER BY t.lastcou -- 查询管理商品种类数量少于4的管理员名称和管理的商品种类数量 SELECT t.toma,COUNT(1) FROM product t GROUP BY t.toma HAVING COUNT(1) < 4; -- 查询所有的管理员名称和其手上所管理的所有商品种类数量 SELECT t.toma,COUNT(1) FROM product t GROUP BY t.toma --?!查询所有的管理员名称和其手上所管理的所有‘a‘类商品种类数量, 数量为0的直接显示为0 SELECT t.toma 管理员,nvl(count(t.ptype),0) 种类 FROM product t
WHERE t.ptype = ‘a‘ GROUP BY t.toma SELECT t.toma,COUNT(1) FROM product t
WHERE t.ptype = ‘a‘ GROUP BY t.toma -- 查询所有商品中剩余数量最少的一个 --SELECT * FROM product t WHERE t.lastcou <= ALL(SELECT t2.lastcou FROM product t2 ) SELECT * FROM product t WHERE t.lastcou = (SELECT MIN(t.lastcou) FROM product t ); -- 查询生产日期在2015-5-31之前的数据 SELECT t.* FROM product t WHERE t.createtime > (to_date(20150531,‘yyyymmdd‘)) -- !!假设所有商品的有效期是一年(按照365天计算), 截止到2017-06-01为标准, 查询所有商品的信息, 并且加一列标注是否过期 SELECT t.pname 商品名,CASE WHEN to_date(20170601,‘yyyymmdd‘) -t.createtime > 365 THEN ‘过期‘ ELSE ‘保质期内‘ END 是否过期 FROM product t -- !将所有过期的商品的有效标志改为0 UPDATE product t SET t.mark = 0 WHERE to_date(20170601,‘yyyymmdd‘) -t.createtime > 365; COMMIT; -- 查询每个管理员所管理的所有商品的平均进价价格和售价价格, 并四舍五入保留2位小数 SELECT t.toma,ROUND (AVG (t.inprice),2) 平均进价 , ROUND (AVG (t.outprice),2) 平均售价 from PRODUCT t GROUP BY t.toma; -- !查询假设每个管理员把所有商品售完后各自的利润总和(不计进价和售价为空的商品) SELECT t.toma 管理员, SUM ((nvl(t.outprice,0) - nvl(t.inprice,0))*t.lastcou) 利润总和 from PRODUCT t GROUP BY t.toma