【快來免費打卡學習】參與方式
本文文末評論區打卡,需要登錄才可以打卡以及查看其他人的打卡記錄
關系數據庫(比如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