数据库实验指导书za.docx
- 文档编号:4404558
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:48
- 大小:1.01MB
数据库实验指导书za.docx
《数据库实验指导书za.docx》由会员分享,可在线阅读,更多相关《数据库实验指导书za.docx(48页珍藏版)》请在冰豆网上搜索。
数据库实验指导书za
数据库原理
实验指导书
2009年2月
实验一、1.数据库的定义
创建与管理
一、实验目的
掌握运用sqlserver2000中企业管理器和Transact_SQL语句创建、删除、修改数据库。
二、实验要求
1.使用企业管理器创建、修改、删除一个学生数据库或物资数据库。
2.编写SQL程序创建、修改、删除一个学生数据库或物资数据库,并给出相应的程序注释
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.使用企业管理器创建、修改和删除数据库;
4.编写Transact_SQL语句创建、修改和删除数据库;
四、参考操作和源代码
1.使用企业管理器直接创建数据库
(1)打开企业管理器,在左窗格中双击要建立数据库的服务器节点,将该节点展开。
双击“数据库”节点,然后在右窗格中击空白区域,从弹出的快捷菜单中选择“新建数据库”命令,会弹出如图1-1所示的对话框。
图1-1新建数据库
(2)在“名称”文本框中输入正确的数据库名称,然后单击“数据库文件”选项卡,如图1-2所示。
在“文件名”栏中可以输入文件名,SQLServer2000在默认情况下自动在用户输入的文件名后增加上_Data字样。
图1-2“数据文件”选项卡
(3)在“文件组”栏中,输入文件所属的文件组名称。
(4)在“文件属性”选项组里,选中“文件自动增长”复选框,当数据文件的空间不够用时,SQLServer2000可以自动增加容量。
SQLServer2000提供了两种方式来实现数据文件的自动增加。
一种是以“按兆字节”的方式递增,一次增加1MB;另外一种方式是以“按百分比”的方式递增,一次递增原数据库文件容量的10%。
(5)单击“位置”栏中的按钮,弹出图1-3所示对话框,可以选择存放数据文件的位置。
图1-3“查找数据库文件”对话框
(6)单击“确定”按钮,返回“数据库属性”对话框,单击“事务日志”选项卡,输入日志文件的名称、位置、大小,在日志需要更多空间时可以在“文件属性”选项组中设置日志文件自动增长和最大值选项,方法与设置数据文件类似,如图1-4所示。
图1-4“事务日志”选项卡
(7)双击数据库,即可查看、修改其属性
2.使用Transact-SQL语句创建、查看、修改、删除数据库
(1)打开查询分析器。
(2)在查询分析器里编写创建、查看、修改、删除数据库的Transact-SQL语句。
参考源代码:
--创建学生数据库
CREATEDATABASEstudent
ONPRIMARY
(NAME=student1_dat,
FILENAME='e:
\学习\student1_dat.mdf',
SIZE=10,MAXSIZE=50,FILEGROWTH=15%),
(NAME=student2_dat,
FILENAME='e:
\学习\student2_dat.Ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=15%),
FILEGROUPstudentGroup1
(NAME=student1Fi1_dat,
FILENAME='e:
\学习\student1Fi1_dat.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=student1Fi2_dat,
FILENAME='e:
\学习\student1Fi2_dat.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
FILEGROUPstudentGroup2
(NAME=student2Fi1_dat,
FILENAME='e:
\学习\student2Fi1_dat.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=student2Fi2_dat,
FILENAME='e:
\学习\student2Fi2_dat.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5)
LOGON
(NAME=student_log,
FILENAME='e:
\学习\student-log.ldf',
SIZE=5,MAXSIZE=25,FILEGROWTH=5)
--查看数据库属性
--主要通过sp_helpdb来完成查看操作,语法如下
sp_helpdb[[@dbname=]’database’]
[,[@optname=]’option_name’]
[,[@optvalue=]’option_value’]
--修改日志文件的最大值为150MB
USEstudent
GO
ALTERDATABASEstudentMODIFY
FILE(NAME=student1_log,MAXSIZE=150MB)
GO
--修改日志文件的初始值为20MB
USEstudent
GO
ALTERDATABASEstudentMODIFY
FILE(NAME=student1_log,SIZE=20MB)
GO
--查看数据库信息(验证数据库是否已经修改成功)
sp_helpdbstudent
--更改数据库(语法)
ALTERDATABASE
{--向指定的文件组里增加新的数据文件
ADDFILE
--增加新的日志文件
|ADDLOGFILE
--删除某一个操作系统文件
|REMOVEFILElogical_file_name
--增加一个文件组
|ADDFILEGROUPfilegroup_name
--删除某一个文件组
|REMOVEFILEGROUPFILEGROUPfilegroup_name
--修改某操作系统文件属性
|MODIFYFILE
--修改某文件组的属性,其中包括READONLY(只读)、READWRITE(可读,--可写)、DEFAULT(设置该文件组为默认文件组)
|MODIFYFILEGROUPfilegroup_namefilegroup_property
}
:
=
(NAME=logical_file_name
[,FILENAME=’os_file_name’]
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])
--删除数据库
USEstudent
DROPDATABASEstudent
--缩小数据库(语法)
BDCCSHRINKDATABASE
(database_name[,target_percent]
--arget_percent:
当数据库被缩小后还剩下的自由空间。
[,{NOTRUNCATE|TRUNCATEONLY}]
--NOTRUNCATE:
被释放的空间将不被操作系统回收,仍保持在数据库文件内。
--TRUNCATEONLY:
将所有未使用的数据库空间释放并让操作系统回收,将忽--略arget_percent
)
--缩小某一个操作系统文件的长度(语法)
DBCCSHRINKFILE
(file_name
{[,target_size]--将文件缩小到指定长度
|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]
--EMPTYFILE:
将指定文件上的数据全部转移到本文件组内其他文件上,以后--的操作将不会再在该文件上增加数据。
}
)
实验一、2.SQL定义、删除、修改表实验
一、实验目的
掌握运用sqlserver中Transact_SQL语句创建、删除、修改表。
二、实验要求
1.创建学生或物资数据库的表。
2.给出相应的程序注释。
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.使用Transact_SQL语句创建、修改和删除表
4.编译并执行Transact_SQL语句。
四、参考源代码
1.创建学生表
--创建名为Student的学生表
CREATETABLEStudent
--学号列,类型:
固定长度为5的字符串
(SnoCHAR(5),
--姓名,最大长度为20的可变字符串
SnameVARCHAR(20)unique,
--性别,固定长度为2的字符串
SsexCHAR
(2),
--年龄,整型
SageINT,
--所在系别,最大长度为15的可变字符串
SdeptCHAR(15)
--设置学号列为主码
PRIMARYKEY(Sno));
2.创建课程表
--创建名为Course的课程表
CREATETABLECourse(
--课程号列,类型:
固定长度为3的字符串
CnoCHAR(3),
--课程名,最大长度为20的可变字符串
CnameVARCHAR(20),
--先行课号,类型:
固定长度为3的字符串
CpnoCHAR(3),
--学分,整型
CcreditINT,
--设置课程号列为主码
Primarykey(Cno),
--设置先行课号为外码(参照本表)
Foreignkey(Cpno)REFERENCESCourse);
3.创建选课表
--创建名为SC的选课表
CREATETABLESC(
--学号列,类型:
固定长度为5的字符串
SnoCHAR(5),
--课程号列,类型:
固定长度为3的字符串
CnoCHAR(3),
--成绩列,整型
Gradeint,
--用户自定义完整性,成绩列必须[0,100]
CHECK(Grade>=0andGrade<=100),
--设置(学号、课程号)为主码
Primarykey(Sno,Cno),
--设置学号为外码(参照Student表)
Foreignkey(Sno)REFERENCESStudent,
--设置课程号为外码(参照Course表)
Foreignkey(Cno)REFERENCESCourse);
4.向学生表加“入学时间”列
ALTERTABLEStudentADDScomeDATETIME;
5.删除学生表中的Sage列,然后再增加该列
ALTERTABLEStudentDROPCOLUMNSage;
ALTERTABLEStudentADDSageINT;
6.增加学生表中的唯一约束
ALTERTABLEstudentaddunique(sno);
7.将学生年龄Sage的数据类型改为半字长整数
ALTERTABLEStudentALTERCOLUMNSagesmallint;
8.为学生-课程数据库中的Student,Course,SC三个表建立唯一索引
--在Student表中按Sno升序建立名为Stusno的索引
CREATEUNIQUEINDEXStusnoONStudent(Sno);
--在Course表中按Cno升序建立名为Coucno的索引
CREATEUNIQUEINDEXCoucnoONCourse(Cno);
--在SC表中按Sno升序、Cno降序建立名为SCno的索引
CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
9.删除Course表的Coucno索引
DROPINDEXCourse.Coucno;
实验二、1.单表查询列实验
一、实验目的
1.了解单表查询的概念和方法。
2.掌握SELECT语句在单表查询列中的应用。
3.掌握各种查询列的使用方法。
二、实验要求
1.编写Transact_SQL语句实现各种列查询方式——单表。
2.给出相应的程序注释。
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.编写Transact_SQL语句针对学生或物资数据库中的表进行列查询;
4.编译并执行Transact_SQL语句。
四、参考源代码
--1查询全体学生的学号与姓名
SELECTSno,Sname
FROMStudent;
--2查询全体学生的姓名、学号、所在系。
SELECTSname,Sno,Sdept
FROMStudent;
--3查询全体学生的详细记录。
SELECTSno,Sname,Ssex,Sage,Sdept
FROMStudent;
或
SELECT*
FROMStudent;
--4查全体学生的姓名及其出生年份
SELECTSname,2005-Sagebirth
FROMStudent;
--5查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。
SELECTSname,'YearofBirth:
',2005-Sage,LOWER(Sdept)
FROMStudent;
--6使用列别名(字符)改变查询结果的列标题
SELECTSnameNAME,'YearofBirth:
'BIRTH,2005-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT
FROMStudent;
--7使用列别名(汉字)改变查询结果的列标题
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse;
实验二、2.单表查询行实验
一、实验目的
1.了解单表查询的概念和方法。
2.掌握SELECT语句在单表查询行中的应用。
3.掌握各种查询行的使用方法。
二、实验要求
1.编写Transact_SQL语句实现各种行查询方式——单表。
2.给出相应的程序注释。
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.编写Transact_SQL语句针对学生或物资数据库中的表进行列查询;
4.编译并执行Transact_SQL语句。
四、参考源代码
--1查询所有选修了课程的学号
SELECTDISTINCTSno
FROMSC;
--2查询学分在2-4之间的课程信息
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse
WHERECcredit>=2ANDCcredit<=4;
--或
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse
WHERECcreditBETWEEN2AND4;
--3查询课程号为1、4、7的课程信息
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse
WHERECnoIN('1','4','7');
--4查询姓‘刘’的学生学号和姓名
SELECTSno,Sname
FROMStudent
WHERESnameLIKE'刘%';
--5查询课程名以‘DB_’开头倒数第2个字为g的课程信息
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse
WHERECnameLIKE'DB\_%g_'ESCAPE'\';
--6查询出学分大于3的课程信息,并按学分升序进行排列
SELECTCno'课程号',Cname'课程名',Ccredit'学分'
FROMCourse
WHERECredit>3
ORDERBYCcreditASC;
--7查询选修了课程的学生及其对应的平均成绩
SELECTSno,AVG(Grade)
FROMSC
GROUPBYSno;
实验二、3.多表连接查询
一、实验目的
1.了解多表连接查询的概念和方法。
2.掌握复杂查询的使用方法。
3.掌握多表连结的方法。
4.掌握SELECT语句在多表连接查询中的应用。
二、实验要求
1.编写Transact_SQL语句实现多表连接查询。
2.给出相应的程序注释。
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.编写Transact_SQL语句针对学生或物资数据库中的表进行各种连接查询;
4.编译并执行Transact_SQL语句。
四、参考源代码
--1查询每个学生及其选修课情况
SELECTStudent.*,SC.*
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
--消除上例结果的重复列
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
--2以Student表为主体列出每个学生的基本情况及其选课情况,如果学生没有选课,只输出
--其基本情况。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.sno*=SC.Sno;
--3查询每门课的间接先行课
SELECTFirst.Cno,Second.Cpno
FROMCourseFirst,CourseSecond
WHEREFirst.Cpno=Second.Cno;
--4查询选修2号课程且成绩在80分以上的所有学生信息
SELECTStudent.Sno,Sname,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.SnoANDSC.Grade>80;
--5查询每个学生的学号、姓名、选修的课程名及成绩
SELECTStudent.Sno,Sname,Cname,Grade
FROMStudent,SC,Course
WHEREStudent.Sno=SC.SnoANDSC.Cno=Course.Cno;
--6查询姓陈的,全名为3个字的学生选课信息
SELECTSC.*
FROMSC,Student
WHERESC.Sno=Student.SnoANDSnameLIKE‘陈____’;
实验三、SQL定义、删除、修改视图实验
一、实验目的
掌握运用sqlserver中Transact_SQL语句创建、删除、修改视图。
二、实验要求
1.按要求创建一些视图,通过视图更新数据。
2.给出相应的程序注释。
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.使用Transact_SQL语句创建视图,通过视图更新数据;
4.编译并执行Transact_SQL语句。
四、参考源代码
--1创建计算机系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有计算机系--的学生
CREATEVIEWCS_Student
AS
SELECTSno,Sname,Sage,Sdept
FROMStudent
WHERESdept='CS'
--在修改和插入操作时,保证该视图只有计算机系的学生
WITHCHECKOPTION
--2建立计算机系选修了2号课程的学生视图
CREATEVIEWCS_SC(Sno,Sname,Grade)
AS
SELECTStudent.Sno,Sname,Grade
FROMStudent,SC
WHERESdept='CS'ANDStudent.Sno=SC.SnoANDSC.Cno='1'
--3建立计算机系选修了2号课程且成绩在80分以上的学生的视图
CREATEVIEWCS_SC1
AS
SELECTSno,Sname,Grade
FROMCS_SC
WHEREGrade>=80
--4建立一个反映学生出生年份的视图
CREATEVIEWBT_S(Sno,Sname,Sbirth)
AS
SELECTSno,Sname,2005-Sage
FROMStudent
--5将选修了课程的学生学号及相应的平均成绩建立成一个视图
CREATEVIEWS_AG(Sno,Gavg)
AS
SELECTSno,AVG(Grade)
FROMSC
GROUPBYSno
--6删除视图CS_SC1
DROPVIEWCS_SC1;
--7在S_AG视图中查询平均成绩在80分以上的学生学号和平均成绩
SELECTSno,AVG(Grade)
FROMS_AG
WHEREGavg>=80;
--8向计算机系学生视图CS_Student中插入一个新的学生记录(03033,'黄琴,20,'cs')
INSERT
INTOCS_Student
VALUES('03033','黄琴',20,'cs');
--9将计算机系学生视图CS_Student中学号为03031的学生年龄改为23岁
UPDATECS_Student
SETSage=23
WHERESno='03031';
--10删除计算机系学生视图CS_Student中学号为03032的记录
DELETE
FROMCS_Student
WHERESno='03032';
实验四数据库备份和恢复
一、实验目的
备份和恢复数据库
二、实验要求
1.掌握使用企业管理器和Transact-SQL语句备份数据库的方法
2.掌握使用企业管理器和Transact-SQL语句恢复数据库的方法
三、实验步骤
1.确保安装了SQLServer2000;
2.确保数据库服务器启动;
3.使用SQLServer企业管理器管理备份、恢复数据库
4.使用Transact-SQL命令备份、恢复数据库
四、参考操作和源代码
a)创建与管理备份设备
在进行备份前首先必须创建备份设备。
备份设备是用来存储数据库事务日志或文件和文件组的存储介质,其可以是硬盘、磁带或管道等。
A.使用企业管理器创建备份设备
(1)展开服务器组及相关的服务器,选择【管理】节点,右击【备份】,如图4.1所示,然后在快捷菜单中单击【新建备份设备】命令,弹出如图4.2所示的【备份设备属性】对话框。
图4.1通过快捷菜单新建备份设备
图4.2创建备份设备属性
(2)在【备份设备属性】对话框的【名称】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 指导书 za