oracle考试题(附答案)

/*****
用SQL语句完成下列题目
1、用SQL语句创建一个如下图所示的数据表,表名为Students,建在名为ks的数据库中:
列名 数据类型及长度 是否为空 备注
学号 CHAR(8) NO 主键
姓名 CHAR(10) NO
系别 CHAR(20) NO 默认值为"计算机系"
2、向上面的表Students中插入一个'出生年月'字段,数据类型为date。
将Students表中所有学号以'03J'开头的学生的系别改为'经管系'。
删除Students表中所有'1978-12-3'以前出生的学生信息。
*****/

create table Students
(
学号 char(8) not null primary key,
姓名 char(10) not null,
系别 char(20) default '计算机系' not null
);

alter table Students
add(出生年月 date );

update Students
set 系别='经管系'
where 学号 like '03J%';

delete
from Students
where 出生年月<to_date('19781203','YYYYMMDD');
/**********
根据下列数据库中表的结构,回答问题
学生(学号char(8) primary key,
姓名char(8),
班级char(10),
性别char(2),
出生日期date,
出生城市char(10),
入学成绩NUMBER)
课程(课程号char(6) primary key,
课程名char(20))
学生选课信息表(学期char(2),
学号char(8) references学生(学号),
课程号char(6) references课程(课程号),
成绩NUMBER check(成绩>=0 and 成绩<=100)
*********/
--1、 查询缺少成绩的学生的学号和相应的课程号
--2、 查询03物流1班全体学生的学号与姓名,且按照入学成绩的降序排列。
--3、 统计班级的平均入学总分在350以上的班级和这些班级的平均入学总分。
--4、 查询选修了'实用英语'课程的学生的学号,以及实用英语的成绩。
--5、查询第一学期所选课程平均成绩前三名的那些学生的学号

select 学号,课程号
from 学生选课信息表
where 成绩 is null;

select 学号,姓名
from 学生
where 班级='03物流1班'
order by 入学成绩 desc;

select 班级 avg(入学成绩)
from 学生
group by 班级
having sun(入学成绩)>350;

select 学号,成绩
from 学生选课信息表
where 课程号=(select 课程号 from 课程 where 课程名='实用英语');

select top3 学号
from 学生选课信息表
group by 学号
having 学期='一'
order by avg(成线) desc;
/*******
程序设计
1、书写语句将SC表中是所有学生的成绩加10分,如果加分以后仍然有小于60分的,那么继续加10分,
直到所有学生的成绩超过60分或者有学生的最高分超过90了(所用到的表结构为SC(SNO,CNO,GRADE)
其中SNO代表学生的学号,CNO代表学生所选的课,GRADE代表成绩)

2、在数据库JXGL中的teachers中创建一个触发器,如果添加的教师的工资超过5000,则

拒绝插入该记录。
(假设每次只插入一条记录即可)(所用到的表结构如下:teachers(tno,t
name,dept,pay)其中TNO代表
教师编号,TNAME代表教师姓名,DEPT代表教师系别,PAY代表教师的工资)
*****/

--1
declare
v_max number;
v_min number;
begin
select max(grade) into v_max ,min(grade) into v_min from SC
while v_max<=90 and v_min<60
loop
update SC
set grade=grade+10
select select max(grade) into v_max ,min(grade) into v_min from SC
end loop;
end;
create table teachers
(
tno char(6) not null primary key,
tname char(8),
dept char(20),
pay number
)
create trigger t1
before insert on teachers for each row
begin
if :new.pay>5000 then
rollback transaction;
end if;
end t1;

insert into teachers
values('422','王小','33',6000)


select * from teachers



----------------------------曹JB----------------------------------------------------------


--用SQL语句创建一个如下图所示的数据表,表名为Students,建在名为ks的数据库中:
--列名 数据类型及长度 是否为空 备注
--学号 CHAR(8) NO 主键
--姓名 CHAR(10) NO
--系别 CHAR(20) NO 默认值为"计算机系"
create table students
(学号 char(8) not null primary key,
姓名 char(10) not null,
系别 char(20) default'计算机系'not null
);
--向上面的表Students中插入一个'出生年月'字段,数据类型为date。
alter table students
add(出生年月 date not null);
--将Students表中所有学号以'03J'开头的学生的系别改为'经管系'。
update students
set 系别='经管系'
where 学号 like '03J%'
--删除Students表中所有'1978-12-3'以前出生的学生信息。
delete from students
where 出生年月<to_date ('1978-12-3','YYYYMMDD');
--用SQL语句创建一个如下图所示的数据表,表名为Students,建在名为ks的数据库中:
--列名 数据类型及长度 是否为空 备注
--学号 CHAR(8) NO 主键
--姓名 CHAR(10) NO
--系别 CHAR(20) NO 默认值为"计算机系"
create table student
(学号 char(8) not null primary key,
姓名 char(10) not null ,
系别 char(20) default'计算机系'not null
);
-- 为表Students中'姓名'字段添加一个唯一约束。
alter table student
add (constraint "h" unique (姓名) )
--删除Students表中所有'计算机系'生的学生信息。
delete from student
where 系别='计算机系'
--删除Students表中'系别'字段。
alter table students
drop column 系别
--用SQL语句创建一个如下图所示的数据表,表名为SC,建在名为ks的数据库中:
--列名 数据类型及长度 是否为空 备注
--学号 CHAR(8) NO 主键
--课程编号 CHAR(10) NO
--成绩 NUMBER YES
create tab

le sc
(学号 char(8) not null ,
课程编号 char(10) not null,
成绩 number null,
constraint "sk_sc" primary key("学号","课程编号")
)
--向上面的表SC中添加一个字段'学期',允许为空,数据类型为NUMBER。
alter table sc
a
dd (学期 number null )
--、将SC表中'成绩'字段的数据类型修改为NUMBER(4,2)。
alter table sc
modify(成绩 number(4,2))
-- 向SC表添加一条记录('S040301','T01',90)。
insert into sc(学号,课程编号,成绩) values ('S040301','T01',90)

--、用SQL语句创建一个如下图所示的数据表,表名为Teachers,建在名为ks的数据库中:
--列名 数据类型及长度 是否为空 备注
--教师编号 CHAR(8) NO 主键
--教师姓名 CHAR(10) NO 唯一
--性别 CHAR(2) YES

create table teachers
(教师编号 char(8) not null primary key,
教师姓名 char(10) not null unique,
性别 char(2) null
)
--向上面的表Teachers中插入一个'部门'字段,数据类型为CHAR(20),该字段默认值为'计算机系'
alter table teachers
add(部门 char(20) default '计算机系')
--为Teachers表中'性别'字段添加核查约束,保证输入的数据只能是"男"或者"女"。
alter table teachers
add( constraint "h" check (性别 in('男','女')))
--删除Teachers表中'性别'字段
alter table teachers
drop column 性别

create table xs
( 学号 char(8) primary key,
姓名 char(8),
班级 char(10),
性别 char(2),
出生日期 date,
出生城市 char(10),
入学成绩 NUMBER
)
create table kc
( 课程号 char(6) primary key,
课程名 char(20))

create table xsx
( 学期 char(2),
学号 char(8) references 学生(学号),
课程号 char(6) references 课程(课程号),
成绩 NUMBER check(成绩>=0 and 成绩<=100)
)
select xh as xsx where







相关文档
最新文档