From 18502428d1dd991172543aeabd9467b428331c0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Thu, 29 Sep 2022 17:22:15 +0800 Subject: [PATCH 1/5] 2022-9-29 --- ...5\345\222\214\350\247\206\345\233\276.sql" | 10 ++ ...7\346\254\241\350\247\206\345\233\276.sql" | 89 +++++++++++++++++ .../\344\275\234\344\270\232/SQLQuery2.sql" | 54 +++++++++++ ...3\346\254\241\344\272\213\345\212\241.sql" | 49 ++++++++++ ...42\345\274\225\350\247\206\345\233\276.md" | 95 +++++++++++++++++++ .../2022-9-27\350\247\206\345\233\276.md" | 20 ++++ .../2022-9-28\344\272\213\345\212\241.md" | 15 +++ ...41\350\257\276\346\237\245\350\257\242.md" | 19 ++++ 8 files changed, 351 insertions(+) create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" new file mode 100644 index 0000000..0ba8c6c --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-26\347\264\242\345\274\225\345\222\214\350\247\206\345\233\276.sql" @@ -0,0 +1,10 @@ +----1.创建tb_student(name)索引 填充因子设为50 +create nonclustered index IX_name on tb_student(name) with(fillfactor = 40) + +--2.创建tb_record(borrow_time,return_time) 使用索引查询没还书的同学并且让没还书的同学将图书归还 +create index IX_Br on tb_record(borrow_time,return_time) +select *,isnull(return_time , getdate())强制归回日期 from tb_record with(index = IX_Br) where return_time is null + +----3.增加新列id() 创建聚集索引tb_book(id) +alter table tb_book add id int +create clustered index IX_id on tb_book(id) \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" new file mode 100644 index 0000000..c0e4f3b --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-9-27\347\254\2547\346\254\241\350\247\206\345\233\276.sql" @@ -0,0 +1,89 @@ +--1)编写视图实现查询出所有银行卡账户信息,显示卡号,身份证,姓名,余额。 +select b.*,a.AccountCode,a.RealName from BankCard b join AccountInfo a on a.AccountId=b.AccountId + +go +create view V_GetCar +as +select b.*,a.AccountCode,a.RealName from BankCard b join AccountInfo a on a.AccountId=b.AccountId +go + + +select * from V_GetCar + +--2)行转列常用做法: group by + sum(case when) /+count(case when) 数据分析+ over (paritition by, order by) + +--第一题 +--建表 +create database okk +go +use okk +go +--建表 +create table ac + ( + ID int primary key identity(1,1), + GameName varchar(20) not null, + English int not null, + Maths int not null , + Music int not null, + ); + +--成绩 +insert into ac (GameName,English,Maths,Music) values ('张三',60,80,90); +insert into ac(GameName,English,Maths,Music) values ('李四',50,88,40); +insert into ac(GameName,English,Maths,Music) values ('王五',60,80,60); + + +--unpivot + select * from ac + select ID,GameName,subject,score from ac +unpivot +( +score +for subject in ([English],[Maths],[Music]) +) + as a + + +--第二题 +--建表 +create table yoo + ( + [year] int, + [month] int, + amount float, + ) + go +--建值 + insert into yoo([year],[month] ,amount ) values (1991,1,1.1), + (1991,2,1.2), + (1991,3,1.3), + (1991,4,1.4), + (1992,1,2.1), + (1992,2,2.2), + (1992,3,2.3), + (1992,4,2.4) + go + select * from yoo + go + +--pivot 行不通 + select year,m1,m2,m3,m4 from yoo +as p +PIVOT +( + sum(amount) for + p.month in ([m1],[m2],[m3],[m4]) +) as b + + + +------------ + select [year], + min((case when [month] =1 then amount else 666 end))m1, + min((case when [month] =2 then amount else 666 end))m2, + min((case when [month] =3 then amount else 666 end))m3, + min((case when [month] =4 then amount else 666 end))m4 + from yoo + group by [year] +-- No newline at end of file \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" new file mode 100644 index 0000000..7b7cd8e --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/SQLQuery2.sql" @@ -0,0 +1,54 @@ +--1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +select * from People +join Department on People.DepartmentId = Department.DepartmentId +where PeopleAddress ='武汉'; + +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +select * from People +join Department on People.DepartmentId = Department.DepartmentId +join [rank] on people.departmentid=[rank].rankid +where PeopleAddress ='武汉'; + +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select DepartmentName,COUNT(*) 员工人数, SUM(PeopleSalary) 工资总和, AVG(PeopleSalary) 平均工资, MAX(PeopleSalary) 最大工资,MIN(PeopleSalary) 最小工资 from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName; + +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select DepartmentName,COUNT(*) 员工人数, SUM(PeopleSalary) 工资总和, AVG(PeopleSalary) 平均工资, MAX(PeopleSalary) 最大工资,MIN(PeopleSalary) 最小工资 from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName +having AVG(PeopleSalary)>=10000 +order by AVG(PeopleSalary) desc; + + + + +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select DepartmentName,RankName ,[Rank].RankId 职位等级 , COUNT(*) 员工人数,SUM(PeopleSalary) 工资总和, AVG(PeopleSalary) 平均工资, MAX(PeopleSalary) 最大工资,MIN(PeopleSalary) 最小工资 from people +join department on People.DepartmentId = Department.DepartmentId +join [Rank] on People.RankId = [Rank].RankId +group by DepartmentName,RankName,[Rank].RankId + + +--6.查询出巨蟹 6.22--7.22 的员工信息 +select * from people where +(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or +(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) + +--7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) +select * , +case when datepart(YY,PeopleBirth)%12=0 then'鼠' +when datepart(YY,PeopleBirth)%12=1 then'牛' +when datepart(YY,PeopleBirth)%12=2 then'虎' +when datepart(YY,PeopleBirth)%12=3 then'兔' +when datepart(YY,PeopleBirth)%12=4 then'龙' +when datepart(YY,PeopleBirth)%12=5 then'蛇' +when datepart(YY,PeopleBirth)%12=6 then'马' +when datepart(YY,PeopleBirth)%12=7 then'羊' +when datepart(YY,PeopleBirth)%12=8 then'猴' +when datepart(YY,PeopleBirth)%12=9 then'鸡' +when datepart(YY,PeopleBirth)%12=10 then'狗' +when datepart(YY,PeopleBirth)%12=11 then'猪' +end as 属相 +from people ; \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" new file mode 100644 index 0000000..de1ec76 --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\254\345\205\253\346\254\241\344\272\213\345\212\241.sql" @@ -0,0 +1,49 @@ +select * from AccountInfo +select * from BankCard +select * from CardExchange +select * from CardStateChange +select * from CardTransfer + + +--1.假设刘备取款6000,(添加check约束,设置账户余额必须>=0),要求:使用事务实现,修改余额和添加取款记录两步操作使用事务 +alter table BankCard add constraint CK_Money check(CardMoney>=0) +begin transaction A +declare @Myerror int =0 +declare @myerr int = 0 +update BankCard set CardMoney = CardMoney-6000 where CardNo ='6225125478544587' +set @myerr += @@error +insert into CardExchange (CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values('6225125478544587',0,6000,GETDATE()) +set @myerr += @@error +if @Myerror = 0 +begin + commit transaction + print'取款成功' +end +else +begin +rollback transaction + print'取款失败' +end +--2.刘备向张飞转账1000元,(添加check约束,设置账户余额必须>=0) +alter table BankCard add constraint CK_Money check(CardMoney>=0) +begin transaction +declare @error int = 0 +declare @myerry int = 0 +update BankCard set CardMoney = CardMoney -1000 where CardNo = '6225125478544587' +set @myerry+=@@ERROR +update BankCard set CardMoney = CardMoney + 1000 where CardNo = '6225547854125656' +set @myerry+=@@ERROR +insert into CardTransfer(CardNoOut,CardNoIn,TransferMoney,TransferTime) +values('6225125478544587','6225547854125656',1000,GETDATE()) +set @myerry+=@@ERROR +if @error = 0 + begin + commit + print '转账成功' + end +else + begin + rollback + print '转账失败' + end \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" new file mode 100644 index 0000000..4e8d3e1 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-26 \347\264\242\345\274\225\350\247\206\345\233\276.md" @@ -0,0 +1,95 @@ +## 瑙嗗浘 + +#### 鍏崇郴(Relations) + +涓夌绫诲瀷鍏崇郴锛 + +- 琛(Table)--鍩鸿〃锛屽瓨鍌ㄥ叧绯(Base Tables,Sorted relations) +- 瑙嗗浘(Views)--铏氭嫙鍏崇郴(Virtual relations)锛堜笉鏄墿鐞嗗瓨鍦ㄧ殑鏄櫄鎷熺殑锛 +- 涓存椂缁撴灉(Temporary results)--鐢ㄤ簬鏋勫缓**瀛愭煡璇**鐨勭粨鏋 + + + +**瑙嗗浘鐨勪綔鐢** + +瑙嗗浘鑳藉绠鍖栫敤鎴风殑鎿嶄綔 + +瑙嗗浘浣跨敤鎴疯兘浠ュ绉嶈搴︾湅寰呭悓涓鏁版嵁 + +瑙嗗浘瀵归噸鏋勬暟鎹簱鎻愪緵浜嗕竴瀹氱殑閫昏緫鐙珛鎬 + +瑙嗗浘鑳藉瀵规満瀵嗘暟鎹彁渚涘畨鍏ㄤ繚鎶 + +#### 鍩轰簬瑙嗗浘鐨勬搷浣 + +##### 瀹氫箟瑙嗗浘 + +```sql +--寤虹珛瑙嗗浘 +create view <瑙嗗浘鍚> [(<鍒楀悕>[,<鍒楀悕>]...)] + as <瀛愭煡璇> [with check option] +``` + +##### 甯歌鐨勮鍥惧舰寮 + +- 琛屽垪瀛愰泦瑙嗗浘:鍘绘帀浜嗘煇浜涜鍜屾煇浜涘垪锛屼絾淇濈暀浜嗕富閿 + +```sql +--寤虹珛淇℃伅瀛﹂櫌瀛︾敓鐨勮鍥 +create view V_StuMajor(瀛﹀彿,濮撳悕,瀛﹂櫌,涓撲笟) +as +(select stu_num ,name ,school ,major from tb_student where school='淇℃伅瀛﹂櫌') +go + +``` + +- with check option 瑙嗗浘 + +```sql +--寤虹珛淇℃伅瀛﹂櫌瀛︾敓鐨勮鍥,骞惰姹傞氳繃璇ヨ鍥捐繘琛岀殑鏇存柊鎿嶄綔鍙秹鍙婁俊鎭闄㈢殑瀛︾敓 +``` + + + +- 甯﹁〃杈惧紡鐨勮鍥 + +```sql +--瀹氫箟涓涓弽鏄犲鐢熷勾榫勭殑瑙嗗浘 +create view V_StuMajor(瀛﹀彿,濮撳悕,瀛﹂櫌,涓撲笟) +as +(select stu_num ,name ,school ,major from tb_student where school='淇℃伅瀛﹂櫌') +with check option +go +``` + +##### 鏌ヨ瑙嗗浘 + +```sql +select * from V_StuMajor +``` + + + +##### 鏇存柊瑙嗗浘 + +```sql +update V_StuMajor set 濮撳悕='鐜嬪崥鏂' where 瀛﹀彿=16130201 +``` + + + +##### 鍒犻櫎瑙嗗浘 + +```sql +drop view <瑙嗗浘鍚> +--璇ヨ鍙ヤ粠鏁版嵁瀛楀吀涓垹闄ゆ寚瀹氱殑瑙嗗浘瀹氫箟 +--鐢辫瑙嗗浘瀵煎嚭鐨勫叾浠栬鍥句粛鍦ㄦ暟鎹瓧鍏镐腑锛屼絾涓嶈兘浣跨敤锛岄渶瑕佸垹闄 +--鍒犻櫎鍩鸿〃鏃讹紝鐢辫鍩鸿〃瀵煎嚭鐨勬墍鏈夎鍥惧畾涔夐兘蹇呴』鏄剧ず鍒犻櫎 +``` + +#### 瑙嗗浘鐨勮璁″師鍒 + +- 浠 select * 鏂瑰紡鍒涘缓鐨勮鍥撅細鍙墿鍏呮у樊锛屽簲灏藉彲鑳介伩鍏 + + + diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" new file mode 100644 index 0000000..67bfe6b --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-27\350\247\206\345\233\276.md" @@ -0,0 +1,20 @@ + + +#### 浠涔堟槸瑙嗗浘 + +- 瑙嗗浘鏄竴寮犺櫄鎷熻〃锛屽畠琛ㄧず涓寮犺〃鐨勯儴鍒嗘暟鎹垨澶氬紶琛ㄧ殑缁煎悎鏁版嵁锛屽叾缁撴瀯鍜屾暟鎹槸寤虹珛鍦ㄥ琛ㄧ殑鏌ヨ鍩虹涓 +- 瑙嗗浘涓苟涓嶅瓨鏀炬暟鎹紝鑰屾槸瀛樻斁鍦ㄨ鍥炬墍寮曠敤鐨勫師濮嬭〃锛堝熀琛級涓紝鍗冲熀鏈腑鐨勬暟鎹彂鐢熷彉鍖栵紝浠庤鍥句腑鏌ヨ鐨勬暟鎹篃闅忎箣鏀瑰彉銆 +- 鍚屼竴寮犲師濮嬭〃锛屾牴鎹笉鍚岀敤鎴风殑涓嶅悓闇姹傦紝鍙互鍒涘缓涓嶅悓鐨勮鍥 + +--瑙﹀彂鍣紝瀛樺偍杩囩▼ +--瑙嗗浘锛 +--鏁版嵁琛細1.鍩鸿〃 2.涓存椂琛(select锛) 3.瑙嗗浘锛堣櫄鎷熻〃锛 + +--鍒涘缓 view:瑙嗗浘 index:绱㈠紩 proc:瀛樺偍杩囩▼ + +--鍒犻櫎瑙嗗浘 +--drop view V_鍚嶇О + +--寤虹珛瑙嗗浘 +create view <瑙嗗浘鍚> [(<鍒楀悕>[,<鍒楀悕>]...)] + as <瀛愭煡璇> [with check option] \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" new file mode 100644 index 0000000..5729977 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-9-28\344\272\213\345\212\241.md" @@ -0,0 +1,15 @@ +#### 浜嬪姟鐨勫睘鎬(ACID) + +涓鑸潵璇达紝浜嬪姟鍏锋湁鍥涗釜鏍囧噯灞炴э紝鍒嗗埆鏄師瀛愭э紙**A**tomicity锛屾垨绉颁笉鍙垎鍓叉э級銆佷竴鑷存э紙**C**onsistency锛夈侀殧绂绘э紙**I**solation锛屽張绉扮嫭绔嬫э級銆佹寔涔呮э紙**D**urability锛夛紝绠绉 **ACID**銆傚叿浣撹鏄庡涓嬶細 + +### 浜嬪姟浣跨敤鏂规硶 + +----begin try +---- --浜嬪姟鐨勫紑濮嬶細begin tran +---- --sql璇彞 +---- commit --鎻愪氦 +----end try + +----begin catch --鎹曡幏閿欒,濡傛灉鏌愭潯璇彞鎵ц閿欒锛屽皢琚崟鑾 +---- rollback tran +----end \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" new file mode 100644 index 0000000..fbd4e47 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/9-16\347\254\254\344\272\214\346\254\241\350\257\276\346\237\245\350\257\242.md" @@ -0,0 +1,19 @@ +## 绗簩娆¤鏌ヨ + +--淇濈暀灏忔暟鐐瑰悗2浣 + +--round(灏忔暟,淇濈暀浣嶆暟) + +--convert 02154.13200 decimal(5,2):淇濈暀灏忔暟鍚2浣嶏紝鏈夋晥鏁板瓧鎬诲叡鏄5 + +--convert鍜宑ast 鍙互寮哄埗杞崲鏁版嵁绫诲瀷 + +--count(*):绌哄间篃缁熻 count(瀛楁)锛氬綋鍓嶅瓧娈电殑绌哄间笉缁熻 + +--鍒犻櫎鏁版嵁 +delete from 琛ㄥ悕 where 鍒楀悕='' + +--鍒犻櫎 +--drop 鍒犻櫎鏁村紶琛 +--truncate鍒犻櫎鏁村紶琛紝琛ㄨ繕鍦 + -- Gitee From c2401fb264896823cdaa7e61a70a553857881274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Thu, 29 Sep 2022 09:37:50 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20ftg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ftg/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ftg/.keep diff --git a/ftg/.keep b/ftg/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 8278f12c09be4e54449d84fb63fd3d956c954165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Thu, 29 Sep 2022 09:39:12 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20ftg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ftg/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ftg/.keep diff --git a/ftg/.keep b/ftg/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From 8484eea0ffff704ae09ee78fe3218dec9ae88674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Fri, 7 Oct 2022 13:01:52 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022-10-7\345\207\275\346\225\260.sql" | 110 ++++++++++++++++++ .../2022-10-6\345\207\275\346\225\260.md" | 65 +++++++++++ 2 files changed, 175 insertions(+) create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" new file mode 100644 index 0000000..73e943b --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/2022-10-7\345\207\275\346\225\260.sql" @@ -0,0 +1,110 @@ +锘匡豢select * from BankCard +--锛1锛夌紪鍐欎竴涓嚱鏁版眰璇ラ摱琛岀殑閲戦鎬诲拰 +create function ban_sum () +returns money +as +begin +declare @money money +select @money=sum(CardMoney) from BankCard +return @money +end +select dbo.ban_sum() +drop function ban_sum +--锛2锛変紶鍏ヨ处鎴风紪鍙凤紝杩斿洖璐︽埛鐪熷疄濮撳悕 +select * from AccountInfo +create function reeal(@sum varchar(20)) +returns @name table( +Number varchar(20), +name varchar(20) +) +as +begin +insert into @name +select AccountCode,RealName from AccountInfo where AccountCode=@sum +return +end +drop function reeal +select * from reeal('420107198905064135') +--锛3锛変紶閫掑紑濮嬫椂闂村拰缁撴潫鏃堕棿锛岃繑鍥炰氦鏄撹褰曪紙瀛橀挶鍙栭挶锛夛紝浜ゆ槗璁板綍涓寘鍚 鐪熷疄濮撳悕锛屽崱鍙凤紝瀛橀挶閲戦锛屽彇閽遍噾棰濓紝浜ゆ槗鏃堕棿銆 +select * from CardExchange +select * from AccountInfo +select * from BankCard +create function change(@start varchar(20),@end varchar(20)) +returns @record table( +realname varchar(20), +cardno varchar(20), +Inmoney money, +Outmoney money, +dealtime varchar(20) +) +as +begin +insert into @record +select realname,BankCard.CardNo,MoneyInBank,MoneyOutBank,ExchangeTime from CardExchange +left join BankCard on BankCard.CardNo=CardExchange.CardNo +left join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where ExchangeTime between @start and @end +return +end +select * from @record('') +--鏂规涓锛堥昏緫澶嶆潅锛屽嚱鏁板唴瀹归櫎浜嗚繑鍥炵粨鏋滅殑sql璇彞杩樻湁鍏朵粬鍐呭锛屼緥濡傚畾涔夊彉閲忕瓑锛夛細 + +--锛4锛夋煡璇㈤摱琛屽崱淇℃伅锛屽皢閾惰鍗$姸鎬1,2,3,4鍒嗗埆杞崲涓烘眽瀛椻滄甯,鎸傚け,鍐荤粨,娉ㄩ攢鈥濓紝鏍规嵁閾惰鍗′綑棰濇樉绀洪摱琛屽崱绛夌骇 30涓囦互涓嬩负鈥滄櫘閫氱敤鎴封,30涓囧強浠ヤ笂涓"VIP鐢ㄦ埛"锛屽垎鍒樉绀哄崱鍙凤紝韬唤璇侊紝濮撳悕锛屼綑棰濓紝鐢ㄦ埛绛夌骇锛岄摱琛屽崱鐘舵併 + +--鏂规涓锛氱洿鎺ュ湪sql璇彞涓娇鐢╟ase when + +--鏂规浜岋細灏嗙瓑绾у拰鐘舵佺敤鍑芥暟瀹炵幇 +create function class(@myMoney int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myMoney < 3000 + set @result = '鏅氱敤鎴' + else + set @result = 'VIP鐢ㄦ埛' + return @result +end + + +create function Astate(@myNum int) +returns varchar(10) +as +begin + declare @result varchar(10) + if @myNum = 1 + set @result = '姝e父' + else if @myNum = 2 + set @result = '鎸傚け' + else if @myNum = 3 + set @result = '鍐荤粨' + else if @myNum = 4 + set @result = '娉ㄩ攢' + else + set @result = '寮傚父' + return @result +end +--锛5锛夌紪鍐欏嚱鏁帮紝鏍规嵁鍑虹敓鏃ユ湡姹傚勾榫勶紝骞撮緞姹傚疄宀侊紝渚嬪锛 + +--鈥 鐢熸棩涓2000-5-5锛屽綋鍓嶄负2018-5-4锛屽勾榫勪负17宀 +--鈥 鐢熸棩涓2000-5-5锛屽綋鍓嶄负2018-5-6锛屽勾榫勪负18宀 +create table Emp +( + EmpId int primary key identity(1,2), --鑷姩缂栧彿 + empName varchar(20), --濮撳悕 + empSex varchar(4), --鎬у埆 + empBirth smalldatetime --鐢熸棩 +) +insert into Emp(empName,empSex,empBirth) values('鍒樺','鐢','2008-5-8') +insert into Emp(empName,empSex,empBirth) values('鍏崇窘','鐢','1998-10-10') +insert into Emp(empName,empSex,empBirth) values('寮犻','鐢','1999-7-5') +insert into Emp(empName,empSex,empBirth) values('璧典簯','鐢','2003-12-12') +insert into Emp(empName,empSex,empBirth) values('椹秴','鐢','2003-1-5') +insert into Emp(empName,empSex,empBirth) values('榛勫繝','鐢','1988-8-4') +insert into Emp(empName,empSex,empBirth) values('榄忓欢','鐢','1998-5-2') +insert into Emp(empName,empSex,empBirth) values('绠闆','鐢','1992-2-20') +insert into Emp(empName,empSex,empBirth) values('璇歌憶浜','鐢','1993-3-1') +insert into Emp(empName,empSex,empBirth) values('寰愬憾','鐢','1994-8-5') +select * from Emp + +create function outBirth(@birth ) \ No newline at end of file diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" new file mode 100644 index 0000000..680aa63 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/2022-10-6\345\207\275\346\225\260.md" @@ -0,0 +1,65 @@ +## 鍑芥暟 + +鍑芥暟鍒嗕负锛1锛夌郴缁熷嚱鏁:锛岋紙2锛夎嚜瀹氫箟鍑芥暟(鏂规硶锛氬皢涓涓姛鑳藉皝瑁呮垚鍙噸鐢ㄧ殑鍑芥暟)銆 + +鍏朵腑鑷畾涔夊嚱鏁板張鍙互鍒嗕负锛1锛夋爣閲忓煎嚱鏁帮紙杩斿洖鍗曚釜鍊硷級锛岋紙2锛夎〃鍊煎嚱鏁帮紙杩斿洖鏌ヨ缁撴灉锛 + +鏈枃涓昏浠嬬粛鑷畾涔夊嚱鏁扮殑浣跨敤銆 + +### 鏍囬噺鍊煎嚱鏁 璇硶鏍煎紡 + +` + +``` +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --锛園鍙傛暟鍚 鍙傛暟鐨勬暟鎹被鍨嬶級` +`RETURNS date_type --杩斿洖杩斿洖鍊肩殑鏁版嵁绫诲瀷` + +`[AS]` + +`BEGIN` + + `function_body --鍑芥暟浣揱 + + `RETURN 琛ㄨ揪寮; --蹇呴』瑕佹湁鐨刞 + +`END +``` + +` + +### 琛ㄥ煎嚱鏁 璇硶鏍煎紡 + + + +```sql +create function 鍚嶇О + +([{@鍙傛暟鍚嶇О 鍙傛暟绫诲瀷[=榛樿鍊糫}[,n]]) + +returns @灞閮ㄥ彉閲 table锛堝弬鏁板悕 鍙傛暟绫诲瀷锛 + +[with encryption] + +[as] + +begin + +鍑芥暟浣 + +return 鍑芥暟杩斿洖鍊 + +end +``` + +### 鍒犻櫎鑷畾涔夊嚱鏁 + +```sql +DROP function 鍑芥暟鍚 +``` + +### --鎬荤粨锛氳嚜瀹氫箟鍑芥暟 + +##### --1.鏍囬噺鍊煎嚱鏁: 1.returns 鏁版嵁绫诲瀷 2.return 鏍囬噺(鏌愪釜鍊) + +##### --2.澶氳鍙ヨ〃鍊煎嚱鏁 1.returns 琛ㄥ悕 table(瀛楁 鏁版嵁绫诲瀷) 2.return + -- Gitee From dc695ff8950c1dbc0162ef636c068163ee84f9b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=B9=8F?= <3460863727@qq.com> Date: Mon, 10 Oct 2022 10:15:16 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\347\254\25411\346\254\241.sql" | 104 ++++++++++++++++++ ...30\345\202\250\350\277\207\347\250\213.md" | 66 +++++++++++ 2 files changed, 170 insertions(+) create mode 100644 "18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" create mode 100644 "18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" diff --git "a/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" new file mode 100644 index 0000000..1226852 --- /dev/null +++ "b/18\351\231\210\351\271\217/\344\275\234\344\270\232/\347\254\25411\346\254\241.sql" @@ -0,0 +1,104 @@ +use BankTest +go + +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 +select * from bankcard +go +create proc getmin +@info money output +as +begin + select @info=MIN(Cardmoney)from bankcard + select cardno,realname,cardmoney from BankCard b + join AccountInfo a on b.AccountId=a.AccountId + where CardMoney=@info + end + go + declare @info money + exec getmin @info output + + + --2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 + select * from CardExchange + go + create proc yinhang + @kahao varchar(50), + @jine money + as + begin + insert into CardExchange values(@kahao ,@jine ,0,GETDATE()) + end + go + declare @kahao varchar(50)='6225547854125656',@jine money=777 + exec yinhang @kahao,@jine + select * from CardExchange + + --3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 + select * from BankCard + go + create proc quqian + @ka varchar(50), + @quqian money, + @bankout int output + as + begin + select @bankout=(case when cardmoney >=@quqian then 1 else 0 end) + from BankCard where CardNo=@ka + update bankcard set CardMoney -=@quqian where cardno=@ka + end + go + declare @ka varchar(50)='222222222222 ', + @quqian money =666, + @bankout int + exec quqian @ka,@quqian,@bankOut output + select @bankOut + select * from BankCard + + +4.-- 查询出某时间段的银行存取款信息以及存款总金额**,取款总金额, +--传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 + select * from CardExchange + go + create proc getSum + @openTime smalldatetime, + @overTime smalldatetime, + @InSum money output, + @OutSum money output + as + begin + select @InSum=SUM(MoneyInBank),@OutSum=SUM(MoneyOutBank) from CardExchange where ExchangeTime between @openTime and @overTime + end + go + declare @openTime smalldatetime ='2022-09-07', + @overTime smalldatetime ='2022-09-30', + @InSum money,@OutSum money + + exec getSum @openTime,@overTime ,@InSum output ,@OutSum output + select @InSum 存款总额 ,@OutSum 取款总额 + + --5. **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) + +go +create proc pro_yhm + @carNo varchar(50), + @pwd varchar(50) +as +begin + if((select CardNo from BankCard where CardNo =@carNo) !='' + and @pwd = (select CardPwd from BankCard where CardNo =@carNo and @pwd=CardPwd )) + begin + if(len(@pwd) <8) + begin + update BankCard set CardPwd = CONCAT(ROUND(99999+RAND()*99999,0),ROUND(RAND()*9,0),ROUND(RAND()*9,0)) where CardNo =@carNo + end + end + else + begin + print'错了' + end + end + go + declare @carNo varchar(50) = '6225125478544587',@pwd varchar(50) = '123456' + exec pro_yhm @carNo,@pwd + select * from BankCard diff --git "a/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" new file mode 100644 index 0000000..0a380c1 --- /dev/null +++ "b/18\351\231\210\351\271\217/\347\254\224\350\256\260/20-10-10\345\255\230\345\202\250\350\277\207\347\250\213.md" @@ -0,0 +1,66 @@ +瀛樺偍杩囩▼(Stored Procedure) + +瀛樺偍杩囩▼鏄 棰勭紪璇 SQL璇彞闆嗗悎锛岃繖浜涜鍙ュ瓨鍌ㄥ湪涓涓悕绉帮紙瀛樺偍杩囩▼鐨勫悕绉帮級涓嬪苟浣滀负鍗曞厓鏉ュ鐞嗐傚瓨鍌ㄨ繃绋嬩唬鏇夸簡浼犵粺鐨勯愭潯鎵цSQL璇彞鐨勬柟寮忥紝涓涓瓨鍌ㄨ繃绋嬩腑鍙互鍖呭惈鏌ヨ銆佹彃鍏ャ佸垹闄ゃ佹洿鏂扮瓑鎿嶇旱鐨勪竴绯诲垪SQL璇彞锛屽綋杩欎釜瀛樺偍杩囩▼琚皟鐢ㄦ墽琛屾椂锛岃繖浜涙搷浣滀篃浼氬悓鏃舵墽琛屻 + +灏佽濂 --> 璋冪敤 + + 瀛樺偍杩囩▼鐨勫垎绫 + + 绯荤粺瀛樺偍杩囩▼ + + 绯荤粺瀛樺偍杩囩▼鏄敤鏉ョ鐞哠QL Server涓庢樉绀烘湁鍏虫暟鎹簱鍜岀敤鎴风殑淇℃伅鐨勫瓨鍌ㄨ繃绋嬨 + +甯歌鐨勭郴缁熷瓨鍌ㄨ繃绋嬫湁 +sp_databases 鍒楀嚭鏈嶅姟涓婄殑鎵鏈夋暟鎹簱 +sp_helpdb --鎶ュ憡鏈夊叧鎸囧畾鏁版嵁搴撴垨鎵鏈夋暟鎹簱鐨勪俊鎭 +sp_renamedb 鏇存敼鏁版嵁搴撶殑鍚嶇О +sp_tables --杩斿洖褰撳墠鐜涓嬪彲鏌ヨ鐨勫璞$殑鍒楄〃 +sp_columns 杩斿洖鏌愪釜琛ㄥ垪鐨勪俊鎭 +sp_help --杩斿洖鏌愪釜琛ㄧ殑鎵鏈変俊鎭 +sp_helpconstraint 鏌ョ湅鏌愪釜琛ㄧ殑绾︽潫 +sp_helpindex --鏌ョ湅鏌愪釜琛ㄧ殑绱㈠紩 +sp_stored_procedures 鍒楀嚭褰撳墠鐜涓殑鎵鏈夊瓨鍌ㄨ繃绋 +sp_password --娣诲姞鎴栦慨鏀圭櫥褰曡处鎴风殑瀵嗙爜 +sp_rename 閲嶅懡鍚嶅瓨鍌ㄨ繃绋 +sp_helptext 鏄剧ず榛樿鍊硷紝鏈姞瀵嗙殑瀛樺偍杩囩▼銆佺敤鎴峰畾涔夌殑瀛樺偍杩囩▼銆佽Е鍙戝櫒鎴栬鍥剧殑瀹為檯鏂囨湰銆 + + + + 鑷畾涔夊瓨鍌ㄨ繃绋 + +鍒涘缓瀛樺偍杩囩▼ + +1.娌℃湁杈撳叆鍙傛暟锛屾病鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼銆 + create proc <瀛樺偍杩囩▼鍚嶇О> + as + + go + +鎵ц瀛樺偍杩囩▼ + +--鏃犲弬 +exec <瀛樺偍杩囩▼鍚嶇О> +--甯﹀弬 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... +--甯﹀弬甯﹁繑鍥炲 +declare @鍙橀噺 +exec @鍙橀噺 = <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,... +--鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ +declare @鍙橀噺 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output +--涓涓彉閲忓悓鏃跺叿澶囪緭鍏ヨ緭鍑哄姛鑳 +declare @鍙橀噺 <鏁版嵁绫诲瀷> = 鍊 +exec <瀛樺偍杩囩▼鍚嶇О> <褰㈠弬1>,<褰㈠弬2>,@鍙橀噺 output + +鍒犻櫎瀛樺偍杩囩▼ +drop procedure <瀛樺偍杩囩▼鍚嶇О> + + 瀛樺偍杩囩▼鐨勪紭鐐 + + 鍏佽妯″潡鍖栫▼搴忚璁 + + 鎵ц閫熷害鏇村揩 + + 鍑忓皯缃戠粶娴侀氶噺 + + 鎻愰珮绯荤粺瀹夊叏鎬 \ No newline at end of file -- Gitee