广工数据库实验报告Word文件下载.docx
《广工数据库实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《广工数据库实验报告Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。
根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
确定数据库的增长;
根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
(1)、利用查询分析器(QueryAnalyzer),使用SQL语句指定参数创建数据库;
实现代码及截图:
SQL语句及执行结果显示
CREATEDATABASESC
ON(NAME=SC_DAT,
FILENAME='
E:
\SC.mdf'
SIZE=30MB,
FILEGROWTH=20%)
LOGON(
NAME=SC_LOG,
\SC.ldf'
SIZE=2MB,
FILEGROWTH=1MB
)
2、创建基本表
利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。
(1)创建student表
字段名
代码
类型
约束
学号
s_no
char(8)
主键
姓名
sname
非空
性别
sex
char
(2)
出生日期
sbirthday
Smalldatetime
学生所在院系编号
dno
char(6)
外键
专业代码
spno
外键
班级编码
class_no
char(4)
(2)创建Course表
课程编号
cno
char(10)
课程名称
cname
char(20)
课程类型编号
ctno
tinyint
理论学时
lecture
实验学时
experiment
开课学期
semester
课程学分
credit
(3)创建student_course表
主键,与student表中s_no外键关联,级联删除
上课编号
tcid
smallint
学生成绩
score
(4)创建teacher表
教师编号
t_no
教师姓名
t_name
t_sex
t_birthday
smalldatetime
教师所在院系编号
职称
tech_title
(5)创建系部表(department)
院系编号
院系名称
dept_name
院系负责人
header
(6)创建专业信息表(speciality)
外键,非空
专业名称
spname
(7)创建teacher_course表
非空,外键
学期
Char(6)
学年
schoolyear
Char(10)
(8)创建班级表(class)
主键,与speciality表中spno外键关联,
主键,
班负责人
3、查看各数据表之间的关系,生成数据库关系图。
生成数据库关系图截图显示
4、创建各表的实现代码及截图:
SQL语句
createtableDEPARTMENT
(dnochar(6)primarykey,
dept_namechar(20)notnull,
headerchar(8));
createtablespeciality
(spnochar(8)primarykey,
dnochar(6)notnull,
spnamechar(20)notnull,
foreignkey(dno)referencesdepartment(dno)
);
createtableSTUDENT
(s_nochar(8)primarykey,
snamechar(8)notnull,
sexchar
(2),
dnochar(6),
spnochar(8),
class_nochar(4),
sbirthdaySmalldatetime,
foreignkey(spno)referencesspeciality(spno),
foreignkey(dno)referencesdepartment(dno)
createtableCourse
(cnochar(10)primarykey,
cnamechar(20)notnull,
spnochar(8),
ctnotinyint,
lecturetinyint,
experimenttinyint,
semestertinyint,
credittinyint,
foreignkey(spno)referencesspeciality(spno));
createtablestudent_COURSE
(s_nochar(8),
tcidsmallint,
scoretinyint,
primarykey(s_no,tcid),
foreignkey(s_no)referencesstudent(s_no)ondeletecascade);
createtableTEACHER
(t_nochar(8)primarykey,
t_namechar(8)notnull,
t_sexchar
(2),
t_birthdaysmalldatetime,
tech_titlechar(10),
foreignkey(dno)referencesdepartment(dno));
createtableTEACHER_COURSE
(tcidsmallintprimarykey,
t_nochar(8),
cnochar(10)notnull,
semesterchar(6),
schoolyearchar(10),
foreignkey(t_no)referencesteacher(t_no),
foreignkey(spno)referencesspeciality(spno),
foreignkey(cno)referencesCourse(cno));
createtableclass
(spnochar(8),
class_nochar(4),
headerchar(8),
primarykey(spno,class_no),
foreignkey(spno)referencesspeciality(spno)
查询分析器执行情况:
SQL语句及执行结果截图显示
5、利用查询分析器修改上述各表。
(1)、用INSERT语句向各个表中插入数据录入5条记录。
录入时注意体会外键约束。
USESC
GO
INSERTINTODEPARTMENTVALUES('
01'
'
计算机学院'
张三'
02'
机电工程学院'
李四'
03'
外国语学院'
王武'
04'
自动化学院'
魏唯'
05'
应用数学学院'
李刚'
INSERTINTOTEACHERVALUES('
js01'
张杰'
男'
1980-05-25'
NULL)
js02'
孙羊'
女'
1985-08-15'
js03'
韩寒'
1987-08-15'
js04'
胡玲'
1985-07-01'
js05'
房名'
1988-11-11'
INSERTINTOSPECIALITYVALUES('
zy01'
计算机科学与技术'
zy02'
包装工程'
zy03'
网络工程'
zy04'
车辆工程'
zy05'
日语专业'
zy06'
电力专业'
zy07'
离散数学'
INSERTINTOSTUDENTVALUES('
xh01'
黄明'
1991-05-01'
0902'
xh02'
王翰'
1992-07-11'
xh03'
李南'
1991-04-01'
0901'
xh04'
柏琳'
1992-04-15'
xh05'
邓丽玲'
1993-03-25'
xh06'
飞月'
1991-01-03'
0905'
xh07'
韩青'
1994-03-11'
xh08'
石头'
1989-08-25'
INSERTINTOCOURSEVALUES('
kc01'
数据库'
NULL,NULL,NULL,NULL,NULL)
kc02'
高等数学'
kc03'
C++编程'
kc04'
专业英语'
kc05'
工程绘图'
kc06'
日语基础'
kc07'
电力系统'
kc08'
INSERTINTOCLASSVALUES('
孙俪'
玛丽'
王红'
1003'
邓军'
张雪军'
0804'
张威'
0904'
华伟'
INSERTINTOTEACHER_COURSEVALUES(01,'
NULL,NULL)
INSERTINTOTEACHER_COURSEVALUES(02,'
INSERTINTOTEACHER_COURSEVALUES(03,'
INSERTINTOTEACHER_COURSEVALUES(04,'
INSERTINTOTEACHER_COURSEVALUES(05,'
INSERTINTOSTUDENT_COURSEVALUES('
3,NULL)
7,NULL)
8,NULL)
2,NULL)
5,NULL)
6,NULL)
4,NULL)
实验结果截图显示(插入数据的表格)
共8组(共8个表)
(2)、用UPDATE语句更改student表中数据;
实现代码:
student表更改前的内容截图显示查询分析
UPDATESTUDENTSETclass_no='
WHEREs_no='
student表更改后的内容截图显示
执行前
执行后
(3)、用DELETE语句删除student表中数据;
事先插入了一条记录如右图所示
删除记录代码:
DELETEFROMSTUDENTWHEREs_no='
xh09'
五、实验中出现的问题及解决方案
问题:
1.开始创建表的过程中,没注意创建表的先后顺序,导致创建表失败。
解决方案:
先创建那些不需要外键依赖的表,然后再创建含有外键的表。
3.插入数据时,当有错误发生时,改正SQL语句后,再次插入会出现重复插入的错误。
一个,一个表的插入,而不是把所有的表一起插入即可,这样可以减少插入的错误。
4.创建数据库时,以为是创建模式,导致失败!
写创建数据库的SQL语句,而不是创建模式的语句。
六、思考题
1、说明数据库中的表和数据文件的关系。
答:
每个数据库有且仅有一个主数据文件,它是用于存储数据表,索引,视图,存储过程等数据库对象和数据,它的扩展名为.mdf.
2、数据库中的日志文件能否单独修改?
不能,因为日志文件记录了对数据库所做的所有修改,若单独修改了,当恢复数据库时就会出现错误,无法把数据库恢复到原样了。
计算机学院计科专业5班学号:
__________教师评定:
实验题目二、设计数据完整性
1、掌握使用约束实现数据完整性的方法;
2、掌握使用触发器实现数据完整性的方法;
1、设置主键约束、设置唯一约束、设置外键约束、设置检查约束、设置默认值约束;
2、使用企业管理器创建触发器、使用SQL语音创建触发器;
(一)、使用约束实现数据的完整性(针对实验一中的所建的基本表)
1、定义:
student表、course表、student_course表、teacher表、department表、speciality表、teacher_course表、class表的主键。
写出相应的SQL语句。
student表
createtablestudent
(s_nochar(8)primarykey,
snamechar(8)notnull,
sexchar
(2),
dnochar(6),
spnochar(8),
class_nochar(4),
sbirthdaySmalldatetime,
foreignkey(spno)referencesspeciality(spno),
foreignkey(dno)referencesdepartment(dno)
);
course表
(cnochar(10)primarykey,
cnamechar(20)notnull,
spnochar(8),
ctnotinyint,
lecturetinyint,
experimenttinyint,
semestertinyint,
credittinyint,
foreignkey(spno)referencesspeciality(spno));
teacher表
createtableteacher
(t_nochar(8)primarykey,
t_namechar(8)notnull,
t_sexchar
(2),
t_birthdaysmalldatetime,
tech_titlechar(10),
foreignkey(dno)referencesdepartment(dno));
teacher_course表
createtableteac