数据库实验报告.docx

上传人:b****6 文档编号:4301737 上传时间:2022-11-29 格式:DOCX 页数:19 大小:2.43MB
下载 相关 举报
数据库实验报告.docx_第1页
第1页 / 共19页
数据库实验报告.docx_第2页
第2页 / 共19页
数据库实验报告.docx_第3页
第3页 / 共19页
数据库实验报告.docx_第4页
第4页 / 共19页
数据库实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据库实验报告.docx

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

数据库实验报告.docx

数据库实验报告

实验目的:

1、掌握创建数据库的方法,学会用企业管理器和sql语言两种方法新建表;

2、掌握用企业管理器和sql语言两种方法创建约束条件;

3、掌握数据库中表的维护方法(包括新建表、删除表、在表内增加列等);

4、掌握三种数据的导入方法并通过一些操作观察约束条件的效果;

5、掌握基本的sql语言。

一、实验环境:

本实验是在WindowsXP操作系统下的MicrosoftSQLsever2000软件中进行的。

二、主要设计思想与实验步骤:

1、设计思想:

通过创建一个关于教材、老师、学生、课程的数据库并创建这些关系的表,并基于这些表的创建约束条件、导入数据、修改数据等操作熟悉数据库的创建与维护。

2、设计的实验数据表格:

3、实验步骤:

首先在企业管理器中创建数据库并命名;

在该数据库中创建8张表(分别用企业管理器和SQL语言创建,并确定各列属性约束);

向表中导入excel的数据;

基于已创建的数据库和表进行一系列的维护工作,熟悉SQL语句和约束的效果。

三、实验结果:

1、创建表:

用企业管理器创建:

步骤:

先打开创建的数据库(创建了名为“教材—学生—老师—课程”的数据库),点击该数据库下拉列表中的表,并在右侧表中单击右键选择”新建表”选项在打开的窗口中对应填上所建表的每一列的表属性名,并可选择数据类型以及是否允许空等。

新建表的列属性截图如下左,建好的表的列属性如下右:

用SQL语言创建表:

所写SQL语句如下:

1、创建表5department

createtableB_5department(

department_idvarchar(50)primarykeyclustered,

department_namevarchar(50),

department_headervarchar(50),

teacher_numint)

2、创建表6student表:

createtableB_6student(

student_idvarchar(50)primarykeyclustered,

student_namevarchar(50)NOTNULL,

sexint,

birthsmalldatetime,

class_idvarchar(50),

entrance_datesmalldatetime,

home_addrvarchar(50),

constraintc1foreignkey(class_id)referencesB_3class(class_id))

3、创建表7student_course表:

createtableB_7student_course(

course_idvarchar(50),

student_idvarchar(50),

gradeint,

creditint,

semestersmallint,

school_yearvarchar(20),

constraintc2primarykey(course_id,student_id),

constraintc3foreignkey(course_id)referencesB_2course(course_id),

constraintc4foreignkey(student_id)referencesB_6student(student_id))

4、创建表8teacher表:

createtableB_8teacher(

teacher_idvarchar(50)primarykey,

teacher_namevarchar(50)notnull,

sexsmallint,

birthdatetime,

department_idvarchar(50),

professionvarchar(50),

telephonedecimal,

home_addrvarchar(50),

postalcodeint,

constraintc5foreignkey(department_id)referencesB_5department(department_id))

5、创建表9teacher_course_class:

createtableB_9teacher_course_class(

teacher_idvarchar(50),

course_idvarchar(50),

class_idvarchar(50),

semestersmallintnotnull,

school_yearvarchar(20),

course_scheduleint,

course_classroomvarchar(50),

book_idvarchar(50),

constraintc6foreignkey(book_id)referencesB_1book(book_id),

constraintc7foreignkey(teacher_id)referencesB_8teacher(teacher_id),

constraintc8foreignkey(course_id)referencesB_2course(course_id),

constraintc9foreignkey(class_id)referencesB_3class(class_id),

constraintc10primarykey(teacher_id,course_id,class_id))

实验结果:

创建好的表截图如下:

在创建表时已经定义了外键并定义了部分属性的约束条件。

2、导入数据:

用Transact-SQL语句、数据导入、企业管理器输入的方法对所给定的9张表的数据输入到数据库中。

自行决定每张表的数据导入办法,但每种方法各征对三张表。

企业管理器导入数据方法:

采用的是直接利用excel导入,具体操作为,在需要导入数据的表点击右键并选择“所有任务”—“导入数据”—之后过程见图示:

选择如上后,单击下一步;

单击下一步:

下一步:

(选中sheet1并选择目的表,可单击预览查看数据是否正确)

如图所示数据成功导入。

直接数据导入:

在企业管理器中,鼠标选中对应表单击右键,选择“打开表”,“返回所有行”,则可打开表并可一条一条键入数据。

用SQl语言导入数据:

insert

intoTABLE1(teacher_id,course_id,class_id,semester,school_year,course_schedule,course_classroom,book_id)

values('dep01_001','dep01_s001','g99101',1,'1999/2000',110310510,'教学楼201','dep01_s001_01')

3、对Course表建立如下约束:

course_name非空,credit取值在1-6之间(并通过修改credit的值和插入course_name为空的行,观察DBS反应)

Sql语句如下:

credit取值在1-6之间:

altertableB_2course

addconstraintB1check(creditbetween1and6)

course_name非空:

(可直接用企业管理器修改,右键单击该表并选择“设计表”,在需要修改的列中设置非空即可)

实验结果及验证:

用Transact-SQL修改Course表中credit为5的记录,将其credit改为7,credit小于4的改为2,看运行的结果

Sql语句如下:

、updateB_2course

setcredit=7

wherecredit=5;

运行结果如下:

报错了,原因是与约束B1冲突。

、updateB_2course

setcredit=2

wherecredit<4;运行结果:

执行成功,修改了一行的credit值。

执行操作和执行后表如下:

由图可见,倒数第二行原credit值为3改为了2.

由以上操作及执行结果可见所设约束B1的效果。

用Transact-SQL向Course表中插入一条记录,course_name为空,看运行的结果

course插入值时name未插入,编译通过,图如下:

course中插入行时未定义name,执行结果报错,截图如下:

4、修改Student和teacher表,分别增加一列用于存储学生和教师的E_mail地址:

Sql语句如下:

altertableB_6student

addE_mailvarchar(50)

altertableB_8teacher

addE_mailvarchar(50)

实验结果如下:

(student表中增加一列email,由截图可见该列所有值全为null)

(teacher表中增加一列email,该列所有值全为null)

5、创建Course2表,与course表结构一样,删除course2表。

分别用企业管理器和Transact-SQL语句完成。

步骤:

用企业管理器:

先打开“教材—学生—老师—课程”的数据库,点击该数据库下拉列表中的表,并在右侧表中单击右键选择新建表选项在打开的窗口中对应填上所建表的每一列的表属性名,并可选择数据类型以及是否允许空等。

删除时直接在该表上点右键,选择删除即可。

用Transact-SQL语句:

createtableB_2course2(

course_idvarchar(50)primarykeyclustered,

course_namevarchar(50),

book_idvarchar(50),

total_periorint,

week_periorint,

creditint)

删除表:

droptableB_2course2

实验结果如下:

(第三行为新增加的表course2)

6、删除一条学生记录,看运行结果,对运行结果进行分析。

SQL语句:

delete

fromB_6student

wherestudent_id='g9940201';

查询分析器运行结果及分析:

由左图结果可知,改命令不能执行,分析其原因在于该表与其他表相关联,其主键student_id是表B_7student_course的外键student_id的参照外键,这个约束关系C4约束了数据库不执行删除学生记录的命令。

7、用Transact-SQL完成将编号为dep04_b001的课程的选修信息插入到一个新的选课信息表中。

步骤:

新建一个表并命名为“new_course_stu”。

用SQL语言查找编号为dep04_b001的课程信息并导入新建的表。

SQL语句如下:

insert

intonew_course_stu

select*

fromB_7student_course

wherecourse_id='dep04_b001';

执行结果如下:

(可见该表中新增的数据course_id均为dep04_b001)

8、用Transact-SQL完成删除单片机原理课程的选课信息,分析运行结果。

SQL语句如下:

(在查询分析器中输入以下语言,先点击“分析查询”在点击“执行查询”即可完成操作)

delete

fromB_7student_course

wherecourse_id=(selectcourse_id

fromB_2course

wherecourse_name='单片机原理');

运行结果如下:

(见下图)

结果分析:

执行过程是现在B_2course中查找course_name为“单片机原理”对应的course_id,返回值dep04_s003,再在表B_7student_course中查找course_id为“dep04_s003”的数据行并删除该行。

可见下图中无course_id为“dep04_s003”的数据了,可见执行成功。

四、实验总结:

通过本实验熟悉了MicrosoftSQLsever2000软件并掌握了Transact-SQL语言,对数据库这门课程有了更深刻的理解,在实际应用软件和语言时也发现了自己学习的不足之处,通过多次尝试写语句和分析结果以及报错原因等锻炼了自己纠错检错的能力。

本实验中出现的问题如下:

1、导入数据时:

原先设置C3的外键约束,以为book2和book7中的course_id是主键外键关系,但是老师给的数据中book2中的course_id与book7中的不匹配,盲目的设置的外键约束后,在导入数据时,系统提示不匹配,经过仔细检查后,取消了C3这个约束(直接在企业管理器的表book7的列属性关系中删除了该约束);

导入book9的数据时,机器发现主键有重复,(原主键为teacher_id,course_id,class_id)经检查后,发现有两行数据的这三个值均相同,所以增加了主键(book_id)

2、语句使用不熟练,在查询分析器写SQL语言时会报错,解决办法是分析出错原因并通过查询资料修改错误。

3、在查询分析器中新建表但是看到企业管理器中没有显示新表,于是又在查询分析器中执行分析一次,但是会报错,错误原因是已存在该表了。

分析后发现,企业管理器需要刷新才可以显示新增内容。

 

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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