数据库_实验一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CJL2313/article/details/78668480

1、创建表
create table Student(
Sno char(9) primary key,
Sname char(20),
Ssex char(2),
Sage smallint,
Sdept char(20)
);

create table Course(
Cno char(4) primary key,
Cname char(40),
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references 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 SYS_C0011317;

5)删除表student中的字段BloodType。
alter table Student drop(Sage);

3、删除基本表
1) 删除基本表Student
drop table Student cascade constraints;

2)删除基本表SC
drop table SC cascade constraints;

二、索引操作
1.建立索引
1)在Student表上建立关于Sname的唯一索引stusnam+学号后四位
select * from user_indexes where table_name='STUDENT';
select * from user_ind_columns where index_name='xxx'

create unique index stusnam4070 on Student(Sname asc);

2)在SC表上建立关于Sno升序、Cno降序的唯一索引i_sc+学号后四位
create unique index i_sc4070 on SC(Sno asc,Cno desc);

2.删除索引
1)删除Student表上的索引stusnam+学号后四位
drop index stusnam4070;

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

(二)数据操作
一、数据更新
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');

可参考如下数据,也可不参考。
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。
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');

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)一个列上有外码约束如何实现。
2)删除表时,表中某一列是另外一个表的外键,此表如何删除。
3)对表中某一列的数据类型进行修改时,要修改的列是否必须为空列。

猜你喜欢

转载自blog.csdn.net/CJL2313/article/details/78668480