数据库实验报告.docx
- 文档编号:13961591
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:25
- 大小:86.12KB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(25页珍藏版)》请在冰点文库上搜索。
数据库实验报告
《数据库原理》实验报告
课程总学时:
64 学分:
2
实验学时:
16 实验个数:
7实验学分:
1
课程性质:
专业必修
适用专业:
计算机科学与技术,软件工程,网络工程,电子商务,教育技术
教材及参考书:
数据库系统概论
大纲执笔人:
俞晓
大纲审定人:
一、实验课的性质与任务
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。
本实验课程主要是在SQLSERVER下实现SQL语言的基本操作:
建立、修改、删除表格等数据库对象,插入、修改、删除表格中的数据,对数据做多种查询。
并熟悉使用SQLSERVER的系统工具创建数据库,用户等。
最后用VB连接SQLSERVER做一个简单的数据库系统。
该课程注重教学体系的严密性、教学内容的实用性、知识体系的扩展性。
通过练习,提高学生的动手能力,使学生能较熟练的在SQLSERVER数据库管理系统中实现数据管理和维护。
二、实验课程目的与要求
1.实验目的:
本课程的目的和任务是使学生全面地了解和掌握数据库的原理,SQLSERVER系统的基本操作和应用技术,以适应社会对数据库技术应用的大量需求。
2.实验要求:
1)实验安排在上机时间进行。
2)实验以前,学生应对实验设计的相关知识点和相关设计技术有所了解
3)每个实验要求写出实验报告(实验报告包括:
实验内容、目的、实现方法、调试结果)
三、实验项目及内容提要
网络操作系统实验课程(课程编号1107343002)
序号
实验项目编号
实验名称
学时
必做
选做
学分数
实验类型
内容提要
基本操作
验证
综合
设计
1
熟悉SQLSERVER的环境
1
√
√
在WINDOWS操作系统下熟悉SQLSERVER的常用工具。
2
建立表格,并插入若干记录
1
√
√
在查询分析器中使用CreateTable语句建立Student,SC,Course三张表格,并用Insert语句向这三张表格里添加至少10条记录。
3
修改表格结构,修改和删除表格中的数据
2
√
√
用ALTER语句修改表结构:
添加列,修改列定义,删除列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据。
4
查询(多表查询,嵌套查询,分组查询)
6
√
√
实现单表和多表的普通查询和嵌套查询。
包括返回单值的子查询和返回多值的子查询。
使用5个聚合函数以及GROUPBY子句和HAVING子句实现分组查询
5
为表格建立约束,修改约束和查询约束
2
√
√
为Student,sc,course表建立主键约束,唯一性约束,检查约束,缺省约束,外键约束。
6
SqlServer数据库安全管理
2
√
√
建立用户,为用户赋权限,收回权限,建立角色,给用户赋角色
7
使用高级语言连接数据库
4
√
√
在高级语言中通过ADO连接SQLSERVER数据库,做一些简单应用
实验1熟悉SQLSERVER的环境
(操作性实验1学时)
实验目的
了解SQLServer数据库的各个工具软件
实验内容
使用SQLServer的相关工具,其中包括查询分析器和企业管理器,在查询分析器里写简单的SQL语句,在企业管理器中建立表格等。
工具及准备
SQLSERVER数据库
实验代码:
createdatabaseS_T
/*CREATETABLE*/
/*建立学生表:
*/
createtablestudent
(
Snochar(10)primarykey,
Snamechar(20),
Ssexbit,
Sagedatetime,
Sdeptchar(20)
);
DROPTABLEcourse
/*建立课程表:
*/
createtablecourse
(
Cnochar(5)primarykey,
Cnamechar(30)unique,
CpnoCHAR(4),
Cereditsmallint,
/*FOREIGNKEY(Cpno)REFERENCESCourse(Cno)*/
);
/*建立选课表:
*/
createtableSC
(
Snochar(10),
Cnochar(5),
Gradesmallint,
primarykey(Sno,Cno)
);
实验结果:
1.了解SQLServer数据库的各个工具软件
2.使用SQLServer的相关工具,其中包括查询分析器和企业管理器,在查询分析器里写简单的SQL语句,在企业管理器中建立表格等。
实验2建立表格,并插入若干记录
(操作性实验1学时)
实验目的
学会使用CreateTable语句和Insert语句
实验内容
在SQLSERVER的查询分析器中使用CreateTable语句建立Student,SC,Course三张表格(包括主键),并用Insert语句向这三张表格里添加至少10条记录。
工具及准备
SQLSERVER数据库
代码如下:
createdatabaseS_T
/*CREATETABLE*/
/*建立学生表*/
createtablestudent
(
Snochar(10)primarykey,
Snamechar(20),
Ssexbit,
Sagedatetime,
Sdeptchar(20)
);
/*DROPTABLEcourse*/
/*建立课程表:
*/
createtablecourse
(
Cnochar(5)primarykey,
Cnamechar(30)unique,
CpnoCHAR(4),
Cereditsmallint,
/*FOREIGNKEY(Cpno)REFERENCESCourse(Cno)*/
);
/*建立选课表:
*/
createtableSC
(
Snochar(10),
Cnochar(5),
Gradesmallint,
primarykey(Sno,Cno)
);
/*INSERTstudent*/
/*向学生表中插入数据:
*/
INSERTINTOstudent
values('2013110242','张红',0,'1995-3-25','计算机科学学院');
INSERTINTOstudent
values('2013110243','丽丽',0,'1993-3-2','计算机科学学院');
INSERTINTOstudent
values('2013110244','黎明',0,'1994-2-9','计算机科学学院');
INSERTINTOstudent
values('2013110246','刘红',0,'1994-12-10','物电学院');
INSERTINTOstudent
values('2013110248','杨小',0,'1994-10-10','计算机科学学院');
INSERTINTOstudent
values('2013110249','小芳',0,'1994-2-4','计算机科学学院');
INSERTINTOstudent
values('2013110250','静静',0,'1994-3-5','数软学院');
INSERTINTOstudent
values('2013110251','玲玲',0,'1994-10-10','物电学院');
INSERTINTOstudent
values('2002115121','李勇',1,'1994-11-06','物电学院');
INSERTINTOstudent
values('2002115122','张明',1,'1995-11-06','数软学院');
/*INSERTcource*/
/*向课程表中插入数据:
*/
INSERTINTOcourse
values('1','数据库','5',4);
INSERTINTOcourse
values('2','数学',null,2);
INSERTINTOcourse
values('3','信息系统','1',4);
INSERTINTOcourse
values('4','操作系统','6',3);
INSERTINTOcourse
values('5','数据结构','7',4);
INSERTINTOcourse
values('6','数据处理',null,2);
INSERTINTOcourse
values('7','PASCAL语言','6',4);
/*INSERTSC*/
/*向选课表中插入数据:
*/
INSERTINTOSC
values('2013110248','1',95);
INSERTINTOSC
values('2013110242','2',90);
INSERTINTOSC
values('2013110248','3',96);
INSERTINTOSC
values('2013110242','3',95);
INSERTINTOSC
values('2013110243','2',95);
INSERTINTOSC
values('2013110243','4',96);
select*fromstudent
select*fromSC
select*fromcourse实验结果:
可以熟练地使用CreateTable语句和Insert语句。
在上机过程中出现的问题:
创建一张表时,要根据实际的属性确定合适的数据类型及其范围;插入数据时,也要注意每一位的数据类型及其范围,比如字符型插入时应加单引号。
实验3修改表格结构,修改和删除表格中的数据
(操作性实验2学时)
实验目的
用ALTER语句修改表结构:
添加列,修改列定义,删除列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据。
实验内容
添加,修改和删除列:
为STUDENT表添加一列,观察添加的列对应于已经有的数据行的数据是多少?
为其修改数据;修改STUDENT表的列定义,删除才添加的多余的列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据(注意表格中的主键),并对表格做一些普通查询:
单表查询,要求使用LIKE,BETWEEN..AND等比较条件。
工具/准备工作
SQLSERVER数据库
代码如下:
/*ALTER*/
/*1.为student表添加一列入学时间,为其修改数据:
*/
ALTERTABLEstudent
ADDs_entrancedatetime;
updatestudent
sets_entrance='2013-9-3'
/*2.修改student表的Ssex列的属性为smallint:
*/
ALTERTABLEstudent
ALTERCOLUMNSsexsmallint;
/*3.删除才添加的多余的列:
*/
ALTERTABLESTUDENTDROPCOLUMNS_ENTRANCE
/*UPDATE*/
UPDATEstudent
SETSage='1995-8-20'
WHERESno='2013110251';
UPDATEstudent
SETSdept='物理与电子工程学院'
WHERESnoin
(selectsnofromstudentwheresdept='物电学院');
/*DELETE*/
DELETEfromstudent
WHERESno='2013110248';
/*select*/
/*查询指定列:
*/
selectSname,Sno,Sdeptfromstudent
selectCno,Cnamefromcourse
/*查询全部列:
*/
select*fromstudent
select*fromcourse
select*fromSC
/*查询经过计算的值:
*/
selectSname,2015-Sagebirthdayfromstudent
/*查询满足条件的元组:
*/
selectSnofromscwheregrade<80
selectSnamefromstudentwheresnameLIKE'张%'
selectsnofromscwheregradebetween80and90
实验结果:
Alter:
Update:
Select:
可以熟练地使用ALTER语句修改表结构:
添加列,修改列定义,删除列。
其中删除列,课本上没有记录,可以通过SQL语言帮助中找到,所以如果遇到不会使用的语句可以查找帮助中的索引;熟练地使用UPDATE和DELETE语句修改和删除表格中的数据;要将DROP与DELETE区分:
DROP是删除表的结构,表不再存在,DELETE是删除数据,表仍然存在;可以使用简单的查询语句对单表进行查询。
实验4查询(多表查询,嵌套查询,分组查询)
(操作性实验6学时)
实验目的
实现单表和多表的普通查询和嵌套查询。
包括返回单值的子查询和返回多值的子查询。
使用5个聚合函数以及GROUPBY子句和HAVING子句实现分组查询.
实验内容
使用SELECT语句实现多表查询(需要连接)。
…….
实现单表和多表的嵌套查询。
包括返回单值的子查询(直接使用比较运算符)和返回多值的子查询(包括IN,ALL,SOME,EXISTS子查询)。
使用AVG,SUM,MAX,MIN,COUNT等5个聚合函数并结合GROUPBY字句和HAVING字句实现分组查询。
工具/准备工作
SQLSERVER数据库
代码如下:
/*select*/
/*查询指定列:
*/
selectSname,Sno,Sdeptfromstudent
selectCno,Cnamefromcourse
/*查询全部列:
*/
select*fromstudent
select*fromcourse
select*fromSC
/*查询经过计算的值:
*/
selectSname,2015-Sagebirthdayfromstudent
/*查询满足条件的元组:
*/
selectSnofromscwheregrade<80
selectSnamefromstudentwheresnameLIKE'张%'
selectsnofromscwheregradebetween80and90
/*聚集函数*/
selectcount(*)COUNTfromstudent
selectcount(distinctsno)course_countfromsc
selectavg(grade)fromscwherecno='2'
selectmax(grade)fromscwherecno='2'
selectmin(grade)fromscwherecno='2'
selectsum(ceredit)fromsc,coursewhereo=oandsno='2013110242'
selectcno,count(sno)student_countfromscgroupbycno
selectsnofromscgroupbysnohavingcount(*)<3
/*GROUPBY*/
selectCno,count(Sno)NUMBERfromscgroupbyCno
selectsno,count(cno)NUMBERfromscgroupbysno
selectsnofromscgroupbysnohavingcount(cno)>2
/*带有IN谓词的子查询*/
selectsno,sname,sdeptfromstudentwheresdeptin(selectsdeptfromstudentwheresname='小芳')
selects1.sno,s1.sname,s1.sdeptfromstudents1,students2wheres1.sdept=s2.sdeptands2.sname='小芳'
selectsno,snamefromstudent
wheresnoin(selectsnofromscwherecnoin(selectcnofromcoursewherecname='数据库'))
selectstudent.sno,snamefromstudent,course,scwherestudent.sno=sc.snoando=oandcname='数据库'
实验结果:
1.熟练地使用SELECT语句实现多表查询,等值连接,自身连接,复合连接。
2.实现了单表和多表的嵌套查询。
包括返回单值的子查询(直接使用比较运算符)和返回多值的子查询(包括IN,ALL,SOME,EXISTS子查询)。
3.能够使用AVG,SUM,MAX,MIN,COUNT等5个聚合函数并结合GROUPBY字句和HAVING字句实现分组查询。
实验中需注意的问题:
IN与IS的区别;嵌套查询需要理清思路,从内到外,分步查询。
实验5为表格建立约束,修改约束和查询约束
(操作性实验2学时)
实验目的
使用ALTER语句和CREATE语句建立、修改、删除和查询约束
实验内容
为Student,sc,course表建立和删除主键约束,唯一性约束,检查约束,缺省约束,外键约束。
暂时关闭某个约束。
使用系统存储过程,sp_help,sp_helpconstraint等对约束进行查询和管理
工具/准备工作
SQLSERVER数据库
代码如下:
createtablestudent
(
Snochar(10)primarykey,建立主键,在列级定义主码
Snamechar(20)NOTnull,
Ssexbitcheck(Ssexin(,0)),检查约束
Sagedatetime,
Sdeptchar(20)
);
DROPTABLEcourse
createtablecourse
(
Cnochar(5)primarykey,
Cnamechar(30)unique,唯一性约束
CpnoCHAR(4),
Cereditsmallint,
/*FOREIGNKEYCpnoREFERENCESCourse(Cno)*/
);
createtableSC
(
Snochar(10),
Cnochar(5),
Gradesmallint,
primarykey(Sno,Cno)建立主键,在表级定义主码
);实验结果:
能够为表建立主键约束,提高数据的正确性和相容性。
实验6SqlServer数据库安全管理
(操作性实验2学时)
实验目的
建立用户,为用户赋权限,收回权限,建立角色,给用户赋角色
实验内容
使用sp_addlogin或者SQLSERVER系统工具企业管理器创建用户,用GRANT语句或企业管理器给用户赋权限。
用REVOKE和DENY或企业管理器将用户权限收回。
使用SP_ADDROLE或企业管理器创建角色,用GRANT语句或企业管理器给角色赋权限。
用REVOKE和DENY或企业管理器将角色权限收回。
工具/准备工作
SQLSERVER数据库
代码如下:
//GRANT
GRANTSELECTONTABLEStudentTOU1
GRANTALLPRIVILEGESONTABLEStudent,coursetoU2,U3
GRANTSELECTONTABLESCTOPUBLIC
GRANTUPDDATE(sno),SELECTONTABLESCTOPUBLIC
GRANTINSERTONTABLESCTOU5WITHGRANTOPTION
GRANTINSERTONTABLESCTOU6WITHGRANTOPTION
GRANTINSERTONTABLESCTOU7
//REVOKE
REVOKEUPDATE(sno)ONTABLESCFROMPUBLIC
REVOKESELECTONTABLESCFROMPUBLIC
REVOKEINSERTONTABLESCFROMU5CASCADE
/*给角色赋权限:
*/
CREATEROLER1
//GRANT
GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1
GRANTR1TO王明,张平,赵玲
//REVOKE
REVOKER1FROM王明
REVOKESELECTONTABLEstudentFROMR1
实验结果
使用SQLSERVER系统工具企业管理器创建用户U1~U7,用GRANT语句或企业管理器给用户赋权限。
用REVOKE或企业管理器将用户权限收回。
使用企业管理器创建角色,用GRANT语句或企业管理器给角色赋权限。
用REVOKE和DENY或企业管理器将角色权限收回。
实验7使用高级语言连接数据库
(操作性实验2学时)
实验目的
在高级语言中通过ADO连接SQLSERVER数据库,做一些简单应用
实验内容
在高级语言中使用ADO控件或ADO对象连接SQLSERVER数据库,实现对表格的简单查询
工具/准备工作
1.SQLSERVER
2.高级语言环境
实验代码:
_ConnectionPtrMyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb->Open("Provider=SQLOLEDB,Data
Source=ServerName;Initial
Catalog=DataBaseName;User
ID=sa;Password=;"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)