《数据库原理》实验指导书最新版.docx
- 文档编号:6555454
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:31
- 大小:2.72MB
《数据库原理》实验指导书最新版.docx
《《数据库原理》实验指导书最新版.docx》由会员分享,可在线阅读,更多相关《《数据库原理》实验指导书最新版.docx(31页珍藏版)》请在冰豆网上搜索。
《数据库原理》实验指导书最新版
实验一实验环境熟悉与数据库(表)的建立
实验目的
熟悉实验的环境,掌握数据库、数据表的建立方法。
实验内容
1、熟悉SQL的使用环境
进入SQL环境(企业管理管理器、查询分析器)。
2、建立学生管理系统所需的数据库、数据表
一个数据库,三张数据表。
实验环境
1、硬件
PC机,具有网络功能。
2、软件
OS:
windows2000professional;
DBMS:
SQLServer2000.
实验过程
一、SQLserver2000环境
1、系统的安装
系统的安装过程比较简单,给学生演示一下。
2、进入查询分析器
开始程序MicrosoftSQLServer查询分析器,如下图所示:
图1-1
查询分析器的界面如图1-2所示:
图1-2
在文本框输入命令即可。
举例:
计算圆面积的SQL程序的输入与运行结果界面(图1-3)。
图1-3
3、企业管理器的进入
开始程序MicrosoftSQLServer企业管理器,如下图所示:
图1-4
企业管理器的界面如图1-5:
图1-5
二、建立数据库与数据表
1、建立学生管理数据库
用SQL语句(生成的主文件名为:
XSGL.MDF)
语句为:
CREATEDATABASEXSGL
2、建立学生管理系统的数据表(共3个)
使用SQL语句建立如下三个数据表(表结构见课本P92):
学生表:
Student.DBF(选本班10个同学作为10条记录)
CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR
(2),SageSMALLINT,SdeptCHAR(20));
INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES('200215128','陈东','男','IS',18);
建立表结构的语句见课本p85(P88—P89),记录的输入用插入命令INSERT,
详见课本P115。
*课程表:
Course.DBF(选本班所开的8门课作为8条记录)
建立表结构的语句:
CREATETABLECourse(CnoCHAR(4)NOTNULLUNIQUE,
CnameCHAR(20),CpnoCHAR(4),CcreditSMALLINT);
*选课表:
SC.DBF(选本班同学学习的10门课作为10条记录)
CREATETABLESC(SnoCHAR(7),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno));
要求:
以后各个实验都按如下要求进行:
*做实验前,先阅读实验指导书,预习实验的内容,写出预习报告。
*建好后暂存F盘,下机前每个人存入自己的U盘或邮箱,以备后用。
*完成实验后,要写出实验报告。
实验二数据库、数据表的基本操作
实验目的
掌握对数据库的基本操作,掌握对数据表的基本操作。
实验内容
1、数据库的基本操作,数据表的加入,移去,数据库的关闭。
2、数据表的打开,数据表的关闭。
3、数据表结构的修改,记录的修改。
4、数据表的备份。
5、记录的删除,数据表的删除。
6、数据表的显示。
实验环境
SQL环境。
实验过程
一、对数据库的基本操作
任务:
1、打开数据库
SQL语句:
USE<数据库文件名>(在SQLServer环境,后同)
例2-1:
打开已建的学生管理数据库:
SQL语句:
USEXSGL
2、修改数据库
SQL语句:
ALTERDATABASE<数据库文件名>
说明:
可修改数据库的有关参数,如:
容量、访问方式、设置等。
3、删除数据库
SQL语句:
DROPDATABASE<数据库名>
说明:
将数据库从数据库组中删除。
4、重命名数据库
SQL语句:
ALTERDATABASE<数据库文件名>MODIFYNAME=new_dbname
二、数据表的加入
任务:
将实验一中建立的三个数据表加入到学生管理数据库中。
SQL语句:
ALTERDATABASE<数据库文件名>ADDFILE<表文件名>
例2-2:
将一个临时表Test1dat2加入到XSGL数据库中:
ALTERDATABASEXSGL
ADDFILE
(
NAME=Test1dat2,
FILENAME='c:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\t1dat2.ndf',
SIZE=5MB,
MAXSIZE=100MB,
FILEGROWTH=5MB
)
三、数据表的移去
任务:
将选课表从XSGL数据库中移出。
SQL语句:
ALTERDATABASE<数据库文件名>REMOVEFILE<表文件名>
例2-3:
将一个临时表test1dat4移出XSGL数据库:
ALTERDATABASEXSGL
REMOVEFILEtest1dat4
四、数据库的关闭
SQL语句:
USE
五、数据表的打开
任务:
练习打开已建的数据表。
SQL语句:
在具体操作的语句中,使用FROM短语中指出表文件名
例2-4:
打开学生表,显示所有学生的学号,姓名:
SQL语句:
SELECTSno,SnameFROMSTUDENT
六、数据表的关闭
SQL语句:
打开新的表就自动关闭旧的表
七、数据表结构的修改
任务:
在学生表(Student)中加入一个字段“班级”,分别用VFP命令和SQL语句实现。
SQL语句:
ALTERTABLE
例2-5:
在课程表中加入一个“任课教师”字段:
SQL语句:
ALTERTABLECourseADDTeacherCHAR(8)NotNULL
八、数据表记录的修改
任务:
在学生表(Student)中,修改学生的记录。
SQL语句:
UPDATE
例2-6:
对选课表(SC)中,课程号为101的成绩不及格者,每人加5分:
SQL语句:
UPDATESCSETGrade=Grade+5
WHERE(Cno=’101’ANDGrade<60)
九、数据表的备份
任务:
将学生表(Student)备份成XSBF.DBF。
SQL语句:
SELECT…INTO…FROM…
例2-7:
备份课程表成KCBF:
SQL语句:
SELECT*INTOKCBFFROMCourse
十、记录的删除
任务:
向已建的表中,任意加入若干条记录,然后删除。
SQL:
DELETE……FROM……WHERE
TRUNCATETABLE<数据表文件名>
例2-8:
删除课程表中,所有课程号为”104”的记录:
SQL语句:
DELETECourseWHERECno=’104’
例2-9:
删除临时表TABLE1中的全部记录:
SQL:
TRUNCATETABLETABLE1
十一、数据表的删除
任务:
将前面已备份的表删除。
SQL语句:
DROPTABLE<数据表文件名>
例2-10:
删除表xsjg1:
SQL语句:
DROPTABLEXSJG1
注意:
被删除的文件必须是关闭的。
十二、数据表的显示
任务:
显示数据表的字段和记录。
SQL语句:
SELECT…FROM…
例2-11:
显示学生表(Student)记录的例子:
(1)连续显示所有记录
SQL语句:
SELECT*FROMSTUDENT
(2)分屏(VFP中可以,SQL中不行)显示所有男同学的记录
SQL语句:
SELECT*FROMSTUDENTWHERESsex=’M’
(3)连续显示年龄大于等于20岁的同学记录的学号、姓名和年龄
SQL语句:
SELECTSno,Sname,SageFROMSTUDENTWHERESage>=20
实验三数据的组织与查询
实验目的
掌握数据表的索引、排序、检索与查询等操作。
实验内容
1、数据表索引的建立、打开、更新、删除与关闭。
2、数据表记录的排序。
3、数据表数据的检索。
4、数据表数据的查询。
实验环境
SQL环境。
实验过程
一、数据表索引的建立
SQL语句:
CREATEINDEX<索引文件名>ON……
例3-1:
对学生表按学号建索引,生成索引文件SYXH
SQL语句:
CREATEINDEXSYXHONSTUDENT(Sno)
显示的结果:
记录按学号的升序(由小到大)排列。
二、索引的打开
SQL语句:
用SELECT语句直接打开。
例3-2:
在已打开学生表的情况下,再另打开索引文件SYXH,显示
全部学生的记录
SQL语句:
SELECT*FROMSTUDENTWITH(INDEX=SYXH)
三、索引的更新
修改表记录时,只要索引是打开的,系统就会自动修改索引,否则,就要用重新索引命令修改。
SQL语句:
DBCCSHOWCONTIG,DBCCDBREINDEX
四、索引的关闭
不再打开就是关闭。
五、索引的删除
首先要关闭索引,然后才能删除索引文件。
SQL语句:
DROPINDEX主表名.<索引名>
例:
删除已建的SYXH
SQL语句:
DROPINDEXSTUDENT.SYXH
六、数据表记录的排序
排序:
是对记录按某些字段值重新排列顺序,生成新的数据表文件。
SQL语句:
SELECT…FROM…WHERE…ORDERBY…
例3-3:
对学生表按学生年龄降序排序,生成排序文件STS1
SQL语句:
SELECT*INTOSTS1FROMSTUDENTORDERBYSageDESC
七、数据表数据的检索
检索:
只能在索引过的数据表中查找数据。
SQL语句:
SELECT…FROM…WHERE…
例3-4:
对学生表已按学号建过索引,检索学号为95002的学生的记录,
并显示出来
SQL语句:
SELECT*FROMSTUDENTWITH(INDEX=SYXH)WHERESno=’95002’
八、数据表数据的查询
查询:
不依赖索引,可以直接在数据表中查找数据。
SQL语句:
SELECT…FROM…WHERE…
例3-5:
在学生表中,找出计算机系的全部学生,并显示
SQL语句:
SELECT*FROMSTUDENTWHERESdept=’CS’
实验四数据计算与多数据表的操作
实验目的
掌握数据表的计算功能与对多个数据表的操作。
实验内容
1、数据表记录个数的统计。
2、数据表数据的求和。
3、数据表数据的求平均值。
4、数据表数据的汇总。
5、多工作区的选择。
6、两个表之间的数据更新。
7、两个表(主表与多个从表)之间的关联。
8、两个表之间的连接。
实验环境
SQL环境。
实验过程
一、数据表记录个数的统计
统计:
对记录个数的计数,结果为非负整数(≥0)。
SQL语句:
SELECTCOUNT(*)FROM…WHERE…
例4-1:
统计学生表中数学系的学生人数
SQL语句:
SELECTCOUNT(*)FROMSTUDENTWHERESdept=’MS’
二、数据表数据的求和
求和:
对数据表中记录数值型(N,F,I等)字段的值求代数和。
SQL语句:
SELECTSUM(*)FROM…WHERE…
例4-2:
在选课表中,求出学号为95002的学生所选课的总成绩
SQL语句:
SELECTSUM(*)FROMSTUDENTWHERESno=’95002’
三、数据表数据的求平均值
求平均值:
对数据表中记录数值型(N,F,I等)字段的值求平均值。
SQL语句:
SELECTAVG(*)FROM…WHERE…
例4-3:
在选课表中,求出学号为95002的学生所选课的平均成绩
SQL语句:
SELECTAVG(*)FROMSTUDENTWHERESno=’95002’
四、数据表数据的汇总
汇总:
对数据表中记录数值型(N,F,I等)字段的值按某关键字的值求代数和。
其结果放在另外一个数据表中(汇总表)。
SQL语句:
SELECT*INTO<新表文件名>FROM<表文件名>GROUPBY…
例4-4:
在选课表中,按课程号汇总的成绩
Create(Cnochar(4),avggint);
SQL语句:
SELECTCno,avg(grade)INTOHZB1(Cno,avgg)FROMSCGROUPBYCno
五、多工作区的选择
工作区:
VFP系统中为同时使用多个数据表而开辟的内存缓冲区,可用数字,字母(只能表示前10个)来表示。
SQL语句:
在SELECT语句中指出短语CROSSJOIN可实现
六、两个表之间的数据更新
数据更新:
就是用另一个工作区表的数据来修改当前工作区表的数据。
SQL语句:
UPDATE<表名>SET…WHERE(子查询语句)
七、两个表(主表与多个从表)之间的关联
关联:
又称为关系连接,逻辑连接,它是在主表与从表之间建立一种
逻辑关系,当主表记录指针移动时,从表也随之移动,这样有
利于相关修改与查询。
SQL语句:
SELECT…FROM…WHERE…
八、两个表之间的连接
连接:
又叫物理连接,它由两个表横向连接,生成新的表。
SQL语句:
SELECT*FROM…CROSSJOIN…
实验五触发器与存储过程的设计
实验目的
掌握SQL中的存储过程的设计,了解触发器的内容。
实验内容
1、存储过程的设计。
2、触发器的实现。
实验环境
SQL环境。
实验过程
一、存储过程的设计
1、有关概念
存储过程是由SQL语句及控制流语句组成的集合。
调用一个存储过程,可以一次性地执行过程中的所有语句。
从这一点来说,它类似于程序。
存储过程由用户建立,它作为数据库的一个成分,存在于数据库中。
存储过程类似VFP中的过程(函数、子程序),它可以接受参数,也可以返回参数。
存储过程可以被客户端、其他存储过程或触发器调用。
以SP_为前缀的存储过程是SQL提供的系统存储过程;以XP_为前缀的存储过程是扩展的存储过程;关联到表上的存储过程称为触发式存储过程。
2、存储过程的建立
语句格式:
CREATEPROCEDURE存储过程名[;分组号]
[{@参数名数据类型}[VARYING][=参数的默认值][OUTPUT][,…]
[WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]ASSQL语句[…]
3、存储过程的的执行
语句格式:
EXECUTE过程名[参数表]
4、修改存储过程
语句格式:
ALTERPROCEDURE存储过程名[;分组号]
[{@参数名数据类型}[VARYING][=参数的默认值][OUTPUT][,…]
[WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]ASSQL语句[…]
5、删除存储过程
语句格式:
DROPPROCEDURE{存储过程名}[,……]
例5-1对MYDB数据库中的学生表建立一个带SELECT查询语句的存储过程:
USEMYDB
GO
CREATEPROCEDUREPROC1
@PARALCHAR
(2)
AS
SELECTSNO,SNAME,HEIGHTFROMSTUDENT
WHERESEX=@PARAL
RETURN
执行所建的过程:
USEMYDB
EXECUTEPROC1‘女’
二、触发器的设计
触发器是一种特殊的存储过程,用它来控制关联的表。
1、触发器的建立
语句格式:
CREATETRIGGER触发器名
ON{表名|视图名}
[WITHENCRYPTION]
{{FOR|AFTER|INSTEADOF}{[DELETE][,INSERT][,UPDATE]}
[WITHAPPEND][NOTFORREPLICATION]
AS
[{IFUPDATE(列名)[{AND|OR}UPDATE(列名)][,……]|
IF(COLUMN_UPDATE()…)SQL语句[,……]
}
2、修改触发器
使用ALTERTRIGGER语句,其格式与CREATETRIGGER语句的格式一致。
3、删除触发器
DROPTRIGGER{触发器名}
例5-2建立一个触发器,当有人试图向STUDENT表中添加或修改数据时,触发器发出一条消息(警告!
)。
USEMYDB
GO
CREATETRIGGERMESSAGE1ONSTUDENTFORINSRET,UPDATE
ASRAISERROR(‘WARNING!
’,10,1)
GO
实验六程序设计与小系统开发
实验目的
掌握SQL中的程序设计,了解VFP中面向对象程序设计的基本思想。
实验内容
1、顺序结构程序设计。
2、分支结构程序设计。
3、循环结构程序设计。
4、VFP中面向对象程序设计简介。
5、观看一个小系统实例。
6、设计一个图书管理系统。
实验环境
SQL环境。
实验过程
一、顺序结构程序设计
SQL中顺序结构程序包括的主要语句:
*定义变量(DECLARE等)语句;
*无结构的语句(对库,表等操作的语句);
*赋值语句(SET);
*SELECT语句;
*BEGIN……END语句;
*WAITFOR语句;
*PRINT语句;
*RETURN语句;
*注释语句(/*……*/)等.
例6-1:
由键盘输入一个三角形的三条边a,b,c,编程计算该三角形的周长ZC与面积S。
SQL程序如下:
/*例6-1--SQL*/
declare@afloat,@bfloat,@cfloat,@zcfloat,@bzcfloat,@sfloat;
select@a=3,@b=4,@c=5;
select@zc=@a+@b+@c,@bzc=@zc/2,@s=sqrt(@bzc*(@bzc-@a)*(@bzc-@b)*(@bzc-@c));
print‘zc=’+str(@zc);
print‘s=’+str(@s);
return;
运行程序有下面两种方式:
*菜单方式:
查询执行。
*工具方式:
单击绿色的右三角。
执行后,显示结果:
S=6。
二、分支结构程序设计
SQL中分支结构程序包括的主要语句:
*IF语句;
*IF……ELSE……语句;
*CASE语句;
*以上语句的嵌套形式.
例6-2:
判断输入的一个数N是否为负数,若是,输出”N<0”及该数.
说明:
本例是简单条件语句程序.
SQL程序如下:
/*例6-2--SQL*/
declare@nfloat;
set@n=-8;
if@n<0
print'n<0:
'+str(@n);
return;
执行后,显示结果:
n<0:
-8。
例6-3:
判断输入的一个考试分数G是否及格(>=60),若是,输出”GOOD!
”及该分数,否则,输出”NOTPASS……”及该分数.
说明:
本例是复杂条件语句程序.
SQL程序如下:
/*例6-3--SQL*/
declare@gfloat;
set@g=88;
if@g>=60
print'GOOD!
'+str(@G);
else
print'Notpass......';
return;
执行后,显示结果:
GOOD!
88。
例6-4:
判断输入的一个数S的符号,若该数是为负数,SF=-1;若为0,SF=0;若为正数,SF=1.输出该数S及结果SF.
说明:
本例是条件语句嵌套程序.
SQL程序如下:
/*例6-4--SQL*/
declare@sreal,@sfint;
set@s=-18;
if@s<0
set@sf=-1;
else
if@s=0
set@sf=0;
else
set@sf=1;
print's='+str(@s);
print'sf='+str(@sf);
return;
执行后,显示结果:
s=-18
sf=-1
例6-5:
生成一个管理系统的菜单,此处只显示菜单项对应的功能,到实际程序,只需换成执行具体的文件即可。
SQL程序如下:
/*例6-5--SQL*/
declare@xmchar
(1);
set@xm='1';
printspace(20)+'学生信息管理系统';
PRINT'';
printspace(5)+'1.输入'+SPACE(30)+'2.修改';
printspace(5)+'3.查询'+SPACE(30)+'4.统计';
printspace(5)+'5.打印'+SPACE(30)+'0.退出';
PRINT'';
PRINTSPACE(20)+'请选择项目(0---5):
';
PRINT'';
(CASE@xm
WHEN'1'THEN'执行输入记录程序...'
WHEN'2'THEN'执行修改表结构与修改记录程序...'
WHEN'3'THEN'执行查询程序...'
WHEN'4'THEN'执行统计分析程序...'
WHEN'5'THEN'执行打印程序...'
WHEN'0'THEN'本程序运行结束,再见!
'
ELSE'选择有错误,请重新选择!
!
'
END);
PRINT'';
return;
执行后,显示结果:
学生信息管理系统
1.输入2.修改
3.查询4.统计
5.打印0.退出
请选择项目(0---5):
执行输入记录程序...
三、循环结构程序设计
例6-6:
求S1=1+2+3+……+1000
SQ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理 数据库 原理 实验 指导书 最新版