`
chrissie
  • 浏览: 20113 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle面试复习(二)

阅读更多

 

现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成:

商品product(商品号productid,商品名productname,单价unitprice,商品类别category,供应商provider,上架日期startdate);

顾客customer(顾客号customerid,姓名name,住址location);

购买purchase(顾客号customerid,商品号productid,购买数量quantity);

 

试用SQL语言完成下列功能:

1. 建表:在定义中要求声明:

(1) 每个表的主外码;

(2) 顾客的姓名和商品名不能为空值;

(3) 单价必须大于0,购买数量必须再0到20之间;

 

 

 

create table rxy_product (
  product_id    varchar2(10) not null primary key,
  product_name  varchar2(30) not null,
  unitprice     number(8,2) default 0.00,
  category      varchar2(20),
  provider      varchar2(30),
  startdate     date,
  
  constraint RXY_UNITPRICE check ( unitprice>0 )
);
  
create table rxy_customer (
  customer_id   varchar2(10) not null primary key,
  customer_name varchar2(12) not null,
  location      varchar2(50)
);
  
create table rxy_purchase (
  customer_id  varchar2(10) not null,
  product_id   varchar2(10) not null,
  quantity     number(4,0) default 0,
   
  constraint FK_PRODUCT foreign key(product_id) references rxy_product,
  constraint FK_CUSTOMER foreign key(customer_id) references rxy_customer,
  constraint RXY_QUANTITY check ( quantity>=0 and quantity<=20 )
);
 
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M01','佳洁士',8.00,'牙膏','宝洁' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M02','高露洁',6.50,'牙膏','高露洁' ); 
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M03','洁诺',5.00,'牙膏','联合利华' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M04','舒肤佳',3.00,'香皂','宝洁' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M05','夏士莲',5.00,'香皂','联合利华' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M06','雕牌',2.50,'洗衣粉','纳爱斯' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M07','中华',3.50,'牙膏','联合利华' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M08','汰渍',3.00,'洗衣粉','宝洁' );
insert into rxy_product (product_id,product_name,unitprice,category,provider) values( 'M09','碧浪',4.00,'洗衣粉','宝洁' );

insert into rxy_customer values( 'C01','Dennis','海淀' );
insert into rxy_customer values( 'C02','John','朝阳' );
insert into rxy_customer values( 'C03','Tom','东城' );
insert into rxy_customer values( 'C04','Jenny','东城' );
insert into rxy_customer values( 'C05','Rick','西城' );

insert into rxy_purchase values( 'C01','M01',3 );
insert into rxy_purchase values( 'C01','M05',2 );
insert into rxy_purchase values( 'C01','M08',2 );
insert into rxy_purchase values( 'C02','M02',5 );
insert into rxy_purchase values( 'C02','M06',4 );
insert into rxy_purchase values( 'C03','M01',1 );
insert into rxy_purchase values( 'C03','M05',1 );
insert into rxy_purchase values( 'C03','M06',3 );
insert into rxy_purchase values( 'C03','M08',1 );
insert into rxy_purchase values( 'C04','M03',7 );
insert into rxy_purchase values( 'C04','M04',3 );
insert into rxy_purchase values( 'C05','M06',2 );
insert into rxy_purchase values( 'C05','M07',8 );
/

--(1)求购买了供应商"宝洁"产品的所有顾客;
select customer_name 
     from rxy_product p,rxy_customer c,rxy_purchase pc
    where p.product_id=pc.product_id 
      and pc.customer_id=c.customer_id 
      and p.provider='宝洁';
      
--(2)求购买的商品包含了顾客"Dennis"所购买的所有商品的顾客(姓名);
select customer_name from rxy_customer where customer_id in (
    select customer_id from rxy_purchase 
    where product_id in 
        (select pc.product_id from rxy_customer c, rxy_purchase pc where c.customer_id = pc.customer_id and c.customer_name='Dennis')
    group by customer_id 
    having count(product_id)>=
        (select count(pc.product_id) from rxy_customer c, rxy_purchase pc where c.customer_id = pc.customer_id and c.customer_name='Dennis')
);

--(3)求牙膏卖出数量最多的供应商。
select rownum, a.* from (
select p.provider, sum(pc.quantity) s from rxy_product p, rxy_purchase pc 
where pc.product_id = p.product_id and p.category='牙膏' 
group by p.provider
order by s desc) a where rownum=1;

select provider , NUM 
from ( select distinct pd.provider , 
           (select sum(SUM_NUM) from (
		 select p.provider pp, (select sum(quantity) from rxy_purchase pc
						   where pc.product_id=p.product_id
                                                  ) "SUM_NUM"
                 from rxy_product p
                 where category='牙膏'
                )
            where pp=pd.provider
            ) "NUM"
       from rxy_product pd
       where  category='牙膏'
       order by NUM desc
 ) 
where rownum=1;

--4 将所有的牙膏商品单价增加10%。
update rxy_product set unitprice=unitprice*1.1 where category='牙膏';
 
--5 删除从未被购买的商品记录。
select * from rxy_product where product_id not in(select distinct(product_id) from rxy_purchase);

select * from rxy_product p where not exists(select 1 from rxy_purchase pc where p.product_id = pc.product_id);

select * from rxy_product
where product_id in (
  select p.product_id from rxy_product p
    minus
  select pc.product_id  from  rxy_purchase pc
);
 

 

分享到:
评论

相关推荐

    Oracle面试复习(一)

    这篇“Oracle面试复习(一)”的博文可能涵盖了Oracle数据库的基础知识,以及如何在面试中有效地展示这些技能。以下是一些可能涉及的关键知识点: 1. **Oracle数据库简介**:Oracle是全球领先的数据库管理系统之一...

    面试复习题--oracle.pdf

    面试中,对于Oracle的掌握程度往往是衡量一个候选人技术水平的关键因素。以下是对Oracle数据库一些核心知识点的详细阐述: 1. **数据类型**:Oracle提供了多种数据类型来适应不同类型的存储需求。字符类型包括Char...

    Oracle DBA 面试题

    在准备面试过程中,除了复习理论知识之外,解决实际问题的能力也同样重要,因为许多问题可能会涉及到实际案例分析。在面试前,应聘者应仔细阅读并理解给出的面试问题,对照自己的实际经验和技能,准备出有深度和广度...

    最新oracle面试题

    Oracle是世界上最广泛使用的数据库管理系统之一,它在企业级应用中占据着重要的地位。这份"最新Oracle面试题"文档...通过详读“最新Oracle面试题”文档,你可以全面复习并提升自己的Oracle技能,为面试做好充分准备。

    ORACLE 面试题集锦

    【Oracle面试知识点详解】 在ORACLE面试中,面试官通常会...在准备ORACLE面试时,候选人应全面复习这些知识点,并通过实际操作和模拟题目来加强理解和应用能力。这将有助于在面试中表现出色,增加获得理想职位的机会。

    极详细oracle数据库面试题目汇总

    极详细oracle数据库面试题目汇总,按照这个思路去复习就可以了

    J2EE、java 、jsp、 Oracle数据库等笔试面试复习资料

    在IT行业中,尤其是在Java开发领域,J2EE(Java 2 Platform, Enterprise Edition)、Java、JSP(JavaServer Pages)以及Oracle数据库是四个至关重要的技术领域。这些技术是构建大型企业级应用的基础,也是许多公司在...

    Oracle面试题.doc

    ### Oracle面试题知识点详解 #### 一、填空题知识点解析 **1....以上知识点覆盖了Oracle数据库的基础概念、SQL语言的基本使用以及一些高级特性,对于准备Oracle面试的人来说是非常重要的复习内容。

    部分常见ORACLE面试题以及SQL注意事项

    1. Oracle和SQL面试准备:文档中提到了“部分常见ORACLE面试题以及SQL注意事项”,这暗示文档中包含了针对Oracle数据库和SQL语言的面试准备知识点。由于文件中对创建表和SQL语句有具体的描述,我们可以推断文档可能...

    银行面试准备资源包-Spring+Oracle+XML处理

    这些资料提供了一个快速浏览和复习的关键知识点,对于想要在银行面试中脱颖而出的候选人来说,是宝贵的资源。通过深入学习Spring框架以提升应用程序的灵活性,理解Oracle数据库以保证数据安全,以及熟练掌握XML处理...

    自己整理的oracle和java笔试题

    这些文档集合提供了全面的Oracle数据库和Java编程的面试与笔试准备材料。...通过这些文档,学习者可以系统地复习Oracle和Java的关键知识点,为面试做好充分准备,提高成功通过笔试和面试的可能性。

    整理mysql、oracle数据库相关 笔试面试题,主要为了应对面试过程中遇到的sql题目

    下面我们将深入探讨MySQL和Oracle数据库在面试中可能涉及的SQL题目及相关知识点。 首先,MySQL以其开源、免费、易用的特点深受开发者喜爱。SQL在MySQL中的应用主要包括数据查询、数据更新、数据插入和数据删除,即...

    面试的复习资料

    ### Socket编程 #### 服务器端 在Java中,服务器端通过`ServerSocket`类来创建。服务器端的主要职责是监听指定的端口,接受客户端的连接请求,...这些知识点是Java编程的重要组成部分,在面试准备过程中务必熟练掌握。

    Oracle数据库常用语句实例和经典面试题总结

    Oracle数据库是全球广泛使用的大型关系型...这个资料集合了Oracle数据库的基础知识和面试常考问题,是学习和复习的良好资源。通过深入理解和实践这些语句和概念,可以有效地提升在Oracle数据库管理和开发方面的能力。

    0racle笔记,从第一天开始学到的所有Oracle知识点

    这份"Oracle笔记"涵盖了从基础到高级的所有Oracle知识点,是学习和复习Oracle的理想资料。以下是一些关键的学习要点: 1. **Oracle简介**:Oracle数据库是一种关系型数据库管理系统(RDBMS),由Oracle公司开发,...

    Oracle笔记

    这份笔记包含了丰富的知识点,既适用于初学者进行系统学习,也适合作为专业人士面试前的复习材料。以下将对Oracle的一些关键知识点进行详细解释。 1. **Oracle数据库基础**: - 数据库模型:Oracle基于关系型...

    JAVA面试宝典复习资料

    数据库相关知识也是JAVA面试中不可忽视的部分,可能会涉及到SQL查询、JDBC操作、事务管理等内容,特别是对Oracle、MySQL等常用数据库的理解和应用。 最后,对于互联网应用开发,Spring框架及其全家桶(如Spring ...

    java面试大全。各大公司面试总结。知识点总结,共31个文档

    15. **数据结构与算法**:理解常见数据结构(数组、链表、栈、队列、树、图)及其操作,掌握排序和查找算法(冒泡、选择、插入、快速、归并、二分查找等)。 16. **分布式与微服务**:理解分布式系统的基本概念,如...

    2010校园招聘oracle笔试题

    9. 数据仓库与OLAP:如果面试面向数据分析方向,那么了解Oracle的数据仓库构建和OLAP(在线分析处理)功能就显得尤为重要。 由于提供的压缩包文件名均为JPG格式,推测可能是当年笔试题目的扫描图片。如果能够获取到...

Global site tag (gtag.js) - Google Analytics