数据库开发面试题答案详解.docx
- 文档编号:5960586
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:10
- 大小:17.28KB
数据库开发面试题答案详解.docx
《数据库开发面试题答案详解.docx》由会员分享,可在线阅读,更多相关《数据库开发面试题答案详解.docx(10页珍藏版)》请在冰豆网上搜索。
数据库开发面试题答案详解
35.表名:
购物信息
购物人商品数量
A甲2
B乙4
C丙1
A丁2
B丙5
......
(其它用户实验记录大家可自行插入)
给出所有购入商品为两种或两种以上的购物人记录
--创建表
createtable购物信息
(
购物人varchar(20),
商品varchar(20),
数量number
);
--往表中插入数据
insertinto购物信息values('A','甲',2);
insertinto购物信息values('B','乙',4);
insertinto购物信息values('C','丙',1);
insertinto购物信息values('A','丁',2);
insertinto购物信息values('B','丙',5);
insertinto购物信息values('D','丙',3);
insertinto购物信息values('E','丙',5);
insertinto购物信息values('F','丙',1);
insertinto购物信息values('G','甲',9);
insertinto购物信息values('G','乙',4);
insertinto购物信息values('G','丙',3);
--查看一下刚插入的信息是否正确
select*from购物信息
--答案
select*from购物信息
where购物人in(select购物人from购物信息groupby购物人havingcount(*)>=2)
orderby购物人
36.表名:
成绩表
姓名课程分数
张三语文81
张三数学75
李四语文56
李四数学91
王五语文81
王五数学100
王五英语49
......
(其它用户实验的记录大家可自行插入)
给出成绩全部合格的学生信息(包含姓名、课程、分数),注:
分数在60分以上评人合格
createtable成绩表
(
姓名varchar(20),
课程varchar(20),
分数number
);
insertinto成绩表values('张三','语文',81);
insertinto成绩表values('张三','数学',75);
insertinto成绩表values('李四','语文',56);
insertinto成绩表values('李四','数学',91);
insertinto成绩表values('王五','语文',81);
insertinto成绩表values('王五','数学',100);
insertinto成绩表values('王五','英语',49);
select*from成绩表;
--答案
select*from成绩表
where姓名notin(select姓名from成绩表where分数<60groupby姓名)
37.表名:
高考成绩
准考证号课程成绩
2006001语文119
2006001数学108
2006002物理142
2006001化学136
2006001物理127
2006002数学149
2006002英语110
2006002语文105
2006001英语98
2006002化学129
2006003英语100
2006003物理81
2006003化学95
2006003语文35
2006003数学118
......
(其他用记实验的记录大家可自行插入)
给出高考分数在600分以上的学生准考证号
createtable高考成绩
(
准考证号number,
课程varchar(20),
成绩number
);
insertinto高考成绩values(2006001,'语文',119);
insertinto高考成绩values(2006001,'数学',108);
insertinto高考成绩values(2006002,'物理',142);
insertinto高考成绩values(2006001,'化学',136);
insertinto高考成绩values(2006001,'物理',127);
insertinto高考成绩values(2006002,'数学',149);
insertinto高考成绩values(2006002,'英语',110);
insertinto高考成绩values(2006002,'语文',105);
insertinto高考成绩values(2006001,'英语',98);
insertinto高考成绩values(2006002,'化学',129);
insertinto高考成绩values(2006003,'英语',100);
insertinto高考成绩values(2006003,'物理',81);
insertinto高考成绩values(2006003,'化学',95);
insertinto高考成绩values(2006003,'语文',35);
insertinto高考成绩values(2006003,'数学',118);
update高考成绩set成绩=140where准考证号=2006003and课程='语文'
update高考成绩set成绩=160where准考证号=2006003and课程='物理'
select*from高考成绩orderby准考证号
--答案
--方法一:
select准考证号,总成绩
from(select准考证号,sum(成绩)总成绩from高考成绩groupby准考证号orderby总成绩desc)
where总成绩>600
--方法二:
select准考证号,总成绩
from(select准考证号,sum(成绩)over(partitionby准考证号orderby准考证号)总成绩from高考成绩)
where总成绩>600
38.表名:
商品表
名称产地进价
苹果烟台2.5
苹果云南1.9
苹果四川3
西瓜江西1.5
西瓜北京2.4
.....
(其它用户实验的记录大家可自行录入)
给出平均进价在2元以下的商品名称
createtable商品表
(
名称varchar(20),
产地varchar(20),
进价number
);
insertinto商品表values('苹果','烟台',2.5);
insertinto商品表values('苹果','云南',1.9);
insertinto商品表values('苹果','四川',3);
insertinto商品表values('西瓜','江西',1.5);
insertinto商品表values('西瓜','北京',2.4);
select*from商品表
select名称,平均价from(select名称,avg(进价)平均价from商品表groupby名称)
where平均价<2
39.表名:
club
idgenderage
67M19
68F30
69F27
70F16
71M32
......
(其余测试数据请自行插入)
查询出该俱乐部里男性会员和女性会员的总数
createtableclub
(
idnumber,
genderchar,
agenumber
);
insertintoclubvalues(67,'M',19);
insertintoclubvalues(68,'F',30);
insertintoclubvalues(69,'F',27);
insertintoclubvalues(70,'F',16);
insertintoclubvalues(71,'M',32);
select*fromclub
--答案
selectsum(casewhengender='M'thencount(*)end)男性会员数量,
sum(casewhengender='F'thencount(*)end)女性会员数量
fromclub
groupbygender
40.表名:
team
idname
1a
2b
3b
4a
5c
6c
7c
8d
要求:
执行一个删除语句,当name列上有相同时,只保留id这列上值小的
例如:
删除后的结果应如下:
idname
1a
2b
5c
请写出SQL语句
createtableteam
(
idnumber,
namevarchar2(20)
);
insertintoteamvalues(1,'a');
insertintoteamvalues(2,'b');
insertintoteamvalues(3,'b');
insertintoteamvalues(4,'a');
insertintoteamvalues(5,'c');
insertintoteamvalues(6,'c');
insertintoteamvalues(7,'c');
insertintoteamvalues(8,'d');
select* fromteam
selectmin(id)fromteamawherea.namein(selectidfromteamwhereid=1orid=2orid=5orid=8groupbyname)
--答案
--方法一:
deletefromteamwhereidnotin(selectmin(id)idfromteamgroupbynamehavingcount(*)>=1)
--groupbynamehavingcount(*)>=1统计以姓名分组里面的记录条数;不能使用orderby排序
--方法二:
deletefromteamwhereidnotin(selectmin(id)idfromteamgroupbyname)
select* fromteam
41.表名:
student
namecoursescore
张青语文72
王华数学72
张华英语81
张青物理67
李立化学98
张燕物理70
张青化学76
查询出“张”姓学生中平均成绩大于75分的学生信息
createtablestudent
(
namevarchar(20),
coursevarchar(20),
scorenumber
);
insertintostudentvalues('张青','语文',72);
insertintostudentvalues('王华','数学',72);
insertintostudentvalues('张华','英语',81);
insertintostudentvalues('张青','物理',67);
insertintostudentvalues('李立','化学',98);
insertintostudentvalues('张燕','物理',70);
insertintostudentvalues('张青','化学',76);
insertintostudentvalues('张沈超','化学',90);
insertintostudentvalues('张青','英语',140);
select*fromstudent
--答案
select*fromstudent
wherenamein(selectnamefromstudentwherenamelike'张%'groupbynamehavingavg(score)>75)
orderbyname
----查询所有人的平均成绩
selectname,avg(score)avgfromstudentgroupbynameorderbyavgdesc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 开发 试题答案 详解