数据库原理实验报告Word文档格式.docx

上传人:b****4 文档编号:8252489 上传时间:2023-05-10 格式:DOCX 页数:20 大小:224.19KB
下载 相关 举报
数据库原理实验报告Word文档格式.docx_第1页
第1页 / 共20页
数据库原理实验报告Word文档格式.docx_第2页
第2页 / 共20页
数据库原理实验报告Word文档格式.docx_第3页
第3页 / 共20页
数据库原理实验报告Word文档格式.docx_第4页
第4页 / 共20页
数据库原理实验报告Word文档格式.docx_第5页
第5页 / 共20页
数据库原理实验报告Word文档格式.docx_第6页
第6页 / 共20页
数据库原理实验报告Word文档格式.docx_第7页
第7页 / 共20页
数据库原理实验报告Word文档格式.docx_第8页
第8页 / 共20页
数据库原理实验报告Word文档格式.docx_第9页
第9页 / 共20页
数据库原理实验报告Word文档格式.docx_第10页
第10页 / 共20页
数据库原理实验报告Word文档格式.docx_第11页
第11页 / 共20页
数据库原理实验报告Word文档格式.docx_第12页
第12页 / 共20页
数据库原理实验报告Word文档格式.docx_第13页
第13页 / 共20页
数据库原理实验报告Word文档格式.docx_第14页
第14页 / 共20页
数据库原理实验报告Word文档格式.docx_第15页
第15页 / 共20页
数据库原理实验报告Word文档格式.docx_第16页
第16页 / 共20页
数据库原理实验报告Word文档格式.docx_第17页
第17页 / 共20页
数据库原理实验报告Word文档格式.docx_第18页
第18页 / 共20页
数据库原理实验报告Word文档格式.docx_第19页
第19页 / 共20页
数据库原理实验报告Word文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据库原理实验报告Word文档格式.docx

《数据库原理实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

数据库原理实验报告Word文档格式.docx

实验二

实验一:

SQL数据定义功能

一、实验内容及要求

1.使用SQL语句建立学生管理系统相关的表,同时完善各表的相关完整性约束。

其中带有下划线的为主码

学院(学院代码,学院名称)

学生(学号,姓名,性别,学院代码),学院代码为外码

教师(教师号,教师姓名,学院代码),学院代码为外码

课程(课程号,课程名,学时)

学习(学号,课程号,成绩),学号为外码,课程号为外码

开课(教师号,课程号),教师号为外码,课程号为外码

2.对各表进行增加、删除、修改属性操作

添加操作:

对学生表添加出生日期字段,和家庭地址字段,教师表增加性别字段,出生日期字段,对课程表增加先修课程字段,并且先修课程为本关系外码。

删除操作:

删除学生表家庭地址字段,删除教师表出生日期字段

修改操作:

修改课程表中先修课程字段名称为先修课程号,修改学生姓名字段,该字段值不允许取空值

3.建立索引

为学生表在姓名上建立名为sname-index的索引,在学院代码字段上建立名为dept-index,降序。

4.删除表操作

删除上述表,重新执行查询再次建立各表

5.利用ACCESS2003/2007完善各表的数据内容

二、实验目的

熟练掌握SQL的各种数据定义功能,包括

1.定义表的功能,包括主码和外码的定义

2.修改表的定义功能,包括增加属性,删除属性,修改属性类型

4.建立和删除索引操作,理解索引的作用

5.删除表功能

三、实验步骤及运行结果

1.使用SQL语句建立学生管理系统相关的表

(1)创建学院表

实验步骤:

查询—>

在设计视图中创建查询—>

选择SQL视图,输入如下SQL语句:

CREATETABLE学院

(学院代码CHAR(8)NOTNULLUNIQUE,

学院名称CHAR(15),

PRIMARYKEY(学院代码));

运行结果:

(2)创建学生表

CREATETABLE学生

(学号CHAR(8),

姓名CHAR(10),

性别CHAR(8),

学院代码CHAR(10),

PRIMARYKEY(学号),

FOREIGNKEY(学院代码)REFERENCES学院(学院代码));

(3)创建教师表

CREATETABLE教师

(教师号CHAR(8),

教师姓名CHAR(8),

学院代码CHAR(10),

PRIMARYKEY(教师号),

FOREIGNKEY(学院代码)REFERENCES学院(学院代码));

(4)创建课程表

CREATETABLE课程

(课程号CHAR(8)NOTNULLUNIQUE,

课程名CHAR(15),

学时SMALLINT,

PRIMARYKEY(课程号));

(5)创建学习表

CREATETABLE学习

(学号CHAR(8),

课程号CHAR(8),

成绩SMALLINT,

PRIMARYKEY(学号),

FOREIGNKEY(学号)REFERENCES学生(学号),

FOREIGNKEY(课程号)REFERENCES课程(课程号));

(6)创建开课表

CREATETABLE开课

(教师号CHAR(8),

PRIMARYKEY(教师号,课程号),

FOREIGNKEY(教师号)REFERENCES教师(教师号),

对学生表添加出生日期字段,和家庭地址字段:

选择SQL视图,分别输入如下SQL语句:

ALTERTABLE学生ADD出生日期DATETIME;

ALTERTABLE学生ADD家庭地址CHAR(20);

教师表增加性别字段,出生日期字段:

ALTERTABLE教师ADD出生日期DATETIME;

ALTERTABLE教师ADD性别CHAR

(2);

对课程表增加先修课程字段:

ALTERTABLE课程ADD先修课程CHAR(20);

删除学生表家庭地址字段:

ALTERTABLE学生DROPCOLUMN家庭地址;

删除教师表出生日期字段:

ALTERTABLE教师DROPCOLUMN出生日期;

修改学生姓名字段,该字段值不允许取空值

ALTERTABLE学生ALTERCOLUMN姓名CHAR(8)NOTNULL;

为学生表在姓名上建立名为sname-index的索引在学院代码字段上建立名为dept-index的索引,降序。

CREATEUNIQUEINDEXsname_indexON学生(姓名DESC)

CREATEUNIQUEINDEXdept_indexON学院(学院代码DESC);

DROPTABLE学院CASCADE

DROPTABLE学生CASCADE

DROPTABLE教师CASCADE

DROPTABLE学习CASCADE

DROPTABLE开课CASCADE

DROPTABLE课程CASCADE

各表被删除。

重新执行建立表的语句,就能从新建立各表。

四、实验体会

通过本次实验,我掌握了SQL数据定义功能包括使用SQL语句建立各表以及主码和外码的定义等,熟练了对各表进行增加、删除、修改属性等操作以及对表进行建立和删除删除表等功能。

实验二:

练习SQL数据操纵功能

使用SQL语句进行各种查询

1、熟练掌握单表查询,包括

(1)选择表中的若干列(投影)

(2)选择表中的若干元组(选择)(3)对查询结果排序(4)使用集函数(5)对查询结果分组

2、熟练掌握复杂查询,包括1)等值与非等值连接查询2)自身连接:

一个表与其自己进行连接。

3)外连接查询4)复合条件连接:

WHERE子句中可以有多个连接条件。

3、熟练掌握嵌套查询,包括1)带有IN谓词的子查询2)带有比较运算符的子查询(子查询一定要跟在比较符之后)3)带有ANY或ALL谓词的子查询(使用ANY和ALL时必须同时使用比较运算符)4)带有EXISTS谓词的子查询(查询结果不返回任何数据,只产生逻辑“真”或“假”)

4、使用SQL和ACCESS结合完成一些复杂的统计

1.求选修了老师“王刚”开课课程且成绩在90分以上的学生姓名、课程名称和成绩;

(姓名,课程名,成绩)

SELECT姓名,课程名,成绩

FROM学生,课程,学习,教师,开课

WHERE教师姓名='

王刚'

AND成绩>

90

AND学生.学号=学习.学号

AND学习.课程号=课程.课程号

AND教师.教师号=开课.教师号

AND开课.课程号=课程.课程号;

2.求选修了“王刚”老师所授全部课程的学生姓名和学院名称;

(姓名,学院名称)

SELECT姓名,学院名称

FROM学生,学院

WHERENOTEXISTS

(SELECT*

FROM开课,教师

WHERE教师.教师号=开课.教师号

AND教师.教师姓名='

ANDNOTEXISTS

FROM学习

WHERE学生.学号=学习.学号

AND学习.课程号=开课.课程号

AND学生.学院代码=学院.学院代码));

3.求没有选修课程“软件工程”的学生学号和姓名;

(学生学号,姓名)

SELECT学号,姓名

FROM学生

(SELECT*

FROM学习,课程

WHERE课程名='

软件工程'

AND学生.学号=学习.学号

AND课程.课程号=学习.课程号);

4.求至少选修了两门课程的学生学号;

(学号)

SELECT学号

FROM学习

GROUPBY学号

HAVINGCOUNT(课程号)>

=2;

5.求课程“经济学”不及格学生姓名和考试成绩;

(姓名,成绩)

SELECT姓名,成绩

FROM课程,学习,学生

WHERE课程.课程名='

经济学'

AND成绩<

60

AND学习.学号=学生.学号

AND学习.课程号=课程.课程号;

6.求至少选修了与学号“T06”同学选修的课程相同的学生学号;

SELECTA.学号

FROM学习ASA,学习ASB

WHEREA.课程号=B.课程号

ANDB.学号='

T06'

ANDA.学号<

>

'

GROUPBYA.学号

HAVINGCOUNT(A.课程号)>

=

(SELECTCOUNT(课程号)

WHERE学号='

);

7.求至少选修了“C3,C4”两门课程的学生姓名和学院名称;

WHERE学生.学院代码=学院.学院代码

FROM学习ASA

WHERE(课程号='

C3'

OR课程号='

C4'

(SELECT*

FROM学习ASB

WHERE学生.学号=B.学号

ANDA.课程号=B.课程号));

8.查询“王石”同学没有选修的课程号和课程名;

(课程号,课程名)

SELECT课程号,课程名

FROM课程

FROM学生,学习

WHERE姓名='

王石'

AND学习.课程号=课程.课程号);

9.查询没有被任何学生选修的课程的课程号;

(课程号)

SELECT课程号

WHERE学习.课程号=课程.课程号);

10.求选修了全部课程的学生姓名;

(姓名)

SELECT姓名

FROM课程

WHERENOTEXISTS

WHERE学习.学号=学生.学号

AND学习.课程号=课程.课程号));

11.查询各学院课程“经济学”的平均分,并按照成绩从高到低的顺序排列;

(学院名称,平均分)

SELECT学院名称,AVG(成绩)AS平均分

FROM学习,课程,学生,学院

WHERE学习.课程号=课程.课程号

AND课程名='

AND学生.学号=学习.学号

AND学生.学院代码=学院.学院代码

GROUPBY学院名称

ORDERBYAVG(成绩)DESC;

12.查询选修课程“经济学”的学生姓名和所在院系,结果按各院系排列,同时成绩从高到低排列;

(姓名,学院名称,成绩)

SELECT姓名,学院名称,成绩

FROM学生,学习,学院,课程

WHERE课程名='

ORDERBY学院名称,成绩DESC;

13.求学时在30-45之间(含30和45)的课程的课程号和课程名称及授课教师;

(课程号,课程名,教师姓名)

SELECT课程号,课程名,教师姓名

FROM课程,教师

WHEREEXISTS

FROM开课

WHERE学时BETWEEN30AND45

AND课程.课程号=开课.课程号

AND开课.教师号=教师.教师号);

14.检索选修课程“经济学”的最高分学生的姓名;

FROM学生,学习

WHERE成绩=

(SELECTMAX(成绩)

WHERE课程.课程名='

AND学习.课程号=课程.课程号)

AND学生.学号=学习.学号;

15.查询选课人数超过5人的课程的课程号及课程名;

(课程号,课程名)

SELECT课程名,课程号

WHERE课程号IN

(SELECT课程号

GROUPBY课程号

HAVINGCOUNT(学号)>

=5);

通过本次实验,我熟练掌握了使用SQL语句进行各种查询的操作方法;

使用集函数查询、对查询结果进行分组排序;

熟悉了复杂查询对表的连接、使用嵌套查询中带有IN谓词的子查询以及带有EXISTS谓词的子查询等。

我也明白了只有不断练习才能掌握好数据库。

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2