数据库系统原理实验指导书范文.docx
- 文档编号:4186759
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:23
- 大小:273.85KB
数据库系统原理实验指导书范文.docx
《数据库系统原理实验指导书范文.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验指导书范文.docx(23页珍藏版)》请在冰豆网上搜索。
数据库系统原理实验指导书范文
《数据库系统原理》
实验指导书
计算机科学与技术与学院计算机科学与技术系
二○一二年
实验一认识DBMS
一、实验目的
1.通过对某个商用数据库管理系统的安装使用,初步了解DBMS的工作环境和系统构架。
在此推荐SQLSERVER2005。
2.熟悉DBMS的安装、配置及使用。
3.搭建今后实验的平台。
二、实验平台
操作系统:
WindowsXP。
数据库管理系统:
SQLSERVER2005。
选择安装各个数据库管理系统之前,请仔细看清硬件的配置要求。
三、实验内容和要求
1.根据安装文件的说明安装数据库管理系统。
在安装过程中记录安装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今后运行数据库管理系统会有什么影响。
2.学会启动和停止数据库服务。
在正确安装SQLSERVER2005后,SQLSERVER数据库引擎服务会在系统启动时自动启动。
如果要手动地启动和停止数据库引擎服务,可以通过SQLSERVER配置管理器(SQLSERVERCONFIGURATIONMANAGER)来进行管理。
SQLSERVER配置管理器综合了SQLSERVER2000中的服务管理器、服务器网络适用工具和客户端网络实用工具的功能。
打开SQLSERVER配置管理器工具,单击“SQLSERVER2005服务”节点,其中的“SQLSERVER”服务就是我们所说的数据库引擎。
与SQLSERVER2000一样,可以通过这个配置管理器来启动、停止所安装的服务,如“SQLSERVER(MSSQLSERVER)”。
3.了解RDBMS系统的体系结构。
SQLSERVER2005是一款具有“客户机/服务器”架构的关系型数据库管理系统,它使用T-SQL语言在客户机和服务器之间传递客户机的请求和服务器的响应。
数据库体系结构:
又划分为数据库逻辑结构和数据库物理结构。
数据库逻辑结构主要应用于面向用户的数据组织和管理,如表、视图、存储过程和触发器、约束等。
数据库物理结构主要应用于面向计算机的数据组织和管理,如数据以表文件的形式存放在硬盘上。
4.了解RDBMS的管理和使用。
例如SQLSERVERManagementStudio是SQLSERVER2005种最重要的管理工具,它融合了SQLSERVER2000的查询分析器和企业管理器、OLAP分析器等多种工具的功能,为管理人员提供了一个简单的实用工具,使用这个工具既可以用图形化的方法,也可以通过编写SQL语句来实现数据库的操作。
5.初步了解RDBMS的安全性,这里主要是服务器用户的登录和服务器预定义角色。
可以尝试建立一个新的登录名,赋予其数据库管理员的角色,今后的实验可以用该登录名来创建数据库用户。
实验二交互式SQL(4小时)
一、实验目的
熟悉通过SQL对数据库进行操作。
二、实验工具
利用实验一中安装的RDBMS及其交互查询工具来操作SQL语言。
三、实验内容和要求
1.在RDBMS中建立一个学生-课程数据库,进行实验所要求的各种操作,所有的SQL操作均在此建立的新库里进行。
2.根据以下要求认真进行实验,记录所有的实验用例及执行结果。
数据定义:
基本表的创建、修改及删除;索引的创建和删除。
数据操作:
完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询);完成各类更新操作(插入数据,修改数据,删除数据)。
视图的操作:
视图的定义(创建和删除),查询,更新(注意更新的条件)。
特别说明:
实验中注意特定数据库系统(如SQLSERVER)的SQL语句格式与SQL-3标准的区别。
参考实验用例:
(一)数据定义:
一.基本表的操作
1.建立基本表
1)创建学生表Student,由以下属性组成:
学号Sno(char型,长度为9,主码),姓名Sname(char型,长度为20,唯一),性别Ssex(char型,长度为2),年龄(smallint),所在系(char型,长度为20)。
createtableStudent
(Snochar(9)primarykey,
Snamechar(20)unique,
Ssexchar
(2),
Sagesmallint,
Sdeptchar(20));
2)创建课程表Course,由以下属性组成:
课程号Cno(char型,主码,长度为4),课程名Cname(char型,长度为40),先行课Cpno(char型,长度为4,外码),学分Ccredit(smallint)。
createtableCourse
(Cnochar(4)primarykey,
Cnamechar(40),
Cpnochar(4),
Ccreditsmallint);
3)创建学生选课表SC,由以下属性组成:
学号Sno(char型,长度为9),课程号Cno(char型,长度为4),成绩Grade(smallint),其中Sno和Cno构成主码。
createtablesc
(Snochar(9),
Cnochar(4),
Gradesmallint,
primarykey(Sno,Cno),
foreignkey(Sno)referencesstudent(Sno),
foreignkey(Cno)referencescourse(Cno));
2.修改基本表:
1)向Student表增加“入学时间列”,其数据类型为日期型。
altertableStudentaddS_entrancedate;
2)将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
altertableStudentaltercolumnSageint;
3)增加课程名称必须取唯一值的约束条件。
altertableCourseaddunique(Cname);
3.删除基本表:
1)在所有的操作结束后删除Student表。
droptableStudent;
2)在所有的操作结束后删除Course表。
droptableCourse;
3)在所有的操作结束后删除SC表。
droptableSC;
二.索引操作
1.建立索引
1)为学生—课程数据库中的Student,Course,SC3个表建立索引。
其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。
createuniqueindexStusnoonStudent(Sno);
createuniqueindexCoucnoonCourse(Cno);
createuniqueindexSCnoonSC(SnoASC,CnoDESC);
2.删除索引
1)删除Student表的Stusname索引。
dropindexStusname;
(二)数据操作
一.更新操作
1,插入数据
1)在Student表中插入下列数据:
,李勇,男,20,CS
,刘晨,女,19,CS
,王敏。
女,18,MA
,张立,男,19,IS
insertintostudent(Sno,Sname,Ssex,Sage,Sdept)values('','李勇','男',20,'CS');
insertintostudent(Sno,Sname,Ssex,Sage,Sdept)values('','刘晨','女',19,'CS');
insertintostudent(Sno,Sname,Ssex,Sage,Sdept)values('','王敏','女',18,'MA');
insertintostudent(Sno,Sname,Ssex,Sage,Sdept)values('','张立','男',19,'IS')
2)在Course表中插入以下数据:
1,数据库,5,4
2,数学,null,2
6,数据处理,null,2
4,操作系统,6,3
7,PASCAL语言,6,4
5,数据结构,7,4
1,数据库,5,4
3,信息系统,1,4
insertintocourse(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4);
insertintocourse(Cno,Cname,Ccredit)values('2','数学',2);
insertintocourse(Cno,Cname,Ccredit)values('6','数据处理',2);
insertintocourse(Cno,Cname,Cpno,Ccredit)values('4','操作系统','6',3);
insertintocourse(Cno,Cname,Cpno,Ccredit)values('7','PASCAL语言','6',4);
insertintocourse(Cno,Cname,Cpno,Ccredit)values('5','数据结构','7',4);
insertintocourse(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4);
insertintocourse(Cno,Cname,Cpno,Ccredit)values('3','信息系统','1',4);
3)在SC表中插入以下数据:
1,92
2,85
3,88
2,90
3,80
insertintosc(Sno,Cno,Grade)values('','1',92);
insertintosc(Sno,Cno,Grade)values('','2',85;
insertintosc(Sno,Cno,Grade)values('','3',88);
insertintosc(Sno,Cno,Grade)values('','2',90);
insertintosc(Sno,Cno,Grade)values('','3',80);
4)将一个新学生元祖(学号:
;姓名:
陈冬;性别:
男;所在系:
IS;年龄:
18岁)插入到Student表中。
insertintostudent(Sno,Sname,Ssex,Sdept,Sage)values('','陈冬','男','IS',18);
5)将学生张成民的信息插入到Student表中。
insertintostudentvalues('','张成民','男',18,'CS');
6)插入一条选课记录:
(‘’,‘1’)。
insertintosc(Sno,Cno)values('','1');
7)对每一个系,求学生的平均年龄,并把结果存入数据库。
createtableDept_age(Sdeptchar(15),
Avg_agesmallint);
insertintoDept_age(Sdept,Avg_age)selectSdept,avg(Sage)fromstudentgroupbySdept;
2.修改数据
1)将学生的年龄改为22岁。
updatestudentsetSage=22whereSno='';
2)将所有学生的年龄增加一岁。
updatestudentsetSage=Sage+1;
3)将计算机科学系全体学生的成绩置零。
updatescsetGrade=0where'CS'=(selectSdeptfromstudentwherestudent.Sno=sc.Sno);
3.删除数据
1)删除学号为的学生记录。
deletefromstudentwhereSno='';
2)删除所有学生的选课记录。
deletefromsc;
3)删除计算机科学系所有学生的选课记录。
deletefromscwhere'CS'=(selectSdeptfromstudentwherestudent.Sno=SC.Sno);
二.查询操作
1.单表查询
1)查询全体学生的学号与姓名。
selectSno,Snamefromstudent;
2)查询全体学生的姓名、学号、所在系。
selectSname,Sno,Sdeptfromstudent;
3)查询全体学生的详细记录。
select*fromstudent;
4)查询全体学生的姓名及其出生年份。
selectSname,2011-Sagefromstudent;
5)查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示所有系名。
selectSname,'YearofBirth:
',2011-Sage,lower(Sdept)fromstudent;
selectSnameNAME,'YearofBirth:
'BIRTH,2011-SageBIRTHDAY,lower(Sdept)DEPARTMENTfromstudent;
6)查询选修了课程的学生学号。
selectdistinctSnofromsc;
7)查询计算机科学系全体学生的名单。
selectSnamefromstudentwhereSdept='CS';
8)查询所有年龄在20岁以下的学生姓名及其年龄。
selectSname,SagefromstudentwhereSage<20;
9)查询考试成绩有不及格的学生的学号。
selectdistinctSnofromscwhereGrade<60;
10)查询年龄在20-23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
selectSname,Sdept,SagefromstudentwhereSagebetween20and23;
11)查询年龄不在20-23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
selectSname,Sdept,SagefromstudentwhereSagenotbetween20and23;
12)查询计算机科学系(CS)、数学系(MA)、和信息系(IS)学生的姓名和性别。
selectSname,Sdept,SagefromstudentwhereSdeptin('CS','MA','IS');
13)查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别。
selectSname,Sdept,SagefromstudentwhereSdeptnotin('CS','MA','IS');
14)查询学号为的学生的详细情况。
select*fromstudentwhereSnolike'';
15)查询所有姓刘的学生的姓名、学号和性别。
selectSname,Sno,SsexfromstudentwhereSnamelike'刘%';
16)查询姓“欧阳”且全名为3个汉字的学生的姓名。
selectSnamefromstudentwhereSnamelike'欧阳__';
17)查询名字中第2个字为“阳”字的学生的姓名和学号。
selectSname,SnofromstudentwhereSnamelike'__阳%';
18)查询所有不姓刘的学生姓名。
selectSname,Sno,SsexfromstudentwhereSnamenotlike'刘%';
19)查询DB_Design课程的课程号和学分。
selectCno,CcreditfromcoursewhereCnamelike'DB\_Design'escape'\';
20)查询以“DB_”开头,且倒数第3个字符为i的课程的详细情况。
select*fromcoursewhereCnamelike'DB\_%i__'escape'\';
21)某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
selectSno,CnofromscwhereGradeisnull;
22)查询所有有成绩的学生学号和课程号。
selectSno,CnofromscwhereGradeisnotnull;
23)查询计算机科学系年龄在20岁以下的学生姓名。
selectSnamefromstudentwhereSdept='CS'andSage<20;
selectSname,SsexfromstudentwhereSdept='CS'orSdept='MA'orSdept='IS';
24)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
selectSno,GradefromscwhereCno='3'orderbyGradedesc;
25)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
select*fromstudentorderbySdept,Sagedesc;
26)查询学生总人数。
selectcount(*)fromstudent;
27)查询选修了课程的学生人数。
selectcount(distinctSno)fromsc;
28)计算1号课程的学生平均成绩。
selectavg(Grade)fromscwhereCno='1';
29)查询选修1号课程的学生最高分数。
selectmax(Grade)fromscwhereCno='1';
30)查询学生选修课程的总学分数。
selectsum(Ccredit)fromsc,coursewheresc.Cno=course.CnoandSno='';
31)求各个课程号及相应的选课人数。
selectCno,count(Sno)fromscgroupbyCno;
32)查询选修了3门以上课程的学生学号。
selectSnofromscgroupbySnohavingcount(*)>3;
2.连接查询
1)查询每个学生及其选修课程的情况。
selectstudent.*,sc.*fromstudent,scwherestudent.Sno=sc.Sno;
2)对上个题用自然连接完成。
selectstudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Gradefromstudent,scwherestudent.Sno=sc.Sno;
3)查询每一门课的间接先修课(即先修课的先修课)。
selectfirst.Cno,second.Cpnofromcoursefirst,coursesecondwherefirst.Cpno=second.Cno;
4)查询每个学生及其选修课程的情况,用外连接来完成。
selectstudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Gradefromstudentleftouterjoinscon(student.Sno=sc.Sno);
5)查询选修2号课程且成绩在90分以上的所有学生。
selectstudent.Sno,Snamefromstudent,scwherestudent.Sno=sc.Snoandsc.Cno='2'andsc.Grade>90;
6)查询每个学生的学号、姓名、选修的课程名及成绩。
selectstudent.Sno,Sname,Cname,Gradefromstudent,sc,coursewherestudent.Sno=sc.Snoandsc.Cno=course.Cno;
v
3.嵌套查询
1)查询与“刘晨”在同一个系学习的学生。
selectSno,Sname,SdeptfromstudentwhereSdeptin(selectSdeptfromstudentwhereSname='刘晨');
selects1.Sno,s1.Sname,s1.Sdeptfromstudents1,students2wheres1.Sdept=s2.Sdeptands2.Sname='刘晨';
2)查询选修了课程名为“信息系统”的学生学号和姓名。
selectSno,SnamefromstudentwhereSnoin(selectSnofromscwhereCnoin(selectCnofromcoursewhereCname='信息系统'));
3)找出每个学生超过他选修课程平均成绩的课程号。
selectSno,CnofromscxwhereGrade>=(selectavg(Grade)fromscywherey.Sno=x.Sno);
4)查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄。
selectSname,SagefromstudentwhereSage
5)查询其他系中比计算机科学系所有学生年龄小的学生姓名和年龄。
selectSname,SagefromstudentwhereSage
6)查询选修了1号课程的学生姓名。
selectSnamefromstudentwhereexists(select*fromscwhereSno=student.SnoandCno='1');
7)查询没有选修1号课程的学生姓名。
selectSnamefromstudentwherenotexists(select*fromscwhereSno=student.SnoandCno='1');
8)查询选修了全部课程的学生姓名。
selectSnamefromstudentwherenotexists(select*fromCoursewherenotexists(select*fromsc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 实验 指导书 范文