本次试题设计两个表: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学号字段代替,更易于检索

MySQL面试试题与答案的更多相关文章

  1. mysql面试题及答案,mysql最新面试题,mysql面试题大全汇总

    mysql最新面试题及答案汇总 Mysql 的存储引擎,myisam和innodb的区别.mysql最新面试题 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁, ...

  2. MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务的存 ...

  3. MySQL面试题及答案整理,史上最全!

    原文链接:https://juejin.im/post/5d351303f265da1bd30596f9 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐 ...

  4. 最全MySQL面试题和答案

    Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务的存 ...

  5. 数据库入门级面试题(带答案) 数据库简单面试题(带答案) MySQL面试题带答案

    数据库入门[mysql]   1.假设要按照分页(每页显示10条)的形式获取test表中的数据,在MySql数据库中,以下哪条语句是取第2页中的数据?(单选)   (难度A) A.select * f ...

  6. 2018最新Web前端经典面试试题及答案

    javascript: JavaScript中如何检测一个变量是一个String类型?请写出函数实现 typeof(obj) === "string" typeof obj === ...

  7. 2019最新Web前端经典面试试题(含答案)

    1,阐述清楚浮动的几种方式(常见问题)(1)父级div定义 height原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题. 优点:简单.代码少.容易掌握 缺点:只适合高 ...

  8. php经典面试题与答案(转先锋教程网)

    php经典面试题与答案 时间:2016-02-29 16:06:23来源:网络 导读:php经典面试题与答案,包括腾讯php面试题.百度php面试题.新浪php面试题等   php面试题及答案 1,禁 ...

  9. 去BAT面试完的Mysql面试题总结(55道,带完整答案)

    1.一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ? 2.mysql的技术特点是什 ...

随机推荐

  1. vue插件

    Vue.js提供了插件机制,可以在全局添加一些功能.它们可以简单到几个方法.属性,也可以很复杂,比如一整套组件库. 注册插件需要一个公开的方法install,它的第一个参数是Vue构造器,第二个参数是 ...

  2. sku

    以淘宝为例,sku是具体到某一个商家具体规格商品,比如某商家红色64g的iPhone6,sku对应有对应的价格和库存.而SPU就是我们在输入框里输入的iPhone6,它是多个商家的集合.淘宝的“宝贝” ...

  3. java_集合类_简

    Collection 来源于Java.util包,实用常用的数据结构,字面意思就是容器 主要方法 boolean add(Object o)添加对象到集合 boolean remove(Object ...

  4. Python之print()函数

    1. 输出字符串 >>> str = 'Hello World' >>> print (str) Hello World 2. 格式化输出整数 支持参数格式化 &g ...

  5. WebService客户端(以命令方式创建)

    以命令的方式生成WebService客户端: 创建一个Project项目,客户端项目名称WS_Client,在cmd界面进入JDK的bin目录,输入以下命令 完整格式: C:\Program File ...

  6. oc 语法基础

    1:https://mp.weixin.qq.com/s/IqICB4aW2vZdU0382S9sTA  <1-7高质量OC代码> 2:https://blog.csdn.net/qq_3 ...

  7. UITableView自定义Cell中,纯代码编程动态获取高度

    在UITableView获取高度的代理方法中,经常需要根据实际的模型重新计算每个Cell的高度.直接的做法是在该代理方法中,直接根据模型来返回行高:另 [1]-(CGFloat)tableView:( ...

  8. 联想IDEAPAD 320C-15笔记本显卡驱动问题

    联想IDEAPAD 320C-15笔记本显卡驱动问题核显Intel(R) HD Graphics 620独显AMD Radeon(TM) 530必须安装好核显驱动,独显驱动才能正常工作,否则设备管理器 ...

  9. 51nod1220 约数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1220 $G(n)=\sum\limits_{i=1}^n\sum\lim ...

  10. 理解OpenShift(7):基于 Prometheus 的集群监控

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...