From 0cd60da5b8ede87e5c37556acaf0f0d5a172fa24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= <1986456126@qq.com> Date: Mon, 10 Oct 2022 01:57:14 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=BB=BA=202022-10-07=EF=BC=88?= =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=80=E6=AC=A1=E4=BD=9C=E4=B8=9A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/.keep" diff --git "a/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/.keep" "b/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From d4ca334fab2ab87594360167096a5f8495280038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= <1986456126@qq.com> Date: Mon, 10 Oct 2022 02:03:40 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 鏉庢稕 <1986456126@qq.com> --- .../SQLQuery1.sql" | 102 ++++++++++++++++ .../\347\254\224\350\256\260.txt" | 113 ++++++++++++++++++ 2 files changed, 215 insertions(+) create mode 100644 "09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/SQLQuery1.sql" create mode 100644 "09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/\347\254\224\350\256\260.txt" diff --git "a/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/SQLQuery1.sql" "b/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/SQLQuery1.sql" new file mode 100644 index 0000000..0a519ac --- /dev/null +++ "b/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/SQLQuery1.sql" @@ -0,0 +1,102 @@ +use BankTest +go +select * from BankCard +select * from AccountInfo +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 +create proc proc_GetMinMoney +as +begin +select CardNo,RealName,CardMoney from BankCard b +inner join AccountInfo a on a.AccountId=b.AccountId +where CardMoney = (select min(CardMoney) from BankCard) +end +drop proc proc_GetMinMoney +--2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 + +select * from CardExchange +go +create proc proc_GetMoneyInBank +@cardNo varchar(30), +@MoneyInBank money +as +begin + update BankCard set CardMoney+=@MoneyInBank where CardNo=@cardNo + insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) + values (@cardNo,@MoneyInBank,0,GETDATE()) +end +go +exec proc_GetMoneyInBank '6225125478544587',300 +drop proc proc_GetMoneyInBank +--3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 +create proc proc_GetMoneyOutBank +@cardno varchar(30), +@MoneyOutBank money +as +begin +update BankCard set CardMoney=CardMoney-@MoneyOutBank where CardNo=@cardno +if(@@ERROR!=0) +return -1 +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) +values (@cardno,@MoneyOutBank,0,GETDATE()) +end +go + +declare @MoneyOutBank int +exec @MoneyOutBank = proc_GetMoneyOutBank '6225125478544587',200 +print @MoneyOutBank +select * from CardExchange +drop proc proc_GetMoneyOutBank +select * from BankCard + +--4. **查询出某时间段的银行存取款信息以及存款总金额**,取款总金额,传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 +create proc proc_selectExChange + @start varchar(20),--开始时间 + @end varchar(20),--结束时间 + @sumIn money output,--存款总金额 + @sumOut money output--取款总金额 +as +begin + select @sumIn=(select sum (MoneyInBank)from CardExchange + where ExchangeTime between @start +' 00:00:00'and @end+' 23:59:59') + select @sumOut=(select sum (MoneyOutBank)from CardExchange + where ExchangeTime between @start +' 00:00:00'and @end+' 23:59:59') + select*from CardExchange + where ExchangeTime between @start +' 00:00:00'and @end+' 23:59:59' +end +go +declare @sumIn money +declare @sumOut money +exec proc_selectExChange '2021-1-1','2021-12-30',@sumIn output, @sumOut output +select @sumIn 存款总金额 +select @sumOut 取款总金额 +drop proc proc_selectExChange + +select * from BankCard +--5. **密码升级**,6225125478544587,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 + +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) + +create proc proc_PwdUpgrade + @CardNo nvarchar(20), + @pwd nvarchar(20) output +as + if not exists(select*from BankCard where CardNo=@CardNo and CardPwd=@pwd) + set @pwd='' + else + begin + if len(@pwd)<8 + begin + declare @len int=8-len(@pwd) + declare @i int=1 + while @i<=@len + begin + set @pwd=@pwd+cast(floor(rand()*10)as varchar(1)) + set @i=@i+1 + end + update BankCard set CardPwd=@pwd where CardNo=@CardNo + end + end +go +declare @pwd nvarchar(20)='123456' +exec proc_PwdUpgrade'6225125478544587',@pwd output +select @pwd \ No newline at end of file diff --git "a/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/\347\254\224\350\256\260.txt" "b/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..5eeccb0 --- /dev/null +++ "b/09\346\235\216\346\266\233/2022-10-07\357\274\210\347\254\254\345\215\201\344\270\200\346\254\241\344\275\234\344\270\232\357\274\211/\347\254\224\350\256\260.txt" @@ -0,0 +1,113 @@ +Sql Server鐨勫瓨鍌ㄨ繃绋嬭瑙 + +涓锛氬瓨鍌ㄨ繃绋嬫杩 +1.1 瀛樺偍杩囩▼鐨勬蹇 +瀛樺偍杩囩▼锛圫tored Procedure锛夋槸棰勭紪璇慡QL璇彞闆嗗悎锛岃繖浜涜鍙ュ瓨鍌ㄥ湪涓涓悕绉帮紙瀛樺偍杩囩▼鐨勫悕绉帮級涓嬪苟浣滀负鍗曞厓鏉ュ鐞嗐傚瓨鍌ㄨ繃绋嬩唬鏇夸簡浼犵粺鐨勯愭潯鎵цSQL璇彞鐨勬柟寮忥紝涓涓瓨鍌ㄨ繃绋嬩腑鍙互鍖呭惈鏌ヨ銆佹彃鍏ャ佸垹闄ゃ佹洿鏂扮瓑鎿嶇旱鐨勪竴绯诲垪SQL璇彞锛屽綋杩欎釜瀛樺偍杩囩▼琚皟鐢ㄦ墽琛屾椂锛岃繖浜涙搷浣滀篃浼氬悓鏃舵墽琛屻 +瀛樺偍杩囩▼涓庡叾浠栫紪绋嬭瑷涓殑杩囩▼绫讳技锛屽畠鍙互鎺ュ彈杈撳叆鍙傛暟锛屽苟浠ヨ緭鍑哄弬鏁扮殑鏍煎紡鍚戣皟鐢ㄨ繃绋嬫垨鎵瑰鐞嗚繑鍥炲涓硷紱鍖呭惈鐢ㄤ簬鍦ㄦ暟鎹簱涓墽琛屾搷浣滐紙鍖呮嫭璋冪敤鍏朵粬杩囩▼锛夌殑鍙樻垚璇彞锛涘悜璋冪敤杩囩▼鎴栨壒澶勭悊杩斿洖鐘舵佸硷紝浠ユ寚鏄庢垚鍔熸垨鑰呭け璐ワ紙浠ュ強澶辫触鐨勫師鍥狅級銆 +SQL Server鎻愪緵浜嗕笁绉嶇被鍨嬬殑瀛樺偍杩囩▼ +1.绯荤粺瀛樺偍杩囩▼锛氱敤鏉ョ鐞哠QL Server涓庢樉绀烘湁鍏虫暟鎹簱鍜岀敤鎴风殑淇℃伅鐨勫瓨鍌ㄨ繃绋嬨 +2.鑷畾涔夊瓨鍌ㄨ繃绋嬶細鐢ㄦ埛鍦⊿QL Server涓氳繃閲囩敤SQL璇彞鍒涘缓瀛樺偍杩囩▼銆 +3.鎵╁睍瀛樺偍杩囩▼锛氶氳繃缂栫▼璇█锛堜緥濡侰锛夊垱寤哄閮ㄤ緥绋嬶紝骞跺皢杩欎釜渚嬬▼鍦⊿QL Server涓綔涓哄瓨鍌ㄨ繃绋嬩娇鐢ㄣ + +1.2 瀛樺偍杩囩▼鐨勪紭鐐 +瀛樺偍杩囩▼鐨勬湁鐐硅〃鐜板湪浠ヤ笅鍑犱釜鏂归潰锛 +锛1锛夊瓨鍌ㄨ繃绋嬪彲浠ュ祵濂椾娇鐢紝鏀寔浠g爜閲嶇敤锛 +锛2锛夊瓨鍌ㄨ繃绋嬪彲浠ユ帴鍙椾笌浣跨敤鍙傛暟鍔ㄦ佹墽琛屽叾涓殑SQL璇彞锛 +锛3锛夊瓨鍌ㄨ繃绋嬫瘮涓鑸殑SQL璇彞鎵ц閫熷害蹇傚瓨鍌ㄨ繃绋嬪湪鍒涘缓鏃跺氨宸茬粡琚紪璇戯紝姣忔鎵ц鏃讹紝涓嶉渶瑕侀噸鏂扮紪璇戙傝孲QL璇彞姣忔鎵ц閮介渶瑕佺紪璇戯紱 +锛4锛夊瓨鍌ㄨ繃绋嬪叿鏈夊畨鍏ㄧ壒鎬э紙渚嬪鏉冮檺锛夊拰鎵鏈夋潈閾炬帴锛屼互鍙婂彲浠ラ檮鍔犲彂鍒颁粬浠殑璇佷功銆傜敤鎴峰彲浠ヨ鎺堟潈鏉ユ墽琛屽瓨鍌ㄨ繃绋嬭屼笉蹇呯洿鎺ュ瀛樺偍杩囩▼涓紩鐢ㄧ殑瀵硅薄鍏锋湁鏉冮檺锛堟湁鐐瑰儚JAVA闈㈠悜瀵硅薄閲岄潰鐨勫皝瑁咃級銆 +锛5锛夊瓨鍌ㄨ繃绋嬪厑璁告ā鍧楀寲绋嬪簭璁捐銆傚瓨鍌ㄨ繃绋嬩竴鏃﹀垱寤猴紝浠ュ悗鍗冲彲鍦ㄧ▼搴忎腑璋冪敤浠绘剰澶氭銆傝繖鍙互鏀硅繘搴旂敤绋嬪簭鐨勫彲缁存姢鎬э紙鏈夌偣鍍廕AVA涓殑鍒嗗眰鏋舵瀯鐨勬濇兂锛夛紝骞跺厑璁稿簲鐢ㄧ▼搴忓悓鎰忚闂暟鎹簱銆 +锛6锛夊瓨鍌ㄨ繃绋嬪彲浠ュ噺灏戠綉缁滈氳娴侀噺銆備竴涓渶瑕佹暟鐧捐SQL璇彞浠g爜鐨勬搷浣滃彲浠ラ氳繃涓鏉℃墽琛岃繃绋嬩唬鐮佺殑璇彞鏉ユ墽琛岋紝鑰屼笉闇瑕佸湪缃戠粶涓彂閫佹暟鐧捐浠g爜銆 +锛7锛夊瓨鍌ㄨ繃绋嬪彲浠ュ己鍒跺簲鐢ㄧ▼搴忕殑瀹夊叏鎬с傚弬鏁板寲瀛樺偍杩囩▼鏈夊姪浜庝繚鎶ゅ簲鐢ㄧ▼搴忎笉鍙桽QL Injection鏀诲嚮銆 +璇存槑锛歋QL Injection鏄竴绉嶆敾鍑绘柟寮忥紝瀹冨彲浠ュ皢鎭舵剰鐨勪唬鐮佹彃鍏ュ埌浠ュ悗灏嗕紶閫掔粰SQL Server渚涘垎鏋愬拰鎵ц鐨勫瓧绗︿覆涓備换浣曟瀯鎴怱QL璇彞鐨勮繃绋嬮兘搴旇杩涜娉ㄥ叆婕忔礊妫鏌ワ紝鍥犱负SQL Server灏嗘墽琛屽櫒鎺ユ敹鍒扮殑鎵鏈夎娉曟湁鏁堢殑鏌ヨ銆 + +浜岋細 鍒涘缓瀛樺偍杩囩▼ +2.1 浣跨敤鍙鍖栧伐鍏峰垱寤哄瓨鍌ㄨ繃绋 +姣忎釜鍙鍖栧伐鍏烽兘鍙兘鏈変竴瀹氱殑宸紓锛屾墍浠ョ敤浠涔堝伐鍏峰垱寤哄瓨鍌ㄨ繃绋嬶紝鍘荤櫨搴︽壘涓涓嬭祫婧愬簲璇ュ緢澶氳繖閲屼笉鍋氭紨绀轰簡 + +2.2 浣跨敤create proc璇彞鍒涘缓瀛樺偍杩囩▼ +璇硶濡備笅 + +create proc Procedure Proc_Student +@Proc_Son int +as +select * from Student where Sno = @Proc_Son + +涓夛細绠$悊瀛樺偍杩囩▼ +3.1 鎵ц瀛樺偍杩囩▼ +瀛樺偍杩囩▼鍒涘缓瀹屾垚涔嬪悗锛屽彲浠ラ氳繃EXECUTE鍛戒护鎵ц锛屽彲绠鍐欎负EXEC銆 + +1.EXECUTE +EXECUTEyonglai zhixing Transact-SQL 涓懡浠ゅ瓧绗︿覆銆佸瓧绗︿覆銆佹垨鑰呮墽琛屼笅鍒楁ā鍧椾箣涓锛氱郴缁熷瓨鍌ㄨ繃绋嬨佺敤鎴疯嚜瀹氫箟瀛樺偍杩囩▼銆佹爣閲忓肩敤鎴峰畾涔夊嚱鏁版垨鑰呮墿灞曞瓨鍌ㄨ繃绋嬨 + +2.浣跨敤EXECUTE鎵ц瀛樺偍杩囩▼ +渚嬪鎵ц瀛樺偍杩囩▼Proc_Stu + +exec Proc_Stu + +3.2 鏌ョ湅瀛樺偍杩囩▼ +1.浣跨敤 sys.sql_modules 鏌ョ湅瀛樺偍杩囩▼瀹氫箟锛 + +select * from sys.sql_modules + +2.浣跨敤 OBJECT_DEFINITION 鏌ョ湅瀛樺偍杩囩▼瀹氫箟 + +OBJECT_DEFINITION(object_id) + +3.浣跨敤 sp_helptext 鏌ョ湅瀛樺偍杩囩▼鐨勫畾涔 +鏄剧ず鐢ㄦ埛瀹氫箟瑙勫垯鐨勫畾涔夈侀粯璁ゅ笺佹湭鍔犲瘑鐨凾ransact-SQL 瀛樺偍杩囩▼銆佺敤鎴峰畾涔塗ransact-SQL鍑芥暟銆佽Е鍙戝櫒銆佽绠楀垪銆丆HECK绾︽潫銆佽鍥炬垨绯荤粺瀵硅薄锛堝绯荤粺瀛樺偍杩囩▼锛夈傝鍙ュ涓嬶細 + +sp_helptext 'Proc_Stu' + +3.3 淇敼瀛樺偍杩囩▼ +淇敼瀛樺偍杩囩▼鍙互鏀瑰彉瀛樺偍杩囩▼褰撲腑鐨勫弬鏁版垨鑰呰鍙ワ紝鍙互閫氳繃SQL璇彞涓殑 ALTER PROCEDURE 璇彞瀹炵幇銆傝櫧鐒跺垹闄ゅ苟閲嶆柊鍒涘缓璇ュ瓨鍌ㄨ繃绋嬶紝涔熷彲浠ヨ揪鍒颁慨鏀瑰瓨鍌ㄨ繃绋嬬殑鐩爣锛屼絾鏄皢涓㈠け涓庤瀛樺偍杩囩▼鍏宠仈鐨勬墍鏈夋潈闄愩 + +1.ALTER PROCEDURE 璇彞 +ALTER PROCEDURE 璇彞鐢ㄦ潵淇敼閫氳繃鎵ц CREATE PROCEDUR璇彞鍒涘缓杩囩▼銆傝璇彞淇敼瀛樺偍杩囩▼鏃讹紝涓嶄細鏇存敼鏉冮檺锛屼篃涓嶅奖鍝嶇浉鍏崇殑瀛樺偍杩囩▼鎴栬Е鍙戝櫒銆 +渚嬶細淇敼鍚嶄负鈥淧roc_Stu鈥濈殑瀛樺偍杩囩▼銆 + +ALTER PROCEDURE [dbo].[Proc_Stu] +@Son varchar(10) +as +select * from student + + +3.4 閲嶅懡鍚嶅瓨鍌ㄨ繃绋 +sp_rename 'Proc_Stu','Proc_StuInfo' + +娉ㄦ剰锛氭洿鏀瑰璞″悕鐨勪换涓閮ㄥ垎閮藉彲鑳界牬鍧忚剼鏈拰瀛樺偍杩囩▼銆傚缓璁笉瑕佷娇鐢ㄦ璇彞鏉ラ噸鍛藉悕瀛樺偍杩囩▼銆佽Е鍙戝櫒銆佺敤鎴疯嚜瀹氫箟鍑芥暟鎴栬鍥撅紱鑰屾槸鍒犻櫎璇ュ璞★紝鐒跺悗浣跨敤鏂板悕绉伴噸鏂板垱寤鸿瀵硅薄銆 + +3.5 鍒犻櫎瀛樺偍杩囩▼ +DROP PROCENDURE Proc_Student + + +#### 瀛樺偍杩囩▼涓庡嚱鏁扮殑鍖哄埆 + +1.鍌ㄥ瓨杩囩▼鍙互鏈夎繑鍥炲间篃鍙互鏃犺繑鍥炲笺傚嚱鏁板繀椤绘湁杩斿洖鍊笺 + +2.瀛樺偍杩囩▼鐨勫疄鐜版瘮杈冨鏉傦紝鑰屽嚱鏁扮殑瀹炵幇姣旇緝鏈夐拡瀵规с + +3.鍌ㄥ瓨杩囩▼鍙互杈撳叆杈撳嚭鍙傛暟锛岃屽嚱鏁板彧鍙互杈撳叆鍙傛暟銆 + +4.杩囩▼鍏佽鍦ㄥ叾涓夋嫨浠ュ強DML璇彞锛岃屽嚱鏁板彧鍙互鍦ㄥ叾涓璼elect璇彞銆 + +5.鍙互鍦ㄥ瓨鍌ㄨ繃绋嬩腑璋冪敤鍑芥暟锛屼笉鍙互鍦ㄥ嚱鏁颁腑璋冪敤瀛樺偍杩囩▼銆 + +6.鍑芥暟鍙互浣滀负鏉′欢鍦ㄨ鍙ヤ腑浣跨敤锛屼絾鏄瓨鍌ㄨ繃绋嬩笉鍙互銆 + + + +甯歌鐨勭郴缁熷瓨鍌ㄨ繃绋嬫湁 + +```sql +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 鏄剧ず榛樿鍊硷紝鏈姞瀵嗙殑瀛樺偍杩囩▼銆佺敤鎴峰畾涔夌殑瀛樺偍杩囩▼銆佽Е鍙戝櫒鎴栬鍥剧殑瀹為檯鏂囨湰銆 \ No newline at end of file -- Gitee