广东工业大学广东数据库原理实验报告.doc

上传人:zf 文档编号:30808654 上传时间:2024-01-30 格式:DOC 页数:41 大小:3.05MB
下载 相关 举报
广东工业大学广东数据库原理实验报告.doc_第1页
第1页 / 共41页
广东工业大学广东数据库原理实验报告.doc_第2页
第2页 / 共41页
广东工业大学广东数据库原理实验报告.doc_第3页
第3页 / 共41页
广东工业大学广东数据库原理实验报告.doc_第4页
第4页 / 共41页
广东工业大学广东数据库原理实验报告.doc_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

广东工业大学广东数据库原理实验报告.doc

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

广东工业大学广东数据库原理实验报告.doc

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

一、实验目的

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

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

二、实验内容和要求

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

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

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

1.计算机及操作系统:

PC机,Windows2000/xp;

2.数据库管理系统:

SQLsever2000/2005;

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

创建一个教学管理数据库SC,其描述的信息有:

学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。

创建:

student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student_course表(学生选课成绩表)、teacher_course表(教师上课课表)等。

题目1、创建数据库:

实现代码及截图:

查询分析器执行情况:

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、创建基本表

创建各表的实现代码及截图:

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

查询分析器执行情况:

SQL语句及执行结果显示

CREATETABLEdepartment

dnoCHAR(6)PRIMARYKEY,

dept_nameCHAR(20)NOTNULL,

headerCHAR(8)

);

执行结果:

命令已成功完成。

CREATETABLEspeciality

spnoCHAR(8)PRIMARYKEY,

dnoCHAR(6)NOTNULL,

FOREIGNKEY(dno)REFERENCESdepartment(dno),

spnameCHAR(20)NOTNULL

);

执行结果:

命令已成功完成。

CREATETABLEstudent

s_noCHAR(8)PRIMARYKEY,

snameCHAR(8)NOTNULL,

sexCHAR

(2),

sbirthdaySmallint,

dnoCHAR(6),

FOREIGNKEY(dno)REFERENCESdepartment(dno),

spnoCHAR(8),

FOREIGNKEY(spno)REFERENCESspeciality(spno),

class_noCHAR(4)

);

执行结果:

命令已成功完成。

CREATETABLEcourse

cnoCHAR(10)PRIMARYKEY,

cnameCHAR(20)NOTNULL,

spnoCHAR(8),

FOREIGNKEY(spno)REFERENCESspeciality(spno),

ctnotinyint,

lecturetinyint,

experimenttinyint,

semestertinyint,

credittinyint

);

执行结果:

命令已成功完成。

CREATETABLEstudent_course

s_noCHAR(8),

CONSTRAINTHLMFOREIGNKEY(s_no)REFERENCESstudent(s_no),

tcidsmallint,

PRIMARYKEY(s_no,tcid),

scoretinyint

);

执行结果:

命令已成功完成。

CREATETABLEteacher

t_noCHAR(8)PRIMARYKEY,

t_nameCHAR(8)NOTNULL,

t_sexCHAR

(2),

t_birthdaySmallint,

dnoCHAR(6),

FOREIGNKEY(dno)REFERENCESdepartment(dno),

tech_titleCHAR(10)

);

执行结果:

命令已成功完成。

CREATETABLEteacher_course

tcidsmallintPRIMARYKEY,

t_noCHAR(8),

FOREIGNKEY(t_no)REFERENCESteacher(t_no),

spnoCHAR(8),

FOREIGNKEY(spno)REFERENCESspeciality(spno),

class_noCHAR(4),

cnoCHAR(10)NOTNULL,

FOREIGNKEY(cno)REFERENCEScourse(cno),

semesterCHAR(6),

schoolyearCHAR(10)

);

执行结果:

命令已成功完成。

CREATETABLEclass

spnoCHAR(8),

FOREIGNKEY(spno)REFERENCESspeciality(spno),

class_noCHAR(4),

PRIMARYKEY(spno,class_no),

headerCHAR(8)

);

实验结果截图显示

Department表:

Speciality表:

Student表:

Course表:

student_course表:

Teacher表:

teacher_course表:

Class表:

题目3、查看各数据表之间的关系,生成数据库关系图。

生成数据库关系图截图显示

题目4、利用查询分析器修改上述各表。

(1)、用INSERT语句向各个表中插入数据录入5条记录。

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

实现代码及截图:

查询分析器执行情况:

SQL语句及执行结果显示

向DEPARTMENT表添加5条记录

USESC

GO

INSERTINTODEPARTMENTVALUES('01','计算机学院','小明')

INSERTINTODEPARTMENTVALUES('02','信息工程学院','小智')

INSERTINTODEPARTMENTVALUES('03','外国语学院','小天')

INSERTINTODEPARTMENTVALUES('04','艺术学院','小唯')

INSERTINTODEPARTMENTVALUES('05','数学学院','小野')

向TEACHER表添加5条记录

INSERTINTOTEACHERVALUES('js01','刘德华','男','1978-02-25','01',NULL);

INSERTINTOTEACHERVALUES('js02','黎明','男','1982-05-15','02',NULL);

INSERTINTOTEACHERVALUES('js03','梅艳芳','女','1987-04-07','03',NULL);

INSERTINTOTEACHERVALUES('js04','邓丽君','女','1985-07-08','04',NULL);

INSERTINTOTEACHERVALUES('js05','张学友','男','1984-11-23','05',NULL);

向SPECIALITY表添加5条记录

USESC

GO

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

INSERTINTOSPECIALITYVALUES('zy02','01','软件工程');

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

INSERTINTOSPECIALITYVALUES('zy04','02','操作系统');

INSERTINTOSPECIALITYVALUES('zy05','03','大学英语');

INSERTINTOSPECIALITYVALUES('zy06','04','大学物理');

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

向STUDENT表添加5条记录

USESC

GO

INSERTINTOSTUDENTVALUES('xh01','林俊杰','男','1991-05-01','01','zy01','0902');

INSERTINTOSTUDENTVALUES('xh02','陈奕迅','女','1991-07-10','04','zy06',NULL);

INSERTINTOSTUDENTVALUES('xh03','柯南','男','1991-04-08','01','zy03','0901');

INSERTINTOSTUDENTVALUES('xh04','小纯一郎','男','1991-07-15','02','zy04',NULL);

INSERTINTOSTUDENTVALUES('xh05','娜美','女','1994-03-26','04','zy06',NULL);

INSERTINTOSTUDENTVALUES('xh06','周杰伦','男','1991-07-03','03','zy05','0905');

INSERTINTOSTUDENTVALUES('xh07','周迅','女','1986-03-11','05','zy07',NULL);

INSERTINTOSTUDENTVALUES('xh08','小嶋阳菜','女','1988-04-19','03','zy05','0902');向COURSE表添加5条记录

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)

向CLASS表添加5条记录

USESC

GO

INSERTINTOCLASSVALUES('zy01','0902','小东');

INSERTINTOCLASSVALUES('zy02','0901','小莉');

INSERTINTOCLASSVALUES('zy03','0901','小红');

INSERTINTOCLASSVALUES('zy04','1003','小周');

INSERTINTOCLASSVALUES('zy05','0905','小陈');

INSERTINTOCLASSVALUES('zy06','0804','小天');

INSERTINTOCLASSVALUES('zy07','0904','小伟');向TEACHER_COURSE表添加5条记录

USESC

GO

INSERTINTOTEACHER_COURSEVALUES(01,'js01','zy01','0902','kc01',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)

向STUDENT_COURSE表添加5条记录

USESC

GO

INSERTINTOSTUDENT_COURSEVALUES('xh01',1,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh02',4,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh03',6,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh04',2,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh05',4,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh06',3,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh07',5,NULL)

INSERTINTOSTUDENT_COURSEVALUES('xh08',3,NULL)

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

共8组(共8个表)

(2)、用UPDATE语句更改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表中数据;

实现代码:

查询分析器执行情况:

SQL语句及执行结果显示

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

删除记录代码:

DELETEFROMSTUDENTWHEREs_no='xh09'

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

删除后

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

插入数据的时候各种约束条件要很仔细的看清楚然后才可以进行数据的插入

六、思考题

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

答:

表(table)为数据库中数据存储的基本单位,其数据按行、列存储。

每个表具有一表名和列的集合。

每一列有一个列名、数据类型、宽度或精度、比例。

一行是对应单个记录的列信息的集合。

数据文件存放着在数据库中存储的数据,且一个数据库只有一个数据文件。

表作为数据库中的数据存储单位,存储在数据文件中。

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

答:

可以。

把对数据的修改写到数据库中和把表示这个修改的日子记录写到日志文件中是两个不同的操作。

有可能在这两个操作之间发生某种故障,即这两个操作只完成了其中一个。

所以,可以单独修改数据库中的日志文件而不一定会修改数据。

实验二、设计数据完整性

一、实验目的

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

snamechar(8)notnull,

sexchar

(2),

sbirthdaysmalldatetime,

dnochar(6),

spnochar(8),

class_nochar(4),

primarykey(s_no)

course表

createtablecourse

cnochar(10),

cnamechar(20)notnull,

spnochar(8),

ctnotinyint,

lecturetinyint,

experimenttinyint,

semestertinyint,

credittinyint,

primarykey(cno)

teacher表

createtableteacher

t_nochar(8),

t_namechar(8)notnull,

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

当前位置:首页 > 高等教育 > 农学

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

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