辽东学院自编教材
《数据库原理》实验指导书
鲁琴 李荣霞 编
(信息管理与信息系统专业用)
信息技术学院
2011 年 1 月
目
录
实验一 SQL SERVER 环境、数据定义与数据更新............. 1
实验二 数据查询........................................................................6
实验三 数据安全性..................................................................10
课程设计...................................................................................... 12
1
实验一 SQL Server 环境、数据定义与数据更新
实验类型:
验证
实验课时: 2
指导教师:
时
间:20
年 月 日 课
次:第
节 教学周次:第
周
实验分室:
一、 实验目的
实验台号:
实 验 员:
1. 熟悉 SQL Server 2000 开发环境,了解各常用工具的使用。
2. 掌握数据库服务器的本机注册,熟悉网络中其他数据库服务器的注册。
3. 掌握数据库的创建、删除。
4. 熟练掌握命令方式下各种难度表的创建。
5. 掌握命令方式下不同类型索引的创建与删除。
6. 熟练掌握命令方式下对表中数据的增、删、改。
二、 实验内容及要求
要将所有实验内容写在“实验结果”,并在本实验完成时完成实验报告并上交。
1. 创建数据库
要求:
(1) 创建的数据库名为你的姓名。
(2) 在默认路径下建库,能指出这个默认的路径。
(3) 会在某一盘符下以你的班级姓名学号命名的文件夹中创建数据库。
2. 定义基本表
要求:
(1) 在建好的数据库中用命令方式创建三个关系,分别为学生关系 student、课程关系 course、
选课关系 sc。
(2) 学生关系的关系模式为:student(sid,sname,ssex,sage, sdept),各字段分别代表学号、姓名、
性别、年龄、所在系。sid 设为主键。
(3) 课程关系的关系模式为:course(cid,cname,credit),各字段分别代表课程号、课程名、学
分。cid 设为主键。
(4) 选课关系的关系模式为:sc(sid,cid,score), 各字段分别代表学号、课程号、成绩。cid
和 sid 为复和主键,sid 和 cid 为外键。
(5) 各字段数据类型要设置恰当,并对 ssex、score 设置合理的约束。
(6) 将建表命令存成脚本文件,可存为一个文件也可存为独立的多个脚本文件。
3. 修改基本表
要求:
(1) 向 student 表增加“入学时间”列,其数据类型为日期型。
(2) 将 course 表中的 cname 列加宽到 60 个字符。
(3) *在 student 表中增加完整性约束定义,使 sage 取值在 15-40 之间。
(4) *增加课程名称必须取唯一值的约束条件。
(5) 删除 student 表中“入学时间”列。
4. 删除基本表
要求:
*删除 sc 表。
5. 索引的建立、删除
要求:
(1) 为表 sc 按学号升序和课程号降序建唯一索引 sci。
(2) *在实例数据库 pubs 中,为表 authors 在 au_id 上建立聚集索引。
(3) 删除表 sc 的索引 sci。
6. 插入数据
要求:
在建好的 3 个表 student,course,sc 中各插入 2 条记录,要求内容如下。用命令方式写出
相关命令(注意顺序):
credit
3
4
score
54
70
sage
22
21
sdept
国际贸易
Course
cid
C801
C802
Sc
sid
0009001
0009002
student
sid
0009001
cname
高等数学
C++语言
cid
C801
C802
sname
葛文卿
ssex
女
男
郑秀丽
0009002
7. 修改数据
要求:
(1) 将“郑秀丽”的系改为“国际贸易”系。
(2) 将所有学生的成绩提高到原来的 1.1 倍。
(3) 将所有学生的年龄加 1 岁。
(4) 将“国际贸易”系所有学生的成绩置零。
8. 删除数据
要求:
(1) 删除学号为“0009002”的学生记录。
(2) 删除所有学生选课记录。
(3) 删除计算机科学系所有学生的选课记录。
三、 实验结果
--创建基本表
--建立学生表
2
create table Student(
sid char(7) not null primary key,
sname char(5),
ssex char(1),
sage int,
sdept char(20));
--建立课程表
create table Course(
cid char(4) not null primary key,
cname char(20),
credit float,);
--成绩表
create table Sc(
sid char(7),
cid char(4),
score int,
primary key(sid,cid),
foreign key(sid)references Student(sid),
foreign key(cid)references Course(cid));
--修改Course的cid长度,失败
alter table Course alter column cid char(4);
--删除course表
drop table Course;
--3.修改基本表
--向student表增加“入学时间”列,其数据类型为日期型
alter table Student add 入学时间 date;
--将course表中的cname列加宽到个字符
alter table Course alter column cname varchar(60);
--*在student 表中增加完整性约束定义,使sage取值在-之间
alter table Student
--*增加课程名称必须取唯一值的约束条件
--删除student表中“入学时间”列
alter table Student drop column 入学时间;
--5.索引的建立,删除
--为表sc按学号升序和课程号降序建唯一索引sci
create unique index sci on Sc(sid asc,cid desc);
--*在实例数据库pubs中,为表authors在au_id上建立聚集索引
--删除表sc的索引sci
drop index Sc.sci;
--6.插入数据
/*在建好的个表student,course,sc中各插入条记录
Course
cid cname
C801 高等数学 3
credit
3
C801
C802
54
70
C++语言 4
C802
Sc
sid cid score
0009001
0009002
student
sid sname
0009001
0009002
*/
insert into Course(cid,cname,credit)values('C801','高等数学',3);
insert into Course values('c802','c++语言',4);
ssex
葛文卿 女 22 国际贸易
郑秀丽 男 21
sage
sdept
insert into Student(sid,sname,ssex,sage,sdept)values('0009001','葛文卿','女
',22,'国际贸易');
insert into Student (sid,sname,ssex,sage,sdept)values('0009002','郑秀丽','男
',21);
--7.修改数据
--() 将“郑秀丽”的系改为“国际贸易”系es
update Student set sdept='国际贸易' where sname='郑秀丽';
--() 将所有学生的成绩提高到原来的.1倍
update Sc set score=score*1.1;
--() 将所有学生的年龄加岁
update Student set sage=sage+1;
--() 将“国际贸易”系所有学生的成绩置零
update Sc set score=0 where sid in (select sid from Student where sdept='国际
贸易');
--8.删除数据
--(1) 删除学号为“0009002”的学生记录
DELECT FROM Student WHERE sid=’0009002’;
--(2) 删除所有学生选课记录
Delect from Sc;
--(3) 删除计算机科学系所有学生的选课记录
Delect from Sc where (select cid from Course where cname=’计算机科学’);
四、 实验中遇到的问题及解决方法
4
实验操作
报告书写
出勤和课堂纪律
课堂提问
(40%)
(40%)
(10%)
(10%)
本次
实验
成绩
项目及比例
得分
成绩合计
教师签字:
批改日期:
5
实验二 数据查询
实验类型:
设计
实验课时:
2
指导教师:
时
间:20
年 月 日 课
次:第
节 教学周次:第
周
实验台号:
实 验 员:
实验分室:
一、 实验目的
1. 掌握查询的基本语法格式。
2. 熟练掌握单表查询。
3. 掌握连接查询。
4. 熟悉嵌套查询。
二、 实验内容及要求
要求将所有实验内容写在“实验结果”,并在本实验完成时完成实验报告并上交。
对实验一所创建的数据库中的三个表:student、course 和 sc,用 SQL 完成下面的操作。
1. 简单查询
(1) 查询全体学生的学号与姓名。
(2) *查询全体学生的姓名及其出生年份。
(3) *查询选修了课程的学生学号。
(4) 查询平均成绩大于 60 分的课程号和平均成绩。
(5) 查询考试成绩有不及格的学生的学号。
(6) 查询年龄不在 20-25 岁之间的学生学号、姓名和年龄。
(7) *查询计算机系、国际贸易系、数学系学生的姓名和性别。
(8) *查询有多少学生专业不确定。
(9) *查询所有姓刘的学生的姓名、学号和性别。
(10) 查询名字中第 2 个字为“阳”字的学生的学号、姓名。
(11) 查询所有不姓张的学生姓名。
(12) *查询选修课程号为“c801”或“c802”且分数不低于 90 分的学生的学号、课程号和成
绩。
(13) *查询没有考试成绩的学生的学号和课程号。
(14) *查询选修课程号为“c801”的学生的学号及成绩,按成绩降序排列。
(15) 查询选修了课程的学生人数。
(16) 查询各个课程号及相应的选课人数。
(17) 查询选修了 3 门以上课程的学生学号。
2. 复杂检索
(1) *查询单科成绩不及格的学生的学号、姓名、课程名、系别及成绩。
(2) *查询选修了 2 门以上课程的学生学号。
6