数据库系统原理实验指导书范文Word文件下载.docx

上传人:b****5 文档编号:17102773 上传时间:2022-11-28 格式:DOCX 页数:23 大小:273.85KB
下载 相关 举报
数据库系统原理实验指导书范文Word文件下载.docx_第1页
第1页 / 共23页
数据库系统原理实验指导书范文Word文件下载.docx_第2页
第2页 / 共23页
数据库系统原理实验指导书范文Word文件下载.docx_第3页
第3页 / 共23页
数据库系统原理实验指导书范文Word文件下载.docx_第4页
第4页 / 共23页
数据库系统原理实验指导书范文Word文件下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据库系统原理实验指导书范文Word文件下载.docx

《数据库系统原理实验指导书范文Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验指导书范文Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。

数据库系统原理实验指导书范文Word文件下载.docx

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'

);

刘晨'

女'

19,'

王敏'

18,'

MA'

张立'

IS'

2)在Course表中插入以下数据:

1,数据库,5,4

2,数学,null,2

6,数据处理,null,2

4,操作系统,6,3

7,PASCAL语言,6,4

5,数据结构,7,4

3,信息系统,1,4

insertintocourse(Cno,Cname,Cpno,Ccredit)values('

1'

数据库'

5'

4);

insertintocourse(Cno,Cname,Ccredit)values('

2'

数学'

2);

6'

数据处理'

4'

操作系统'

3);

7'

PASCAL语言'

数据结构'

3'

信息系统'

3)在SC表中插入以下数据:

1,92

2,85

3,88

2,90

3,80

insertintosc(Sno,Cno,Grade)values('

92);

85;

88);

90);

80);

4)将一个新学生元祖(学号:

姓名:

陈冬;

性别:

男;

所在系:

IS;

年龄:

18岁)插入到Student表中。

insertintostudent(Sno,Sname,Ssex,Sdept,Sage)values('

陈冬'

18);

5)将学生张成民的信息插入到Student表中。

insertintostudentvalues('

张成民'

6)插入一条选课记录:

(‘’,‘1’)。

insertintosc(Sno,Cno)values('

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'

=(selectSdeptfromstudentwherestudent.Sno=sc.Sno);

3.删除数据

1)删除学号为的学生记录。

deletefromstudentwhereSno='

2)删除所有学生的选课记录。

deletefromsc;

3)删除计算机科学系所有学生的选课记录。

deletefromscwhere'

=(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,'

BIRTH,2011-SageBIRTHDAY,lower(Sdept)DEPARTMENTfromstudent;

6)查询选修了课程的学生学号。

selectdistinctSnofromsc;

7)查询计算机科学系全体学生的名单。

selectSnamefromstudentwhereSdept='

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('

13)查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别。

selectSname,Sdept,SagefromstudentwhereSdeptnotin('

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__'

21)某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

查询缺少成绩的学生的学号和相应的课程号。

selectSno,CnofromscwhereGradeisnull;

22)查询所有有成绩的学生学号和课程号。

selectSno,CnofromscwhereGradeisnotnull;

23)查询计算机科学系年龄在20岁以下的学生姓名。

andSage<

selectSname,SsexfromstudentwhereSdept='

orSdept='

24)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。

selectSno,GradefromscwhereCno='

orderbyGradedesc;

25)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。

select*fromstudentorderbySdept,Sagedesc;

26)查询学生总人数。

selectcount(*)fromstudent;

27)查询选修了课程的学生人数。

selectcount(distinctSno)fromsc;

28)计算1号课程的学生平均成绩。

selectavg(Grade)fromscwhereCno='

29)查询选修1号课程的学生最高分数。

selectmax(Grade)fromscwhereCno='

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='

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)查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄。

any(selectSagefromstudentwhereSdept='

)andSdept<

>

5)查询其他系中比计算机科学系所有学生年龄小的学生姓名和年龄。

all(selectSagefromstudentwhereSdept='

6)查询选修了1号课程的学生姓名。

selectSnamefromstudentwhereexists(select*fromscwhereSno=student.SnoandCno='

7)查询没有选修1号课程的学生姓名。

selectSnamefromstudentwherenotexists(select*fromscwhereSno=student.SnoandCno='

8)查询选修了全部课程的学生姓名。

selectSnamefromstudentwherenotexists(select*fromCoursewherenotexists(select*fromsc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1