数据库面试题(4)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库面试题

四数据库写 SQL题( 30)

1.按要求写 SQL语句:根据集团成员培训业务,建立以下三张表:

S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄

C (C#,CN ) C#,CN 分别代表课程编号、课程名称

SC ( S#,C#,G ) S#,C#,G分别代表学号、所选修的课程编号、学习成绩

要求如下:

1)使用标准 SQL语句查询成员名单中所属单位叫“技术一部”的人员总数及

平均年龄;

2)使用标准的 SQL语句更新学号为‘S#1’的姓名为“Mike”;

3)使用嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位;

4)使用嵌套语句查询不选修课程编号为‘C5’的学员姓名和所属单位;

5)查询选修课程超过 5门的学员学号和所属单位;

解答:

1) select count(SN),avg(SA) from S where SD='技术一部';

2) update S set SN='Mike' where S#='S#1';

3) select SN,SD from S where S#=(select S# from SC where C#='C2');

4) select SN,SD from S where S# not in(select S# from SC where C#='C5');

5) select S#,SD from S where S#=

(select S# from SC group by S# having count(S#)>=5);

2.请根据以下四张表(其中course_t表的 teacher_id字段是teacher_t表的 id字段的外键引用),

拼写出相应的sql语句(oracle语法)。(15分)

学生表:students_t

id name sex

001赵学生 Male

002钱学生 Male

003孙学生 Male

004李学生 Female

005周学生 Female

………

教师表:teacher_t

id name sex

001吴老师 Male

002郑老师 Male

003王老师 Male

004刘老师 Female

005张老师 Female

课程表:course_t

id name credit teacher_id

001语文 3 001

002数学 3 002

003英语 4 003

004物理 3 004

005化学 2 005

006政治 1 001

007生物 1 005

008计算机 2 005

选课表:student_course_t

id student_id course_id

001 001 001

002 001 002

003 001 003

004 002 001

005 002 007

………

1)统计每个学生选修的学分,并按学分降序排序

2)统计每个学生选修的所有课程和对应的任课老师;并按学生 Id和课程 Id排序

3)统计所有学生、所有课程和所有任课老师的对应关系;并按学生 Id和课程 Id排序

解答:

1)select sc.student_id,count(c.credit)

from students_t s, course_t c, student_course_t sc

where s.id=sc.student_id and c.id=sc.course_id group by

sc.student_id order by count(c.credit);

2) select as s_name, as c_name , as t_name

from students_t s, course_t c, student_course_t sc,teacher_t t

where s.id=sc.student_id and c.id=sc.course_id and t.id=c.teacher_id order by s.id,c.id;

3)与 2)相同

3.假设有以下的两个表:

Cus_A

ID* Name Address

………

Cus_B

ID* Name Address

………

*主键

表 Cus_A 和表 Cus_B的结构完全相同,表 Cus_A 和表 Cus_B中既存在 ID相同的记录,也存在 ID不

同的记录。现要求将ID只存在于表表Cus_A 中而不存在于表Cus_B中的记录全部插入到Cus_B表中,

并用表 Cus_A中的记录更新 Cus_B中相同的 ID的记录,请写出完成这一功能的存储过程。解答:

create or replace procedure test

is

cust_record cus_a%rowtype ;

cursor cust_cursor is select id,name,address from cus_a;

Begin

Open cust_cursor;

LOOP

Fetch cust_cursor into cust_record;

EXIT WHEN cust_cursor %NOTFOUND;

--先删除在插入

delete from cus_b where id=cust_record.id;

insert into cus_b values(cust_record.id, cust_, cust_record.address);

END LOOP;

end;

4、已有“成绩”如下表所示:

学号课程号分数

S1 C1 80

S1 C2 75

相关文档
最新文档