数据库原理实验教案.docx
《数据库原理实验教案.docx》由会员分享,可在线阅读,更多相关《数据库原理实验教案.docx(56页珍藏版)》请在冰豆网上搜索。
数据库原理实验教案
数据库原理与应用
实验
教案
实验班级:
计科0901
实验教师:
高汉平
2010年9月
数据库原理与应用实验教学
数据库技术是计算机科学中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和础。
本课程是计算机专业的必修课程。
通过本课程的学习,使学生理解数据库系统的基本原理:
包括数据库的一些基本概念,各种数据模型的特点,关系数据库基本概念,SQL语言,关系数据理论,数据库的设计理论。
掌握数据库应用系统的设计方法、了解数据库技术的发展动向,以指导今后的应用。
实践方面:
要求学生利用数据库的原理知识和实用工具动手开发数据库应用系统。
其最终目的是培养学生运用数据库技术解决问题的能力,激发他们在此领域中继续学习和研究的愿望。
为了达到这个目的,除了对关系数据库系统的基本概念、原理和方法进行介绍之外,本课程的另外一个特点是强调课程的实践性。
实验的目的是为了配合课堂教学,进一步强化对数据库原理的理解。
实验一安装SQLServer2000
一、实验目的
SQLServer2000是Mircosoft公司推出的关系型网络数据库管理系统,是一个逐步成长起来的大型数据库管理系统。
本次实验了解SQLServer2000的安装过程,熟悉SQLServer2000软件环境。
学会安装SQLServer2000的安装。
二、实验内容
1.安装Microsoft的数据库服务软件SQLServer2000:
运行服务器目录SQL2000下的可执行文件autorun.exe,进行SQLServer2000的安装。
安装主界面如图1-1所示。
图1-1
选择安装SQLServer2000组件,出现组件安装界面,如图1-2所示。
图1-2
选择安装数据库服务器,进入SQLServer2000的安装向导,如图1-3所示。
图1-3
点击“下一步”,到计算机名称对话框,如图1-4所示。
图1-4
“本地计算机”是默认选项,本地计算机的名称就显示在上面,点击“下一步”,出现安装选择对话框,如图1-5所示。
图1-5
选择“创建新的SQLServer实例,或安装客户端工具”,点击“下一步”,出现用户信息对话框,如图1-6所示。
图1-6
输入姓名和公司名称后,点击“下一步”,出现软件许可协议,如图1-7所示。
图1-7
点“是”按钮,出现安装定义对话框,如图1-8所示。
图1-8
选择“服务器和客户端工具”,点击下一步,出现实例名对话框,如图1-9所示。
图1-9
系统提供了“默认”复选框,点击下一步,出现安装类型选择框,如图1-10所示。
图1-10
选择典型,点击“下一步”,出现服务帐户对话框,如图1-11所示。
图1-11
接受系统的缺省值,点击“下一步”,出现身份验证模式窗口,如图1-12所示。
图1-12
接受系统的缺省值,点击“下一步”,出现开始拷贝文件窗口,如图1-13所示。
图1-13
点击“下一步”,开始将文件拷贝到选择的目录中,如图1-14所示。
图1-14
文件拷贝完成后,出现安装结束界面,如图1-15所示。
图1-15
点击“完成”按钮,完成SQLServer2000的安装。
三、实验任务
1.在计算机上安装数据库软件SQLServer2000;
2.熟悉软件的使用,SQLServer2000主菜单如图1-16所示:
图1-16
实验二启动SQLServer2000和在企业管理器下建库和表
一、实验目的
SQLServer2000的启动和管理工作由服务管理器和企业管理器来实现。
本次实验了解SQLServer2000的启动,熟悉如何在SQLServer2000图形环境下建立数据库和表。
学会安装SQLServer2000的启动和建库、表的操作。
二、实验内容
1.启动数据库服务软件SQLServer2000:
在程序菜单中选择MicrosoftSQLServer,如图2-1所示:
图2-1
再选中服务管理器,如图2-2所示:
图2-2
点击服务管理器后,出现SQLServer服务管理器,如图2-3所示:
图2-3
点击“开始/继续”按钮,启动SQLServer2000数据库服务。
启动成功后,在时钟旁边出现一个
符号,如图2-4所示。
图2-4
2.在SQLServer2000中建立数据库:
在程序菜单中选择MicrosoftSQLServer,如图2-5所示:
图2-5
再选中企业管理器,如图2-6所示:
图2-6
点击企业管理器后,出现企业管理器的主界面,如图2-7所示:
图2-7
点击左边树状控制栏的+/-号可以打开和关闭SQLServer组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图2-8所示:
图2-8
点击新建数据库,出现新建数据库窗口,如图2-9所示:
图2-9
输入数据库名称:
Test,点击数据文件选项卡,如图2-10所示:
图2-10
在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。
完成后点击事务日志选项卡,如图2-11所示:
图2-11
事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。
接受系统的缺省值,点击确定按钮,完成数据库的新建,如图2-12所示。
图2-12
3.在Test数据库上建立表:
点击数据库Test前面的+号,打开数据库的各种属性,如图2-13所示:
图2-13
选中表的属性,单击鼠标右键,出现表的菜单,如图2-14所示:
图2-14
点击新建表按钮,出现新建表窗口,如图2-15所示:
图2-15
输入列名,数据类型,长度等信息,点击
图标,出现选择表名窗口,如图2-16所示:
图2-16
输入表名,点击确定按钮,将新建的表存盘。
三、实验任务
1.用数据库SQLServer2000的服务管理器启动数据库服务;
2.用数据库SQLServer2000的企业管理器建立一个数据文件名为demodata、大小50M,日志文件名为demolog、大小25M的新数据库,该数据库名为Demo。
3.在数据库Demo上,建立如下所示的表customer:
字段名
类型
长度
含义
customid
varchar
17
顾客编号
name
varchar
10
姓名
sex
varchar
2
性别
age
int
4
年龄
xfg
dec
10,2
消费金额
address
varchar
50
地址
memo
varchar
100
备注
说明:
需写实验报告
(1)。
实验三SQLServer2000查询分析器的使用
一、实验目的
SQLServer2000的查询分析器是一种特别用于交互式执行SQL语句和脚本的极好的工具。
本次实验了解SQLServer2000查询分析器的启动,熟悉如何在SQLServer2000查询分析器中建表、插入记录、查询记录。
学会SQLServer2000的查询分析器中建表、插入记录、查询记录。
二、实验内容
1.启动数据库服务软件SQLServer2000的查询分析器:
在程序菜单中选择MicrosoftSQLServer,如图3-1所示:
图3-1
再选中查询分析器,如图3-2所示:
图3-2
点击查询分析器后,出现连接到SQLServer窗口,如图3-3所示:
图3-3
点击按钮,出现选择服务器窗口,如图3-4所示。
图3-4
选择本地服务(Local),点击确定按钮。
再点击连接到SQLServer窗口的确定按钮。
出现SQL查询分析器主界面,如图3-5所示。
图3-5
选择查询菜单,点击更改数据库,如图3-6所示。
图3-6
出现选择数据库窗口,如图3-7所示。
图3-7
选择在上次实验中建立的数据库Test,点确定按钮。
2.在查询分析器中建立表:
在查询分析器的查询窗口中输入SQL语句,如图3-8所示。
图3-8
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-9所示。
图3-9
提示命令成功完成,或者报告出错信息。
3.查询分析器中向表添加数据:
在查询分析器的查询窗口中输入SQL语句,如图3-10所示。
图3-10
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-11所示。
图3-11
1.从表中查询数据:
在查询分析器的查询窗口中输入SQL语句,如图3-12所示。
图3-12
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-13所示。
图3-13
三、实验任务
1.打开数据库SQLServer2000的查询分析器,用SQL语言建表student,表结构如下图所示:
字段名
类型
长度
含义
id
varchar
17
学生编号
name
varchar
10
姓名
sex
varchar
2
性别
age
integer
年龄
score
numeric
6,2
总成绩
2.用SQL语言向表student插入如下6条记录:
A0001
赵一
男
20
580.00
B0002
钱二
女
19
540.00
C0003
孙三
男
21
555.50
D0004
李四
男
22
480.00
E0005
周五
女
20
495.50
F0006
吴六
男
19
435.00
3.练习查询语句,查找年龄大于等于20岁,成绩低于500分的记录。
实验四SQL单表查询语句实验
实验目的与要求:
目的是熟练掌握开发环境 的功能和使用方法,掌握在开发环境下SQL语言中数据操纵的语句,掌握程序下对表中数据的操作。
实验内容:
(说明:
需写实验报告
(1))
select语句中各种查询条件的实验并写出查询结果。
[例1]查询全体学生的学号与姓名。
SELECTSno,Sname
FROMStudent;
[例2]查询全体学生的姓名、学号、所在系。
SELECTSname,Sno,Sdept
FROMStudent;
[例3]查询全体学生的详细记录。
SELECTSno,Sname,Ssex,Sage,Sdept
FROMStudent;或
SELECT*
FROMStudent;
[例4]查全体学生的姓名及其出生年份。
SELECTSname,2000-Sage
FROMStudent;
[例5]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。
SELECTSname,'YearofBirth:
',2000-Sage,ISLOWER(Sdept)
FROMStudent;
实验五SQL连接查询语句实验查询
一、.实验目的与要求:
标准SQL连接查询、嵌套查询,规则、形式较多,需要学生多记,多练,在练习中加强理解、记忆。
二、.实验内容:
(说明:
需写实验报告
(2))
SQL连接查询、嵌套查询并写出查询结果。
SQL中连接查询的主要类型
广义笛卡尔积、等值连接(含自然连接)、非等值连接查询、自身连接查询、外连接查询、复合条件连接查询
1、广义笛卡尔积
不带连接谓词的连接很少使用
例:
SELECTStudent.*,SC.*
FROMStudent,SC
2、等值与非等值连接查询
等值连接、自然连接、非等值连接
[例1]查询每个学生及其选修课程的情况。
SELECTStudent.*,SC.*
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
自然连接
等值连接的一种特殊情况,把目标列中重复的属性列去掉。
[例2]对[例32]用自然连接完成。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
3、自身连接
一个表与其自己进行连接,称为表的自身连接
需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀
[例3]查询每一门课的间接先修课(即先修课的先修课)
SELECTFIRST.Cno,SECOND.Cpno
FROMCourseFIRST,CourseSECOND
WHEREFIRST.Cpno=SECOND.Cno;
4、外连接(OuterJoin)
[例4]查询每个学生及其选修课程的情况包括没有选修课程的学生----用外连接操作
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.Sno(*);
在表名后面加外连接操作符(*)或(+)指定非主体表,非主体表有一“万能”的虚行,该行全部由空值组成,虚行可以和主体表中所有不满足连接条件的元组进行连接,由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值
左外连接:
外连接符出现在连接条件的左边
右外连接:
外连接符出现在连接条件的右边
5、复合条件连接
WHERE子句中含多个连接条件时,称为复合条件连接
[例6]查询每个学生的学号、姓名、选修的课程名及成绩。
SELECTStudent.Sno,Sname,Cname,Grade
FROMStudent,SC,Course
WHEREStudent.Sno=SC.Sno
andSC.Cno=Course.Cno;
嵌套查询
嵌套查询概述
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SELECTSname外层查询/父查询
FROMStudent
WHERESnoIN
(SELECTSno内层查询/子查询
FROMSC
WHERECno='2');
实验六SQL数据更新语句实验
一、实验目的与要求:
目的是熟练掌握开发环境 的功能和使用方法,掌握在开发环境下SQL语言中数据操纵的语句,掌握程序下对表中数据的操作。
二、实验内容:
(说明:
需写实验报告(3))
update、delete、insert语句的练习并写出结果。
数据更新描述:
数据更新包括三种操作:
1.插入数据2.修改数据3.删除数据
1.插入数据
两种插入数据方式:
插入单个元组;插入子查询结果
1).插入单个元组
语句格式
INSERT
INTO<表名>[(<属性列1>[,<属性列2>…])]
VALUES(<常量1>[,<常量2>]…)
功能
将新元组插入指定表中。
[例1]将一个新学生记录
(学号:
95020;姓名:
陈冬;性别:
男;所在系:
IS;年龄:
18岁)插入到Student表中。
INSERT
INTOStudent
VALUES('95020','陈冬','男','IS',18);
[例2]插入一条选课记录('95020','1')。
INSERT
INTOSC(Sno,Cno)
VALUES('95020','1');
新插入的记录在Grade列上取空值
2).插入子查询结果
[例3]对每一个系,求学生的平均年龄,并把结果存入数据库。
第一步:
建表
CREATETABLEDeptage
(SdeptCHAR(15)/*系名*/
AvgageSMALLINT);/*学生平均年龄*/
第二步:
插入数据
INSERT
INTODeptage(Sdept,Avgage)
SELECTSdept,AVG(Sage)
FROMStudent
GROUPBYSdept;
2.修改数据
1.修改某一个元组的值
[例4]将学生95001的年龄改为22岁。
UPDATEStudent
SETSage=22
WHERESno='95001';
2.修改多个元组的值
[例5]将所有学生的年龄增加1岁。
UPDATEStudent
SETSage=Sage+1;
3.删除数据
1.删除某一个元组的值
[例8]删除学号为95019的学生记录。
DELETE
FROMStudent
WHERESno='95019';
2.删除多个元组的值
[例9]删除2号课程的所有选课记录。
DELETE
FROMSC;
WHERECno='2';
3.带子查询的删除语句
[例11]删除计算机科学系所有学生的选课记录。
DELETE
FROMSC
WHERE'CS'=
(SELETESdept
FROMStudent
WHEREStudent.Sno=SC.Sno);
实验七数据库的安全性和数据库完整性
一、实验目的与要求:
熟练掌握数据库的安全性和数据库完整性的功能和使用方法,掌握在开发环境下SQL语言中数据库的安全性和数据库完整性的语句操作。
二、实验内容:
(说明:
需写实验报告(4))
1.数据库的安全性
(1).数据库的授权(GRANT)
GRANT语句的一般格式:
GRANT<权限>[,<权限>]...
[ON<对象类型><对象名>]
TO<用户>[,<用户>]...
[WITHGRANTOPTION];
GRANT功能:
将对指定操作对象的指定操作权限授予指定的用户。
例1把查询Student表权限授给用户U1
GRANTSELECT
ONTABLEStudent
TOU1;
例2把对Student表和Course表的全部权限授予用户U2和U3
GRANTALLPRIVILIGES
ONTABLEStudent,Course
TOU2,U3;
例3把对表SC的查询权限授予所有用户
GRANTSELECT
ONTABLESC
TOPUBLIC;
例4把查询Student表和修改学生学号的权限授给用户U4
GRANTUPDATE(Sno),SELECT
ONTABLEStudent
TOU4;
例5把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANTINSERT
ONTABLESC
TOU5
WITHGRANTOPTION;
执行例5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限:
例6GRANTINSERTONTABLESCTOU6
WITHGRANTOPTION;
同样,U6还可以将此权限授予U7:
例7GRANTINSERTONTABLESCTOU7;
但U7不能再传播此权限。
U5-->U6-->U7
(2).收回权限(REVOKE)
REVOKE语句的一般格式为:
REVOKE<权限>[,<权限>]...
[ON<对象类型><对象名>]
FROM<用户>[,<用户>]...;
功能:
从指定用户那里收回对指定对象的指定权限
例9收回所有用户对表SC的查询权限
REVOKESELECT
ONTABLESC
FROMPUBLIC;
例10把用户U5对SC表的INSERT权限收回
REVOKEINSERT
ONTABLESC
FROMU5;
2.数据库完整性
什么是数据库的完整性
数据的正确性和相容性
防止不合语义的数据进入数据库。
例:
学生的年龄必须是整数,取值范围为14--29;
学生的性别只能是男或女;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
完整性:
是否真实地反映现实世界
数据库的完整性分为实体完整性、参照完整性、用户定义的完整性。
例11.将student表中在Sno属性定定义为码。
CREATETABLEstudent
(Snochar(16)PRIMARYKEY,
Snamechar(10)NOTNULL,
Ssexchar
(2),
SageSMALLINT,
Sdeptchar(20)
);
例11.定义SC中的参照完整性。
CREATETABLESC
(Snochar(16)NOTNULL,
Cnochar(4)NOTNULL,
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Sno)REFERENCESstudent(Sno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
);
实验八嵌入式SQL访问数据库
1、实验内容:
(说明:
需写实验报告(5))
编写嵌入式C程序,编程实现了对“学生课程数据库”的访问和操作:
对Student表中年龄进行更新。
系统每输出一个学生记录,询问用户是否更新。
如果要更新,就输入新的年龄。
2.嵌入式SQL要求
要求:
将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
嵌入式SQL由SQL语句和C/C++代码组成。
其中SQL语句由预处理器翻译成C或C++的源代码。
对预处理后的源代码进行编译、链接生成可执行程序后方可运行。
3、嵌入式SQL访问数据库程序清单
#include
#include
EXECSQLBEGINDECLARESECTION;
chardeptname[20];
charHSno[9];
charHSname[20];
charHSsex[4];
intHSage;
intNEWAGE;
EXECSQLENDDECLARESECTION;
longSQLCODE;
EXECSQLINCLUDEsqlca;
intmain()
{
intcount=0;
charyn;
printf("请输入您要更新的系名(Sdept):
");
scanf("%s",&deptname);
EXECSQLCONNECTTO服务器名.数据库名USER