《数据库原理》实验指导书最新版.docx

上传人:b****5 文档编号:5009499 上传时间:2022-12-12 格式:DOCX 页数:29 大小:1.44MB
下载 相关 举报
《数据库原理》实验指导书最新版.docx_第1页
第1页 / 共29页
《数据库原理》实验指导书最新版.docx_第2页
第2页 / 共29页
《数据库原理》实验指导书最新版.docx_第3页
第3页 / 共29页
《数据库原理》实验指导书最新版.docx_第4页
第4页 / 共29页
《数据库原理》实验指导书最新版.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

《数据库原理》实验指导书最新版.docx

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

《数据库原理》实验指导书最新版.docx

《数据库原理》实验指导书最新版

实验一实验环境熟悉与数据库(表)的建立

实验目的

熟悉实验的环境,掌握数据库、数据表的建立方法。

实验内容

1、熟悉SQL的使用环境

进入SQL环境(企业管理管理器、查询分析器)。

2、建立学生管理系统所需的数据库、数据表

一个数据库,三张数据表。

实验环境

1、硬件

PC机,具有网络功能。

2、软件

OS:

windows2000、xp、windows7,professional;

DBMS:

SQLServer2000.

实验过程

一、SQLserver环境

二、建立数据库与数据表

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

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

SQL程序:

/*例6-6--SQL*/

declare@kint,@s1int;

set@k=1;

set@s1=0;

while(@k<=1000)

begin

set@s1=@s1+@k;

set@k=@k+1;

end;

print's1='+str(@s1);

return;

执行后,显示结果:

s1=500500

例6-7:

求P1=1*2*3*……*20

SQL程序:

/*例6-7--SQL*/

declare@ki

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

当前位置:首页 > 高等教育 > 军事

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

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