《数据库原理与应用》实验报告书修改版(1)答案 下载本文

《数据库原理与应用》

实验报告书

(2011—2012学年第二学期)

班 级: 学 号: 姓 名: 教 师: 郑先容

医药信息工程学院·数据决策

2012年2月

目 录

实验一 利用ACCESS创建数据库及熟悉SQL Server开发环境 ... 2 实验三 数据库、表的创建 .................................................................. 6 实验五 连接查询和嵌套查询 ................................................................ 12 实验七 数据的插入、修改、删除 .................................................... 18 实验九 SQL Server数据库的安全性控制 ........................................ 21 实验十一 熟悉Power Designer数据库设计软件 ................................ 24 实验十三 Transact-SQL编程 ................................................................ 27 实验十五 存储过程的使用 .................................................................... 30 第十章 数据库的恢复技术作业 ............................................................ 33

《数据库原理与应用》实验报告

实验一 利用ACCESS创建数据库及熟悉SQL Server开发环境

一、实验目的

1、熟知机房用机安全规则和实验报告的书写。

2、掌握SQL Server 2005的安装,卸载以及相关服务的启动、退出。 3、熟悉SQL Server Management Studio环境。 4、掌握创建服务器组合注册服务器。 5、初步了解数据库的概念;

6、初步了解SQL Server联机丛书的使用。 7、用ACCESS创建数据库,体会数据库的功能。

注意:每次实验的指导视频,上课所需要的软件、数据库还有ppt。都可以在ftp://10.81.40.222的“数据决策”->“数据库”->“2011-2012(2)”文件夹下找到,以后每次实验相关的文件和数据库,老师上课的课件,sql2005安装环境,都可以在这个ftp上寻找。

二、实验内容

1、上网搜索能够正常安装的SQL Server2005的软件。或者在ftp上下载,有条件的同学,课后可在个人电脑上安装SQL Server2005,建议XP操作系统安装个人版,Server操作系统安装企业版。SQL Server2005的安装说明见《SQL Server 2005精简版的安装》或上网搜索相应电子教程。安装过程请参看实验指导或者相关视频。

2、观看视频“数据库概念.swf”,了解数据库的相关概念。 3、参看实验指导或者视频“使用SQL Server Management Studio.swf”,通过实践初步了解使用SQL Server Management的使用。

4、观看视频“SQL Server联机丛书.swf”,了解如何通过系统本身来学习使用SQL Server。

请根据联机丛书查询如何“创建数据库”,查询内容包括创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。请把你的结果写在下面。

2

《数据库原理与应用》实验报告

5、参看实验指导或者视频,创建服务器组,在此组上查看有哪些数据库及数据库对象,请记录下来。

6、利用ACCESS创建数据库。

(1)、在ACCESS中创建一个“学生-课程数据库”,含以下三个表:

学生(学号,姓名,性别,年龄,所在系) 课程(课程号,课程名) 选课(学号,课程号,成绩) 每个表输入10条数据。

(2)、数据库保存在以“自己学号+名字”命名的文件夹中。

请掌握ACCESS创建数据库的方法,体会数据库的二维结构,请写下建立数据库的主要步骤。 7、掌握SQL Server2005的启动、退出、暂停,组成配置,基本工具及常用操作。请简要叙述SQL Server2005的组成配置,基本工具。

三、实验小结

结合本次实验,思考以下问题:

1、通讯录为什么要采用这种由行和列二维结构组成的格式?其中每一列表示什么意思,每一行又表示什么意思?

3

《数据库原理与应用》实验报告

2、 假如通讯录里面有1000000个人的信息,怎么样快速找到某个特定的人?

3、比较分析ACCESS和SQL SERVER两种数据库,各适用于什么情况?

四、作业 1、选择题

1.数据库系统是采用了数据库技术的计算机系统,数据库系统由数据库、数据库管理系统、应用系统和( ) 。 A.系统分析员

B.程序员

C.数据库管理员

D.操作员

2.数据库(DB),数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是( )。 A.DBS包括DB和DBMS C.DB包括DBS和DBMS

B.DBMS包括DB和DBS D.DBS就是DB,也就是DBMS

3.下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( )。 I.人工管理阶段 II.文件系统阶段 III.数据库阶段 A.I 和 II

B.只有 II

C.II 和 III

D.只有 I

4.下列四项中,不属于数据库系统特点的是( ) 。 A.数据共享

B.数据完整性

C数据冗余度高

D.数据独立性高

5.数据库系统的数据独立性体现在( ) 。 A.不会因为数据的变化而影响到应用程序

B.不会因为数据存储结构与数据逻辑结构的变化而影响应用程序 C.不会因为存储策略的变化而影响存储结构

D.不会因为某些存储结构的变化而影响其他的存储结构 6.描述数据库全体数据的全局逻辑结构和特性的是( ) 。 A.模式

B.内模式

C.外模式

7.要保证数据库的数据独立性,需要修改的是( ) 。 A.模式与外模式

B.模式与内模式

C.三级模式之间的两层映射

D.三层模式

8.要保证数据库的逻辑数据独立性,需要修改的是( ) 。

4

《数据库原理与应用》实验报告

A.模式与外模式之间的映射 C.模式

B.模式与内模式之间的映射 D.三级模式

9.用户或应用程序看到的那部分局部逻辑结构和特征的描述是( )模式。 A.模式

B.物理模式

C.子模式

D.内模式

10.下述( )不是DBA数据库管理员的职责 。 A.完整性约束说明

B.定义数据库模式

C.数据库安全

D.数据库管理系统设计

11.概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是( ) 。 A.网状模型

B.关系模型

C.层次模型

D.实体-关系模型

12.区分不同实体的依据是( ) 。 A.名称

B.属性

C.对象

D.概念

13.关系数据模型是目前最重要的一种数据模型,它的三个要素分别是( )。 A.实体完整性、参照完整性、用户自定义完整性 B.数据结构、关系操作、完整性约束 C.数据增加、数据修改、数据查询 D.外模式、模式、内模式

14.在( )中一个结点可以有多个双亲,结点之间可以有多种联系。 A.网状模型

B.关系模型

C.层次模型

D.以上都有

15.( )的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。 A.网状模型

B.关系模型

C.层次模型

D.以上都有

2、简述题

1.试述数据、数据库、数据库管理系统、数据库系统的概念。

2.试述数据库系统的特点。

3.数据库管理系统的主要功能有哪些?

5

《数据库原理与应用》实验报告

4.谈谈你对数据库学习的意见、建议和期望达到的水平。

实验三 数据库、表的创建

一、实验目的

1、进一步掌握Management Studio的使用。 2、了解SQL Server 数据库的逻辑结构和物理结构。 3、掌握SQL图形用户界面创建、修改、删除数据库、表。 4、掌握如何在表中添加、修改、删除数据。

5、掌握SQL中Create Database、Drop Database命令的使用。 6、掌握SQL中Create Table、Alter Table、Drop Table命令的使用。 7、理解SQL中的标识列、计算列和各种约束。 8、了解表的结构特点。

9、了解SQL Server 的基本数据类型。 10、了解空值概念。

注意:每次实验过程中创建的各种数据库及其他一切档案,同学们都保存好,以备接下来的实验课中使用。每次上课前,请也请带上之前实验课的数据备份。 二、实验内容

1.用Management Studio创建数据库,请参看实验指导或者视频。

(1)创建数据库bookdb,bookdb数据库采用系统提供的默认设置。 (2)查看数据库相关参数设置:采用系统默认设置 (3)将数据库bookdb的相关属性,填入下表: 项目

内容

6

《数据库原理与应用》实验报告

数据库所有者 数据库名称 数据库逻辑文件名 数据文件物理存放位置

PC-20120112FVXK\\Administrator Bookdb Bookdb

C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data

数据库初始大小

可用空间(数据文件最大值) 数据文件增长量 日志逻辑文件名 日志文件物理存放位置

3M 不限制增长 1M

bookdb_log

C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data

日志文件初始大小 日志文件可用空间 日志文件增长量

1M

2,097,152M 10%

(4)删除bookdb数据库。

2.使用T-SQL命令创建数据库EDUC,EDUC如下表: 逻辑名 物理文件名 初始长度 最大长度 增量 数据文件 EDUC_dat C:\\EDUC_DAT.MDF 3MB 10MB 1MB 日志文件 EDUC_log C:\\ EDUC_LOG.LDF 1MB 50MB 10% 在EDUC中创建三个表,分别为Student,Course,SC。三个表的的字段名、类型以及长度请参看下表: Student: 字段名 Sno Sname Ssex Sage Sdept Course: 字段名 Cno Cname Cpno 类型 Varchar Varchar Varchar 长度 15 30 15 7 类型 Varchar Varchar Varchar Varchar 长度 20 10 2 30 主键 Y 主键 Y 允许空 N N 含义 学号 姓名 性别 年龄 所在系 SMALLINT 4 允许空 N 含义 课程号 课程名 先行课 《数据库原理与应用》实验报告 Ccredit SMALLINT 4 SC: 字段名 类型 长度 主键 允许空 Sno Varchar 20 Y N Cno Varchar 15 Y N Grade Float

2.请在各表中添加数据,参看实验指导或者视频 对于student表,请自行输入如下数据

3.请把student表中的0110号同学的年龄改为25,参看实验指导或者视频。

4.请删除学号为0106号的同学,参看实验指导或者视频。

以下实验请使用SQL语句语句完成,并把代码填入题目下面的空白处。

6.请在查询分析器中使用SQL语句创建数据库EDUC。

CREATE DATABASE EDUC ON

(NAME=EDUC_Dat,

FILENAME=\, SIZE=3MB, MAXSIZE=100MB, FILEGROWTH=1MB) LOG ON

(NAME=EDUC_LOG,

FILENAME=\, SIZE=1MB, MAXSIZE=50MB, FILEGROWTH=10%)

8

学分 含义 学号 课程号 成绩 调试通过 调试通过调试通过调试通过 《数据库原理与应用》实验报告

GO

7. 请在查询分析器中使用SQL语句创建数据表student。

CREATE TABLE student(SNO VARCHAR(20) NOT NULL , SNAME VARCHAR(10) NOT NULL, AGE SMALLINT, SSEX VARCHAR(2),

SDEPT VARCHAR(30), PRIMARY KEY (SNO));

8. 请在查询分析器中使用SQL语句创建数据表course。

CREATE TABLE course(CNO VARCHAR(15) NOT NULL, CNAME CHAR(30) NOT NULL, CPNO CHAR(15) ,

CREDIT SMALLINT, PRIMARY KEY (CNO));

9. 请在查询分析器中使用SQL语句创建数据表sc。

CREATE TABLE sc( SNO VARCHAR(20) NOT NULL,

CNO VARCHAR(15) NOT NULL, GRADE SMALLINT,

CHECK (GRADE BETWEEN 0 AND 100),

PRIMARY KEY (SNO,CNO),

FOREIGN KEY(SNO)REFERENCES student, FOREIGN KEY(CNO)REFERENCES course)

10. 请在查询分析器中使用命令删除bookdb数据库。

drop database educ

注意:这行命令不能在打开educ数据库的情况下使用,请确保你的当前输入代码的编辑器(查询分析器)默认的数据库不是educ,如上图,为master(即你当前默认的数据库是master),也就是说,如果上图中的master是EDUC,即你当前已经打开了EDUC数据库,删除一个已经打开的数据库是删除不成功的

11.在成功完成实验EDUC数据库中已经成功建立了各表。在此基础上完成下列实验内容: (一)、修改基本表的定义 1)修改列属性

(1)用SSMS将Student表中的Birthday字段设为不能为空(not null)。

(2)用SQL语句将Student表中的属性Sno varchar(20)改成char(8)类型。

9

《数据库原理与应用》实验报告

2)添加列

(1)用SSMS在Course表中添加一列year,类型为varchar(4),默认置为空。

(2)用SQL语句在year字段添加约束,year 的属性值在2006-2012之间。

3)删除列

(1)用SQL语句将Course表中的year字段删除。

三、实验小结

体会创建数据库、表的两种方式,有什么不同?各有什么优缺点?各适用于什么情况?

四、作业

1、试述关系模型的3个组成部分。

2、名词解释 域:

笛卡尔积:

关系:

10

元组:

属性:

主码:

《数据库原理与应用》实验报告

关系模式:

候选码:

关系数据库:

外部码:

3、试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

4、选择题

1.下面的选项不是关系数据库基本特征的是(A )。 A. 不同的列应有不同的数据类型 C. 与行的次序无关

B. 不同的列应有不同的列名 D. 与列的次序无关

2.一个关系只有一个(D ) 。 A. 候选码

B.外码

C.超码

D.主码

3.关系模型中,一个码是(C )。 A. 可以由多个任意属性组成

B. 至多由一个属性组成 D. 以上都不是

C. 由一个或多个属性组成,其值能够惟一标识关系中一个元组

4.现有如下关系: 患者(患者编号,患者姓名,性别,出生日期,所在单位) 医疗(患者编号,医生编号,医生姓名,诊断日期,诊断结果) 其中,医疗关系中的外码是( D)。 A.患者编号

B.患者姓名

C.患者编号和患者姓名 D.医生编号和患者编号

5.关系代数运算是以(C )为基础的运算 。 A.关系运算

B.谓词演算

C.集合运算

D.代数运算

6.关系数据库管理系统应能实现的专门关系运算包括(B )。 A.排序、索引、统计

B.选择、投影、连接 C.关联、更新、排序 D.显示、打印、制表

7.五种基本关系代数运算是(A )。 A. ∪ - × σ π

B.∪ - σ π

C. ∪ ∩ × σ π

D.∪ ∩ σ π

8.关系数据库中的投影操作是指从关系中(B ) 。 A. 抽出特定记录

B.抽出特定字段

C.建立相应的影像

D.建立相应的图形

9.从一个数据库文件中取出满足某个条件的所有记录形成一个新的数据库文件的操作是(C )操作 。 A.投影

B.连接

C.选择

D.复制

10.关系代数中的连接操作是由(B )操作组合而成 。 A.选择和投影

B.选择和笛卡尔积

C.投影和笛卡尔积

D.投影、选择、笛卡尔积

11.一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的( C) 。 A.记录

B.行

C.属性

11

D.元组

《数据库原理与应用》实验报告

12.假设有关系R和S,关系代数表达式R-(R-S)表示的是(A )。 A.R∩S

B.R∪S

C.R-S

D.R×S

9.学生关系模式 S( S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是( B)。 A.DELETE Age from S C.UPDATE S Age

B.ALTER TABLE S DROP Age D.ALTER TABLE S ‘Age’

实验五 连接查询和嵌套查询

一、实验目的

1、复习简单查询。

2、掌握SQL中连接查询和嵌套查询的使用。 3、理解连接查询和嵌套查询的执行过程。

4、掌握简单的多表连接查询,了解多表查询的目的。 5、掌握嵌套查询的用法。

6、掌握带有IN谓词、ANY、SOME、ALL谓词、EXISTS谓词实现嵌套查询的区别。 7、理解嵌套查询时,=和IN的区别。 8、掌握外连接的使用方法和目的。 9、理解嵌套查询和连接查询的区别和效率。 10掌握利用AS给表重新命名的方法和目的。

二、实验内容及要求

用SQL语句完成下列查询。使用数据库为SCHOOL数据库。 1. 找出所有任教“数据库”的教师的姓名。

select Teac_name from Teacher where Teac_id in( select Teac_id

12

《数据库原理与应用》实验报告

from CourseTeacher where Course_id in( select Course_id from Course

where Course_name='数据库')) 或者

select distinct Teac_name

from Teacher,CourseTeacher,Course

where Teacher.Teac_id=CourseTeacher.Teac_id and CourseTeacher.Course_id=Course.Course_id and Course_name='数据库' 或者

select distinct Teac_name

from Teacher inner join CourseTeacher on Teacher.Teac_id=CourseTeacher.Teac_id inner join Course on CourseTeacher.Course_id=Course.Course_id where Course_name='数据库'

2. 取出学号为“980101011”的学生选修的课程号和课程名。

select Course_id,Course_name from Course

where Course_id in( select Course_id from StudentGrade

where Stu_id='980101011')

或者

select Course.Course_id,Course_name

from Course inner join StudentGrade on StudentGrade.Course_id=Course.Course_id where Stu_id='980101011'

或者

select Course.Course_id,Course_name from Course,StudentGrade

where Stu_id='980101011' and StudentGrade.Course_id=Course.Course_id

3. “涂杰杰”所选修的全部课程号及成绩。(注意:school中有同名,即有两名学生叫“涂杰杰”。)

select Course_id,Grade from StudentGrade where Stu_id in( select Stu_id from Student

where Stu_name='涂杰杰')

4.C语言成绩比数据结构成绩好的学生(自身连接)。

select distinct C.Stu_id

from Course A,Course B,StudentGrade C,StudentGrade D where A.Course_id=C.Course_id AND B.Course_id=D.Course_id

AND C.Stu_id=D.Stu_id AND A.Course_name='c语言' AND B.Course_name='数据结构' AND C.GRADE>D.GRADE

5.显示所有课程的选修情况(外连接)。

13

《数据库原理与应用》实验报告

select Course.Course_id,Course.Course_name,Stu_id

from Course LEFT JOIN StudentGrade ON Course.Course_id=StudentGrade.Course_id

6.检索选修课程号为0109或0111的学生学号、姓名和所在班级。

select Student.Stu_id,Student.Stu_name,Class_id

from Student inner JOIN StudentGrade ON Student.Stu_id=StudentGrade.Stu_id and Course_id in('0109','0111')

7.查询“0203”课程的最高分的学生的学号。

select Stu_id from StudentGrade

where grade=(select max(grade) from StudentGrade where Course_id='0203')

8.没有选修以“01”开头的课程的学生信息。(用子查询完成。提示not in或not exists)

select * from Student

where Stu_id not in (select Stu_id from StudentGrade

where Course_id like '01%')

9.找出“苏贤兴”同学所学课程的名称和成绩。(请使用连接查询和嵌套查询分别来完成)

select Course_name,grade

from Course,StudentGrade,Student

where Course.Course_id=StudentGrade.Course_id

and StudentGrade.Stu_id=Student.Stu_id and Student.stu_name='苏贤兴'

或者

select Course_name,grade from Course,StudentGrade

where Course.Course_id=StudentGrade.Course_id and StudentGrade.Stu_id in( select Stu_id from Student where stu_name='苏贤兴')

10.使用嵌套查询方法,查询课程最低分大于70,最高分小于90的学生学号和姓名

select Stu_id,stu_name from Student where Stu_id in(

select Stu_id from StudentGrade group by Stu_id having min(grade)>70) and Stu_id in(

select Stu_id from StudentGrade group by Stu_id having max(grade)<90)

14

《数据库原理与应用》实验报告

11.从选修’0511’课程的同学中,选出成绩高于’ 艾 添’的学生的学号和成绩。

select Stu_id,grade from StudentGrade

where Course_id='0511' and grade >( select grade from StudentGrade where Course_id='0511' and Stu_id=( select Stu_id from Student

where Stu_name='艾添') )

12.查询选修了'0511'课程但没有选修'0506'课程的学生学号。

select Stu_id from StudentGrade

where Course_id='0511' and Stu_id not in( select Stu_id from StudentGrade where Course_id='0506' )

13. 查询同时选修了'0511'课程和选修'0506'课程的学生学号。

select Stu_id from StudentGrade

where Course_id='0511' and Stu_id in( select Stu_id from StudentGrade where Course_id='0506' )

或者

select DISTINCT A.Stu_id

from StudentGrade A,StudentGrade B

where A.Stu_id=B.Stu_id AND A.Course_id='0511' AND B.Course_id='0506'

三、实验小结

1.思考简单查询、连接查询与嵌套查询有什么不同?连接查询与嵌套查询有何区别与联系?

2.此次实验中得到的哪些经验教训、疑难问题?有什么心得或总结?

四、作业

15

《数据库原理与应用》实验报告

1、试述SQL的特点。

2、设有一个SPJ数据库,包含S、P、J、SPJ4个关系模式: S(SNO,SNAME,STATUS.CITY)、P(PNO,PNAME,COLOR,WEIGHT)、J(JNO,JNAME,CITY)、SPJ(SNO,PNO, JNO,QTY),具体表内容如教材P75面所示。请用sql完成下列查询:

WHERE B.SNO=’S1’AND 1) 求供应工程J1零件的供应商号码SNO;

SELECT SNO NOT EXISTS FROM SPJ (SELECT * WHERE JNO=’J1’ FROM SPJ C WHERE A.JNO=C.JNO AND B.PNO=C.PNO)) 2) 求供应工程J1零件P1的供应商号码SNO; 6) 求使用了红色零件带没有使用蓝色零件的工SELECT SNO 程号; FROM SPJ SELECT JNO WHERE JNO=’J1’ AND PNO=’P1’ FROM SPJ ,P WHERE SPJ .PNO=P.PNO AND P.COLOR=’红’

AND JNO NOT IN( 3) 求供应工程J1零件为红色的供应商号码SNO;

SELECT SNO SELECT JNO FROM SPJ,P FROM SPJ ,P WHERE SPJ.PNO=P.PNO AND JNO=’J1’ AND WHERE SPJ .PNO=P.PNO AND P.COLOR=’蓝’ )

COLOR =’红’

4) 求没有使用天津供应商生产的红色零件的工7) 求供应了蓝色零件工程项目在北京的供应商

程号JNO; 的姓名和所在城市。 SELECT JNO SELECT S.SNAME,S.CITY FROM SPJ FROM SPJ ,P,J,S WHERE PNO NOT IN( WHERE SPJ .PNO=P.PNO AND SPJ.JNO=J.JNO SELECT PNO AND SPJ.SNO=S.SNO AND P.COLOR=’蓝’ AND FROM P J.CITY=’北京’ WHERE COLOR=’ 红’) AND SNO NOT IN( 8) 检索至少使用了两种零件的工程号。 SELECT SNO SELECT DISTINCT JNO FROM S FROM SPJ A,SPJ B

WHERE A.JNO=B.JNO AND A.PNO!=B.PNO WHERE CITY =’ 天津’)

5) 求至少使用了供应商S1所供应的全部零件的9) 检索J1号工程不使用的零件号。

SELECT PNO 程号JNO;

SELECT A.JNO FROM P FROM SPJ SPJ A WHERE PNO NOT IN ( WHERE NOT EXISTS SELECT PNO (SELECT * FROM SPJ FROM SPJ B WHERE JNO=’J1’)

4、选择题

1.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄, C#是课程号,CNAME是课程名称。要查询选修“ACCESS”

16

《数据库原理与应用》实验报告

课的年龄不小于20的全体学生姓名的SQL语句是 SELECT SNAME FROM S,C,SC WHERE 子句。 这里的WHERE子句的内容是(A )。

A.S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME=‘ACCESS’ B.S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ‘ACCESS’ C.SAGE in>=20 and CNAME in ‘ACCESS’ D.SAGE>=20 and CNAME=’ ACCESS’ 2.在SQL语言中,子查询是(D ) 。 A.返回单表中数据子集的查询语言 C.选取单表中字段子集的查询语句

B.选取多表中字段子集的查询语句 D.嵌入到另一个查询语句之中的查询语句

3.有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称。要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是(A )。

A. S.S# = SC.S# and C.C# = SC.C# and SEX=’男’ and CNAME=’数据库’ B. S.S# = SC.S# and C.C# = SC.C# and SEX in’男’and CNAME in’数据库’ C. SEX ’男’ and CNAME ’ 数据库’ D. S.SEX=’男’ and CNAME=’ 数据库’

4.假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE)。要查询选修“Computer”课的男生姓名,将涉及到关系(D )。 A.S

B.S,SC C.C,SC D.S,C,SC

17

《数据库原理与应用》实验报告

实验七 数据的插入、修改、删除

一、实验目的

1、学会在企业管理器中对数据库表进行插入、修改和删除数据操作。

2、学会使用T-SQL语句对数据库表进行单个数据插入、成批数据插入、修改和删除数据操作,掌握删除表的方法。

3、掌握在子查询的基础上创建新表。 4、了解数据更新操作时要注意数据完整性。

二、实验内容及要求

用SQL语句完成下列功能。使用数据库为SCHOOL数据库。

l、新开设一门课程,名叫网络安全与防火墙,学时40,编号为0118,主要介绍网络的安全与主要的防火墙软件。

2、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把班级编号为“0101”的学生的相应资料插入到monitor表中。

3、更新所有职称为“助教”的教师职称为“助理教师”。

4、在所有经济系班级的名称前加上“经济系”三个字。

5、学号为980101005的学生的数据结构课程成绩改为80分。

18

调试通过 调试通过 调试通过 调试通过 《数据库原理与应用》实验报告

6、删除studentgrade表中所有成续不及格的记录。

7、删除studentgrade表中学号以99开头的学生选修课程的记录。

8、删除课程名为“计算机导论”的课程信息和所有这门课的选课信息。

调试通过 调试通过 调试通过

9、将学号尾数为‘4’的同学成绩加2。

10、删除成绩为空的选课记录。

调试通过 调试通过

三、实验小结

1.有没有发现在更新或者删除的时候报告错误,但是你的指令没有错误的,请记录,并分析原因。若没有,请把“000503001”同学的选课表中的学号设为空值,看能否成功,为什么?

19

调试通过 《数据库原理与应用》实验报告

2.此次实验中得到的哪些经验教训、疑难问题?有什么心得或总结?

四、作业

1.若要在基本表S中增加一列CN(课程名),可用( )。 A. ADD TABLE S(CN CHAR(8))

B. ADD TABLE S ALTER(CN CHAR(8)) D. ALTER TABLE S (ADD CN CHAR(8))

C. ALTER TABLE S ADD(CN CHAR(8))

2.设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。若要把“张二的化学成绩80分”插入S中,则可用( )。 A. ADD INTO S VALUES(’张二’,’化学’,’80’) B. INSERT INTO S VALUES(’张二’,’化学’,’80’) C. ADD INTO S VALUES(’张二’,’化学’,80) D. INSERT INTO S VALUES(’张二’,’化学’,80)

3.设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。若要更正王二的化学成绩为85分,则可用( ) 。 A. UPDATE S SET grade=85 WHERE SN=’王二’ AND CN=’化学’ B. UPDATE S SET grade=’85’ WHERE SN=’王二’ AND CN=’化学’ C.UPDATE grade=85 WHERE SN=’王二’ AND CN=’化学’ D.UPDATE grade=’85’ WHERE SN=’王二’ AND CN=’化学’

4.若用如下的SQL语句创建了一个表SC: CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( )行可以被插入 。 A. (’201009’,’111’,60,必修) C. (NULL,’103’,80,’选修’)

20

B. (’200823’,’101’,NULL,NULL) D. (’201132’,NULL,86,’ ’)

《数据库原理与应用》实验报告

实验九 SQL Server数据库的安全性控制

一、实验目的

1、使学生加深对数据安全性的理解。

2、掌握 SQL Server中有关用户、角色的理解和使用。 3、掌握授权及回收权限的操作方式和sql命令方式的使用。

二、实验内容及要求

(1) 设置 SQL Server 的安全认证模式。 (2) 设置登录帐户U1,U2,U3,并测试登录。

(3) 设置数据库用户U1,U2,U3,他们分别能通过登录帐户U1,U2,U3登陆school数据库。 (4) 为U1账户设置对Student表的权限,让它查询Student,修改除了Stu-id之外的其他字段,并验

证。

(5) 设置数据库角色。设置数据库角色A1,A1能查询、更新Course表,并把此角色赋予U2并验

证U2是否具有此权限。

(6) 修改U1的权限,让它具有传递性,并传递给U3,并验证。 (7) 以上先在SQL Server SQL Server Management Studio进行设置权限。

阅读老师给的参考资料,试着在查询处理器中采用sql命令方式完成上述设计。请在重做前删除相应的用户和账户。

1、 设置登录帐户U1,U2,U3,并测试登录。

2、 设置数据库用户U1,U2,U3,他们分别能通过登录帐户U1,U2,U3登陆school数据库。

调试通过 调试通过 3、 为U1账户设置对Student表的权限,让它查询Student,修改除了Stu-id之外的其他字段,并验证。

调试通过 4、 设置数据库角色。设置数据库角色A1,A1能查询、更新Course表,并把此角色赋予U2并验

21

《数据库原理与应用》实验报告

证U2是否具有此权限。

5、 修改U1的权限,让它具有传递性,并传递给U3,并验证。

调试通过 调试通过 三、实验小结

1、用户、角色和权限的职能,以及它们之间的关系。

2、试述实现数据库安全控制的常用方法和技术。

3、什么是数据库中的自主存取控制方法和强制存取控制方法?

4. 此次实验中得到的哪些经验教训、疑难问题?有什么心得或总结?

四、作业

1.以下( )不属于实现数据库系统安全性的主要技术和方法。 A.存取控制技术

B.视图技术

C.审计技术

D.出入机房登记和加防盗门

2.SQL中的视图机制提高了数据库系统的( )。 A.完整性

B.并发控制

C.隔离性

D.安全性

3.SQL语言的GRANT和REVOKE语句主要是用来维护数据库的( )。 A.完整性

B.可靠性

C.安全性

22

D.一致性

《数据库原理与应用》实验报告

4.在数据库的安全性控制中,授权的数据对象的( ),授权子系统就越灵活。 A.范围越小

B.约束越细致

C.范围越大

D.约束范围大

23

《数据库原理与应用》实验报告

实验十一 熟悉Power Designer数据库设计软件

一、实验目的

1、熟悉Power Designer开发环境。 2、掌握数据库设计方法。

3、掌握利用Power Designer进行数据库设计。

二、实验内容及要求

本实验采用Power Designer 12.5为例。其他版本也可以,操作流程类型。

1、 在ftp上找到文件夹“PowerDesigner15.1汉化破解版”,按照实验指导上写的内容安装。

2、 阅读实验指导,掌握概念数据模型的内涵;熟悉实体、属性的含义;并清楚在Power Designer中实体、

属性及标识符的表达方式;并能按照指导上的操作说明新建一个概念数据模型。 3、 熟悉PowerDesigner的操作界面,并学会创建实体,定义实体的属性及属性的约束。 4、 了解数据项的概念,学会创建和使用数据项。

5、 阅读PowerDesigner中的联系部分,了解联系的创建过程。

在认真研读实验指导后,接下来实际操作,使用Power Designer完成如下内容:

1、建立概念模型,模型名称为“学生选课数据库”。

调试通过

2、在“学生选课数据库”概念模型中,建立一个学生实体,一个课程实体。学生实体包括学号,性别,姓名,学历,身份证。课程实体包括课程号,课程名,任课教师。 为学生实体和课程实体建立1:n联系。

调试通过

3、根据对“指导”的学习,新建一个数据项,并修改学生选课数据库的某个实体,看能否运用你所创建的数据项。并写下过程。

24

《数据库原理与应用》实验报告

三、实验小结

1.通过此次实验的学习,谈谈你对PowerDesigner这个软件的认识。 调试通过

四、作业

1.试述数据库设计过程。

2. 试述数据库设计过程中形成的数据库模式。

3.需求分析阶段的设计目标是什么?调查的内容是什么?

4. 数据字典的内容和作用是什么?

25

《数据库原理与应用》实验报告

26

《数据库原理与应用》实验报告

实验十三 Transact-SQL编程

一、实验目的

1、了解什么是Transact-SQL。 2、理解常量与变量的区别。 3、熟练掌握变量的声明与使用。 4、掌握各种类型的运算符的使用。 5、掌握Transact-SQL中控制语句的使用。 6、熟练掌握函数的使用。

二、实验内容及要求

1、T-SQL流程控制语句。请说出下面代码的功能或者输出结果。 1)、begin…end

begin end

declare @myvar float set @myvar = 456.256 begin end

print '变量@myvar的值为:' print cast(@myvar as varchar(12))

end

print '课程:'

print '考试成绩还一般'

功能为: 结果为:

3)、简单的case语句举例

use school go

select Teac_name as '姓名',2012-year(Birthday) as '年龄', go

case TechPost else end

'初级职称'

when '教授' then '高级职称' when '讲师' then '中级职称'

功能为:

结果为:

2)、if…else…

use school

if (select avg(grade) from StudentGrade where Course_id='0506')>80 begin end else begin

27

from teacher

print '课程:'

print '考试成绩还不错'

功能为:

结果为:

《数据库原理与应用》实验报告

5)、while语句

declare @s int,@i int set @i = 0 set @s = 0 while @i <= 100

use school go

select Stu_id ,Course_id,grade,

case else end

'E'

when grade>=90 then 'A' when grade>=80 then 'B' when grade>=70 then 'C' when grade>=60 then 'D'

begin end

set @s = @s + @i set @i = @i + 1

4)、搜索case语句举例

print '1+2+...+100='+ cast(@s as char(25))

功能为:

结果为:

7)、goto语句

declare @s int,@i int set @i = 0 set @s = 0 my_loop: set @s = @s + @i set @i = @i + 1

if @i<=100 goto my_loop

print '1+2+...+100='+ cast(@s as char(25))

from StudentGrade where Course_id='0511' go

功能为:

结果为:

2、请编写程序完成以下功能:

1)定义一个长度为9的可变长型字符变量,并分别给其赋值“Welcome to Beijing”及“Beijing”,观察其执行结果。

28

功能为:

结果为:

2)统计随机产生的1000个0到1之间小数以0.5为分界出现的次数。

调试通过 《数据库原理与应用》实验报告

3)给出一个变量a,并赋值为80,在成绩表中统调试通过 计0501这门课程大于a值的有几人? 调试通过

4)求出100以内所有的质数。

调试通过 三、思考及拓展

1、sql server还提供给开发者自定义函数,如标量函数、表值函数等,你能否查阅资料或者根据老师提供的视频来定义这些函数,并完成一些功能呢?例如:定义一函数,函数的自变量是学生的姓名,函数值是这个学生的总成绩。

2、对本次实验的思考。

29

《数据库原理与应用》实验报告

实验十五 存储过程的使用

一、实验目的

1.了解嵌入式SQL和ODBC编程。

2.掌握存储过程的概念,熟悉使用存储过程来进行数据库应用程序的设计。 3.掌握存储过程的创建、使用和删除。

二、实验内容及要求

1.创建一个存储过程,查看001号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;

调试通过

2.创建一个存储过程,通过学生学号来查询学生选修情况,包括学生学号、姓名和成绩,然后执行该过程;

30

3.创建一个存储过程,通过学生学号来查询学生调试通过 选修情况,默认查询学号为00001的选修情况,包括学生学号、姓名和成绩,然后执行该过程;

调试通过

4.创建一个存储过程NoCourseProc,获得选修某门课程的总人数,然后在执行该过程后把课程号为0101的选修总人数显示出来;

《数据库原理与应用》实验报告

5.创建一个存储过程,通过学号和课程号进行成调试通过 绩查询,如果查询结果为空,则显示“该学生没有选这门课”,返回0,如果查询结果低于60分,则显示“该学生考试成绩不及格”,返回1,如果查询结果在60-85之间,则显示“该学生考试成绩为良”,返回2,如果查询结果大于85,则显示“该学生考试成绩为优秀”,返回3,然后执行该过程查询学号00001的选课成绩,并把返回结果显示出来。 调试通过 6.编写存储过程,求n!。并调用上面的存储过程,求5!。 调试通过 7.删除存储过程“NoCourseProc”。

调试通过 三、作业

1、试述查询优化在关系数据库系统中的重要性和可能性。

2、对学生-课程数据库有如下查询:

31

《数据库原理与应用》实验报告

Select Cname

From Student,Course,SC

Where Student.Sno=SC,Sno and SC.Cno=Course.Cno and Student.Sdept=’IS’

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。

3、试述RDBMS查询优化的一般准则。

4、试述RDBMS查询优化的一般步骤。

32

《数据库原理与应用》实验报告

第十章 数据库的恢复技术作业

1、 试述事务的概念及事务的四个特性。恢复技术能保证事务的哪些特性?

2、数据库运行过程中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库的数据?

3、数据库恢复的基本技术有哪些?

4、数据库转储的意义是什么?试比较各种数据转储方法。

5、什么是日志文件?为什么要设立日志文件?

33

《数据库原理与应用》实验报告

6、登记日志文件时为什么必须先写日志文件,再写数据库?

7、什么是检查点记录,检查点记录包括哪些内容?

8、具有检查点的恢复技术有什么优点?试举例说明。

9、选择题

1一个事务的执行,要么全部完成,要么全部不做,一个事务中对数据库的所有操作都是一个不可分割的操作序列的属性是( ) 。 A.原子性

B.一致性

C.独立性

D.持久性

2.表示两个或多个事务可以同时运行而不互相影响的是( )。 A.原子性

B.一致性

C.独立性

D.持久性

3.事务的持续性是指( )

A. 事务中包括的所有操作要么都做,要么都不做 B. 事务一旦提交,对数据库的改变是永久的 C. 一个事务内部的操作对并发的其他事务是隔离的

D. 事务必须使数据库从一个一致性状态变到另一个一致性状态 4.SQL语言中的COMMIT语句的主要作用是( )。 A.结束程序

B.返回系统

34

C.提交事务 D.存储数据

《数据库原理与应用》实验报告

5.SQL语言中用( )语句实现事务的回滚 A.CREATE TABLE

B.ROLLBACK

C.GRANT和REVOKE

D.COMMIT

6.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( )。 A.介质故障

B.运行故障

C.系统故障

D.事务故障

7.在DBMS中实现事务持久性的子系统是( )。 A.安全管理子系统 B.完整性管理子系统 8.后援副本的作用是( )。 A.保障安全性

B.一致性控制

C.故障后的恢复

D.数据的转储

C.并发控制子系统 D.恢复管理子系统

9.事务日志用于保存( )。 A.程序运行过程

B.程序的执行结果

C.对数据的更新操作 D.对数据的查询操作

10.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括( )。 A.数据字典、应用程序、数据库后备副本 C.日志文件、数据库后备副本

B.数据字典、应用程序、审计档案 D.数据字典、应用程序、日志文件

10、填空题

1.___________ 是一系列的数据库操作,是数据库应用程序的基本逻辑单元。

2.在SQL语言中,定义事务控制的语句主要有___________ 、___________ 和 ___________ 。 3.事务具有四个特性:它们是___________ 、___________ 、___________ 和 ___________ 。这个四个特性也简称为___________特性

4.把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态)的功能,这就是________ 。 5.建立冗余数据最常用的技术是___________ 和___________ 。通常在一个数据库系统中,这两种方法是一起使用的。

6.转储可分为______________ 和______________,转储方式可以有______________和 ______________。

35