数据库原理实验报告.docx
《数据库原理实验报告.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告.docx(42页珍藏版)》请在冰豆网上搜索。
数据库原理实验报告
数据库原理实验报告
学院计算机学院
专业计算机科学技术
班级1X级X班
学号3XX000XXXX
姓名XXX
指导教师明老师
(201X年X月)
计算机学院计算机科学与技术专业班学号:
姓名:
协作者:
___无___教师评定:
实验题目一、数据库及基本表的建立
一、实验目的
1、掌握SQLSERVER的查询分析器和企业管理器的使用;
2、掌握创建数据库和表的操作;
二、实验内容和要求
1、分别使用SQL语句、企业管理器(EnterpriseManager)创建数据库;
2、使用SQL语句、企业管理器(EnterpriseManager)创建数据库表;
三、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows2000/xp;
2.数据库管理系统:
SQLsever2000/2003/2005;
四、实验方法、步骤及结果测试
创建一个教学管理数据库SC,其描述的信息有:
学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。
创建:
student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student_course表(学生选课成绩表)、teacher_course表(教师上课课表)等。
1、创建数据库:
确定数据库名称;数据库用于学生管理,命名为SC
确定数据库的位置;要求:
数据文件和日志文件分别存储在E盘自己的目录下。
确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
(1)、利用查询分析器(QueryAnalyzer),使用SQL语句指定参数创建数据库;
实现代码及截图:
SQL语句
查询分析器执行情况:
SQL语句及执行结果显示
CREATEDATABASESC
ON
(
NAME=SC_DAT,
FILENAME='F:
\SC.mdf',
SIZE=30MB,
FILEGROWTH=20%
)
LOGON
(
NAME=SC_LOG,
FILENAME='F:
\SC.ldf',
SIZE=2MB,
FILEGROWTH=1MB
)
查询分析器执行情况:
SQL语句及执行结果截图显示
2、创建基本表
利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。
(1)创建student表
字段名
代码
类型
约束
学号
s_no
char(8)
主键
姓名
sname
char(8)
非空
性别
sex
char
(2)
出生日期
sbirthday
Smalldatetime
学生所在院系编号
dno
char(6)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
(2)创建Course表
字段名
代码
类型
约束
课程编号
cno
char(10)
主键
课程名称
cname
char(20)
非空
专业代码
spno
char(8)
外键
课程类型编号
ctno
tinyint
理论学时
lecture
tinyint
实验学时
experiment
tinyint
开课学期
semester
tinyint
课程学分
credit
tinyint
(3)创建student_course表
字段名
代码
类型
约束
学号
s_no
char(8)
主键,与student表中s_no外键关联,级联删除
上课编号
tcid
smallint
主键
学生成绩
score
tinyint
(4)创建teacher表
字段名
代码
类型
约束
教师编号
t_no
char(8)
主键
教师姓名
t_name
char(8)
非空
性别
t_sex
char
(2)
出生日期
t_birthday
smalldatetime
教师所在院系编号
dno
char(6)
外键
职称
tech_title
char(10)
(5)创建系部表(department)
字段名
代码
类型
约束
院系编号
dno
char(6)
主键
院系名称
dept_name
char(20)
非空
院系负责人
header
char(8)
(6)创建专业信息表(speciality)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键
院系编号
dno
char(6)
外键,非空
专业名称
spname
char(20)
非空
(7)创建teacher_course表
字段名
代码
类型
约束
上课编号
tcid
smallint
主键
教师编号
t_no
char(8)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
课程编号
cno
char(10)
非空,外键
学期
semester
Char(6)
学年
schoolyear
Char(10)
(8)创建班级表(class)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键,与speciality表中spno外键关联,
班级编码
class_no
char(4)
主键,
班负责人
header
char(8)
3、查看各数据表之间的关系,生成数据库关系图。
生成数据库关系图截图显示
4、创建各表的实现代码及截图:
SQL语句
查询分析器执行情况:
SQL语句及执行结果显示
DEPARTMENT表
USESC
GO
CREATETABLEDEPARTMENT
(
dnochar(6),
dept_namechar(20)notnull,
headerchar(8),
PRIMARYKEY(dno)
)
TEACHER表
USESC
GO
CREATETABLETEACHER
(
t_nochar(8),
t_namechar(8)notnull,
t_sexchar
(2),
t_birthdaysmalldatetime,
dnochar(6),
teach_titlechar(10),
PRIMARYKEY(t_no),
FOREIGNKEY(dno)REFERENCESDEPARTMENT(dno)
)
SPECIALITY表
USESC
GO
CREATETABLESPECIALITY
(
spnochar(8),
dnochar(6)notnull,
spnamechar(20)notnull,
PRIMARYKEY(spno),
FOREIGNKEY(dno)REFERENCESDEPARTMENT(dno)
)
STUDENT表
USESC
GO
CREATETABLESTUDENT
(
s_nochar(8),
snamechar(8)notnull,
sexchar
(2),
sbirthdaySmalldatetime,
dnochar(6),
spnochar(8),
class_nochar(4),
PRIMARYKEY(s_no),
FOREIGNKEY(dno)REFERENCESDEPARTMENT(dno),
FOREIGNKEY(spno)REFERENCESSPECIALITY(spno)
)
COURSE表
USESC
GO
CREATETABLECOURSE
(
cnochar(10),
cnamechar(20)notnull,
spnochar(8),
ctnotinyint,
lecturetinyint,
experimenttinyint,
semestertinyint,
credittinyint,
PRIMARYKEY(cno),
FOREIGNKEY(spno)REFERENCESSPECIALITY(spno)
)
STUDENT_COURSE表
USESC
GO
CREATETABLESTUDENT_COURSE
(
s_nochar(8),
tcidsmallint,
scoretinyint,
PRIMARYKEY(s_no,tcid),
FOREIGNKEY(s_no)REFERENCESSTUDENT(s_no)
)
CLASS表
USESC
GO
CREATETABLECLASS
(
spnochar(8),
class_nochar(4),
headerchar(8),
PRIMARYKEY(spno,class_no),
FOREIGNKEY(spno)REFERENCESSPECIALITY(spno)
)
TEACHER_COURSE表
USESC
GO
CREATETABLETEACHER_COURSE
(
tcidsmallint,
t_nochar(8),
spnochar(8),
class_nochar(4),
cnochar(10)notnull,
semesterchar(6),
schoolyearchar(10),
PRIMARYKEY(tcid),
FOREIGNKEY(t_no)REFERENCESTEACHER(t_no),
FOREIGNKEY(spno)REFERENCESSPECIALITY(spno),
FOREIGNKEY(cno)REFERENCESCOURSE(cno)
)
查询分析器执行情况:
SQL语句及执行结果截图显示
5、利用查询分析器修改上述各表。
(1)、用INSERT语句向各个表中插入数据录入5条记录。
录入时注意体会外键约束。
查询分析器执行情况:
SQL语句及执行结果显示
向DEPARTMENT表添加5条记录
USESC
GO
INSERTINTODEPARTMENTVALUES('6150','计算机学院','小明')
INSERTINTODEPARTMENTVALUES('6151','信息工程学院','小华')
INSERTINTODEPARTMENTVALUES('6152','外国语学院','小天')
INSERTINTODEPARTMENTVALUES('6153','艺术学院','小唯')
INSERTINTODEPARTMENTVALUES('6154','数学学院','秋山澪')
向TEACHER表添加5条记录
USESC
GO
INSERTINTOTEACHERVALUES('js01','小明','男','1990-02-25','6150',NULL)
INSERTINTOTEACHERVALUES('js02','小华','女','1991-05-15','6151',NULL)
INSERTINTOTEACHERVALUES('js03','小天','女','1987-04-07','6152',NULL)
INSERTINTOTEACHERVALUES('js04','小唯','女','1985-07-08','6153',NULL)
INSERTINTOTEACHERVALUES('js05','秋山澪','女','1984-11-23','6154',NULL)
USESC
GO
INSERTINTOSPECIALITYVALUES('zy00','6150','计算机科学与技术')
INSERTINTOSPECIALITYVALUES('zy01','6151','信息工程')
INSERTINTOSPECIALITYVALUES('zy02','6152','日语专业')
INSERTINTOSPECIALITYVALUES('zy03','6153','美术专业')
INSERTINTOSPECIALITYVALUES('zy04','6154','离散数学')
向STUDENT表添加5条记录
USESC
GO
INSERTINTOSTUDENTVALUES('xh01','黄进杰','男','1991-05-01','6150','zy00','0902')
INSERTINTOSTUDENTVALUES('xh02','郭富城','女','1991-04-08','6150','zy01','0901')
INSERTINTOSTUDENTVALUES('xh03','刘德华','女','1991-07-15','6151','zy02',NULL)
INSERTINTOSTUDENTVALUES('xh04','黎明','女','1991-07-03','6152','zy03','0905')
INSERTINTOSTUDENTVALUES('xh00','吴知','女','1988-04-19','6152','zy04','0902')
向COURSE表添加5条记录
USESC
GO
INSERTINTOCOURSEVALUES('kc00','数据库','zy00',NULL,NULL,NULL,NULL,NULL)
INSERTINTOCOURSEVALUES('kc01','图形学','zy01',NULL,NULL,NULL,NULL,NULL)
INSERTINTOCOURSEVALUES('kc02','C++编程','zy02',NULL,NULL,NULL,NULL,NULL)
INSERTINTOCOURSEVALUES('kc03','计算机网络','zy03',NULL,NULL,NULL,NULL,NULL)
INSERTINTOCOURSEVALUES('kc04','工程绘图','zy04',NULL,NULL,NULL,NULL,NULL)
向CLASS表添加5条记录
USESC
GO
INSERTINTOCLASSVALUES('zy00','0902','小孙')
INSERTINTOCLASSVALUES('zy01','0901','小健')
INSERTINTOCLASSVALUES('zy02','0901','小红')
INSERTINTOCLASSVALUES('zy03','1003','小军')
INSERTINTOCLASSVALUES('zy04','0905','小唯')
USESC
GO
INSERTINTOTEACHER_COURSEVALUES(01,'js01','zy01','0902','kc01',NULL,NULL)
INSERTINTOTEACHER_COURSEVALUES(02,'js02','zy02','1003','kc02',NULL,NULL)
INSERTINTOTEACHER_COURSEVALUES(03,'js03','zy03','0905','kc03',NULL,NULL)
INSERTINTOTEACHER_COURSEVALUES(04,'js04','zy04','0804','kc04',NULL,NULL)
INSERTINTOTEACHER_COURSEVALUES(05,'js05','zy00','0904','kc00',NULL,NULL)
向STUDENT_COURSE表添加5条记录
USESC
GO
INSERTINTOSTUDENT_COURSEVALUES('xh01',1,20)
INSERTINTOSTUDENT_COURSEVALUES('xh02',4,60)
INSERTINTOSTUDENT_COURSEVALUES('xh03',6,70)
INSERTINTOSTUDENT_COURSEVALUES('xh04',2,90)
INSERTINTOSTUDENT_COURSEVALUES('xh00',4,100)
实验结果截图显示(插入数据的表格)
实现代码及截图:
共8组(共8个表)
(2)、用UPDATE语句更改student表中数据;
实现代码:
USESC
GO
UPDATESTUDENTSETclass_no='5354'WHEREs_no='xh00'
student表更改前的内容截图显示查询分析
student表更改后的内容截图显示
(3)、用DELETE语句删除student表中数据;
实现代码:
DELETEFROMSTUDENTWHEREs_no='xh01'
student表更改前的内容截图显示查询分析
student表更改后的内容截图显示
五、实验中出现的问题及解决方案
1.实验中主要出现外键的建立问题,因为我是先建立一个STUDENTT_COURSE表在建STUDENT表,所以出现找不到STUDENT表的键的问题。
2.试验中还出现了删除问题,因为两表之间有外键关系,没设定级联删除。
后设定后解决问题。
六、思考题
1、说明数据库中的表和数据文件的关系。
表为数据库中数据存储的基本单位,其数据按行、列存储。
每个表具有一表名和列的集合。
每一列有一个列名、数据类型、宽度或精度、比例。
一行是对应单个记录的列信息的集合。
数据文件存放着在数据库中存储的数据,且一个数据库只有一个数据文件。
2、数据库中的日志文件能否单独修改?
可以。
把对数据的修改写到数据库中和把表示这个修改的日子记录写到日志文件中是两个不同的操作。
有可能在这两个操作之间发生某种故障,即这两个操作只完成了其中一个。
所以,可以单独修改数据库中的日志文件而不一定会修改数据。
计算机学院计算机科学与技术专业7班学号:
3110006150
姓名:
刘奕欽协作者:
___无___教师评定:
实验题目设计数据完整性_
一、实验目的
1、掌握使用约束实现数据完整性的方法;
2、掌握使用触发器实现数据完整性的方法;
二、实验内容和要求
1、设置主键约束、设置唯一约束、设置外键约束、设置检查约束、设置默认值约束;
2、使用企业管理器创建触发器、使用SQL语音创建触发器;
三、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows2000/xp;
2.数据库管理系统:
SQLsever2000/2003/2005;
四、实验方法、步骤及结果测试
(一)、使用约束实现数据的完整性(针对实验一中的所建的基本表)
要求:
1、定义:
student表、course表、student_course表、teacher表、department表、speciality表、teacher_course表、class表的主键。
写出相应的SQL语句。
student表
CREATETABLEstudent
(
s_noCHAR(8)PRIMARYKEY,
snameCHAR(8)NOTNULL,
sexCHAR
(2),
sbirthdaySmaldatetime,
dnoCHAR(6),
spnoCHAR(8),
class_noCHAR(4)
);
course表
CREATETABLEcourse
(
cnoCHAR(10)PRIMARYKEY,
cnameCHAR(20)NOTNULL,
spnoCHAR(8),
ctnotinyint,
lecturetinyint,
experimenttinyint,
semestertinyint,
credittinyint
)
teacher表
CREATETABLEteacher
(
t_noCHAR(8)PRIMARYKEY,
t_nameCHAR(8)NOTNULL,
t_sexCHAR
(2),
t_birthdaySmalldatetime,
dnoCHAR(6),
tech_titleCHAR(10)
);
teacher_course表
CREATETABLEteacher_course
(
tcidsmallintPRIMARYKEY,
t_noCHAR(8),
spnoCHAR(8),
class_noCHAR(4),
cnoCHAR(10)NOTNULL,
semesterCHAR(6),
schoolyearCHAR(10)
);
Student_course表
CREATETABLEstudent_course
(
s_noCHAR(8),
tcidsmallint,
PRIMARYKEY(s_no,tcid),
scoretinyint
);
Department表
CREATETABLEdepartment
(
dnoCHAR(6)PRIMARYKEY,
dept_nameCHAR(20)NOTNULL,
headerCHAR(8)
);
Speciality表
CREATETABLEspeciality
(
spnoCHAR(8)PRIMARYKEY,
dnoCHAR(6)NOTNULL,
spnameCHAR(20)NOTNULL
);
Class表
CREATETABLEclass
(
spnoCHAR(8),
class_noCHAR(4),
PRIMARYKEY(spno,class_no),
headerCHAR(8)
);
2、定义以上各表的外键约束,并通过插入新的数据记录来检查外键约束。
写出相应的SQL语句,并将检查执行的结果截图显示。
外键定义的SQ