数据库实验报告(实验一)
- 格式:doc
- 大小:13.87 MB
- 文档页数:12
沈 阳 工 程 学 院 学 生 实 验 报 告
(课程名称:数据库原理及应用)
实验题目: 数据库模式设计
班 级 信安本111 学 号 13 姓 名 朱帝
日 期2013-10-18 地 点 F612 指导教师孙宪丽、祝世东
一、实验目的
熟练掌握采用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)建立视图 view1,要求有sno,sname,cname,grade四个字段。
(12)建立视图view2,要求有sno,ssex,sage三个字段。
四、实验过程及结果分析
(1)创建上述三个表。
创建学生表:
错误程序代码:create table Student(
Sno char(4) primary key,
Sname char(8) unique,
Ssex char(2)check(sex='男'or'女'),
Sage int check(sage between 0 and 150),
Sdept char(10)
); 错误分析:
Ssex char(2)check(sex='男'or'女'),
ERROR at line 4:
ORA-00920: invalid relational operator
约束条件错误,应将sex改为Ssex
程序代码:
create table Student(
Sno char(4) primary key,
Sname char(8) unique,
Ssex char(2) check(Ssex in('男','女')),
Sage int check(sage between 0 and 150),
Sdept char(10)
);
运行结果:Table created.
创建课程表:
程序代码:create table Course(
Cno char(4) primary key,
Cname char(10),
Ccredit int
);
运行结果:Table created.
创建成绩表:
错误程序代码:
create table Sc(
Sno char(4),
Cno char(4), Grade int check(Grade between 0 and 100),
primary key (Sno,Cno),
foreign key (Sno) references student(Sno),
foreign key(Cno) reference Course(Cno)
);
错误分析:
foreign key(Cno) reference Course(Cno)
ERROR at line 7:
ORA-00905: missing keyword
操作错误:应将热reference改为references
程序代码:
create table Sc(
Sno char(4),
Cno char(4),
Grade int check(Grade between 0 and 100),
primary key (Sno,Cno),
foreign key (Sno) references student(Sno),
foreign key(Cno) references Course(Cno)
);
运行结果:Table created.
(2)向Student 表增加"入学时间"列(列名为Scome,日期型)。
程序代码:Alter table Sc Add Scome Date;
运行结果: Table created
(3)将年龄的数据类型改为整数。
程序代码:alter table student modify(sage number);
运行结果:Table altered.
(4)为Student中sname添加列级完整性约束,不能为空。
错误代码:Alter table Student add Sname NOT NULL;
错误分析:alter table student add not null(sname);
ERROR at line 1:
ORA-00904: : invalid identifier
语法规则错误。
程序代码:Alter table Student modify ( "Sname" NOT NULL );
(5)删除Student中sname列级完整性约束。
程序代码:Alter table Student modify ( Sname NULL )
运行结果:Table altered.
(6)为SC建立按学号升序和课程号降序建立唯一索引.
程序代码:create unique index index1 on sc (sno asc,cno desc);
运行结果:Table altered.
(7)在表student的sname字段建立一个升序索引.
程序代码:create index index2 on student(sname asc);
运行结果:Index created
(8)删除在表student的sname字段建立的索引。
程序代码:drop index index2;
(9)给student表增加一个地址(address)属性。
程序代码:alter table student add address char(30);
运行结果:
(10)给student表删除地址(address)属性。
程序代码:alter table student drop column address;
运行结果:
(11)建立视图 view1,要求有sno,sname,cname,grade四个字段。
程序代码:create view view1
as
select A.sno,sname,cname,grade
from student A,course B,sc C
where A.sno=C.sno and o=o; 运行结果:
(12)建立视图view2,要求有sno,ssex,sage三个字段。
程序代码:create view view2
as
select sno,ssex,sage
from student;
运行结果:
五、成绩评定
优 良 中 及格 不及格
出 勤
格 式
内 容
分 析
总 评
指导教师:
年 月 日