oracle的项目(适合初学者)

–步骤一
–1创建学生表
create table student(
s_no char(6) primary key,
s_name char(10) not null,
s_sex char(4) check(s_sex=‘男’ or s_sex=‘女’),
s_birthday date,
s_score number(5,1),
s_addf number(3,1),
class_no char(5)
)

–设置student表的主外键约束
alter table student
add constraint sc_ad
foreign key(class_no)
references class(class_no);

alter table student
add constraint ac_ad
foreign key(class_no)
references class(class_no);
–2创建班级表
create table class(
class_no char(5) primary key,
class_name char(10) not null,
dept_no char(2)
)
–设置class表的主外键约束
alter table class
add constraint fk_cd
foreign key (dept_no)
references department(dept_no);
–3创建系部表
create table department(
dept_no char(2) primary key,
dept_name char(10) not null
)
–(4)课程表(course)
create table course(
course_no char(5),
course_name char(20) not null
)
–设置course表的主外键约束
alter table course
add constraint pk_course_no primary key(course_no);

–(5)教师表(teacher)
create table teacher(
t_no char(6),
t_name char(10) not null,
t_sex char(4) check(t_sex=‘男’ or t_sex=‘女’),
t_birthday date,
t_title char(10)

)
–设置teacher表的主外键约束
alter table teacher
add constraint pk_t_no primary key(t_no);

–(6)选修表(choice)
create table choice(
s_no char(6),
course_no char(5),
score number(5,1)
)
–设置choice表的主外键约束
alter table choice
add constraint pk_c_no primary key(s_no,course_no);
alter table choice
add constraint fk_c_no foreign key (s_no) references student(s_no) on delete cascade;
alter table choice
add constraint fk_course_choice_no foreign key (course_no) references course(course_no);

–(7)授课表(teaching)
create table teaching(
t_no char(6),
course_no char(5)
)
–设置teaching表的主外键约束
alter table teaching
add constraint pk_tea_no primary key(t_no,course_no);
alter table teaching
add constraint fk_tea_no foreign key (t_no) references teaalter table teaching
add constraint fk_course_no foreign key (course_no) references course(course_no);cher(t_no) on delete cascade;

–步骤二
–1. 向教学管理系统的每个表中录入5条记录。录入时注意体会外键约束。
–department表
insert into department(dept_no, dept_name) values (‘1’, ‘汉语系’);
insert into department(dept_no, dept_name) values (‘2’, ‘英语系’);
insert into department(dept_no, dept_name) values (‘3’, ‘化学系’);
insert into department(dept_no, dept_name) values (‘4’, ‘历史系’);
insert into department(dept_no, dept_name) values (‘5’, ‘生物系’);
insert into department(dept_no, dept_name) values (‘6’, ‘文学系’);
insert into department(dept_no, dept_name) values (‘7’, ‘数学系’);
select * from department
–course表
insert into course(course_no, course_name) values (‘1’, ‘文学’);
insert into course(course_no, course_name) values (‘2’, ‘历史意义’);
insert into course(course_no, course_name) values (‘3’, ‘动物世界’);
insert into course(course_no, course_name) values (‘4’, ‘怎么学好英语’);
insert into course(course_no, course_name) values (‘5’, ‘牛顿三大定律’);
insert into course(course_no, course_name) values (‘6’, ‘考上理想大学’);
insert into course(course_no, course_name) values (‘7’, ‘钢铁时代’);
select * from course;
–teacher表
insert into teacher(t_no, t_name, t_sex, t_birthday, t_title) values (‘1’, ‘王老师’, ‘女’, TO_DATE(‘2012-11-11’,‘YYYY-MM-DD’), ‘讲师’);
insert into teacher(t_no, t_name, t_sex, t_birthday, t_title) values (‘2’, ‘邓老师’, ‘男’, TO_DATE(‘2010-12-08’,‘YYYY-MM-DD’), ‘教授’);
insert into teacher(t_no, t_name, t_sex, t_birthday, t_title) values (‘3’, ‘黄老师’, ‘男’, TO_DATE(‘2000-06-04’,‘YYYY-MM-DD’),‘教职工’);
insert into teacher(t_no, t_name, t_sex, t_birthday, t_title) values (‘4’, ‘谭老师’, ‘女’, TO_DATE(‘2011-09-29’,‘YYYY-MM-DD’), ‘讲师’);
insert into teacher(t_no, t_name, t_sex, t_birthday, t_title) values (‘5’, ‘唐老师’, ‘男’, TO_DATE(‘2014-11-10’,‘YYYY-MM-DD’), ‘讲师’);
select * from teacher;
–class表
insert into class(class_no, class_name, dept_no) values (‘1001’, ‘物理班’, ‘3’);
insert into class(class_no, class_name, dept_no) values (‘1002’, ‘文学班’, ‘1’);
insert into class(class_no, class_name, dept_no) values (‘1003’, ‘外语班’, ‘2’);
insert into class(class_no, class_name, dept_no) values (‘1004’, ‘历史班’, ‘4’);
insert into class(class_no, class_name, dept_no) values (‘1005’, ‘生物班’, ‘5’);
insert into class(class_no, class_name, dept_no) values (‘1006’, ‘重点班’, ‘4’);
select * from class;
–student表
insert into student(s_no, s_name, s_sex, s_birthday, s_score, s_addf, class_no) values
(‘1’, ‘小张’, ‘男’, TO_DATE(‘2016-09-01’,‘YYYY-MM-DD’), ‘659’, 5, ‘1001’);
insert into student(s_no, s_name, s_sex, s_birthday, s_score, s_addf, class_no) values
(‘2’, ‘小翔’, ‘男’, TO_DATE(‘2015-09-01’,‘YYYY-MM-DD’), ‘459’, 0, ‘1005’);
insert into student(s_no, s_name, s_sex, s_birthday, s_score, s_addf, class_no) values
(‘3’, ‘小伟’, ‘男’, TO_DATE(‘2017-02-14’,‘YYYY-MM-DD’), ‘702’, 5, ‘1002’);
insert into student(s_no, s_name, s_sex, s_birthday, s_score, s_addf, class_no) values
(‘4’, ‘小尼’, ‘女’, TO_DATE(‘2016-09-01’,‘YYYY-MM-DD’), ‘699’, 5, ‘1004’);
insert into student(s_no, s_name, s_sex, s_birthday, s_score, s_addf, class_no) values
(‘5’, ‘小丽’, ‘女’, TO_DATE(‘2016-09-01’,‘YYYY-MM-DD’), ‘679’, 5, ‘1002’);
select * from student;
–choice表
insert into choice(s_no, course_no, score) values (‘1’, ‘5’, 80);
insert into choice(s_no, course_no, score) values (‘2’, ‘1’, 40);
insert into choice(s_no, course_no, score) values (‘3’, ‘2’, 56);
insert into choice(s_no, course_no, score) values (‘4’, ‘2’, 94);
insert into choice(s_no, course_no, score) values (‘5’, ‘1’, 83);
insert into choice(s_no, course_no, score) values (‘1’, ‘1’, 83);
insert into choice(s_no, course_no, score) values (‘2’, ‘2’, 94);
select * from choice;
–teaching表
insert into teaching(t_no, course_no) values (‘1’, ‘2’);
insert into teaching(t_no, course_no) values (‘2’, ‘4’);
insert into teaching(t_no, course_no) values (‘3’, ‘5’);
insert into teaching(t_no, course_no) values (‘4’, ‘1’);
insert into teaching(t_no, course_no) values (‘5’, ‘3’);
select * from teaching;
–2. 创建教师表2(teacher2),向表中录入5条不同的记录,注意与教师表中数据必须不同,主要体现在主键上。
create table teacher2(
t_no char(6),
t_name char(10) not null,
t_sex char(4) check(t_sex=‘男’ or t_sex=‘女’),
t_birthday date,
t_title char(10)
)
–设置teacher2表的主键约束
alter table teacher2
add constraint pk_tea2_no primary key(t_no);

–插入数据
insert into teacher2(t_no, t_name, t_sex, t_birthday, t_title) values (‘6’, ‘刘老师’, ‘女’, TO_DATE(‘2011-11-14’,‘YYYY-MM-DD’), ‘班主任’);
insert into teacher2(t_no, t_name, t_sex, t_birthday, t_title) values (‘7’, ‘周老师’, ‘女’, TO_DATE(‘2010-10-04’,‘YYYY-MM-DD’), ‘讲师’);
insert into teacher2(t_no, t_name, t_sex, t_birthday, t_title) values (‘8’, ‘何老师’, ‘女’, TO_DATE(‘2013-11-23’,‘YYYY-MM-DD’), ‘教职工’);
insert into teacher2(t_no, t_name, t_sex, t_birthday, t_title) values (‘9’, ‘雷老师’, ‘男’, TO_DATE(‘2011-2-14’,‘YYYY-MM-DD’), ‘讲师’);
insert into teacher2(t_no, t_name, t_sex, t_birthday, t_title) values (‘10’,‘李老师’, ‘女’, TO_DATE(‘2013-01-31’,‘YYYY-MM-DD’), ‘讲师’);
select * from teacher2;

–1. 向教学管理系统的每个表中录入5条记录。录入时注意体会外键约束。
select * from department; --系部表
select * from class; --班级表
select * from student; --学生表
select * from course; --课程表
select * from teacher; --教师表
select * from choice; --选修表
select * from teaching; --授课表

–2. 创建教师表2(teacher2),向表中录入5条不同的记录,
–注意与教师表中数据必须不同,主要体现在主键上。
select * from teacher2

–3. 用多行数据录入的方法将教师表2中数据录入到教师表。
insert into teacher select * from teacher2
commit;

select * from teacher
–4. 利用表间数据复制的方法创建教师表3(teacher3),
–查看教师表3的内容,体会表间数据复制的含义。
create table teacher3
as
select * from teacher2

select * from teacher3

–5. 删除教师表3中所有数据,删除教师表3。
drop table teacher3

–6. 永久删除教师表2中数据,删除教师表2。
drop table teacher2

–7. 显示所有学生情况。
select * from student;

–8. 显示职称是讲师的职工号、姓名、出生日期。
select * from teacher
select t_no,t_name,t_birthday from teacher where t_title=‘讲师’;

–9. 显示与某个学生某门课程成绩相同的选修该门课程的所有学生的学号、姓名。
select * from student
select student.s_no,student.s_name from student
left join choice
on student.s_no=choice.s_no where score=(select score from choice where s_no=10) and
course_no=(select course_no from choice where s_no=10);

select student.s_no,student.s_name from student
left join choice
on student.s_no=choice.s_no where score=(select score from choice where s_no=10) and
course_no=(select course_no from choice where s_no=10);
–10. 显示成绩在60分以上的学生姓名、教师姓名和课程名称。

select student.s_name 学生姓名,teacher.t_name 教师姓名,course.course_name 课程名称 from student
left join choice
on student.s_no=choice.s_no
left join course
on course.course_no=choice.course_no
left join teaching
on teaching.course_no=course.course_no
left join teacher
on teacher.t_no=teaching.t_no
where choice.score>60;

–11. 将某个学生所学课程成绩低于60分的课程列出来。
select course_name from choice
left join course
on choice.course_no=course.course_no where score<60;

select * from course
select * from choice
–12. 将某门课程成绩低于60分的学生的成绩改为60分。
update choice set score=60 where score<60;

–步聚三
–1. 计算S=1+(1+3)+(1+3+5)+……+(1+3+……+N)。
create or replace function asdf(n number)
return number is
begin
if(n=1) then
return 1;
elsif()
dbms_output.put_line(n)
end;

–2. 用表类型数据结构,将某学生的姓名和入学成绩显示出来。
select s_name,s_score from student where s_no=‘1’;

–3. 利用数组类型数据结构,将某学生的姓名和入学成绩显示出来。
select s_name,s_score from student where s_no=‘1’;

–4. 利用静态游标和单个变量的方法,把学生表的记录提取出来,并逐行显示出来
declare
cursor asdf is select * from student;
begin
for er in asdf loop
dbms_output.put_line(er.s_name||er.s_sex||’ ‘||er.s_birthday||’ ‘||er.s_score||’ ‘||er.s_addf||’ '||er.class_no);
end loop;
end;

–5. 利用游标变量和记录的方法,把学生表的记录提取出来,并逐行显示出来。
declare
cursor asdf is select * from student;
begin
for er in asdf loop
dbms_output.put_line(er.s_name||er.s_sex||’ ‘||er.s_birthday||’ ‘||er.s_score||’ ‘||er.s_addf||’ '||er.class_no);
end loop;
end;

–步聚四
–1. 创建显示学生成绩的视图,显示结果包含学生学号、学生姓名、课程号、课程名称、
–教师编号、教师姓名、成绩。
–修改该视图使其只查询出成绩不及格的相关信息。
create view asdf
as
select student.s_no,student.s_name,course.course_no,course.course_name,teaching.t_no,
teacher.t_name,choice.score from student
left join choice
on student.s_no=choice.s_no
left join course
on choice.course_no=course.course_no
left join teaching
on teaching.course_no=course.course_no
left join teacher
on teaching.t_no=teacher.t_no;

select * from asdf where score>70;

–2. 为教师表建一同义词,利用同义词检索表中数据,比较与教师表的数据是否一致。
create synonym sb for teacher;
select * from sb
–3. 建一序列,利用序列向成绩表中插入成绩数据。
create sequence super;
select * from student;
update student set s_addf=super.nextval;

create sequence su
select * from student;
update student set s_a=super.nextval;
–4. 建一存储过程,利用传入参数传入教师性别,显示教师表中不同性别的教师数量,执行它。
create or replace procedure p_ssex
is
ssex varchar2(2);
nums number;
begin
select distinct(t_sex) into ssex ,count(*) into nums from teacher group by t_sex;
dbms_output.put_line(‘性别:’||ssex||‘人数:’||nums);
end;
select * from teacher
begin
p_ssex;
end;

create or replace procedure p_ssex
is
ssex varchar2(2);
nums number;
begin
select distinct(t_sex) into ssex,count() into nums from teacher group by t_sex;
dbms_output.put_line(‘性别:’||ssex||‘人数:’||nums);
end;
begin
p_ssex;
end;
–5. 建一存储函数,利用传入参数传入教师性别,返回教师表中不同性别的教师个数,
–执行它,比较与存储过程的不同。
create or replace function f_sex(ssex varchar2)
return number is
nums number;
begin
select count(
) into nums from teacher where t_sex=ssex;
return nums;
end;
select f_sex(‘女’) from dual;

create or
–6. 建一级联删除表级、行级触发器,当删除某个学生的信息时,
–将成绩表中该学生的成绩一并删除,比较表级与行级触发器的结果。
create or replace trigger tiger
before delete
on student
for each row
declare s_no char(6);
begin
s_no:=:old.s_no;
delete choice where s_no=s_no;
end;

猜你喜欢

转载自blog.csdn.net/anhldd/article/details/82965493