《数据库系统概论》实验报告书
专业班级
学号
姓名
指导教师
安徽工业大学计算机学院
实验一:数据定义 / 数据操纵语言
实验目的
熟悉 Oracle 上机环境及 Oracle 客户端的配置; 熟练掌握和使用立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用对数据进行增加、修改和删除操作。
DDL语言, 建DML语言,
实验内容
1.
SQL 数据定义语句:
例 1-1:
(
建立数据库表
)
建立教学数据库的四个数据库表,其中
Student
表中不包含
SSEX(C,2) 字段, Sname 字段为 Sname(C,8) 且可为空。
例 1-2 : ( 修改数据库表 ) 在 Student 表中增加 SEX(C,2) 字段。
例 1-3 : ( 修改列名 ) 将 Student 表中列名 SEX修改为 SSEX。
例 1-4 : ( 修改数据库表)将 Student 表中把 Sname 字段修改为Sname(C,10) 且为非空。
例 1-5 :( 建立索引 ) 为 Score 表按课程号升序、 分数降序建立索引, 索引名为 SC_GRADE。
例 1-6 : ( 删除索引 ) 删除索引 SC_GRADE。
例 1-7 : ( 建立数据库表 ) 建立数据库表 S1(SNO,SNAME,SD,SA),其字段类型定义与
Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
例 1-8 : ( 修改数据库表 ) 删除成绩表 Score 的参照完整性约束关系。
例 1-9 : ( 修改数据库表 ) 添加成绩表 Score 的参照完整性约束关系。
例 1-10 : ( 修改数据库表名 ) 将数据库表 S1 改名为 Student_Temp 。
2. SQL
数据操纵语句:
例 2-1
: ( 插入数据 ) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。
例 2-2
:( 多行插入 ) 将表 Student 中在计算机系 ( ‘CS’)的学生数据插入到表 Student_Temp
中。
例 2-3
:( 利用查询来实现表的定义与数据插入
) 求每一个学生的平均成绩,把结果存入数
据库表 Student_Gr 中。
例 2-4
: ( 修改数据 ) 将 Student_Temp 表中所有学生的年龄加 2。
例 2-5 :( 修改数据 ) 将 Course 表中 ‘程序设计 ’课时数修改成与 ‘数据结构 ’的课时数相同。
例 2-6 :( 插入数据 ) 向 Score 表中插入数据( ‘98001’, ‘001’,95 ),根据返回信息解释其原因。
例 2-7 : ( 插入数据 ) 向 Score 表中插入数据( ‘97001’, ‘010’, 80 ),根据返回信息解释其原因。
例 2-8 : ( 删除数据 ) 删除 Student 表中学号为 ‘96001’的学生信息,根据返回信息解释
其原因。
例 2-9 : ( 删除数据 ) 删除 Course 表中课程号为 ‘003’的课程信息,根据返回信息解释其原因。
例 2-10 : ( 删除数据 ) 删除学生表 Student_Temp 中学号以 96 打头的学生信息。
例 2-11
:(删除数据)
删除数据库表
Student_Temp 中所有学生的数据。
例 2-12
:( 删除表 )
删除数据库表
Student_Temp 和 Student_Gr 。
实验程序
create table student(
sno char(5) primary key,
sname char(8),
sdept char(2) not null,
sclass char(2) not null,
sage numeric(2)
)
create table course(
cno char(3) primary key,
cname char(16) unique,
ctime numeric(3)
)
create table teach(
tname char(8),
tsex char(2),
cno char(3),
tdate datetime,
tdept char(2),
primary key(tname,cno,tdept),
foreign key(cno) references course(cno)
)
create table score(
sno char(5),
cno char(3),
score numeric(5,2)
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
)
alter table student add sex char(2)
sp_rename 'student.sex','ssex','column'
alter table student alter column sname char(10) not null
create unique index sc_grade on score(sno,score desc)
drop index score.sc_grade
create table s1(
sno char(5) primary key,
sname char(8),
sd char(2),
sa numeric(2)
)
alter table score drop constraint fk_score_student
alter table score add constraint fk_score_student
foreign key (sno)
references student(sno) on update cascade on delete cascade
sp_rename 's1','student_temp'
insert into student values('96001','
马小燕 ','CS','01',21,'
女 ');
insert into student values('96002','
黎明 ','CS','01',18,'
男 ');
insert into student values('96003','
刘东明 ','MA','01',18,'
男 ');
insert into student values('96004','
赵志勇 ','IS','02',20,'
男 ');
insert into student values('97001','
马蓉 ','MA','02',19,'
女 ');
insert into student values('97002','
李成功 ','CS','01',20,'
男 ');
insert into student values('97003','
黎明 ','IS','03',19,'
女 ');
insert into student values('97004','
李丽 ','CS','02',19,'
女 ');
insert into student values('96005','
司马志明 ','CS','02',18,'
男 ');
insert into Course values('001','
数学分析 ',144);
insert into Course values('002','
普通物理 ',144);
insert into Course values('003','
微机原理 ',80);
insert into course values('004','
数据结构 ',72);
insert into course values('005','
操作系统 ',80);
insert into course values('006','
数据库原理 ',80);
insert into course values('007','
编译原理 ',60);
insert into course values('008','
程序设计 ',40);
insert into teach values('
王成刚 ','
男 ','004','1999.9.5','CS');
insert into teach values('
李正科 ','
男 ','003','1999.9.5','CS');
insert into teach values('
严敏 ','
女 ','001','1999.9.5','MA');
insert into teach values('
赵高 ','
男 ','004','1999.9.5','MA');
insert into teach values('
刘玉兰 ','
女 ','006','2000.2.23','CS');
insert into teach values('
王成刚 ','
男 ','004','2000.2.23','IS');
insert into teach values('
马悦 ','
女 ','008','2000.9.6','CS');
insert into score values('96001','001',77);
insert into score values('96001','003',89);
insert into score values('96001','004',86);
insert into score values('96001','005',82);
insert into score values('96002','001',88);
insert into score values('96002','003',92);
insert into score values('96002','006',90);
insert into score values('96005','004',92);
insert into score values('96005','005',90);
insert into score values('96005','006',89);
insert into score values('96005','007',76);
insert into score values('96003','001',69);
insert into score values('97001','001',96);
insert into score values('97001','008',95);
insert into score values('96004','001',87);
insert into score values('96003','003',91);
insert into score values('97002','003',91);
insert into score values('97002','004',NULL);
insert into score values('97002','006',92);
insert into score values('97004','005',90);
insert into score values('97004','006',85);
insert into student_temp values('96001','
马小燕 ','CS',21)
insert into student_temp values('96002','
黎明 ','CS',18)
insert into student_temp values('97002','
李成功 ','CS',20)
insert into student_temp values('97004','
李丽 ','CS',19)
insert into student_temp values('96005','
司马志明 ','CS',18)
select avg(score) avg1 into student_gr from score
group by sno
update student_temp
set sa=sa+2;
select * from student_gr
update course
set ctime=(
select ctime
from course c1
where c1.cname=' 数据结构 '
)where cname=' 程序设计 '
插入的数据( ‘ 98001’ ,
‘ 001’ , 95
)中, student
中没有 98001 这个学号
插入的数据( ‘ 97001’ ,
‘ 010’ , 80
)中, course
中没有 010 这个课程号
删除的数据中,96001 这个学号在score 中有记录
删除的数据中,003 这个课程号在score 中有记录
delete from student_temp
where sno like '96%