实验1 数据库及数据定义
1、创建一个名为XSCJ的数据库,其初始大小为5MB,最大大小10MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
2、将以上XSCJ数据库的主数据文件的最大大小改为不限制。
3、参照教材82页例3.5、例3.6、例3.7分别建立Student表、Course表和SC表,并录入数据库表中相应元组。
4、分别采用SQL编程模式和设计模式修改Course表,为其增加一列开课学期,数据类型自行定义。
5、为Course表的Cname列建立一个唯一索引,索引名Cname_idx。
6、分离数据库XSCJ并拷贝文件至U盘保存好,用于下次实验;然后再将其附加上。
7、删除唯一索引Cname_idx。
8、删除基本表Student。
实验2 数据查询
将上次实验课的学生成绩数据库(XSCJ)附加到SQL SERVER中,录入数据后做如下查询。
1) 查询选修了课程的学生的学号;
2) 查询全体学生的姓名和出生年份,并将列别名改为XM和CSNF;
3) 查询年龄在18到20(包括18岁和20岁)之间学生的学号、姓名和系。
4) 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
5) 用LIKE查询课程名为DB_ S的课程号和学分。
6) 查所有有成绩的学生学号和课程号。
7) 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄升序排列
8) 查询选修了课程的学生人数。
9) 计算1号课程的学生平均成绩。
10) 查询有2人以上(含2人)同学选修课程的课程号。
11) 查询1号课程的间接先修课。
12) 查询每个学生的学号、姓名、选修的课程名及成绩。
13) 找出每个学生高于他选修课程平均成绩的课程号。
实验3 数据更新和视图
将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。
1) 将一个新学生元组(学号:95007;姓名:张娜丽;性别:女;所在系:IS;年龄:18岁)插入到Student表中。
2) 插入一条选课记录,插入一条选课记录( '95007','1 ')。
3) 对每一个系,求学生的平均成绩,并把结果存入数据库。
(建立一张表,然后通过子查询将结果插入表中。)
4)将全体学生的年龄增加一岁。
5)将信息系全体学生的成绩置零。
6)删除95001学生的记录。
7)删除信息系所有学生的选课记录。
8)建立计算机学生的视图CS_S。(视图中包括学号,姓名,年龄,系),并要求进行修改和插入操作时仍需保证该视图只有计算机系的学生。(视图中包含的属性名称自拟)
9)向CS_S视图中插入分别插入两条信息,如果不能插入说明原因。
(学号:95002;姓名:李华华;所在系:IS;年龄:18岁)
(学号:95003;姓名:王冬冬;所在系:CS;年龄:20岁)
10)利用CS_S视图完成以下查询。
查询计算机学生年龄小于20岁的学生(学号、年龄)
查询计算机系选修了2号课程的学生(学号、姓名)。
实验4 数据库的安全性
实验内容
将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。
(1)在SQL Server Management Studio中创建三个登录帐户:log1、log2、log3。
(2)利用前面建立的XSCJ数据库,用log1登录,能否操作XSCJ数据库?为什么?
(3)将log1、log2、log3映射为XSCJ数据库中的用户。
注意:此映射步骤会为登陆名log1在XSCJ中自动建立同名数据库用户log1。log2和log3同理。
(4)用log1登录,能否访问XSCJ数据库?为什么?
(5)授予log1、log2、log3具有对Student、Course、SC三张表的查询权。并且log1有权将查询SC表的权限授予其他用户。
(6)分别用log1、log2、log3登录,对上述三张表执行查询。
(7)分别用log1、log2登陆,在查询分析器中执行以下语句,用来授予log3 对SC表的访问权限,会出现什么情况?
实验5 数据库的完整性
将学生成绩数据库(XSCJ)附加到SQL SERVER中,完成如下实验任务。
(1)录入或变更数据,验证所建立的实体完整性规则及其违约处理。
(2)录入或变更数据,验证所建立的参照完整性规则及其违约处理。
(3)自行设定某些列,使得其不允许取空值。
(4)自行设定某些列,使得该列值不允许重复。
(5)自行设定某些列的默认值。
(6)用Check短语限定考试成绩的取值范围在0到100之间。
(7)为Student表设计一个触发器,使得新增一个学生时,自动为其分配一个学号。
实验6 数据库编程