Oracle练习之数据表的添加、增加主键及外键相关查询工作

--创建商品类表--

CREATE TABLE t_type(
        id   NUMBER,
        name VARCHAR2(20),
        CONSTRAINT pk_id PRIMARY KEY(id) 
        );
--商品信息表---
CREATE TABLE p_product(
            id      number,
            name    VARCHAR2(50),
            pro_date   VARCHAR2(20),
            eff_date   VARCHAR2(20),
            price      NUMBER,
            p_unit     VARCHAR(6),
            t_id       NUMBER,
            CONSTRAINT pk_o_id PRIMARY KEY(id),
            CONSTRAINT fk_t_id FOREIGN KEY(t_id) REFERENCES t_type(id)
            );
--订单表--
  
  CREATE TABLE o_orders(
                  id         NUMBER,
                  dealtime    VARCHAR2(20),
                  p_id        NUMBER,
                  p_num       NUMBER,
                  c_name      VARCHAR2(20),
                  o_oper      VARCHAR2(20),
                  tatol       NUMBER,
                 CONSTRAINT pk_p_id PRIMARY KEY(id),
                 CONSTRAINT fk_p_id FOREIGN KEY(p_id) REFERENCES p_product(id)
                 );
--商品类数据--
INSERT INTO t_type(id,name) VALUES (1,'食品类');
INSERT INTO t_type(id,name) VALUES (2,'生活用品');
INSERT INTO t_type(id,name) VALUES (3,'电器');
INSERT INTO t_type(id,name) VALUES (4,'厨房用品');

--二、产商品表数据--
INSERT INTO p_product(id,name,pro_date,eff_date,price,p_unit,t_id) VALUES (1,'傻小子',TO_DATE('2016-2-15','yyyy-mm-dd'),'60天',2.5,'包',1);
INSERT INTO p_product(id,name,pro_date,eff_date,price,p_unit,t_id) VALUES (2,'海飞丝',TO_DATE('2016-6-14','yyyy-mm-dd'),'730天',18.5,'瓶',2);
INSERT INTO p_product(id,name,pro_date,eff_date,price,p_unit,t_id) VALUES (3,'辣条',TO_DATE('2016-11-12','yyyy-mm-dd'),'30天',1.5,'包',1);
INSERT INTO p_product(id,name,pro_date,eff_date,price,p_unit,t_id) VALUES (4,'苏泊尔电饭煲',TO_DATE('2016-8-03','yyyy-mm-dd'),'NULL',389,'台',3);
INSERT INTO p_product(id,name,pro_date,eff_date,price,p_unit,t_id) VALUES (5,'威猛先生',TO_DATE('2016-6-21','yyyy-mm-dd'),'730天',36.8,'瓶',4);
--三订、订单信息表--
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (001,TO_DATE('2016-6-10','yyyy-mm-dd'),1,200,'傻小子工厂','张三',400);
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (002,TO_DATE('2016-11-20','yyyy-mm-dd'),1,400,'傻小子工厂','张三',500);
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (003,TO_DATE('2016-8-20','yyyy-mm-dd'),2,60,'海飞丝生产线','王语嫣',840);
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (004,TO_DATE('2016-12-01','yyyy-mm-dd'),3,100,'辣条生产厂','段誉',100);
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (005,TO_DATE('2016-6-06','yyyy-mm-dd'),4,100,'苏伯尔总代','乔峰',3500);
INSERT INTO o_orders(id,dealtime,p_id,p_num,c_name,o_oper,tatol) VALUES  (006,TO_DATE('2016-4-11','yyyy-mm-dd'),5,200,'威猛总代理','阿朱',5000);


问题一
查看商品名称、类型和价格;

SELECT p.name,p.price,t.name
FROM p_product p, t_type t 
WHERE  t.id=p.t_id;

问题二、查询由业务员王语嫣签订的订单,显示订单的编号,订单价格,订单中商品名称,商品数量。

SELECT o.p_id, p.price,p.name,o.p_num
FROM p_product p ,o_orders o
WHERE o.p_id=p.id
AND o.o_oper='王语嫣';

问题三、查询订单总额在1000元以上的所有订单,显示订单编号,订单商品名称,最后根据价钱排序。
SELECT o.id,p.name,o.tatol
 FROM p_product p,o_orders o
WHERE p.id=o.p_id AND tatol > 1000
ORDER BY tatol ;

问题四、找出订单中金额最高的订单,显示此订单当中的商品名称,单价,订单总额。 

SELECT p.name,p.price,o.tatol
   FROM o_orders o,p_product p 
Where  o.tatol=
(SELECT MAX(o.tatol)
       FROM p_product p,o_orders o
WHERE p.id=o.p_id) and p.id=o.p_id;

问题五、查询类型是食品类的所有订单信息,显示订单编号,订单成交的时间。
select id,dealtime FROM o_orders WHERE p_id IN
(select id From p_product where t_id=

(SELECT id FROM t_type WHERE name='食品类'));

 

查询张三的所有订单,但是订单的编号,订单成交的时间,显示订单中商品的名称。 

select o.id,o.dealtime,o_oper,p.name , p.price
from p_product p,o_orders o
where  o_oper='张三' AND o.P_id=p.id;

未完待续,新手求指点,题是网上找的,有空再接着写。

  • blogger

版权所有:oldboy ---- 《Oracle练习之数据表的添加、增加主键及外键相关查询工作
本文地址:http://www.bokeren.cc/post-124.html
除非注明,文章均为 《悠然生活的平淡博客-博客人linux运维之家》 原创转载请注明本文地址,谢谢。


相关推荐

你肿么看?

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。