oracle书店图书销售管理数据库Word下载.docx
- 文档编号:7798998
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:27
- 大小:71.43KB
oracle书店图书销售管理数据库Word下载.docx
《oracle书店图书销售管理数据库Word下载.docx》由会员分享,可在线阅读,更多相关《oracle书店图书销售管理数据库Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
bookname
20
书名,唯一
species
5
图书分类,不允许为空
bookprice
number
(7,2)
图书单价,不允许为空
publish_house
出版社,不允许为空
publishdate
date
出版日期,不允许为空
author
10
作者,不允许为空
4
藏书量,大于0
建表语句:
createtablebook
(booknovarchar2(6)primarykey,
booknamevarchar2(20)unique,
speciesvarchar2(5)notnull,
bookpricenumber(7,2)notnull,
publish_housevarchar2(20),
publishdatedate,
authorvarchar2(10)notnull,
numbersnumbercheck(numbers>
=0));
修改表结构:
altertablebookmodifyspeciesvarchar2(15);
altertablebookmodifybooknamevarchar2(20);
altertablebookmodifynumbersnumber(4);
2.进货表(stock)
进货表(stock)表2
iono
进货编号,定义为主键
图书编号,定义为外键
numbers
进货量,大于等于0
in_price
进价,不能为空
in_time
进货时间,不能为空
createtablestock
(ionovarchar2(6)primarykey,
booknovarchar2(6),
=0),
in_pricenumbernotnull,
in_timedatenotnull,
constraintfk_stockforeignkey(bookno)referencesbook(bookno));
3.出货表(sold)
出货表(sold)表3
oono
出货编号,定义为主键
出货量,大于等于0
out_price
售卖价格,不能为空
out_time
售卖时间,不能为空
createtablesold
(oonovarchar2(6)primarykey,
out_pricenumbernotnull,
out_timedatenotnull,
constraintfk_soldforeignkey(bookno)referencesbook(bookno));
4.用户表(users)
用户表(users)表4
username
用户名,定义为主键
password
15
密码,不允许为空
sal
月薪,可以为空
comm
奖金,可以为空
remark
用户类型,允许为空
createtableusers
(usernamevarchar2(10)primarykey,
passwordvarchar2(15)notnull,
salnumber,
commnumber,
remarkvarchar2(15));
三、数据初始化
1.藏书信息表插入数据
--insert语句插入
insertintobookvalues('
001010'
'
《细说PHP》'
IT'
109.00,'
电子工业出版社'
to_date('
2013-04'
yyyy-mm'
),'
高洛峰'
50);
--替代变量插入--语句保存到d:
\oracle\replace_sql\insert_book.sql
acceptv_booknoprompt'
编号(六位数字):
'
acceptv_booknameprompt'
书名《书名》:
acceptv_speciesprompt'
种类:
acceptv_bookpriceprompt'
价格:
acceptv_phprompt'
出版社:
acceptv_ptprompt'
出版日期(yyyy-mm):
acceptv_authorprompt'
作者:
acceptv_numbersprompt'
库存量(>
=0):
insertintoboss.bookvalues
('
&
v_bookno'
v_bookname'
v_species'
&
v_bookprice,'
v_ph'
v_pt'
v_author'
v_numbers);
执行:
startd:
2.进货表插入数据
insertintostockvalues
000001'
001001'
3,15.00,to_date('
2014-11-07'
yyyy-mm-dd'
));
\oracle\replace_sql\insert_stock.sql
acceptv_ionoprompt'
进货编号(六位数字):
图书编号(六位数字):
进货数量:
acceptv_in_priceprompt'
进货价格:
acceptv_in_timeprompt'
进货日期(yyyy-mm-dd):
v_iono'
v_numbers,&
v_in_price,to_date('
v_in_time'
3.出货表插入数据
insertintosoldvalues
001002'
1,25.80,to_date('
\oracle\replace_sql\insert_sold.sql
acceptv_oonoprompt'
出货编号(六位数字):
售卖数量:
售卖价格:
售卖日期(yyyy-mm-dd):
insertintosoldvalues('
v_oono'
v_out_price,to_date('
v_out_time'
4.用户表插入数据
insertintousersvalues('
boss'
admin'
);
\oracle\replace_sql\insert_users.sql
acceptv_nameprompt'
用户名:
acceptv_pwordprompt'
密码:
acceptv_salprompt'
月薪:
acceptv_commprompt'
奖金:
acceptv_remarkprompt'
备注:
insertintousersvalues
v_name'
v_pword'
v_sal,&
v_comm,'
v_remark'
四、索引
1.由于对book表的图书的分类查找会比较频繁,所以对book表的species列建索引
createindexbook_species_idxonbook(species);
2.由于对stock表的进货量,进价,进货时间的查询会比较频繁,所以对stock表的
numbers,in_price,in_time列建索引
createindexstock_num_ip_idxonstock(numbers,in_price);
createindexstock_num_it_idxonstock(numbers,in_time);
3.由于对sold表的进货量,进价,进货时间的查询会比较频繁,所以对sold表的
numbers,out_price,out_time列建索引
createindexsold_num_op_idxonsold(numbers,out_price);
createindexsold_num_ot_idxonsold(numbers,out_time);
五、视图
视图共三个,分别为:
进货信息视图(stock_infor)、出货信息视图(sold_infor)、盈利视图(profit)。
进货信息视图:
由藏书信息表和进货表整合。
包括进货编号,图书编号,书名,类别,进价,数量,总进价。
出货信息视图:
由藏书信息表和出货表整合。
包括出货编号,图书编号,书名,类别,卖价,售卖数量,总价,售卖日期。
盈利视图:
由进货表和出货表整合。
包括图书编号,进价,卖价,数量,盈利,售卖日期。
1.进货信息视图(stock_infor)
建视图语句:
createviewstock_infor
as
selects.iono"
进货编号"
b.bookno"
图书编号"
b.bookname"
书名"
b.species"
类别"
s.in_price"
进价"
s.numbers"
数量"
s.in_price*s.numbers"
总价"
s.in_time"
进货日期"
frombookb,stocks
whereb.bookno=s.bookno;
2.出货信息视图(sold_infor)
createviewsold_infor
as
selects.oono"
出货编号"
书名"
s.out_price"
卖价"
售卖数量"
s.out_price*s.numbers"
s.out_time"
售卖日期"
frombookb,solds
whereb.bookno=s.bookno;
3.盈利视图(profit)
createviewprofit
as
selectso.bookno"
st.in_price"
so.out_price"
so.numbers"
数量"
((so.out_price-st.in_price)*so.numbers)"
盈利"
so.out_time"
from(selectdistinctbookno,in_pricefromstock)st,soldso
wherest.bookno=so.bookno
orderbyso.out_time,so.bookno;
六、过程
1.输入(图书编号,增/减,数量)实现增减库存----条件选择
createorreplaceprocedurexgkc(bnovarchar2,signchar,numnumber)is
v_bnoboss.book.bookno%type;
begin
selectbooknointov_bnofromboss.bookwherebookno=bno;
ifsign='
+'
then
updateboss.booksetnumbers=numbers+numwherebookno=v_bno;
dbms_output.put_line(v_bno||'
号图书成功增加库存'
||num);
elsifsign='
-'
updateboss.booksetnumbers=numbers-numwherebookno=v_bno;
号图书成功减少库存'
else
dbms_output.put_line('
第二个参数只能为+/-'
endif;
exception
whenno_data_foundthen
库存表中不存在该图书,请修改图书编号或增加该图书信息到库存中'
end;
/
execxgkc('
1);
execxgkc('
2.输入(图书类型),根据参数传递来查询图书编号,图书名称,价格----游标
createorreplaceprocedurelxcx(c1speciesvarchar2)is
typebook_record_typeisrecord(
v_noboss.book.bookno%type,
v_nameboss.book.bookname%type,
v_priceboss.book.bookprice%type);
book_no_name_pricebook_record_type;
cursorc1(c1speciesvarchar2)returnbook_no_name_priceis
selectbookno,bookname,bookpricefromboss.bookwherespecies=c1species;
openc1(c1species);
loop
fetchc1intobook_no_name_price;
ifc1%foundthen
类型为'
||c1species||'
,编号为'
||book_no_name_price.v_no||'
,名称为'
||book_no_name_price.v_name||'
,价格为'
||book_no_name_price.v_price);
查询结束!
exit;
endloop;
closec1;
execlxcx('
3.执行过程,输出提示库存少于5的图书信息方便进货。
createorreplaceprocedurejhtxis
v_bnoboss.book.bookno%type,
v_bnameboss.book.bookname%type,
v_numboss.book.numbers%type,
v_sumboss.book.numbers%type);
v_no_name_num_sumbook_record_type;
cursorc1returnv_no_name_num_sumis
selectb.bookno,b.bookname,b.numbers,s.sumnumberfromboss.bookb,(select图书编号,sum(售卖数量)sumnumberfromboss.sold_inforgroupby图书编号)swhereb.bookno=图书编号andb.numbers<
=5;
openc1;
fetchc1intov_no_name_num_sum;
图书编号'
||v_no_name_num_sum.v_bno||'
图书名称'
||v_no_name_num_sum.v_bname||'
现库存量--'
||v_no_name_num_sum.v_num||
--已售卖--'
||v_no_name_num_sum.v_sum);
execjhtx;
七、函数
输入(员工姓名),求出员工年薪
createorreplacefunctiony_sal(namevarchar2)returnnumberisssalnumber;
selectsal*12+nvl(comm,0)*12intossalfromboss.users
whereusername=name;
returnssal;
调用:
varyearsalnumber
cally_sal('
staff2'
)into:
yearsal;
printyearsal
八、包
创建一个包实现以下功能:
1.输入(图书编号,增/减,数量)实现增减库存
2.查询某类型所有图书的图书编号,图书名称和价格
3.执行过程,输出提示库存少于5的图书信息方便进货。
4.输入(员工姓名),求出员工年薪
--声明包
createorreplacepackagepkis
procedurexgkc(bnovarchar2,signchar,numnumber);
procedurelxcx(c1speciesvarchar2);
procedurejhtx;
functiony_sal(namevarchar2)returnnumber;
--创建包体
createorreplacepackagebodypkis
procedurexgkc(bnovarchar2,signchar,numnumber)is
procedurelxcx(c1speciesvarchar2)is
||book_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 书店 图书 销售 管理 数据库
![提示](https://static.bingdoc.com/images/bang_tan.gif)