一、实验目的
(1)熟悉数据库的交互式SQL工具;
(2)通过本实验能够熟练应用sql语言进行基本表和索引的定义,能够对表的结构进行修改和删除,并通过数据更新命令输入相应的数据。
二、实验环境
计算机
windows7操作系统,
Oracle 11g, SQL Developer
三、实验内容及结果
(一)数据定义
一、基本表操作
1.建立基本表
创建教材中的学生表(student)、学生选课表(SC)、课程表(course)
1)·学生表:Student (Sno, Sname,Sage,Ssex,Sdept)其中学号Sno主码
代码:create table student(
Sno char(9) primary key,
Sname char(20),
Sage smallint,
Ssex char(2),
Sdept char(20)
);
截图:
2)·课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号Cno主码;先行课为外码参照Course表中Cno字段。
代码:
create table Course(
Cno char(4) primary key,
Cname char(40),
Cpno char(4),
Ccredit smallint,
FOREIGN key (Cpno)REFERENCES Course(Cno)
);
截图:
3)·学生选课表:SC(Sno, Cno, Grade)其中学号Sno、课程号Cno为主码;Sno为外码参照Student表中sno字段;Cno为外码参照Course表中cno字段。
代码:
create table SC(
Sno char(9),
Cno char(4),
Grade smallint,
PRIMARY KEY (Sno,Cno),
FOREIGN key (Sno)REFERENCES student(Sno),
FOREIGN key (Cno)REFERENCES Course(Cno)
);
截图:
2.修改基本表
1)在Student表中加入属性BloodType(char(2)型)。
代码:
alter table student add BloodType char(2);
截图:
3)修改表student中的Sdept属性的数据类型为varchar2(40),注意和定义表的时候类型不同。
代码:alter table student MODIFY Sdept char(40);
截图:
4)给表student的sage列添加一个自定义约束sage必须大于15且小于30。
代码:
alter table student add CONSTRAINT CK_sage check(sage>15 and sage <30);
截图:
5)删除3)中新添加的约束。
代码:alter table student drop CONSTRAINT CK_sage;
截图:
6)删除表student中的字段BloodType。
代码:alter table student drop COLUMN bloodtype;
截图:
3.删除基本表
- 删除基本表Student
代码:drop table student CASCADE constraint;
截图:
2)删除基本表SC
代码:drop table sc CASCADE constraint;
截图:
二、索引操作
1.建立索引
1)在Student表上建立关于Sname的唯一索引stusnam+学号后四位
代码:CREATE unique index stusnam4221 on student(Sname);
截图:
2)在SC表上建立关于Sno升序、Cno降序的唯一索引i_sc+学号后四位
代码:CREATE unique index i_sc4221 on SC(Sno asc,Cno desc);
截图:
2.删除索引
1)删除Student表上的索引stusnam+学号后四位
代码:drop index stusnam4221;
截图:
3)删除Course表上的索引i_sc+学号后四位
代码:drop index i_sc4221;
截图:
(二)数据操作
一、数据更新
1.插入数据
1)向Student表中插入数据
代码: insert into student (Sno,Sname,Ssex,Sage,Sdept)
values(‘200215121’,‘李勇’,‘男’,20,‘CS’);
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values(‘200215122’,‘刘晨’,‘女’,‘19’,‘CS’);
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values(‘200215123’,‘王敏’,‘女’,‘18’,‘MA’);
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values(‘200215125’,‘张立’,‘男’,‘19’,‘IS’);
截图:
检验:
2)向Course表中插入数据
代码:insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘2’,‘数学’,null,‘2’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘6’,‘数据处理’,null,‘2’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘4’,‘操作系统’,‘6’,‘3’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘7’,‘PASCAL语言’,‘6’,‘4’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘5’,‘数据结构’,‘7’,‘4’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘1’,‘数据库’,‘5’,‘4’);
insert into Course(Cno,Cname,Cpno,Ccredit)
values(‘3’,‘信息系统’,‘1’,‘4’);
截图:
检验:
3)向SC表中插入数据
代码:insert into SC(Sno,Cno,Grade) values(‘200215121’,‘1’,‘92’);
insert into SC(Sno,Cno,Grade) values(‘200215121’,‘2’,‘85’);
insert into SC(Sno,Cno,Grade) values(‘200215121’,‘3’,‘88’);
insert into SC(Sno,Cno,Grade) values(‘200215122’,‘4’,‘90’);
insert into SC(Sno,Cno,Grade) values(‘200215122’,‘3’,‘80’);
截图
检验:
2.修改数据
1)将王敏的同学的年龄改为20。
代码:update student set Sage = 20 where SNAME = ‘王敏’;
截图:
2)将全部同学的年龄加1。
代码:update student set Sage = Sage+1
截图:
3)将’CS’系同学的选课信息中的成绩置0。
代码:update STUDENT set Sage=0 where SDEPT =‘CS’;
截图:
3.删除数据
1)删除和’ 刘晨’在同一个系的学生的信息。
代码:delete from student
where Sdept in(select Sdept from student where Sname=‘刘晨’);
截图:
2)删除’CS’系同学的选课信息。
代码:delete from sc
where sno in (select sno from student where sdept = ‘CS’);
截图: