当前位置: 首页 > news >正文

数据库SQL面试题

大学生春季运动会的数据库,保存了比赛信息的三个表如下:
运动员 sporter(运动员编号 sporterid,姓名name,性别 sex,所属系号 department),
项目 item(项目编号 itemid,名称 itemname,比赛地点 location), 成绩 grade(运动员编号 id,项目编号 itemid,积分 mark)。
用SQL语句完成在“体育馆”进行比赛的各项目名称及其冠军的姓名

SELECT 
    i.itemname, s.name
FROM
    grade g,
    (SELECT 
        itemid iid, MAX(mark) max
    FROM
        grade
    WHERE
        itemid IN (SELECT 
                itemid
            FROM
                item
            WHERE
                location = '体育馆')
    GROUP BY itemid) temp,
    item i,
    sporter s
WHERE
    g.itemid = temp.iid
        AND g.mark = temp.max
        AND temp.iid = i.itemid
        AND s.sporterid = g.sporterid;  

注:这道题需要注意:在使用group by的时候, select后面字段要么出现在group by当中要么包含在聚合函数里面, 常见的聚合函数有sum()、max()、min()、avg()、count()....

Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1003' , NULL , '2002-05-20' , '男');
('1004' , '张三' , '2000-09-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');

('1006' , NULL , '2001-12-02' , '女');

修改name字段为NULL的记录,是男生时设置name='男生姓名',是女生时设置name='女生姓名'

update student_table set name  = ( case when sex = '男' then '男生姓名' when sex = '女' then '女生姓名' end) where name is null ;

注:这道题的知识点在于熟悉语法:case when .. then when ... then ... else ... end .其中case和end必不可少。

已知职员表employee(eno,ename,gender,birthday,salary),现有一张E表,表结构与职员表一致,要求将E表中没有在职员表中出现的女职员添加到职员表中

INSERT INTO employee(eno,ename,gender,birthday,salary)

SELECT eno,ename,gender,birthday,salsry

FROM E

WHERE E.gender='女' and NOT EXISTS(

SELECT * FROM employee

WHERE employee.eno=E.eno)

在MySQL中,现有评分表evaluate(包含班级编号cid和分数point字段),有班级表grade(包含班级编号cid等字段), 查询evaluate 表中有没有班级均分大于等于80分的,如果存在,则查询显示grade表按cid由大到小排名的前五行记录

SELECT * FROM grade

WHERE EXISTS (

SELECT cid,AVG(point) AS avg

FROM evaluate GROUP BY cid

HAVING avg>=80)

ORDER BY grade.cid DESC LIMIT 5 ;

注:这道题的知识点优先顺序必须是from-->where-->group by -->having --- >order by --> select,这里需要注意的是聚合函数和where一起使用,会出现错误, 一般都会用having替代

Mysql中表student_table(id,name,birth,sex),score_table(stu_id,subject_name,score),查询多个学科的总分最高的学生记录明细以及总分

select t1.*, sco from student_table inner join (select stu_id, sum(score) as sco from score_table group by stu_id order by sco desc limit 1) as score_T on student_table.id = score_T.stu_id;

这道题的知识点:有关MYSQL连接逻辑均在图内

 

相关文章:

  • STM32——内存管理实验
  • Kubernetes技术与架构-14
  • 浅谈软件编程中的8大数据结构
  • 【模型训练】YOLOv7电塔绝缘子检测
  • 【ARM】中断控制 ——第六篇
  • 软考高级系统架构设计师系列论文四十二:论基于构件的软件开发
  • PHP:文件系统安全
  • MFC Windows 程序设计[281]之文件下拉拖拽例程(附源码)
  • MySQL到底大小写敏感还是不敏感?
  • PHP:POST 方法上传
  • C++11之一般化的SFINAE规则
  • JavaEE初阶-HashTable, HashMap, ConcurrentHashMap 之间的区别
  • 多尺度生成扩散模型预测蛋白-配体复合物结构的动态骨架
  • 基于SpringBoot的汽车租赁管理系统
  • 2008-03-08 好高兴啊,体验了准妈妈的感觉
  • Java到底能干嘛?
  • Linux快速复制或删除大量小文件
  • Node项目之评分系统(二)- 数据库设计
  • Redis中的lru算法实现
  • 官方解决所有 npm 全局安装权限问题
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 以太坊客户端Geth命令参数详解
  • const的用法,特别是用在函数前面与后面的区别
  • MPAndroidChart 教程:Y轴 YAxis
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #pragma pack(1)
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (四) Graphivz 颜色选择
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 版本不支持的问题
  • .net framework4与其client profile版本的区别
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET面试题(二)
  • .NET企业级应用架构设计系列之应用服务器
  • .net中应用SQL缓存(实例使用)
  • ??eclipse的安装配置问题!??
  • @Data注解的作用
  • @Transactional 详解
  • [20181219]script使用小技巧.txt
  • [APIO2015]巴厘岛的雕塑
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [CCIE历程]CCIE # 20604
  • [CF482B]Interesting Array