From 171e04724bcea6d154237df3ae22fe2207169a32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=BE=E9=B9=8F?= <1302815408@qq.com> Date: Mon, 26 Sep 2022 19:03:55 +0800 Subject: [PATCH] tj --- .../\344\272\213\345\212\241.md" | 40 ++++++++ .../\345\207\275\346\225\260.md" | 99 +++++++++++++++++++ .../\345\255\220\346\237\245\350\257\242.md" | 36 +++++++ .../\346\270\270\346\240\207.md" | 45 +++++++++ .../\350\247\206\345\233\276.md" | 11 +++ .../\344\272\213\345\212\241.md" | 0 .../\345\207\275\346\225\260.md" | 20 ++++ .../\345\217\230\351\207\217.md" | 0 .../\345\255\220\346\237\245\350\257\242.md" | 0 ...30\345\202\250\350\277\207\347\250\213.md" | 41 ++++++++ .../\346\255\273\351\224\201.md" | 21 ++++ .../\346\270\270\346\240\207.md" | 46 +++++++++ .../\347\264\242\345\274\225.md" | 0 .../\350\214\203\345\274\217.md" | 0 .../\350\247\206\345\233\276.md" | 0 ...47\345\210\266\350\257\255\345\217\245.md" | 0 16 files changed, 359 insertions(+) create mode 100644 "27\346\233\276\351\271\217/\344\275\234\344\270\232/\344\272\213\345\212\241.md" create mode 100644 "27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\207\275\346\225\260.md" create mode 100644 "27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\255\220\346\237\245\350\257\242.md" create mode 100644 "27\346\233\276\351\271\217/\344\275\234\344\270\232/\346\270\270\346\240\207.md" create mode 100644 "27\346\233\276\351\271\217/\344\275\234\344\270\232/\350\247\206\345\233\276.md" rename "27\346\233\276\351\271\217/\344\272\213\345\212\241.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\344\272\213\345\212\241.md" (100%) create mode 100644 "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\207\275\346\225\260.md" rename "27\346\233\276\351\271\217/\345\217\230\351\207\217.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\217\230\351\207\217.md" (100%) rename "27\346\233\276\351\271\217/\345\255\220\346\237\245\350\257\242.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\220\346\237\245\350\257\242.md" (100%) create mode 100644 "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213.md" create mode 100644 "27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\255\273\351\224\201.md" create mode 100644 "27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\270\270\346\240\207.md" rename "27\346\233\276\351\271\217/\347\264\242\345\274\225.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\347\264\242\345\274\225.md" (100%) rename "27\346\233\276\351\271\217/\350\214\203\345\274\217.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\214\203\345\274\217.md" (100%) rename "27\346\233\276\351\271\217/\350\247\206\345\233\276.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\247\206\345\233\276.md" (100%) rename "27\346\233\276\351\271\217/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" => "27\346\233\276\351\271\217/\347\254\224\350\256\260/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" (100%) diff --git "a/27\346\233\276\351\271\217/\344\275\234\344\270\232/\344\272\213\345\212\241.md" "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\344\272\213\345\212\241.md" new file mode 100644 index 0000000..e81bfbd --- /dev/null +++ "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\344\272\213\345\212\241.md" @@ -0,0 +1,40 @@ +``` +alter table bankcard add constraint CK_money check(cardmoney>=0) + + +begin transaction +declare @money money=1000;--钱 +declare @qcarno varchar(20);--转账卡号 +declare @hcarno varchar(20);--转入卡号 +declare @errorsum int=0;--计数器 + +select @qcarno=CardNo from AccountInfo a join BankCard b on a.AccountId=b.AccountId +where RealName='刘备'--查找刘备的卡号 + + +update BankCard set CardMoney=CardMoney-@money where CardNo=@qcarno--刘备转账-1000 +set @errorsum+=@@error --报错的话计数器+1 + +insert CardExchange values(@qcarno,0,@money,GETDATE())--刘备转账信息插入交易信息表 + +select @hcarno=CardNo from AccountInfo a join BankCard b on a.AccountId=b.AccountId +where RealName='张飞'--查找张飞卡号 + +update BankCard set CardMoney=CardMoney+@money where CardNo=@hcarno--张飞余额+1000 +set @errorsum+=@@error --报错的话计数器+1 + +insert CardExchange values(@hcarno,@money,0,GETDATE())--张飞转账信息插入交易信息表 + +insert CardTransfer values(@qcarno,@hcarno,@money,GETDATE());--插入转账记入 + +if(@errorsum>0)--计数器大于0 +begin + print '转账失败' + rollback transaction--回滚事务 +end +else +begin + print '转账成功' + commit transaction --提交事务 +end +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\207\275\346\225\260.md" "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\207\275\346\225\260.md" new file mode 100644 index 0000000..a3e293d --- /dev/null +++ "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\207\275\346\225\260.md" @@ -0,0 +1,99 @@ + + +``` +--(1)编写一个函数求该银行的金额总和 +go +create function BankSum() +returns decimal +as +begin + declare @sum decimal + select @sum = (select sum(CardMoney) from BankCard) + return @sum +end +go +select dbo.BankSum() 金额总和 +--(2)传入账户编号,返回账户真实姓名 +go +create function BankName(@id int) +returns varchar(20) +as + begin + declare @name varchar(20) + select @name = (select RealName from AccountInfo join BankCard on BankCard.AccountId=AccountInfo.AccountId where AccountInfo.AccountId=@id) + return @name + end +go +select dbo.BankName(3) 账户姓名 +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange +select * from CardExchange --交易记录 +--(3)传递开始时间和结束时间,返回交易记录(存钱取钱),交易记录中包含 真实姓名,卡号,存钱金额,取钱金额,交易时间。 +go +create function BankMoney(@start smalldatetime,@end smalldatetime) +returns @BankInfo table(RealName varchar(20),CardNo char(18),MoneyInBank decimal,MoneyOutBank decimal,ExchangeTime smalldatetime) +as + begin + insert into @BankInfo + select RealName,bd.CardNo,MoneyInBank,MoneyOutBank,ExchangeTime from AccountInfo ao join BankCard bd on bd.AccountId=ao.AccountId join CardExchange ce on ce.CardNo=bd.CardNo + where ExchangeTime between @start and @end + return + end +go +select * from BankMoney('2022-08-22','2022-09-19') +--(4)查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户",分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态。 +--方案一:直接在sql语句中使用case when +select CardNo 卡号,AccountCode 身份证,RealName 姓名,CardMoney 余额, +case +when CardState=1 then '正常' +when CardState=1 then '挂失' +when CardState=1 then '冻结' +when CardState=1 then '注销' +end '银行卡状态', +case +when CardMoney>=300000 then 'VIP用户' +else '普通用户' +end '用户等级' +from BankCard bd +inner join AccountInfo ao on ao.AccountId=bd.AccountId +--方案二:将等级和状态用函数实现 +go +create function BankVIP() +returns @StateVIP table(卡号 char(18),身份证 char(18),姓名 varchar(20),余额 decimal,银行卡状态 varchar(20),普通用户 varchar(20)) +as +begin + insert into @StateVIP + select CardNo,AccountCode,RealName,CardMoney, +case +when CardState=1 then '正常' +when CardState=1 then '挂失' +when CardState=1 then '冻结' +when CardState=1 then '注销' +end , +case +when CardMoney>=300000 then 'VIP用户' +else '普通用户' +end +from BankCard bd +inner join AccountInfo ao on ao.AccountId=bd.AccountId + return +end +go +select * from BankVIP(); +--(5)编写函数,根据出生日期求年龄,年龄求实岁,例如: +-- 生日为2000-5-5,当前为2018-5-4,年龄为17岁 +-- 生日为2000-5-5,当前为2018-5-6,年龄为18岁 +go +create function Birth() +returns @Birth table(生日日期 smalldatetime,当前年 smalldatetime,实岁 int) +as +begin + insert into @Birth + select Empbirth,GETDATE(),year(GETDATE())-YEAR(Empbirth) from Emp + where MONTH(GETDATE())>MONTH(Empbirth) + return +end +go +select * from Birth() +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\255\220\346\237\245\350\257\242.md" "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..8067f35 --- /dev/null +++ "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,36 @@ +``` +--1.关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 +select CardNo,AccountCode,RealName,cardMoney from BankCard bd +inner join AccountInfo ao on ao.AccountId=bd.AccountId +where cardmoney>all(select CardMoney from BankCard where CardNo=6225547858741263) +--2.从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 +select * from CardExchange where CardNo = (select top 1 CardNo from BankCard order by CardMoney desc) +--3.查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +select CardNo 卡号,AccountCode 身份证,RealName 姓名,CardMoney 余额 from BankCard bd +left join AccountInfo ao on bd.AccountId = ao.AccountId +where CardNo in (select CardNo from CardExchange where MoneyOutBank != 0) +--4.查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +select CardNo 卡号,AccountCode 身份证,RealName 姓名,CardMoney 余额 from BankCard bd +left join AccountInfo ao on bd.AccountId = ao.AccountId +where CardNo not in (select CardNo from CardExchange where MoneyOutBank != 0) +--5.关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 +if exists(select * from CardTransfer where CardNoIn = '6225547858741263' and convert(char(18),TransferTime) = convert(varchar(10),getdate(), 120)) +begin + print '有转账记录' +end +else +begin + print '没有转账记录' +end +--6.查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易数。 +select top 1 bd.CardNo 卡号,AccountCode 身份证,RealName 姓名,CardMoney 余额, +exchangeCount 交易次数 from BankCard bd +inner join AccountInfo ao on bd.AccountId =ao.AccountId +inner join (select CardNo,COUNT(*) exchangeCount from CardExchange group by CardNo ) CarcExchageTemp on bd.CardNo = CarcExchageTemp.CardNo +order by exchangeCount desc +--7.查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 +select CardNo 卡号,AccountCode 身份证,RealName 姓名,CardMoney 余额 from BankCard bd +left join AccountInfo ao on bd.AccountId = ao.AccountId +where bd.CardNo not in (select CardNoIn from CardTransfer) +and bd.CardNo not in (select CardNoOut from CardTransfer) +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\344\275\234\344\270\232/\346\270\270\346\240\207.md" "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\346\270\270\346\240\207.md" new file mode 100644 index 0000000..f89f006 --- /dev/null +++ "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\346\270\270\346\240\207.md" @@ -0,0 +1,45 @@ +``` +---创建学生游标,该游标包含(学生姓名,兴趣爱好,生源地,荣誉总数) +declare cur cursor scroll for select name,hobby,ori_loca,prize from tb_student tt,tb_inf_student it where tt.stu_num=it.stu_num +open cur +declare @name varchar(20),@hobby varchar(10),@loca varchar(10),@prize int +fetch first from cur into @name,@hobby,@loca,@prize +print @name+','+@hobby+','+@loca+','+cast(@prize as varchar(10)) +---循环遍历161开头的学生信息 +declare cur cursor scroll for select it.stu_num,name,hobby,ori_loca,prize from tb_student tt,tb_inf_student it where tt.stu_num=it.stu_num and it.stu_num like '161%' +open cur +declare @num int,@name varchar(20),@hobby varchar(10),@loca varchar(10),@prize int +fetch first from cur into @num,@name,@hobby,@loca,@prize +while @@FETCH_STATUS=0 +begin + print cast(@num as varchar(10))+','+@name+','+@hobby+','+@loca+','+cast(@prize as varchar(10)) +fetch next from cur into @num,@name,@hobby,@loca,@prize +end +---使用游标统计生源地为北京的荣誉总数 +declare cur cursor scroll for select SUM(prize) 荣誉总数 from tb_inf_student where ori_loca='北京' group by ori_loca +open cur +declare @prize int +fetch first from cur into @prize +print '荣誉总数:'+cast(@prize as varchar(10)) +---合理使用游标和事务,让5-1号前借书的学生将图书归还 +begin transaction +declare cur cursor scroll for select td.rid from tb_student tt,tb_bibliography ty,tb_book tk,tb_record td +where tt.stu_num=td.stu_num and td.barcode = tk.barcode and tk.ISBN=ty.ISBN and return_time is null and MONTH(td.borrow_time)<1 +open cur +declare @rid varchar(20) +declare @err int = 0 +fetch from cur into @rid +set @err += @@ERROR +update tb_record set return_time=GETDATE() where rid=@rid +if @err>0 + begin + print '归还失败' + rollback transaction + end +else + begin + print '归还成功' + commit transaction + end +select * from tb_record +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\344\275\234\344\270\232/\350\247\206\345\233\276.md" "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\350\247\206\345\233\276.md" new file mode 100644 index 0000000..8908862 --- /dev/null +++ "b/27\346\233\276\351\271\217/\344\275\234\344\270\232/\350\247\206\345\233\276.md" @@ -0,0 +1,11 @@ +``` +--1)编写视图实现查询出所有银行卡账户信息,显示卡号,身份证,姓名,余额。 +create view vw_ab(显示卡号,身份证,姓名,余额) +as +select CardNo,AccountCode,RealName,CardMoney from AccountInfo a +join BankCard b on a.AccountId=b.AccountId +go +select * from vw_ab + +drop view vw_ab +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\344\272\213\345\212\241.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\344\272\213\345\212\241.md" similarity index 100% rename from "27\346\233\276\351\271\217/\344\272\213\345\212\241.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\344\272\213\345\212\241.md" diff --git "a/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\207\275\346\225\260.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\207\275\346\225\260.md" new file mode 100644 index 0000000..56260ac --- /dev/null +++ "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\207\275\346\225\260.md" @@ -0,0 +1,20 @@ +## 函数 + +(1)系统函数:, + +(2)自定义函数(方法:将一个功能封装成可重用的函数)。 + +1. (1)标量值函数(返回单个值) +2. (2)表值函数(返回查询结果) + +#### 标量值函数 + +create function 名称(@参数名 数据类型) returns date_type --返回返回值的数据类型 as begin 函数体 return 表达式; end + +#### 表值函数 + +create function 名称 returns @局部变量 table(参数名 参数类型) as begin 函数体 return 函数返回值 end + +#### 删除自定义函数 + +drop function 函数名 \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\345\217\230\351\207\217.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\217\230\351\207\217.md" similarity index 100% rename from "27\346\233\276\351\271\217/\345\217\230\351\207\217.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\217\230\351\207\217.md" diff --git "a/27\346\233\276\351\271\217/\345\255\220\346\237\245\350\257\242.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\220\346\237\245\350\257\242.md" similarity index 100% rename from "27\346\233\276\351\271\217/\345\255\220\346\237\245\350\257\242.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\220\346\237\245\350\257\242.md" diff --git "a/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000..281cd07 --- /dev/null +++ "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,41 @@ +# 存储过程 + +``` +自定义存储过程 +create proc <存储过程名称> +as + +go + +2.有输入参数,没有输出参数的存储过程 +create proc <存储过程名称> +<变量1> <数据类型> +<变量2> <数据类型> +... +as + +go + +3.有输入参数,没有输出参数,但是有返回值的存储过程(返回值必须整数)。 +create proc <存储过程名称> +<变量1> <数据类型> +<变量2> <数据类型> +... +as + +return 整数 +go + +4.有输入参数,有输出参数的存储过程 & 一个变量具备同时输入输出参数的存储过程 +create proc <存储过程名称> +<变量1> <数据类型> output +<变量2> <数据类型> output +... +as + +return 整数 +go + +删除存储过程 +drop procedure <存储过程名称> +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\255\273\351\224\201.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\255\273\351\224\201.md" new file mode 100644 index 0000000..da6fc1b --- /dev/null +++ "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\255\273\351\224\201.md" @@ -0,0 +1,21 @@ +sql server死锁表现一: + +一个用户A 访问表A(锁住了表A),然后又访问表B。另一个用户B 访问表B(锁住了表B),然后企图访问表A,这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了,同样用户B要等用户A释放表A才能继续,这就造成死锁了 + +sql server死锁解决方法: + +这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法 + +仔细分析你程序的逻辑, + +1:尽量避免同时锁定两个资源 + +2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源. + +ql server死锁表现二: + +用户A读一条纪录,然后修改该条纪录。这时用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。 + +查询哪些死锁: + +SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id ) tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT' \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\270\270\346\240\207.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\270\270\346\240\207.md" new file mode 100644 index 0000000..b816b9a --- /dev/null +++ "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\346\270\270\346\240\207.md" @@ -0,0 +1,46 @@ + + +## 游标 + +### 游标分类: + +(1)静态游标(Static):在操作游标的时候,数据发生变化,游标中数据不变 + +(2)动态游标(Dynamic):在操作游标的时候,数据发生变化,游标中数据改变,默认值。 + + (3)键集驱动游标(KeySet):在操作游标的时候,被标识的列发生改变,游标中数据改变,其他列改 变,游标中数据不变。 + +#### 创建游标 + +``` +declare <游标名> cursor scroll for 查询的语句 +``` + +#### 打开游标 + +``` +open 游标名 +``` + +#### 关闭游标 + +``` +close 游标名 +``` + +#### 删除游标 + +``` +deallocate 游标名 +``` + +#### 提取数据 + +``` +fetch first from <游标名> --第一行 +fetch last from <游标名> --最后一行 +fetch absolute 1 from <游标名> --从游标的第一行开始数,第n行。绝对的 +fetch relative 3 from <游标名> --从当前位置数,第n行。相对的 +fetch next from <游标名> --当前位置的下一行 +fetch prior from <游标名> --当前位置的上一行 +``` \ No newline at end of file diff --git "a/27\346\233\276\351\271\217/\347\264\242\345\274\225.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\347\264\242\345\274\225.md" similarity index 100% rename from "27\346\233\276\351\271\217/\347\264\242\345\274\225.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\347\264\242\345\274\225.md" diff --git "a/27\346\233\276\351\271\217/\350\214\203\345\274\217.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\214\203\345\274\217.md" similarity index 100% rename from "27\346\233\276\351\271\217/\350\214\203\345\274\217.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\214\203\345\274\217.md" diff --git "a/27\346\233\276\351\271\217/\350\247\206\345\233\276.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\247\206\345\233\276.md" similarity index 100% rename from "27\346\233\276\351\271\217/\350\247\206\345\233\276.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\350\247\206\345\233\276.md" diff --git "a/27\346\233\276\351\271\217/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" "b/27\346\233\276\351\271\217/\347\254\224\350\256\260/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" similarity index 100% rename from "27\346\233\276\351\271\217/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" rename to "27\346\233\276\351\271\217/\347\254\224\350\256\260/\351\200\273\350\276\221\346\216\247\345\210\266\350\257\255\345\217\245.md" -- Gitee