diff --git "a/21\345\272\204\344\272\221/\344\275\234\344\270\232/2022-9-22.sql" "b/21\345\272\204\344\272\221/\344\275\234\344\270\232/2022-9-22.sql" new file mode 100644 index 0000000000000000000000000000000000000000..943b2c274e4828a11fc0e5a92f12ce858bed8f5b --- /dev/null +++ "b/21\345\272\204\344\272\221/\344\275\234\344\270\232/2022-9-22.sql" @@ -0,0 +1,97 @@ +--#### 变量 +select * from AccountInfo; +select *from BankCard; +select * from CardExchange; +select * from CardStateChange; +select * from CardTransfer; +--1. 为赵云此人进行开户开卡操作,赵云身份证:420107199904054233 +declare @idcard varchar(20),@a varchar(20),@aid int,@cn varchar(30) +set @idcard = '420107199904054233' +select @a=AccountCode from AccountInfo where AccountCode=@idcard + +if(@a is null) + begin + insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) values (@idcard,' ','赵云',GETDATE()) + select @aid =AccountId from AccountInfo where AccountCode=@idcard + insert into BankCard (CardNo,AccountId,CardPwd,CardMoney,CardState,CardTime) values ('6225547858741264',@aid,'123456',0,1,GETDATE ()) + select @cn=CardNo from BankCard where AccountId=@aid +print '您已成功开卡开户,你的卡号是' +@cn+'初始密码是123456' + end + else + begin + print '已有此用户' + end + +--2. 需要求出张飞的银行卡卡号和余额,张飞身份证:420107199602034138 (1.使用连接查询,2.使用变量) + +--#### 逻辑控制 + +--##### 条件分支if-else + + +--? 3.某用户银行卡号为“6225547854125656”,该用户执行取钱操作,取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”。 + +--##### 条件分支:case-when +declare @cardmoney money; +select @cardmoney= CardMoney from BankCard where CardNo='6225547854125656'; +if @cardmoney>5000 +begin +update BankCard set CardMoney=CardMoney-5000 where CardNo='6225547854125656' +insert into CardExchange (CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) values ('6225547854125656',0,5000,GETDATE()) +print '取钱成功' +end +else +begin +print '余额不足' +end + +--? 4.查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,并且根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户", + +----显示列分别为卡号,身份证,姓名,余额,用户等级,银行卡状态。 + +--##### **while** +select CardNo,AccountCode,RealName,CardMoney , +( +case +when CardState=1 then '正常' +when CardState=2 then '挂失' +when CardState=3 then '冻结' +when CardState=4 then '注销' +end +) 银行卡状态, +( +case +when CardMoney>30000 then 'VIP客户' +when CardMoney<30000 then '普通用户' +end +) 银行卡等级 + from BankCard + inner join AccountInfo on AccountInfo.AccountId=BankCard.AccountId + +--? 5.循环打印1-10。 +declare @b int +set @b=1 +while (@b<=10) +begin +print @b +set @b+=1 +end +----? 6.打印99乘法表 +declare @n int = 1 +while @n<=9 +begin + + declare @m int = 1 + declare @result varchar(500) = '' + while @m<=@n + + begin + set @result = @result + convert(varchar(2), @n) + ' * ' + + convert(varchar(2), @m) + ' = '+ convert(varchar(2),@n*@m) + char(9) + set @m =@m + 1 + end + + print @result + set @n = @n + 1 + +end \ No newline at end of file diff --git "a/21\345\272\204\344\272\221/\347\254\224\350\256\260/SQL SERVER.md" "b/21\345\272\204\344\272\221/\347\254\224\350\256\260/SQL SERVER.md" index 3d7f90e09c0974850288f06dd5cf36fe4222a4e1..8cd63f9aa8b401853454f20ab341f2048f50e3f2 100644 --- "a/21\345\272\204\344\272\221/\347\254\224\350\256\260/SQL SERVER.md" +++ "b/21\345\272\204\344\272\221/\347\254\224\350\256\260/SQL SERVER.md" @@ -204,3 +204,146 @@ Select CONVERT(varchar(20),GETDATE(),14) --15:05:49:330 ##### 鍒嗗尯鍑芥暟 partition by partition by鐩告瘮杈冧簬group by锛岃兘澶熷湪淇濈暀鍏ㄩ儴鏁版嵁鐨勫熀纭涓婏紝鍙鍏朵腑鏌愪簺瀛楁鍋氬垎缁勬帓搴忥紝鑰実roup by鍒欏彧淇濈暀鍙備笌鍒嗙粍鐨勫瓧娈靛拰鑱氬悎鍑芥暟鐨勭粨鏋溿 + +## 鍙橀噺涓庨昏緫鎺у埗 + +- 鎺屾彙鍙橀噺鐨勫畾涔夊拰浣跨敤 +- 鎺屾彙杈撳嚭璇彞 +- 鎺屾彙閫昏緫鎺у埗璇彞 +- 鐞嗚В鎵瑰鐞嗙殑姒傚康 + +### 鍙橀噺 + +#### 灞閮ㄥ彉閲 + +灞閮ㄥ彉閲忓繀椤讳互鏍囪@浣滀负鍓嶇紑 锛屽@age +灞閮ㄥ彉閲忕殑浣跨敤鏄厛澹版槑锛屽啀璧嬪 +灞閮ㄥ彉閲忓彧鍦ㄥ畾涔夊畠鐨勫眬閮ㄨ寖鍥村唴鏈夋晥 + + + +澹版槑涓涓眬閮ㄥ彉閲忥細**declare @鍙橀噺鍚 鏁版嵁绫诲瀷** + +```sql +--渚嬶細 + declare @id int --澹版槑涓涓悕涓篿d鐨勬暣鍨嬪彉閲 + declare @name varchar(50) --澹版槑涓涓彲鍙橀暱搴︿负50鐨勫瓨鏀惧鍚嶇殑瀛楃涓插彉閲 + +``` + +璧嬪硷細 + +- set @鍙橀噺鍚 = 鍊 + +- select @鍙橀噺鍚 = 鍊 + +```sql +--渚: + select @id = 1001 + set @name = '寮犱笁' +``` + +set涓巗elect璧嬪肩殑鍖哄埆锛 + +set璧嬪肩粰鍙橀噺鎸囧畾鐨勫硷紝select涓鑸敤浜庤〃涓煡璇㈠嚭鐨勬暟鎹祴鍊肩粰鍙橀噺锛屽鏋滄煡璇㈢粨鏋滄湁澶氭潯锛屽彇鏈鍚庝竴鏉¤祴鍊肩粰鍙橀噺 + +#### 鍏ㄥ眬鍙橀噺 + +鍏ㄥ眬鍙橀噺蹇呴』浠ユ爣璁癅@浣滀负鍓嶇紑锛屽@@version +鍏ㄥ眬鍙橀噺鐢**绯荤粺瀹氫箟鍜岀淮鎶**锛屾垜浠**鍙兘璇诲彇锛屼笉鑳戒慨鏀瑰叏灞鍙橀噺鐨勫** +鍏ㄥ眬鍙橀噺鍦ㄦ暣涓猄QL鐜涓嬮兘鍙互琚闂垨璋冪敤 + +```sql +--@@ERROR锛氳繑鍥炴墽琛岀殑涓婁竴涓鍙ョ殑閿欒鍙 +--@@IDENTITY锛氳繑鍥炴渶鍚庢彃鍏ョ殑鏍囪瘑鍊 +--@@MAX_CONNECTIONS锛氳繑鍥炲厑璁稿悓鏃惰繘琛岀殑鏈澶х敤鎴疯繛鎺ユ暟 +--@@ROWCOUNT锛氳繑鍥炲彈涓婁竴璇彞褰卞搷鐨勮鏁 +--@@SERVERNAME锛氳繑鍥炶繍琛 SQL Server 鐨勬湰鍦版湇鍔″櫒鐨勫悕绉 +--@@SERVICENAME锛氳繑鍥 SQL Server 姝e湪鍏朵笅杩愯鐨勬敞鍐岃〃椤圭殑鍚嶇О +--@@TRANCOUNT锛氳繑鍥炲綋鍓嶈繛鎺ョ殑娲诲姩浜嬪姟鏁 +--@@LOCK_TIMEOUT锛氳繑鍥炲綋鍓嶄細璇濈殑褰撳墠閿佸畾瓒呮椂璁剧疆锛堟绉掞級 +``` + + + + + + + +## 杈撳嚭璇彞 + +1. print鍙橀噺鎴栬〃杈惧紡 +2. select鍙橀噺鎴栬〃杈惧紡 + +```sql +--渚: + print '鏁版嵁搴撴湇鍔″櫒鍚:' + @@servicename + select 15*8 +``` + + + +#### 浣跨敤convert鍑芥暟 + +鈥 鐢变簬PRINT 鍛戒护鍚戝鎴风杩斿洖涓涓粨鏋滅殑瀛楃涓茬殑淇℃伅銆傚鏋滃彉閲忓间笉鏄瓧绗︿覆鐨勮瘽蹇呴』鍏堢敤鏁版嵁绫诲瀷杞崲鍑芥暟 CONVERT 灏嗗叾杞崲涓哄瓧绗︿覆銆 + +```sql +--鏄剧ず鑷姩缂栧彿 +print '褰撳墠鑷姩缂栧彿鐨勫:' + convert(varchar(10),@@IDENTITY) +``` + +**cast(瀛楁鍚 as 鏁版嵁绫诲瀷)** + +## 閫昏緫鎺у埗璇彞 + +#### if鏉′欢鍒嗘敮 + +![1662377697247](E:\涓撲笟璇綷SQL sever\02-鍙橀噺涓庨昏緫鎺у埗\1662377697247.png) + + + +#### 寰幆鎺у埗璇彞 + +![1662377859010](E:\涓撲笟璇綷SQL sever\02-鍙橀噺涓庨昏緫鎺у埗\1662377859010.png) + +##### while锛氬彲浠ラ氳繃break鍜宑ontinue鎺у埗寰幆璇彞涓殑鎵ц銆 + +#### 閫昏緫鎺у埗璇彞 switch case + +![1662377940867](E:\涓撲笟璇綷SQL sever\02-鍙橀噺涓庨昏緫鎺у埗\1662377940867.png) + + + +## 鎵瑰鐞嗚鍙 + +go璇彞鐗圭偣: + +1. 绛夊緟go璇彞鍓嶇殑浠g爜鎵ц瀹屾垚鍚庯紝鍐嶆墽琛実o鍚庨潰鐨勪唬鐮併 +2. 鎵瑰鐞嗚鍙ョ殑缁撴潫鏍囧織銆 + +```sql +--涓嬮潰鐨凘num鍙橀噺浣滅敤鍩熶负鍏ㄥ眬 +--declare @num int +--set @num = 0 + +--涓嬮潰鐨凘num鍙橀噺鐨勪綔鐢ㄥ煙鏄眬閮紝鍙湪涓や釜go涔嬮棿鍙互浣跨敤锛屾渶鍚庝竴琛屼唬鐮佷細鎶ラ敊 +--.........sql浠g爜 +--go +--declare @num int +--set @num = 0 +--go +--set @num = 1 +``` + + + + + +## 鎬荤粨 + +鍙橀噺鐨勪娇鐢ㄣ傝鍏堢敤DECLARE 鍏抽敭瀛楀0鏄庯紝鐒跺悗鐢⊿ET鎴朣ELECT璧嬪笺傚眬閮ㄥ彉閲忓墠蹇呴』鏈 鈥淍鈥 浣滃墠缂锛屽叏灞鍙橀噺蹇呴』鏈 鈥淍@鈥 浣滃墠缂銆 +鍙橀噺鐨勮緭鍑哄彲浠ョ敤锛歅RINT鎴朣ELECT璇彞銆 +閫昏緫鎺у埗璇彞鎻愪緵浜嗘潯浠舵搷浣滄墍闇鐨勯『搴忓拰閫昏緫銆 +浜嗚ВT-SQL缂栧啓宸ュ叿銆 +鎵瑰鐞嗗彲浠ユ彁楂樿鍙ユ墽琛岀殑鏁堢巼锛屼娇鐢ㄢ淕O鈥濅綔涓虹粨鏉熸爣蹇椼 +