遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

数据库相关练习题、笔试题

 

【快来免费打卡学习】参与方式 

本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录

 

关系数据库(比如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

 

posted @ 2022-02-09 16:37  全栈测试笔记  阅读(3080)  评论(2编辑  收藏  举报
浏览器标题切换
浏览器标题切换end