《《SQL Server》实验大纲(15页).doc》由会员分享,可在线阅读,更多相关《《SQL Server》实验大纲(15页).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-SQL Server实验大纲-第 15 页SQL Server课程实验大纲一、实验的地位、目的和任务SQL Server这门课是计算机网络技术专业的专业必修课。按教学计划共有54课时,其中理论占36课时,上机实验占18课时。SQL Server是一个企业级大型关系数据库开发工具,是一门实践性很强的课程,学生在学习这门课程时,要十分重视实践环节。学生要做到独立上机操作,独立建立、管理数据库。通过实验既可以加深对教师授课内容的理解与消化,又可以积累程序调试经验,起到课堂教学达不到的效果。二、培养职业技术能力目标1掌握SQL Server软件的安装、配置。2掌握数据库和表的创建和修改。3掌握数据表
2、记录的插入、修改和删除操作。4掌握数据的检索、汇总和排序。5掌握多表信息的联合检索。6掌握建立和使用视图。7掌握数据备份、恢复与数据转换。8了解用T-SQL进行流程控制程序设计。9掌握数据索引、数据完整性约束的作用和建立。10掌握存储过程的编写和执行。11掌握触发器的创建。12了解SQL Server的权限管理与代理服务。13掌握开发平台通过ADO技术连接访问数据库。三、实验内容与要求实验一SQL Server安装、配置与操作1实验目的熟悉SQL Server 操作环境,掌握SQL Server软件的安装、配置。2课时数:1课时3实验开设属性:选开实验4实验类型:验证性实验5实验准备每名学生一
3、台电脑,配SQL Server个人版安装软件。6实验内容(1)安装SQL Server软件。(2)启动和停止SQL Server服务。(3)启用服务器网络实用工具。(4)启用客户端网络实用工具。(5)启动企业管理器(6)启动查询分析器7实验要求(1)安装SQL Server软件时选择”服务器和客户端工具”项(2)启动各项工具,熟悉运行环境。实验二数据库和数据表的创建1实验目的掌握数据库、数据表的创建,掌握企业管理器和T-SQL两种方法。2课时数:2课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容(1)创建一数据库,名称为”成绩管理”,存放在F:盘自已的文件夹中。在”成绩管理”,包括
4、四个表:学生表、课程表、专业表和选课表。四个表的结构如下所示:学生表 专业表属性名数据类型可否为空属性名数据类型可否为空学号Char(7)否专业号Char(5)否姓名VarChar(20)否专业名VarChar(20)否性别Char(2)否系部号Char(2)可出生年月Smalldatetime可专业号Char(5)否入校年份Char(4)否课程表 选课表属性名数据类型可否为空属性名数据类型可否为空课程号Char(1)否学号Char(7)否课程名称VarChar(20)否课程号Char(1)否学分Smallint可成绩Numeric可教师号Char(3)可(2)输入各表的如下记录数据:学生表学
5、号姓名性别出生年月专业号入校年份2000101李勇男1980-7-10031119992000102刘诗晨女1981-8-120031119992000103王一鸣男1982-12-200031220012000104张婷婷女1985-5-90031220002001101李敏女1989-3-90131119992001102贾向男女1982-9-30131120002001103陈李宝男1981-5-70131119992001104自已名称自已性别1986-8-6013112001课程表课程号课程名称学分老师号1数据库41012离散数学31023管理信息系统21034操作系统41045数据
6、结构41056数据处理21067C语言4107专业表专业号专业名系部号00311计算机软件1000312计算机应用1001311软件工程1001312制图1101313电工12选课表学号课程号成绩2000101192200010138820001015862000102120001026552000103395200010367820001041542000104620011012702001101460200110228020011031902001103383200110347020011037566实验要求(1)用企业管理器和T-SQL语句两种方法做。(2)把创建好的数据库和表保存在F:
7、SQL目录下,以备下次使用。实验三数据库表结构修改和表操作1实验目的熟悉数据库、表结构的修改方法,掌握数据表记录的录入、修改、删除的界面操作和T-SQL语句。2课时数:1课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容针对实验二的四个表,用企业管理理器 、SQL语句完成以下各项操作:(1)给 “成绩管理”数据库增加一个数据文件,存入到与当前.mdf文件不一样的文件夹(自已决定)中。(2)将 “成绩管理”数据库卸除(3)将 “成绩管理”数据库附加进来(4)删除所有.ndf文件(5)给学生表增加属性:“民族”,数据类型为char(8),默认值为“汉族”;“身份”,数据类型为char(8
8、);“通讯地址”,数据类型为char(50);“备注”,数据类型为text,允许空。(5)删除学生表新增的属性“身份”。(6)”通讯地址”的类型修改为varchar(50)。(7)给选课表增加属性:“学期号”,数据类型为char(1),允许空。(8)向选课表中插入记录(“2000103”,“5”,80)。(9)给学号为“2001101”的学生的2号课程成绩加10分。(10)修改学号为“2001103”的“数据处理”的成绩为89分。(11)删除学号为“2000104”的学生的成绩记录。(12)将01311班的全体学生的成绩置零。(13)删除1999级计算机软件的全体学生的选课记录。(14)学生李
9、勇已退学,从数据库中删除有关他的记录。6实验要求用企业管理理器和SQL语句完成以上各项操作。实验四数据表的查询1实验目的熟悉SELECT语句的基本语法,熟练掌握数据表的查询、统计、排序、分类和连接查询方法。2课时数:4课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容针对“成绩管理”数据库,用T-SQL语句完成以下各项查询:(1)找出所有被学生选修了的课程号,要求显示信息不重复。(2)找出01311班女学生的个人全部信息。(3)找出01311、01312班的学生姓名、性别、年龄。(4)找出所有姓李的学生的个人信息。(5)找出所有姓名带“李”字的学生的个人信息。(6)找出3号课程成绩在
10、80-100分数段的学生选课成绩信息。(7)查询成绩分数为60、70、80、90中任一个的学生选课成绩信息。(8)找出所有姓为李、张、刘学生的个人信息。(9)找出所有选修了课但成绩未登记的学生的选课信息。(10)找出学生表中所有含有“男”字的记录信息。(11)找出课程名为操作系统的平均成绩、最高分、最低分。(12)找出选修了课程操作系统的学生人数。(13)查询选修了3号课程的学生学号及其成绩,并按成绩的降序排列。(14)查询3号课程成绩高分数的前5名。(15)查询全体学生的信息,要求查询结果按班级号升序排列,同一班级学生按年龄降序排列。(16)求每个课程号及相应的选课人数。(17)查询每一个班
11、男、女同学的人数和每一个班的总人数及学生总数。(18)查询每一个班男、女同学的人数和每一个班的总人数以及学生中男、女的人数与学生总数。(19)查询选修3门以上课程的学生学号。(20)在选课表中查找各学生的平均成绩(21)查找所有学号以”2000”开头的学生男、女同学个数(22)在选课表中查找各学生的平均成绩,并按平均成绩降序排序。(23)在选课表中查找平均成绩大于60分的学生平均成绩。(24)在选课表中查找平均成绩大于80分学生,并按平均成绩降序排序。(25)在成绩表中查找各门课都大于60分的学生的平均成绩。6实验要求将正确的操作方法记录下来。实验五链接查询和子查询1实验目的熟悉T-SQL语句
12、的表数据的基本查询语法,熟练掌握数据表的子查询、链接查询、统计的方法。2课时数:2课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容针对“成绩管理”数据库,用T-SQL语句完成以下各项查询:(1)找出学生李勇所在专业的学生人数。(2)找出选修了课程的学生人数。(3)找出与李勇在同一专业的学生信息。(4)找出所有与李勇有至少一门相同选修课程的学生信息。(5)找出年龄介于学生李勇的年龄和25岁之间的学生信息(假设李勇的年龄小于25)。(6)找出选修了课程操作系统的学生的学号和姓名。 (7)找出所有没有选修001号课程的学生姓名。(8)找出至少选修了与李勇所选课程的学生信息(可考虑多个语句
13、)。(9)找出2000级计算机软件班的成绩为空的学生姓名。(10)最少选修了2门选修课的学生姓名。(11)求00311专业的平均成绩最高的学生。6实验参考(1)SELECT COUNT(*) FROM 学生 WHERE 专业号 IN (SELECT 专业号 FROM 学生WHERE 姓名=李勇)(2)SELECT DISTINCT COUNT(*) FROM 选课 (3)SELECT * FROM 学生 WHERE 专业号 IN (SELECT 专业号 FROM 学生信息WHERE 姓名=李勇)(4)SELECT * FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号 I
14、N (SELECT 课程号 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 姓名=李勇)(5)SELECT * FROM 学生 WHERE (year(getdate()-year(出生年月) BETWEEN (SELECT year(getdate()-year(出生年月) FROM 学生 WHERE 姓名=李勇) AND 25(6)SELECT A.学号,姓名 FROM 学生 A,选课 B WHERE A.学号=B.学号 AND课程号=(SELECT 课程号 FROM 课程 WHERE 课程名=操作系统)(7)SELECT 姓名 FROM 学生,选课 WHERE学生.学号
15、=选课.学号 AND 学生.学号 NOT IN (SELECT 学号 FROM 选课 WHERE 课程号=001)(8)方法一:SELECT 姓名 FROM 学生 WHERE 学号 IN(SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(distinct 课程号)=(select count(*) from 课程)方法二:SELECT 姓名 FROM 学生信息 WHERE NOT EXISTS(SELECT 课程号 FROM 课程表WHERE NOT EXISTS(SELECT * FROM 选课 WHERE 选课.学号=学生.学号 AND 选课.课程号=课
16、程.课程号)(9)SELECT 姓名 FROM 学生 WHERE 入校年份=2000 AND 专业号=(SELECT 专业号 FROM 专业 WHERE 专业名=计算机软件)AND 学号 IN (SELECT 学号 FROM 选课 WHERE 成绩 IS NULL)(10)SELECT 姓名 FROM 学生 WHERE 学号 IN (SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(课程号)=2)(11)SELECT * FROM 学生 WHERE 专业号=00311 AND 学号 IN (SELECT 学号 FROM 选课 GROUP BY 学号 HAVI
17、NG AVG(成绩)=ALL (SELECT AVG(成绩) FROM 选课 GROUP BY 学号)7实验要求将正确的操作方法记录下来,有些题目可以采用两种以上方法。实验六创建和使用视图1实验目的熟悉视图的作用,掌握使用企业管理器和T-SQL两种方法建立和使用视图。2课时数:1课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容(1)建立00312专业选修了001号课程的学生视图Stu_01312_1。(2)建立00312专业选修了1号课程并且成绩不及格的学生视图Stu_00312_2。(3)建立视图Stu_year,由学生学号、姓名、年龄组成。(4)查询20岁以上的学生姓名。(5)
18、查询00312专业选修了1号课程并且成绩不及格的学生的学号、姓名、年龄。(6)分别查询上面视图的全部信息、按条件查询的信息、进行统计查询的信息。6实验要求用用企业管理器和SQL语句完成以下各项查询。并将脚本内容保存在自己的文件夹中。实验七T-SQL程序设计1实验目的掌握变量的作用、局部变量的定义和赋值;掌握常用函数的用法;掌握if语句和CASE语句的简单应用2课时数:2课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容(1)将系统时间的年、月、日分别找出,并分别存在3个变量中,再在屏幕上显示出来(要有年、月、日的标题)。(2)用print语句显示上题的提示和年、月、日的数。(3)查找
19、李勇的1号课程成绩,用提示显示成绩:若大于85分,提示为“李勇同学的1号课程成绩为优,分数是:”否则,提示为”李勇同学的1号课程成绩未达优,分数是:”(4)用if语句写出T-SQL语句:从”学生成绩”库中检索”操作系统”课程成绩并将成绩划分成四个等级:低于60分者为差,大于或等于60分而低于75分者为中等,大于或等于75分而低于85者为良好,大于或等于85分者为优秀,其他情况,其他情况判为无成绩。(5)统计数据库表中1999、2000、2001年每年的男、女、水利、电力、计算机系人数。6实验参考(3)USE 成绩管理DECLARE score int, name char(8)set name
20、=李勇Select score=成绩 from 选课表 where 课程号=002 and 学号 in (select 学号 from 学生信息 where 姓名=name )if score=85 print 李勇同学的1号课程成绩为优,分数是:+ cast(score as char)else print 李勇同学的1号课程成绩为优,分数是: +convert(char,score)(4)USE成绩管理GODECLARE stu_cur1 CURSOR SCROLL_LOCKS FOR SELECT 学号,成绩 FROM 选课表OPEN stu_cur1DECLARE no int,sco
21、re intFETCH NEXT FROM stu_cur1 INTO no,scoreprint convert(varchar,no)+的成绩是+convert(varchar,score)WHILE(FETCH_STATUS=0)BEGIN IF score=85 PRINT convert(varchar,no)+的成绩是优秀ELSE IF score=75 PRINT convert(varchar,no)+的成绩是良好ELSE IF score=60 PRINT convert(varchar,no)+的成绩是中等 ELSE PRINT convert(varchar,no)+的成
22、绩是差FETCH NEXT FROM stu_cur1 INTO no,scorePRINT convert(varchar,no)+的成绩是+convert(varchar,score)ENDCLOSE stu_cur1DEALLOCATE stu_cur1(5)select 入校年份,男=case 性别 when 男 then 1when 女 then 0end, 女=case 性别 when 男 then 0when 女 then 1end,水利=case 专业号when 00311 then 1else 0end,电力=case 专业号 when 00312 then 1else 0e
23、nd,计算机=case 专业号when 00313 then 1else 0endinto #temp2from 学生select 入校年份,sum(男) as 男,sum(女) as 女,sum(水利) as 水利,sum(电力) as 电力,sum(计算机) as 计算机 from #tempgroup by 入校年份 with rollup7实验要求将正确的操作方法记录下来。实验八数据完整性技术1实验目的了解数据完整性技术,熟悉表约束的概念,掌握使用企业管理器和T-SQL语句对数据表设置各种约束。2课时数:1课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容:(1)定义两个用户
24、自定义类型:stunum: varchar型,长度为9cournum: char 型,长度为5给学生、专业、课程、选课四个表中的学号设置为stunum类型,给课程号设置为cournum类型。(2)通过上例写出用户自定义类型的作用。(3)给现有的学生表、专业表、课程表、选课表添加主键(即主键约束).(4)关系图方式给该四个表设置关联(即外键约束).(5)删除除四个表之间的关联.(6)T-SQL语句设置四个表之间的关联,再用关系图方式检查是否已正确设置关联。(7)四个表设置关联后,检查更新和删除的效果: 更新专业表的00311专业号为00211 删除学生表的李勇的记录 删除课程表的001号课程记录
25、6实验要求分别用企业管理器和T-SQL语句实现以上操作。实验九存储过程1实验目的掌握存储过程的类型、主要作用、存储过程定义中排除的语句、用企业管理器创建存储过程和过程调用方法、过程输入参数的作用。2课时数:1课时3实验开设属性:必开实验4实验类型:验证性实验5练习内容(1)用企业管理器创建一个名为“seach”的存储过程,内容为: 查找00311班学生的”操作系统”成绩,并按降序排序; 并显示不及格学生的人数。(2)运行第(1)题的存储过程,显示结果。(3)将第(1)题用T-SQL语句创建,并将存储过程命名为stu_seach2。(4)创建一个名为“kc_seach”的存储过程,内容为: 查找
26、00311专业学生的任一门成绩,并按降序排序; 并显示不及格学生的人数。(5)使用第(4)题的存储过程,分别查询操作系统、C语言、VB的成绩情况。(6)创建一个名为“kc_seach2” 的存储过程,内容为: 查找任一专业学生的任一门成绩,并按降序排序; 并统计全体学生和不及格学生的人数,并能把统计结果带出过程之外使用。(7)调用”kc_seach2” 存储过程: 查询00311专业学生的VB成绩情况,并计算其不及格率; 查询00312专业学生的”操作系统”成绩情况,并显示其不及格人数;(8)对第(7)题做修改,使其能返回过程执行的状态。6实验参考(3)CREATE PROC stu_seac
27、h2 AS SELECT 姓名,成绩 FROM 选课 A,学生 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=操作系统 and 专业号=00311 ORDER BY 成绩 DESCSELECT COUNT(*)AS 不及格人数 FROM 选课 A,学生信息 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=操作系统 and 专业号=00311 AND 成绩60GO(4)CREATE PROC kc_seach cour varchar(10)AS SELECT 姓名,成绩 FROM 选课 A
28、,学生信息 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour and 专业号=00311 ORDER BY 成绩 DESCSELECT COUNT(*)AS 不及格人数 FROM 选课 A,学生信息 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour and 专业号=00311 AND 成绩60GO(5)EXEC kc_seach 操作系统EXEC kc_seach C语言EXEC kc_seach VB(6)CREATE PROC kc_seach2 cour varchar
29、(10), sp varchar(5), qt int OUTPUT ,bjg int OUTPUT AS SELECT 姓名,成绩 FROM 选课 A,学生 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour and 专业号= sp ORDER BY 成绩 DESCSELECT bjg=COUNT(*)FROM 选课 A,学生 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour AND 专业号= sp AND 成绩60SELECT qt=COUNT(*)FROM 选课 A,学生
30、 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour AND 专业号= spGO(7)DECLARE b int ,t intEXEC kc_seach2 VB,00311,b OUTPUT,t OUTPUTPRINT 00311专业学生的VB不及格率为 + cast(b/t as char)GoDECLARE b int ,t intEXEC kc_seach2 操作系统,00311,b OUTPUT,t OUTPUTPRINT 00311专业学生的操作系统不及格人数为 + cast(b as varchar)(8)CREATE PR
31、OC kc_seach2 cour varchar(10), sp varchar(5), qt int OUTPUT ,bjg int OUTPUT AS DECLARE ErrorSave int SET ErrorSave =0 SELECT 姓名,成绩FROM 选课 A,学生信息 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号 AND C.课程名称=cour and 专业号= sp ORDER BY 成绩 DESCSELECT bjg=COUNT(*)FROM 选课 A,学生信息 B,课程 C WHERE A.学号=B.学号 AND A.课程号=C.课程号
32、 AND C.课程名称=cour AND 专业号= sp AND 成绩60SELECT qt=COUNT(*)FROM 选课表 A,学生信息 B,课程表 C WHERE A.学号=B.学号 AND A.课程号=C.课程号AND C.课程名称=cour AND 专业号= spIF(ERROR0)SET ErrorSave = ERROR查询执行成功,则返回0,否则返回最后的错误代码。RETURN ErrorSave GO测试过程:DECLARE b int ,t int, recode int,EXEC recode =kc_seach2 VB,00311,b OUTPUT,t OUTPUTPR
33、INT 00311专业学生的VB不及格率为 + cast(b/t as varchar)PRINT返回值是:+CAST(retcode AS varchar)7实验要求测试所做过程是否正确,并将正确的操作方法记录下来。实验十 触发器1实验目的了解触发器的作用、使用场合;掌握触发器的类型和用企业管理器创建简单的触发器,实现触发提示;掌握创建触发器的T-SQL基本方法。2课时数:1课时3实验开设属性:必开实验4实验类型:验证性实验5实验内容(1)创建一个名为“Ins_kc“的触发器,实现:在插入选课表的一条学生记录后,触发触发器,显示该记录,并显示“同学的信息成功插入!”(2)创建一个名为“Del
34、_kc“的触发器,实现:在删除选课表的一条学生记录后,触发触发器,显示该记录,并显示“同学的课程成功删除!”(3)创建一个名为“Del_stu“的触发器,实现:在删除学生表的一条学生记录后,触发触发器,使该学生的学生记录也从选课表中删除。并显示“删除成功!”(4)创建一个名为“Upd_stu”的触发器,实现:在更改学生表的学生资料后,触发触发器,显示更改前、更改后的学生记录和显示“更新数据库成功!”。(5)创建一个名为“Upd_stu_upd”的触发器,实现:在更改一个学生表的学号后,触发触发器,使成绩表中该学生的学号也相应的更改。(6)先设置学生表与选课表之间的关联(外健约束),再试创建一个
35、名为“Del_kc”的触发器,实现:在删除选课表的一条学生记录后,触发触发器,显示该记录,并显示“同学的课程成功删除!”6实验参考(1)Create trigger Ins_kc on 选课表for insert asdeclare xh varchar(9) select xh=学号 from inserted print xh+同学的信息成功插入测试:insert into 选课表(学号,课程号,成绩) values(2001013,004,90)(2)CREATE TRIGGER Del_kc1 ON 选课表FOR DELETE ASDECLARE xh varchar(9) selec
36、t xh=学号 from deleted print xh+同学的信息成功删除测试:delete from 选课表 where 学号=2001013(3)CREATE TRIGGER Del_stu ON 学生信息FOR DELETE ASDECLARE xh varchar(9) select xh=学号 from deleted delete from 选课表 where 学号=xh print xh+同学的信息成功删除检测:delete from 学生信息 where 学号=2001013(4)CREATE TRIGGER upd_stu ON 学生信息FOR UPDATE ASDECL
37、ARE xh varchar(9) select * from deleted select * from inserted print 更新数据库成功测试:update 学生信息 set 性别=vv where 学号=20010147实验要求测试所做触发器是否能成功触发,若不能请分析原因,将正确的触发器记录下来。实验十一:ADO连接技术1实验目的熟悉应用程序开发环境(VB)使用ADO连接SQL Server数据库的方法,掌握使用VB环境和T-SQL 语句进行表数据的添加、删除、修改、查询、浏览。2课时数:2课时3实验开设属性:选开实验4实验类型:验证性实验5实验内容:(1)用VB创建一名为“
38、XSGL“的工程项目,创建一菜单项”原始信息录入”,其子菜单有:专业信息录入、学生信息录入、课程信息录入、选课信息录入(2)分别为每个录入创建录入、修改、删除、查询、浏览功能,要求用SQL语句做。(3)调试程序至正常运行6实验参考步骤(1)执行VB应用程序,创建“标准EXE”工程项目,保存为XSGL.vbp。(2)连接数据库前首先要在VB菜单中“工程”“引用”从中选择“Microsoft activeX Data objects 2.6 library”和“Microsoft activeX Data objects recordset 2.6”两个组件,这是在连接数据前所必做的工作。(3)程
39、序主窗口:单击“工程”“添加MDI窗体”,保存为frmMDI。(4)主窗口创建菜单:单击“工具”“菜单编辑器”,进行创建菜单。(5)单击工程右键的“添加”“窗体”,添加专业信息录入窗体,放入控件,利用“ADODB.connection”和“ADODB.recordset”实现窗体数据与数据库数据的连接交换,保存为zylr.frm。(6)类似创建其他录入窗体表单,分别保存学生信息录入为:xslr.frm,保存课程信息录入为kclr.frm,保存选课信息录入为:xklr.frm。7实验要求学生已较熟练掌握VB语言,重点是利用ADO连接SQL Server数据库的方法,最后在SQL Server中检测表中数据是否被编辑。