NEFU——数据库实验(一)

下面是一次性脚本可以运行完的代码
注意不要重复运行,因为运行过以后数据并没有清除,可能会报错
自己在删除数据的时候也要注意先后顺序,否则会违反完整性约束

实验内容及结果(上交时,标注底色的内容删除)
(一)基本表操作
1.建立基本表
创建教材中的学生表(student)、学生选课表(SC)、课程表(course)
1)·学生表:Student (Sno, Sname,Sage,Ssex,Sdept)其中学号Sno主码。
2)·课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号Cno主码;先行课为外码参照Course表中Cno字段。
3)·学生选课表:SC(Sno, Cno, Grade)其中学号Sno、课程号Cno为主码;Sno为外码参照Student表中sno字段;Cno为外码参照Course表中cno字段。
每条语句一个截图。形如:

2.修改基本表
1)在Student表中加入属性BloodType(char(n)型,即定长字符型)。
2)修改表student中的Sdept属性的数据类型为varchar2(70),注意和定义表的时候类型不同。
3)给表student的sage列添加一个自定义约束sage必须大于15且小于30。
4)删除3)中新添加的约束。
5)删除表student中的字段BloodType。
每条语句一个截图。
3.删除基本表(此部分最后做)

  1. 删除基本表Student
    2)删除基本表SC
    每条语句一个截图。
    (二)索引操作
    1.建立索引
    1)在Student表上建立关于Sname的唯一索引stusnam+学号后四位
    2)在SC表上建立关于Sno升序、Cno降序的唯一索引i_sc+学号后四位
    2.删除索引
    1)删除Student表上的索引stusnam+学号后四位
    2)删除Course表上的索引i_sc+学号后四位
    (三)数据更新
    1.插入数据(可参考下表数据,也可不参考。)
    1)向Student表中插入数据
    2)向Course表中插入数据
    3)向SC表中插入数据
    本部分student表完成插入2条数据即可。其余数据可通过带子查询的insert语句插入。(截图2个)
    如:对于学号121、122的同学可以用insert into values …方式插入。
    其余如125的同学,可以用insert into STUDENT select sno,sname,sage,ssex,sdept from llh.student where sno=200215123;(截图一个)
    (注意:此语句select后面的列要与建student表时列的顺序保持一致)。
    Course表通过insert into values完成插入2条数据即可,要求一个无外码,一个有外码,其余数据可用子查询的方式插入。(截图3个:2个单个数据插入,一个子查询插入)
    (注意:体会外码的含义,否则在插入数据时候会出错。)
    Sc表插入数据通过insert into values完成插入1条数据即可,其余可用子查询插入。(截图2个)

Student
学号Sno 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 CS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS
Course
课程号 Cno 课程名 Cname 先行课 Cpno 学分Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4
SC
学号 Sno 课程号Cno 成绩Grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 4 90
200215122 3 80

2.修改数据
1)将王敏的同学的年龄改为20。
2)将全部同学的年龄加1。
3)将’CS’系同学的选课信息中的成绩置0。
3.删除数据
1)删除和’ 刘晨’在同一个系的学生的信息。
2)删除’CS’系同学的选课信息。

create table student(
sno char(9) primary key,
sname char
(20),
ssex char(2),
sage int,
sdept char(20)
);

create table course(
cno char(4) primary key,
cname char(40),
cpno char(4),
ccredit int,
foreign key(cpno) references course(cno)
);

create table sc(
cno char(4),
sno char(9),
grade int,
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
);


alter table student add BloodType char(2);
alter table student modify (sdept varchar2(70));
alter table student add constraint ck_sage check(sage>15 and sage<30);
alter table student drop constraint ck_sage;

alter table student drop(BloodType);

create unique index stusnam1130 on student(sname);

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

drop index stusnam1130;

drop index i_sc1130;

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');

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');

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');

update student set sage=20 where sname='王敏';
update student set sage=sage+1;
update SC set Grade='0' where Sno in(select Sno from Student where Sdept='CS');

delete from SC where Sno in(select Sno from Student where Sdept='CS');
delete from Student where Sdept in(select Sdept from Student where Sname='刘晨');

drop table sc;
drop table student;
drop table course;

  • 15
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值