面试-数据语句

面试题目1:查询分页

# 1.根据总数分页
# 假设每页3条,获取总的页数 
select ceil(count(*) / 3) from tb_lemon_grade;
# offset = (pagenumber - 1) * rows
select * from tb_lemon_grade limit 0, 3;
select * from tb_lemon_grade limit 3, 3;
select * from tb_lemon_grade limit 6, 3;
select * from tb_lemon_grade limit 9, 3;

理解:
使用关键字limit,第一个参数是表示偏移量(offset 可选参数),第二个参数表示去处数据条数(rows)
分页算法:limit offset = (pagenumber - 1) * rows, rows 某页数据查询,方便随便跳到某页
实际情况为了缓解数据库压力实现假分页,即一次查询所有数据存在缓存(内存或redis),在页面显示做分页。

参考 https://blog.51cto.com/u_10984944/2507478

面试题目2:查每个班每科最高分数

show databases;
use interview;

CREATE TABLE tb_lemon_grade (
 id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 student_name VARCHAR(20) DEFAULT NULL,
 Linux int(3) DEFAULT 0,
 MySQL int(3) DEFAULT 0,
 Java  int(3) DEFAULT 0,
 class_name VARCHAR(20) DEFAULT NULL);
 
INSERT INTO tb_lemon_grade (student_name, Linux, MySQL,Java,class_name) VALUES
("刘一", 80, 60,70,'18期'),
("陈二", 70, 90,80,'18期'),
("张三", 90, 80,70,'18期'),
("李四", 60, 80,70,'19期'),
("王五", 60, 70,90,'19期'),
("赵六", 70, 80,60,'19期'),
("孙七", 100,70,80,'20期'),
("周八", 70, 80,90,'20期'),
("吴九", 80, 70,90,'21期'),
("郑十", 90, 70,60,'21期');
 
 select tb.class_name, max(tb.Linux) as Linux, max(Mysql) as Mysql, max(Java) as Java from tb_lemon_grade tb group by tb.class_name;

查询结果:
在这里插入图片描述
理解:

  1. 构造好表结构,将每科放在一个表内(实际情况科目数量是固定不常变动) 使用
  2. group by关键字,使用该关键字查询的字段必须是group by的字段或使用内置方法的字段

参考:http://testingpai.com/article/1595507154488

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tobin liao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值