diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/.keep" "b/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/\344\275\234\344\270\232.sql" "b/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..2451c656ecc2ae8bf67a4230a7f8054060e3ccb0 --- /dev/null +++ "b/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/\344\275\234\344\270\232.sql" @@ -0,0 +1,38 @@ +select * from people +select * from Department +--(1)假设有部门表和员工表,在添加员工的时候,该员工的部门编号如果在部门表中找不到,则自动添加部门信息,部门名称为"新部门"。 +go +create trigger tri_GetNewDepartment +on people for insert +as +declare @id varchar(20) +set @id = (select DepartmentId from inserted) +if not exists(select * from Department where @id=DepartmentId) + +begin +insert into Department(DepartmentId,DepartmentName) values(@id,'新部门') +end +insert into people values('007','孙策','男',6500) + +drop trigger tri_GetNewDepartment; +--(2)触发器实现,删除一个部门的时候将部门下所有员工全部删除。 +create trigger tri_delete +on Department for delete +as + --删员工 + delete from People where DepartmentId = (select DepartmentId from deleted) --updated + +delete from Department where DepartmentId = '005'; + +drop trigger tri_delete; +--(4)修改一个部门编号之后,将该部门下所有员工的部门编号同步进行修改 +create trigger tri_GetUpdate +on Department for update +as +declare @newid varchar(20) = (select DepartmentId from inserted) +declare @oldid varchar(20) = (select DepartmentId from deleted) + +update people set DepartmentId = @newid where @oldid=DepartmentId +; +update Department set DepartmentId = '005' where DepartmentId='007'; +drop trigger tri_GetUpdate; \ No newline at end of file diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/\347\254\224\350\256\260.txt" "b/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/\347\254\224\350\256\260.txt" new file mode 100644 index 0000000000000000000000000000000000000000..6a4ddf85421ef873f882caddea04088aaec18720 --- /dev/null +++ "b/47\346\233\276\345\276\267\346\243\256/2022-10-10-\350\247\246\345\217\221\345\231\250/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/\347\254\224\350\256\260.txt" @@ -0,0 +1,41 @@ +## 瑙﹀彂鍣紙trigger锛 + +#### 浠涔堟槸瑙﹀彂鍣細 insert --銆 涓绯诲垪闅忕潃鎻掑叆鎿嶄綔鑷姩鎵ц鐨剆ql璇彞闆嗗悎 + + **瑙﹀彂鍣**锛 trigger 锛夋槸浣滀负**瀵规暟鎹簱淇敼鐨勮繛甯︽晥鏋**鑰**鐢辩郴缁熻嚜鍔ㄦ墽琛**鐨勪竴鏉¤鍙ャ傚畠鏄竴绉嶇壒娈婄殑**瀛樺偍杩囩▼**銆備篃鏄竴涓**浜嬪姟**锛堝彲浠ュ洖婊氾級銆備负浜嗗畾涔変竴涓猍瑙﹀彂鍣╙(https://so.csdn.net/so/search?q=瑙﹀彂鍣&spm=1001.2101.3001.7020)锛屾垜浠繀椤伙細 + +- 鎸囨槑**浠涔堟椂鍊欐墽琛岃Е鍙戝櫒**銆傝繖琚媶鍒嗕负**寮曡捣瑙﹀彂鍣ㄨ妫娴嬬殑涓涓猏*浜嬩欢\***鍜**瑙﹀彂鍣ㄧ户缁墽琛屾墍蹇呴』婊¤冻鐨勪竴涓潯浠**銆 +- 鎸囨槑**褰撹Е鍙戝櫒鎵ц鏃舵墍閲囧彇鐨勫姩浣**銆 + + + +#### 瑙﹀彂鍣ㄥ垎绫 + +鍒嗕负 DML瑙﹀彂鍣 + +#### DML瑙﹀彂鍣 锛 澧炲垹鏀 + +##### after瑙﹀彂鍣細 澧炲垹鏀 涔嬪悗鎵ц鐨 + +after瑙﹀彂鍣ㄤ富瑕佺敤浜庯細insert锛寀pdate锛宒elete + +##### instead of 瑙﹀彂鍣 锛 澧炲垹鏀 涔嬪墠妫鏌ョ殑 + + + +#### 鍒涘缓瑙﹀彂鍣ㄧ殑璇彞 + +```sql +CREATE TRIGGER <瑙﹀彂鍣ㄥ悕绉> + +ON table_name +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL璇彞 + +GO +--WITH ENCRYPTION琛ㄧず鍔犲瘑瑙﹀彂鍣ㄥ畾涔夌殑SQL鏂囨湰 + +--DELETE, INSERT, UPDATE鎸囧畾瑙﹀彂鍣ㄧ殑绫诲瀷 \ No newline at end of file diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/.keep" "b/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/.keep" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/SQLQuery2.sql" "b/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/SQLQuery2.sql" new file mode 100644 index 0000000000000000000000000000000000000000..42569000c1077108c89b2ce62613305a1021eb71 --- /dev/null +++ "b/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\344\275\234\344\270\232/SQLQuery2.sql" @@ -0,0 +1,92 @@ +--1. 定义存储过程实现查询出账户余额最低的银行卡账户信息,显示银行卡号,姓名,账户余额 +create proc proc_MinMoneyCard +as +begin +select top 1 CardNo 银行卡号,RealName 姓名,CardMoney 余额 +from BankCard inner join AccountInfo on BankCard.AccountId=AccountInfo.AccountId +order by CardMoney asc +end +go + +exec proc_MinMoneyCard + +--2. 模拟银行卡存钱操作,传入银行卡号,存钱金额,实现存钱操作 +create proc proc_CunQian +@CardNo varchar(30),@MoneyInBank money +as +update BankCard set CardMoney = CardMoney + @MoneyInBank where CardNo = @CardNo +insert into CardExchange (CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) + values(@CardNo,@MoneyInBank,0,GETDATE()) +go + +exec proc_CunQian '420107199904054233',1000 + +--3. 模拟银行卡取钱操作,传入银行卡号,取钱金额,实现取钱操作,取钱成功,返回1,取钱失败返回-1 +create proc proc_QuQian +@CardNo varchar(30),@MoneyOutBank money +as +update BankCard set CardMoney = CardMoney - @MoneyOutBank where CardNo = @CardNo +if @@ERROR <> 0 + return -1 +insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime) + values(@CardNo,0,@MoneyOutBank,GETDATE()) +return 1 +go + +declare @returnvalue int +exec @returnvalue = proc_QuQian '420107199904054233',500 +print @returnvalue + + +--4. **查询出某时间段的银行存取款信息以及存款总金额**,取款总金额,传入开始时间,结束时间,显示存取款交易信息的同时,返回存款总金额,取款总金额。 +create proc proc_selectexchange +@StartTime varchar(20),--开始时间 +@endTime varchar(20),--结束时间 +@SumIn money output,--存款总金额 +@SumOut money output --取款总金额 +as +select @SumIn = (select SUM(MoneyInBank) from CardExchange where ExchangeTime between +@StartTime + '00:00:00' and @endTime + '23:59:59') +select @SumOut = (select SUM(MoneyOutBank) from CardExchange where ExchangeTime between +@StartTime + '00:00:00' and @endTime + '23:59:59') +select * from CardExchange +where ExchangeTime between @StartTime + '00:00:00' and @endTime + '23:59:59' +go + +declare @SumIn money --存款总金额 +declare @SumOut money --存款总金额 +exec proc_selectexchange,@SumIn output,@SumOut output +select @SumIn +select @SumOut + +--5. **密码升级**,传入用户名和密码,如果用户名密码正确,并且密码长度<8,自动升级成8位密码 + + +--(提示:随机生成 0-9 的整数: float(rand()*10)) rand():随机生成0.0-1.0的小数 float:向下取整) +create proc procPwdUpgrade +@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 procPwdUpgrade '420107199904054233',@pwd output +select @pwd diff --git "a/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/10-7-\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.md" "b/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/10-7-\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..9b792a7bf769099f39378f58e84089f56eae930c --- /dev/null +++ "b/47\346\233\276\345\276\267\346\243\256/2022-10-7-\345\255\230\345\202\250\350\277\207\347\250\213/\346\233\276\345\276\267\346\243\256/\347\254\224\350\256\260/10-7-\345\255\230\345\202\250\350\277\207\347\250\213\347\254\224\350\256\260.md" @@ -0,0 +1,42 @@ +##瀛樺偍杩囩▼ +瀛樺偍杩囩▼鏄**棰勭紪璇**SQL璇彞闆嗗悎锛岃繖浜涜鍙ュ瓨鍌ㄥ湪涓涓悕绉帮紙瀛樺偍杩囩▼鐨勫悕绉帮級涓嬪苟浣滀负鍗曞厓鏉ュ鐞嗐傚瓨鍌ㄨ繃绋嬩唬鏇夸簡浼犵粺鐨勯愭潯鎵цSQL璇彞鐨勬柟寮忥紝涓涓瓨鍌ㄨ繃绋嬩腑鍙互鍖呭惈鏌ヨ銆佹彃鍏ャ佸垹闄ゃ佹洿鏂扮瓑鎿嶇旱鐨勪竴绯诲垪SQL璇彞锛屽綋杩欎釜瀛樺偍杩囩▼琚皟鐢ㄦ墽琛屾椂锛岃繖浜涙搷浣滀篃浼氬悓鏃舵墽琛屻 + +灏佽濂 --> 璋冪敤 + +鍒涘缓瀛樺偍杩囩▼鍒嗕负鍥涢儴 +1.娌℃湁杈撳叆鍙傛暟锛屾病鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼銆 +2.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟鐨勫瓨鍌ㄨ繃绋嬨 +3.鏈夎緭鍏ュ弬鏁帮紝娌℃湁杈撳嚭鍙傛暟锛屼絾鏄湁杩斿洖鍊肩殑瀛樺偍杩囩▼锛堣繑鍥炲煎繀椤绘暣鏁帮級銆 +4.鏈夎緭鍏ュ弬鏁帮紝鏈夎緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ & 涓涓彉閲忓叿澶囧悓鏃惰緭鍏ヨ緭鍑哄弬鏁扮殑瀛樺偍杩囩▼ + +##鎵ц瀛樺偍杩囩▼ +exec +declare + +##鍒犻櫎瀛樺偍杩囩▼ + +drop procedure <瀛樺偍杩囩▼鍚嶇О> + +##瀛樺偍杩囩▼鐨勪紭鐐 + +鍏佽妯″潡鍖栫▼搴忚璁 + +鎵ц閫熷害鏇村揩 + +鍑忓皯缃戠粶娴侀氶噺 + +鎻愰珮绯荤粺瀹夊叏鎬 + +#### 瀛樺偍杩囩▼涓庡嚱鏁扮殑鍖哄埆 + +1.鍌ㄥ瓨杩囩▼鍙互鏈夎繑鍥炲间篃鍙互鏃犺繑鍥炲笺傚嚱鏁板繀椤绘湁杩斿洖鍊笺 + +2.瀛樺偍杩囩▼鐨勫疄鐜版瘮杈冨鏉傦紝鑰屽嚱鏁扮殑瀹炵幇姣旇緝鏈夐拡瀵规с + +3.鍌ㄥ瓨杩囩▼鍙互杈撳叆杈撳嚭鍙傛暟锛岃屽嚱鏁板彧鍙互杈撳叆鍙傛暟銆 + +4.杩囩▼鍏佽鍦ㄥ叾涓夋嫨浠ュ強DML璇彞锛岃屽嚱鏁板彧鍙互鍦ㄥ叾涓璼elect璇彞銆 + +5.鍙互鍦ㄥ瓨鍌ㄨ繃绋嬩腑璋冪敤鍑芥暟锛屼笉鍙互鍦ㄥ嚱鏁颁腑璋冪敤瀛樺偍杩囩▼銆 + +6.鍑芥暟鍙互浣滀负鏉′欢鍦ㄨ鍙ヤ腑浣跨敤锛屼絾鏄瓨鍌ㄨ繃绋嬩笉鍙互銆 \ No newline at end of file