数据库实验二集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)实验报告册2014 / 2015 学年第2 学期系别计算机科学与技术系实验课程数据库原理专业计算机科学与技术班级姓名学号指导教师实验二——SQL语句一、实验目的1.熟悉SQL的数据查询语言,能使用SQL进行单表查询、连接查询、嵌套查询、集合查询和统计查询,能理解空值的处理;2.熟悉数据库的数据更新操作,能使用SQL语句对数据库进行数据的插入、更新、删除操作;3.熟悉SQL支持的有关视图的操作,能创建、查询及取消视图;4.了解NULL在数据库中的特殊含义,掌握使用SQL进行与空值相关的操作;二、实验预习内容在认真阅读教材及实验指导书【实验1.2 数据查询】、【实验1.3 数据更新】、【实验1.4 视图】和【实验1.6 空值和空集的处理】的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.使用SCHOOL数据库,在SQL SERVER 2000 的查询分析器中使用SQL语言完成以下操作。
请在空白处填写相应的SQL命令。
1)查询年级为2001的所有学生的名称,按编号顺序排列;2)查询所有课程名称中含有data的课程编号;3)统计所有老师的平均工资;4)查询至少选了3门课的学生编号;5)6)查询没有学生选的课程编号;7)查询既选了C++又选了Java课程的学生编号;8)查询选了C++但没选Java课程的学生编号;9)向STUDENTS表中插入“LiMing”的个人信息);10)将“LiMing”的年级改为2002;11)删除所有选了Java课程的学生选课记录;12)求出每门课的课程号、选课人数,结果存入数据库表T1中。
13)查询所有选课记录的成绩并换算为五分制(注意NULL的情况);14)查询成绩小于0的选课记录,统计总数、平均分、最大值和最小值(注意查询结果中NULL的情况);15)按成绩顺序排序显示CHOICES表中所有记录。
(使用ORDER BY排序,注意NULL的情况);16)创建视图V1,显示学生姓名、所选课名称、任课教师名;17)取消V1视图;2.使用STC数据库,在SQL SERVER 2000 的查询分析器中使用SQL语言完成以下操作。
请在空白处填写相应的SQL命令或其它内容。
1)创建视图V2,显示计算机(CS)系学生信息;(结合下面的b)小题,V2视图创建2次,分别使用/不使用WITH CHECK OPTION选项)2)插入元组(99999,张三,20岁,男,PH)到V2中,运行结果如何?(观察WITH CHECK OPTION对结果的影响);3)在V2基础上,查询所有计算机系女生信息;select * from V2where ssex=’女’3.结束本次实验三、实验课后训练1.掌握SQL SERVER中流控制语句及其它常用编程语句;1)使用查询分析器,编写代码,输出乘法口诀表。
2.自行练习实验指导书P24【实验1.2 数据查询】1.2.5自我实践部分;3.自行练习实验指导书P30【实验1.3 数据更新】1.3.5自我实践部分;4.自行练习实验指导书P36【实验1.4 视图】1.4.5自我实践部分;5.自行练习实验指导书P49【实验1.6 空值和空集的处理】1.6.5自我实践部分;四、实验报告1.SQL SERVER中变量声明的命令是什么?输出命令是什么?变量声明:局部变量需要声明,declare @变量名,空格,数据类型(声明变量)。
全局变量不需要声明。
输出命令:select (查询命令)2.SQL SERVER中实现分支和循环的语句分别是什么?分支:用case 测试表达式when 测试值1 then 结果表达式1when 测试值2 then 结果表达式2[else 结果表达式n+1]end循环:用while 布尔表达式begin 语句序列1[break] 语句序列2[continue] 语句序列3end3.在SQL SERVER里使用ORDER BY排序时,NULL值如何处理?使用GROUP BY分组时,NULL值又如何处理的?null 默认为最大值(即:asc 升序<小-->大>,null值排在最后;desc 降序<大-->小>,null值排在最前面4.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)有些较为复杂的嵌套查询,刚开始不知道如何写,然后问同学,理清了思路,并完成了编程。
在这次实验中,有好多因为中英字符问题而出现的命令错误,进行更改后就可以正常执行命令了实验三——数据库完整性与安全性一、实验目的1.理解实体完整性、参照完整性、用户自定义完整性的概念,学习三类完整性的实现,了解违反完整性的结果;2.掌握MS SQL SERVER中的有关用户登录认证及管理方法,熟练使用自主存取控制进行权限管理;二、实验预习内容在认真阅读教材及实验指导书【2.1 实体完整性】、【2.2 参照完整性】、【2.3 用户自定义完整性】、【2.4 触发器】、【2.5 综合案例】和【3.1 用户标识与鉴别】、【3.2 自主存取控制】、【3.3 视图机制在自主存取控制上的应用】、【3.4 Public角色在安全性中的应用】、【3.8 综合案例】的基础上,上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.使用SCHOOL数据库1)创建一张新表CLASS,包括Class_id(varchar(4)),Name(varchar (10)),Department(varchar(20))三个属性列,其中Class_id为主码;2)执行两次相同的插入操作(’0001’,’01csc’,’cs’),结果如何;2.使用SQL命令创建一张学生互助表,要求:包括学生编号、学生姓名、学生帮助对象的编号,每个学生有且仅有一个帮助对象,帮助的对象必须是已存在的学生。
3.使用STC数据库,修改设置,完成以下2种不同的要求,请写出对应的语句或简述操作过程:1)当更新、删除STU表中记录时,若SC表中有此学生的记录,则拒绝;2)当更新、删除STU表中记录时,若SC表中有此学生的记录,则自动更新或删除;4.使用SQL命令完成以下任务:1)创建Worker表(表结构见指导书P73)2)定义约束U1、U2,其中U1规定Name字段取值唯一,U2规定sage字段上限是28;3)插入一条合法记录;4)插入一条违反U2约束的记录,简述观察到的结果如何?并分析原因;5)去除U1约束;6)修改约束U2,令sage的值大于等于0;7)创建规则rule_sex,规定更新或插入的值只能是M或F,并绑定到Worker的sex字段;8)插入2条记录,一条满足规则rule_sex,一条违反规则,观察结果。
5.使用查询分析器创建触发器并测试,请写出相应的语句:1)为Worker表创建触发器T1,当插入或更新表中数据时,保证所操作记录的sage大于0;2)为Worker表创建触发器T2,禁止删除编号为00001的记录;3)为Worker表创建触发器T3,要求更新一个记录时,表中记录的sage要比老记录的sage的值大。
6.分别用企业管理器和查询分析器实现用户的标识并测试,请写出相应的操作过程或对应的语句:1)设置SQL SERVER的安全认证模式;2)建立名为“LiYong”的登录用户、数据库用户,默认访问SCHOOL数据库,密码为“abcd”;3)取消“LiYong”用户;7.先以sa帐号登录,要实现如下表的权限管理,请按先后顺序写出相应的SQL语句(假设所有用户尚未定义,其密码均为123),并加以必要的说明。
8.创建在SCHOOL数据库中choices上的视图CS_View,授权给计算机系讲授课程号为’10010’的数据库用户“LiYong”,让其具有视图上的SELECT权限;9.对视图CS_View上的score属性列的UPDATE权限授予用户“LiYong”,可以修改学生成绩,但不能修改其它属性列的值;10.假设SCHOOL数据库中,每个学生的登录名都为自己在STUDENTS表中的sid,实现每个学生只能查询自己选课信息,不能查询别人的成绩,也不能修改自己的成绩。
11.结束本次实验三、实验课后训练1.自行练习实验指导书P81【实验2.5 综合案例】综合案例1;2.自行练习实验指导书P122【实验3.8 综合案例】综合案例;四、实验报告1.授权给public与授权给指定用户有什么区别?实际应用中,哪个更安全些?2.SQL SERVER中的角色有什么作用?3.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)实验四——数据库编程一、实验目的1.掌握ODBC的配置;2.能编写简单的存储过程和函数,并调用;二、实验预习内容上机前请预习以下内容,并在空白处填写相应的步骤或命令。
1.配置ODBC,使用VFP中的表单,查询SCHOOL数据库中STUDENTS表中所有记录。
2.编写存储过程并调用,请写出相应命令;1)在查询分析器中,编写存储过程usp_get_stuinfo ,使用一个名为@xm能够传送进存储过程的参数。
允许以学生的姓名查询该生的基本信息;2)在查询分析器中调用存储过程查询“赵飞”同学的基本信息的语句;3.编写函数并调用,请写出相应命令;1)在查询分析器中,定义内联表值函数Fun,用于返回各职称的教师基本信息;2)在查询分析器中,使用Fun进行选择以获得“教授”职称的教师基本信息;3)在查询分析器中,编写标量函数Func,用于返回两个整数中的最大值;4)在查询分析器中,调用此函数,输出两个数中的最大值;5)在SQL SERVER中定义函数FUNS,返回指定参数的平方,配置好ODBC后,在VFP 中调用FUNS并输出结果;4.结束本次实验三、实验课后训练1.自行学习实验指导书P130【实验4.1 SQL SERVER事务的定义】;2.自行学习实验指导书P137【实验4.2 SQL SERVER 2005事务与锁】;3.自行练习实验指导书P165【实验4.6 游标及游标并发】;(P167 4.6.3 实验内容要完成)四、实验报告1.什么是ODBC2.内联表值函数、标量函数、存储过程有什么区别?3.实验总结(实验过程中出现的问题、解决方法、结果如何或其它)。