1.建立一个用户xiaoming ,密码a1234,授予xiaoming 创建视图和同义词的权限。
create user xiaoming identified by a1234;
grant create view,create synonym to xiaoming;
2.建立student表,该表主要描述学生的学号,姓名,出生日期,性别,院系编号。
create table student
(学号 number primary key,
姓名 varchar2(20),
出生日期 date,
性别 varchar2(5) check(性别='男' or 性别='女'),
院系编号 number
);
3.建立course表,该表主要描述课程号,课程名,先修课号,学分。
create table course
(课程号 number primary key,
课程名 varchar2(20),
先修课号 number,
学分 number
);
4.建立score表,该表主要描述学生的学号,课程号,成绩
create table score
(学号 number,
课程号 number,
成绩 number,
constraint fk_xh foreign key(学号) references student(学号),
constraint fk_kch foreign key(课程号) references course(课程号)
);
5.通过insert命令向每个表插入至少3条记录。(要求学生性别为'男'或'女'。注意定义表的主键外键。)
insert into student values(1,'张一','01-5月-2006','男',11);
insert into student values(2,'张二','01-4月-2006','女',22);
insert into student values(3,'张三','01-3月-2006','女',33);
insert into course values(111,'课程一',111,10);
insert into course values(222,'课程二',111,10);
insert into course values(333,'课程三',111,10);
insert into score values(1,111,20);
insert into score values(2,222,20);
insert into score values(3,333,30);
6.建立一个序列从1000开始,每次递增1。利用序列给student表插入3条记录(序列作为学号)。
create sequence seq_stu start with 1000 increment by 1;
insert into student values(seq_stu.nextval,'张四','01-5月-2006','男',44);
insert into student values(seq_stu.nextval,'张五','01-5月-2006','男',55);
insert into student values(seq_stu.nextval,'张六','01-5月-2006','男',66);
7.创建视图,视图中有学生的学号,姓名,课程名,成绩,学分
create view view1
as select student.学号,student.姓名,course.课程号,score.成绩,course.学分
from student,course,score
where student.学号=score.学号 and course.课程号=score.课程号;
8.创建视图,求每个学生的平均学分(包含姓名,平均学分)
create view view2
as select student.姓名,avg(学分) as 平均学分
from view1
group by 姓名;
9.利用循环实现1-100能被5整除的数的和。
set serveroutput on
declare
s integer :=0;
i integer :=1;
begin
while i<=100 loop
if mod(i,5)=0 then
s:=s+i;
end if;
i:=i+1;
end loop;
dbms_output.put_line('1到100能被5整除的数和为: '||s);
end;
10.求斐波纳序列前20项。
declare
f1 integer :=1;
f2 integer :=1;
f integer;
cnt integer :=3;
begin
dbms_output.put_line(1);
dbms_output.put_line(1);
while cnt<=20 loop
f:=f2+f1;
f1:=f2;
f2:=f;
dbms_output.put_line(f);
cnt:=cnt+1;
end loop;
end;
create user xiaoming identified by a1234;
grant create view,create synonym to xiaoming;
2.建立student表,该表主要描述学生的学号,姓名,出生日期,性别,院系编号。
create table student
(学号 number primary key,
姓名 varchar2(20),
出生日期 date,
性别 varchar2(5) check(性别='男' or 性别='女'),
院系编号 number
);
3.建立course表,该表主要描述课程号,课程名,先修课号,学分。
create table course
(课程号 number primary key,
课程名 varchar2(20),
先修课号 number,
学分 number
);
4.建立score表,该表主要描述学生的学号,课程号,成绩
create table score
(学号 number,
课程号 number,
成绩 number,
constraint fk_xh foreign key(学号) references student(学号),
constraint fk_kch foreign key(课程号) references course(课程号)
);
5.通过insert命令向每个表插入至少3条记录。(要求学生性别为'男'或'女'。注意定义表的主键外键。)
insert into student values(1,'张一','01-5月-2006','男',11);
insert into student values(2,'张二','01-4月-2006','女',22);
insert into student values(3,'张三','01-3月-2006','女',33);
insert into course values(111,'课程一',111,10);
insert into course values(222,'课程二',111,10);
insert into course values(333,'课程三',111,10);
insert into score values(1,111,20);
insert into score values(2,222,20);
insert into score values(3,333,30);
6.建立一个序列从1000开始,每次递增1。利用序列给student表插入3条记录(序列作为学号)。
create sequence seq_stu start with 1000 increment by 1;
insert into student values(seq_stu.nextval,'张四','01-5月-2006','男',44);
insert into student values(seq_stu.nextval,'张五','01-5月-2006','男',55);
insert into student values(seq_stu.nextval,'张六','01-5月-2006','男',66);
7.创建视图,视图中有学生的学号,姓名,课程名,成绩,学分
create view view1
as select student.学号,student.姓名,course.课程号,score.成绩,course.学分
from student,course,score
where student.学号=score.学号 and course.课程号=score.课程号;
8.创建视图,求每个学生的平均学分(包含姓名,平均学分)
create view view2
as select student.姓名,avg(学分) as 平均学分
from view1
group by 姓名;
9.利用循环实现1-100能被5整除的数的和。
set serveroutput on
declare
s integer :=0;
i integer :=1;
begin
while i<=100 loop
if mod(i,5)=0 then
s:=s+i;
end if;
i:=i+1;
end loop;
dbms_output.put_line('1到100能被5整除的数和为: '||s);
end;
10.求斐波纳序列前20项。
declare
f1 integer :=1;
f2 integer :=1;
f integer;
cnt integer :=3;
begin
dbms_output.put_line(1);
dbms_output.put_line(1);
while cnt<=20 loop
f:=f2+f1;
f1:=f2;
f2:=f;
dbms_output.put_line(f);
cnt:=cnt+1;
end loop;
end;