今早上班后清理工位时,发现这张废纸,记录一下。
下面是这个简单的数据库应用面试题
1、设计一个学生成绩表 (DDL 或者是逻辑结构)
2、用一条 SQ语句 查询总成绩大于270分的学生
3、用一条SQL语句 查询出每门课都大于80分的学生
坦白说,这个再常见不过的题并不难,甚至经常作为大学练习题。
表设计有2个方案:1. 横向存储的方式:学生+课程+成绩;2.纵向按列存储的方式:学生+课程A+课程B+...+课程N
细节来说
首先,如何来标记学生呢,看这道题,并没什么要求,所以,我们用学生姓名来标记。当然, 用学号也行。
其次,成绩字段的类型,如果没有小数,用int即可,如果有小数,可以用decimal(5,2)。
再次,选择方案1)与方案2)的两个设计方案的依据。如果基于课程会有变化这一点来考虑,则采用方案1);如果基于课程比较固定是那几科,则采用方案2)倒也不错。
但是,在面试中,的确发现了千人千面。上面的截图,我记得问候选人为什么要这么设计表,他的回答竟然是————为了能写出来后面的2个sql。