文档下载:

 

实验名称

实验一 数据定义和数据更新

实验教室

913

实验日期

 2018年10月8日

学    号

2016214***

姓    名

***

专业班级

计算机科学与技术2016级 *班

指导教师

王阿川

 

东北林业大学

信息与计算机科学技术实验中心

一、实验目的

(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),
Ssex char(2),
Sage smallint,
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);

 

2)修改表student中的Sdept属性的数据类型为varchar2(40),注意和定义表的时候类型不同。

alter table Student modify (Sdept varchar2(40));

 

3)给表student的sage列添加一个自定义约束sage必须大于15且小于30。

alter table Student add check (Sage>15 and Sage<30);

 

4)删除3)中新添加的约束。

select * from user_constraints where table_name='STUDENT';

 

 

alter table Student drop constraint CK_STUDENT;

5)删除表student中的字段BloodType。

alter table Student drop(BloodType);

 

 

3.删除基本表

 1) 删除基本表Student

drop table student cascade CONSTRAINTS

 

2)删除基本表SC

drop table sc cascade CONSTRAINTS

 

二、索引操作

1.建立索引

1)在Student表上建立关于Sname的唯一索引stusnam+学号后四位

CREATE UNIQUE INDEX stusnam ON student(sname);

 

2)在SC表上建立关于Sno升序、Cno降序的唯一索引i_sc+学号后四位

    CREATE UNIQUE INDEX i_sc ON sc(sno asc, cno desc);

 

2.删除索引

1)删除Student表上的索引stusnam+学号后四位

drop index stusnam

 

2)删除Course表上的索引i_sc+学号后四位

drop index i_sc

 

(二)数据操作

一、数据更新

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('7','PASCAL语言','6','4');

insert into Course(Cno,Cname,Cpno,Ccredit) values('4','操作系统','6','3');

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 SC set Grade='0' where Sno in(select Sno from Student where Sdept='CS');

update SC set Grade='0' where Sno in(select Sno from Student 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');

 

四、实验过程分析与讨论

1. 实验过程分析与讨论:

(1)建表设置外键时要记得级联置空或者级联删除,避免不必要的麻烦

(2)定义表属性时,varchar2是比较好的选择,为变长数组。可以避免不必要的麻烦

(3)为约束起名时尽量保证名称方便阅读

    (4)敲入SQL语句时要保证为英文输入法,包括空格与符号全部为英文输入法。

 

2.思考题

(1)一个列上有外码约束如何实现。

使用

alter table  table_name  add constraint FK foreign key (x) references X(y);

语句增加外码约束。

(2)删除表时,表中某一列是另外一个表的外键,此表如何删除。

需要为这一列建立级联删除。

(3)对表中某一列的数据类型进行修改时,要修改的列是否必须为空列。

是的,否则会报错。

 

五、指导教师意见

      

指导教师签字:

                                          年  月   日

 

posted on 2019-05-21 20:23  vow007  阅读(31)  评论(0编辑  收藏  举报  来源