SQL面试经典题目与解答

需积分: 9 1 下载量 184 浏览量 更新于2024-07-25 收藏 110KB DOC 举报
"SQL面试题及解答" 在SQL面试中,面试官通常会考察候选人的SQL基础知识、查询优化、复杂查询处理以及对数据库设计的理解。以下是一些常见的SQL面试题及其解答: 1. 查询每门课都大于80分的学生姓名: ```sql SELECT DISTINCT name FROM table WHERE name NOT IN (SELECT DISTINCT name FROM table WHERE score <= 80); ``` 这个查询首先找出所有分数低于或等于80的学生,然后从全表中排除这些学生,得到每门课都超过80分的学生列表。 2. 删除重复的学生记录: ```sql DELETE FROM tablename WHERE 自动编号 NOT IN (SELECT MIN(自动编号) FROM tablename GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数); ``` 这个查询通过`GROUP BY`语句将重复记录分组,然后保留每个组的最小自动编号,删除其余的重复记录。 3. 所有可能的比赛组合: ```sql SELECT a.name, b.name FROM team a, team b WHERE a.name < b.name; ``` 这个查询使用了自连接,找到所有不同的团队组合,`WHERE a.name < b.name`确保了没有重复的组合。 4. 查询所有月份的发生额都比101科目高的科目: ```sql SELECT a.* FROM TestDB a JOIN (SELECT Occmonth, MAX(DebitOccur) AS Debit101Occur FROM TestDB WHERE AccID = '101' GROUP BY Occmonth) b ON a.Occmonth = b.Occmonth WHERE a.DebitOccur > b.Debit101Occur; ``` 这个查询首先找出101科目每个月的最大发生额,然后与TestDB中的所有记录进行联接,找出那些在相同月份且发生额高于101科目的记录。 这些面试题覆盖了SQL的基础操作,如选择、分组、连接和子查询,同时也涉及到了去除重复数据和复杂条件查询等进阶主题。在实际面试中,面试官可能会根据应聘者的回答进一步深入,例如询问性能优化、索引使用、事务处理、视图、存储过程等内容。了解并熟练掌握这些知识点对于任何SQL职位都是至关重要的。