数据库原理实验教学手册.docx

上传人:b****8 文档编号:28481077 上传时间:2023-07-14 格式:DOCX 页数:39 大小:306.83KB
下载 相关 举报
数据库原理实验教学手册.docx_第1页
第1页 / 共39页
数据库原理实验教学手册.docx_第2页
第2页 / 共39页
数据库原理实验教学手册.docx_第3页
第3页 / 共39页
数据库原理实验教学手册.docx_第4页
第4页 / 共39页
数据库原理实验教学手册.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

数据库原理实验教学手册.docx

《数据库原理实验教学手册.docx》由会员分享,可在线阅读,更多相关《数据库原理实验教学手册.docx(39页珍藏版)》请在冰豆网上搜索。

数据库原理实验教学手册.docx

数据库原理实验教学手册

创新源于实践

《数据库原理》

课程实验教学手册

专业:

班级:

级班

学号:

姓名:

任课教师:

时间:

年月日

综合成绩:

 

计算机科学与技术学院《数据库原理》课程组

实验手册使用及要求

实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。

现将实验报告撰写的有关内容说明如下:

1、实验预习报告必须在实验前完成。

2、实验时带好实验手册指导教师签字后方可进行实验。

3、实验时按实验预习报告内容进行实验。

并如实填写实验过程及实验中存在的问题分析及解决办法。

3、实验结束后填写通过后的源程序和对实验改进建议。

4、通过后的源程序可以手写也可以打印粘贴。

5、每个实验中教师签名一栏,学生不能填写,供指导教师检查完实验预习报告后签字使用。

6、实验位置填写应为:

实验室编号__实验台.如:

107-01。

7、实验九为综合实验。

共设计个题目,分组进行设计和实验。

要求见实验指导。

 

前言

一、实验目的:

数据库原理是一门应用性很强的课程,上机实验是数据库课程的重要环节。

本实验是结合《数据库概论》课程的学习而开设的实验。

本实验目的如下:

1.通过上机实验,加深对数据库系统理论知识的理解,增加对网络环境下大型数据库的感性认识和实际操作能力;

2.通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。

3.学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力;

4.加强对事务处理、权限管理等概念的认识和理解。

二、适应专业:

计算机科学和技术专业

三、实验内容及学时安排:

实验序号

实验名称

实验性质

学时

页码

实验一

系统安装及界面认识

验证性实验

2

4-5

实验二

数据库的建立

验证性实验

2

6-7

实验三

数据库表的建立

验证性实验

4

8-11

实验四

SQL查询

验证性实验

6

12-15

实验五

变量、函数和控制语句

验证性实验

4

16-19

实验六

创建其它的数据库对象SQL

验证性实验

4

20-23

实验七

数据库安全性管理

验证性实验

2

24-27

实验九

综合实验

综合性实验

12

32-37

 

五、教材及参考文献

1、《数据库原理与应用》徐保民孙丽君人民邮电出版社2008

2、《数据库系统概论》(第三版)萨师煊王珊高等教育出版社2005

六、实验环境

实验要求如下软件环境:

Windows2000NTServer+SQLSERVER2000

七、成绩考核

上机实验考核采取实验报告和上机抽查检验相结合的方式。

每次实验结束后都必须写出实验报告。

实验内容

实验一

实验名称系统安装及界面认识、实验性质验证性、教师签名

实验学时数2学时、实验位置:

、实验日期:

年月日、

一、实验目的

1、了解SQLServer系统安装;

2、了解SQLServer系统构成;

3、了解系统各模块的的作用

二、实验要求

Windows2000/XP/2003操作系统;

SQLSERVER2000中文版软件;

一)、SQLSERVER2000中文版软件安装

二)、系统构成:

1、SQLsever服务

2、企业管理器

3、查询分析器

1、启动SQLsever服务:

如图所示,设置服务器和服务;

2、更改Sa密码:

四)系统各模块的的作用

1、数据库文件和文件组:

主数据文件(.mdf):

存储数据信息和数据库的启动信息。

每个数据库只能有一个主文件。

次数据文件(.ndf):

存储主数据文件未存储的数据,次数据文件,可有可无,也可以有多个。

日志文件(.ldf):

存储用于恢复数据库的所有日志文件,条个数据库至少有一个日志文件。

SQLSEVER数据库包含3个文件组:

主文件组:

包含主数据文件和任何其它的、没有放置到另一个文件组的文件。

所有系统文件都存于该文件中。

用户文件组:

在创建数据库命令、修改数据库文件和使用Filegroup关键字指定的文件组。

默认文件组:

包含所有在创建时没有指定到文件组的表和索引,每个数据库只能有一个默认文件组。

如果在创建数据库时,如果没有用Filegroup关键字指定文件组,则主文件为默认的文件组。

所有数据文件都存于该文件中。

五)、系统数据库和示例数据库:

1、系统数据库:

(1)master:

是总控数据库,保存了系统的全部系统信息、登录和系统配置,用户建立的其它数据库及信息。

应经常备份该数据库。

(2)tempdb:

保存所有的临时表和临时存储过程。

系统起动时将重建。

(3)model:

模板数据库,每创建一个新的数据库,系统将自动地将模板数据库的内容复制一份到新的数据库中。

因此新数据库的内容和model是一样的。

如果想在新建数据库时加入一些固定内容,可将这些内容放到这里。

Model共有18个系统表、视图及存储过程。

其中:

syscolumns保存表和视图的每一列和存储过程的参数信息。

Sysobjects保存数据库中生成的数据库对象信息。

(4)msdb:

提供给SQLseverAgent服务使用,完成一些调度性工作,如备份和复制。

2、示例数据库:

pubs数据库:

图书出版方面的数据库实例。

Northwind:

贸易公司在世界范围内进出口销售情况的数据库。

实验过程、存在的问题及解决办法:

 

五、实验改进建议

 

实验二

实验名称数据库的建立、实验性质验证性、教师签名

实验学时数2学时、实验位置、实验日期年月日、

一、实验目的

1、利用各方法创建SQLServer数据库

2、修改与删除数据库

二、实验要求

掌握数据库的创建与删除

1、用向导创建数据库(UserDB1):

2、使用快捷方式创建数据库(UserDB2):

3、在查询设计器中用SQL命令创建数据库(UserDB3):

1)、简单命令格式:

createdatabase<数据库文件名>

2)、使用on和logon选项指定文件组和日志文件(userDB4)

createdatabaseuserdb4

on

(name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名

filename='g:

\xygl\userdb4.mdf',--物理名称,注意路径必须存在

size=5,--数据初始长度为5M

maxsize=10,--最大长度为10M

filegrowth=1)--数据文件每次增长1M

logon

(name=userdb4_log,filename='g:

\xygl\userdb4.ldf',size=2,maxsize=5,filegrowth=1)

3)、使用Primary和filegroup创建文件组和主文件(UserDB5):

createdatabaseuserdb5

on

primary

(name=db1,filename='g:

\sql\db_5.mdf',size=1,maxsize=10,filegrowth=10%),

(name=db2,filename='g:

\sql\db_5.mdf',size=2,maxsize=20,filegrowth=20%),

filegroupdb_3

(name=db3,filename='g:

\sql\db5.mdf',size=2,maxsize=10,filegrowth=10%),

(name=db4,filename='g:

\sql\db4.mdf',size=1,maxsize=10,filegrowth=10%)

logon

(name=db1_log1,filename='g:

\sql\db5_log.ldf',size=1,maxsize=10,filegrowth=2),

(name=db2_log2,filename='g:

\sql\db5_log.ldf',size=1,maxsize=10,filegrowth=1)

3、修改数据库结构修改:

1)、采用企业管理器修改数据库UserDB1:

2)、利用命令在查询设计器中修改数据库UserDB1

添加文件组:

alterdatabaseuserdb1addfilegroupuserdb1_group

将一个新的数据库文件userdb2添加到文件组中:

alterdatabaseuserdb1addfile

(name=userdb2,filename=’g:

\xygl\userdb2.mdf’)tofilegroupuserdb1_group

修改数据库初始长度

alterdatabaseuserdb1modifyfile

(name=userdb2,size=2)

修改数据库名:

将UserDB3改名为UserDBS

execsp_dboption‘userdb3’,’singleuser’,true--将数据库设为单用户模式

execsp_renamedb‘userdb3’,’userdbs’--改名

execsp_dboption‘userdbs’,’singleuser’,false--将数据库设为多用户模式

删除数据库:

(1)、在企业管理器和查询设计器中删除数据库Userdb1和Userdb2。

(2)、命令格式:

dropdatabase<数据库名>

例:

利用命令删除数据库Userdbs

dropdatabaseuserdbs--删除userdb数据库。

4、数据库的打开命令:

格式:

use<数据库名>

例:

利用命令打开数据库UserDB4

 

四、

 

实验过程、存在的问题及解决办法:

 

五、实验改进建议

 

实验三

实验名称数据库表的建立、实验性质验证性、教师签名

实验学时数4学时、实验位置、实验日期年月日、

一、实验目的

1、据库表的创建方法、数据类型的设置

2、表结构的修改

3、录入、插入和修改数据

二、实验要求

掌握基本表的建立,表结构的修改,数据的录入、插入以及修改

一)表的创建:

1、利用企业管理器设计表:

例1:

利用企业管理器创建学生选课数据库的如下表:

学生student

学号(sno)

姓名(sname)

性别(ssex)

年龄(sage)

所在系(department)

char(5)(主键、聚集索引)

char(20)

char

(2)

int

char(15)

2、在查询设计器中利用SQL命令创建下表

课程表course

课程号(cno)

课程名(cname)

先修课程号(pcno)

学分(credit)

char(5)(主键,非空)

char(20)

char(5)

int

选课表selcourse

学号(cno)

课程号(cname)

成绩(grade)

char(5)(外键约束)

char(5)(外键约束)

int

二)、表结构的修改:

1、修改列属性:

例:

利用命令将Student表中的cno字段设为不能为空(notnull)

2、添加列:

例:

利用命令在将Student表中添加E-mail字段:

类型为varchar(20)

3、添加约束:

例:

利用命令将Student表中的sage字段设置为只允许为数字:

4、取消约束:

例:

利用命令将Student表中的cno字段约束取消。

5、删除约束:

例:

利用命令首先创建一个有主键约束的表,然后将其删除

如:

createtableds(jkintconstraintpk_dsprimarykey)

//创建ds表,并建主约束pk_ds

altertabledsdroppk_ds//删除约束

go

6、删除列:

例:

利用命令将Student表中的E-mail字段删除

altertable(***)dropcolumn(***)--注意如果有列约束,应先删除。

三)录入、插入和修改数据

1、在企业管理器中添加数据:

右击表选择[打开表]/[返回所有行]命令,即可进行录入。

2、在查询设计器中利用insert命令插入记录方式:

例:

向department表追加记录

insertdepartmentvalues(‘01’,’信息工程’,’信息’,’成榕’)

2、采用insert…select语句添加数据

例:

从其它数据库表中成批添加记录。

insertdepartment(xdh,xqc,xjc)selectxdh,xqc,xjcfromxygl.dbo.department

3、修改表中的记录:

1)、在企业管理器中打开表直接修改

2)、在查询设计器中用update..set命令修改记录

例:

更改student表中指定学号学生的姓名

updatestudentsetsname='王小宝'wherecno=’01005’

4、删除表中的记录:

例:

删除student表中姓名中含有“王”的记录。

deletefromstudentwheresnamelike‘%王%’

例:

删除student表中的所有记录,相当于清空数据表

Deletefromstudent

5、删除表:

例:

删除当前数据库表student:

dropstudent

例:

删除其它数据库表:

droptable<数据库.所有者.表名>

四、

实验过程、存在的问题及解决办法:

 

五、

实验改进建议

 

 

实验四

实验名称SQL查询、实验性质设计性、教师签名

实验学时数6学时、实验位置、实验日期年月日、

一、实验目的

1、掌握基本查询

2、掌握嵌套查询

3、量词与谓词的应用

4、利用聚合函数进行数据统计

二、实验要求

掌握常用的SQL查询及聚合函数的应用

二、实验内容:

一)查询

例1:

(选择表中的若干列)求全体学生的学号、姓名、性别和年龄。

例2:

(不选择重复行)求选修了课程的学生学号。

例3:

(选择表中的所有列)求全体学生的详细信息。

例4:

(使用表达式)求全体学生的学号、姓名和出生年份。

例5:

(使用列的别名)求学生的学号和年龄,显示时使用别名“学号”和“年龄”。

例6:

(比较大小条件)求年龄大于19岁的学生的姓名和年龄。

例7:

(比较大小条件)求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。

例8:

(确定范围条件)求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

例9:

(确定范围条件)求年龄不在19岁与22岁之间的学生的学号和年龄。

例10:

(确定集合条件)求在下列各系的学生信息:

数学系、计算机系。

例11:

(确定集合条件)求不是数学系、计算机系的学生信息。

例12:

(匹配查询)求姓名是以“李”打头的学生。

例13:

(匹配查询)求姓名中含有“志”的学生。

例14:

(匹配查询)求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

例15:

(匹配查询)求选修课程C001或C003,成绩在80至90之间,学号为01xxx的学生的学号、课程号和成绩。

例16:

(涉及空值查询)求缺少学习成绩的学生的学号和课程号。

例17:

(控制行的显示顺序)求选修C003课程或C004课程的学生的学号、课程号和分数。

例18:

(组函数)求学生总人数。

例19:

(组函数)求选修了课程的学生人数。

例20:

(组函数)求计算机系学生的平均年龄。

例21:

(组函数)求选修了课程C001的最高、最低与平均成绩。

例22:

(分组查询)求各门课程的平均成绩与总成绩。

例23:

(分组查询)求各系的人数和平均年龄。

例24:

(分组查询)输入以下查询语句并执行,观察出现的其结果并分析其原因。

SELECTSNAME,DEPT,COUNT(*)FROMSTUDENTWHEREDEPT=’计科系’GROUPBYDEPT;

例25:

(分组查询)分析以下语句为什么会出现错误。

并给出正确的查询语句。

SELECTSAGEFROMSTUDENTGROUPBYSNO;

例26:

(分组查询)求学生人数不足3人的系及其相应的学生数。

例27:

(分组查询)求人数最多的系。

例28:

(涉及空值的查询)分别观察各组函数、行的显示顺序以及分组查询与空值的关系。

例29:

(自然连接查询)求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。

例30:

(连接查询)求选修了课程C001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。

例31:

(连接查询与表的别名)求选修了课程的学生的学生姓名、课程号和成绩。

例32:

(自身连接查询)求年龄大于’李丽’的所有学生的姓名、系和年龄。

例33:

(外部连接查询)求选修了课程C002或C003的学生的学号、课程号、课程名和成绩。

例34:

(子查询)求与‘李丽’年龄相同的学生的姓名和系。

例35:

(子查询)求选修了课程名为’数据结构’的学生的学号和姓名。

例36:

(子查询ANY)求比数学系中某一学生年龄大的学生的姓名和系。

例37:

(子查询ALL)求比数学系中全体学生年龄大的学生的姓名和系。

例38:

(子查询EXISTS)求选修了课程C004的学生的姓名和系。

例39:

(返回多列的子查询)求与‘李丽’同系且同龄的学生的姓名和系。

例40:

(多个子查询)求与‘李丽’同系,且年龄大于‘黎明’的学生的信息。

例41:

(子查询中使用表连接)求数学系中年龄相同的学生的姓名和年龄。

例42:

(相关子查询)求未选修课程C004的学生的姓名。

例43:

(相关子查询)求选修了全部课程的学生的姓名。

例44:

(相关子查询)求至少选修了学生‘01002’所选修的全部课程的学生的学号。

例45:

(相关子查询)求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。

例46:

(相关子查询)查询被一个以上的学生选修的课程号。

例47:

(相关子查询)查询所有未选课程的学生姓名和所在系。

二).SQL数据控制语句:

例1:

(授权并验证)给某用户授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限。

例2:

(授权并验证)给某用户授予在表student上的INSERT权限,并使这两个用户不具有给其他用户授予相同权限的权限。

例3:

(授权并验证)给某用户授予在表student上对ssex字段的UPDATE权限,并使该用户不具有给其他用户授予相同权限的权限。

例4:

(授权并验证)给某用户授予student表上的所有权限。

例5:

(收回授权并验证)收回上面例子中的所有授予的权限。

 

实验过程、存在的问题及解决办法:

五、实验改进建议

 

实验五

实验名称SQL变量、函数和控制语句、实验性质验证性、教师签名

实验学时数4学时、实验位置、实验日期年月日、

一、实验目的

1、了解SQL变量的定义

2、了解SQL函数应用

3、SQL的控制语句的种类及应用;

4、case表达式的应用。

二、实验要求

掌握简单的SQL程序设计。

一)、局部变量(@变量):

1)用select语句对变量赋值:

例:

定义变量@blvarchar(50)

declare@blvarchar(50)--定义变量

select@bl='李华'--给变量赋初值

select@bl=snamefromstudentwheresno=“01005”

select@bl

注意:

如果找到变量改变,否则为初值。

2)用set命令赋值:

例:

将变量的值设为”中国福建”

declare@blchar(30)

set@bl=’中国福建’

select@bl

3)利用查询结果为变量赋值:

例:

观察下面语句:

declare@blint

set@bl=(selectcount(*)fromstudent)

select@blas记录数

二)、SQL函数:

例1、将student表中的sage转为字符型数据

select姓名,cast(基本工资aschar(10))as年龄fromstudent

select姓名,convert(char(10),基本工资)as年龄fromstudent

例2、字符串函数:

Replicate(‘南平’,2)结果为?

Reverse(字符串):

将字符串取反

reverse(‘南平’)结果为?

selectstuff('中国福建',3,2,'上海')--结果为?

selectstuff('abcd',3,2,'ef')--结果为”abef”注意两句的区别

substring(字符串,开始位置,长度):

与VFP的substr一样为取子串函数

selectsubstring('南京化工学院',3,2)--结果为?

例3:

日期函数:

selectdatepart(year,'2005-2-0312:

13:

30'),datepart(quarter,'2005-2-0312:

13:

30'),

datepart(month,'2005-2-0312:

13:

30'),datepart(day,'2005-2-0312:

13:

30'),

datepart(week,'2005-2-0312:

13:

30')

结果为?

三)、SQL控制语句

职工表如下:

职工(工号,姓名,婚否,基本工资,仓库号)

例1:

if语句应用:

在职工表中查找某一仓库的职工,如果有则统计人数,否则显示提示:

Usezgda

Go

declare@ckchar

(2)--定义一个仓库号变量

set@ck='01'--设置变量值

Ifexists(select*from职工where仓库号=@ck)--如果有

Selectcount(*)as人数from职工where仓库号=@ck--统计人娄

Else--否则

Prin

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

当前位置:首页 > 自然科学 > 天文地理

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

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