数据库实验指导书含解答.docx

上传人:b****8 文档编号:30071279 上传时间:2023-08-04 格式:DOCX 页数:41 大小:303.81KB
下载 相关 举报
数据库实验指导书含解答.docx_第1页
第1页 / 共41页
数据库实验指导书含解答.docx_第2页
第2页 / 共41页
数据库实验指导书含解答.docx_第3页
第3页 / 共41页
数据库实验指导书含解答.docx_第4页
第4页 / 共41页
数据库实验指导书含解答.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

数据库实验指导书含解答.docx

《数据库实验指导书含解答.docx》由会员分享,可在线阅读,更多相关《数据库实验指导书含解答.docx(41页珍藏版)》请在冰豆网上搜索。

数据库实验指导书含解答.docx

数据库实验指导书含解答

 

数据库

实验指导书

 

巢湖学院计算机科学与技术系

巢湖学院实验教学中心

2009年2月

目录

实验一SQLSEVER2000的系统工具及用户管理、使用交互方式建库、建表.....................................................3

实验二T—SQL的简单查询、连接查询.....................16

实验三子查询及组合....................................24

实验四数据库的更新、视图的定义及使用..................26

实验五数据导入/导出、数据备份和恢复....................28

实验六数据完整性和数据安全性...........................29

实验七存储过程和触发器.................................31

实验八嵌入式SQL.......................................33

实验一SQLSEVER2000的系统工具及用户管理、使用交互方式建库、建表

一、实验目的:

认识SQLSEVER2000的服务管理器,了解客户端和数据库服务器的连接过程,初步掌握和使用EnterpriserManager以交互方式创建数据库、表、索引和修改表结构,熟练掌握使用EnterpriserManager向数据库输入数据、修给数据和删除数据的操作。

二、实验内容:

1.启动数据库服务软件SQLServer2000:

在程序菜单中选择MicrosoftSQLServer,如图1-1所示:

图1-1

再选中服务管理器,如图1-2所示:

图1-2

点击服务管理器后,出现SQLServer服务管理器,如图1-3所示:

图1-3

点击“开始/继续”按钮,启动SQLServer2000数据库服务。

启动成功后,在时钟旁边出现一个

符号,如图1-4所示。

图1-4

2.在SQLServer2000中建立数据库:

在程序菜单中选择MicrosoftSQLServer,如图1-5所示:

图1-5

再选中企业管理器,如图1-6所示:

图1-6

点击企业管理器后,出现企业管理器的主界面,如图1-7所示:

图1-7

点击左边树状控制栏的+/-号可以打开和关闭SQLServer组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图1-8所示:

图1-8

点击新建数据库,出现新建数据库窗口,如图1-9所示:

图1-9

输入数据库名称:

Test,点击数据文件选项卡,如图1-10所示:

图1-10

在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。

完成后点击事务日志选项卡,如图1-11所示:

图1-11

事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。

接受系统的缺省值,点击确定按钮,完成数据库的新建,如图1-12所示。

图1-12

3.在Test数据库上建立表:

点击数据库Test前面的+号,打开数据库的各种属性,如图1-13所示:

图1-13

选中表的属性,单击鼠标右键,出现表的菜单,如图1-14所示:

图1-14

点击新建表按钮,出现新建表窗口,如图1-15所示:

图1-15

输入列名,数据类型,长度等信息,点击

图标,出现选择表名窗口,如图1-16所示:

图1-16

输入表名,点击确定按钮,将新建的表存盘。

三、实验任务:

1.用数据库SQLServer2000的服务管理器启动数据库服务;

2.用数据库SQLServer2000的企业管理器建立一个数据文件名为Studentdata、日志文件名为Studentlog、大小25M的新数据库,该数据库名为Student。

3.在数据库Student上,建立如下所示的表Student,Course,SC的结构:

Student:

表1-1

字段名

类型

长度

含义

Sno

varchar

9

学号

Sname

varchar

20

姓名

Ssex

varchar

2

性别

Sage

snallint

4

年龄

Sdept

varchar

10,2

Course:

表1-2

字段名

类型

长度

含义

Cno

varchar

4

课程号

Cname

varchar

40

课程名

Cpno

varchar

4

先行课

Ccredit

smallint

4

学分

SC:

表1-3

字段名

类型

长度

含义

Sno

varchar

9

课程号

Cno

varchar

4

成绩

Grade

varchar

smallint

根据以上表的结构,输入以下内容:

Student:

表1-4

学号

Sno

姓名

Smane

性别

Ssex

年龄

Sage

所在系

Sdept

200215121

李勇

20

CS

200215122

刘晨

19

CS

200215123

王敏

18

MA

200215125

张立

19

IS

Course:

表1-5

课程号Cno

课程名Cname

先行课Cpno

学分Credit

1

数据库

5

4

2

数学

2

3

信息系统

1

4

4

操作系统

6

3

5

数据结构

7

4

6

数据处理

2

7

PASCAL语言

6

4

SC:

表1-6

学号Cno

课程号Cno

成绩Grade

200215121

1

92

200215121

2

85

200215121

3

88

200215122

2

90

200215122

3

80

4.定义数据库

CreateDB数据库名;

5.定义模式

CREATESCHEMA〈模式名〉AUTHORIZATION〈用户名〉

6.定义基本表

CREATETABLE〈表名〉(〈列名〉〈数据类型〉[列级完整性约束条件]

[,〈列名〉〈数据类型〉[列级完整性约束条件]]

……[,〈表级完整性约束条件〉]);

[例]建立一个“学生”表Student。

CREATETABLEStudent

(SnoCHAR(9)PRIMARYKEY,

SnameCHAR(20)UNIQUE,

SsexCHAR

(2),

SageSMALLINT,

SdeptCHAR(20)

);

[例]建立一个“课程”表Course。

CREATETABLECourse

(CnoCHAR(9)PRIMARYKEY,

CnameCHAR(40),

SpnoCHAR(4),

CcreditSMALLINT,

FOREINGKEYCpnoREFERENCESCourse(Cno)

);

[例]建立学生选课表。

CREATETABLESC

SnoCHAR(9),

CnoCHAR(9),

GradeSMALLINT,

PRINARYKEY(Sno,Cno),

FOREINGKEY(Sno)REFERENCESStudent(Sno),

FOREINGKEY(Cno)REFERENCESCourse(Cno)

);

 

实验二T—SQL的简单查询、连接查询

一、实验目的:

掌握SQLServerQueryAnalyze的使用方法,加深对SQL的语句,特别是对查询语句的理解。

本次实验了解SQLServer2000查询分析器的启动,熟悉如何在SQLServer2000查询分析器中建表、插入记录、查询记录。

学会SQLServer2000的查询分析器中建表、插入记录、查询记录。

二、实验内容:

1.启动数据库服务软件SQLServer2000的查询分析器:

在程序菜单中选择MicrosoftSQLServer,如图2-1所示:

图2-1

再选中查询分析器,如图2-2所示:

图2-2

点击查询分析器后,出现连接到SQLServer窗口,如图2-3所示:

图2-3

点击

按钮,出现选择服务器窗口,如图2-4所示。

图2-4

选择本地服务(Local),点击确定按钮。

再点击连接到SQLServer窗口的确定按钮。

出现SQL查询分析器主界面,如图2-5所示。

图2-5

选择查询菜单,点击更改数据库,如图2-6所示。

图2-6

出现选择数据库窗口,如图2-7所示。

图2-7

选择在上次实验中建立的数据库Test,点确定按钮。

2.在查询分析器中建立表:

在查询分析器的查询窗口中输入SQL语句,如图2-8所示。

图2-8

点击

按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图2-9所示。

图2-9

提示命令成功完成,或者报告出错信息。

3.查询分析器中向表添加数据:

在查询分析器的查询窗口中输入SQL语句,如图2-10所示。

图2-10

点击

按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图2-11所示。

图2-11

1.从表中查询数据:

在查询分析器的查询窗口中输入SQL语句,如图2-12所示。

图2-12

点击

按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图2-13所示。

图2-13

三、实验任务

1.打开数据库SQLServer2000的查询分析器,利用实验一所建立的库Student,针对改库中的表Student,Course,Sc作如下操作:

1.查询全体学生的学号与姓名答:

selectsno,snamefromstudent

2.查询全体学生的姓名、学号、所在系答:

selectsname,sno,sdeptfromstudent

3.查询全体学生的详细记录答:

select*fromstudent

4.查询全体学生的姓名及其出生年份答:

selectsname,2010-sagefromstudent

5.查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名。

答:

selectsname,'yearofbirth:

',2010-sage,lower(sdept)fromstudent

6.查询选修了课程的学生学号答:

selectdistinctsnofromsc

7.查询计算机科学系全体学生的名单答:

selectsnamefromstudentwheresdept='cs'

8.查询所有年龄在20岁以下的学生姓名及其年龄答:

selectsname,sagefromstudentwheresage>20

9.查询考试成绩有不及格的学生的学号答:

selectdistinctsnofromscwheregrade<60

10查询年龄在20~30岁之间的学生的姓名、系别和年龄。

答:

selectsname,sdept,sagefromstudentwheresagebetween20and30

11.查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别答:

selectsname,ssexfromstudentwheresdeptnotin('cs','ma','is')

12.查询学号为200215121的学生的详细情况答:

select*fromstudentwheresno='200215121'

13.查询所有姓刘的学生的姓名、学号和性别答:

selectsname,sno,ssexfromstudentwheresnamelike'刘%'

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

答:

Selectsno,cnofromscwheregradeisnull

15.查询所有成绩的学生的学号和课程号答:

selectsno,cnofromscwheregradeisnotnull

16.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列答:

selectsno,gradefromscwherecno='3'orderbygradededc

17查询选修课程的学生人数答:

selectcount(distinctsno)fromsc

18查询选修了1号课程的学生最高分数答:

selectmax(grade)

fromsc

wherecno='1'

19.求各个课程及相应的选课人数答:

selectcno,count(sno)

formsc

groupbycno

20.查询每个学生及其选修课程的情况答:

selectstudent.*,sc.*

fromstudent,sc

wherestudent.sno=sc.sno

21查询每一门课的间接选修课答:

selecto,second.cpno

fromcoursefirst,coursesecond

wherefirst.cpno=o

22.查询每个学生的学号、姓名、选修的课程名及成绩答:

selectstudent.sno,sname,cname,grade

fromstudent,sc,course

wherestudent.sno=sc.snoando=o

 

实验三子查询及组合

一、实验目的:

进一步掌握QueryAnalyzer的使用方法,加深对SQL和嵌套查询语句的理解,熟练掌握数据查询中分组、统计、计算和组合的操作方法。

二、实验内容:

1.启动数据库服务软件SQLServer2000的查询分析器,在RDMBS中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均在此建立的新库里进行。

2.根据以下要求认真进行实验,记录所有的实验用例。

数据定义:

基本表的定义。

数据操作:

完成子查询(分组,统计,计算和组合)。

三、实验任务:

打开数据库SQLServer2000的查询分析器,根据实验一:

所建立的数据库Student,在此库下所建立的三个表Student,SC,Course。

完成如下的功能的实验:

(1).带有IN谓词的子查询

(2).带有比较运算符的子查询

(3).带有ANY(SOME)或ALL谓词的子查询

(4).带有EXISTS谓词的子查询

实验的步骤如下:

1.查询与“刘晨”在同一个系学习的学生

答:

selectsno,sname,sdept

fromstudent

wheresdeptin(selectsdept

fromstudent

wheresname='刘晨')

2.查询选修了课程名为“信息系统”的学生学号和姓名selectsno,sname

fromstudentwheresnoin

(selectsno

fromsc

wherecnoin

(selectcno

fromcourse

wherecname='信息系统')

3.找出每个学生超过他选修课程平均成绩的课程号

答:

selectsno,cno

fromscx

wheregrade>=(selectavg(grade)

fromscy

wherey.sno=x.sno)

4.查询其他系中比计算机科学系某一个学生年龄小的学生的姓名和年龄

答:

selectsname,sage

fromstudent

wheresage

fromstudent

wheresdept='cs')

andsdept<>'cs'

5.查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄

答:

selectsname,sage

fromstudent

wheresage

fromstudent

wheresdept='cs')

andsdept<>'cs'

6.查询所有选修了1号课程的学生姓名

答:

selectsname

fromstudent

whereexists

(select*

fromsc

wheresno=student.snoandcno='1')

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

答:

selectsname

fromstudent

wherenotexists

(select*

fromsc

wheresno=student.snoandcno='1')

8.查询选修了全部的学生姓名

答:

selectsname

fromstudent

wherenotexists(select*

fromcourse

wherenotexists(select*

fromsc

wheresno=student.sno

andcno=o))

9.查询至少选修了学生200215122选修的全部课程的学生号码

答:

selectdistinctsno

fromscscx

wherenotexists(select*

fromscscy

wherescy.sno='200215122'and

notexists

(select*

fromscscz

wherescz.sno=scx.snoand

o=o))

10查询计算机科学系的学生及年龄不大于19岁的学生

答:

select*

fromstudent

wheresdept='cs'

union

select*

fromstudent

wheresage<=19

11.查询选修了课程1或者选修了课程2的学生

答:

selectsno

fromsc

wherecno='1'

union

selectsno

fromsc

wherecno='2'

12.查询计算机科学系的学生与年龄不大于19岁的学生的交集

答:

select*

fromstudent

wheresdept='cs'andsage<=19

13.查询既选修了课程1又选修了课程2的学生。

答:

selectsno

fromsc

wherecno='1'andsnoin(selectsno

fromsc

wherecno='2')

14.查询计算机科学系的学生与年龄不大于19岁的学生的差集

答:

select*

fromstudent

wheresdept='cs'andsage>19

实验四数据库的更新、视图的定义及使用

一、实验目的:

掌握SQL中的插入、修改和删除语句的用法;掌握视图创建语句和视图创建向导的使用方法,加深对视图作用的理解。

二、实验内容:

1.启动数据库服务软件SQLServer2000的查询分析器,用如下语句对表进行操作,详细的语法格式参看课本相应章节:

Insertinto表名…插入数据

Update表名Set…修改数据

DeleteFrom表名…删除数据

DropTable删除表

AlterTable更改表

2.用如下语句对视图进行操作,详细的语法格式参看课本相应章节:

CreateView建视图

DropView删除视图

三、实验任务

1.打开数据库SQLServer2000的查询分析器,根据实验一:

所建立的数据库Student,在此库下所建立的三个表Student,SC,Course。

完成如下的功能的实验:

1.将一个新学生元组(学号:

200215128;姓名:

陈冬;性别:

男;所在系:

IS;年龄:

18岁)插入到Student表中

答:

insertintostudent

(sno,sname,ssex,sdept,sage)

values('200215128','陈冬','男','is',18)

2.将学生张成民的信息插入到Student表中

答:

insertintostudent

values('200215126','张成民','男',18,'cs')

3.插入一条选课记录(‘200215128’,‘1’)

答:

insertintosc('sno','cno')

values('200215128','1')

4.对每一个系,求学生的平均年龄,并把结果存入数据库

答:

createtabledept_age

(sdeptchar(15),

avg_agesmallint)

insertintodept_age(sdept,avg_age)

selectsdept,avg(sage)

fromstudent

groupbysdept

5.将一个学生200215121的年龄增加1岁

答:

updatestudent

setsage=sage+1

6.将计算机科学系全体学生的成绩置零

答:

updatesc

setgrade=0

where'cs'=(

selectsdept

fromstudent

wherestudent.sno=sc.sno)

7.删除学号为200215128的学生的记录

答;delete

fromstudent

wheresno='200215128'

8.删除所有的学生选课记录

答:

delete

fromsc

9.删除计算机科学系所有学生的选课记

答:

delete

fromsc

where'cs'=(selectsdept

fromstudent

wherestudent.sno=sc.sno)

10.建立信息系学生的视图

答:

createviewIS_Student

as

selectsno,sname,sage

fromstudent

wheresdept='IS'

11.建立信息系选修了1号课程的学生的视图

答:

createviewIS_S1(sno,sname,grade)

as

selectstudent.sno,sname,grade

fromstudent,sc

wheresdept='IS'and

student.sno=sc.snoand

o='1'

12定义一个反映学生出生年份的视图

答:

createviewBT_S(sno,sname,sbirth)

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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