《邮局管理(内附答案)》由会员分享,可在线阅读,更多相关《邮局管理(内附答案)(5页珍藏版)》请在金锄头文库上搜索。
1、2任务概述1)添加功能:在该系统中,可以实现客户信息、出版社信息和报纸信息的插入; 2)查询功能:客户可以通过该系统查询自己的客户信息、订单信息、出版社信息、报纸的详细信息,并可以按照一定的标准进行的相关查询;3)删除和修改功能:在该邮局订报管理系统中,可以对客户信息、报纸信息、出版社信息进行删除和修改;4)统计功能:在该系统中,可统计客户订购一次所花费的总金额和统计某报纸总订购数量与总金额。根据前面得到的各个关系,现把它们转化为数据表。客户(客户编号、姓名、电话、地址、邮编)报纸(报纸编号、报纸名称、单价、版面规格)订阅(客户编号、报纸编号、数量、金额、订阅日期)表 1 客户信息表结构字段名
2、 说 明 类 型 长度 可否为空 约束cnum 客户编号 字符型 10 否 主键cname 姓名 字符型 10 否tel 电话 字符型 15 否addr 地址 字符型 50 否zip 邮编 字符型 10 否表 2 报纸信息表结构字段名 说 明 类 型 长度 可否为空 约束nnum 报纸编号 字符型 10 否 主键nname 报纸名称 字符型 20 否price 单价 字符型 8 否 010norm 版面规格 字符型 20 否表 3 订阅信息表结构字段名 说 明 类 型 长度 可否为空 约束cnum 客户编号 字符型 10 否 主键nnum 报纸编号 字符型 10 否 主键ncount 数量 整
3、数型 8 否nmoney 金额 整数型 10 否date 订阅日期 日期型 8 否3评判标准序号 任务 分数1 每张表设置相应的主键,表也表之间设置相应的外键,并输入内容 302 创建视图查询各个客户的 姓名、报纸名称、订阅日期 203 把地址这列的列名修改为 address 104 查询订了 2 份以上报纸的客户有哪些 105 查询每个客户分别订了多少份报纸 206 查询订了报纸份数最多的客户姓名 20答案:-/* (八)邮局管理系统 */-创建数据库 -CREATE DATABASE PostOfficeSystemGOUSE PostOfficeSystemGO-创建客户信息表 -CRE
4、ATE TABLE CustomerInfo(cnum CHAR(10) PRIMARY KEY, -客户编号cname CHAR(10) NOT NULL, -姓名tel CHAR(15) NOT NULL, -电话addr CHAR(50) NOT NULL, -地址zip CHAR(10) NOT NULL -邮编)-创建报纸信息表 -CREATE TABLE NewsPaperInfo(nnum CHAR(10) PRIMARY KEY, -报纸编号nname CHAR(20) NOT NULL, -报纸名称price MONEY NOT NULL CHECK(price BETWEE
5、N 0 AND 10), -单价norm CHAR(20) NOT NULL -版面规格)-创建订阅信息表 -CREATE TABLE Subscription(cnum CHAR(10) FOREIGN KEY -客户编号REFERENCES CustomerInfo(cnum),nnum CHAR(10) FOREIGN KEY -报纸编号REFERENCES NewsPaperInfo(nnum),ncount INT NOT NULL, -数量nmoney INT NOT NULL, -金额date DATETIME NOT NULL -订阅日期)-用 insert 语句输入以上数据-
6、INSERT INTO CustomerInfo(cnum,cname,tel,addr,zip)VALUES (2012020001,张三,008613812341234,中国安徽合肥,230000)INSERT INTO CustomerInfo(cnum,cname,tel,addr,zip)VALUES (2012020002,李三,008613812341235,中国安徽合肥,230000)INSERT INTO CustomerInfo(cnum,cname,tel,addr,zip)VALUES (2012020003,五四,008613812341236,中国北京,100000
7、)INSERT INTO NewsPaperInfo(nnum,nname,price,norm)VALUES (1001010001,X 晚报 ,1.5,A2X8)INSERT INTO NewsPaperInfo(nnum,nname,price,norm)VALUES (1001010002,Y 晚报 ,1.1,A3X8)INSERT INTO NewsPaperInfo(nnum,nname,price,norm)VALUES (1001010003,X 晨报 ,2.5,A2X32)INSERT INTO Subscription(cnum,nnum,ncount,nmoney,dat
8、e)VALUES (2012020001,1001010001,6,9,2012-02-05)INSERT INTO Subscription(cnum,nnum,ncount,nmoney,date)VALUES (2012020002,1001010003,12,30,2011-02-05)INSERT INTO Subscription(cnum,nnum,ncount,nmoney,date)VALUES (2012020003,1001010002,6,6.6,2011-09-15)INSERT INTO Subscription(cnum,nnum,ncount,nmoney,da
9、te)VALUES (2012020003,1001010001,12,18,2012-01-08)-把地址这列的列名修改为 address-EXEC sp_rename CustomerInfo.addr,address,COLUMN -查询每个客户分别订了多少份报纸-SELECT cnum,SUM(ncount) AS TotalFROM SubscriptionGROUP BY cnum-查询订了 2 份以上报纸的客户有哪些-SELECT cnum, SUM(ncount) AS TotalFROM SubscriptionWHERE ncount=2GROUP BY cnum-查询订了
10、报纸份数最多的客户姓名-SELECT cname,ncount AS TotalFROM CustomerInfo AS T1INNER JOIN ( SELECT TOP 1 SUM(ncount) AS ncount,cnum FROM Subscription GROUP BY cnumORDER BY ncount DESC) AS T2ON Tum = Tum-创建视图查询各个客户的 姓名、报纸名称、订阅日期-CREATE VIEW CustomerSubscriptionAS(SELECT cname,nname,dateFROM CustomerInfo AS T1INNER JOIN Subscription AS T2ON Tum = TumINNER JOIN NewsPaperInfo AS T3ON T2.nnum = T3.nnum)