2009级数据库原理实验教案
更新时间:2023-09-21 22:23:01 阅读量: 工程科技 文档下载
数据库原理与应用
实验
教 案
实验班级:计 科 0901 实验教师: 高 汉 平
2010年9月
1
数据库原理与应用实验教学
数据库技术是计算机科学中发展最快的领域之一,也是应用最
广的技术之一,它已成为计算机信息系统与应用系统的核心技术和础。本课程是计算机专业的必修课程。通过本课程的学习,使学生理解数据库系统的基本原理:包括数据库的一些基本概念,各种数据模型的特点,关系数据库基本概念,SQL语言,关系数据理论,数据库的设计理论。掌握数据库应用系统的设计方法、了解数据库技术的发展动向,以指导今后的应用。
实践方面:要求学生利用数据库的原理知识和实用工具动手开发数据库应用系统。其最终目的是培养学生运用数据库技术解决问题的能力,激发他们在此领域中继续学习和研究的愿望。 为了达到这个目的,除了对关系数据库系统的基本概念、原理和方法进行介绍之外,本课程的另外一个特点是强调课程的实践性。
实验的目的是为了配合课堂教学,进一步强化对数据库原理的理解。
2
实验一 安装SQL Server 2000
一、实验目的
SQL Server 2000是Mircosoft公司推出的关系型网络数据库管理系统,是一个逐步成长起来的大型数据库管理系统。
本次实验了解SQL Server 2000的安装过程,熟悉SQL Server 2000软件环境。学会安装SQL Server 2000的安装。 二、实验内容
1.安装Microsoft的数据库服务软件SQL Server 2000:
运行服务器目录SQL2000下的可执行文件autorun.exe,进行SQL Server 2000的安装。安装主界面如图1-1所示。
图1-1
选择安装SQL Server 2000组件,出现组件安装界面,如图1-2所示。
3
图1-2
选择安装数据库服务器,进入SQL Server 2000的安装向导,如图1-3所示。
图1-3
4
点击“下一步”,到计算机名称对话框,如图1-4所示。
图1-4
“本地计算机”是默认选项,本地计算机的名称就显示在上面,点击“下一步”,出现安装选择对话框,如图1-5所示。
图1-5
选择“创建新的SQL Server实例,或安装客户端工具”,点击“下一步”,出现用户信息对话框,如图1-6所示。
5
图1-6
输入姓名和公司名称后,点击“下一步”,出现软件许可协议,如图1-7所示。
图1-7
点“是”按钮,出现安装定义对话框,如图1-8所示。
6
图1-8
选择“服务器和客户端工具”,点击下一步,出现实例名对话框,如图1-9所示。
图1-9
系统提供了“默认”复选框,点击下一步,出现安装类型选择框,如图1-10所示。
7
图1-10
选择典型,点击“下一步”,出现服务帐户对话框,如图1-11所示。
图1-11
接受系统的缺省值,点击“下一步”,出现身份验证模式窗口,如图1-12所示。
8
图1-12
接受系统的缺省值,点击“下一步”,出现开始拷贝文件窗口,如图1-13所示。
图1-13
点击“下一步”,开始将文件拷贝到选择的目录中,如图1-14所示。
9
图1-14
文件拷贝完成后,出现安装结束界面,如图1-15所示。
图1-15
点击“完成”按钮,完成SQL Server 2000的安装。 三、实验任务
1.在计算机上安装数据库软件SQL Server 2000;
2.熟悉软件的使用,SQL Server 2000主菜单如图1-16所示:
图1-16
10
实验二 启动SQL Server2000和在企业管理器下建库和表
一、实验目的
SQL Server 2000的启动和管理工作由服务管理器和企业管理器来实现。 本次实验了解SQL Server 2000的启动,熟悉如何在SQL Server 2000图形环境下建立数据库和表。学会安装SQL Server 2000的启动和建库、表的操作。 二、实验内容
1.启动数据库服务软件SQL Server 2000:
在程序菜单中选择Microsoft SQL Server,如图2-1所示:
图2-1
再选中服务管理器,如图2-2所示:
11
图2-2
点击服务管理器后,出现SQL Server服务管理器,如图2-3所示:
图2-3
点击“开始/继续”按钮,启动SQL Server 2000数据库服务。
启动成功后,在时钟旁边出现一个符号,如图2-4所示。
图2-4
2.在SQL Server 2000中建立数据库:
在程序菜单中选择Microsoft SQL Server,如图2-5所示:
12
图2-5
再选中企业管理器,如图2-6所示:
图2-6
点击企业管理器后,出现企业管理器的主界面,如图2-7所示:
13
图2-7
点击左边树状控制栏的+/-号可以打开和关闭SQL Server组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图2-8所示:
图2-8
点击新建数据库,出现新建数据库窗口,如图2-9所示:
14
图2-9
输入数据库名称:Test,点击数据文件选项卡,如图2-10所示:
图2-10
15
在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。 完成后点击事务日志选项卡,如图2-11所示:
图2-11
事务日志中,你可以设定日志文件的名称,所在目录以及文件的大小等信息。 接受系统的缺省值,点击确定按钮,完成数据库的新建,如图2-12所示。
16
图2-12
3.在Test数据库上建立表:
点击数据库Test前面的+号,打开数据库的各种属性,如图2-13所示:
图2-13
17
选中表的属性,单击鼠标右键,出现表的菜单,如图2-14所示:
图2-14
点击新建表按钮,出现新建表窗口,如图2-15所示:
18
图2-15
输入列名,数据类型,长度等信息,点击2-16所示:
图标,出现选择表名窗口,如图
图2-16
输入表名,点击确定按钮,将新建的表存盘。
三、实验任务
1.用数据库SQL Server 2000的服务管理器启动数据库服务;
2.用数据库SQL Server 2000的企业管理器建立一个数据文件名为demodata、大小50M,日志文件名为demolog、大小25M的新数据库,该数据库名为Demo。
19
3.在数据库Demo上,建立如下所示的表customer: 字段名 customid name sex age xfg address memo 类型 varchar varchar varchar int dec varchar varchar 长度 17 10 2 4 10,2 50 100 含义 顾客编号 姓名 性别 年龄 消费金额 地址 备注 说明:需写实验报告(1)。
20
图3-10
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-11所示。
图3-11
1.从表中查询数据:
在查询分析器的查询窗口中输入SQL语句,如图3-12所示。
26
图3-12
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-13所示。
图3-13
三、实验任务
1.打开数据库SQL Server 2000的查询分析器,用SQL语言建表student,表结构如下图所示: 字段名 id name sex age score 类型 varchar varchar varchar integer numeric 长度 17 10 2 6,2 含义 学生编号 姓名 性别 年龄 总成绩 2.用SQL语言向表student插入如下6条记录: A0001 赵一 B0002 钱二 C0003 孙三 D0004 李四 E0005 周五 男 女 男 男 女 20 580.00 19 540.00 21 555.50 22 480.00 20 495.50 27
F0006 吴六 男 19 435.00 3.练习查询语句,查找年龄大于等于20岁,成绩低于500分的记录。
实验四 SQL单表查询语句实验
实验目的与要求:
目的是熟练掌握开发环境 的功能和使用方法,掌握在开发环境下SQL语言中数据操纵的语句,掌握程序下对表中数据的操作。
实验内容:(说明:需写实验报告(1))
select语句中各种查询条件的实验并写出查询结果。
[例1] 查询全体学生的学号与姓名。 SELECT Sno,Sname FROM Student;
[例2] 查询全体学生的姓名、学号、所在系。 SELECT Sname,Sno,Sdept
FROM Student;
[例3] 查询全体学生的详细记录。
SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student;或 SELECT *
FROM Student;
[例4] 查全体学生的姓名及其出生年份。 SELECT Sname,2000-Sage FROM Student;
[例5] 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。 SELECT Sname,'Year of Birth: ',2000-Sage,ISLOWER(Sdept) FROM Student;
实验五 SQL连接查询语句实验查询
一、.实验目的与要求:
标准SQL连接查询、嵌套查询,规则、形式较多,需要学生多记,多练,在练习中加强理解、记忆。
二、.实验内容:(说明:需写实验报告(2))
SQL连接查询、嵌套查询并写出查询结果。 SQL中连接查询的主要类型 广义笛卡尔积、 等值连接(含自然连接)、非等值连接查询、自身连接查询、外连接查询、复合条件连接查询
28
1、广义笛卡尔积
不带连接谓词的连接很少使用
例: SELECT Student.* , SC.* FROM Student, SC
2、等值与非等值连接查询
等值连接、自然连接、非等值连接
[例1] 查询每个学生及其选修课程的情况。 SELECT Student.*,SC.* FROM Student,SC
WHERE Student.Sno = SC.Sno;
自然连接
等值连接的一种特殊情况,把目标列中重复的属性列去掉。 [例2] 对[例32]用自然连接完成。
SELECT Student.Sno,Sname,Ssex,Sage, Sdept,Cno,Grade FROM Student,SC
WHERE Student.Sno = SC.Sno;
3、自身连接
一个表与其自己进行连接,称为表的自身连接 需要给表起别名以示区别
由于所有属性名都是同名属性,因此必须使用别名前缀 [例3] 查询每一门课的间接先修课(即先修课的先修课) SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno;
4、外连接(Outer Join)
[例 4] 查询每个学生及其选修课程的情况包括没有选修课程的学生----用外连接操作 SELECT Student.Sno,Sname,Ssex, Sage,Sdept,Cno,Grade FROM Student,SC
WHERE Student.Sno = SC.Sno(*);
在表名后面加外连接操作符(*)或(+)指定非主体表,非主体表有一“万能”的虚行,该行全部由空值组成,虚行可以和主体表中所有不满足连接条件的元组进行连接,由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值 左外连接:外连接符出现在连接条件的左边 右外连接:外连接符出现在连接条件的右边 5、复合条件连接
WHERE子句中含多个连接条件时,称为复合条件连接
[例6] 查询每个学生的学号、姓名、选修的课程名及成绩。 SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Student.Sno = SC.Sno
29
and SC.Cno = Course.Cno;
嵌套查询 嵌套查询概述
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SELECT Sname 外层查询/父查询 FROM Student WHERE Sno IN
(SELECT Sno 内层查询/子查询 FROM SC
WHERE Cno= ' 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
INTO Student
VALUES ('95020','陈冬','男','IS',18); [例2] 插入一条选课记录( '95020','1 ')。 INSERT
30
INTO SC(Sno,Cno)
VALUES (' 95020 ',' 1 '); 新插入的记录在Grade列上取空值
2). 插入子查询结果
[例3] 对每一个系,求学生的平均年龄,并把结果存入数据库。 第一步:建表
CREATE TABLE Deptage
(Sdept CHAR(15) /* 系名*/ Avgage SMALLINT); /*学生平均年龄*/ 第二步:插入数据 INSERT
INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
2. 修改数据
1. 修改某一个元组的值
[例4] 将学生95001的年龄改为22岁。 UPDATE Student SET Sage=22
WHERE Sno=' 95001 '; 2. 修改多个元组的值
[例5] 将所有学生的年龄增加1岁。 UPDATE Student SET Sage= Sage+1;
3. 删除数据
1. 删除某一个元组的值
[例8] 删除学号为95019的学生记录。 DELETE
FROM Student
WHERE Sno='95019'; 2. 删除多个元组的值
[例9] 删除2号课程的所有选课记录。 DELETE FROM SC;
WHERE Cno='2'; 3. 带子查询的删除语句
[例11] 删除计算机科学系所有学生的选课记录。 DELETE FROM SC
WHERE 'CS'=
31
(SELETE Sdept FROM Student
WHERE Student.Sno=SC.Sno);
实验七 数据库的安全性和数据库完整性 一、实验目的与要求:
熟练掌握数据库的安全性和数据库完整性的功能和使用方法,掌握在开发环境下SQL语言中数据库的安全性和数据库完整性的语句操作。
二、实验内容:(说明:需写实验报告(4))
1.数据库的安全性
(1). 数据库的授权(GRANT) GRANT语句的一般格式: GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>] TO <用户>[,<用户>]... [WITH GRANT OPTION];
GRANT功能:将对指定操作对象的指定操作权限授予指定的用户。
例1 把查询Student表权限授给用户U1 GRANT SELECT
ON TABLE Student TO U1;
例2 把对Student表和Course表的全部权限授予用户U2和U3 GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;
例3 把对表SC的查询权限授予所有用户 GRANT SELECT ON TABLE SC TO PUBLIC;
例4 把查询Student表和修改学生学号的权限授给用户U4 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;
例5 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户 GRANT INSERT ON TABLE SC
32
TO U5
WITH GRANT OPTION;
执行例5后,U5不仅拥有了对表SC的INSERT权限, 还可以传播此权限:
例6 GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
例7 GRANT INSERT ON TABLE SC TO U7; 但U7不能再传播此权限。 U5--> U6--> U7
(2).收回权限(REVOKE)
REVOKE语句的一般格式为:
REVOKE <权限>[,<权限>]... [ON <对象类型> <对象名>] FROM <用户>[,<用户>]...;
功能:从指定用户那里收回对指定对象的指定权限 例9 收回所有用户对表SC的查询权限 REVOKE SELECT ON TABLE SC FROM PUBLIC;
例10 把用户U5对SC表的INSERT权限收回 REVOKE INSERT ON TABLE SC FROM U5;
2. 数据库完整性
什么是数据库的完整性 数据的正确性和相容性
防止不合语义的数据进入数据库。
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的;
学生所在的系必须是学校开设的系; 完整性:是否真实地反映现实世界
数据库的完整性分为实体完整性、 参照完整性、用户定义的完整性。 例11.将student表中在Sno属性定定义为码。 CREATE TABLE student ( Sno char(16) PRIMARY KEY, Sname char(10) NOT NULL, Ssex char(2), Sage SMALLINT, Sdept char(20) );
33
例11.定义SC中的参照完整性。 CREATE TABLE SC ( Sno char(16) NOT NULL, Cno char(4) NOT NULL, Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );
实验八 嵌入式SQL访问数据库
1、实验内容:(说明:需写实验报告(5))
编写嵌入式C程序,编程实现了对“学生课程数据库”的访问和操作:对Student表中年龄进行更新。系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。
2.嵌入式SQL要求
要求:将一段连续的SQL操作写成嵌入到C程序中的程序,调试程序,使得程序能完成一项复杂的数据处理功能,并提交程序。
嵌入式SQL由SQL语句和C/C++代码组成。其中SQL语句由预处理器翻译成C或C++的源代码。对预处理后的源代码进行编译、链接生成可执行程序后方可运行。
3、嵌入式SQL访问数据库程序清单
#include
EXEC SQL BEGIN DECLARE SECTION; char deptname[20]; char HSno[9]; char HSname[20]; char HSsex[4]; int HSage; int NEWAGE;
EXEC SQL END DECLARE SECTION;
34
long SQLCODE;
EXEC SQL INCLUDE sqlca;
int main() {
int count=0; char yn;
printf(\请输入您要更新的系名(Sdept):\ scanf(\
EXEC SQL CONNECT TO 服务器名.数据库名 USER 登录名.密码; //注意此处的格式 EXEC SQL DECLARE SX CURSOR FOR
SELECT Sno,Sname,Ssex,Sage FROM Student
WHERE SDept=:deptname;
EXEC SQL OPEN SX; for(;;) {
EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage; if(sqlca->sqlcode==0)
break;
if(count++==0) { }
printf(\ printf(\是否修改年龄?(y/n)\ do {
scanf(\
35
printf(\
正在阅读:
2009级数据库原理实验教案09-21
南京大学软件学院2008就业06-03
花卉园艺工高级理论试题10-29
低红外发射率水性聚氨酯的研究解析10-13
第九章实验07-04
样品制作与确认程序05-25
新型飞机07-17
电路邱关源第五版14第十四章05-27
港口基本情况介绍10-05
- precision-m6800-用户拆机手册-简体中文--workstation - Owners Manual - zh-cn - 图文
- 工作环境和污染控制控制程序
- 中华人民共和国标准设备采购招标文件
- 分析化学第三版答案
- 奥数 植树问题
- 新毕设2X13m预应力混凝土空心板桥·计算书
- 接受现实更需要勇气的例子
- 01--一、项目公司组织与管理
- 126《100以内的加法和减法(一)》单元教学设计(讨论稿)
- 食用菌栽培复习题
- 沉积古地理海陆过渡环境及相模式 - 图文
- 南开版教育学习题
- 海底两万里等教师版
- 材料力学实验指导书最新
- ansys模态分析
- 18春西交《审计学》在线作业
- C语言程序设计课程作业题库
- 无纸化考试试题样卷
- 小学一年级数学竞赛题5
- 虚拟仪器 课程设计