《564501124《数据库技术及应用》基础实验指导.doc》由会员分享,可在线阅读,更多相关《564501124《数据库技术及应用》基础实验指导.doc(48页珍藏版)》请在三一办公上搜索。
1、数据库技术及应用基础实验指导实验环境1软件需求(1)操作系统:Windows 2000 Professional,或者Windows XP(2)数据库管理系统:SQL Server2000(3)应用开发工具:自选VC+、visual Studio、myEclipse等(4)其它工具:Word2硬件需求(1)PC机(2)网络环境基本需求信息一、对某商场采购销售管理进行调研后,得到如下基本需求信息: 该商场有多名工作人员(主要是采购员和销售员),主要负责从供应商处采购商品,而后将商品销售给客户。采购员主要负责根据商场的销售情况确定要采购的商品,并与供应商联系,签订采购单。销售员主要负责将采购来的商
2、品销售给客户,显然一个客户一次可能购买多种商品。一个供应商可以向该商场供应多种商品,而一种商品也可以由多个供应商供应。 商场的管理者每个月需要对该月已采购的商品和已销售的商品进行分类统计,对采购员和销售员的业绩进行考核,对供应商和客户进行等级评定,并计算商场利润。二、E-R图三、需要建立的数据表如下1 供应商表:供应商ID,供应商名称,地区,信誉等级2 供应表:供应商ID,商品ID,商品单价3 商品表:商品ID,商品名称,商品库存量,商品均价4 采购单表:采购单ID,采购员ID,供应商ID,采购总金额,签订日期5 采购明细表:采购单ID,商品ID,采购数量,商品单价6 销售单表:销售单ID,销
3、售员ID,客户ID,销售总金额,签订日期7 销售明细表:销售ID,商品ID,销售数量,商品单价,单价折扣8 客户表:客户ID,客户名称,联系电话,客户等级9 职员表:职员ID,职员姓名,职员类型实验一SQL Server安装及管理工具使用一、实验目的与要求1 熟悉SQL Server的基本安装与配置过程2 熟悉SQL Server企业管理器的主要功能、对数据库的组织和管理方法3 熟悉SQL Server查询分析器的主要功能、对数据库的组织和管理方法3掌握基本表、主码等基本概念4掌握SQL语言的数据定义功能,要求能使用企业管理器和查询分析器两种方法来建立数据库、以及数据表。5掌握修改和删除表结构
4、的方法二、实验内容1学习使用SQL Server的基本管理工具:企业管理器和查询分析器2掌握SQL Server默认安装的各个数据库的主要作用 (1)master数据库(2)model数据库(3)msdb数据库(4)tempdb数据库3使用企业管理器和查询分析器建立、删除数据库 (1)建立一个名称为supermarket的数据库 (2)查看与新生成的数据库相关的内容 (3)删除名称为supermarket的数据库点击supermarket右键,选择“删除操作”。4 使用企业管理器和查询分析器建立、删除数据表create database supermarketdrop database sup
5、ermarket(1)在已经建立的supermarket数据库的基础上,建立以下数据表(参考附录A): (a)商品表(b)供应商表(c)供应表(d)采购单表(e)采购明细表(f)销售单表(g)销售明细表(h)客户表(i)职员表(2)使用企业管理器查看新生成表的结构和内容commoditycustomerEmployeesalesaleDetailStockstockDetailSupplyiersupplying(3)分别使用企业管理器和查询分析器修改表结构(a)在商品表中加入描述商品信息的属性a.在企业管理器下b.在查询分析器下ALTER TABLE commodityADD charact
6、eristics varchar(50) NULL(b)将客户表中的客户联系电话(CUtelephone)的数据类型改为varchar(20)(4)分别使用企业管理器和查询分析器删除基本表(a)使用企业管理器删除客户表点击customer右键,点击删除操作(b)使用查询分析器删除商品表drop table customer三、自我测试1 使用企业管理器新建一个名称为“test”的数据库2 使用查询分析器在test数据库建立以下数据表(1)学生表:学号,姓名,性别,出生日期,系别 (2)课程表:课程编号,课程名称,学分(3)选课表:学号,课程号,成绩create database testcre
7、ate table student( studentNo char(7) NOT NULL, sname char(20) NULL, sext char(10) NULL, brithday datetime NULL, sDepartment char(20) NULL) create table course( courseNo char(10) NOT NULL, cname char(20) NULL, creditHour numeric(1) default 0 NULL)create table Scourse( courseNo char(10) NOT NULL, stud
8、entNo char(7) NOT NULL, grade int NULL)3 使用查询分析器对表进行修改(1) 将学生表中的性别数据类型改为整型alter table student alter column sext int (2) 为学生表增加一个新的属性列,用于存放学生的专业信息alter table student add professional varchar(50) NULL实验二 数据插入、修改和删除一、实验目的与要求1掌握SQL Server的数据更新功能,能使用INSERT、UPDATE、DELETE命令对数据表中的数据进行更新2掌握INSERTSELECT和SELEC
9、TINTO语句的使用方法二、实验内容1使用INSERT命令向基本表中插入数据(参考附录B)(1)向供应商表中插入如下数据记录:insert into supplier values(A001,神州数码有限公司,北京,1 )(2)向商品表中插入如下数据记录(3)向职员表中插入如下数据记录(4)向供应表中插入如下数据记录(5)使用企业管理器分别向客户表、采购表、采购明细表、销售表、销售明细表中添加相应记录。客户表采购单表采购明细表销售单表销售明细表2使用UPDATE命令修改基本表中的数据1)将编号为F70006的商品的单价改为12.00元 update supplyingset price=12.
10、00where cid=F70006(2)将名称为家乐福的客户的等级改为VIP客户。 update customerset CUlevel=2where CUname=家福乐(3) 将编号为A102 供应商供应商品的价格全部打八折 update saleDetailset SDdiscount = 0.8from supplying a, commodity b, saleDetail cwhere a.Cid=b.Cid and a.Sid=A102 and c.Cid=b.Cid 3使用DELETE命令删除基本表中的数据(1)删除采购明细表中的所有记录 delete from stockD
11、etail(2)从采购单表中删除2005年以前签订的采购单delete from stockwhere year(CGdate)=20054使用SELECTINTO语句向表中成批插入记录(1)将供应商A102供应的商品和供应价格存到一个名字为A102_commodity的表中create table A102_commodity( Sid char(10), -供应商ID Cid char(10), -商品ID price float, -商品单价 PRIMARY KEY (Sid,Cid) )insert into A102_commodityselect * from supplying
12、where Sid=A102(2)将所有的VIP客户信息存储到一个名字为VIP_Customer的表中create table VIP_Customer( CUid char(10) PRIMARY KEY, -客户ID CUname char(30), -客户姓名 CUtelephone char(16), -客户联系电话 CUlevel int -客户等级:1,普通客户;2,VIP客户)insert into VIP_Customerselect * from customer where CUlevel=25使用INSERTSELECT语句向表中成批插入记录(1)新建一个名称为achie
13、vement的表,其属性包括销售单ID,销售单总金额,销售日期create table achievement(SAid char(12) PRIMARY KEY, -销售单IDSAmoney float ,-销售单总金额SAdate datetime ,-销售日期)(2)将编号为S0002的销售员签订的销售单信息存储到achievement表中。insert into achievement(SAid,SAmoney,SAdate)select SAid,SAmoney,SAdatefrom salewhere SAid in ( select SAid from sale where Ei
14、d= S0002)三、自我测试1从采购明细表中删除所有从供应商A153处采购的编号为F70006商品的明细信息delete from stockDetailwhere Cid in(select Cid from stockDetail where Cid=F70006)2从销售明细表中删除2005年以前签订的销售单的销售明细记录delete from saleDetailwhere SAid in(select b.SAid from saleDetail a,sale b where a.SAid=b.SAid and year(SAdate)50000015 查询2005年签订的金额最大
15、的一笔销售单,要求显示采购员ID、客户ID和销售金额select Eid,CUid,SAmoneyfrom salewhere SAmoney in(select max(SAmoney) from sale where year(SAdate)=2005 )10 查询2005年与编号为A002的供应商签订的所有采购单的总金额select Sid,sum(CGmoney)from stockwhere year(CGdate)=2005 AND Sid=A002group by Sid11 查询名称中含有机字的所有商品的ID、名称和库存量select Cid,Cname,Cstoragefro
16、m commoditywhere Cname like%机%12 查找第二个汉字是翔的商品名称和单价。select Cname,pricefrom supplying a,commodity bwhere a.Cid=b.Cid and Cname like _翔%三、自我测试1查询2005年签订的销售合同总额排名前5名的销售员的ID和合同总额,要求结果按照合同总额降序排列select top 5 Eid销售员ID,sum(SAmoney)合同总额from sale where year(SAdate)=2005group by Eidorder by sum(SAmoney)desc2查询至
17、少供应了3种商品的供应商的IDselect Sid, count(cid)商品种数 from stockDetail a ,stock b where a.CGid=b.CGid group by a.CGid ,Sid having count(Cid)=34 查询在2006年至少已经与2名销售员签订了合同的客户IDselect CUid,count(SAid)签订合同次数 from saleWHERE year(SAdate)=2006 GROUP BY CUid having count(SAid)=2实验四 表连接查询一、实验目的与要求1掌握表连接查询的使用方法2掌握子查询的使用方法3
18、能使用内连接、左外连接、右外连接以及交叉连接解决相关问题4熟悉系统函数的使用二、实验内容1查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。select Sid,Cnamefrom supplying a ,commodity bwhere a.Cid=b.Cid2使用连接查询查找与姓名为李云的采购员签订采购单的供应商的名称。select Snamefrom stock a ,supplier b,Employee cwhere a.Sid=b.Sid and a.Eid=c.Eidand Ename=李云3使用关键字IN完成查询,要求查找与姓名为李云的采购员签订采购单的供应商的
19、名称。select Snamefrom supplierwhere Sname in(select Snamefrom stock a ,supplier b,Employee cwhere a.Sid=b.Sid and a.Eid=c.Eidand Ename=李云)4使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。select a.Eid,CGid,Sid,CGmoney,CGdatefrom Employee a left join stock b on a.Eid=b.Eidwhere Etype=25使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要
20、求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。6请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。7查找购买了编号为A001的供应商供应的商品的客户名称select CUnamefrom supplying b,commodity c,saleDetail d,sale e,customer fwhere b.Cid=c.Cid and c.Cid=d.Cid and d.SAid=e.SAid and e.CUid=f.CUid and b.Sid=A0028查找销售员王良在2005年签订的销售合同的详细信息。sel
21、ect c.SAid,Cid,SDnumber,SDprice,SDdiscountfrom Employee a ,sale b,saleDetail cwhere a.Eid=b.Eid and b.SAid=c.SAid and Ename=王良and year(SAdate)=2005三、自我测试1使用右外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息,没有签订采购单的采购员也要显示2查找购买了名称为联想集团的供应商供应的商品的客户名称select distinct a.Sname,CUnamefrom supplier a ,supplying b,commodity
22、c,saleDetail d,sale e,customer fwhere a.Sid=b.Sid and b.Cid=c.Cid and c.Cid=d.Cid and d.SAid=e.SAid and e.CUid=f.CUid and a.Sname=联想集团实验五 表综合查询使用一、实验目的与要求1能熟练应用SELECT语句及其相关字句2能将SELECT与系统函数、IF ELSE、WHILE等语句进行综合应用并解决相关问题二、实验内容1查询所有供应鲜橙多的供应商的最低报价。select Cname,MIN(price)最低报价from supplying a,commodity bw
23、here a.Cid=b.Cid and Cname=鲜橙多group by a.Cid,Cname2查找销售员王良在2005年签订的所有销售合同中每一类商品的总金额。select distinct sum(SAmoney)同一类商品总金额,c.Eid,e.Cnamefrom saleDetail a,sale b,Employee c,commodity ewhere a.SAid=b.SAid and c.Eid=b.Eid and e.Cid=a.Cid and Ename=王良and year(SAdate)=2005group by a.Cid,c.Eid,e.Cname3汇总由姓名
24、为刘明的采购员在2005年采购的数码相机的总金额。select b.Ename,d.Cname,sum(CGmoney)总金额from stock a,Employee b,stockDetail c,Commodity dwhere a.Eid=b.Eid and c.Cid=d.Cid and a.CGid=c.CGid and year(CGdate)=2005 and Ename=刘明and Cname=数码相机group by b.Ename,d.Cname5 汇总由姓名为刘明的采购员在2005年采购的各类商品的数量。select Ename,SDnumberfrom Employe
25、e a,stockDetail b,stock cwhere a.Eid=c.Eid and b.CGid=c.CGid and year(CGdate)=2005 and Ename=刘明group by SDnumber, Ename6 查找没有供应任何一类商品的供应商的名字。select Snamefrom supplier awhere not exists( select a.Sidfrom supplying bwhere a.Sid=b.Sid)7 查找在2006年各个客户购买商品的总金额,要求结果按照购买商品的总金额降序排序select b.CUid,sum(SAmoney)购
26、买总金额from sale a,customer bwhere a.CUid=b.CUid and year(SAdate)=2006group by b.CUidorder by sum(SAmoney)desc8 请使用左连接完成以下查询:查找每一个销售人员销售的商品的详细信息,要求显示销售人员姓名、销售单ID、客户姓名、商品名称、销售数量、和销售单价。8查找每个采购员和每个供应商签订的合同的总金额,要求显示采购员姓名、供应商名称、和签订合同的总金额。三、自我测试1查找编号为A002的供应商没有供应的商品的名称select Cnamefrom supplying a,commodity b
27、where a.Cid=b.Cid and Cname not in (select Cname from commodity x,supplying y where x.Cid=y.Cid and Sid=A002)2分别使用UNION、和INNER JOIN关键字完成以下查询:查询由三高计算机公司和联想集团供应商的所有商品的商品ID。select Cidfrom supplier a,supplying bwhere Sname=三高计算机公司and a.Sid=b.Sidunionselect Cidfrom supplier a,supplying bwhere Sname=联想集团a
28、nd a.Sid=b.Sid实验六 视 图一、实验目的与要求1熟悉视图的概念,以及视图与表的联系和区别2掌握视图的定义方法3掌握对视图的查询操作4掌握对视图的更新操作,并了解视图的更新条件5掌握同时对视图和表进行操作的方法二、实验内容1定义一个名称为supplying_view的视图,要求其对应的数据是由天天食品公司供应的商品ID、商品单价。create view supplying_viewas select Sname,Cid,price from supplier a,supplying b where Sname=天天食品公司select*from supplying_view2查询采
29、购员李云和供应商天天食品公司签订的所有采购单的采购单ID、采购金额、签订日期,并将其建立为一个名称为stock_view_1的视图。create view stock_view_1as select Ename,Sname,b.CGid,CGmoney,CGdate from stock a,stockDetail b,Employee c,supplier d where a.CGid=b.CGid and a.Sid=d.Sid and a.Eid=c.Eid and Ename=李云 and Sname=天天食品公司select *from stock_view_13建立一个名称为com
30、modity_100的视图,其对应所有的库存量小于100的商品的信息。create view commodity_100as select * from commodity where Cstorage1000000select *from sale_view2使用上述建立的视图和NOT IN关键字查询在2005年签订的销售单总额没有超过100万的销售员的I D和姓名。select Eid,Enamefrom Employee where Etype=2 and Eid not in ( select Eid from sale_view)实验七 触发器与存储过程一、实验目的与要求1 熟悉触发
31、器和存储过程的用途2 掌握游标的定义和使用方法3 掌握触发器和存储过程的定义以及使用方法4 能使用触发器和存储过程解决相关问题二、实验内容1定义一个触发器,其主要用于在supplying表中插入一条记录时,检查是否该记录对应的供应商ID和商品ID已经存在于供应商表(Supplier)和商品表(Commodity)中,如果存在就插入,否则不插入。2在supplying表中插入一条记录(M0073, UU505, 1660.0),执行该插入语句后,到企业管理器中查看该条记录是否已插入,并解释原因。3定义一个触发器,其主要用于在supplier表中删除记录时,将该供应商供应的所有商品的信息一起删除。
32、4在企业管理器中查看表supplier和表supplying的当前内容,在查询分析器中通过SQL语句删除表supplier的一条记录,例如(A102, 联想集团, 北京, 1),再次通过企业管理器查看表supplier和表supplying的内容,看是否有所变化,解释变化的原因。5分别在查询分析器中执行系统存储过程sp_databases和sp_tables,解释这两个存储过程的作用。6创建一个存储过程,其根据指定的客户ID来返回该客户在2006年签订的所有销售单的明细情况。并使用该存储过程查询编号为KB001的客户在2006年签订的所有销售单的明细情况。三、自我测试1定义一个触发器,用于当s
33、upplier表中某个供应商的ID(SID)被修改后,将供应表(supplying)和采购单表(stock)中对应的供应商ID也修改过来。修改supplier表中编号为A001的供应商ID为BMW01,查看供应表和采购单表中相应记录的变化。create trigger k00dupton supplierfor updateas if update(Sid) begin declare Sid char(10) declare cur_supplier cursor for select Sid from Deleted open cur_supplier begin transaction
34、fetch cur_supplier into Sid while(fetch_status=0) begin update supplying set supplying.Sid=I.Sid from Inserted I,Deleted D where D.Sid=supplying.Sid fetch cur_supplier into Sid update stock set stock.Sid=I.Sid from Inserted I,Deleted D where D.Sid=stock.Sid fetch cur_supplier into Sid end commit tra
35、n close cur_supplier deallocate cur_supplier end 2创建一个存储过程,其根据指定的客户名称来返回该客户在2006年签订的所有销售单的总金额。并使用该存储过程查询编号为KB002的客户在2006年签订的所有销售单的总金额。create procedure procedure_customer(CUid char(30),SAccount float output)asbegin select SAccount=sum(SAmoney) from sale where CUid=CUid and year(SAdate)=2006 - group b
36、y CUidend declare SAccount floatexecute procedure_customer KB002 , SAccount outputselect SAccount 实验九 SQLServer服务器配置与安全管理一、实验目的与要求1掌握SQL Server服务器的基本配置方式2能使用企业管理器进行链接服务器的配置,并能进行初步地分布式查询3熟悉SQL Server安全机制, 配置SQL Server的身份验证模式4掌握角色、登录、用户、许可权限等概念,并能利用企业管理器进行建立以及角色地分配二、实验内容1 注册SQL Server服务器图9-12 设置SQL Se
37、rver服务器的基本属性图9-23 使用SQL Server服务器与客户端网络使用工具配置客户端和服务器端的网络协议图 9-34 使用企业管理器配置链接服务器并在查询分析器中进行分布式查询图9-45为SQL Server服务器创建新的登录,并为之分配相应的数据库角色和数据库访问权限图9-66为Supermarket数据库创建新的数据库角色,并设置相应的许可权限图9-77为supermarket数据库定义新的数据库用户,并为之指定登录名、数据库角色和许可权限图9-8三、自我测试1使用新创建的登录,通过查询分析器登录到SQL Server服务器上,在查询分析器上进行相应地操作以验证许可权限分配的情
38、况。实验十 数据库备份与恢复一、实验目的与要求1. 了解数据库备份与恢复的作用2. 掌握数据库备份与恢复的类型与方法3. 学习使用企业管理器进行数据库的完全备份、差异备份以及日志备份4. 掌握数据库还原和恢复的区别5. 学习使用已有的数据库备份和日志备份对数据库进行恢复5初步掌握使用查询分析器进行数据库备份和恢复的方法二、实验内容1使用企业管理进行supermarket数据库的完全备份2使用企业管理器进行supermarket数据库的差异备份3使用刚建立的supermarket数据库的完全备份和差异备份进行数据库的还原和恢复三、自我测试1 稍微修改supermarket数据库中的内容,使用企业管理器建立supermarket数据库的完全备份和日志备份,并使用它们进行数据