恒生电子实施技术笔试-2013
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数据库方面
1、-- Create table 作者信息表create table AUTHORS
(
AU_ID NUMBER,
AU_NAME VARCHAR2(64),
PHONE VARCHAR2(64),
AGE NUMBER,
ADDRESS VARCHAR2(64),
CITY VARCHAR2(64),
STATE VARCHAR2(64),
ZIP VARCHAR2(64)
)
tablespace USERS
pctfree10
initrans1
maxtrans255
storage
(
initial64
next1
minextents1
maxextents unlimited
);
2、-- Create table 书籍库存表create table BOOKS
(
BOOK_ID NUMBER,
BOOK_NAME VARCHAR2(254), AU_ID NUMBER,
TYPE VARCHAR2(64),
PRICE NUMBER,
QTY NUMBER
)
tablespace USERS
pctfree10
initrans1
maxtrans255
storage
(
initial64
next1
minextents1
maxextents unlimited
);
问题1显示数据编号、书籍名称、作者编号、作者姓名、作者电话、年龄信息答:select b.book_id,b.book_name,a.au_id,a.phone,a.age
from authors a,books b
where b.au_id=a.au_id(+)
注释:书籍库存表的作者可能在作者信息表里没有采用左连接
问题2 汇总省份为浙江省的每个作者的所有书籍的库存量;(显示作者编号、库存总量字段)答:select t.au_id,sum(qty)
from books t
group by au_id
having au_id in (select au_id from authors);
注释:如果要筛选作者信息表作者的库存总量,则添加having子句
问题3 修改数据库存表符合下列条件的书籍的价格为原来的0.8倍:作者姓名为:“鲁迅”;
答:update books set price=0.8*price
where au_id =(select au_id from authors where au_name='鲁迅');
注释:如果作者信息表作者姓名有重复,则
where au_id in(select au_id from authors where au_name='鲁迅'); 问题 4 删除作者信息表中符合下列条件的作者信息:其编写的书籍中,书籍名称包含字符‘oracle’且库存量小于100本的书籍作者;
答:delete from authors
where au_id in(
select au_id
from books
where book_name like '%oracle%' and qty<100
);
问题5 统计书籍库存表中作者个数,且这些作者的年龄大于30岁;
答:select count(*)
from books
where au_id in (select au_id from authors where age >30);
问题6 用一个语句完成下述任务:根据库存表书籍编号为N的书籍库存信息,在书籍库存表中增加书籍库存信息,新增的书籍编号比原来的书籍号大10000,库存数量为0;
答:insert into books(book_id,book_name,au_id,type,price,qty) select book_id+100,book_name,au_id,type,price,0from books;
问题7 汇总书籍库存表中年龄大于30岁或小于18岁每个作者的库存总量(显示作者的编号、年龄、库存总量三个字段);
答:select b.au_id,a.age,sum(qty)
from books b, authors a
where a.au_id=b.au_id
group by b.au_id,a.age having age>30 or age<18
问题8 列出符合下列条件的作者姓名:这些作者既出过书籍名为"ABC" and "UFO"的书;
答:select au_name from authors
where au_id in (select distinct au_id from books where
book_name='ABC' and book_name='UFO')
问题9 列出符合下列条件的作者姓名:在书籍库存表中,这些作者出过的书籍类别“文学”库存数量大于自己出过的书籍类别为“历史”的的库存数量,大于自己;
答:create tables wbook as select a.au_name ,b.au_id ,sum(qty) from authors a, books b
where a.au_id=b.au_id
group by au_name,au_id,type
having type='文学'
alter table wbooks
add column_name lau_name vchar32(64)
add column_name lqty nuber;
create tables lbook as select a.au_name ,b.au_id ,sum(qty)
from authors a, books b
where a.au_id=b.au_id
group by au_name,au_id,type
having type='文学'
update wbook lqty=(select qty from lbook where wbook.au_id =lbook_id(+))
select a.au_name from authors a where au_id in (select au_id from wbook where qty>lqty)