[*用Oracle来创建学生信息管理系统*]

背景:学生信息管理系统

功能描述:学生基本信息管理、课程信息管理、班级信息管理、选课信息管理、教师基本信息管理

学生基本信息:学号,姓名,年龄,性别,入学日期,家庭住址
教师基本信息:教工号,姓名,年龄,担当的课程号
课程基本信息:课程号,课程名,课程学分
选课信息:学号,教工号,成绩
班级信息:班级号,系,年级,班级

关系

  1. 一个学生只能属于一个班级,一个班级有多个学生
  2. 一个学生可以选多门课程,一门课程可以被多个学生选
  3. 一个老师只能教一门课,一门课程可以由多个老师教

创建表

创建班级表class

create table class(
clno varchar2(5) primary key,
dept varchar2(40) not null,
grade varchar2(8) not null,
branch varchar2(20) not null);

创建课程表course

create table course(
cno varchar2(5) primary key,
name varchar2(60) not null,
score number(2) not null);

创建学生表student

create table student(
sno varchar2(8) primary key,
name varchar2(12) not null,
age number(2) not null,
sex char(1) not null,
entrance date,
address varchar2(100),
clno varchar2(5),
constraint fk_clno foreign key(clno)references class(clno));

创建教师表teacher

create table teacher(
tno varchar2(5) primary key,
name varchar2(12) not null,
age number(2) not null,
cno varchar2(5) not null);

创建选课表st

create table st(
sno varchar2(8) not null,
tno varchar2(5) not null,
grade number(2) default 0);

PS:–对school方案中的基本表添加约束
–not null
–primary key
–foreign key
–unique
–check

–1、班级信息表约束

  --check
  alter table class
  add constraint ck_class_grade
  check(grade in('大一','大二','大三','大四'));

  --追加主键约束
  alter table class
  add constraint pk_class_clno primary key(clno);

–追加注释
–表注释、列注释

  comment on table class is '班级信息表';
  comment on column class.clno is '班级编码';
  comment on column class.dept is '系';
  comment on column class.grade is '年级';
  comment on column class.branch is '班';

–查看注释

  select *from user_tab_comments;

2、学生信息表约束

  --check约束
  alter table student
  add constraint ck_student_age 
  check(age>6 and age<41);
  alter table student
  add constraint ck_student_sex
  check (sex in('0','1'));

--外键约束
  alter table student 
  add constraint fk_student_clno foreign key(clno)
  references class(clno);

–学生信息表注释

comment on table student is '学生信息表';
comment on column student.sno is '学号';
comment on column student.name is '学生姓名';
comment on column student.age is '学生年龄';
comment on column student.sex is '性别,1:男,0:女';
comment on column st.grade is '成绩,默认0';

3、课程信息表约束

  alter table course
  add constraint ck_course_score check(score>0 and score<10);

4、教师信息表约束

--check
  alter table teacher 
  add constraint ck_teacher_age check (age>20 and age<66);
  
--外键
  alter table teacher 
  add constraint fk_teacher_cno foreign key(cno)
  references course(cno);

5、选课信息表约束

--主键约束
alter table st
add constraint pk_st primary key(sno,tno);

--check
  alter table st
  add constraint ck_st_grade check(grade>=0 and grade<=9);

--外键约束
  alter table st
  add constraint fk_st_sno foreign key(sno)
  references student(sno);
  alter table st
  add constraint fk_st_tno foreign key(tno)
  references teacher(tno);

–索引

1、学生表索引

--在clno上创建索引
create index idx_student_clno on student(clno);

2、教师表索引

--在cno上创建索引
create index idx_teacher_cno on teacher(cno);

3、选课信息表创建索引

--在sno,tno 创建索引
create index idx_st_sno on st(sno);
create index idx_st_tno on st(tno);

4、学生信息表的性别创建位图索引

create bitmap index idx_student_sex on student(sex);

–查看索引

select table_name,column_name from user_indexes where table_name='student';

–完成表中必要的约束的追加

alter table st add constraint st_pk on(sno,tno)

–添加数据

class表

insert into class values('1402','软件工程','大三','一班');
insert into class values('1403','软件工程','大三','二班');
insert into class values('1404','软件工程','大三','三班');
insert into class values('1405','软件工程','大三','四班');

student表

insert into student values('14620201','王一乐',18,1,'06-9月-2014','太原','1402');
insert into student values('14620202','张晓一',19,0,'06-9月-2014','北京','1402');
insert into student values('14620203','贾东敏',18,0,'06-9月-2014','长沙','1402');
insert into student values('14620204','张三峰',20,1,'06-9月-2014','天津','1402');
insert into student values('14620205','李佳尔',19,0,'06-9月-2014','北京','1402');
insert into student values('14620402','陈静以',18,0,'06-9月-2014','太原','1404');
insert into student values('14620301','梁涛二',21,0,'06-9月-2014','哈尔滨','1403');
insert into student values('14620305','张伍雪',20,0,'06-9月-2014','北京','1403');
insert into student values('14620504','王凯东',22,1,'06-9月-2014','广东','1405');
insert into student values('14620306','张寒系',20,1,'06-9月-2014','长沙','1403');

course表

insert into course values('CN001','C语言',4);
insert into course values('CN002','C++',4);
insert into course values('CN003','高数',6);
insert into course values('CN004','大学英语',6);
insert into course values('CN005','ORACEL',4);
insert into course values('CN006','管理信息系统',4);
insert into course values('CN007','建模',4);
insert into course values('CN008','物理',6);

teacher表

insert into teacher values('T0001','张吖',33,'CN001');
insert into teacher values('T0002','李红',37,'CN003');
insert into teacher values('T0003','宋是',32,'CN004');
insert into teacher values('T0004','赵好',35,'CN007');
insert into teacher values('T0005','张英',28,'CN006');
insert into teacher values('T0006','杨英',39,'CN001');
insert into teacher values('T0007','杨杰',47,'CN008');
insert into teacher values('T0008','张斌',27,'CN002');
insert into teacher values('T0010','张霞',37,'CN005');
insert into teacher values('T0011','乐倩',40,'CN002');
insert into teacher values('T0012','王慧',41,'CN001');

st表

insert into st values('14620202','T0001',6);
insert into st values('14620202','T0002',4);
insert into st values('14620203','T0004',4);
insert into st values('14620204','T0005',6);
insert into st values('14620205','T0007',4);
insert into st values('14620201','T0006',6);

PS:如果有数据插入不进去原因是外键约束可以选择以下方法:

alter table <表名>  nocheck constraint;
--插入前先关闭约束限制
alter table <表名> check constraint;
--插入后打开约束限制
  • 8
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值