数据库在软件测试面试过程中是非常常见的,面试官可能直接当场让你手写SQL。
这里分享一套数据库常见的面试题,从建表开始,墨石带领大家解锁答案!
1、创建以下表
①学生表(Student)
字段: SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
答案:
create table Student
(
Sid varchar(8) not null primary key, /*学生编号,括号里是允许输入的长度,加主键*/
Sname varchar(10) not null, /*学生姓名,加not null 表示不允许为空*/
Sage int, /*学生年龄*/
Ssex varchar(10) /*学生性别*/
)
②课程表(Course)
字段:CId 课程编号,Cname 课程名称,Tid教课老师编号
答案:
create table Course
(
Cid varchar(8) not null primary key, /*课程编号*/
Cname varchar(10) not null, /*课程名称*/
Tid varchar(8) /*教课老师编号*/
)
③教师表(Teacher)
字段:TId 教师编号,Tname 教师姓名
答案:
create table Teacher
(
Tid varchar(8) not null primary key, /*教师编号*/
Tname varchar(10) not null /*教师姓名*/
)
④成绩表(SC)
字段:SId 学生编号,CId 课程编号,score 分数
答案:
create table SC
(
Sid varchar(8) not null, /*学生编号*/
Cid varchar(8) not null, /*课程编号*/
score int /*成绩*/
)
2、在表中插入数据
①学生表(Student)
Sid |
Sname |
Sage |
Ssex |
1 |
张敏 |
20 |
女 |
2 |
吴晓磊 |
21 |
男 |
3 |
钱娟娟 |
19 |
女 |
4 |
李少臣 |
21 |
男 |
5 |
师诗 |
21 |
女 |
6 |
朱萌 |
21 |
女 |
7 |
张雷 |
22 |
男 |
8 |
陈宇轩 |
21 |
男 |
答案:
insert into Student(Sid,Sname,Sage,Ssex) values('1','张敏','20','女');
insert into Student(Sid,Sname,Sage,Ssex) values('2','吴晓磊','21','男');
insert into Student(Sid,Sname,Sage,Ssex) values('3','钱娟娟','19','女');
insert into Student(Sid,Sname,Sage,Ssex) values('4','李少臣','21','男');
insert into Student(Sid,Sname,Sage,Ssex) values('5','师诗','21','女');
insert into Student(Sid,Sname,Sage,Ssex) values('6','朱萌','21','女');
insert into Student(Sid,Sname,Sage,Ssex) values('7','张雷','22','男');
insert into Student(Sid,Sname,Sage,Ssex) values('8','陈宇轩','21','男');
②课程表
Cid |
Cname |
Tid |
1 |
语文 |
1 |
2 |
数学 |
3 |
3 |
英语 |
2 |
答案:
insert into Course(Cid,Cname,Tid) values('1','语文','1');
insert into Course(Cid,Cname,Tid) values('2','数学','3');
insert into Course(Cid,Cname,Tid) values('3','英语','2');
③教师表
Tid |
Tname |
1 |
吕薇 |
2 |
张柏龙 |
3 |
张峰 |
答案:
insert into Teacher(Tid,Tname) values('1','吕薇');
insert into Teacher(Tid,Tname) values('2','张柏龙');
insert into Teacher(Tid,Tname) values('3','张峰');
④成绩表
Sid |
Cid |
score |
1 |
1 |
80 |
1 |
2 |
85 |
1 |
3 |
89 |
2 |
1 |
67 |
2 |
2 |
72 |
2 |
3 |
78 |
3 |
1 |
90 |
3 |
2 |
89 |
3 |
3 |
98 |
4 |
1 |
68 |
4 |
2 |
58 |
4 |
3 |
77 |
5 |
1 |
96 |
5 |
2 |
92 |
5 |
3 |
88 |
6 |
1 |
76 |
6 |
2 |
77 |
6 |
3 |
83 |
7 |
1 |
90 |
7 |
2 |
92 |
7 |
3 |
99 |
8 |
1 |
80 |
8 |
2 |
82 |
8 |
3 |
79 |
答案:
insert into SC(Sid,Cid,score) values('1','1','80');
insert into SC(Sid,Cid,score) values('1','2','85');
insert into SC(Sid,Cid,score) values('1','3','89');
/*以下略*/
3、按以下要求答题
(1)查询名字为赵敏的学生表数据
答案:
select * from student where Sname = '张敏'
(2)修改编号2的学生名字为赵莹莹
答案:
update student set Sname = '赵莹莹'
where Sid = '2'
(3)修改语文老师的名字为吴晓敏
答案:
update student set Tname = '吴晓敏'
where Tid = '2'
(4)删除名字为朱萌的学生
答案:
delete from student where Sname = '朱萌
(5)查询语文老师的名字
答案:用inner join联查两个表
select teacher.Tname from teacher
inner join course
where teacher.Tid = course.Tid and course.Tid = '1'
(6)统计语文成绩大于70的学生信息
答案:
select a.Sname,a.Sage,a.Ssex,b.score from Student a, SC b
where a.Sid=b.Sid and b.Cid=1 and b.score >70
(7)统计各科分数大于80的人
答案:
select a.Sid,a.Sname
from student a,
(select Sid from sc
group by Sid
having min(score) > 80) as b
where b.Sid = a.Sid;
最后,关于软件测试学习资源、面试、实战项目等等,都可以moshi-tester私我。
墨石精心整理了多种软件测试学习资源,点击下方链接获取: