zoukankan      html  css  js  c++  java
  • MySQL面试试题与答案

    本次试题设计两个表:student、exam

               student表

              exam表

    一、写一条SQL语句,按学号排序输出数学成绩

    SELECT s.sno sno,score
    FROM exam e,student s
    WHERE e.`subject` = '数学' AND e.name = s.name
    GROUP BY s.sno

    二、写一条SQL语句,按学号排序,输出:学号,姓名,总分,平均分

    SELECT sno,s.`name`,SUM(score) ss,AVG(score) gg
    FROM exam e,student s
    WHERE e.`name` = s.`name`
    GROUP BY `name`
    ORDER BY ss

    三、写一条SQL语句,查询出数学考试成绩最高的学生学号和姓名

    SELECT sno,exam.name name,score
    FROM exam,student
    WHERE (exam.`subject` = '数学') AND (exam.name = student.name)
    ORDER BY exam.score DESC
    LIMIT 0,1;

    四、写一条SQL语句,查询出每门课都大于80分的学生姓名

    方法一:ALL()函数

    思路:查找出每个人所有科目是否都大于80

    SELECT DISTINCT NAME 
    FROM exam a
    WHERE 80 < ALL(SELECT score 
                   FROM exam e
                   WHERE e.name = a.name );

    方法二:not exists 字段

    思路:排除掉存在学科分数低于80的学生,剩下的就是所有学科分数都大于80的学生

    SELECT DISTINCT NAME
    FROM exam a
    WHERE NOT EXISTS (SELECT name
                      FROM exam e 
                      WHERE e.name = a.name AND e.score < 80 );

    方法三:not in 字段

    思路:同上

    SELECT DISTINCT NAME 
    FROM exam 
    WHERE NAME NOT IN (SELECT  NAME 
                       FROM exam
                       WHERE score<=80)

    方法四:having 字段

    思路:过滤出学科中最低分数大于80的学生

    SELECT name
    FROM exam
    GROUP BY name
    HAVING min(score) > 80

    五、张三退学后,请写相关的SQL语句,注意严谨

    DELETE
    FROM exam
    WHERE name = '张三';
    DELETE
    FROM student
    WHERE name = '张三';
    DELETE exam,student
    FROM exam
    LEFT JOIN student
    ON exam.name = student.name
    WHERE exam.name = '张三' ;

    六、你会对该表哪些字段做索引

    id - 唯一索引

    七、这两个表的设计,有哪些可以改进的地方

    student表中sno字段可以改成‘studentID’,更语义化,

    exam表中取消name字段及该列数据,改用student中sno学号字段代替,更易于检索

  • 相关阅读:
    回文字符串系列问题
    找两个数组的重合数字系列
    IPC最快的方式----共享内存(shared memory)
    【经典算法】——KMP,深入讲解next数组的求解
    关于SqlDateTime溢出的问题
    git操作之常见问题解决方案
    Javascript中length属性的总结
    从零开始学node(一): nodejs开发环境的配置
    使用Number.parseFloat引发的悲剧
    超链接的那些事(三): 属性target
  • 原文地址:https://www.cnblogs.com/hrlin/p/9928377.html
Copyright © 2011-2022 走看看