软件测试笔试——数据库题型

软件测试笔试——数据库题型


1.一个简单的学生成绩表,表名Student,有字符类型的Name项和整型的score项,这两个项都不允许为空。按下面要求写出相应的SQL语句。

a) 求成绩大于60的学生数量。

答:select count(*) from student where score>60;

b)把学生“张三”的成绩由75分改成80分

答:update student set score=80 where name=’张三’;

2.

student表(sno,sname,sage)--学号,姓名,学生年龄

course表(cno,cname,tno)--课程代码,课程名称,老师工号

sc表(sno,cno,score)--学号,课程代码,分数

teacher表(tno,tname)--老师工号,老师姓名

1.查询'001'课程比'002'课程成绩高的的所有学生学号

1) select t1.sno from sc t1,sc t2 where t1.sno = t2.sno and t1.cno = '001' and t2.cno = '002' and t1.score>t2.score;

2.查询平均成绩大于60分的学生学号和平均成绩

2) select sno,avg(score) from sc group by sno having avg(score)>60;

3.查询所有学生的学号,姓名,选课数,总成绩。

3) select sum(t2.score),count(t2.cno),t1.sno,t1.sname from student t1,sc t2 where t1.sno = t2.sno group by t1.sno,t1.sname;

4.查询姓李老师的个数

4) select count(*) from teacher where tname like '李%';

5.查询没有学过叶平老师课程的学生的姓名和学号

5) select t1.sno,t1.sname from student t1, sc t2,course t3, teacher t4

where t1.sno = t2.sno and t2.cno = t3.cno and t3.tno = t4.tno and

t4.tname!='叶平';

6.查询同时学过001,002号课程的学生学号和姓名

6) select t1.sno,t1.sname from student t1 where exists(select '1' from

sc t2 where t2.sno = t1.sno and t2.cno = '001') and exists (select '1'

from sc t2 where t2.sno = t1.sno and t2.cno = '002');

7.查询学过叶平老师所有课程的学生学号和姓名

7) select sno,sname from student where sno in (select sno from sc where

cno in (select cno from course where tno = (select tno from teacher

where tname='叶平')) group by sno having count(*) = (select count(cno)

from course where tno = (select tno from teacher where tname='叶平')));

8.查询所有课程成绩小于60分的学生姓名和学号

8) select sno,sname from student where sno in(select sno from sc group by sno having max(score)<60);

3.

作者表authors

作者编号authorId int

作者姓名name varchar(50)

性别sex varchar(2)

年龄age int

居住城市city varchar(50)

联系电话telephone varchar(11)

销量sales int

最新出版日期 ISBN datetime

1)查询姓张的作者信息

1)select * from authors where name like '%张%';

2)查询联系电话第三位为8,9并以888结尾的作者信息

2)select * from authors where (SUBSTR(telephone,3,1)='8' or

SUBSTR(telephone,3,1)='9') and

SUBSTR(telephone,length(telephone)-2,3)='888';

3)查询年龄在20-50之间的男性作者信息

3)select * from authors where age>20 and age<50 and sex='男';

select * from authors where age BETWEEN 20 and 50 and sex='男';

4)查询显示作者姓名的第二个字符

4)select SUBSTR(name,2,1) from authors;

5)查询显示作者姓名的长度

5)select length(name) from authors;

6)查询显示最年轻的5为作者的平均销量

6)select avg(sales) from (select sales from authors order by age asc limit 0,5) t;

7)查询显示作者的姓名,出声年份,销量,并按销量降序排列

7)select name,YEAR(CURDATE())-age,sales from authors order by sales desc;

8)查询显示最新出版日期在今年前半年的作者信息

8)select * from authors where MONTH(ibsn)<7;



4.

三个表,表字段如下

学生表:s(sno,sname),sno为学号,sname为姓名。

课程表:c(cno,cname,cteacher),cno为课程号,cname为课程名,cteacher为任课老师的姓名。

选课表:sc(sno,cno,scgrade),scgrade为成绩。

用sql实现下列需求:

1)检索出没有选修过'李明'老师课程的所有同学姓名。

1)select sname from s where sno not in(select DISTINCT sno from sc where cno=(select cno from c where cteacher='李明'));

2)检索出两门以上(含两门)不及格的学生姓名和平均成绩。

2)select sname,avg(scgrade) from s,sc where s.sno = sc.sno and scgrade<60 group by s.sno having count(*)>=2;

3)检索出既学过'1'号课程,又学过'2'号课程的所有学生的姓名。

3)select sname from s,sc where s.sno = sc.sno and cno in(1,2) group by s.sno having count(*)=2;

4)检索出'1'号课程成绩比'2'号课程成绩高的所有学生的学号及其'1'号课和'2'号课的成绩。

4)select t1.sno,t1.scgrade,t2.scgrade from sc t1,sc t2 where t1.sno =

t2.sno and t1.cno = 1 and t2.cno = 2 and t1.scgrade>t2.scgrade;

答:

建表语句:

drop table if EXISTS s;

create table s(

sno int not null PRIMARY key,

sname VARCHAR(10)

)DEFAULT CHARSET=utf8;

drop table if EXISTS c;

create table c(

cno int not null PRIMARY key,

sname VARCHAR(12),

cteacher VARCHAR(20)

)DEFAULT charset=utf8;

drop table if EXISTS sc;

create table sc(

sno int,

cno int,

scgrade int

)default charset=utf8;

插入测试数据:

delete from s;

delete from c;

delete from sc;

insert into s VALUES(16001,'张三'),(16002,'李四'),(16003,'王五');

insert into c values(1,'语文','老张'),(2,'数学','张少天'),(3,'外语','李明');

insert into sc values(16001,1,55),(16001,2,40),(16002,1,51),(16002,3,80),(16003,1,40),(16003,2,55),(16003,3,50);

5.

Student(Sid,Sname,Sage,Ssex) 学生表

Course(Cid,Cname,Tid) 课程表

SC(Sid,Cid,score) 成绩表

Teacher(Tid,Tname) 教师表

(1)查询所有课程成绩小于60分的同学学号、姓名;

1)select sid,sname from student where sid not (select distinct sid from sc where score>=60);

(2)查询和16001号的同学学习的课程完全相同的其他同学学号和姓名;

2)SELECT t1.sid,t1.sname  FROM student t1 WHERE EXISTS (SELECT * FROM sc

t2 WHERE t1.sid = t2.sid AND t2.cid IN (SELECT DISTINCT cid FROM sc

WHERE sid = 16001)) AND NOT EXISTS (SELECT * FROM sc t2 WHERE t1.sid =

t2.sid AND t2.cid NOT IN (SELECT DISTINCT cid FROM sc WHERE sid =

16001)) AND t1.sid != 16001;

(3)查询各科成绩最高和最低的分:以如下形式显示:课程ID、最高分、最低分。

3)select cid,max(score),min(score) from sc group by cid;

建表语句以及初始化数据:

drop table if EXISTS student;

create table student(

sid int not null PRIMARY key,

sname VARCHAR(10),

sage int,

ssex VARCHAR(10)

)DEFAULT CHARSET=utf8;

drop table if EXISTS course;

create table course(

cid int not null PRIMARY key,

cname VARCHAR(12),

tid int not null

)DEFAULT charset=utf8;

drop table if EXISTS sc;

create table sc(

sid int,

cid int,

score int

)default charset=utf8;

drop table if EXISTS teacher;

create table teacher(

tid int,

tname VARCHAR(10)

)default charset=utf8;

delete from student;

delete from course;

delete from sc;

delete from teacher;

insert into student VALUES(16001,'张三',21,'男'),(16002,'李四',21,'男'),(16003,'王五',21,'男');

insert into course values(1,'语文',1001),(2,'数学',1002),(3,'外语',1003);

insert into sc values(16001,1,55),(16001,2,40),(16002,1,51),(16002,3,80),(16003,1,40),(16003,2,55),(16003,3,50);

insert into teacher values(1001,'李老师'),(1002,'徐老师'),(3,'张老师');

查询语句:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察。特别...
    丶Orz丶阅读 395评论 0 0
  • 1).创建数据库 create database学生选课数据库 2).创建四张表 Create table Stu...
    blvftigd阅读 1,579评论 0 0
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,227评论 0 7
  • 一。数据库基本概念:数据、数据库。数据模型/DBMS(数据库管理系统)/DBS(数据库系统)二。数据库内部组成二维...
    S_s_s_a53f阅读 517评论 0 0
  • Student(Sid,Sname,Sage,Ssex) 学生表Course(Cid,Cname,Tid) 课程表...
    小炉炉阅读 1,444评论 0 0