Sqlerver数据库课程设计
2017-05-13 16:57
274 查看
--创建数据库 create database JCWZ; go use JCWZ; --创建表 --1.创建物资类型表 create table 物资类型( 物资号 nvarchar(20) primary key, 物资类型 nvarchar(20) not null, 物资名 nvarchar(20) not null ) --drop table matype --2.创建供应商表 create table 供应商( 供应商号 nvarchar(20) primary key, 供应商名 nvarchar(20) not null, 城市 nvarchar(20) not null ) --drop table 入库情况 --3.创建仓库表 create table 仓库( 仓库号 nvarchar(20) not null primary key, 物资号 nvarchar(20) not null, 物资数量 bigint not null, 备注 nvarchar(100) null foreign key(物资号) references 物资类型(物资号) ) --4.创建入库情况表 create table 入库情况( 入库编号 nvarchar(20)not null primary key, 物资号 nvarchar(20) not null, 供应商号 nvarchar(20) not null, 仓库号 nvarchar(20) not null, 物资入库数量 bigint not null, 入库单价 int not null, 入库时间 date not null, 备注 nvarchar(100) null foreign key(物资号) references 物资类型(物资号), foreign key(供应商号) references 供应商(供应商号), foreign key(仓库号) references 仓库(仓库号) ) --5.创建销售表 create table 销售( 销售编号 nvarchar(20)not null primary key, 物资号 nvarchar(20) not null, 仓库号 nvarchar(20) not null, 物资销售数量 bigint not null, 销售单价 int not null, 销售时间 date not null, 备注 nvarchar(100) null foreign key(物资号) references 物资类型(物资号), foreign key(仓库号) references 仓库(仓库号) ) --修改销售表,增加销售额列 alter table 销售 add 销售额 bigint --创建存储过程 --1.物资类型表插入单条数据存储过程 use JCWZ; --物资类型表 create procedure 向物资类型表插入数据 @mno nvarchar(20), @mtype nvarchar(20),@mname nvarchar(20) as insert into 物资类型 values(@mno,@mtype,@mname); exec 向物资类型表插入数据 '10001' ,'结构材料' ,'木材' exec 向物资类型表插入数据 '10002' ,'结构材料' ,'石材' exec 向物资类型表插入数据 '10003' ,'结构材料' ,'竹材' exec 向物资类型表插入数据 '10004' ,'结构材料' ,'水泥' exec 向物资类型表插入数据 '10005' ,'结构材料' ,'混凝土' exec 向物资类型表插入数据 '10006' ,'结构材料' ,'金属' exec 向物资类型表插入数据 '10007' ,'结构材料' ,'砖瓦' exec 向物资类型表插入数据 '10008' ,'结构材料' ,'陶瓷' exec 向物资类型表插入数据 '10009' ,'结构材料' ,'玻璃' exec 向物资类型表插入数据 '10010' ,'结构材料' ,'工程塑料' exec 向物资类型表插入数据 '10011' ,'装饰材料' ,'涂料' exec 向物资类型表插入数据 '10012' ,'装饰材料' ,'油漆' exec 向物资类型表插入数据 '10013' ,'装饰材料' ,'镀层' exec 向物资类型表插入数据 '10014' ,'装饰材料' ,'贴面' exec 向物资类型表插入数据 '10015' ,'装饰材料' ,'各色瓷砖' exec 向物资类型表插入数据 '10016' ,'装饰材料' ,'具有特殊效果的玻璃' exec 向物资类型表插入数据 '10017' ,'专用材料' ,'防水' exec 向物资类型表插入数据 '10018' ,'专用材料' ,'防潮' exec 向物资类型表插入数据 '10019' ,'专用材料' ,'防火' exec 向物资类型表插入数据 '10020' ,'专用材料' ,'阻燃' exec 向物资类型表插入数据 '10021' ,'专用材料' ,'防爆' --物资类型表插入多条数据执行存储过程 declare @n nvarchar(20),@string1 nvarchar(20),@string2 nvarchar(20) declare @m int set @m='10021' while (@m<10100) begin set @m=@m+1 set @n=convert(nvarchar(20),@m) exec 向物资类型表插入数据 @n,'结构材料','竹材' end --2.供应商表插入单条数据存储过程 create procedure 向供应商表插入数据 @suno nvarchar(20), @suname nvarchar(20),@city nvarchar(20) as insert into 供应商 values(@suno,@suname,@city); exec 向供应商表插入数据 '98001','阿里巴巴建材', '杭州' exec 向供应商表插入数据 '98002','武汉三鑫电梯有限公司', '武汉' exec 向供应商表插入数据 '98106','武汉三鑫电梯有限公司2', '武汉' --供应商表插入多条数据执行存储过程 declare @n nvarchar(20),@string1 nvarchar(20),@string2 nvarchar(20) declare @m int ,@k int set @m='98001' set @k='1' while (@m<98105) begin set @m=@m+1 set @n=convert(nvarchar(20),@m) set @k=@k+1 set @string1='阿里巴巴建材'+convert(nvarchar(20),@k) set @n=convert(nvarchar(20),@m) exec 向供应商表插入数据 @n,@string1,'杭州' end --3.仓库表插入单条数据存储过程 create procedure 向仓库表插入数据 @wno nvarchar(20), @mno nvarchar(20),@number bigint,@beizhu nvarchar(20) as insert into 仓库 values(@wno,@mno,@number,@beizhu); exec 向仓库表插入数据 '1','10001', '20','ww' exec 向仓库表插入数据 '2','10002', '15','' exec 向仓库表插入数据 '1003','10003', '15','' --drop procedure 向入库情况表插入数据 --仓库表插入一千条数据执行存储过程 declare @n nvarchar(20),@string1 nvarchar(20),@string2 nvarchar(20) declare @m int ,@k int,@p int set @m='2' while (@m<1000) begin set @m=@m+1 set @n=convert(nvarchar(20),@m) set @k=FLOOR(RAND()*18)+10002 set @p=FLOOR(RAND()*200) set @string1=convert(nvarchar(20),@k) set @n=convert(nvarchar(20),@m) exec 向仓库表插入数据 @n,@string1,@p,'' end --4.入库情况表插入单条数据存储过程 create procedure 向入库情况表插入数据 @ino nvarchar(20), @mno nvarchar(20),@suno nvarchar(20), @wno nvarchar(20),@number bigint,@price int ,@date date,@beizhu nvarchar(20) as insert into 入库情况 values(@ino,@mno,@suno,@wno,@number,@price,@date,@beizhu); exec 向入库情况表插入数据 '201','10001','98001','1','20','100','2017-2-18','' exec 向入库情况表插入数据 '302','10002','98002','2','20','100','2017-2-18','' --入库情况表插入多条数据执行存储过程 declare @n nvarchar(20),@string1 nvarchar(20),@string2 nvarchar(20),@string3 nvarchar(20) declare @m int ,@k int,@p int,@s int,@w int,@num int declare @BDate DATE,@Edate DATE,@da date SET @BDate = '2015-07-01' --下限 SET @EDate = '2017-04-14' --上限 set @m='210' while (@m<300) begin set @m=@m+1 set @k=FLOOR(RAND()*18)+10002 set @s=FLOOR(RAND()*100)+98001 set @w=FLOOR(RAND()*900)+1 set @num=FLOOR(RAND()*100)+20 set @p=FLOOR(RAND()*500)+50 set @da=DATEADD(day,ABS(CHECKSUM(NEWID()))%DATEDIFF(day,@BDate,@Edate),@BDate) set @n=convert(nvarchar(20),@m) set @string1=convert(nvarchar(20),@k) set @string2=convert(nvarchar(20),@s) set @string3=convert(nvarchar(20),@w) set @n=convert(nvarchar(20),@m) exec 向入库情况表插入数据 @n,@string1,@string2,@string3,@num,@p,@da,'' end --5.销售表插入单条数据存储过程 create procedure 向销售表插入数据 @sno nvarchar(20), @mno nvarchar(20),@wno nvarchar(20),@number bigint,@price int ,@date date,@beizhu nvarchar(20),@sumprice int as insert into 销售 values(@sno,@mno,@wno,@number,@price,@date,@beizhu,@sumprice); exec 向销售表插入数据 '501','10001','1','5','150','2017-2-25','','750' exec 向销售表插入数据 '601','10001','1','5','150','2017-2-25','','750' --销售表插入多条数据执行存储过程 declare @n nvarchar(20),@string1 nvarchar(20),@string2 nvarchar(20),@string3 nvarchar(20) declare @m int ,@k int,@p int,@s int,@w int,@num int declare @BDate DATE,@Edate DATE,@da date SET @BDate = '2015-07-01' --下限 SET @EDate = '2017-04-14' --上限 set @m='501' while (@m<599) begin set @m=@m+1 set @k=FLOOR(RAND()*18)+10002 set @s=FLOOR(RAND()*100)+98001 set @w=FLOOR(RAND()*900)+1 set @num=FLOOR(RAND()*100)+20 set @p=FLOOR(RAND()*500)+50 set @da=DATEADD(day,ABS(CHECKSUM(NEWID()))%DATEDIFF(day,@BDate,@Edate),@BDate) set @n=convert(nvarchar(20),@m) set @string1=convert(nvarchar(20),@k) set @string2=convert(nvarchar(20),@s) set @string3=convert(nvarchar(20),@w) set @n=convert(nvarchar(20),@m) exec 向入库情况表插入数据 @n,@string1,@string2,@string3,@num,@p,@da,'' end --触发器 --1.创建触发器,实现物资入库自动修改对应的库存 create trigger 入库 on 入库情况 after insert as begin declare @mno nvarchar(20),@wno nvarchar(20),@ino nvarchar(20) declare @num bigint select @mno=物资号,@wno=仓库号,@ino=入库编号 from inserted select @num=物资入库数量 from 入库情况 where 仓库号 =@wno and 物资号= @mno update 仓库 set 物资数量=物资数量+@num where 仓库号 =@wno and 物资号= @mno print '修改成功' end insert into 入库情况 values('202','10001','98001','1','5','100','2017-2-19','') --2.创建触发器,实现销 4000 售出库时自动修改对应的库存 create trigger 出库 on 销售 after insert as begin declare @mno nvarchar(20),@wno nvarchar(20),@sno nvarchar(20) declare @num bigint select @mno=物资号,@wno=仓库号,@sno=销售编号 from inserted select @num=物资销售数量 from 销售 where 仓库号 =@wno and 物资号= @mno update 仓库 set 物资数量=物资数量-@num where 仓库号 =@wno and 物资号= @mno print '修改成功' end insert into 销售 values('502','10001','1','10','150','2017-2-26','','1500') --创建存储过程查询某段时间内各种物资的入库数量 create procedure 某段时间内各种物资的入库数量 @begindate date,@enddate date as select 物资号,sum(物资入库数量) from 入库情况 where 入库时间 between @begindate and @enddate group by 物资号 exec 某段时间内各种物资的入库数量 '2017-2-18','2017-2-19' --创建存储过程查询某段时间内各种物资的销售数量 create procedure 某段时间内各种物资的出库数量 @begindate date,@enddate date as select 物资号,sum(物资销售数量) from 销售 where 销售时间 between @begindate and @enddate group by 物资号 exec 某段时间内各种物资的出库数量 '2017-2-25','2017-2-26' --创建存储过程查询某段时间内各种物资的销售收入 create procedure 某段时间内各种物资的销售收入 @begindate date,@enddate date as select 物资号,sum(销售额) from 销售 where 销售时间 between @begindate and @enddate group by 物资号 exec 某段时间内各种物资的销售收入 '2017-2-25','2017-2-26'
相关文章推荐
- 数据库课程设计个人总结
- 数据库课程设计心得【1】
- 数据库课程设计心得【1】
- [置顶] 数据库课程设计 - Flow Blog
- 记:数据库课程设计(二)
- 数据库课程设计--“茶咖啡”销售管理系统总结
- 课程设计---图书馆数据库
- 数据库课程设计_实验室管理系统_登录
- 数据库课程设计_实验室管理系统_设备信息查询
- 数据库课程设计_实验室系统管理_链接数据库
- 终于做完数据库的课程设计了
- 数据库课程设计——羽晴YuQ3,物资管理系统
- 09秋数据库课程设计_小结_3
- 数据库课程设计
- 数据库课程设计--高校机房管理系统
- 数据库课程设计
- 数据库课程设计心得【1】
- 数据库课程设计
- 数据库课程设计总结:关于Oracle11g的使用
- 服装销售系统数据库课程设计(MVC)