
create database 学院物资管理系统
on
(name = Manager_dat,
filename = 'G:\SQL Data\e\Manager.mdf',
size = 5,
maxsize= 10,
filegrowth = 2)
/***************************建立员工表并且进行完整性约束***************************/
create table 员工表
(
员工号 char(10) primary key,
员工姓名 char(40) not null,
员工年龄 smallint check(员工年龄<70 and 员工年龄>15),
性别 char(2)check (性别 in ('男','女')) ,
家庭住址 char(40),
电话 char(12) check(isnumeric(电话)=1)
)
/*修改员工表的部分属性的定义*/
alter table 员工表 alter column 员工姓名 char(10)
alter table 员工表 alter column 家庭住址 char(30)
/*运用语句插入员工信息*/
insert 员工表 values ('06110001','张良','32','男','八一大道887号','3928101')
insert 员工表 values ('06110004','花黄','23','男','八一大道7号','3928434')
insert 员工表 values ('06110003','刘婷','22','女','双港大道12号','3928666')
insert 员工表 values ('06110005','王芳','36','女','莲花大道65号','3928766')
insert 员工表 values ('06110006','于民','51','男','中三大道3号','3928764')
insert 员工表 values ('06110002','古起','45','男','世纪花园9090号','3928234')
insert 员工表 values ('06110007','范瑛','34','女','世界花园887号','3928767')
insert 员工表 values ('06110008','吴泽','26','男','八一大道433号','3928145')
insert 员工表 values ('06110009','徐能','37','男','莲花大道87号','3928187')
/*通过员工编号建立升序索引*/
create index sup_idx1 on 员工表(员工号)
/***********************************建立供应商情况表***********************************/
create table 供应商情况表
(
供应商号 char(6) primary key ,
供应商名 varchar(40) not null,
供应商地址 varchar(40),
供应商电话 char(12) check(isnumeric(供应商电话)=1)
)
/*输入具体的供应商信息*/
insert 供应商情况表 values ('A0001','奥博文具有限公司','北京市海淀区经济开发区119号','212919899')
insert 供应商情况表 values ('A0004','爱都文具有限公司','上海市浦东区经济开发区23号','543534939')
insert 供应商情况表 values ('A0006','京二胡用品有限公司','北京市海淀区经济开发区65号','22322293')
insert 供应商情况表 values ('A0002','新势力体育用品有限公司','武汉市武昌区经济开发区80号','271719899')
insert 供应商情况表 values ('A0007','彪马有限公司','武汉市汉口区经济开发区11号','2125433344')
insert 供应商情况表 values ('A0008','耐克体育用品有限公司','北京市东城区经济开发区41号','21324664')
insert 供应商情况表 values ('A0009','李宁体育用品有限公司','南京市惶惶区经济开发区675号','21322221')
insert 供应商情况表 values ('A0010','每克体育用品有限公司','江苏市经济开发区2343号','21324545')
insert 供应商情况表 values ('A0011','安踏体育用品有限公司','杭州市经济开发区41号','21329645')
insert 供应商情况表 values ('A0012','卡帕体育用品有限公司','香港经济开发区43号','21322131')
insert 供应商情况表 values ('A0013','阿迪达斯体育用品有限公司','澳门市东城区经济开发区54号','21324657')
insert 供应商情况表 values ('A0014','匡威体育用品有限公司','台北市东城区经济开发区12号','21324345')
/*通过供应商号建立升序索引*/
create index sup_idx2 on 供应商情况表(供应商号)
/***************************************建立采购单表***************************************/
create table 采购单
(
采购单号 char(6) primary key check(ASCII(left(采购单号,1))>=65 and ASCII(left(采购单号,2))>=65),
员工号 char(10) foreign key references 员工表,
供应商号 char(6) foreign key references 供应商情况表,
采购日期 datetime
)
/*修改采购日期的定义*/
ALTER TABLE 采购单 alter column 采购日期 smalldatetime
/*输入具体的采购单信息*/
insert 采购单 values ('CG0001','06110001','A0008','2007-7-23')
insert 采购单 values ('CG0002','06110009','A0004','2006-4-3')
insert 采购单 values ('CG0003','06110009','A0006','2007-8-6')
insert 采购单 values ('CG0004','06110007','A0001','2008-4-3')
insert 采购单 values ('CG0005','06110006','A0002','2006-9-2')
insert 采购单 values ('CG0006','06110003','A0002','2008-10-8')
insert 采购单 values ('CG0007','06110005','A0001','2006-6-7')
insert 采购单 values ('CG0008','06110008','A0004','2007-5-5')
insert 采购单 values ('CG0009','06110002','A0006','2008-4-13')
insert 采购单 values ('CG0010','06110003','A0007','2006-4-26')
insert 采购单 values ('CG0011','06110001','A0002','2007-1-27')
insert 采购单 values ('CG0012','06110002','A0003','2006-7-7')
insert 采购单 values ('CG0015','06110008','A0006','2007-4-5')
insert 采购单 values ('CG0014','06110002','A0002','2008-11-13')
insert 采购单 values ('CG0013','06110003','A0006','2006-10-6')
insert 采购单 values ('CG0017','06110001','A0005','2007-3-7')
/*按员工号建立升序索引*/
create index sup_idx3 on 采购单(员工号)
/**************************************建立采购明细表************************************/
create table 采购明细表
(
序号 char(8) primary key,
采购单号 char(6) foreign key references 采购单,
物品编号 char(8) foreign key references 物资情况明细表,
数量 smallint check(数量>0)
)
/*输入具体的采购单信息*/
insert 采购明细表 values('20001','CG0001','50001','20')
insert 采购明细表 values('20002','CG0003','50003','10')
insert 采购明细表 values('20003','CG0002','50005','20')
insert 采购明细表 values('20004','CG0005','50006','20')
insert 采购明细表 values('20005','CG0006','50001','20')
insert 采购明细表 values('20006','CG0008','50007','30')
insert 采购明细表 values('20007','CG0009','50004','20')
insert 采购明细表 values('20008','CG0002','50001','40')
insert 采购明细表 values('20009','CG0003','50004','20')
insert 采购明细表 values('20010','CG0005','50001','120')
insert 采购明细表 values('20011','CG0011','50003','20')
/***************************************建立仓库表***************************************/
create table 仓库表
(
仓库号 char(5) primary key,
员工号 char(10) foreign key references 员工表,
仓库地址 varchar(40),
仓库电话 char(12) check(isnumeric(仓库电话)=1)
)
/*输入具体仓库信息*/
insert 仓库表 values('01','06110005','南区教学楼509','89891711')
insert 仓库表 values('02','06110001','北区教学楼411','12122121')
insert 仓库表 values('03','06110006','北区教学楼312','43891711')
insert 仓库表 values('04','06110009','西区教学楼119','43843212')
/*按仓库号建立升序索引*/
create index sup_idx4 on 仓库表(仓库号)
/**************************************建立物资情况明细表***************************************/
create table 物资情况明细表
(
物品编号 char(8) primary key,
物品名称 char(40) ,
仓库号 char(5) foreign key references 仓库表,
物品单价 SmallMoney,
数量 smallint check(数量>0)
)
/*输入具体物资信息*/
insert 物资情况明细表 values('50001','健身足球','03',convert(SmallMoney,89),'20')
insert 物资情况明细表 values('50002','健身篮球','01',convert(SmallMoney,165),'20')
insert 物资情况明细表 values('50005','田径排球','01',convert(SmallMoney,77),'20')
insert 物资情况明细表 values('50003','乒乓球','04',convert(SmallMoney,2),'200')
insert 物资情况明细表 values('50006','长毛毽子','02',convert(SmallMoney,6),'100')
insert 物资情况明细表 values('50008','彩色粉笔','02',convert(SmallMoney,3),'500')
insert 物资情况明细表 values('50009','红色黑板擦','03',convert(SmallMoney,7),'80')
insert 物资情况明细表 values('50004','教师钢笔','04',convert(SmallMoney,10),'250')
insert 物资情况明细表 values('50011','会议纪律本','02',convert(SmallMoney,15),'100')
insert 物资情况明细表 values('50007','便捷座椅','04',convert(SmallMoney,20),'50')
/*分别建立相应的索引:按物品编号、物品单价、数量*/
create index sup_idx5 on 物资情况明细表(物品编号)
create index sup_idx6 on 物资情况明细表(物品单价)
create index sup_idx7 on 物资情况明细表(数量)
/**************************************建立学生情况表***************************************/
create table 学生情况表
(
学生号 char(8) primary key ,
学生姓名 char(20),
性别 char(2) check(性别 in ('男', '女')),
年龄 int check (年龄 >0),
系别名称 char(20) not null check(系别名称 in ('土木工程系','机电工程系','经管系','信息工程系','外法系')),
所属校区 char(10) not null check(所属校区 in ('南昌校区','抚州校区'))
)
/*输入具体学生信息*/
insert into 学生情况表 values('70001','徐又能','女','27','土木工程系','抚州校区')
insert into 学生情况表 values('70003','张好猪','男','17','机电工程系','南昌校区')
insert into 学生情况表 values('70006','吴泽','女','21','经管系','抚州校区')
insert into 学生情况表 values('70002','往惶惶','男','21','外法系','南昌校区')
insert into 学生情况表 values('70004','刘青云','男','21','经管系','抚州校区')
insert into 学生情况表 values('70005','吴铁男','男','23','信息工程系','南昌校区')
insert into 学生情况表 values('70008','郭嘉','女','25','经管系','抚州校区')
insert into 学生情况表 values('70007','杜鹃','女','22','机电工程系','南昌校区')
insert into 学生情况表 values('70009','徐泽','男','22','外法系','抚州校区')
insert into 学生情况表 values('70013','六库一','男','21','信息工程系','南昌校区')
insert into 学生情况表 values('70011','无比','男','19','土木工程系','抚州校区')
insert into 学生情况表 values('70010','金元','女','17','信息工程系','南昌校区')
insert into 学生情况表 values('70012','安红','女','26','经管系','南昌校区')
/*建立索引*/
create index sup_idx8 on 学生情况表(学生号)
create index sup_idx9 on 学生情况表(年龄)
/**************************************建立登记表***************************************/
create table 登记表
(
登记序号 char(10) primary key ,
学生号 char(8) foreign key references 学生情况表 ,
物品编号 char(8) foreign key references 物资情况明细表,
数量 smallint check(数量>0),
更新时间 smalldatetime
)
/*输入详细信息*/
insert 登记表 values('200801','70003','50003','4','2008-5-3')
insert 登记表 values('200802','70001','50001','2','2008-2-3')
insert 登记表 values('200803','70002','50002','3','2008-5-4')
insert 登记表 values('200804','70006','50005','5','2008-5-6')
insert 登记表 values('200805','70004','50003','15','2008-2-5')
insert 登记表 values('200806','70007','50008','11','2008-3-4')
insert 登记表 values('200807','70008','50011','6','2008-5-26')
insert 登记表 values('200808','70007','50008','29','2008-3-14')
insert 登记表 values('200809','70009','50007','8','2008-5-11')
insert 登记表 values('200810','70005','50001','6','2008-5-13')
insert 登记表 values('200811','70012','50008','7','2008-5-23')
/*建立索引*/
create index sup_idx10 on 登记表(学生号)
create index sup_idx11 on 登记表(数量)
create index sup_idx12 on 登记表(登记序号)
/**************************************建立视图***************************************/
/*建立员工表v_yg视图**/
create view v_yg as select * from 员工表
/*建立供应商情况表v_gys视图**/
create view v_gys as select * from 供应商情况表
/*建立采购单v_cg视图**/
create view v_cg as select * from 采购单
/*建立采购明细表v_cgmx试图*/
create view v_cgmx as select * from 采购明细表
/*建立仓库表v_ck视图**/
create view v_ck as select * from 仓库表
/*建立物资情况明细表v_wz视图**/
create view v_wz as select * from 物资情况明细表
/*建立登记表v_dj视图**/
create view v_dj as select * from 登记表
/*建立学生情况表v_xs视图**/
create view v_xs as select * from 学生情况表
/*****建立采购情况视图表******/
create view v_cgqk as
select 采购单.采购单号,采购明细表.物品编号,数量,员工表.员工号,员工姓名,员工年龄,电话,供应商名,供应商地址,供应商电话,采购日期
from 员工表,供应商情况表,采购单,采购明细表
where 员工表.员工号= 采购单.员工号 and
供应商情况表.供应商号 = 采购单.供应商号 and
采购明细表.采购单号 = 采购单.采购单号
/*****建立物资存放情况视图****/
create view v_kcqk as
select 物品编号,物品名称,物品单价,数量,仓库表.仓库号,仓库地址,仓库电话,员工表.员工号,员工姓名,员工年龄,电话
from 物资情况明细表,仓库表,员工表
where 物资情况明细表.仓库号 = 仓库表.仓库号 and
员工表.员工号 = 仓库表.员工号
/*****建立学生借物资情况视图表******/
create view v_xsjwz as
select 登记序号,学生情况表.学生号,学生姓名,系别名称,物资情况明细表.物品编号,物品名称,物品单价,登记表.数量,更新时间
from 物资情况明细表,登记表,学生情况表
where 物资情况明细表.物品编号 = 登记表.物品编号 and
学生情况表.学生号 = 登记表.学生号
/************************************建立存储过程******************************/
/*通过学生号查询学生情况表*/
create proc xs_getmp 1
(@num char(8)=NULL)
as
if @num is NULL
begin
print ' 必须提供一个学生号! '
return 13
end
if not exists(select * from v_xs where 学生号=@num)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from 学生情况表 where 学生号=@num
execute xs_getmp 1 '70004'
/*通过物品名称查询物资情况明细表的存储过程*/
create proc wz_getmp 1
(@name char(40)=NULL)
as
if @name is NULL
begin
print ' 你必须提供一个物品名称来进行查询! '
return 13
end
if not exists(select * from 物资情况明细表 where 物品名称=@name)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from 物资情况明细表 where 物品名称=@name
execute wz_getmp 1 '乒乓球'
/*通过员工号来查询职工经手的采购单信息的存储过程*/
create proc cgqk_getmp 1
(@yg_num char(10) =NULL)
as
if @yg_num is NULL
begin
print ' 你必须提供一个员工号来进行查询! '
return 13
end
if not exists(select * from v_cgqk where 员工号=@yg_num)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from v_cgqk where 员工号=@yg_num
execute cgqk_getmp1 '06110009'
/*通过物品编号来查询物品信息以及所在仓库信息的存储过程*/
create proc kcqk_getmp 1
(@wp_num char(10) =NULL)
as
if @wp_num is NULL
begin
print ' 你必须提供一个物品编号来进行查询! '
return 13
end
if not exists(select * from v_kcqk where 物品编号=@wp_num)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from v_kcqk where 物品编号=@wp_num
execute kcqk_getmp1 '50004'
/*通过物品编号来查询该物品明细信息*/
create proc kcqk_getinf1
(@wp_num char(10) =NULL)
as
if @wp_num is NULL
begin
print ' 你必须提供一个物品编号来进行查询! '
return 13
end
if not exists(select * from 物资情况明细表 where 物品编号=@wp_num)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from 物资情况明细表 where 物品编号=@wp_num
exec kcqk_getinf1 '50002'
/*通过学生号来查询登记记录的信息的存储过程*/
create proc xsjwz_getmp 1
(@xs_num char(10) =NULL)
as
if @xs_num is NULL
begin
print ' 你必须提供一个学生号来进行查询! '
return 13
end
if not exists(select * from v_xsjwz where 学生号=@xs_num)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from v_xsjwz where 学生号=@xs_num
exec xsjwz_getmp1 '70007'
/*通过输入学生的姓名查询某学生的借进的情况*/
create proc xsjwz_getmp 2
(@xs_name char(20) =NULL)
as
if @xs_name is NULL
begin
print ' 你必须提供一个学生姓名来进行查询! '
return 13
end
if not exists(select * from v_xsjwz where 学生姓名=@xs_name)
begin
print ' 没用满足条件的记录! '
return 0
end
select * from v_xsjwz where 学生姓名=@xs_name
exec xsjwz_getmp2 '安红'
/*输入物品的数量来查询大于此数量的借出情况*/
create proc xsjwz_getimf 1
(@wp_count smallint)
as
select * from v_xsjwz where 数量>=@wp_count
exec xsjwz_getimf1 10
/************************************建立触发器******************************/
/*实现仓库更新、插入的数据完整性约束*/
create trigger ck_gl
on 仓库表
for insert,update
as
declare @yg_num char(10),@ck_num char(5)
select @yg_num = 员工号,@ck_num = 仓库号 from inserted
if exists(select * from 仓库表 where 员工号= @yg_num and 仓库号<>@ck_num)
begin
raiserror('该职工已经在这个仓库工作',16,1)
rollback transaction
end
insert 仓库表 values('05','06110007','北区教学楼211','9812911189')
insert 仓库表 values('06','06110008','北区教学楼121','9231311121')
/*实现新增物资采购单明细表登记*/
create trigger wz_insert
on 采购明细表 for insert
as
declare @wp_num char(8)
declare @count int
declare @TotalCount int,@NewTotalCount int
select @TotalCount =数量 from 物资情况明细表 where 物品编号=(select 物品编号 from inserted)
select @wp_num=物品编号 from 物资情况明细表 where 物品编号=(select 物品编号 from inserted)
if @wp_num =''
begin
print '非法物资编号!'
rollback transaction
end
else
select @count=数量 from inserted
update 物资情况明细表 set 数量=@TotalCount+@count where 物品编号=(select 物品编号 from inserted)
insert 采购明细表 values('20019','CG0004','50004','43')
/*实现新增学生借出登记 *** 作*/
create trigger dj_insert
on 登记表
for insert
as
declare @xs_num char(8)
declare @count int
declare @TotalCount int,@NewTotalCount int
--select @shuliang=数量 from 登记表
select @TotalCount =数量 from 物资情况明细表 where 物品编号=(select 物品编号 from inserted)
select @xs_num=学生号 from 学生情况表 where 学生号=(select 学生号 from inserted)
if @xs_num=''
begin
print '非法学生号!'
rollback transaction
end
if not exists (select * from 物资情况明细表 where 物品编号=(select 物品编号 from inserted))
begin
raiserror('非法物品编号!',1,1)
rollback transaction
end
else
select @count=数量 from inserted
update 物资情况明细表 set 数量=@TotalCount-@count where 物品编号=(select 物品编号 from inserted)
select @NewTotalCount =数量 from 物资情况明细表 where 物品编号=(select 物品编号 from inserted)
if @NewTotalCount<=0
begin
print '该物品已经用完'
rollback transaction
end
insert into 登记表 values('200820','32332322','50004','2','2008-10-2')
我自己写的,希望对你有帮助
所谓物资管理,是指企业在生产过程中,对本企业所需物资的采购、使用、储备等行为进行计划、组织和控制。物资管理的目的是,通过对物资进行有效管理,以降低企业生产成本,加速资金周转,进而促进企业盈利,提升企业的市场竞争能力。企业的物资管理,包括物资计划制订、物资采购、物资使用和物资储备等几个重要环节,这些环节环环相扣、相互影响,任何一个环节出现问题,都将对企业的物资供应链造成不良影响。8Manage物资采购管理系统提供物资入库、出库、物资统计等功能,实现对采购发票、运费发票的录入、结算、付款的全过程流程化管理。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)