《数据库系统》实验大纲 ver20Word格式.docx

上传人:b****6 文档编号:20972137 上传时间:2023-01-26 格式:DOCX 页数:29 大小:668.88KB
下载 相关 举报
《数据库系统》实验大纲 ver20Word格式.docx_第1页
第1页 / 共29页
《数据库系统》实验大纲 ver20Word格式.docx_第2页
第2页 / 共29页
《数据库系统》实验大纲 ver20Word格式.docx_第3页
第3页 / 共29页
《数据库系统》实验大纲 ver20Word格式.docx_第4页
第4页 / 共29页
《数据库系统》实验大纲 ver20Word格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

《数据库系统》实验大纲 ver20Word格式.docx

《《数据库系统》实验大纲 ver20Word格式.docx》由会员分享,可在线阅读,更多相关《《数据库系统》实验大纲 ver20Word格式.docx(29页珍藏版)》请在冰豆网上搜索。

《数据库系统》实验大纲 ver20Word格式.docx

4、签到次数达不到6次,实验成绩得90%。

四、实验要求

严格按设计要求进行实验,表名、列名、类型、长度、以及数据等严格按要求,不要做简称等变化,否则系统会判为错误。

五、建议(可以不看)

1、要把实验当做实际开发工作一样对待,严格按设计要求执行。

实际工作中对数据库的操作不仅仅是一门技术,更是一种技能,为什么是一种技能?

你虽然会操作,别人一个小时完成的工作,你需要一天才能够完成,或者完成以后被发现和要求的不一致,还需要重新返工,而且有的时候操作失误可能带来无法挽回的损失。

因此,本实验要求大家严格按大纲要求正确输入表名、列名及数据。

2、学习计算机经常出现的现象就是,“一学就全会了,一做就全完成,一验收全错了(张冠李戴、缺斤少两),一指点全改了”。

所以,从开始就要严格要求自己,实际工作中,一点点也不能够有错误,从开始就养成一个严谨的好习惯。

有时候前面错误会给后来工作带来很大的麻烦,例如:

表名、列名错了,往往在发现错误的时候,数据已经输入很多,此时修改,需要先备份、再改表、再恢复数据。

六、Oracle相关知识简介(工作后一定会有用)

1、Oracle字符串使用单引号分隔,不可以用双引号。

2、伪列:

所谓伪列就是表中不存的列,可是像使用其他存在的列一样访问这些列。

常用的伪列有today、now、rownum、rowid、sysdate。

3、常用的几个函数:

to_char()、to_date(‘20100101’,’yyyy-mm-ddhh24:

mi:

ss’)、取子串substr()、子串查找instr()。

4、表的复制,Createtable表名asselect语句将查询结果自动创建一个新表,也就是实现表的复制,当select查询语句存在表达式的,可以通过属性更名来指定列名。

例如:

createtablestudent_avg_scoreasselectsno,sname,avg(score)avg_scorefrom来指定列名。

5、查询当前用户所有表的命令:

select*fromtab,查询所有人所有表的命令:

select*fromall_tables

6、Oracle中没有except关键词,与其等价的是minus关键词。

在使用minus时,select语句不能够使用括号,例如select*fromstudentwhere……minusselect*fromstudent……,错误写法是(select*fromstudentwhere……)minus(select*fromstudent……)。

7、表别名的定义不能够有As,例如正确的写法select*fromstudents,错误的写法是select*fromstudentass。

8、查询表的列属性的命令descpub.student

七、数据库空间配额

1、userID用户可用空间200m,userbID用户可用空间50m。

2、如果出现错误:

“ORA-01536:

超出表空间'

USERS'

的空间限额”,说明你的查询结果不正确,造成查询出来的数据太大,超过你空间配额。

八、交实验、查结果

1、按照实验要求完成当天部分或者全部作业后,通过执行:

updatedbtestsettest=1

其中:

1代表实验一,2代表实验二,以此类推。

2、建议完成一个或者两个题目后,就交实验,这有利于及时发现错误并修改。

3、后台的《数据库实验平台系统》会在5秒之内自动验证你的作业正确性,并形成你的本次实验成绩。

4、可以随时查询你的作业正确与否,通过执行:

通过执行:

select* fromdbscore

5、如果验证没有通过,你可以根据错误描述进行修改,然后再重新交实验。

九、评分标准

1、每周实验都有要求完成时间,可以提前进行后面的实验。

2、每个小题按时完成计全分,超时完成计80%。

3、总成绩求和为实验总分,按10分制折算后计入考试成绩。

4、如果签到次数<

6次,则折算后成绩按90%计入考试成绩。

5、对认真上机但成绩没有达到10分的学生,根据统计情况,会有2-3分加分。

一十、测试数据

由于学生不可能在实验期间插入大量的数据,因此实验课之前老师已经在数据库中建了一个公用用户pub,在这个用户下建立了实验用表,并且插入了大量的实验数据,本实验主要内容就是根据这些表进行操作。

这些表已经授权给所有用户可以进行查询,但是不能够修改里面的数据。

表名

类型

数据行数

说明

COURSE

140

课程信息

DEPARTMENT

7

院系信息

DEPARTMENT_41

20

院系信息1-实验三专用

STUDENT

4000

学生信息

STUDENT_41

学生信息-实验三专用

STUDENT_42

3000

STUDENT_31

学生信息-实验四专用

STUDENT_COURSE

14000

学生选课

STUDENT_COURSE_32

学生选课-实验四专用

STUDENT_TRIGGER

学生信息-实验七专用

TEACHER

200

教师信息

TEACHER_COURSE

40

教师授课信息

TEST8_INSERT

视图

 

嵌入SQL实验专用

TEST8_SELECT

TEST8_UPDATE

实验一

熟悉环境、建立/删除表、插入数据(2学时)

一十一、实验内容

利用oracle管理平台登入本人主用户userID,例如user201000300001,在主用户下,创建如下5个表,合理确定每一个表的主键并建立主键,准确输入表格中的3行数据。

表名、列名采用英文,oracle不区分大小写,有notnull的列代表不允许为空。

1.教师信息(教师编号、姓名、性别、年龄、院系名称)

test1_teacher:

tidchar6notnull、namevarchar10notnull、sexchar2、ageint、dnamevarchar10。

根据教师名称建立一个索引。

教师编号

教师姓名

性别

年龄

院系名称

100101

100102

100103

张老师

李老师

马老师

44

45

46

计算机学院

软件学院

 

2.学生信息(学生编号、姓名、性别、年龄、出生日期、院系名称、班级)

test1_student:

sidchar12notnull、namevarchar10notnull、sexchar2、ageint、birthdaydate(oracle的date类型是包含时间信息的,时间信息全部为零)、dnamevarchar10、classvarchar(10)。

根据姓名建立一个索引。

学号

姓名

出生日期

班级

200800020101

200800020102

200800020103

王欣

李华

赵岩

19

20

18

1994-2-2

1995-3-3

1996-4-4

2010

2009

3.课程信息(课程编号、课程名称、先行课编号、学分)

test1_course:

cidchar6notnull、namevarchar10notnull、fcidchar6、

creditnumeric2,1(其中2代表总长度,1代表小数点后面长度)。

根据课程名建立一个索引。

课程号

课程名

先行课程号

学分

300001

300002

300003

数据结构

数据库

操作系统

2

2.5

4

4.学生选课信息(学号、课程号、成绩、教师编号)

test1_student_course:

sidchar12notnull、cidchar6notnull、

scorenumeric5,1(其中5代表总长度,1代表小数点后面长度)、tidchar6。

成绩

91.5

92.6

93.7

5.教师授课信息(教师编号、课程编号)

test1_teacher_course:

tidchar6notnull,cidchar6notnull。

一十二、重要提醒

1.登入号为userID,ID为本人学号,例如user201000300001,密码123。

2.Oracle管理平台一次只能够执行一条语句,如果输入了多条,可以通过选中一条后执行。

3.执行非select前取消“只执行SELECT”选项,选中“自动提交”选项,这相当于每句话后自动执行了commit。

4.执行完一句话后,一定要看执行结果信息或者错误信息。

5.输入日期类型数据的格式:

采用date’2001-2-2’

例如insertintot1values(date’2012-02-02’)

或者

采用to_date(‘20100101’,‘yyyymmdd’)函数

insertintot1values(to_date(’20120202’,’yyyymmdd’))

6.创建全部或者部分表后,交实验,如果有错误,修改以后重新交实验。

7.如果建表错误,可以通过droptabletablename删除表后重建。

8.建议将执行完成语句,拷贝到记事本中存盘,防止丢失。

一十三、实验步骤

1.启动oracle管理平台,浏览器地址输入:

2.显示登入画面,使用本人账号/密码:

userID/123(ID为本人学号)登入系统。

3.如果出现证书问题,可以忽略提示继续。

4.如果仍然无法出现如下登入画面,需要删除你电脑上面windows的一个补丁kb2661245,这个补丁限制了证书错误不能够启动画面。

或者,也可以使用firefox浏览器,就能够解决证书问题。

5.

点击SQL工作表,系统打开sql工作表窗口,就可以执行SQL命令了。

6.

取消“只允许SELECT”,选中“自动提交”。

取消“只允许SELECT”,才能够执行update、insert等命令。

选中“自动提交”,代表每一条命令执行完后系统自动提交,也就是系统自动执行commit。

7.执行updatedbsignsetsign=’hello’完成本周签到,以后每周都要签到。

8.执行select*fromdbsign,查看签到情况。

9.创建上面要求的5个表student,course,teacher,student_course,teacher_course,实际工作中建表不能够有一点偏差,因此从现在开始就养成严谨的工作习惯,要求学生严格按上面设计,正确输入表名、列名、类型、长度。

10.为5个表插入表格中要求的3行数据,每张表最少插入此3行数据,插入的数据可以多于3行。

11.如果上课还没有讲到插入语句,请参考下图的例子完成,注意空值的插入使用null。

插入日期类型数据,格式参考前面的说明。

12.本实验要求插入的3行数据必须和要求的绝对一致,也不能够有多余的空格,否则作业将无法通过验证。

13.交实验通过执行执行:

14.5秒钟后查询本周实验正确性,通过执行

select*fromdbscore

15.如果有错误修正后,重新交实验。

16.本实验总得分为10分,代表本实验全部通过。

实验二

检索查询(2学时)

一十四、实验内容

在oracle管理操作平台,针对公共用户pub下的表,完成下面的查询,你认为你的查询语句正确以后,将查询得出的数据创建成一个新表,新表表名为test2_(题号,题号长度两位,前面补零),例如test2_03。

找出所有有选课且成绩及格的学生的学号、总成绩。

答案:

selectcid,sum(score)frompub.student_coursewherescore>

=60groupbycid

执行(注意别名的写法和用途):

createtabletest2_01asselectsid,sum(score)sum_scorefrompub.student_coursewherescore>

=60groupbysid

如果出现错误,可以通过Droptabletest2_01删除已经创建的表,然后重新创建新表。

一十五、实验题目

1.找出没有选修任何课程的学生的学号、姓名。

2.找出至少选修了学号为“200900130417”的学生所选修的一门课的学生的学号、姓名。

3.找出至少选修了一门其先行课程号为“300002”号课程的学生的学号、姓名。

4.找出选修了“操作系统”并且也选修了“数据结构”的学生的学号、姓名。

5.查询20岁的所有有选课的学生的学号、姓名、平均成绩(avg_score,此为列名,下同)(平均成绩四舍五入到个位)、总成绩(sum_score)

Test2_05有四个列,并且列名必须是:

sid、name、avg_score、sum_score。

通过下面方式实现列名定义:

createtabletest2_05asselectsid,name,(表达式)avg_score,(表达式)sum_scorefrom……

6.查询所有课以及这门课的最高成绩,test2_06有两个列:

课程号cid、最高成绩max_score

7.查询所有不姓张、不姓李、也不姓王的学生的学号sid、姓名name

8.查询学生表中每一个姓氏及其人数(不考虑复姓),test2_08有两个列:

second_name、p_count

9.查询选修了300003号课程的学生的sid、name、score

10.查所有有成绩记录的学生sid和cid

一十六、实验步骤

1.登入主用户

2.签到执行:

updatedbsignsetsign=’hello’

3.查看签到情况执行:

select*fromdbsign

4.利用pub用户的下6个表,完成相应的查询语句,检查得到的结果正确性,直到你认为完全正确。

5.通过createtabletest2_01asselect将查询结果创建到对应的表。

6.交实验执行

updatedbtestsettest=2

7.查结果执行

实验三

复制表、删除数据(2学时)

一十七、实验内容

利用oracle管理平台,将pub用户的表及数据复制到主用户下,对不符合要求的数据进行删除。

一十八、实验题目

1.将pub用户下的Student_31及数据复制到主用户的表test3_01,删除表中的学号不是12位数字的错误数据。

2.将pub用户下的Student_31及数据复制到主用户的表test3_02,删除表中的出生日期和年龄不一致(年龄=2012-出生年份)的错误数据。

函数extract(yearfrombirthday)返回birthday的年份

3.将pub用户下的Student_31及数据复制到主用户的表test3_03,删除表中的性别有错误的数据(性别只能够是“男”、“女”或者空值)。

4.将pub用户下的Student_31及数据复制到主用户的表test3_04,删除表中的院系名称有空格的、院系名称为空值的或者院系名称小于3个字的错误数据。

5.将pub用户下的Student_31及数据复制到主用户的表test3_05,删除表中的班级不规范的数据,不规范是指和大多数不一致。

6.将pub用户下的Student_31及数据复制到主用户的表test3_06,删除表中的错误数据,不规范的数据也被认为是错误的数据。

●学号不是12位数字的;

●出生日期和年龄不一致的(年龄=2012-出生年份);

●姓名有空格的或者长度小于2个字的;

函数length()返回字符串长度。

●性别有错误的(只能够是“男”、“女”、空值);

●院系名称有空格的、院系名称为空值的;

●院系名称小于3个字的;

●班级数据有错误的(需要先找到班级里面的错误,)。

保留最后全部正确的数据。

7.将pub用户下的Student_course_32及数据复制到主用户的表test3_07,删除其中的错误数据,错误指如下情况:

学号在学生信息pub.student中不存在的;

8.将pub用户下的Student_course_32及数据复制到主用户的表test3_08,删除其中的错误数据,错误指如下情况:

课程号和教师编号在教师授课表pub.teacher_course中不同时存在的,即没有该教师教该课程;

9.将pub用户下的Student_course_32及数据复制到主用户的表test3_09,删除其中的错误数据,错误指如下情况:

成绩数据有错误(需要先找到成绩里面的错误)。

10.将pub用户下的Student_course_32及数据复制到主用户的表test3_10,删除其中的错误数据,错误指如下情况:

(1)学号在学生信息pub.student中不存在的;

(2)课程号在课程信息pub.course中不存在的;

(3)教师编号在教师信息pub.teacher中不存在的;

(4)课程号和教师编号在教师授课表pub.teacher_course中不存在的;

(5)成绩数据有错误(需要先找到成绩里面的错误)。

保留最后正确的数据。

一十九、交实验、签到

1.签到执行:

2.查看签到情况执行:

3.交实验执行

updatedbtestsettest=3

4.查结果执行

实验四

复制表、修改表结构、修改数据(2学时)

二十、实验内容

利用oracle管理平台完成对表的结构、数据进行修改,每一个问题可以通过多个SQL语句完成。

二十一、实验题目

1.将pub用户下表student_41及数据复制到主用户的表test4_01中,使用altertable语句为表增加五个列:

“总成绩:

sum_score”、“平均成绩:

avg_score”(小数点后保留1位)、“总学分:

sum_credit”、“院系编号:

didvarchar

(2)”。

使用update语句,利用pub.student_course、pub.course,统计“总成绩”;

2.将pub用户下表student_41及数据复制到主用户的表test4_02中,使用altertable语句为表增加五个列:

avg_score”(小数点后保留1位)、“总学分:

利用pub.student_course、pub.course,统计“平均成绩”,四舍五入到小数点后1位

3.将pub用户下表student_41及数据复制到主用户的表test4_03中,使用altertable语句为表增加五个列:

avg_score”、“总学分:

使用update语句,利用pub.student_course、pub.course,统计“总学分”;

4.将pub用户下表student_41及数据复制到主用户的表test4_04中,使用altertable语句为表增加五个列:

根据院系名称到pub.department或者pub.department_41中,找到对应编号,填写到院系编号中,如果都没有对应的院系,则填写为00。

5.将pub用户下表student_41及数据复制到主用户的表test4_05中,使用altertable语句为表增加五个列:

(1)利用pub.student_course、pub.course,统计“总成绩”;

(2)利用pub.student_course、pub.course,统计“平均成绩”,四舍五入到小数点后1位;

(3)利用pub.student_course、pub.course,统计“总学分”;

(4)根据院系名称到pub.department或者pub.department_41中,找到对应编号,填写到院系编号中,如果都没有对应的院系,则填写为00。

6.将pub用户下的Student_42及数据复制到主用

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

当前位置:首页 > 经管营销 > 经济市场

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

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