数据库系统原理实验报告 数据库模式设计及建立

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳工程学院

学生实验报告

(课程名称:数据库系统原理)实验题目:数据库模式设计及建立

班级学号姓名

日期地点指导教师

一、实验目的

熟练掌握采用SQL命令建立数据库表、索引和视图的方法。

二、实验环境

Oracle10g数据库系统。

三、实验内容与要求

(一)实验内容

1.建立学生数据库模式

学生表:student (sno学号,sname姓名,ssex性别,sage年龄,sdept所在系)

其中:

sno 长度为4的字符串,为主码;

sname 长度为8的字符串;

ssex 长度为2的字符串,其值只取男、女;

sage 短整数,其值在0-150之间;

sdept 长度为10的字符串。

2.建立课程数据库模式

课程表:course ( cno课程号,cname课程名,ccredit学分)

其中:

cno 长度为4的字符串,为主码

cname 长度为10的字符串,不能为空,且不能有重复课程名;

ccredit 短整数。

3.建立选课数据库模式。

选课表:sc (sno学号,cno课程号,grade成绩)

其中:

sno 长度为4的字符串,和student表sno外键关联,且级联删除

cno 长度为4的字符串,course表cno外键关联,

grade 短整数,值或空或为0—100之间,

(sno,cno) 联合作主码。

(二)实验要求

在Oracle10g的iSQLPlus中完成下列操作:

(1)创建上述三个表。

(2)向Student 表增加"入学时间"列(列名为Scome,日期型)。

(3)将年龄的数据类型改为半字长整数。

(4)为Student中sname添加列级完整性约束,不能为空。

(5)删除Student中sname列级完整性约束。

(6)为SC建立按学号升序和课程号降序建立唯一索引.

(7)在表student的sname字段建立一个升序索引。

(8)删除在表student的sname字段建立的索引。

(9)给student表增加一个地址(address)属性。

(10)给student表删除地址(address)属性。

(11)给sc表建立索引,先sno按升序,再按cno降序。

(12)删除10中创建上述的索引。

(13)建立视图view1,要求有sno,sname,cname,grade四个字段。

(14)建立视图view2,要求有sno,ssex,sage三个字段。

四、实验过程及结果分析

(1)①创建学生数据库模式,代码如下:

create table student

(sno char(4) primary key,

sname char(8),

ssex char(2) check(ssex in('男','女')),

sage smallint check(sage is between 0 and 150),

sdept char(10)

);

提示错误:

check(sage is between 0 and 150)

*

第 5 行出现错误:

分析错误产生原因:“sage is between 0 and 150”语法错误,“is”常与“null”连用,如“sage is null”等。

由上述分析错误产生原因,更正代码如下:

create table student

(sno char(4) primary key,

sname char(8),

ssex char(2) check(ssex in('男','女')),

sage smallint check(sage between 0 and 150),

sdept char(10)

);

②创建课程数据库模式,代码如下:

create table course

(cno char(4) primary key,

cname char(10) not null unique,

ccredit smallint);

③创建选课数据库模式,代码如下:

create table sc

(sno char(4),

cno char(4),

grade smallint check((grade is null) or (grade >= 0 and grade <= 100)),

primary key(sno,cno),

foreign key (sno) references student(sno) on delete cascade,

foreign key (cno) references course(cno)

);

(2)alter table student add scome date

(3)alter table student modify sage smallint

这里要说明一点,Oracle数据库中用“modify”而不用“alter column”子句,以下用到“alter column”子句与此相同。

(4)alter table student modify(sname not null)

(5)alter table student drop (sname not null)

(6)create unique index scno on sc(sno asc,cno desc);

(7)create index sname on student(sname asc);

(8)drop index sname

(9)alter table student add address varchar(8);

(10)alter table student drop (address);

(11)drop index scno

(12)create unique index scno on sc (sno asc,cno desc );

(13)建立视图view1,有sno,sname,cname,grade字段,代码如下:

create view view1

as

select student.sno,sname,cname,grade

from student,course,sc

(14)建立视图view2,要求有sno,ssex,sage三个字段,代码如下:

create view view2

as

select student.sno,ssex,sage

from student

相关文档
最新文档