数据库原理实验报告.docx
- 文档编号:15864482
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:21
- 大小:382.68KB
数据库原理实验报告.docx
《数据库原理实验报告.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告.docx(21页珍藏版)》请在冰点文库上搜索。
数据库原理实验报告
《数据库原理》实验大纲
课程总学时:
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数据库
/*建一张名为s1的表:
属性(Sno主键,Sname,Sage*/
createtables1
(Snocharprimarykey,
Snamechar(20),
Sageint,
Ssexbit)
select*froms1droptables1
实验2建立表格,并插入若干记录
(操作性实验1学时)
实验目的
学会使用CreateTable语句和Insert语句
实验内容
在SQLSERVER的查询分析器中使用CreateTable语句建立Student,SC,Course三张表格(包括主键),并用Insert语句向这三张表格里添加至少10条记录。
工具及准备
SQLSERVER数据库
/*student表*/
CreatetableStudent
(Snochar(10)primarykey,
Snamechar(20),
Ssexchar
(2),
Sageint,
Sdeptchar(20));
createtableCourse
(Cnochar(4)primarykey,
Cnamechar(40),
Cpnochar(4),
Creditint
);
/*SC表*/
createtableSC
(Snochar(10),
Cnochar(4),
Gradeint,primarykey(Sno,Cno)
);
/*Insert语句增加记录:
*/
/*插入student表的语句:
*/
insertintoStudentvalues('2011110301','张山','男',20,'MA');
insertintoStudentvalues('2011110302','里司','男',19,'CS');
insertintoStudentvalues('2011110303','王丹','女',21,'MA');
insertintoStudentvalues('2011110304','周缘','男',20,'MA');
insertintoStudentvalues('2011110305','木_lin','男',19,'CS');
insertintoStudentvalues('2011110306','张家超','男',20,'MA');
insertintoStudentvalues('2011110307','小与','女',20,'MA');
insertintoStudentvalues('2011110308','王炎','男',20,'CS');
insertintoStudentvalues('2011110309','礼物','男',20,'MA');
insertintoStudentvalues('2011110310','小令','女',18,'CS');
insertintoStudentvalues('2011110311','彭和','女',20,'MA');
insertintoStudentvalues('2011110312','撒','男',22,'MA');
/*插入SC表的语句:
*/
insertintoSC(Sno,Cno,Grade)values('2011110301','1',90);
insertintoSC(Sno,Cno,Grade)values('2011110301','2',89);
insertintoSC(Sno,Cno,Grade)values('2011110302','1',97);
insertintoSC(Sno,Cno,Grade)values('2011110303','2',88);
insertintoSC(Sno,Cno,Grade)values('2011110304','1',98);
insertintoSC(Sno,Cno,Grade)values('2011110305','2',55);
insertintoSC(Sno,Cno,Grade)values('2011110306','1',90);
insertintoSC(Sno,Cno,Grade)values('2011110307','1',90);
insertintoSC(Sno,Cno,Grade)values('2011110308','1',94);
insertintoSC(Sno,Cno,Grade)values('2011110309','1',91);
insertintoSC(Sno,Cno,Grade)values('2011110310','2',97);
insertintoSC(Sno,Cno,Grade)values('2011110311','2',85);
insertintoSC(Sno,Cno,Grade)values('2011110312','1',95);
/*插入C表的语句:
*/
insertintoCourse(Cno,Cpno,Cname,Credit)values(1,'MA','CS','2');
insertintoCourse(Cno,Cpno,Cname,Credit)values(2,'CS','CH',3);
insertintoCourse(Cno,Cpno,Cname,Credit)values(3,'MA','EN',2);
insertintoCourse(Cno,Cpno,Cname,Credit)values(4,'EN','SD',4);
insertintoCourse(Cno,Cpno,Cname,Credit)values(5,'CH','MY',3);
insertintoCourse(Cno,Cpno,Cname,Credit)values(6,'SD','PC',2);
insertintoCourse(Cno,Cpno,Cname,Credit)values(7,'CH','AA',5);
insertintoCourse(Cno,Cpno,Cname,Credit)values(8,'MA','BB',2);
insertintoCourse(Cno,Cpno,Cname,Credit)values(9,'CS','CC',5);
insertintoCourse(Cno,Cpno,Cname,Credit)values(10,'MA','DD',3);
实验3修改表格结构,修改和删除表格中的数据
(操作性实验2学时)
实验目的
用ALTER语句修改表结构:
添加列,修改列定义,删除列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据。
实验内容
添加,修改和删除列:
为STUDENT表添加一列,观察添加的列对应于已经有的数据行的数据是多少?
为其修改数据;修改STUDENT表的列定义,删除才添加的多余的列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据(注意表格中的主键),并对表格做一些普通查询:
单表查询,要求使用LIKE,BETWEEN..AND等比较条件。
工具/准备工作
SQLSERVER数据库
/*添加*/
altertablestudent
addinterestchar(20)
数据都是NULL
/*修改*/
altertablestudentalter
columninterestchar(40)
/*删除*/
altertablestudent
dropcolumninterest
修改、删除记录:
updatestudentset
Sage=19where
Sno=2011110301
updatescset
Grade=100where
Sno=2011110305
updatecourseset
Cpno='EN'where
Cname='CH'
修改前:
修改后:
deletefromstudentwhereSname='彭和'deletefromSCwhereSno=2011110301deletefromcoursewhereCname='DD'
单表查询:
selectSnamefromstudentwhereSnamelike'小__'select*fromstudentwhereSagebetween19and20
结果:
实验4查询(多表查询,嵌套查询,分组查询)
(操作性实验6学时)
实验目的
实现单表和多表的普通查询和嵌套查询。
包括返回单值的子查询和返回多值的子查询。
使用5个聚合函数以及GROUPBY子句和HAVING子句实现分组查询.
实验内容
使用SELECT语句实现多表查询(需要连接)。
实现单表和多表的嵌套查询。
包括返回单值的子查询(直接使用比较运算符)和返回多值的子查询(包括IN,ALL,SOME,EXISTS子查询)。
使用AVG,SUM,MAX,MIN,COUNT等5个聚合函数并结合GROUPBY字句和HAVING字句实现分组查询。
工具/准备工作
SQLSERVER数据库
多表查询:
查询每个学生的学号、姓名、选修课程名及成绩
selectStudent.Sno,Sname,Cname,GradefromStudent,SC,Course
whereStudent.Sno=SC.SnoandSC.Cno=Course.Cno
嵌套查询:
查询与'张家超'在同一个系学习的学生
select*fromstudentwhereSdeptin
(selectSdeptfromstudentwhereSname='张家超')
查询计算机科学学院年龄大于岁的学生号课程的成绩
selectSno,GradefromSCwhereSnoin
(selectSnofromstudentwhereSdept='CS'andSage>19)
查询没有选修1号课程的学生姓名
selectSnamefromstudentwherenotexists
(select*fromSCwhereSno=Student.SnoandCno='1')
分组查询:
计算数学(MA)学院选修号课程学生的平均成绩
selectAVG(Grade)fromSCwhereSnoin
(selectSnofromstudentwhereSdept='MA')
selectSdept,min(Sage)AgefromStudentgroupbySdept
查询选择了一门课程的学生的学号
selectSnofromSCgroupbySnohavingcount(*)=1;
实验5为表格建立约束,修改约束和查询约束
(操作性实验2学时)
实验目的
使用ALTER语句和CREATE语句建立、修改、删除和查询约束
实验内容
为Student,sc,course表建立和删除主键约束,唯一性约束,检查约束,缺省约束,外键约束。
暂时关闭某个约束。
使用系统存储过程,sp_help,sp_helpconstraint等对约束进行查询和管理
工具/准备工作
SQLSERVER数据库
1.建立约束条件
createuniqueindexstusnoonStudent(Sno)
2.删除索引
dropindexSCnoonSC
3.按递增重新创建索引
createuniqueindexSCnoonSC(Sno,CnoDESC)
4.检查check
altertableStudentaddconstraintsexcheck(Ssexin('男','女'))
5.当修改Ssex不为男、女时出错
updateStudentsetSsex='nv'whereSno='2011111031'
6.外键约束
列级实体完整性约束约束
SnoCHAR(9)PRIMARYKEY,表级实体完整性约束
PRIMARYKEY(Sno,Cno),参照完整性约束表级
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
7.修改约束:
关闭和打开某个约束。
altertableStudentnocheckconstraintsex
8.重新更新Ssex
updateStudentsetSsex='1'whereSno='2011110304'
实验6SqlServer数据库安全管理
(操作性实验2学时)
实验目的
建立用户,为用户赋权限,收回权限,建立角色,给用户赋角色
实验内容
使用sp_addlogin或者SQLSERVER系统工具企业管理器创建用户,用GRANT语句或企业管理器给用户赋权限。
用REVOKE和DENY或企业管理器将用户权限收回。
使用SP_ADDROLE或企业管理器创建角色,用GRANT语句或企业管理器给角色赋权限。
用REVOKE和DENY或企业管理器将角色权限收回。
工具/准备工作
SQLSERVER数据库
Execsp_addloginlwq,lwq;
/*用Grant语句或企业管理器给用赋权限。
用REVOKE和DENY或使用工具将用户权限收回*/
Grantselectonstudentto,lwq;
Grantinsert,update,deleteonstudentto,lwq;
Denyselectonstudentto,lwq;
/*创建角色*/
Sp_addroleri,user1;
/*用grant语句或企业管理器给角色赋权限,用REVOKE和DENY或使用工具将角色权限收回*/
Grantselectonstudenttolwq;
Revokeselectonstudentfromlwq;
Denyselectonsctolwq;
实验7使用高级语言连接数据库
(操作性实验2学时)
实验目的
在高级语言中通过ADO连接SQLSERVER数据库,做一些简单应用
实验内容
在高级语言中使用ADO控件或ADO对象连接SQLSERVER数据库,实现对表格的简单查询
工具/准备工作
1.SQLSERVER
2.高级语言环境
DimconAsADODB.Connection
DimrsAsADODBRecordset
DimstrCAsString
DimstrSQLAsString
SubconDB()
StrC=“provider=SQLOLEDB.1;intergratedSecurity=SSPI;PersistSecurityinfo=false;UserID=lwq;passwd=123456;initialCatalog=master;DataSource=.”
Setcon=NewADODB.Connection
ConOpenstrC
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 实验 报告