数据库相关练习题、笔试题
【快来免费打卡学习】参与方式
本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录
关系数据库(比如mysql)
练习1:常见sql笔试30题(增、删、改、查):https://www.cnblogs.com/uncleyong/p/14758383.html
练习2:以mysql为例,单表插入1万条数据,建表的语句:create table test(id int, name varchar(20));
要求:至少两种方案
-- @Author : ren168632201 -- @Blog : https://www.cnblogs.com/uncleyong/ -- 方式一,不传参 DELIMITER // CREATE PROCEDURE insert_data_to_test() BEGIN SET @i=1; WHILE @i<=10000 DO INSERT INTO test(id,name) VALUES(@i,CONCAT("user",@i)); SET @i=@i+1; END WHILE; END // DELIMITER ; call insert_data_to_test() -- 方式一,传参 DELIMITER // CREATE PROCEDURE insert_data_to_test2(in n int) BEGIN SET @i=1; WHILE @i<=n DO INSERT INTO test(id,name) VALUES(@i,CONCAT("user",@i)); SET @i=@i+1; END WHILE; END // DELIMITER ; call insert_data_to_test2(10000)
参考答案二(py):https://www.cnblogs.com/uncleyong/p/10938993.html
练习3:
参考答案:
select distinct t1.id,t1.name form company_org t1,company_org t2 where t1.id!=t2.id and t1.name=t2.name order by t1.name desc; select t1.sku_code,sum(stock_quantity) from stock_inquiry t1 group by t1.sku_code having sum(stock_quantity) >0; select t2.sku_code,t1.name,t3.stock_inquiry form company_org t1,sku t2,stock_inquiry t3 where t1.id=t2.org_id and t2.sku_code=t3.sku_code and t3.stock_quantity is not null;
练习4:一个sql题,查询出grade不一样的人的所有记录
表stu
参考答案(基于mysql):
方式一:
select * from stu where name in ( select tt.name from ( Select t.code,t.name,t.grade from stu t group by t.code,t.name,t.grade having count(*)=1) tt);
方式二:
select distinct s.* from stu s join( select t.code,t.name,t.grade from stu t group by t.code,t.name,t.grade having count(*)=1) s2 where s.code = s2.code and s.name=s2.name;
方式三:(oracle中下面方式写会报错)
其它参考答案:
练习5:
select a.id, b.name, a.course, a.score from A a join B b on a.id= b.id join (select course, max(score) as maxs from A a join B b on a.id= b.id where class= "二班" group by course) c on a.course = c.course and a.score=c.maxs where b.class="二班";
练习6:
表info有3个字段(name,age,sal),年龄相同的有多个人,查询出相同年龄里面,sal最大的记录。说明:要求是多个年龄一样的排重,取sal最大的即可
select * from info group by age order by sal asc;
表info有3个字段(name,age,sal),年龄相同的有多个人,查询出相同年龄里面,sal最大的记录,展示name和sal字段。说明:要求是多个年龄一样的排重,取sal最大的即可
select t.name,t.sal from (select * from info group by age order by sal asc) t;
练习7:mysql语法顺序如下,那么其执行顺序是?
参考答案:
from where group by having select distinct order by limit
练习8:其它
InnoDB行锁实现方式?参考:https://mp.weixin.qq.com/s/jPGjfV65wPzli6KGCjnW-A
innodb如何解决幻读?
什么是回表?
B-树的不足?
B+树如何解决了B-树的不足?
哪些情况,创建了索引也用不上?
什么是聚集索引、索引覆盖、索引下推?
辅助索引的叶子节点为什么不存储数据的指针地址?
InnoDB、MyISAM的优缺点?
事务的隔离级别有哪些?分别解决什么问题?
MVCC的原理?
主从复制原理?
什么是自动索引?
在数据库表里设置完整性约束时,该表会被系统自动创建索引
mysql查询缓存,结果存储方式是?
mysql8以下的版本 执行过的sql语句及其结果以key-value的形式缓存在内存中。key是查询语句,value是查询结果;如果sql在缓存的key中找到,那么对应的value会被直接返回给客户端。 8开始,mysql去掉了查询缓存
非关系数据库(比如redis)
练习1:redis批量删除以qzcsbj开头的key
练习2:什么是缓存穿透、缓存击穿、缓存雪崩?
练习3:谈谈你对分布式锁的了解
原文:https://www.cnblogs.com/uncleyong/p/15874340.html
更多笔试题:https://www.cnblogs.com/uncleyong/p/11119489.html
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!