《SQL Server实训报告.docx》由会员分享,可在线阅读,更多相关《SQL Server实训报告.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL Server实训报告专 业:计算机网络技术班 级:学 号:指导老师:实训时间:2010-1L5实训地点:网络实验室成 绩:计算机教研室制join departon worker. p|I 门-*=depart.q|I 门 号join salaryon sal ary.职工号二worker.职工号where 工资=(select max(工 资)from salary)(13)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。脚本 文件名:0413.sql。脚本文件0413.sqlselect职工号,姓名from salarygroup by职工号,姓名having avg(工资
2、)(select avg(工资)from salary )5 .更新数据(1) .在depart表中插入设备处记录,部门编号为4。脚本文件名:0501.sqlo脚本文件050Lsqlinsert into depart(部门号,部门名)vahies(4,设备处)(2),在depart表中插入资产处记录,部门编号为当前表中的最大编号+1。脚 本文件名:0502.sqlo脚本文件0502.sqlinsert into depart(部门号,部门名)values(5?资产处)(3) .在worker表中插入一条记录,记录内容为职工号20,姓名陈立,性别女, 出生日期1955年3月8日,参加工作时间为
3、1975年10月10日,部门号为4。脚本文件名:0503.sql。脚本文件0503.sqlinsert into worker(职工号,姓名,性别,出生日期,参加工作,部门号)values(2O,陈立?女J955-3-8,1975-10-10,4)(4) .在worker表中插入一条记录,记录内容为职工号为最大职工号+1,姓名张三,性别男,出生日期1965年9月9日,参加工作时间为1980年10月1日, 部门号为3。脚本文件名:O5O4.sqL脚本文件0504.sqlinsert into worker(职工号,姓名,性别,出生日期,参加工作,部门号)values(121张三男? 1965-9
4、-9? 1980-10-1 ,3)(5) .修改职工1月份工资,将每个人的工资上涨10%。脚本文件名:0505.sql。脚本文件0505.sqlupdate salaryset工资=工资*(1+0.1)where month(日期)=1(6) .修改所有女性职工2月份工资,将每人的工资加上100元的医疗补贴。脚本文件名:O5O6.sqL脚本文件0506.sqlupdate salaryset工资=(工资+100)where month(日 期)=2 and,女select f生另ll from worker where salary.职工号=worker.职工号)(7) .将所有财务处女性职工
5、的参加工作时间向前推一年。脚本文件名:0507.sqL脚本文件0507.sqlupdate workerset参加工作二丫62(参加工作)-1where性别=女and部门号二T(8) .删除工资表中工资最高的记录。脚本文件名:0508.sql。脚本文件0508.sqldeletefrom salarywhere 工资=(select max(工 资)from salary)(9) .删除工资表中平均工资最高的职工的工资记录。脚本文件名:0509.sql。脚本文件0509.sqldeletefrom salarywhere 工资 in(select max(工资)from salary wher
6、e 工资 in(select avg(工资)from salary group by(salary.职工号) )(10) .删除职工为1号的职工的所有信息。脚本文件名:0510.sql。脚本文件O51O.sqldeletefrom workerwhere职工号=Tdeletefrom salarywhere职工号=T6 .视图(1)建立视图职工年龄查询,显示所有职工的年龄。脚本文件名:0601.sqlo脚本文件O6Ol.sqlcreate view vw_age as select 姓名,year(getdate()-year(出生日期)as 年龄 from worker(2)建立视图党员人数
7、统计,求出各部门的党员人数。脚本文件名:0602.sqlo脚本文件0602.sqlcreate view vw_党员人数asselect depart.部门名,count(党员否)党员人数from worker,departwhere 部门名 in (select 部门名 from depart wheredepart.部门号=0匕匚部门号)and党员否=truegroup by depart.部门名(3)建立视图2004年1月份工资查询,显示所有职工的姓名和2004年1月 份工资数。脚本文件名:O6O3.sql。脚本文件0603.sqlcreate view vw_2004年1月工资查询as
8、select姓名,工资from salarywhere 日期=2004-1 -4(4)建立视图职工平均工资查询,显示所有职工的职工号、姓名和平均工资。脚本文件名:0604.sql。脚本文件0604.sqlcreate view vw_平均工资查询 asselect职工号,姓名,avg(工资)as平均工资from salarygroup by salary.职工号,salary.姓名(5)建立视图2004年2月份工资查询,显示所有职工的职工号、姓名、部门 名和2004年2月份工资,并按部门名顺序排列。脚本文件名:0605.sql。脚本文件0605.sqlcreate view vw_2004年2
9、月份工资查询asselect worker.职工号,worker.姓名,部门名,工资from salaryjoin workeron salary.职工号二worker.职工号join departon depart. oP门号=worker.部 门号where (year(日期)=2004 and month(日期)=2)group by部门名,worke匚职工号,worker.姓名,工资(6)建立视图部门平均工资查询,显示各部门名和该部门的所有职工平均工 资。脚本文件名:0606.sql。脚本文件0606.sqlcreate view vW部门平均工资查询 asselect部门名,avg(
10、工资)平均工资from salary join workeron salary职工号二worke匚职工号join departon depart.部 f J 号二worker.部 门 号 group by部门名(7)建立视图高工资,显示有平均工资高于1200的部门名和对应的平均工资。脚本文件名:O6O7.sqL脚本文件0607.sqlcreate view vw_高工资as select部门名,avg(工资)平均工资 from salaryjoin workeron salary.职工号=worker.职工号 join departon depart.部 f J 号二worker.部 门号 g
11、roup by部门名having avg(工资)1200(8)建立视图部门类型,显示所有职工的职工号、姓名和部门类型,其中财 务处和人事处属管理部门,市场部属市场部门。脚本文件名:0608.sqlo 脚本文件0608.sqlcreate view vw_部门类型asdeclare a char( 10) set a=管理部门,select职工号,姓名,aas部门类型 from worker,departwhere worke匚部 门号二depart.部 门号set a=casewhen depart.部门名=财务处then管理部门 when depart.部门名士人事处,then管理部门, w
12、hen depart.部门名士市场部then,市场部门, end7.索引.在worker表的姓名列上创建名为workername的惟一性索引。脚本文件 名:0701.sqlo脚本文件070Lsqlcreate unique index idx_workername on worker(姓名)(2) .在worker表的出生日期列上创建名为workerborn的非聚集索引,并按从 大到小的次序排列。脚本文件名:0702.sql。脚本文件0702.sqlcreate nonclustered index idx_workerbomon worker(出生日期 desc)(3) .在salary表的
13、工资列上创建名为money的非聚集索引,并按从小到大的次序排列。脚本文件名:O7O3.sqL脚本文件O7O3.sqlcreate nonclustered index idx_money on salary(工资 asc)(4),在worker表的参加工作列上创建名为workerwork的非聚集索引,要求 强制SQL删除并重新建立索引。脚本文件名:0704.sqlo脚本文件0704.sqlcreate nonclustered index idx_workerworkon worker(参加工作)(5)在worker表中的“部门号”列上创建一个非聚集索引workerda,若该索 引已存在,则删
14、除后重建。脚本文件名:0705.sqlo脚本文件0705.sqlcreate nonclustered index idx_workerda on worker(部 门号)(6)在salary表的“职工号”和“日期”列创建聚集索引pk_salary,并且强 制惟一性。脚本文件名:O7O6.sqL脚本文件0706.sqlcreate unique clustered index pk_salary on salary(职工号,日期)8.SQL编程(1) .创建一个为worker表添加职工记录的存储过程Add worker。脚本文件 名:090Lsql。脚本文件090Lsqlcreate proc
15、edure addworker as beginselect * from workerset nocount onend(2) .创建一个存储过程Delworker删除worker表中指定职工号的记录。脚本 文件名:0902.sqlo脚本文件0902.sqlcreate proc delworker (id int)asbegindelete 职工号二id from worker end9 .安全性(1) .创建一个登录账号ABC,密码为123456。脚本文件名:1001.sql,此脚 本文件可利用企业管理器自动生成。脚本文件lOOl.sqlcreate login abc with pas
16、sword=123456(2) .为factory数据库中创建一个用户账号MGZ,并将其关联到ABC登录账 号中。脚本文件名:1002.sql,此脚本文件可利用企业管理器自动生成。脚本文件ioo2.sqlcreate user mgz for login abc(3) .在查询分析器中测试帐号ABCo10 .数据转换(1) .新建一个数据库factory 1,使用DTS向导将前面已建的factory数据库中 的所有表导入到factory 1数据库中。要求不立即运行,而是创建一个factory包, 以便以后运行。(2) .使用DTS向导将前面已建的factory数据库中的所有表(不包括视图) 导
17、出到 Factory.mdb(ACCESS 数据库)。(3) .使用DTS向导将此文件夹下的“订单.mdb(ACCESS数据库)的数据导 入到数据库factory中。实训总结本次实训时间较长,实训内容涉及面广。从数据库的创建、表的创建以及对 表中的内容进行添加、修改和删除,视图的创建,索引以及SQL编程过程的建 立等等许多内容。将这一学期所学数据库的所有知识都涉及到了。在实训中也会遇到一些问题,但我都会反复读题仔细看书最终将其解决。实 在又不会的就问问老师。但有时候还是感觉自己对这门课掌握的不是很好,有些 知识理解的不是很透彻从而导致因为一些细节上的东西而把题做错。这也是我应 该反思的,在以后
18、的学习中我一定要力争将每个问题都弄懂,不再囱冏吞枣。总而言之,这次的实训对我的帮助挺大的。不仅是对于这门课知识的掌握, 还有一些学习上的一些技巧。我会把这次实训学到的东西应有到别的学科上,总 之很感谢这次实训,也很谢谢老师这学期对我们的教导。一、实训目标掌握SQL Server数据库创建方法,掌握数据表、数据库完整性约束、基本 查询语句的使用、数据更新方法、视图索引的建立、常用数据库对象的创建及使 用、SQL编程序等多方面的综合练习,旨在强化训练,真正做到熟练掌握甚至 精通,为以后数据库维护、网络管理、编程打好基础。二、实训要求完成实训题目,并将最终结果保存在自己的FTP上(在自己的FTP帐号
19、上 建立WL3091XXSQL实训I”文件夹,将所有实训结果、脚本文件、数据库、实训 报告均保存在此文件夹下,XX代表自己的学号),所有操作尽量使用查询分析 器完成。填写如下实训报告,将脚本文件复制到相应的短线之间,复制时匹配目 标格式。实训最低要求:查询数据和数据更新要求必须用查询分析器完成,其他可在 SSMS中完成,但要求能够生成脚本文件,并能读懂其中所有代码,并可进行简单修改模仿。三、考核标准(I)平时实习纪律考勤占10%(2)实训报告占40%(3)代码文件及数据库文件占40%(4)实习总结占10%L创建数据库创建一个名称为factory的数据库,脚本文件名:OlOO.sqL此脚本文件可
20、利 用企业管理器自动生成。(1)将主数据库文件factory_Data.MDF放置在文件夹中,其文件大小自动增 长为按5MB增长。(2)将事务日志文件factory_Log.MDF放置在D:DATA文件夹中,其文件大 小自动增长为按1MB增长。脚本文件OlOO.sqlUSE masterGO/* 对象:Database factory脚本日期:11/05/2010 09:41:33 */CREATE DATABASE factory ON PRIMARY(NAME = NTactory, FILENAME = ND:datafactory.mdf , SIZE = 3072KB , MAXSI
21、ZE = UNLIMITED, FILEGROWTH = 5120KB )LOG ON(NAME = Nfactory_log FILENAME = NAdataXfactoryJog.ldf , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 1024KB )COLLATE Chinese_PRC_CI_AS2 .创建和使用表脚本文件名:0200.sql,此脚本文件可利用企业管理器自动生成。(1)建立职工表worker,其结构为:职工号:int,姓名:char(8),性别:char(2), 出生日期:datetime,党员否:bit,参加工作:
22、datetime,部门号:int。其中“职 工号”为主键。在worker表中输入如下记录:职工号姓名性别出生日期党员否参加工作部门号3陈明男05/08/45否01/01/65210陈涛男02/10/58是07/12/8427程西女06/10/80否07/10/02112李涵男04/19/65是07/10/8934李华男08/07/56否07/20/83314李艺女02/10/63否07/20/9039刘夫文男01/11/42不08/10/60211刘欣男10/08/52否01/07/7016欧阳少兵男12/09/71是07/20/9231孙华男01/03/52是10/10/7012孙天奇女03
23、/10/65是07/10/87213王小燕女02/10/64否07/10/89115魏君女01/10/70否07/10/9335余慧男12/04/80否07/10/0238张旗男11/10/80不07/10/022(2)建立部门表depart,其结构为:部门号:int,部门名:char(10)。其中,“部 门号”为主键。在depart表中输入如下记录:部门号部门名1财务处2人事处3市场部(3)建立职工工资表salary,其结构为:职工号:int,姓名:char(8),日期: datetime,工资:decimal(6/l)o其中,“职工号”和“日期”为主键。在salary表 中输入如下记录职工
24、号姓名日期工资3陈明01/04/041350.63陈明02/03/041355.610陈涛01/04/041245.810陈涛02/03/041250.87程西01/04/04750.87程西02/03/04755.812李涵01/04/041345.012李涵02/03/041350.04李华01/04/041500.54李华02/03/041505.514李艺01/04/041000.614李艺02/03/041005.69刘夫文01/04/042006.89刘夫文02/03/042011.811刘欣01/04/041250.011刘欣02/03/041255.06欧阳少兵01/04/04
25、1085.06欧阳少兵02/03/041085.01孙华01/04/041201.51孙华02/03/041206.52孙天奇01/04/04900.02孙天奇02/03/04905.013王小燕01/04/041200.013王小燕02/03/041205.015魏君01/04/041100.015魏君02/03/041105.05余慧01/04/04725.05余慧02/03/04730.08张旗01/04/04728.08张旗02/03/04733.0(4)建立worker depart和salary3个表之间的关系。注意:数据的录入可使用导入的方法,可先建立数据表结构,然后将此数据复制
26、到 excel,最后将其导入到数据库中,注意此数据中的日期格式。3个表之间的关系主要指主外键关系。脚本文件0200.sqlCREATE TABLE dbo.worker(职工号int NOT NULL,姓名char(8) COLLATE Chinese_PRC_CI_AS NOT NULL,性另”char(2) COLLATE Chinese_PRC_CI_AS NOT NULL,出生日期datetime NOT NULL,党员否bit NOT NULL,参加工作datetime NOT NULL,部门号int NOT NULL, CONSTRAINT PK_worker PRIMARY KE
27、Y CLUSTERED(职工号ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY)ON PRIMARYCREATE TABLE dbo.depart(部门号int NOT NULL,部门名char(10) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_depart PRIMARY KEY CLUSTERED(部门号ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY)ON PRIMARYCREATE TABLE dbo.salary(职工号int NOT NULL,姓名cha
28、r(8) COLLATE Chinese_PRC_CI_AS NOT NULL,日期datetime NOT NULL,工资decimal(6, DNOTNULL, CONSTRAINT PK_salary PRIMARY KEY CLUSTERED(职工号ASC,日期ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY)ON PRIMARY3 .数据库完整性脚本文件名:O3OO.sql,此脚本文件可利用企业管理器自动生成。(1)实施worker表的“性别”字段默认值为“男”的约束。(2)实施salary表的“工资”字段值限定在09999的约束。脚本文件O3OO
29、.sqlalter table worker add constraint df_性另II default男for 性别 alter table salary add constraint ch_gz check (工资)=0 and (工资)1200(11) .显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。 脚本文件名:041Lsql。脚本文件O411.sqlselect salary.职工号,salary.姓名,salary.日期,worker.性别,depart.部门名,salary.工资 from worker join depart on worker. oP 门 =depart.qP 门 号 join salary on salary.职工号二worke匚职工号 where 工资=(select max(工资)from salary)(12)显示最高工资的职工所在的部门名。脚本文件名:O412.sqlo脚本文件0412.sqlselect salary.职工号,depart.部门名,salary.工资 from worker
限制150内