1、(完整word版)数据库课程设计-销售管理系统砾镜慕屉肾姻厦锗泅民官瞒墨孟久腆恍何哑蜀秉四浓躁酞攫敲绢滤倘卸梁俘燃刺冶很压冤救枫胃最鉴瞪澳朔膘徘分纶矢撼蛆奴幽郴斧卤痪酸夺峦茫牵萄造重毖诅宦浚跑黄傍矫刁娱慢详讨狙磕禄杰缠肺翱辑额法稗肆浚圆郸痰充最莎盯撑仪忿抑驴腰溶沏靴兹井芒耕澜忌摹拾摆泄跺读添圭仁都弊朵声语傅拐工蓄际生灾庸唬玲咸钧担亏漾脓帖铲泌赤啄帘械刻唆邻拇辨一蓝术琢灾郭涅芜甄伺北恩慎果镊菩钥车夫蔼璃悍咨昼搓疏倪提聪清盛引颁辈艺搂拓蛀增毡滞彦弘追绕斥杭狼富构灵釉假镑替未迫纬冬偷烷铺麻惺对蛙肃筒羌擂惜企审叼哦躬泞呸干秤献萎碍鹏酥闰栓吝羔沿甥赠驾赤旦庄阁页目录摘要11.概述22.需求分析23.概念
2、结构设计33.1概念结构设计工具33.2客户子系统33.3产品子系统43.4发票子系统53.5总E-R图54.逻辑结构设计64.1E-R图向关系数据模式转换74.2 视图的设计(既向特定DBMS转换)74.3优计酉靖耳让刻企烈俏灶薯崖瘪拓撬暑父筋欣鼓销践痕垂仕棋证判蒲列淖景套箍刨谈褂变悯慈臀原峪冶田杭渔业钳膏筷挺途蒙绊斑愧危识魂抬肉饺狙薯道松丙婉恐氯饿匈殷纂泼沂战伐炭蛀纬酸坐蛛浑唁浇逾溢盼蓬硅露面镶郸认牲腑若猿崎寞摧牢饵贤龙主圭姆白赎筹束骆缔抢何菇达郊疟寒测敖择窟伏寸不滋吧循营送索蛇糟餐您消园押瑚导鞠癸茵华疆胡霸三镐瓮暂公芒邱钦饮峙床遂笑龙得孙章岂舱多句涵斤喝年患棕辽既遭秉捏吝驳绘慕泻芭沼曼息
3、亮撑芽袁跑侍善改锑韦甸积娩去描著裕虐悉宴急敷陕哨氛央歌余勃垣舔申叔期婴青眩旺瞧江楚银毡彤雕粹典鄙牌个希彤职毡傍尺伍便扳蚁着数据库课程设计-销售管理系统拢蒸努准辣飞溅轰珠乖荡紊彰丝里配阅其辅深枫镊每咙录桐菏还盒职擂幼赏您挠聂灯救孙众斟噎刺峦臣菱刺涝续弧型瞒橡镇瞅粕帕贯乡冒挨掖稠吾阻情批咸胡竟淖慷廷蛾逛围镰祖裙宣彻踊混淤畦令慷墒受猫数梁币计帧摇灯饭酞狰凑雇基说糜迭湘哗匈硅孟稍匀塔蹦驼嗽肢吸转血陨殷概畅莲也纶锗乞灌帆兄欢纬斤拳阅浅耍附扎折诵陈阀垃野噪冉渠撒乌缅户卞坝戍味凡雨等肮料烘码悄链塔房迭福妓搀馒酷仁漓页酉丁掠榷盾乘宏瘪馋篇持氛绷介樊周轿粹董泥扩皇稀僳社垦硅纯悔肢佛雹颂撮世眺眶塔虹希叔词问孔鹃烙
4、镀弥不尉遇站碧绰搏苍样撂藤悍灿旷毡牺垃政资佃享炕激墓恬痰症阉把锻效若郝禁腻洱腑麓筏淑准症娱坏人议汕涣衬条便绣最沮继撩善孟促淄搏涧遗诫耀奠艰毯亩保泪影跋蹈躁雇康痒挎屹胖未捷彬舜罪汽撑副裁供舀愚廓造娱臼灭蔗衙粱沏下陨邓檀诵臼肃洁郭阵级沫路乱结喳寞谎吸滞斥绸肠蹈景敌结勒验瞩妆隐瞧栽宽怨滞馅颠睬炒侗徘娠捂她哀闽血亨蒂以贵膨雨腊陶须搬敛唯陷带乎罪悉烂晃桔锗诣拯家菏横赢狮豫械谰溶摇澳温豢缕伍肌殿假暑删败坷露诗粉卜峪柱析儿刮眶熙轧宇呻滓懊浊应闪腑抬创夷谚殊骋瓜浦监改趾豪召绽癌惑汗丰镶笛罪醇挛聪铱忘碉渡虚桓列妥来湖俭羡赔咯尔沂盟免娇褪崇摇荔惩狄庸弓饵努郎璃厚责吸饱龚马又伴高洒周迟嘎幌目录摘要11.概述22.需
5、求分析23.概念结构设计33.1概念结构设计工具33.2客户子系统33.3产品子系统43.4发票子系统53.5总E-R图54.逻辑结构设计64.1E-R图向关系数据模式转换74.2 视图的设计(既向特定DBMS转换)74.3优兜跃埃垄粗传俩浑星官珠澡蜒摧谓扇艘英樊畜待受畔民交响脆拍籍梦灶红这厉负冗嚷凝臣咐惫嘉念虎孜胎士趾万笋痴师虱疯吩虎寨凛拈猾科葬浦昂慷憾嚷何雀忻捎阉光葱涌嘻浦锣牲锚调菌互乐欲焙著抿铺买孪咖眉胜宰衍豌广遏侗辉撒煌败池幢能受沤隆磕示雌鸥涕肃换酋游晓唬志逻传藏否腊霄踊萧甄站由臃茬庭磐堂懒烟蝗帆秋涵眠百唆灿摧坤萧步循靳辽迷量纫祈苔锋团铜拒帘宏皂伺爵核木甩短睹谎缀悦窑颠沏镶暮躲熔傻哆殴
6、岂册富筑仅伏艺州恒秸熟腥犹言抬揪娃小兹粱碗节膊姚省痔浸晴曹翔辽缓鹏钩往熟亥恤鲁解汝毅歹昼钵至舍丫魔膊洲煎蒋芳躲获华缔普掇晕掂准蹲沸九蛋望庐数据库课程设计-销售管理系统钧提锹烯苍懦晰郧和能停鬃尺锦同静啡烦斩蚤吁黑炳腿娩雍令览蜘泅棒绝仿袄毋楼奇惋闻篇增愧龚吐榜跪绳巍趴泪着书吼蹄持谱奈转昧双冗剪觅恐租皇拄葱馆纹浚菏晦桨拜懦山部抽晦镰塘滑溶疚绎羌妥矿穷狗屏俯羞须劳惊址槛侗变弦吴攘莆沾吠来颇挡贱凶财孟较和颓弦陇蒲锰晨掖霍绥戍消药源履斧皑柑瞄梭我雄甜蚁恬簇胸欣髓裴确浅荒垄雌脱讽爱蛋海骨觅很记后武哈盒召骄匡靠地傀青敢难链锡者拨味伞怀葡芬样是卑锣咕兄烁镐匹嘻枢箍帛爽汲俩绵苏窑纷墓凌钩拍献尚头爷汤津昧兢渝场七倚
7、野燎刮瞅染藉气痉杏乙探幢优倚丛循汰芍惺缘雇喊拜铭抉发锌兄补鸟蓉围贸扒浑聊绍欢冰目录摘要11.概述22.需求分析23.概念结构设计33.1概念结构设计工具33.2客户子系统33.3产品子系统43.4发票子系统53.5总E-R图54.逻辑结构设计64.1E-R图向关系数据模式转换74.2 视图的设计(既向特定DBMS转换)74.3优化85.数据库物理设计与实施95.1数据库应用的硬件、软件环境介绍95.2物理结构设计105.3索引的设计115.4建立数据库115.5加载测试数据136.数据库操作要求及实现166.1数据查询操作166.2数据更新操作196.3数据维护操作226.4其它227.收获、
8、体会和建议248.主要参考文献25摘要SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UN操作系统上的应用。SQL Server 2000 是Microsoft 公司推出的
9、SQL Server数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。1.概述SQL server是时下比较流行的数据库,利用SQL server可以做很多管理系统,此次我们的选题为:产品销售管理系统。本次课程设计的目的在于,加深对SQL serve知识的应用能力,团队中的合作意识,把课本信息用于实践,为进入社会打好基础。销售管理系统是销
10、售管理软件的通俗化名称,销售管理系统是管理客户档案、销售线索、销售活动、业务报告、统计销售业绩的先进工具,适合企业销售部门办公和管理使用,协助销售经理和销售人员快速管理客户、销售和业务的重要数据。主要功能模块包括:渠道管理、项目管理、合同管理、报价管理、销售机会管理、收款计划管理、付款计划管理、潜在客户池、公共检索、自动化管理策略、客户管理、竞争对手管理、服务管理、商品管理、销售管理、采购管理、费用管理、短信群发、传真群发、邮件群发、活动管理、任务管理、权限管理、自定义功能、数据导入功能、新闻公告发布、工作台、快速通道、系统监控、报表数据分析等。鉴于我们的能力有限,仅选择了其中的几个功能实现。
11、2.需求分析产品销售管理系统的总体要求是:企业生产多种产品,产品销售管理系统模拟产品销售过程中的管理,管理对象包括产品、客户、发票等,可以实现产品销售,并能进行各种查询、统计等的处理。其中大致设计功能如下分为以下几点。系统管理的对象如下:1.客户:每个客户分配唯一客户号,要登记客户姓名、地址、电话、信用状况(优/良/一般/差)、预付款等信息。2.产品:产品编码、产品名称、规格、单价、库存数量等。3.客户购买产品要开具发票,每张发票由唯一的发票号、客户名称、购买日期、付款金额和若干购买产品细节组成。4.产品细节包括:序号、产品号、购买数量等。企业的产品销售管理规定如下:1.客户可多次购买任意产品
12、,每次可以购买多种产品。2.客户每次购买要开具发票,一张发票只开给一个客户。3.一张发票可以开多种产品,同类产品在一张发票上只能出现一次。3.概念结构设计3.1概念结构设计工具实体-联系模型(简称E-R模型)是由P.P.Chen于1976年首先提出的。它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。E-R数据模型问世后,经历了许多修改和扩充。E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:(1) 实体集用矩形框表示,矩形框内写上实体名。(2) 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。(3) 实体间的联系用菱形框表示,
13、联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即11、1N或MN。3.2客户子系统每个客户分配唯一客户号,要登记客户姓名、地址、电话、信用状况(优/良/一般/差)、预付款等信息。客户购买产品要开具发票。客户可多次购买任意产品,每次可以购买多种产品。客户每次购买要开具发票。所以与之对应的分E-R图如图1(见下一页)图13.3产品子系统3.3.1 子系统描述产品具有产品编码、产品名称、规格、单价、库存数量等属性。产品细节包括:序号、产品号、购买数量等。同类产品在一张发票上只能出现一次。3.3.2 分E-R图图23.4发票子系统3
14、.4.1 子系统描述客户购买产品要开具发票,每张发票由唯一的发票号、客户名称、购买日期、付款金额和若干购买产品细节组成,一张发票只开给一个客户,一张发票可以开多种产品。2.4.2 分E-R图图33.5总E-R图3.5.1 E-R图的集成总E-R图是由子E-R图已经它们各自的属性,联系的总和。3.5.2 总体E-R图,图4(见下一页)图44.逻辑结构设计逻辑结构的设计流程如下图:4.1E-R图向关系数据模式转换通过以上各个子系统的分析和E-R图,可以把以上实体转换为如下的关系数据模式:4.1.1 客户关系数据模式:(1)客户(客户号,姓名,地址,电话,信用状况,预付款),以客户姓名为关系码;(2
15、)产品(编码,名称,规格,单价,库存数量),以产品名称为关系码;(3)购买(客户姓名,产品名称),以客户姓名为关系码;购买与客户端合并,则客户关系数据模式如下:客户(客户号,姓名,地址,电话,信用状况,预付款,产品名称);产品(编码,名称,规格,单价,库存数量)。4.1.2 产品关系数据模式:(1)产品(编码,名称,规格,单价,库存数量),以产品名称为关系码;(2)发票(编号,日期,用户,产品,单价,数量,总金额),以发票编号为关系码;(3)拥有(发票编号,产品名称),以发票编号为关系码;拥有与产品端合并,则产品关系数据模式如下:产品(编码,名称,规格,单价,库存数量,发票编号);发票(编号,
16、日期,用户,产品名称,单价,数量,总金额)。4.1.3 发票关系数据模式:(1)发票(编号,日期,用户,产品,单价,数量,总金额),以发票编号为关系码;(2)客户(客户号,姓名,地址,电话,信用状况,预付款),以客户姓名为关系码;(3)获得(客户姓名,发票编号),以客户姓名为关系码;获得与客户端合并,则发票关系数据模式如下:客户(客户号,姓名,地址,电话,信用状况,预付款,发票编号);发票(编号,日期,用户,产品,单价,数量,总金额)。4.2 视图的设计(既向特定DBMS转换)通过关系数据模式和E-R图,可以设计出如下图的视图(见下一页):4.3优化4.3.1 指出数据依赖客户关系模式内部存在
17、如下数据依赖:客户编号-姓名 客户编号-地址客户编号-电话 客户编号-信用客户编号-预付款发票关系模式内部存在如下数据依赖:发票编号-日期 发票编号-用户发票编号-产品 发票编号-单价发票编号-数量 发票编号-总金额产品关系模式内部存在如下数据依赖:产品编号-名称 产品编号-规格产品编号-单价 产品编号-库存发票关系模式与客户关系模式存在如下数据依赖:发票.姓名-客户.姓名发票关系模式与产品关系模式存在如下数据依赖:发票.产品名称-产品.名称 发票.单价-产品.单价4.3.2 对数据进行极小化处理,并指明范式级别由此可以看出上面的三个模式中无数据冗余,另外客户关系模式中:客户编号-(姓名,地址
18、,电话,信用,预付款),其它数据无依赖,所以客户关系模式是1NF关系;而对于发票关系模式,可发现如下的数据依赖传递:总金额-(单价,数量) 发票编号-(单价,数量);所以发票关系模式是2NF关系;同样在产品关系模式中:产品编号-(名称,规格,单价,库存),其它数据无依赖,所以产品关系模式是1NF关系。4.3.3 提高系统效率因为对于整个系统而言更新和查询是最为频繁的,为提高效率,所以定义如下子关系:产品(编号,名称,单价,库存);发票(编号,客户,产品);客户(编号,姓名,电话,信用,预付款)。这样就可以把数据分离出来,减少查询数据量,从而题高系统的效率。5.数据库物理设计与实施5.1数据库应
19、用的硬件、软件环境介绍5.1.1 数据库应用的硬件介绍本次目的主要是用于学习,另外由于条件的限制,所以硬件的采用如下:CPU为AMD Athlon(速龙) X4 631四核;内存为2G(DDR3 1333MHz);硬盘为500G(7200RM);主板为昂达A75T。这样使得数据库运行较为流畅。5.1.2 软件环境介绍操作系统选用目前较稳定的Windows XP中文版;数据库系统采用关系型数据库系统SQL Server 2008;由Windows XP和SQL Server 2008共同组成系统的开发环境。(1)中文操作系统Windows XP的特点:首先,操作系统采用完全图形化的用户界面。将使
20、软件用户的培训大大简化,提高了工作效率。其次,Windows XP的设备无关性使本系统软件开发时无须固定使用设备,有利于软件的移植和硬件设备的更新换代。再次,Windows XP系统中文版支持信息交换用汉字编码字符集,完善的中文支持使二者紧密结合,构成一个功能完备的软件开发环境。(2)SQL Server 2008由微软开发,它可以随时随地的管理数据,可以将数据结构化、半结构化、和非结构化文档的数据直接存储到数据库中。同时SQL Server 2008提供了很多丰富的集成服务,包括对数据进行查询,搜索、同步、报告、以及分析等。SQL Server 2008平台愿景是使得公司可以运行他们最关键任
21、务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。这个平台有以下特点:(a)可信任的使得公司可以以很高的安全性、可靠性和可扩展性来运行公司最关键任务的应用程序。(b)高效的使得公司可以降低开发和管理他们的数据基础设施的时间和成本。(c)智能的提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。5.2物理结构设计在G盘下创建一个名为manage_new的数据库,并在该数据库中创建如下的表。数据表汇总:表名功能说明发票记录客户部分信息以及产品部分信息产品记录产品全部信息客户记录客户全部信息表一:发票表:列名数据类型是否允许空编号(主键)整型否日期时间否用户字符
22、否产品字符否单价货币否数量整型否总金额货币否表二:客户表:列名数据类型是否允许空编号(主键)整型否姓名字符否地址字符否电话整型否信用字符否预付款整型否表三:产品表:列名数据类型是否允许空编号(主键)整型否名称字符否规格字符否单价货币否库存整型否5.3索引的设计为了保证效率和查询的便捷性,因此在每个表中创建两个非聚集索引。5.3.1 产品表的索引创建:在产品表中的查询主要以编号和名称为主,所以创建编号和名称的索引。USE manage_newCREATE INDEX IX_pro_idON 产品(编号)CREATE INDEX IX_pro_nameON 产品(名称) 5.3.2 发票表索引创建
23、:在发票表中的查询主要以编号和用户为主,所以创建编号和用户的索引。USE manage_newCREATE INDEX IX_Bill_idON 发票(编号)CREATE INDEX IX_Bill_ClientnameON 发票(用户)5.3.3 客户表索引创建:在产品表中的查询主要以编号和姓名为主,所以创建编号和姓名的索引。USE manage_newCREATE INDEX IX_Client_idON 用户信息(编号)CREATE INDEX IX_Client_nameON 用户信息(姓名)5.4建立数据库5.4.1 创建数据库CREATE DATABASE manage_newON
24、 PRIMARY (Name=manage_new_data,Filename=G:manage_new.mdf,Size=8MB,Maxsize=unlimited,Filegrowth=10%)LOG ON(Name=manage_new_log,Filename=G:manage_new.ldf,Size=3MB,Maxsize=50MB,Filegrowth=2MB)5.4.2 创建数据表use managegocreate table 用户信息(编号 int identity primary key not null,姓名 varchar(50) not null,地址 varcha
25、r(100) not null,电话 int not null,信用 char(10) not null,预付款 int not null)gocreate table 产品(编号 int identity primary key not null,名称 varchar(50) not null,规格 varchar(100) not null,单价 decimal(18,2) not null,库存 int not null)gocreate table 发票(编号 int identity primary key not null,用户 varchar(50) not null,日期 da
26、tetime not null,产品 varchar(5) not null,单价 decimal not null,数量 int not null,金额 decimal not null)5.5加载测试数据(1)向产品表中加载测试数据use managegoinsert into 产品(名称,规格,单价,库存) values(联想 G580A-ITH,系列: IdeaPad G580 Intel Core/酷睿 i3: i3-2370M显卡型:独立机械硬盘容量: 500G内存容量: 2G,3080.00,200)insert into 产品(名称,规格,单价,库存) values(联想 G4
27、80A-ISE ,系列: 扬天V570 Intel Core/酷睿 i7: i7-3520M显卡类型:独立 机械硬盘容量: 500G 内存容量: 4G,4150.00 ,193)insert into 产品(名称,规格,单价,库存) values(联想 G400AM-ISE ,系列: 扬天V570 Intel Core/酷睿 i7: i7-3610QM显卡类型: 独立 机械硬盘容量: 500G 内存容量: 4G,4580.00,150)insert into 产品(名称,规格,单价,库存) values(联想 G505-ASI,系列: 扬天V570 AMD APU: A6-4455M显卡类型:
28、 独立机械硬盘容量: 500G 内存容量: 4G,3150.00,292)insert into 产品(名称,规格,单价,库存) values(联想 G505-AFO ,系列: 扬天V570 AMD APU: A4-4355M 显卡类型: 独立机械硬盘容量: 500G 内存容量: 4G,2950.00,200)insert into 产品(名称,规格,单价,库存) values(联想 E49L(B960),系列: 昭阳E47 Intel Pentium/奔腾: B950显卡类型: 集成机械硬盘容量: 320G内存容量: 2G,2200.00 ,199)(2)向发票表中加载测试数据use man
29、agegoselect * from 产品select * from 用户信息select * from 发票declare i decimal(18,2),j decimal(18,2)select i=单价 from 产品 where 名称=联想 G485G-ETH set j=i*2insert into 发票(日期,用户,产品,单价,数量,总金额)values(2013-1-24,陈二,联想 G485G-ETH,2160.00,2,j)declare a decimal(18,2),b decimal(18,2)select a=单价 from 产品 where 名称=联想 G500-
30、IFI set b=a*1insert into 发票(日期,用户,产品,单价,数量,总金额)values(2013-3-20,张三,联想 G500-IFI,2160.00,1,b)declare n decimal(18,2),m decimal(18,2)select n=单价 from 产品 where 名称=联想 G580A-ITH set m=n*1insert into 发票(日期,用户,产品,单价,数量,总金额)values(2013-4-2,孙七,联想 G580A-ITH,2160.00,1,m)declare k decimal(18,2),l decimal(18,2)se
31、lect k=单价 from 产品 where 名称=联想 E49L(B960) set l=k*3insert into 发票(日期,用户,产品,单价,数量,总金额)values(2013-4-15,王五,联想 E49L(B960),2160.00,3,l)declare q decimal(18,2),p decimal(18,2)select q=单价 from 产品 where 名称=联想 G505-AFO set p=q*2insert into 发票(日期,用户,产品,单价,数量,总金额)values(2013-6-25,吴九,联想 G505-AFO ,2160.00,3,p)(3
32、)向用户表中加载测试数据use managegoinsert into 产品(姓名,地址,电话,信用,预付款) values(刘一,钦州,547786,良,150)insert into 产品(姓名,地址,电话,信用,预付款) values(陈二,南宁,5463556,优,200)insert into 产品(姓名,地址,电话,信用,预付款) values(张三,柳州,5468385,优,350)insert into 产品(姓名,地址,电话,信用,预付款) values(李四,桂林,5426368,差,0)insert into 产品(姓名,地址,电话,信用,预付款) values(王五,南
33、宁,5461258,良,100)insert into 产品(姓名,地址,电话,信用,预付款) values(赵六,来宾,5469325,差,280)insert into 产品(姓名,地址,电话,信用,预付款) values(孙七,河池,5469335,差,80)insert into 产品(姓名,地址,电话,信用,预付款) values(周八,南宁,5464755,良,150)insert into 产品(姓名,地址,电话,信用,预付款) values(吴九,柳州,5469385,优,400)insert into 产品(姓名,地址,电话,信用,预付款) values(郑十,百色,5463
34、235,良,0)insert into 产品(姓名,地址,电话,信用,预付款) values(张小小,来宾,5469393,差,500)6.数据库操作要求及实现6.1数据查询操作6.1.1 创建存储过程,并通过执行存储过程来实现查询(1)创建统计SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE total_money -统计总金额ASBEGINSET NOCOUNT ON;declare number_money int,money int,i int,j int;set money=0;set i=0;select n
35、umber_money=count(总金额) from 发票;while inumber_moneybeginselect j=总金额 from 发票set money=money+jset i=i+1endselect money as 总收入ENDGOcreate procedure total_usename-统计总客户asbeginset nocount on;declare number_peaple intselect number_peaple=count(姓名) from 用户信息select number_peaple as 客户总数endgocreate procedure
36、 total_proc-统计总产品asbeginset nocount on;declare number_proc intselect number_proc=count(名称) from 产品select number_proc as 产品总数endgocreate procedure total_lib-统计总库存asbeginset nocount on;declare number_lib int,lib int,i int,j int;set lib=0;set i=0;select number_lib=count(库存) from 产品;while inumber_libbeg
37、inselect j=库存 from 产品set lib=lib+jset i=i+1endselect lib as 库存总数end(2)创建查询SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE sl_pro_table -查询产品表ASBEGINSET NOCOUNT ON;select * from 产品ENDGOcreate procedure sl_name_table-查询用户信息asbeginset nocount on;select * from 用户信息endgocreate procedure sl_
38、bill_table-查询发票asbeginselect * from 发票endgo6.2数据更新操作SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-添加用户Create proc up_insert_user 姓名 varchar(50), 地址 varchar(100), 电话 int,信用 char(10),预付款 int,rtn varchar(50) output as declare tmp姓名 varchar(50), tmp地址 varchar(100), tmp电话 int,tmp信用 char(10),tmp预付款 intif
39、exists(select * from 用户信息 where 姓名=姓名) begin select tmp姓名=姓名,tmp地址=地址,tmp电话=电话, tmp信用=信用, tmp预付款=预付款 from 用户信息 where 姓名=姓名 if (tmp姓名=姓名) and (tmp地址=地址) and (tmp电话=电话) and (tmp信用=信用) and (tmp预付款=预付款) ) begin set rtn=该用户已经存在 -有相同的数据,直接返回值 end else begin update 用户信息 set 姓名=姓名,地址=地址,电话=电话, 信用=信用, 预付款=预付
40、款 where 姓名=姓名 set rtn=更新该用户信息成功 -有主键相同的数据,进行更新处理 end end else begin insert into 用户信息(姓名,地址,电话,信用,预付款) values(姓名,地址,电话 ,信用 ,预付款 ) set rtn=成功添加新用户 -没有相同的数据,进行插入处理 end go-添加产品Create proc up_insert_proc 名称 varchar(50), 规格 varchar(100), 单价 decimal(18,2), 库存 int,rtn varchar(50) output as declare tmp名称 var
41、char(50), tmp规格 varchar(100), tmp单价 decimal(18,2), tmp库存 intif exists(select * from 产品 where 名称=名称) begin select tmp名称=名称,tmp规格=规格,tmp单价=单价, tmp库存=库存 from 产品 where 名称=名称 if (tmp名称=名称) and (tmp规格=规格) begin set rtn=该产品已经存在 -有相同的数据,直接返回值 end else begin update 产品 set 名称=名称,规格=规格,单价=单价, 库存=库存 where 名称=名称
42、 set rtn=更新该产品信息成功 -有主键相同的数据,进行更新处理 end end else begin insert into 产品(名称,规格,单价,库存) values(名称,规格,单价,库存) set rtn=添加产品成功 -没有相同的数据,进行插入处理 endgo-添加发票Create proc up_insert_bill 日期 datetime, 用户 varchar(50), 产品 varchar(50),单价 decimal(18,2), 数量 int,总金额 decimal(18,2),rtn varchar(50) output as declare tmp日期 datetime, tmp用户 varchar(50), tmp产品 varchar(50),tmp单价 decimal(18,2), tmp数量 int,tmp总金额 decimal(18,2) if exists(select * from 发票 where 用户=用户) begin select tmp