广工数据库实验报告.docx

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

广工数据库实验报告.docx

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

广工数据库实验报告.docx

广工数据库实验报告

数据库原理实验报告

 

学院计算机学院

专业计科

班级

学号

姓名

指导教师

(2012年11月)

计算机学院计科专业5班学号:

姓名:

协作者:

________教师评定:

 

实验__一__题目__数据库及基本表的建立_

实验__二__题目__设计数据完整性__

实验__三__题目__查询数据库__

实验__四__题目创建和使用视图、索引、存储过程

 

计算机学院计科专业5班学号:

姓名:

协作者:

________教师评定:

实验题目一、数据库及基本表的建立

一、实验目的

1、掌握SQLSERVER的查询分析器和企业管理器的使用;

2、掌握创建数据库和表的操作;

二、实验内容和要求

1、分别使用SQL语句、企业管理器(EnterpriseManager)创建数据库;

2、使用SQL语句、企业管理器(EnterpriseManager)创建数据库表;

三、实验主要仪器设备和材料

1.计算机及操作系统:

PC机,Windows2000/xp;

2.数据库管理系统:

SQLsever2000/2003/2005;

四、实验方法、步骤及结果测试

1、创建数据库:

确定数据库名称;数据库用于学生管理,命名为SC

确定数据库的位置;要求:

数据文件和日志文件分别存储在E盘自己的目录下。

确定数据库的大小;根据实际的数据量确定数据文件的初始大小为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,

FILENAME='E:

\SC.ldf',

SIZE=2MB,

FILEGROWTH=1MB

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语句

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,

dnochar(6),

tech_titlechar(10),

foreignkey(dno)referencesdepartment(dno));

createtableTEACHER_COURSE

(tcidsmallintprimarykey,

t_nochar(8),

spnochar(8),

class_nochar(4),

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条记录。

录入时注意体会外键约束。

实现代码及截图:

查询分析器执行情况:

SQL语句及执行结果显示

USESC

GO

INSERTINTODEPARTMENTVALUES('01','计算机学院','张三')

INSERTINTODEPARTMENTVALUES('02','机电工程学院','李四')

INSERTINTODEPARTMENTVALUES('03','外国语学院','王武')

INSERTINTODEPARTMENTVALUES('04','自动化学院','魏唯')

INSERTINTODEPARTMENTVALUES('05','应用数学学院','李刚')

INSERTINTOTEACHERVALUES('js01','张杰','男','1980-05-25','01',NULL)

INSERTINTOTEACHERVALUES('js02','孙羊','女','1985-08-15','02',NULL)

INSERTINTOTEACHERVALUES('js03','韩寒','男','1987-08-15','03',NULL)

INSERTINTOTEACHERVALUES('js04','胡玲','女','1985-07-01','04',NULL)

INSERTINTOTEACHERVALUES('js05','房名','男','1988-11-11','05',NULL)

USESC

GO

INSERTINTOSPECIALITYVALUES('zy01','01','计算机科学与技术')

INSERTINTOSPECIALITYVALUES('zy02','02','包装工程')

INSERTINTOSPECIALITYVALUES('zy03','01','网络工程')

INSERTINTOSPECIALITYVALUES('zy04','02','车辆工程')

INSERTINTOSPECIALITYVALUES('zy05','03','日语专业')

INSERTINTOSPECIALITYVALUES('zy06','04','电力专业')

INSERTINTOSPECIALITYVALUES('zy07','05','离散数学')

USESC

GO

INSERTINTOSTUDENTVALUES('xh01','黄明','男','1991-05-01','01','zy01','0902')

INSERTINTOSTUDENTVALUES('xh02','王翰','男','1992-07-11','04','zy06',NULL)

INSERTINTOSTUDENTVALUES('xh03','李南','女','1991-04-01','01','zy03','0901')

INSERTINTOSTUDENTVALUES('xh04','柏琳','女','1992-04-15','02','zy04',NULL)

INSERTINTOSTUDENTVALUES('xh05','邓丽玲','女','1993-03-25','04','zy06',NULL)

INSERTINTOSTUDENTVALUES('xh06','飞月','女','1991-01-03','03','zy05','0905')

INSERTINTOSTUDENTVALUES('xh07','韩青','男','1994-03-11','05','zy07',NULL)

INSERTINTOSTUDENTVALUES('xh08','石头','女','1989-08-25','03','zy05','0902')

USESC

GO

INSERTINTOCOURSEVALUES('kc01','数据库','zy01',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc02','高等数学','zy01',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc03','C++编程','zy02',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc04','专业英语','zy03',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc05','工程绘图','zy04',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc06','日语基础','zy05',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc07','电力系统','zy06',NULL,NULL,NULL,NULL,NULL)

INSERTINTOCOURSEVALUES('kc08','离散数学','zy07',NULL,NULL,NULL,NULL,NULL)

USESC

GO

INSERTINTOCLASSVALUES('zy01','0902','孙俪')

INSERTINTOCLASSVALUES('zy02','0901','玛丽')

INSERTINTOCLASSVALUES('zy03','0901','王红')

INSERTINTOCLASSVALUES('zy04','1003','邓军')

INSERTINTOCLASSVALUES('zy05','0905','张雪军')

INSERTINTOCLASSVALUES('zy06','0804','张威')

INSERTINTOCLASSVALUES('zy07','0904','华伟')

USESC

GO

INSERTINTOTEACHER_COURSEVALUES(01,'js01','zy01','0902','kc03',NULL,NULL)

INSERTINTOTEACHER_COURSEVALUES(02,'js02','zy04','1003','kc05',NULL,NULL)

INSERTINTOTEACHER_COURSEVALUES(03,'js03','zy05','0905','kc06',NULL,NULL)

INSERTINTOTEACHER_COURSEVALUES(04,'js04','zy06','0804','kc07',NULL,NULL)

INSERTINTOTEACHER_COURSEVALUES(05,'js05','zy07','0904','kc08',NULL,NULL)

USESC

GO

INSERTINTOSTUDENT_COURSEVALUES('xh01',3,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh02',7,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh03',8,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh04',2,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh05',5,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh06',6,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh07',8,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh08',4,NULL)

实验结果截图显示(插入数据的表格)

共8组(共8个表)

(2)、用UPDATE语句更改student表中数据;

实现代码:

student表更改前的内容截图显示查询分析

SQL语句及执行结果显示

USESC

GO

UPDATESTUDENTSETclass_no='0804'WHEREs_no='xh02'

UPDATESTUDENTSETclass_no='1003'WHEREs_no='xh04'

UPDATESTUDENTSETclass_no='0804'WHEREs_no='xh05'

UPDATESTUDENTSETclass_no='0904'WHEREs_no='xh07'

UPDATESTUDENTSETclass_no='0905'WHEREs_no='xh08'

student表更改后的内容截图显示

执行前

执行后

(3)、用DELETE语句删除student表中数据;

实现代码:

student表更改前的内容截图显示查询分析

SQL语句及执行结果显示

事先插入了一条记录如右图所示

删除记录代码:

DELETEFROMSTUDENTWHEREs_no='xh09'

student表更改后的内容截图显示

五、实验中出现的问题及解决方案

问题:

1.开始创建表的过程中,没注意创建表的先后顺序,导致创建表失败。

解决方案:

先创建那些不需要外键依赖的表,然后再创建含有外键的表。

3.插入数据时,当有错误发生时,改正SQL语句后,再次插入会出现重复插入的错误。

解决方案:

一个,一个表的插入,而不是把所有的表一起插入即可,这样可以减少插入的错误。

4.创建数据库时,以为是创建模式,导致失败!

解决方案:

写创建数据库的SQL语句,而不是创建模式的语句。

 

六、思考题

1、说明数据库中的表和数据文件的关系。

答:

每个数据库有且仅有一个主数据文件,它是用于存储数据表,索引,视图,存储过程等数据库对象和数据,它的扩展名为.mdf.

 

2、数据库中的日志文件能否单独修改?

答:

不能,因为日志文件记录了对数据库所做的所有修改,若单独修改了,当恢复数据库时就会出现错误,无法把数据库恢复到原样了。

 

计算机学院计科专业5班学号:

姓名:

协作者:

__________教师评定:

实验题目二、设计数据完整性

一、实验目的

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),

dnochar(6),

spnochar(8),

class_nochar(4),

sbirthdaySmalldatetime,

foreignkey(spno)referencesspeciality(spno),

foreignkey(dno)referencesdepartment(dno)

);

course表

createtableCourse

(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,

dnochar(6),

tech_titlechar(10),

foreignkey(dno)referencesdepartment(dno));

teacher_course表

createtableteac

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

当前位置:首页 > 解决方案 > 学习计划

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

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