SQL经典面试题及答案.pdf
文本预览下载声明
第一章
SQL经典面试题及答案
1. 用一条 SQL语句 查询出每门课都大于 80 分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
A: select distinct name from table where name not in (select distinct name from table where fenshu=80)
select name from table group by name having min(fenshu)80
select name from table group by name having count(kecheng)=3 and min(fenshu)=80
2. 学生表 如下 :
自动编号 学号 姓名 课程编号 课程名称 分数
页脚内容 1
第一章
1 2005001张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001张三 0001 数学 69
删除除了自动编号不同 , 其他都相同的学生冗余信息
A: delete tablename where自动编号 not in(select min( 自动编号 ) from tablename group by学号 , 姓名 ,
课程编号 , 课程名称 , 分数 )
3. 面试题:怎么把这样一个表儿
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成这样一个结果
页脚内容 2
第一章
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
答案一、
select year,
(select amount from aaa m where month=1 and m.year=aaa.year) as m1,
(select amount from aaa m where month=2 and m.year=aaa.year) as m2,
(select amount from aaa m where month=3 and m.year=aaa.year) as m3,
(select amount from aaa m where month=4 and m.year=aaa.year) as m4
from aaa group by year
4. 说明:拷贝表 ( 拷贝数据 , 源表名: a 目标表名: b)
SQL: insert into b(a, b, c) select d,e,f from a;
5.有一张表,里面有 3 个字段:语文,数学,英语。其中有 3 条记录分别表示语文 70 分,数学 80
分,英语 58 分,请用一条 sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于 80 表示优秀,大于或等于 60 表示及格,小于 60 分表示不及格。
显示格式:
页脚内容 3
显示全部