太原理工大学数据库实验报告.docx

上传人:b****5 文档编号:5984626 上传时间:2023-01-02 格式:DOCX 页数:16 大小:506.44KB
下载 相关 举报
太原理工大学数据库实验报告.docx_第1页
第1页 / 共16页
太原理工大学数据库实验报告.docx_第2页
第2页 / 共16页
太原理工大学数据库实验报告.docx_第3页
第3页 / 共16页
太原理工大学数据库实验报告.docx_第4页
第4页 / 共16页
太原理工大学数据库实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

太原理工大学数据库实验报告.docx

《太原理工大学数据库实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工大学数据库实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

太原理工大学数据库实验报告.docx

太原理工大学数据库实验报告

太原理工大学学生实验报告

学院名称

专业班级

课程名称

学号

学生姓名

实验日期

实验成绩

实验题目

交互式SQL

实验一认识DBMS

一、实验目的

1.通过对某个商用数据库管理系统的安装使用,初步了解DBMS的

工作环境和系统构架。

在此推荐SQLSERVER2005。

2.熟悉DBMS的安装、配置及使用。

3.搭建今后实验的平台。

二、实验平台

操作系统:

WindowsXP。

数据库管理系统:

SQLSERVER2005。

选择安装各个数据库管理系统

之前,请仔细看清硬件的配置要求。

三、实验内容和要求

1.根据安装文件的说明安装数据库管理系统。

在安装过程中记录安

装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今

后运行数据库管理系统会有什么影响。

2.学会启动和停止数据库服务。

在正确安装SQLSERVER2005后,SQLSERVER数据库引擎服务会在

系统启动时自动启动。

如果要手动地启动和停止数据库引擎服务,可以

通过SQLSERVER配置管理器(SQLSERVERCONFIGURATIONMANAGER)来

进行管理。

SQLSERVER配置管理器综合了SQLSERVER2000中的服务管

理器、服务器网络适用工具和客户端网络实用工具的功能。

打开SQLSERVER配置管理器工具,单击“SQLSERVER2005服务”

节点,其中的“SQLSERVER”服务就是我们所说的数据库引擎。

与SQL

SERVER2000一样,可以通过这个配置管理器来启动、停止所安装的服

务,如“SQLSERVER(MSSQLSERVER)”。

3.了解RDBMS系统的体系结构。

实验二交互式SQL

一.数据定义

(一)基本表的操作

1.建立基本表

例如,建立一个学生表:

createtableStudent

(Snochar(9)primarykey,

Snamechar(20)unique,

Ssexchar

(2),

Sagesmallint,

Sdeptchar(20))

建立一个课程表:

createtableCourse

(Cnochar(4)primarykey,

Cnamechar(40),

Cpnochar(4),

Ccreditsmallint,

foreignkey(Cpno)referencesCourse(Cno))

createtablesc

(Snochar(9),

Cnochar(4),

Gradesmallint,

primarykey(Sno,Cno),

foreignkey(Sno)referencesstudent(Sno),

foreignkey(Cno)referencescourse(Cno));

2.修改基本表

例如,像student表加一个入学时间列:

altertableStudentaddS_entrancedatetime

altertableStudentaltercolumnSageint

altertableCourseaddunique(Cname)

3.删除基本表

例如,删除已经建立的学生表:

droptableStudent

droptableCourse

(二)索引操作

1.建立索引

例如,为学生课程数据库中的student,course,sc三个表建立索引。

其中student表按学号升序建唯一索引,course表按课程号升序建唯一索引,sc表按学生升序和课程号升序建唯一索引:

createuniqueindexStusnoonStudent(Sno);

createuniqueindexCoucnoonCourse(Cno);

createuniqueindexSCnoonSC(SnoASC,CnoDESC)

2.删除索引

例如,删除student表的Stusno索引:

dropindexStusname

(三)数据操作

一.更新操作

1.插入数据

例如,在student表中插入下列数据:

200215125,张立,男,19,IS

代码如下

insertintostudent(Sno,Sname,Ssex,Sage,Sdept)values('200215125','张

立','男',19,'IS')

插入后,结果如下:

在Course表中插入以下数据:

1,数据库,5,4

2,数学,null,2

6,数据处理,null,2

4,操作系统,6,3

7,PASCAL语言,6,4

5,数据结构,7,4

1,数据库,5,4

3,信息系统,1,4

insertintocourse(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4);

insertintocourse(Cno,Cname,Ccredit)values('2','数学',2);

insertintocourse(Cno,Cname,Ccredit)values('6','数据处理',2);

insertintocourse(Cno,Cname,Cpno,Ccredit)values('4','操作系统','6',3);

insertintocourse(Cno,Cname,Cpno,Ccredit)values('7','PASCAL语言','6',4);

insertintocourse(Cno,Cname,Cpno,Ccredit)values('5','数据结构','7',4);

insertintocourse(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4);

insertintocourse(Cno,Cname,Cpno,Ccredit)values('3','信息系统','1',4);

2.修改数据

例如,将学生200215121的年龄改为22岁:

updatestudentsetSage=22whereSno='200215121'

修改前:

修改后:

3.删除数据

例如,删除学号为200215128的学生记录:

deletefromstudentwhereSno='200215128'

删除所有学生的选课记录:

deletefromsc

删除计算机科学系所有学生的选课记录:

deletefromscwhere'CS'=(selectSdeptfromstudentwherestudent.Sno=SC.Sno)

二.查询操作

1.单表查询

例如,查询全体学生的学号与姓名:

selectSno,Snamefromstudent

再例如,查询全体学生的详细记录

select*fromstudent;

查询所有年龄在20岁以下的学生姓名及其年龄。

selectSname,SagefromstudentwhereSage<20;

查询所有姓刘的学生的姓名、学号和性别。

selectSname,Sno,SsexfromstudentwhereSnamelike'刘%';

2.连接查询

例如,查询每个学生及其选修课程的情况:

selectstudent.*,sc.*

fromstudent,sc

wherestudent.Sno=sc.Sno

查询每一门课的间接先修课:

selectfirst.Cno,second.Cpno

fromcoursefirst,coursesecond

wherefirst.Cpno=second.Cno

查询每个学生及其选修课程的情况,用外连接来完成。

selectstudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

fromstudentleftouterjoinscon

(student.Sno=sc.Sno);

3.嵌套查询

例如,查询与“刘晨”在同一个系学习的学生。

selectSno,Sname,Sdept

fromstudentwhere

Sdeptin

(selectSdeptfromstudent

where

Sname='刘晨');

查询选修了课程名为“信息系统”的学生学号和姓名.

selectSno,Sname

fromstudentwhere

Snoin

(selectSnofromsc

Where

Cnoin

(select

Cnofromcourse

where

Cname='信息系统'));

 

4.集合查询

例如,查询计算机科学系的学生以及年龄不及十九岁的学生:

Select*

Formstudent

Wheresdept=‘cs’

Union

Select*

Fromstudent

Wheresage<19

三.视图操作

1.建立视图

例如,建立信息系学生的视图:

Createview

IS_student

As

Selectsno.sname,sage

Formstudent

Wheresdept=‘IS’

将学生的学号和他的成绩定义为一个视图

2.删除视图

例如,删除视图BT_S

DropviewBT_S

3.查询视图

在信息系学生中找出年龄小于20岁的学生

Select*

FormIS_Student

Wheresage<20

4.更新视图

将信息系统学生IS_student中学号为200215122的学生姓名改为“刘辰”

UpdateIS_student

Setsname=‘l刘辰’

Wheresno=‘200215122’

删除信息系学生视图IS_studnet中学号为200215129的记录

Delete

FromIS_student

Wheresno=‘200215129’

实验三数据库完整性

一、实验目的

(1)了解SQLSerer数据库系统中数据完整性控制的基本方法

(2)了解使用SSMS设置约束

(3)熟练掌握常用CREATE或ALTER在创建或修改表时设置约束

(4)了解触发器的机制和使用

(5)验证数据库系统数据完整性控制

二、实验平台

使用SQLServer数据库管理系统提供的SSMS。

三、实验内容及要求

结合图1—ST数据库中的各个表,设置相关的约束,并设置一个触发器,实现学生选课总学分的完整性控制,并验证完整性检查机制。

要求包括如下方面的内容:

1.使用SSMS的图形界面设置约束

使用SSMS的图形界面设置各种约束,按如下图示进入表设计窗口:

在表设计窗口中,鼠标右击,选择设置约束(按如下图示)

2.使用SQL语句设置约束

使用CREATE或ALTER语句完成如下的操作,包括:

1)设置各表的主键约束

2)设置相关表的外键

3)设置相关属性的非空约束、默认值约束、唯一约束

4)设置相关属性的CHECK约束

Createtablestudent

(snochar(6)primarykey,--主键约束

Snamechar(10)unique,--唯一约束

Sumcintcheck(sumc=0),--用户自定义约束,初值为0

Sdeptchar

(2)notnull)--非空约束

Createtablesc

(snochar(6),

Cnochar(3)notnull,--非空约束

Gradeint,

Creditint,

Primarykey(sno,cno),--主键约束

Foreignkey(sno)referencesstudent(sno))--外键约束

3.使用触发器

创建一个触发器,实现如下的完整性约束:

1)当向SC表中插入一行数据时,自动将学分累加到总学分中。

●定义触发器

createtriggerstu_insert

onscafterinsert

as

begin

declare@snochar(8),@xfint

ifexists(select*frominsertedwheregrade>60)then

begin

select@sno=sno,@xf=creditfrominserted

updatestudentsetsumc=sumc+@xfwheresno=@sno

print'success'

end

else

print'fail'

end

2)在表student中建立删除触发器,实现表student和表sc的级联删除

Createtriggersdelete

Onstudentinsteadofdelete

As

Deletefromsc

Wheresnoin(selectsnofromdeleted)

Deletefromstudent

Wheresnoin(selectsnofromdeleted)

4.检查约束和触发器

  分别向相关表插入若干条记录,检查你设置的完整性约束是否有效:

1)插入若干条包含正确数据的记录,检查插入情况

2)分别针对设置的各个约束,插入违反约束的数据,检查操作能否进行

3)向SC表插入若干行数据,检查触发器能否实现其数据一致性功能。

●激活触发器

insertintostudent(sno,sname,sdept)values('010001','王林','01')

insertintostudent(sno,sname,sdept)values('010002','程明','01')

insertintoscvalues('010001','101',80,4)

insertintoscvalues('010001','102',87,3)

insertintoscvalues('010002','101',85,4)

实验四数据库安全性

一、实验目的

 

(1)了解SQLSerer数据库系统中数据访问控制的基本方法

 

(2)了解使用SSMS如何给用户授权

(3)熟练掌握常用GRANT和REVOKE进行权限控制

(4)验证数据库系统的访问控制

二、实验平台

使用SQLServer数据库管理系统提供的SSMS和查询编辑器。

三、实验内容及要求

对上以一实验建立的表进行权限设置,并检查权限控制。

要求包括如下方面的内容:

(一)使用SSMS的图形界面授权

1. 使用SSMS的图形界面创建登录名(按如下图示)

2.使用ssms图形界面创建数据库用户(按下图所示)

3.使用SSMS的图形界面进行授权,分别设置用户对象的访问权限:

(1)打开属性窗口

(2)在属性窗口的“安全对象”中进行设置

(二)使用SQL语句设置权限

1.创建登录名。

创建SQLserver登录名hawk,其密码为hawk:

Createloginhawk

Withpassword=‘hawk’

修改登录密码为11:

Alterloginhawk

Withpassword=‘11’

删除帐户hawk:

Droploginhawk

2.创建数据库用户

使用CREATEUSER语句为新创建的登录名创建用户:

Createuserhawk

Forloginhawk

删除用户操作为:

Dropuserhawk

3.授权

按上述方法创建两个用户,并对其中一个授予查询、插入和修改的权限,另一个不授权。

例如:

Grantselectonstudent

Toaa

Grantinsertonstudent

Toaa

下面检查权限控制

分别以两个登录名登录,在查询编辑器中使用SQL语句进行如下操作:

已授权用户登录界面如下,

1)以授权用户执行一个查询表的操作,检查操作能否进行

2)以未授权用户执行一个查询表的操作,检查操作能否进行

3)给未授权用户授权后,执行授权的操作,检查操作能否进行

4)撤销权限后,检查操作能否进行

REVOKESELECTONSCFROMaa

实验心得

这次实验做的时间比较长,尤其是第二个实验,我把所有的操作都实践了一遍,做的时候也发现了很多问题,输入时不能出现一点错误,一旦出错,程序将运行不出来。

做实验报告时选取了其中的一部分,从中体会到了很多上课体会不到的东西。

 

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

当前位置:首页 > 经管营销 > 企业管理

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

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