“SQL面试题2:查询大于80分的学生姓名”

需积分: 0 3 下载量 200 浏览量 更新于2023-12-27 收藏 55KB DOC 举报
本题要求通过一条SQL语句查询出每门课都大于80分的学生姓名,给出的数据表包括姓名(name)、课程(kecheng)和分数(fenshu),数据如下所示: ``` name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 ``` 解决这个问题可以有多种方式,下面分别给出两种解决方法: (1)使用MINUS操作符 ```sql select stu_name from stu_grade minus select stu_name from stu_grade g where g.grade <= 80 ``` (2)使用NOT EXISTS子查询 ```sql select distinct stu_name from stu_grade ou where not exists ( select 1 from stu_grade inn where ou.stu_name = inn.stu_name and inn.grade <= 80 ) ``` 以上两种方法都可以实现查询出每门课都大于80分的学生姓名的功能。具体来说,第一种方法使用了MINUS操作符来实现差集的获取,从所有学生姓名中排除了分数小于等于80分的情况,得到了符合条件的学生姓名。第二种方法使用了NOT EXISTS子查询来判断是否存在分数小于等于80分的情况,同样得到了符合条件的学生姓名。 在实际的SQL面试中,除了本题所涉及到的查询操作,通常还会涉及到数据表的连接、聚合函数的使用、子查询、索引的优化等内容。因此,对于SQL的面试准备,除了熟练掌握基本的SQL语法外,还需要对数据库的性能优化、索引设计等方面有一定的了解和实践经验。另外,面试过程中还可能会涉及到一些实际问题的解决思路和对SQL语句执行效率的讨论,因此需要对SQL在实际业务中的应用有一定的思考和总结。 综上所述,SQL的面试题涉及到的内容比较广泛,需要考生对SQL的操作、性能优化、应用场景等方面有一定的了解和实践经验,才能在面试中做出准确的回答并展现自己的能力。