diff --git "a/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-06-19\344\272\213\345\212\241\347\273\203\344\271\240.sql" "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-06-19\344\272\213\345\212\241\347\273\203\344\271\240.sql" new file mode 100644 index 0000000000000000000000000000000000000000..3bebc95e1da610424c0707bf729d58dea10fe346 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-06-19\344\272\213\345\212\241\347\273\203\344\271\240.sql" @@ -0,0 +1,38 @@ +--刘备向张飞转账1000元,(添加check约束,设置账户余额必须>=0) + +alter table bankcard add constraint CK_money check(cardmoney>=0) + + +begin transaction +declare @money money=1000; +declare @qc varchar(20); +declare @hc varchar(20); +declare @esum int=0; + +select @qc=CardNo from AccountInfo a join BankCard b on a.AccountId=b.AccountId +where RealName='刘备' + + +update BankCard set CardMoney=CardMoney-@money where CardNo=@qc +set @esum+=@@error + +insert CardExchange values(@qc,0,@money,GETDATE()) + +select @hc=CardNo from AccountInfo a join BankCard b on a.AccountId=b.AccountId +where RealName='张飞' + +update BankCard set CardMoney=CardMoney+@money where CardNo=@hc +set @esum+=@@error + +insert CardExchange values(@hc,@money,0,GETDATE()) +insert CardTransfer values(@qc,@hc,@money,GETDATE()); +if(@esum>0) +begin + print '转账失败' + rollback transaction--回滚事务 +end +else +begin + print '转账成功' + commit transaction --提交事务 +end \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-15\350\257\225\345\233\276\347\273\203\344\271\240.sql" "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-15\350\257\225\345\233\276\347\273\203\344\271\240.sql" new file mode 100644 index 0000000000000000000000000000000000000000..3eb9967945246b34887ae4fa22146c60dce5b06a --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-15\350\257\225\345\233\276\347\273\203\344\271\240.sql" @@ -0,0 +1,7 @@ +--1)编写视图实现查询出所有银行卡账户信息,显示卡号,身份证,姓名,余额。 +create view vw_aban(显示卡号,身份证,姓名,余额) +as +select CardNo,AccountCode,RealName,CardMoney from AccountInfo a +join BankCard b on a.AccountId=b.AccountId +go +select * from vw_aban diff --git "a/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-20\346\270\270\346\240\207.sql" "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-20\346\270\270\346\240\207.sql" new file mode 100644 index 0000000000000000000000000000000000000000..80109192ee1fea46a48464aa00126db0568a9be8 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-20\346\270\270\346\240\207.sql" @@ -0,0 +1,63 @@ +select * from tb +declare students cursor scroll for(select name,hobby,ori_loca,prize from tb_student s join tb_inf_student i on s.stu_num=i.stu_num) + +open students + +fetch next from students + +close students + + +declare stunum cursor scroll for(select * from tb_student where stu_num like '%161_%') + +open stunum + +declare @stu_num char(8) ,@name varchar(8),@gender bit ,@birth date ,@school varchar(10),@major char(20) +fetch first from stunum +while @@FETCH_STATUS=0 +begin + print @stu_num+','+@name+','+cast( @gender as varchar(10))+','+cast( @birth as varchar(10))+','+@school+@major + fetch next from stunum into @stu_num,@name,@gender,@birth,@school,@major +end + +close stunum + + +declare loca cursor scroll for (select ori_loca,count(ori_loca) 荣誉总数 from tb_inf_student where ori_loca='北京' group by ori_loca) + +open loca +fetch first from loca +declare @oloca varchar(8),@locount int +fetch first from loca into @oloca,@locount +print @oloca+','+cast( @locount as varchar(8)) + +close loca + +deallocate xs3 +declare xs3 cursor scroll for (select stu_num,return_time from tb_record where borrow_time<'2019-05-01') +open xs3 +begin transaction +declare @a char(8) +declare @b date +fetch first from xs3 into @a,@b +while @@FETCH_STATUS=0 + begin + if @b is null + begin + update tb_record set return_time = getdate() where stu_num = @a + end + fetch next from xs3 into @a,@b + end +--select * from tb_record +--rollback transaction +declare @err int=0 +set @err +=@@error +if @err>0 + begin + print '失败' + rollback transaction + end +else + begin + select stu_num,return_time from tb_record + end \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-21\345\207\275\346\225\260.sql" "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-21\345\207\275\346\225\260.sql" new file mode 100644 index 0000000000000000000000000000000000000000..3d341dbf9cd6f8bbc1e2c67b33cbeaf2fcc86271 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\344\275\234\344\270\232/2022-09-21\345\207\275\346\225\260.sql" @@ -0,0 +1,75 @@ +--编写一个函数求该银行的金额总和 + +go +create function moneysum() +returns table +as + return select sum(CardMoney) 金额总和 from BankCard +go + +select * from moneysum() +--(2)传入账户编号,返回账户真实姓名 + +go +create function zname(@id int) +returns varchar(20) +as +begin + declare @name varchar(20) + select @name=RealName from AccountInfo where AccountId=@id +return @name +end +go +select dbo.zname(2) +--(3)传递开始时间和结束时间,返回交易记录(存钱取钱),交易记录中包含 真实姓名,卡号,存钱金额,取钱金额,交易时间。 + +go +create function cards(@begindate varchar(20),@enddate varchar(20)) +returns table +as + +return select RealName,b.CardNo,MoneyInBank,MoneyOutBank,ExchangeTime from CardExchange c +join BankCard b on c.CardNo=b.CardNo +join AccountInfo a on b.AccountId=a.AccountId +where ExchangeTime > '2022-09-01 00:00:00' and ExchangeTime < '2022-09-30 23:59:59' +go + +select * from cards('2022-09-01','2022-09-30') + +drop function cards +--方案一(逻辑复杂,函数内容除了返回结果的sql语句还有其他内容,例如定义变量等): + +--(4)查询银行卡信息,将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”,根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户",分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态。 + +--方案一:直接在sql语句中使用case when + +--方案二:将等级和状态用函数实现 + +go +create function messag() +returns table +as +return select CardNo ,AccountCode ,RealName ,CardMoney ,CardState, +case +when CardState='1' then '正常' +when CardState='2' then '挂失' +when CardState='3' then '冻结' +when CardState='4' then '注销' +end 银行卡状态, +case +when CardMoney >=300000 then 'VIP用户' +when CardMoney <300000 then '普通用户' +end 用户等级 +from BankCard b +join AccountInfo a on b.AccountId=a.AccountId +go + +select * from messag() +--(5)编写函数,根据出生日期求年龄,年龄求实岁,例如: -- 生日为2000-5-5,当前为2018-5-4,年龄为17岁 -- 生日为2000-5-5,当前为2018-5-6,年龄为18岁 + +go +create function births() +returns table +as + return select DATEDIFF(yy,empBirth,GETDATE()) as 岁数 from emp +go \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-05\347\254\224\350\256\260-\345\217\230\351\207\217.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-05\347\254\224\350\256\260-\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..a8c40e88b67019a6c3ae2c7f997af43db6136524 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-05\347\254\224\350\256\260-\345\217\230\351\207\217.md" @@ -0,0 +1,145 @@ +------ + +# 浜屻乀ransact-SQL缂栫▼ + +**SQL璇彞** + +- 鏁版嵁鏌ヨ璇彞锛欴QL select +- 鏁版嵁搴撴搷绾佃鍙ワ細DML insert update delete +- 鏁版嵁搴撳畾涔夎鍙ワ細DDL 寤哄簱 寤鸿〃 鍔犵害鏉 +- 鏁版嵁搴撴帶鍒惰鍙ワ細DCL 鏉冮檺绠$悊 + +------ + +## (涓)鍙橀噺 + +**灞閮ㄥ彉閲** + +- 灞閮ㄥ彉閲忓繀椤讳互鏍囪==@==浣滀负鍓嶇紑,濡侤age +- 灞閮ㄥ彉閲忕殑浣跨敤涔熸槸==鍏堝0鏄,鍐嶈祴鍊== + +**鍏ㄥ眬鍙橀噺** + +- 鍏ㄥ眬鍙橀噺蹇呴』浠ユ爣璁==@@==浣滀负鍓嶇紑,濡侤@version丕 +- 鍏ㄥ眬鍙橀噺鐢辩郴缁熷畾涔夊拰缁存姢,鎴戜滑==鍙兘璇诲彇,涓嶈兘淇敼鍏ㄥ眬鍙橀噺鐨勫== + +------ + +### 1.灞閮ㄥ彉閲 + +#### (1)澹版槑灞閮ㄥ彉閲 + +璇硶锛 ==declare==[澹版槑] + +``` +declare @鍙橀噺鍚 鏁版嵁绫诲瀷 +--鍙橀噺鍚嶅彲浠ヨ嚜瀹氫箟 +``` + +绀轰緥锛 + +``` +declare @name varchar(8) +declare @seat int +``` + +------ + +#### (2)灞閮ㄥ彉閲忕殑璧嬪 + +璇硶锛 set[缃甝 + +``` +set @鍙橀噺鍚 = 鍊 //涓鑸洿鎺ヨ祴鍊兼椂浣跨敤 +鎴 +select @鍙橀噺鍚 = 鍊 锛堢洿鎺ヨ祴鍊兼垨鏌ヨ鏁版嵁璧嬪硷級//涓鑸粠鏁版嵁搴撻噷璧嬪兼椂浣跨敤 +``` + +绀轰緥锛 + +``` +select @鍙橀噺鍚 = 鈥111鈥 鎴 ( set @鍙橀噺鍚= 鈥111鈥 ) +select @鍙橀噺鍚 = 瀛楁鍚 from 琛ㄦ槑 [where 鏉′欢] +``` + +渚嬮: + +``` +--鏌ヨ鍑轰笌鑴戠櫧閲戠浉閭籭d鐨勮嵂鍚 +declare @MeMid int --澹版槑灞閮ㄥ彉閲 +select @MeMid=mId from Medicine where MedName='鑴戠櫧閲' --鎶婅剳鐧介噾鐨刬d璧嬪肩粰灞閮ㄥ彉閲 +select MedName from Medicine where mId=(@MeMid+1) or mId=(@MeMid-1) --鏉′欢绗﹀悎mid=鍙橀噺(鑴戠櫧閲戠殑id)+1鎴栧彉閲-1 +``` + +------ + +| | set | select | +| ------------------ | -------------- | ---------------------- | +| 鍚屾椂瀵瑰涓彉閲忚祴鍊 | 涓嶆敮鎸 | 鏀寔 | +| 琛ㄨ揪寮忚繑鍥炲涓 | 鍑洪敊 | 灏嗚繑鍥炵殑鏈鍚庝竴涓艰祴鍊 | +| 琛ㄨ揪寮忔湭杩斿洖鍊兼椂 | 鍙橀噺琚祴NULL鍊 | 鍙橀噺淇濇寔鍘熷 | + +------ + +### 2.鍏ㄥ眬鍙橀噺 + +- 鍏ㄥ眬鍙橀噺鏄疭QL Server绯荤粺鍐呴儴浣跨敤鐨勫彉閲忥紝鍏朵綔鐢ㄨ寖鍥村苟涓嶅眬闄愪簬鏌愪竴绋嬪簭鑰屾槸浠讳綍绋嬪簭鍧囧彲闅忔椂璋冪敤 +- 鍏ㄥ眬鍙橀噺涓嶆槸鏈夌敤鎴风殑绋嬪簭瀹氫箟瀹冧滑鏄湪鏈嶅姟鍣ㄧ骇瀹氫箟鐨勶紝鍙兘浣跨敤棰勫厛璇存槑鍙婂畾涔夌殑鍏ㄥ眬鍙橀噺 +- 寮曠敤鍏ㄥ眬鍙橀噺鏄==蹇呴』浠@寮澶==锛==灞閮ㄥ彉閲忕殑鍚嶇О涓嶈兘涓庡叏灞鍙橀噺鐨勫悕绉扮浉鍚==锛屽惁鍒欎細鍦ㄥ簲鐢ㄤ腑鍑洪敊 + +------ + +| | 缈昏瘧 | **鍚 涔** | +| ----------------- | ---------- | ------------------------------------------------------------ | +| @@connections | 杩炴帴 | 杩斿洖SQL銆Server鑷笂娆″惎鍔ㄤ互鏉ュ皾璇曠殑杩炴帴娆℃暟锛屾棤璁洪摼鎺ユ槸鎴愬姛杩樻槸澶辫触 | +| @@cursor_rows | 鍏夋爣 | 杩斿洖杩炴帴涓婃墦寮鐨勪笂涓涓父鏍囦腑鐨勫綋鍓嶉檺瀹氳鐨勬暟鐩 | +| **@@error** | 閿欒 | 杩斿洖鎵ц涓婄殑涓涓猅ransact-SQL璇彞锛0涓烘纭 | +| **@@identity** | 鍚屼竴鎬 | 杩斿洖鏈鍚庢彃鍏ョ殑鏍囪瘑鍊肩殑绯荤粺鍑芥暟 | +| @@language | 璇█ | 杩斿洖褰撳墠鎵鐢ㄨ瑷鐨勫悕绉 | +| @@max_connections | 鏈澶ц繛鎺 | 杩斿洖SQL Server瀹炰緥鍏佽鍚屾椂杩涜鐨勬渶澶х敤鎴疯繛鎺ユ暟 | +| @@procid | 铏氭嫙鐩綍id | 杩斿洖Transact-SQL褰撳墠妯″潡鐨勫璞℃爣璇嗙锛圛D锛夈俆ransact-SQL妯″潡鍙互鏄瓨鍌ㄨ繃绋嬨佺敤鎴峰畾涔夊嚱鏁版垨瑙﹀彂鍣 | +| @@rowcount | 琛屾暟 | 杩斿洖鍙椾笂涓鍙ュ奖鍝嶇殑琛屾暟 | +| **@@servername** | 鏈嶅姟鍣ㄥ悕绉 | 杩斿洖杩愯鍦⊿QL Server鐨勬湰鍦版湇鍔″櫒鐨勫悕绉 | +| @servicena | 鏈嶅姟鍣ㄥ悕绉 | 杩斿洖SQL Server姝e湪鍏朵笅杩愯鐨勬敞鍐岃〃椤圭殑鍚嶇О銆傝嫢褰撳墠瀹炰緥涓洪粯璁ゅ疄渚嬶紝鍒橜@servicename | +| **@@version** | 鐗堟湰 | 杩斿洖褰撳墠鐨凷QL Server鐨勫畨瑁呯増鏈佸鐞嗗櫒浣撶郴缁撴瀯銆佺敓鎴愭棩鏈熷拰鎿嶄綔绯荤粺 | + +------ + +## (浜)鏁版嵁搴撹緭鍑鸿鍙 + +**T-SQL鏀寔杈撳嚭璇彞锛岀敤浜庤緭鍑哄鐞嗙殑鏁版嵁缁撴灉** 甯哥敤杈撳嚭璇彞鏈変袱绉嶏細**print[鎵撳嵃]** + +1. print鍙橀噺鎴栬〃杈惧紡 +2. select 鍙橀噺鎴栬〃杈惧紡 + +print浠ユ枃鏈殑鏂瑰紡杈撳嚭锛宻elect浠ョ粨鏋滈泦杈撳嚭 + +==瑕佹敞鎰忕殑鏄疭QLserver閲岀殑+ 涓よ竟鍙兘鏄浉鍚岀殑鏁版嵁绫诲瀷== + +鍒楀锛 + +``` +--杈撳嚭鏈嶅姟鍣ㄧ殑鍚嶇О +print '鏈嶅姟鍣ㄧ殑鍚嶇О涓:'+@@servername +``` + +------ + +### 1.寮哄埗绫诲瀷杞崲 + +濡傛灉璇存垜浠杈撳嚭鐨+涓よ竟绫诲瀷涓嶇浉绛変細鎶ラ敊锛屽彲浠ラ氳繃寮哄埗绫诲瀷杞崲鏉ヨВ鍐 + +绫诲瀷杞崲鏈変袱绉嶆柟寮忥細**convert[杞崲] cast[鎶曞皠]** + +``` +convert(鏁版嵁绫诲瀷,琛ㄨ揪寮,鏍峰紡) +print '鎴愮哗'+convert(varchar(10),@Result) +--鎶奿nt绫诲瀷杞崲鎴恦archar绫诲瀷 +``` + +鎴 + +``` +cast(琛ㄨ揪寮 as 鏁版嵁绫诲瀷) +print '鎴愮哗'+cast(@Result as varchar(10)) +``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-06\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" similarity index 96% rename from "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" rename to "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-06\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" index fe97f6acf3fe95c6ec3d3e98baff5ab0451e522b..db6e149997ef2d097bac38b89acf1ff94f98e52a 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-06\347\254\224\350\256\260-\351\200\273\350\276\221\350\257\255\345\217\245.md" @@ -1,100 +1,100 @@ ------- - -### 1.if-else璇彞 - -``` ---璇硶缁撴瀯锛 -if( 鏉′欢琛ㄨ揪寮 ) - begin - 鍛戒护琛屾垨绋嬪簭鍧1 - 鍛戒护琛屾垨绋嬪簭鍧2 - end -else - begin - 鍛戒护琛屾垨绋嬪簭鍧 - end -``` - -缁熻骞舵樉绀2009-2-17鐨凧ava Logic鑰冭瘯骞冲潎鍒嗗鏋滃钩鍧囧垎鍦70浠ヤ笂,鏄剧ず鈥滆冭瘯鎴愮哗浼樼鈥,骞舵樉绀哄墠涓夊悕瀛︾敓鐨勮冭瘯淇℃伅濡傛灉鍦70浠ヤ笅,鏄剧ず鈥滆冭瘯鎴愮哗杈冨樊鈥,骞舵樉绀哄悗涓夊悕瀛︾敓鐨勮冭瘯淇℃伅 - -``` -declare @subjectno int --瀛樺偍绉戠洰缂栧彿 -declare @avg numeric(5,2)--瀛樺偍骞冲潎鍒 ---鏌ヨ绉戠洰缂栧彿璧嬪肩粰@subjecton ---鏌ヨ骞冲潎鍒嗚祴鍊肩粰@avg -if(@avg>70) - begin - print '鎴愮哗浼樼' - select璇彞鏄剧ず鍓3鍚嶈冪敓淇℃伅 - end -else - begin - print '鎴愮哗杈冨樊' - select璇彞鏄剧ず鍚3鍚嶈冪敓淇℃伅 - end -``` - ------- - -### 2.**while-continue-break**璇彞 - -璇硶锛 continue[缁х画] - -``` -while(鏉′欢琛ㄨ揪寮) - begin - 鍛戒护琛屾垨绋嬪簭鍧 - [break] 鈫掆啋 璺冲嚭寰幆 - [continue] 鈫掆啋 鍙互璁╃▼搴忚烦杩嘽ontinue鍛戒护涔嬪悗鐨勮鍙 - 鍛戒护琛屾垨绋嬪簭鍧 - end -``` - -==濡傛灉鏈夊鏉¤鍙ユ墠闇瑕乥egin-end璇彞鍧== - ------- - -### 3.case璇彞 - -``` -select 鏉′欢琛ㄨ揪寮, case [compare_value] - when 鏉′欢1 then 缁撴灉1 - when 鏉′欢2 then 缁撴灉2 - [else 鍏朵粬缁撴灉] - end [鍒楀悕] -from 琛ㄥ悕 - ---鎵瑰鐞嗗彲浠ユ彁楂樿鍙ョ殑鎵ц鏁堢巼 -``` - -==else:琛ㄧずcase涓墍鏈墂hen鏉′欢鍧囦笉涓簍rue鏃惰繑鍥炵殑缁撴灉,濡傛灉鐪佺暐else涓攚hen鏉′欢閮戒负false鏃, case璇彞杩斿洖null== - -绀轰緥:鏍规嵁鐢熸棩娣诲姞涓涓敓鑲栧垪 - -CASE鍙ユ硶杩斿洖绗竴涓獀alue = year(PeopleBirth) % 12姣旇緝缁撴灉涓虹湡鐨勭粨鏋溿 濡傛灉娌℃湁姣旇緝缁撴灉绗﹀悎锛屽垯杩斿洖ELSE鍚庣殑缁撴灉锛屽鏋滄病鏈塃LSE閮ㄥ垎锛屽垯杩斿洖NULL锛 - ------- - -鏌ヨ閾惰鍗′俊鎭紝灏嗛摱琛屽崱鐘舵1,2,3,4鍒嗗埆杞崲涓烘眽瀛椻滄甯,鎸傚け,鍐荤粨,娉ㄩ攢鈥濓紝骞朵笖鏍规嵁閾惰鍗′綑棰濇樉绀洪摱琛屽崱绛夌骇 30涓囦互涓嬩负鈥滄櫘閫氱敤鎴封,30涓囧強浠ヤ笂涓"VIP鐢ㄦ埛"锛 - -``` -select CardNo ,AccountCode ,RealName ,CardMoney ,CardState, -case -when CardState='1' then '姝e父' -when CardState='2' then '鎸傚け' -when CardState='3' then '鍐荤粨' -when CardState='4' then '娉ㄩ攢' -end 閾惰鍗$姸鎬, -case -when CardMoney >=300000 then 'VIP鐢ㄦ埛' -when CardMoney <300000 then '鏅氱敤鎴' -end 鐢ㄦ埛绛夌骇 -from BankCard b -join AccountInfo a on b.AccountId=a.AccountId -``` - ------- - -### 4.鐗规畩瀛楃 - +------ + +### 1.if-else璇彞 + +``` +--璇硶缁撴瀯锛 +if( 鏉′欢琛ㄨ揪寮 ) + begin + 鍛戒护琛屾垨绋嬪簭鍧1 + 鍛戒护琛屾垨绋嬪簭鍧2 + end +else + begin + 鍛戒护琛屾垨绋嬪簭鍧 + end +``` + +缁熻骞舵樉绀2009-2-17鐨凧ava Logic鑰冭瘯骞冲潎鍒嗗鏋滃钩鍧囧垎鍦70浠ヤ笂,鏄剧ず鈥滆冭瘯鎴愮哗浼樼鈥,骞舵樉绀哄墠涓夊悕瀛︾敓鐨勮冭瘯淇℃伅濡傛灉鍦70浠ヤ笅,鏄剧ず鈥滆冭瘯鎴愮哗杈冨樊鈥,骞舵樉绀哄悗涓夊悕瀛︾敓鐨勮冭瘯淇℃伅 + +``` +declare @subjectno int --瀛樺偍绉戠洰缂栧彿 +declare @avg numeric(5,2)--瀛樺偍骞冲潎鍒 +--鏌ヨ绉戠洰缂栧彿璧嬪肩粰@subjecton +--鏌ヨ骞冲潎鍒嗚祴鍊肩粰@avg +if(@avg>70) + begin + print '鎴愮哗浼樼' + select璇彞鏄剧ず鍓3鍚嶈冪敓淇℃伅 + end +else + begin + print '鎴愮哗杈冨樊' + select璇彞鏄剧ず鍚3鍚嶈冪敓淇℃伅 + end +``` + +------ + +### 2.**while-continue-break**璇彞 + +璇硶锛 continue[缁х画] + +``` +while(鏉′欢琛ㄨ揪寮) + begin + 鍛戒护琛屾垨绋嬪簭鍧 + [break] 鈫掆啋 璺冲嚭寰幆 + [continue] 鈫掆啋 鍙互璁╃▼搴忚烦杩嘽ontinue鍛戒护涔嬪悗鐨勮鍙 + 鍛戒护琛屾垨绋嬪簭鍧 + end +``` + +==濡傛灉鏈夊鏉¤鍙ユ墠闇瑕乥egin-end璇彞鍧== + +------ + +### 3.case璇彞 + +``` +select 鏉′欢琛ㄨ揪寮, case [compare_value] + when 鏉′欢1 then 缁撴灉1 + when 鏉′欢2 then 缁撴灉2 + [else 鍏朵粬缁撴灉] + end [鍒楀悕] +from 琛ㄥ悕 + +--鎵瑰鐞嗗彲浠ユ彁楂樿鍙ョ殑鎵ц鏁堢巼 +``` + +==else:琛ㄧずcase涓墍鏈墂hen鏉′欢鍧囦笉涓簍rue鏃惰繑鍥炵殑缁撴灉,濡傛灉鐪佺暐else涓攚hen鏉′欢閮戒负false鏃, case璇彞杩斿洖null== + +绀轰緥:鏍规嵁鐢熸棩娣诲姞涓涓敓鑲栧垪 + +CASE鍙ユ硶杩斿洖绗竴涓獀alue = year(PeopleBirth) % 12姣旇緝缁撴灉涓虹湡鐨勭粨鏋溿 濡傛灉娌℃湁姣旇緝缁撴灉绗﹀悎锛屽垯杩斿洖ELSE鍚庣殑缁撴灉锛屽鏋滄病鏈塃LSE閮ㄥ垎锛屽垯杩斿洖NULL锛 + +------ + +鏌ヨ閾惰鍗′俊鎭紝灏嗛摱琛屽崱鐘舵1,2,3,4鍒嗗埆杞崲涓烘眽瀛椻滄甯,鎸傚け,鍐荤粨,娉ㄩ攢鈥濓紝骞朵笖鏍规嵁閾惰鍗′綑棰濇樉绀洪摱琛屽崱绛夌骇 30涓囦互涓嬩负鈥滄櫘閫氱敤鎴封,30涓囧強浠ヤ笂涓"VIP鐢ㄦ埛"锛 + +``` +select CardNo ,AccountCode ,RealName ,CardMoney ,CardState, +case +when CardState='1' then '姝e父' +when CardState='2' then '鎸傚け' +when CardState='3' then '鍐荤粨' +when CardState='4' then '娉ㄩ攢' +end 閾惰鍗$姸鎬, +case +when CardMoney >=300000 then 'VIP鐢ㄦ埛' +when CardMoney <300000 then '鏅氱敤鎴' +end 鐢ㄦ埛绛夌骇 +from BankCard b +join AccountInfo a on b.AccountId=a.AccountId +``` + +------ + +### 4.鐗规畩瀛楃 + 鍒惰〃绗 CHAR(9)锛涙崲琛岀 CHAR(10)锛涘洖杞 CHAR(13)锛 \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-07\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" similarity index 98% rename from "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" rename to "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-07\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" index f06bc13d8821f028a0215b4428c6e1fb5831dc80..1f3a6a503e75c75987fa278dc7a8445de7db5792 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-07\347\254\224\350\256\260-\345\255\220\346\237\245\350\257\242.md" @@ -1,49 +1,49 @@ -```涓銆丒-R鍥惧畾涔 -涓.瀛愭煡璇 - -1.浣跨敤in 鍜 not in瀹屾垚瀛愭煡璇 -in[鍦╙ not in[涓嶅湪] - -select * from StudentInfo -where stuNO in (select stuid - from stuMarks - group by stuid - having min(Score) >= 60 - ) -2.浣跨敤some銆乤ny銆乤ll杩涜鏌ヨ -some[涓浜沒 any[浠绘剰鐨刔 all[鍏ㄩ儴] - -select sti.* from stuMarks smk -inner join StudentInfo sti on sti.stuNo = smk.stuID -where score > all(select score - from stuMarks stm -inner join StudentInfo st on stm.stuID = st.stuNo -where stuName = '寮犵鍒') -鏌ヨ鍑烘煇鍚屽鏌愪竴闂ㄨ冭瘯鎴愮哗鍙渶瑕佹瘮鈥滃紶绉嬪埄鈥濆悓瀛︽煇涓垎鏁伴珮鐨勫鐢熷熀鏈俊鎭紙stuMarks锛 - -select distinct sti.* from stuMarks smk -inner join StudentInfo sti on sti.stuNo = smk.stuID -where stuName <> '寮犵鍒' and score > any(select score - from stuMarks stm -inner join StudentInfo st on stm.stuID = st.stuNo - where stuName = '寮犵鍒'锛 -3.浣跨敤exists 鍜宯ot exists瀹屾垚瀛愭煡璇 -exists[瀛樺湪]锛 濡傛灉瀛愭煡璇㈢粨鏋滈潪绌猴紝鍗宠褰曟潯鏁1鏉′互涓婏紝鍒檈xsts锛堝瓙鏌ヨ锛夎繑鍥瀟rue 鎴 false锛==鍙厤鍚坕f璇彞浣跨敤if exists(鏉′欢)== - -绀轰緥锛氭煡璇㈠嚭鍙傚姞鑰冭瘯鐨勫鐢熺殑淇℃伅 - -select * from StudentInfo st -where exists (select stuid from stuMarks stm where st.stuNo = stm.stuID) --濡傛灉璇ユ潯浠舵垚绔嬪氨鏄剧ず锛屼笂涓琛岀殑鏌ヨ缁撴灉 -涔熷彲浠ュ拰if閰嶅悎浣跨敤 - -if exists锛堝瓙鏌ヨ锛 -璇彞 -4.浣跨敤compute鍜宑ompute by杩涜姹囨绘煡璇 -compute 鍜 compute by瀛愬彞浣挎偍寰椾互鐢ㄥ悓涓select璇彞鍗虫煡鐪嬫槑缁嗚锛屾湁鏌ョ湅姹囨昏銆傚彲浠ヨ绠楀瓙缁勭殑姹囨诲硷紝涔熷彲浠ヨ绠楁暣涓粨鏋滈泦鐨勬眹鎬诲 - -褰揷ompute涓嶅甫鍙夌殑by瀛愬彞鏃讹紝select璇彞鏈変袱涓粨鏋滈泦锛 鈼 姣忎釜缁勭殑绗竴涓粨鏋滈泦鏄寘鍚夋嫨鍒楄〃淇℃伅鐨勬墍鏈夋槑缁嗚 鈼 绗簩涓粨鏋滈泦鏈変竴琛岋紝鍏朵腑鍖呭惈compute瀛愬彞涓墍鎸囧畾鐨勮仛鍚堝嚱鏁扮殑鍚堣 - -compute瀛愬彞闇瑕佷笅鍒椾俊鎭細 鈼 鍙塨y鍏抽敭瀛椼傚畠鍩轰簬姣忎竴鍒楄绠楁寚瀹氱殑琛岃仛鍚 鈼 琛岃仛鍚堝嚱鏁板悕绉 SUM銆丄VG銆丮IN銆丮AX銆佹垨 COUNT 鈼 瑕佸鍏舵墽琛岃鑱氬嚱鏁扮殑鍒 - -瀵圭粨鏋滃厛杩涜鍒嗙粍鐒跺悗杩涜姹囨昏绠楁椂浣跨敤锛歝ompute by杩涜鍒嗙粍姹囨绘煡璇xxxxxxxxx聽濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) 涓銆丒-R鍥惧畾涔 +```涓銆丒-R鍥惧畾涔 +涓.瀛愭煡璇 + +1.浣跨敤in 鍜 not in瀹屾垚瀛愭煡璇 +in[鍦╙ not in[涓嶅湪] + +select * from StudentInfo +where stuNO in (select stuid + from stuMarks + group by stuid + having min(Score) >= 60 + ) +2.浣跨敤some銆乤ny銆乤ll杩涜鏌ヨ +some[涓浜沒 any[浠绘剰鐨刔 all[鍏ㄩ儴] + +select sti.* from stuMarks smk +inner join StudentInfo sti on sti.stuNo = smk.stuID +where score > all(select score + from stuMarks stm +inner join StudentInfo st on stm.stuID = st.stuNo +where stuName = '寮犵鍒') +鏌ヨ鍑烘煇鍚屽鏌愪竴闂ㄨ冭瘯鎴愮哗鍙渶瑕佹瘮鈥滃紶绉嬪埄鈥濆悓瀛︽煇涓垎鏁伴珮鐨勫鐢熷熀鏈俊鎭紙stuMarks锛 + +select distinct sti.* from stuMarks smk +inner join StudentInfo sti on sti.stuNo = smk.stuID +where stuName <> '寮犵鍒' and score > any(select score + from stuMarks stm +inner join StudentInfo st on stm.stuID = st.stuNo + where stuName = '寮犵鍒'锛 +3.浣跨敤exists 鍜宯ot exists瀹屾垚瀛愭煡璇 +exists[瀛樺湪]锛 濡傛灉瀛愭煡璇㈢粨鏋滈潪绌猴紝鍗宠褰曟潯鏁1鏉′互涓婏紝鍒檈xsts锛堝瓙鏌ヨ锛夎繑鍥瀟rue 鎴 false锛==鍙厤鍚坕f璇彞浣跨敤if exists(鏉′欢)== + +绀轰緥锛氭煡璇㈠嚭鍙傚姞鑰冭瘯鐨勫鐢熺殑淇℃伅 + +select * from StudentInfo st +where exists (select stuid from stuMarks stm where st.stuNo = stm.stuID) --濡傛灉璇ユ潯浠舵垚绔嬪氨鏄剧ず锛屼笂涓琛岀殑鏌ヨ缁撴灉 +涔熷彲浠ュ拰if閰嶅悎浣跨敤 + +if exists锛堝瓙鏌ヨ锛 +璇彞 +4.浣跨敤compute鍜宑ompute by杩涜姹囨绘煡璇 +compute 鍜 compute by瀛愬彞浣挎偍寰椾互鐢ㄥ悓涓select璇彞鍗虫煡鐪嬫槑缁嗚锛屾湁鏌ョ湅姹囨昏銆傚彲浠ヨ绠楀瓙缁勭殑姹囨诲硷紝涔熷彲浠ヨ绠楁暣涓粨鏋滈泦鐨勬眹鎬诲 + +褰揷ompute涓嶅甫鍙夌殑by瀛愬彞鏃讹紝select璇彞鏈変袱涓粨鏋滈泦锛 鈼 姣忎釜缁勭殑绗竴涓粨鏋滈泦鏄寘鍚夋嫨鍒楄〃淇℃伅鐨勬墍鏈夋槑缁嗚 鈼 绗簩涓粨鏋滈泦鏈変竴琛岋紝鍏朵腑鍖呭惈compute瀛愬彞涓墍鎸囧畾鐨勮仛鍚堝嚱鏁扮殑鍚堣 + +compute瀛愬彞闇瑕佷笅鍒椾俊鎭細 鈼 鍙塨y鍏抽敭瀛椼傚畠鍩轰簬姣忎竴鍒楄绠楁寚瀹氱殑琛岃仛鍚 鈼 琛岃仛鍚堝嚱鏁板悕绉 SUM銆丄VG銆丮IN銆丮AX銆佹垨 COUNT 鈼 瑕佸鍏舵墽琛岃鑱氬嚱鏁扮殑鍒 + +瀵圭粨鏋滃厛杩涜鍒嗙粍鐒跺悗杩涜姹囨昏绠楁椂浣跨敤锛歝ompute by杩涜鍒嗙粍姹囨绘煡璇xxxxxxxxx聽濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) 涓銆丒-R鍥惧畾涔 ``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-14\347\254\224\350\256\260-\347\264\242\345\274\225.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-14\347\254\224\350\256\260-\347\264\242\345\274\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..ae1f420fa570e053ad7c182dcdbe3227d1cebc77 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-14\347\254\224\350\256\260-\347\264\242\345\274\225.md" @@ -0,0 +1,107 @@ +------ + +# 绱 寮 + +------ + +## (涓)绱㈠紩鐨勭被鍨 + +**鍞竴绱㈠紩** + +- 鍞竴绱㈠紩涓嶅厑璁镐袱琛屽叿鏈夌浉鍚岀殑绱㈠紩鍊 + +**涓婚敭绱㈠紩** + +- 鏄敮涓绱㈠紩鐨勭壒娈婄被鍨 + +**==鑱氶泦绱㈠紩(Clustered)==** + +- 鏍规嵁鏁版嵁琛岀殑閿煎湪琛ㄦ垨瑙嗗浘涓殑鎺掑簭瀛樺偍杩欎簺鏁版嵁琛岋紝姣忎釜琛ㄥ彧鏈変竴涓仛闆嗙储寮曘傝仛闆嗙储寮曟槸涓绉嶅纾佺洏涓婂疄闄呮暟鎹噸鏂扮粍缁囦互鎸夋寚瀹氱殑涓鍒楁垨澶氬垪鍊兼帓搴(绫讳技瀛楀吀涓殑鎷奸煶绱㈠紩)(鐗╃悊瀛樺偍椤哄簭)銆 +- 琛ㄤ腑鍚勮鐨勭墿鐞嗛『搴忎笌閿肩殑閫昏緫(绱㈠紩)椤哄簭鐩稿悓 + +==**闈炶仛闆嗙储寮(Non-clustered)**== + +- 鍏锋湁鐙珛浜庢暟鎹鐨勭粨鏋勶紝鍖呭惈闈炶仛闆嗙储寮曢敭鍊硷紝涓旀瘡涓敭鍊奸」閮芥湁鎸囧悜鍖呭惈璇ラ敭鍊肩殑鏁版嵁琛岀殑鎸囬拡銆傦紙绫讳技瀛楀吀涓殑鍋忔梺閮ㄩ绱㈠紩锛夛紙閫昏緫瀛樺偍椤哄簭锛夈 +- 涓嶆敼鍙樿〃涓暟鎹鐨勭墿鐞嗗瓨鍌ㄤ綅缃紝鏁版嵁鍜岀储寮曞垎寮瀛樺偍锛岄氳繃绱㈠紩鎸囧悜鐨勫湴鍧涓庤〃涓暟鎹彂鐢熷叧绯 + +**鍏跺畠绫诲瀷鐨勭储寮**: + +- 鎸夐敭鍒椾釜鏁板尯鍒嗭細鍗曞垪绱㈠紩锛屽鍒楃储寮 + +- ``` + --澶氬垪绱㈠紩(鏈宸﹀師鍒) + create nonclustered index IX_Student_Sname + on Student(Sname,Sage,Ssex) + go + ``` + +- 鍏朵粬鍒嗙被:绱㈠紩瑙嗗浘銆佸寘鍚у垪绱㈠紩銆佸叏鏂囩储寮曘乆ML绱㈠紩绛 + +------ + +### 1.鑱氬悎绱㈠紩鍜岄潪鑱氬悎绱㈠紩鐨勫尯鍒 + +| 鑱氶泦绱㈠紩 | 闈炶仛闆嗙储寮 | +| ---------------------------------- | -------------------------------------------- | +| 姣忎釜琛ㄥ彧鍏佽鏈変竴涓仛闆嗙储寮 | 鏈澶氬彲浠ユ湁249涓潪鑱氶泦绱㈠紩 | +| 鐗╃悊鍦伴噸鎺掕〃涓殑鏁版嵁浠ョ鍚堢储寮曠害鏉 | 鍒涘缓涓涓敭鍊煎垪琛ㄩ敭鍊兼寚鍚戞暟鎹湪鏁版嵁椤典腑鐨勪綅缃 | +| 鐢ㄤ簬缁忓父鏌ユ壘鏁版嵁鐨勫垪 | 鐢ㄤ簬浠庝腑鏌ユ壘鍗曚釜鍊肩殑鍒 | + +------ + +## (浜)鍒涘缓绱㈠紩 + +1. 閫夋嫨琛ㄧ偣鍑"璁捐" +2. 绱㈠紩/閿 +3. 閫夋嫨绫诲瀷鈥濇坊鍔犫滐細鍙互娣诲姞涓ょ绱㈠紩 IX_grade[鍞竴绱㈠紩],pk_grade[涓婚敭绱㈠紩] + +------ + +## (涓)SQL璇彞鍒涘缓绱㈠紩 + +璇硶: with[鍏充簬] + +``` +create [unique][clustered][nonclustered] --绱㈠紩绫诲瀷 +index IX_name --绱㈠紩鍚嶇ОIX寮澶 +on table_name(瀛楁)--琛ㄧず鍦ㄥ摢寮犺〃鐨勫摢涓垪涓 +[with fillfactor = x]--濉厖鍥犲瓙(琛ㄧず鍚敤x%) +go +``` + +| 绫诲瀷 | 瑙i噴 | +| ------------ | ------------------------------------------------------------ | +| unique | 鍞竴绱㈠紩 | +| clustered | 鑱氶泦绱㈠紩 | +| nonclustered | 闈炶仛闆嗙储寮 | +| table_name | 鏁版嵁琛ㄥ悕锛屼篃鍙互鏄鍥惧悕 | +| fillfactor | 璁剧疆濉厖鍥犲瓙鐨勫ぇ灏忥紝鎸囧畾0-100涔嬮棿鐨勫硷紝璇ュ兼寚绀虹储寮曢〉濉弧鐨勭┖闂存墍鍗犵櫨鍒嗘瘮锛屼竴鑸负30 | + +渚嬶細**鍦⊿tudent琛ㄧ殑Sname鍒楀垱寤洪潪鑱氶泦绱㈠紩** + +``` +create nonclustered index IX_Student_Sname +on Student(Sname) +with fillfactor=30 --濉厖鍥犲瓙30% +go +``` + +### 1.鍒犻櫎绱㈠紩 + +``` +drop index table_name.index_name +``` + +- 琛ㄥ拰绱㈠紩鍚嶇О涔嬮棿锛岀敤"."鍒嗛殧 +- ==鍒犻櫎琛ㄦ椂锛岃琛ㄧ殑鎵鏈夌储寮曞悓鏃朵細琚垹闄== + +------ + +### **2.浣跨敤绱㈠紩鏌ヨ** + +``` +--鎸囧畾鎸夌储寮旾X_Student_Sname鏌ヨ +select * from Student +with(index=IX_Student_Sname) +where Sname like '鏉'% +``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\350\247\206\345\233\276.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\347\254\224\350\256\260-\350\247\206\345\233\276.md" similarity index 94% rename from "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\350\247\206\345\233\276.md" rename to "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\347\254\224\350\256\260-\350\247\206\345\233\276.md" index f98c07caa77beb48137ba3b35cc048cf86906fff..7f4eec68b9b3d26db5724eb57d58c7b8217741aa 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\350\247\206\345\233\276.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-15\347\254\224\350\256\260-\350\247\206\345\233\276.md" @@ -1,60 +1,60 @@ -## 瑙嗗浘 - -#### 鍏崇郴(Relations) - -涓夌绫诲瀷鍏崇郴锛 - -- 琛(Table)--鍩鸿〃锛屽瓨鍌ㄥ叧绯(Base Tables,Sorted relations) - -- 瑙嗗浘(Views)--铏氭嫙鍏崇郴(Virtual relations)锛堜笉鏄墿鐞嗗瓨鍦ㄧ殑鏄櫄鎷熺殑锛 - -- 涓存椂缁撴灉(Temporary results)--鐢ㄤ簬鏋勫缓**瀛愭煡璇**鐨勭粨鏋 - - - -**瑙嗗浘鐨勪綔鐢** - -- 瑙嗗浘鑳藉绠鍖栫敤鎴风殑鎿嶄綔 -- 瑙嗗浘浣跨敤鎴疯兘浠ュ绉嶈搴︾湅寰呭悓涓鏁版嵁 -- 瑙嗗浘瀵归噸鏋勬暟鎹簱鎻愪緵浜嗕竴瀹氱殑閫昏緫鐙珛鎬 -- 瑙嗗浘鑳藉瀵规満瀵嗘暟鎹彁渚涘畨鍏ㄤ繚鎶 - - - -##### 瀹氫箟瑙嗗浘 - -- 琛屽垪瀛愰泦瑙嗗浘:鍘绘帀浜嗘煇浜涜鍜屾煇浜涘垪锛屼絾淇濈暀浜嗕富閿 - -- with check option 瑙嗗浘 -- 甯﹁〃杈惧紡鐨勮鍥 - - - - - -```sql ---鍒涘缓瑙嗗浘-- -create or replace view v_student as -select Sno,Sname -from student; - ---浠庤鍥句腑妫绱㈡暟鎹紝鍗虫煡璇笂闈㈣繖涓鍥-- -select * from v_student; - ---涔熷彲浠ュ悜鏌ヨ娣诲姞鏉′欢-- -select * -from v_student -where Sname like '%浜戔; - ---鍒犻櫎瑙嗗浘-- -drop view v_student; -``` - - - - - -#### 瑙嗗浘鐨勮璁″師鍒 - -- 浠 select * 鏂瑰紡鍒涘缓鐨勮鍥撅細鍙墿鍏呮у樊锛屽簲灏藉彲鑳介伩鍏 - +## 瑙嗗浘 + +#### 鍏崇郴(Relations) + +涓夌绫诲瀷鍏崇郴锛 + +- 琛(Table)--鍩鸿〃锛屽瓨鍌ㄥ叧绯(Base Tables,Sorted relations) + +- 瑙嗗浘(Views)--铏氭嫙鍏崇郴(Virtual relations)锛堜笉鏄墿鐞嗗瓨鍦ㄧ殑鏄櫄鎷熺殑锛 + +- 涓存椂缁撴灉(Temporary results)--鐢ㄤ簬鏋勫缓**瀛愭煡璇**鐨勭粨鏋 + + + +**瑙嗗浘鐨勪綔鐢** + +- 瑙嗗浘鑳藉绠鍖栫敤鎴风殑鎿嶄綔 +- 瑙嗗浘浣跨敤鎴疯兘浠ュ绉嶈搴︾湅寰呭悓涓鏁版嵁 +- 瑙嗗浘瀵归噸鏋勬暟鎹簱鎻愪緵浜嗕竴瀹氱殑閫昏緫鐙珛鎬 +- 瑙嗗浘鑳藉瀵规満瀵嗘暟鎹彁渚涘畨鍏ㄤ繚鎶 + + + +##### 瀹氫箟瑙嗗浘 + +- 琛屽垪瀛愰泦瑙嗗浘:鍘绘帀浜嗘煇浜涜鍜屾煇浜涘垪锛屼絾淇濈暀浜嗕富閿 + +- with check option 瑙嗗浘 +- 甯﹁〃杈惧紡鐨勮鍥 + + + + + +```sql +--鍒涘缓瑙嗗浘-- +create or replace view v_student as +select Sno,Sname +from student; + +--浠庤鍥句腑妫绱㈡暟鎹紝鍗虫煡璇笂闈㈣繖涓鍥-- +select * from v_student; + +--涔熷彲浠ュ悜鏌ヨ娣诲姞鏉′欢-- +select * +from v_student +where Sname like '%浜戔; + +--鍒犻櫎瑙嗗浘-- +drop view v_student; +``` + + + + + +#### 瑙嗗浘鐨勮璁″師鍒 + +- 浠 select * 鏂瑰紡鍒涘缓鐨勮鍥撅細鍙墿鍏呮у樊锛屽簲灏藉彲鑳介伩鍏 + diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-19\347\254\224\350\256\260-\344\272\213\345\212\241.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-19\347\254\224\350\256\260-\344\272\213\345\212\241.md" new file mode 100644 index 0000000000000000000000000000000000000000..5b3ce477a779870980326f4dec899c3000d6df95 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-19\347\254\224\350\256\260-\344\272\213\345\212\241.md" @@ -0,0 +1,57 @@ +## 浜嬪姟鐨勫睘鎬 + +涓鑸潵璇达紝浜嬪姟鍏锋湁鍥涗釜鏍囧噯灞炴э紝鍒嗗埆鏄師瀛愭э紙**A**tomicity锛屾垨绉颁笉鍙垎鍓叉э級銆佷竴鑷存э紙**C**onsistency锛夈侀殧绂绘э紙**I**solation锛屽張绉扮嫭绔嬫э級銆佹寔涔呮э紙**D**urability锛夛紝绠绉 **ACID**銆傚叿浣撹鏄庡涓嬶細 + +#### 1) 鍘熷瓙鎬 + +涓涓簨鍔′腑鐨勬墍鏈 SQL 璇彞锛岃涔堝叏閮ㄦ墽琛屾垚鍔燂紝瑕佷箞鍏ㄩ儴鎵ц澶辫触锛屼笉浼氱粨鏉熷湪涓棿鐨勬煇涓幆鑺傘備簨鍔″湪鎵ц杩囩▼涓彂鐢熼敊璇紝浼氳鍥炴粴锛圧ollback锛夊埌浜嬪姟寮濮嬪墠鐨勭姸鎬侊紝灏卞儚杩欎釜浜嬪姟浠庢潵娌℃湁鎵ц杩囦竴鏍枫 + +#### 2) 涓鑷存 + +鍦ㄤ簨鍔″紑濮嬩箣鍓嶅拰浜嬪姟缁撴潫浠ュ悗锛屾暟鎹簱鐨勫畬鏁存ф病鏈夎鐮村潖銆傝繖琛ㄧず鍐欏叆鐨勬暟鎹繀椤诲畬鍏ㄧ鍚堟墍鏈夌殑棰勮瑙勫垯锛屽叾涓寘鍚暟鎹殑绮剧‘搴︺佷覆鑱旀т互鍙婂悗缁暟鎹簱鍙互鑷彂鎬у湴瀹屾垚棰勫畾鐨勫伐浣溿 + +#### 3) 闅旂鎬 + +鏁版嵁搴撳厑璁稿涓苟鍙戜簨鍔″悓鏃跺鍏舵暟鎹繘琛岃鍐欏拰淇敼鐨勮兘鍔涳紝闅旂鎬у彲浠ラ槻姝㈠涓簨鍔″苟鍙戞墽琛屾椂鐢变簬浜ゅ弶鎵ц鑰屽鑷存暟鎹殑涓嶄竴鑷淬備簨鍔¢殧绂诲垎涓轰笉鍚岀骇鍒紝鍖呮嫭璇绘湭鎻愪氦锛圧ead uncommitted锛夈佽鎻愪氦锛坮ead committed锛夈佸彲閲嶅璇伙紙repeatable read锛夊拰涓茶鍖栵紙Serializable锛夈 + +#### 4) 鎸佷箙鎬 + +浜嬪姟澶勭悊缁撴潫鍚庯紝瀵规暟鎹殑淇敼灏辨槸姘镐箙鐨勶紝鍗充究绯荤粺鏁呴殰涔熶笉浼氫涪澶便 + +## 浜嬪姟鎵ц娴佺▼ + +鍚勭鏁版嵁搴撳浜嬪姟鐨勬敮鎸佺粏鑺備笉灏界浉鍚岋紝鏈暀绋嬩互 MySQL 鏁版嵁搴撲负渚嬭繘琛岃瑙o紝MySQL 浣跨敤鏍囧噯 SQL 鏉ユ敮鎸佷簨鍔° + +涓庝簨鍔℃帶鍒舵湁鍏崇殑 SQL 鍛戒护鍖呮嫭锛 + +- BEGIN 鎴栬 START TRANSACTION锛氬紑濮嬩簨鍔★紱 +- COMMIT锛氭彁浜や簨鍔★紱 +- ROLLBACK锛氬洖婊氫簨鍔★紱 +- SAVEPOINT锛氬湪浜嬪姟鍐呴儴璁剧疆鍥炴粴鏍囪鐐癸紱 +- RELEASE SAVEPOINT锛氬垹闄ゅ洖婊氭爣璁扮偣锛 +- ROLLBACK TO锛氬皢浜嬪姟鍥炴粴鍒版爣璁扮偣锛圧OLLBACK 鍛戒护鐨勪竴绉嶅彉褰㈠啓娉曪級銆 + + +涓涓簨鍔¤涔堟彁浜わ紙Commit锛夛紝瑕佷箞鍥炴粴锛圧ollback锛夛紝鎻愪氦鎰忓懗鐫鎴愬姛锛屽洖婊氭剰鍛崇潃澶辫触銆傜紪鍐欎簨鍔′唬鐮佹椂锛屼互 BEGIN 鍛戒护寮澶达紝鍚庤窡涓鏉℃垨鑰呭鏉 SQL 璇彞锛屾渶鍚庝功鍐 COMMIT 鎴栬 ROLLBACK 鍛戒护锛汣OMMIT 鍜 ROLLBACK 瀵瑰簲浜嬪姟鐨勪袱绉嶇姸鎬侊紝鍙兘鍑虹幇涓涓 + +浜嬪姟鎺у埗鍛戒护浠呰兘涓 DML 绫诲埆鐨 SQL 鍛戒护涓璧蜂娇鐢紝鍖呮嫭 INSERT銆乁PDATE銆丏ELETE 鍜 SELECT锛屽湪鍒涘缓鎴栬呭垹闄よ〃鏃朵笉鑳戒娇鐢ㄤ簨鍔★紝鍥犱负杩欎簺鎿嶄綔鍦ㄦ暟鎹簱涓槸鑷姩鎻愪氦鐨勩 + +#### 1) 寮濮嬩簨鍔 + +寮濮嬩簨鍔℃湁浠ヤ笅涓ょ鍛戒护锛岄夋嫨鍏朵竴鍗冲彲锛 + +COMMIT; + +鎴栬 + +START TRANSACTION; + +璇ュ懡浠ょ敤鏉ユ爣璁颁竴涓簨鍔$殑璧峰鐐广 + +#### 2) 鎻愪氦浜嬪姟 + +鎻愪氦浜嬪姟浣跨敤濡備笅鍛戒护锛 + +COMMIT; + +鎻愪氦浜嬪姟鎰忓懗鐫鐪熸鎵ц浜嬪姟鍖呭惈鐨 SQL 璇彞锛屽苟鎶婂鏁版嵁搴撶殑淇敼鍐欏叆鍒扮鐩樹笂鐨勭墿鐞嗘暟鎹簱涓侰OMMIT 鎰忓懗鐫浜嬪姟缁撴潫锛屽苟涓旀墽琛屾垚鍔熴 \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260-\346\270\270\346\240\207.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260-\346\270\270\346\240\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..6192094430e112c4c8418cd8b80322f8bd4c08ed --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260-\346\270\270\346\240\207.md" @@ -0,0 +1,180 @@ +## 娓告爣 + +銆娓告爣鏄鐞嗙粨鏋滈泦鐨勪竴绉嶆満鍒跺惂锛屽畠鍙互瀹氫綅鍒扮粨鏋滈泦涓殑鏌愪竴琛岋紝澶氭暟鎹繘琛岃鍐欙紝涔熷彲浠ョЩ鍔ㄦ父鏍囧畾浣嶅埌浣犳墍闇瑕佺殑琛屼腑杩涜鎿嶄綔鏁版嵁銆備竴鑸鏉傜殑瀛樺偍杩囩▼锛岄兘浼氭湁娓告爣鐨勫嚭鐜帮紝浠栫殑鐢ㄥ涓昏鏈夛細 + +1. 瀹氫綅鍒扮粨鏋滈泦涓殑鏌愪竴琛屻 +2. 瀵瑰綋鍓嶄綅缃殑鏁版嵁杩涜璇诲啓銆 +3. 鍙互瀵圭粨鏋滈泦涓殑鏁版嵁鍗曠嫭鎿嶄綔锛岃屼笉鏄暣琛屾墽琛岀浉鍚岀殑鎿嶄綔銆 +4. 鏄潰鍚戦泦鍚堢殑鏁版嵁搴撶鐞嗙郴缁熷拰闈㈠悜琛岀殑绋嬪簭璁捐涔嬮棿鐨勬ˉ姊併 + +# 娓告爣鐨勫垎绫 + +- ***闈欐佹父鏍嘰*** : 闈欐佹父鏍囩殑缁撴灉闆嗭紝鍦ㄦ父鏍囨墦寮鐨勬椂鍊欏缓绔嬪湪TempDB涓紝涓嶈浣犲湪鎿嶄綔娓告爣鐨勬椂鍊欙紝濡備綍鎿嶄綔鏁版嵁搴擄紝娓告爣涓殑鏁版嵁闆嗛兘涓嶄細鍙樸備緥濡備綘鍦ㄦ父鏍囨墦寮鐨勬椂鍊欙紝瀵规父鏍囨煡璇㈢殑鏁版嵁琛ㄦ暟鎹繘琛屽鍒犳敼锛屾搷浣滀箣鍚庯紝闈欐佹父鏍囦腑select鐨勬暟鎹緷鏃ф樉绀虹殑涓烘病鏈夋搷浣滀箣鍓嶇殑鏁版嵁銆傚鏋滄兂涓庢搷浣滀箣鍚庣殑鏁版嵁涓鑷达紝鍒欓噸鏂板叧闂墦寮娓告爣鍗冲彲銆 +- ***鍔ㄦ佹父鏍嘰*** : 杩欎釜鍒欎笌闈欐佹父鏍囩浉瀵癸紝婊氬姩娓告爣鏃讹紝鍔ㄦ佹父鏍囧弽搴旂粨鏋滈泦涓殑鎵鏈夋洿鏀广傜粨鏋滈泦涓殑琛屾暟鎹笺侀『搴忓拰鎴愬憳鍦ㄦ瘡娆℃彁鍙栨椂閮戒細鍙樺寲銆傛墍鏈夌敤鎴峰仛鐨勫鍒犳敼璇彞閫氳繃娓告爣鍧囧彲瑙併傚鏋滀娇鐢ˋPI鍑芥暟鎴朤-SQL Where Current of瀛愬彞閫氳繃娓告爣杩涜鏇存柊锛屼粬浠皢绔嬪嵆鍙銆傚湪娓告爣澶栭儴鎵鍋氱殑鏇存柊鐩村埌鎻愪氦鏃舵墠鍙銆 + +# 娓告爣鐨勭敓鍛藉懆鏈 + +銆銆娓告爣鐨勭敓鍛藉懆鏈熷寘鍚湁浜斾釜闃舵锛氬0鏄庢父鏍囥佹墦寮娓告爣銆佽鍙栨父鏍囨暟鎹佸叧闂父鏍囥侀噴鏀炬父鏍囥 + +鍙傛暟璇存槑锛 + +- cursor_name锛氭父鏍囧悕绉般 + +- Local锛氫綔鐢ㄥ煙涓哄眬閮紝鍙湪瀹氫箟瀹冪殑鎵瑰鐞嗭紝瀛樺偍杩囩▼鎴栬Е鍙戝櫒涓湁鏁堛 + +- Global锛氫綔鐢ㄥ煙涓哄叏灞锛岀敱杩炴帴鎵ц鐨勪换浣曞瓨鍌ㄨ繃绋嬫垨鎵瑰鐞嗕腑锛岄兘鍙互寮曠敤璇ユ父鏍囥 + +- [Local | Global]: 榛樿涓簂ocal銆 + +- Forward_Only:鎸囧畾娓告爣鏅鸿兘浠庣涓琛屾粴鍒版渶鍚庝竴琛屻侳etch Next鏄敮涓鏀寔鐨勬彁鍙栭夐」銆傚鏋滃湪鎸囧畾Forward_Only鏄笉鎸囧畾Static銆並eySet銆丏ynamic鍏抽敭瀛楋紝榛樿涓篋ynamic娓告爣銆傚鏋淔orward_Only鍜孲croll娌℃湁鎸囧畾锛孲tatic銆並eySet銆丏ynamic娓告爣榛樿涓篠croll锛孎ast_Forward榛樿涓篎orward_Only + +- Static:闈欐佹父鏍 + +- KeySet锛氶敭闆嗘父鏍 + +- Dynamic锛氬姩鎬佹父鏍囷紝涓嶆敮鎸丄bsolute鎻愬彇閫夐」 + +- Fast_Forward锛氭寚瀹氬惎鐢ㄤ簡鎬ц兘浼樺寲鐨凢orward_Only銆丷ead_Only娓告爣銆傚鏋滄寚瀹氬暒Scroll鎴朏or_Update锛屽氨涓嶈兘鎸囧畾浠栧暒銆 + +- Read_Only:涓嶈兘閫氳繃娓告爣瀵规暟鎹繘琛屽垹鏀广 + +- Scroll_Locks锛氬皢琛岃鍏ユ父鏍囨槸锛岄攣瀹氳繖浜涜锛岀‘淇濆垹闄ゆ垨鏇存柊涓瀹氫細鎴愬姛銆傚鏋滄寚瀹氬暒Fast_Forward鎴朣tatic锛屽氨涓嶈兘鎸囧畾浠栧暒銆 + +- Optimistic锛氭寚瀹氬鏋滆鑷鍏ユ父鏍囦互鏉ュ凡寰楀埌鏇存柊锛屽垯閫氳繃娓告爣杩涜鐨勫畾浣嶆洿鏂版垨瀹氫綅鍒犻櫎涓嶆垚鍔熴傚綋灏嗚璇诲叆娓告爣鏃讹紝sqlserver涓嶉攣瀹氳锛屽畠鏀圭敤timestamp鍒楀肩殑姣旇緝缁撴灉鏉ョ‘瀹氳璇诲叆娓告爣鍚庢槸鍚﹀彂鐢熶簡淇敼锛屽鏋滆〃涓嶈timestamp鍒楋紝瀹冩敼鐢ㄦ牎楠屽拰鍊艰繘琛岀‘瀹氥傚鏋滃凡淇敼鏀硅锛屽垯灏濊瘯杩涜鐨勫畾浣嶆洿鏂版垨鍒犻櫎灏嗗け璐ャ傚鏋滄寚瀹氬暒Fast_Forward,鍒欎笉鑳芥寚瀹氫粬銆 + +- Type_Warning:鎸囧畾灏嗘父鏍囦粠鎵璇锋眰鐨勭被鍨嬮殣寮忚浆鎹负鍙︿竴绉嶇被鍨嬫椂鍚戝鎴风鍙戦佽鍛婁俊鎭 + +- For Update[of column_name ,....] :瀹氫箟娓告爣涓彲鏇存柊鐨勫垪銆 + +### 2锛屽0鏄庝竴涓姩鎬佹父鏍 + +``` +declare orderNum_02_cursor cursor scroll +for select OrderId from bigorder where orderNum='ZEORD003402' +``` + +### 3锛屾墦寮娓告爣 + +``` +--鎵撳紑娓告爣璇硶 +open [ Global ] cursor_name | cursor_variable_name +``` + +cursor_name:娓告爣鍚嶏紝cursor_variable_name锛氭父鏍囧彉閲忓悕绉帮紝璇ュ彉閲忓紩鐢ㄤ簡涓涓父鏍囥 + +``` +--鎵撳紑娓告爣 +open orderNum_02_cursor +``` + +### 4锛屾彁鍙栨暟鎹 + +[![澶嶅埗浠g爜](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);) + +``` +--鎻愬彇娓告爣璇硶 +Fetch +[ [Next|prior|Frist|Last|Absoute n|Relative n ] +from ] +[Global] cursor_name +[into @variable_name[,....]] +``` + +[![澶嶅埗浠g爜](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);) + + + +鍙傛暟璇存槑锛 + +- Frist锛氱粨鏋滈泦鐨勭涓琛 +- Prior锛氬綋鍓嶄綅缃殑涓婁竴琛 +- Next锛氬綋鍓嶄綅缃殑涓嬩竴琛 +- Last锛氭渶鍚庝竴琛 +- Absoute n锛氫粠娓告爣鐨勭涓琛屽紑濮嬫暟锛岀n琛屻 +- Relative n锛氫粠褰撳墠浣嶇疆鏁帮紝绗琻琛屻 +- Into @variable_name[,...] : 灏嗘彁鍙栧埌鐨勬暟鎹瓨鏀惧埌鍙橀噺variable_name涓 + +渚嬪瓙锛 + +[![澶嶅埗浠g爜](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);) + +``` +--鎻愬彇鏁版嵁 +fetch first from orderNum_02_cursor +fetch relative 3 from orderNum_02_cursor +fetch next from orderNum_02_cursor +fetch absolute 4 from orderNum_02_cursor +fetch next from orderNum_02_cursor +fetch last from orderNum_02_cursor +fetch prior from orderNum_02_cursor +select * from bigorder where orderNum='ZEORD003402' +``` + +5.閫氳繃妫娴嬪叏灞鍙橀噺**@@Fetch_Status**鐨勫硷紝鑾峰緱鎻愬彇鐘舵佷俊鎭紝璇ョ姸鎬佺敤浜庡垽鏂璅etch璇彞杩斿洖鏁版嵁鐨勬湁鏁堟с傚綋鎵ц涓鏉etch璇彞涔嬪悗锛孈@Fetch_Status鍙兘鍑虹幇3绉嶅硷細 + +- **0**锛孎etch璇彞鎴愬姛銆 + +- **-1**锛欶etch璇彞澶辫触鎴栬涓嶅湪缁撴灉闆嗕腑銆 + +- **-2**锛氭彁鍙栫殑琛屼笉瀛樺湪銆 + +- 5.鍒╃敤娓告爣鏇存柊鍒犻櫎鏁版嵁 + + ``` + --娓告爣淇敼褰撳墠鏁版嵁璇硶 + Update 鍩鸿〃鍚 Set 鍒楀悕=鍊糩,...] Where Current of 娓告爣鍚 + --娓告爣鍒犻櫎褰撳墠鏁版嵁璇硶 + Delete 鍩鸿〃鍚 Where Current of 娓告爣鍚 + ``` + + 娓告爣鏇存柊鍒犻櫎褰撳墠鏁版嵁 + + [![澶嶅埗浠g爜](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);) + + ``` + --1.澹版槑娓告爣 + declare orderNum_03_cursor cursor scroll + for select OrderId ,userId from bigorder where orderNum='ZEORD003402' + --2.鎵撳紑娓告爣 + open orderNum_03_cursor + --3.澹版槑娓告爣鎻愬彇鏁版嵁鎵瑕佸瓨鏀剧殑鍙橀噺 + declare @OrderId int ,@userId varchar(15) + --4.瀹氫綅娓告爣鍒板摢涓琛 + fetch First from orderNum_03_cursor into @OrderId,@userId --into鐨勫彉閲忔暟閲忓繀椤讳笌娓告爣鏌ヨ缁撴灉闆嗙殑鍒楁暟鐩稿悓 + while @@fetch_status=0 --鎻愬彇鎴愬姛锛岃繘琛屼笅涓鏉℃暟鎹殑鎻愬彇鎿嶄綔 + begin + if @OrderId=122182 + begin + Update bigorder Set UserId='123' Where Current of orderNum_03_cursor --淇敼褰撳墠琛 + end + if @OrderId=154074 + begin + Delete bigorder Where Current of orderNum_03_cursor --鍒犻櫎褰撳墠琛 + end + fetch next from orderNum_03_cursor into @OrderId ,@userId --绉诲姩娓告爣 + end + ``` + + [![澶嶅埗浠g爜](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0);) + + ### 6锛屽叧闂父鏍 + + 銆銆娓告爣鎵撳紑鍚庯紝鏈嶅姟鍣ㄤ細涓撻棬涓烘父鏍囧垎閰嶄竴瀹氱殑鍐呭瓨绌洪棿瀛樻斁娓告爣鎿嶄綔鐨勬暟鎹粨鏋滈泦锛屽悓鏃朵娇鐢ㄦ父鏍囦篃浼氬鏌愪簺鏁版嵁杩涜灏侀攣銆傛墍浠ユ父鏍囦竴鏃︾敤杩囷紝搴斿強鏃跺叧闂紝閬垮厤鏈嶅姟鍣ㄨ祫婧愭氮璐广 + + ``` + --鍏抽棴娓告爣璇硶 + close [ Global ] cursor_name | cursor_variable_name + --鍏抽棴娓告爣 + close orderNum_03_cursor + ``` + + ### 7锛屽垹闄ゆ父鏍 + + 銆銆鍒犻櫎娓告爣锛岄噴鏀捐祫婧 + + ```sql + --閲婃斁娓告爣璇硶 + deallocate [ Global ] cursor_name | cursor_variable_name + --閲婃斁娓告爣 + deallocate orderNum_03_cursor + ``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-21\347\254\224\350\256\260-\345\207\275\346\225\260.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-21\347\254\224\350\256\260-\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..04fbb8398d3f9fcb934e10faeee3345a52835fb0 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-21\347\254\224\350\256\260-\345\207\275\346\225\260.md" @@ -0,0 +1,111 @@ +## 鍑芥暟 + +## 涓)鏍囬噺鍊煎嚱鏁扮殑瀹氫箟 + +``` +create function 鍑芥暟鍚嶇О(鍙傛暟鍚 鍙傛暟鐨勬暟鎹被鍨) +returns 杩斿洖杩斿洖鍊肩殑鏁版嵁绫诲瀷 +[with encryption]--濡傛灉鎸囧畾浜唀ncryption鍒欏嚱鏁拌鍔犲瘑 +[as] +begin +--鍑芥暟浣(鍗 t-sql璇彞) +return 琛ㄨ揪寮 +end +``` + +绀轰緥锛氶氳繃瀛︾敓鍚嶅瓧杈撳嚭鎴愮哗 + +``` +create function dbo.student_name_score(@sname nvarchar(30)) +returns int +as +begin + declare @sscore int + select @sscore=score from student where name=@sname + return @sscore +end + +select dbo.student_name_score('寮犱笁') name;--璋冪敤涓瀹氳鍦ㄥ悕绉板墠鍔犱笂dbo.,瀹氫箟鐨勬椂鍊欏鏋滃悕绉板墠闈㈡病鏈塪bo.璋冪敤涔熻鍔犱笂 +``` + +------ + +## (浜)鍐呰仈琛ㄦ牸鍊煎嚱鏁 + +**璇硶:** + +鐗圭偣锛氬唴鑱旇〃鏍煎煎嚱鏁版敮鎸佸湪where瀛愬彞涓娇鐢ㄥ弬鏁 + +``` +create function 鍑芥暟鍚嶇О(鍙傛暟鍚 鍙傛暟鐨勬暟鎹被鍨) +returns table--杩斿洖涓涓〃 +[with encryption]--濡傛灉鎸囧畾浜唀ncryption鍒欏嚱鏁拌鍔犲瘑 +[as] +--鍑芥暟浣(鍗 t-sql璇彞) +return (涓鏉ql璇彞) +``` + +**绀轰緥锛**閫氳繃id宸鍚嶅拰鎴愮哗 + +``` +create function dbo.student_name_score2(@sid int) +returns table +as +return select name,score from student where id=@sid + +select * from dbo.student_name_score2(3) +``` + +------ + +## (涓)澶氳鍙ヨ〃鍊煎嚱鏁 + +澶氳鍙ヨ〃鍊煎嚱鏁拌窡鍐呰仈琛ㄥ煎嚱鏁伴兘鏄〃鍊煎嚱鏁帮紝瀹冧滑杩斿洖鐨勭粨鏋滈兘鏄疶able绫诲瀷銆傚璇彞琛ㄥ煎嚱鏁伴氳繃澶氭潯璇彞鏉ュ垱寤篢able绫诲瀷鐨勬暟鎹**杩欓噷涓嶅悓浜庡唴鑱旇〃鍊煎嚱鏁帮紝鍐呰仈琛ㄥ煎嚱鏁扮殑杩斿洖缁撴灉鏄敱鍑芥暟浣撳唴鐨凷ELECT璇彞鏉ュ喅瀹氥傝屽璇彞琛ㄥ煎嚱鏁帮紝鍒欐槸闇瑕佹寚瀹氬叿浣撶殑Table绫诲瀷鐨勭粨鏋勩**涔熷氨鏄杩斿洖鐨凾able宸茬粡瀹氫箟濂借鍝簺瀛楁杩斿洖銆傛墍浠ュ畠鑳藉鏀寔澶氭潯璇彞鐨勬墽琛屾潵鍒涘缓Table鏁版嵁銆 + +**璇硶锛** + +``` +create function 鍑芥暟鍚嶇О锛園鍙傛暟鍚 鍙傛暟鐨勬暟鎹被鍨嬶級 +returns @Table_Variable_Name table (Column_1 culumn_type,Column_2 culumn_type) +--returns @琛ㄥ彉閲 table 琛ㄧ殑瀹氫箟(鍗冲垪鐨勫畾涔夊拰绾︽潫) +[with encryption] --濡傛灉鎸囧畾浜唀ncryption鍒欏嚱鏁拌鍔犲瘑 +[as] +begin + 鍑芥暟浣(鍗砊-SQL 璇彞) +return +END +``` + +**绀轰緥锛**閫氳繃id鏌ヨ璇ュ鐢熸墍鏈変俊鎭殑鍑芥暟 + +``` +create function dbo.student_table_id(@sid int) +returns @table_test table(id int ,name nvarchar(30),score int) +as +begin +insert @table_test select id,name,score from student where id=@sid +--鎶妔tudent琛ㄦ煡璇㈢粨鏋滄彃鍏tabel鈥斺攖est +return +end + +select * from dbo.student_table_id(1) +``` + +------ + +## (鍥)鑷畾涔夊嚱鏁扮殑淇敼鍜屽垹闄 + +### 1.浣跨敤alter璇彞淇敼鑷畾涔夊嚱鏁帮細 + +``` +alter function 鍑芥暟鍚嶏紙鍙傛暟锛 +returns table +as +return(涓鏉QL璇彞) +``` + +### 2.浣跨敤drop璇彞鍒犻櫎锛 + +``` +drop function func_date_get_name +``` diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260-\346\255\273\351\224\201.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260-\346\255\273\351\224\201.md" new file mode 100644 index 0000000000000000000000000000000000000000..e0efe228aacfbf66794e98a925cdef94aacf6345 --- /dev/null +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260-\346\255\273\351\224\201.md" @@ -0,0 +1,34 @@ +# 姝婚攣 + +### 姒傚康 + +``` +灏辨槸涓や釜鎴栧涓猼rans锛屽悓鏃惰姹傚鏂规鍦ㄨ姹傜殑鏌愪釜瀹為檯搴旂敤瀵硅薄锛岃屽鑷村弻鏂逛簰鐩哥瓑寰呫 +``` + +### 鍑犵琛ㄧ幇 + +``` +--琛ㄧ幇1. + +涓涓敤鎴稟 璁块棶琛ˋ(閿佷綇浜嗚〃A),鐒跺悗鍙堣闂〃B銆 +鍙︿竴涓敤鎴稡 璁块棶琛˙(閿佷綇浜嗚〃B),鐒跺悗浼佸浘璁块棶琛ˋ锛 +杩欐椂鐢ㄦ埛A鐢变簬鐢ㄦ埛B宸茬粡閿佷綇琛˙锛屽畠蹇呴』绛夊緟鐢ㄦ埛B閲婃斁琛˙,鎵嶈兘缁х画锛屽ソ浜嗕粬鑰佷汉瀹跺氨鍙ソ鑰佽佸疄瀹炲湪杩欑瓑浜嗭紝鍚屾牱鐢ㄦ埛B瑕佺瓑鐢ㄦ埛A閲婃斁琛ˋ鎵嶈兘缁х画锛岃繖灏遍犳垚姝婚攣浜嗐 + +--瑙e喅鏂规硶锛 +杩欑姝婚攣鏄敱浜庝綘鐨勭▼搴忕殑BUG浜х敓鐨勶紝闄や簡璋冩暣浣犵殑绋嬪簭鐨勯昏緫鍒棤浠栨硶 +浠旂粏鍒嗘瀽浣犵▼搴忕殑閫昏緫锛 +1锛氬敖閲忛伩鍏嶅悓鏃堕攣瀹氫袱涓祫婧 +2: 蹇呴』鍚屾椂閿佸畾涓や釜璧勬簮鏃讹紝瑕佷繚璇佸湪浠讳綍鏃跺埢閮藉簲璇ユ寜鐓х浉鍚岀殑椤哄簭鏉ラ攣瀹氳祫婧. +--琛ㄧ幇2. + +鐢ㄦ埛A璇讳竴鏉$邯褰曪紝鐒跺悗淇敼璇ユ潯绾綍銆 +杩欐椂鐢ㄦ埛B淇敼璇ユ潯绾綍锛岃繖閲岀敤鎴稟鐨勪簨鍔¢噷閿佺殑鎬ц川鐢卞叡浜攣浼佸浘涓婂崌鍒扮嫭鍗犻攣(for update),鑰岀敤鎴稡閲岀殑鐙崰閿佺敱浜嶢鏈夊叡浜攣瀛樺湪鎵浠ュ繀椤荤瓑A閲 +鏀炬帀鍏变韩閿侊紝鑰孉鐢变簬B鐨勭嫭鍗犻攣鑰屾棤娉曚笂鍗囩殑鐙崰閿佷篃灏变笉鍙兘閲婃斁鍏变韩閿侊紝浜庢槸鍑虹幇浜嗘閿併 +杩欑姝婚攣姣旇緝闅愯斀锛屼絾鍏跺疄鍦ㄧ◢澶х偣鐨勯」鐩腑缁忓父鍙戠敓銆 + +--瑙e喅鏂规硶 +璁╃敤鎴稟鐨勪簨鍔★紙鍗冲厛璇诲悗鍐欑被鍨嬬殑鎿嶄綔),鍦╯elect 鏃剁敤Update lock +璇硶濡備笅锛 +select * from table1 with(updlock) where .... +``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/ER\345\233\276.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/ER\345\233\276.md" index f06bc13d8821f028a0215b4428c6e1fb5831dc80..1f3a6a503e75c75987fa278dc7a8445de7db5792 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/ER\345\233\276.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/ER\345\233\276.md" @@ -1,49 +1,49 @@ -```涓銆丒-R鍥惧畾涔 -涓.瀛愭煡璇 - -1.浣跨敤in 鍜 not in瀹屾垚瀛愭煡璇 -in[鍦╙ not in[涓嶅湪] - -select * from StudentInfo -where stuNO in (select stuid - from stuMarks - group by stuid - having min(Score) >= 60 - ) -2.浣跨敤some銆乤ny銆乤ll杩涜鏌ヨ -some[涓浜沒 any[浠绘剰鐨刔 all[鍏ㄩ儴] - -select sti.* from stuMarks smk -inner join StudentInfo sti on sti.stuNo = smk.stuID -where score > all(select score - from stuMarks stm -inner join StudentInfo st on stm.stuID = st.stuNo -where stuName = '寮犵鍒') -鏌ヨ鍑烘煇鍚屽鏌愪竴闂ㄨ冭瘯鎴愮哗鍙渶瑕佹瘮鈥滃紶绉嬪埄鈥濆悓瀛︽煇涓垎鏁伴珮鐨勫鐢熷熀鏈俊鎭紙stuMarks锛 - -select distinct sti.* from stuMarks smk -inner join StudentInfo sti on sti.stuNo = smk.stuID -where stuName <> '寮犵鍒' and score > any(select score - from stuMarks stm -inner join StudentInfo st on stm.stuID = st.stuNo - where stuName = '寮犵鍒'锛 -3.浣跨敤exists 鍜宯ot exists瀹屾垚瀛愭煡璇 -exists[瀛樺湪]锛 濡傛灉瀛愭煡璇㈢粨鏋滈潪绌猴紝鍗宠褰曟潯鏁1鏉′互涓婏紝鍒檈xsts锛堝瓙鏌ヨ锛夎繑鍥瀟rue 鎴 false锛==鍙厤鍚坕f璇彞浣跨敤if exists(鏉′欢)== - -绀轰緥锛氭煡璇㈠嚭鍙傚姞鑰冭瘯鐨勫鐢熺殑淇℃伅 - -select * from StudentInfo st -where exists (select stuid from stuMarks stm where st.stuNo = stm.stuID) --濡傛灉璇ユ潯浠舵垚绔嬪氨鏄剧ず锛屼笂涓琛岀殑鏌ヨ缁撴灉 -涔熷彲浠ュ拰if閰嶅悎浣跨敤 - -if exists锛堝瓙鏌ヨ锛 -璇彞 -4.浣跨敤compute鍜宑ompute by杩涜姹囨绘煡璇 -compute 鍜 compute by瀛愬彞浣挎偍寰椾互鐢ㄥ悓涓select璇彞鍗虫煡鐪嬫槑缁嗚锛屾湁鏌ョ湅姹囨昏銆傚彲浠ヨ绠楀瓙缁勭殑姹囨诲硷紝涔熷彲浠ヨ绠楁暣涓粨鏋滈泦鐨勬眹鎬诲 - -褰揷ompute涓嶅甫鍙夌殑by瀛愬彞鏃讹紝select璇彞鏈変袱涓粨鏋滈泦锛 鈼 姣忎釜缁勭殑绗竴涓粨鏋滈泦鏄寘鍚夋嫨鍒楄〃淇℃伅鐨勬墍鏈夋槑缁嗚 鈼 绗簩涓粨鏋滈泦鏈変竴琛岋紝鍏朵腑鍖呭惈compute瀛愬彞涓墍鎸囧畾鐨勮仛鍚堝嚱鏁扮殑鍚堣 - -compute瀛愬彞闇瑕佷笅鍒椾俊鎭細 鈼 鍙塨y鍏抽敭瀛椼傚畠鍩轰簬姣忎竴鍒楄绠楁寚瀹氱殑琛岃仛鍚 鈼 琛岃仛鍚堝嚱鏁板悕绉 SUM銆丄VG銆丮IN銆丮AX銆佹垨 COUNT 鈼 瑕佸鍏舵墽琛岃鑱氬嚱鏁扮殑鍒 - -瀵圭粨鏋滃厛杩涜鍒嗙粍鐒跺悗杩涜姹囨昏绠楁椂浣跨敤锛歝ompute by杩涜鍒嗙粍姹囨绘煡璇xxxxxxxxx聽濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) 涓銆丒-R鍥惧畾涔 +```涓銆丒-R鍥惧畾涔 +涓.瀛愭煡璇 + +1.浣跨敤in 鍜 not in瀹屾垚瀛愭煡璇 +in[鍦╙ not in[涓嶅湪] + +select * from StudentInfo +where stuNO in (select stuid + from stuMarks + group by stuid + having min(Score) >= 60 + ) +2.浣跨敤some銆乤ny銆乤ll杩涜鏌ヨ +some[涓浜沒 any[浠绘剰鐨刔 all[鍏ㄩ儴] + +select sti.* from stuMarks smk +inner join StudentInfo sti on sti.stuNo = smk.stuID +where score > all(select score + from stuMarks stm +inner join StudentInfo st on stm.stuID = st.stuNo +where stuName = '寮犵鍒') +鏌ヨ鍑烘煇鍚屽鏌愪竴闂ㄨ冭瘯鎴愮哗鍙渶瑕佹瘮鈥滃紶绉嬪埄鈥濆悓瀛︽煇涓垎鏁伴珮鐨勫鐢熷熀鏈俊鎭紙stuMarks锛 + +select distinct sti.* from stuMarks smk +inner join StudentInfo sti on sti.stuNo = smk.stuID +where stuName <> '寮犵鍒' and score > any(select score + from stuMarks stm +inner join StudentInfo st on stm.stuID = st.stuNo + where stuName = '寮犵鍒'锛 +3.浣跨敤exists 鍜宯ot exists瀹屾垚瀛愭煡璇 +exists[瀛樺湪]锛 濡傛灉瀛愭煡璇㈢粨鏋滈潪绌猴紝鍗宠褰曟潯鏁1鏉′互涓婏紝鍒檈xsts锛堝瓙鏌ヨ锛夎繑鍥瀟rue 鎴 false锛==鍙厤鍚坕f璇彞浣跨敤if exists(鏉′欢)== + +绀轰緥锛氭煡璇㈠嚭鍙傚姞鑰冭瘯鐨勫鐢熺殑淇℃伅 + +select * from StudentInfo st +where exists (select stuid from stuMarks stm where st.stuNo = stm.stuID) --濡傛灉璇ユ潯浠舵垚绔嬪氨鏄剧ず锛屼笂涓琛岀殑鏌ヨ缁撴灉 +涔熷彲浠ュ拰if閰嶅悎浣跨敤 + +if exists锛堝瓙鏌ヨ锛 +璇彞 +4.浣跨敤compute鍜宑ompute by杩涜姹囨绘煡璇 +compute 鍜 compute by瀛愬彞浣挎偍寰椾互鐢ㄥ悓涓select璇彞鍗虫煡鐪嬫槑缁嗚锛屾湁鏌ョ湅姹囨昏銆傚彲浠ヨ绠楀瓙缁勭殑姹囨诲硷紝涔熷彲浠ヨ绠楁暣涓粨鏋滈泦鐨勬眹鎬诲 + +褰揷ompute涓嶅甫鍙夌殑by瀛愬彞鏃讹紝select璇彞鏈変袱涓粨鏋滈泦锛 鈼 姣忎釜缁勭殑绗竴涓粨鏋滈泦鏄寘鍚夋嫨鍒楄〃淇℃伅鐨勬墍鏈夋槑缁嗚 鈼 绗簩涓粨鏋滈泦鏈変竴琛岋紝鍏朵腑鍖呭惈compute瀛愬彞涓墍鎸囧畾鐨勮仛鍚堝嚱鏁扮殑鍚堣 + +compute瀛愬彞闇瑕佷笅鍒椾俊鎭細 鈼 鍙塨y鍏抽敭瀛椼傚畠鍩轰簬姣忎竴鍒楄绠楁寚瀹氱殑琛岃仛鍚 鈼 琛岃仛鍚堝嚱鏁板悕绉 SUM銆丄VG銆丮IN銆丮AX銆佹垨 COUNT 鈼 瑕佸鍏舵墽琛岃鑱氬嚱鏁扮殑鍒 + +瀵圭粨鏋滃厛杩涜鍒嗙粍鐒跺悗杩涜姹囨昏绠楁椂浣跨敤锛歝ompute by杩涜鍒嗙粍姹囨绘煡璇xxxxxxxxx聽濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) 涓銆丒-R鍥惧畾涔 ``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" index fe97f6acf3fe95c6ec3d3e98baff5ab0451e522b..db6e149997ef2d097bac38b89acf1ff94f98e52a 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\217\230\351\207\217\344\270\216\351\200\273\350\276\221\346\216\247\345\210\266.md" @@ -1,100 +1,100 @@ ------- - -### 1.if-else璇彞 - -``` ---璇硶缁撴瀯锛 -if( 鏉′欢琛ㄨ揪寮 ) - begin - 鍛戒护琛屾垨绋嬪簭鍧1 - 鍛戒护琛屾垨绋嬪簭鍧2 - end -else - begin - 鍛戒护琛屾垨绋嬪簭鍧 - end -``` - -缁熻骞舵樉绀2009-2-17鐨凧ava Logic鑰冭瘯骞冲潎鍒嗗鏋滃钩鍧囧垎鍦70浠ヤ笂,鏄剧ず鈥滆冭瘯鎴愮哗浼樼鈥,骞舵樉绀哄墠涓夊悕瀛︾敓鐨勮冭瘯淇℃伅濡傛灉鍦70浠ヤ笅,鏄剧ず鈥滆冭瘯鎴愮哗杈冨樊鈥,骞舵樉绀哄悗涓夊悕瀛︾敓鐨勮冭瘯淇℃伅 - -``` -declare @subjectno int --瀛樺偍绉戠洰缂栧彿 -declare @avg numeric(5,2)--瀛樺偍骞冲潎鍒 ---鏌ヨ绉戠洰缂栧彿璧嬪肩粰@subjecton ---鏌ヨ骞冲潎鍒嗚祴鍊肩粰@avg -if(@avg>70) - begin - print '鎴愮哗浼樼' - select璇彞鏄剧ず鍓3鍚嶈冪敓淇℃伅 - end -else - begin - print '鎴愮哗杈冨樊' - select璇彞鏄剧ず鍚3鍚嶈冪敓淇℃伅 - end -``` - ------- - -### 2.**while-continue-break**璇彞 - -璇硶锛 continue[缁х画] - -``` -while(鏉′欢琛ㄨ揪寮) - begin - 鍛戒护琛屾垨绋嬪簭鍧 - [break] 鈫掆啋 璺冲嚭寰幆 - [continue] 鈫掆啋 鍙互璁╃▼搴忚烦杩嘽ontinue鍛戒护涔嬪悗鐨勮鍙 - 鍛戒护琛屾垨绋嬪簭鍧 - end -``` - -==濡傛灉鏈夊鏉¤鍙ユ墠闇瑕乥egin-end璇彞鍧== - ------- - -### 3.case璇彞 - -``` -select 鏉′欢琛ㄨ揪寮, case [compare_value] - when 鏉′欢1 then 缁撴灉1 - when 鏉′欢2 then 缁撴灉2 - [else 鍏朵粬缁撴灉] - end [鍒楀悕] -from 琛ㄥ悕 - ---鎵瑰鐞嗗彲浠ユ彁楂樿鍙ョ殑鎵ц鏁堢巼 -``` - -==else:琛ㄧずcase涓墍鏈墂hen鏉′欢鍧囦笉涓簍rue鏃惰繑鍥炵殑缁撴灉,濡傛灉鐪佺暐else涓攚hen鏉′欢閮戒负false鏃, case璇彞杩斿洖null== - -绀轰緥:鏍规嵁鐢熸棩娣诲姞涓涓敓鑲栧垪 - -CASE鍙ユ硶杩斿洖绗竴涓獀alue = year(PeopleBirth) % 12姣旇緝缁撴灉涓虹湡鐨勭粨鏋溿 濡傛灉娌℃湁姣旇緝缁撴灉绗﹀悎锛屽垯杩斿洖ELSE鍚庣殑缁撴灉锛屽鏋滄病鏈塃LSE閮ㄥ垎锛屽垯杩斿洖NULL锛 - ------- - -鏌ヨ閾惰鍗′俊鎭紝灏嗛摱琛屽崱鐘舵1,2,3,4鍒嗗埆杞崲涓烘眽瀛椻滄甯,鎸傚け,鍐荤粨,娉ㄩ攢鈥濓紝骞朵笖鏍规嵁閾惰鍗′綑棰濇樉绀洪摱琛屽崱绛夌骇 30涓囦互涓嬩负鈥滄櫘閫氱敤鎴封,30涓囧強浠ヤ笂涓"VIP鐢ㄦ埛"锛 - -``` -select CardNo ,AccountCode ,RealName ,CardMoney ,CardState, -case -when CardState='1' then '姝e父' -when CardState='2' then '鎸傚け' -when CardState='3' then '鍐荤粨' -when CardState='4' then '娉ㄩ攢' -end 閾惰鍗$姸鎬, -case -when CardMoney >=300000 then 'VIP鐢ㄦ埛' -when CardMoney <300000 then '鏅氱敤鎴' -end 鐢ㄦ埛绛夌骇 -from BankCard b -join AccountInfo a on b.AccountId=a.AccountId -``` - ------- - -### 4.鐗规畩瀛楃 - +------ + +### 1.if-else璇彞 + +``` +--璇硶缁撴瀯锛 +if( 鏉′欢琛ㄨ揪寮 ) + begin + 鍛戒护琛屾垨绋嬪簭鍧1 + 鍛戒护琛屾垨绋嬪簭鍧2 + end +else + begin + 鍛戒护琛屾垨绋嬪簭鍧 + end +``` + +缁熻骞舵樉绀2009-2-17鐨凧ava Logic鑰冭瘯骞冲潎鍒嗗鏋滃钩鍧囧垎鍦70浠ヤ笂,鏄剧ず鈥滆冭瘯鎴愮哗浼樼鈥,骞舵樉绀哄墠涓夊悕瀛︾敓鐨勮冭瘯淇℃伅濡傛灉鍦70浠ヤ笅,鏄剧ず鈥滆冭瘯鎴愮哗杈冨樊鈥,骞舵樉绀哄悗涓夊悕瀛︾敓鐨勮冭瘯淇℃伅 + +``` +declare @subjectno int --瀛樺偍绉戠洰缂栧彿 +declare @avg numeric(5,2)--瀛樺偍骞冲潎鍒 +--鏌ヨ绉戠洰缂栧彿璧嬪肩粰@subjecton +--鏌ヨ骞冲潎鍒嗚祴鍊肩粰@avg +if(@avg>70) + begin + print '鎴愮哗浼樼' + select璇彞鏄剧ず鍓3鍚嶈冪敓淇℃伅 + end +else + begin + print '鎴愮哗杈冨樊' + select璇彞鏄剧ず鍚3鍚嶈冪敓淇℃伅 + end +``` + +------ + +### 2.**while-continue-break**璇彞 + +璇硶锛 continue[缁х画] + +``` +while(鏉′欢琛ㄨ揪寮) + begin + 鍛戒护琛屾垨绋嬪簭鍧 + [break] 鈫掆啋 璺冲嚭寰幆 + [continue] 鈫掆啋 鍙互璁╃▼搴忚烦杩嘽ontinue鍛戒护涔嬪悗鐨勮鍙 + 鍛戒护琛屾垨绋嬪簭鍧 + end +``` + +==濡傛灉鏈夊鏉¤鍙ユ墠闇瑕乥egin-end璇彞鍧== + +------ + +### 3.case璇彞 + +``` +select 鏉′欢琛ㄨ揪寮, case [compare_value] + when 鏉′欢1 then 缁撴灉1 + when 鏉′欢2 then 缁撴灉2 + [else 鍏朵粬缁撴灉] + end [鍒楀悕] +from 琛ㄥ悕 + +--鎵瑰鐞嗗彲浠ユ彁楂樿鍙ョ殑鎵ц鏁堢巼 +``` + +==else:琛ㄧずcase涓墍鏈墂hen鏉′欢鍧囦笉涓簍rue鏃惰繑鍥炵殑缁撴灉,濡傛灉鐪佺暐else涓攚hen鏉′欢閮戒负false鏃, case璇彞杩斿洖null== + +绀轰緥:鏍规嵁鐢熸棩娣诲姞涓涓敓鑲栧垪 + +CASE鍙ユ硶杩斿洖绗竴涓獀alue = year(PeopleBirth) % 12姣旇緝缁撴灉涓虹湡鐨勭粨鏋溿 濡傛灉娌℃湁姣旇緝缁撴灉绗﹀悎锛屽垯杩斿洖ELSE鍚庣殑缁撴灉锛屽鏋滄病鏈塃LSE閮ㄥ垎锛屽垯杩斿洖NULL锛 + +------ + +鏌ヨ閾惰鍗′俊鎭紝灏嗛摱琛屽崱鐘舵1,2,3,4鍒嗗埆杞崲涓烘眽瀛椻滄甯,鎸傚け,鍐荤粨,娉ㄩ攢鈥濓紝骞朵笖鏍规嵁閾惰鍗′綑棰濇樉绀洪摱琛屽崱绛夌骇 30涓囦互涓嬩负鈥滄櫘閫氱敤鎴封,30涓囧強浠ヤ笂涓"VIP鐢ㄦ埛"锛 + +``` +select CardNo ,AccountCode ,RealName ,CardMoney ,CardState, +case +when CardState='1' then '姝e父' +when CardState='2' then '鎸傚け' +when CardState='3' then '鍐荤粨' +when CardState='4' then '娉ㄩ攢' +end 閾惰鍗$姸鎬, +case +when CardMoney >=300000 then 'VIP鐢ㄦ埛' +when CardMoney <300000 then '鏅氱敤鎴' +end 鐢ㄦ埛绛夌骇 +from BankCard b +join AccountInfo a on b.AccountId=a.AccountId +``` + +------ + +### 4.鐗规畩瀛楃 + 鍒惰〃绗 CHAR(9)锛涙崲琛岀 CHAR(10)锛涘洖杞 CHAR(13)锛 \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\244\215\344\271\240.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\244\215\344\271\240.md" index e16ae9dcf6b803f034362648cbd750f45669cccc..6a41815f02c4471684b9da9e521793fa0a01b832 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\244\215\344\271\240.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\345\244\215\344\271\240.md" @@ -1,45 +1,45 @@ - - -### 涓銆丒-R鍥惧畾涔 - -##### 1銆佸熀鏈蹇 - -锛1锛夊疄浣擄細瀹㈣瀛樺湪骞剁浉浜掑尯鍒殑浜嬬墿銆傜敤鐭╁舰琛ㄧず 锛2锛夊睘鎬э細瀹炰綋鎵鍏锋湁鐨勬煇涓鐗规с傜敤妞渾琛ㄧず 锛3锛夌爜鎴栭敭锛氬敮涓鏍囪瘑瀹炰綋鐨勫睘鎬ч泦绉颁负鐮佹垨閿 锛4锛夊煙锛氬睘鎬х殑鍙栧艰寖鍥淬 锛5锛夊疄浣撳瀷锛氱敤瀹炰綋鍚嶅強鍏跺睘鎬ч泦鍚堟潵鎶借薄鍜屽埢鐢诲悓绫诲疄浣撱 锛6锛夊疄浣撻泦锛氬悓鍨嬪疄浣撶殑闆嗗悎銆 锛7锛夎仈绯伙細瀹炰綋鍜屽疄浣撲箣闂寸殑鑱旂郴銆傝仈绯讳篃鍙互鏈夊睘鎬э紝鐢ㄨ彵褰㈣〃绀恒 - -##### 2銆丒-R鍥捐浆鎹负鍏崇郴妯″瀷 - -``` -1瀵1: - -鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡 -鍙互涓庝换鎰忎竴绔搴旂殑鍏崇郴妯″紡鍚堝苟锛屽湪浠绘剰涓鏂瑰姞鍏ュ鏂圭殑涓婚敭(涓荤爜)鍙樹负鍏跺閿(澶栫爜)锛屽苟鍔犲叆鑱旂郴鏈韩鐨勫睘鎬с - -1瀵筺锛宯瀵1: - -鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡 -鍙互涓巒绔搴旂殑鍏崇郴妯″紡鍚堝苟锛屽皢1鏂圭殑涓婚敭鍔犲叆n鏂逛綔涓哄叾澶栭敭锛屽苟灏嗚仈绯荤殑灞炴т篃鍔犲叆n鏂 - -m瀵筺: - -鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡(鏂板缓涓寮犲叧绯昏〃)锛屽皢鑱旂郴鍙屾柟鐨勪富閿(涓荤爜)鍔犲叆鍏朵腑锛屽苟灏嗚仈绯荤殑灞炴т篃鍔犲叆鍏朵腑銆 -``` - -#### 绗竴鑼冨紡 - -``` -绗竴鑼冨紡鐨勭洰鏍囨槸纭繚姣忓垪鐨勫師瀛愭 - -濡傛灉姣忓垪閮芥槸涓嶅彲鍐嶅垎鐨勬渶灏忔暟鎹崟鍏(涔熺О涓烘渶灏忕殑鍘熷瓙鍗曞厓)锛屽垯婊¤冻绗竴鑼冨紡(1NF) -``` - -#### 绗簩鑼冨紡 - -``` -濡傛灉涓涓叧绯绘弧瓒崇涓鑼冨紡锛屽苟涓旈櫎浜嗕富閿互澶栫殑鍏朵粬鍒楅兘渚濊禆浜庤涓婚敭锛屽垯婊¤冻绗簩鑼冨紡(2NF) -``` - -#### 绗笁鑼冨紡 - -``` -濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) + + +### 涓銆丒-R鍥惧畾涔 + +##### 1銆佸熀鏈蹇 + +锛1锛夊疄浣擄細瀹㈣瀛樺湪骞剁浉浜掑尯鍒殑浜嬬墿銆傜敤鐭╁舰琛ㄧず 锛2锛夊睘鎬э細瀹炰綋鎵鍏锋湁鐨勬煇涓鐗规с傜敤妞渾琛ㄧず 锛3锛夌爜鎴栭敭锛氬敮涓鏍囪瘑瀹炰綋鐨勫睘鎬ч泦绉颁负鐮佹垨閿 锛4锛夊煙锛氬睘鎬х殑鍙栧艰寖鍥淬 锛5锛夊疄浣撳瀷锛氱敤瀹炰綋鍚嶅強鍏跺睘鎬ч泦鍚堟潵鎶借薄鍜屽埢鐢诲悓绫诲疄浣撱 锛6锛夊疄浣撻泦锛氬悓鍨嬪疄浣撶殑闆嗗悎銆 锛7锛夎仈绯伙細瀹炰綋鍜屽疄浣撲箣闂寸殑鑱旂郴銆傝仈绯讳篃鍙互鏈夊睘鎬э紝鐢ㄨ彵褰㈣〃绀恒 + +##### 2銆丒-R鍥捐浆鎹负鍏崇郴妯″瀷 + +``` +1瀵1: + +鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡 +鍙互涓庝换鎰忎竴绔搴旂殑鍏崇郴妯″紡鍚堝苟锛屽湪浠绘剰涓鏂瑰姞鍏ュ鏂圭殑涓婚敭(涓荤爜)鍙樹负鍏跺閿(澶栫爜)锛屽苟鍔犲叆鑱旂郴鏈韩鐨勫睘鎬с + +1瀵筺锛宯瀵1: + +鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡 +鍙互涓巒绔搴旂殑鍏崇郴妯″紡鍚堝苟锛屽皢1鏂圭殑涓婚敭鍔犲叆n鏂逛綔涓哄叾澶栭敭锛屽苟灏嗚仈绯荤殑灞炴т篃鍔犲叆n鏂 + +m瀵筺: + +鍙互杞崲涓轰竴涓嫭绔嬬殑鍏崇郴妯″紡(鏂板缓涓寮犲叧绯昏〃)锛屽皢鑱旂郴鍙屾柟鐨勪富閿(涓荤爜)鍔犲叆鍏朵腑锛屽苟灏嗚仈绯荤殑灞炴т篃鍔犲叆鍏朵腑銆 +``` + +#### 绗竴鑼冨紡 + +``` +绗竴鑼冨紡鐨勭洰鏍囨槸纭繚姣忓垪鐨勫師瀛愭 + +濡傛灉姣忓垪閮芥槸涓嶅彲鍐嶅垎鐨勬渶灏忔暟鎹崟鍏(涔熺О涓烘渶灏忕殑鍘熷瓙鍗曞厓)锛屽垯婊¤冻绗竴鑼冨紡(1NF) +``` + +#### 绗簩鑼冨紡 + +``` +濡傛灉涓涓叧绯绘弧瓒崇涓鑼冨紡锛屽苟涓旈櫎浜嗕富閿互澶栫殑鍏朵粬鍒楅兘渚濊禆浜庤涓婚敭锛屽垯婊¤冻绗簩鑼冨紡(2NF) +``` + +#### 绗笁鑼冨紡 + +``` +濡傛灉涓涓叧绯绘弧瓒崇浜岃寖寮忥紝骞朵笖闄や簡涓婚敭浠ュ鐨勫叾浠栧垪閮戒緷璧栵紝涓旂洿鎺ヤ簬涓婚敭鍒楋紝鍒欐弧瓒崇涓夎寖寮(3NF) ``` \ No newline at end of file diff --git "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260.md" "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\350\214\203\345\274\217.md" similarity index 96% rename from "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260.md" rename to "19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\350\214\203\345\274\217.md" index f9d68a6ded9a02f1cb33fe41ad24ac7491b22be0..38e58e7156dc0d012803481bfe18760db836cf7d 100644 --- "a/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260.md" +++ "b/19\351\231\210\345\277\227\346\242\201/\347\254\224\350\256\260/\347\254\224\350\256\260-\350\214\203\345\274\217.md" @@ -1,139 +1,139 @@ -1.--default浠h〃瀛楁榛樿鍊; check鍙互瑙勫畾瀛楁鍊肩殑绾︽潫鏉′欢; - PeopleSex nvarchar(1) default('鐢') check(PeopleSex='鐢' or PeopleSex='濂') not null, - -2.decimal: - -鈥 PeopleSalary decimal(12,2) check(PeopleSalary>= 1000 and PeopleSalary <= 100000) not null, -鈥 - -3.--unique浠h〃鍞竴绾︽潫锛屼负鏁版嵁鎻愪緵鍞竴鎬т繚璇; - PeoplePhone nvarchar(20) unique not null, - -4.--datetime鍜宻malldatetime閮藉彲浠ヨ〃绀烘椂闂寸被鍨嬶紝getdate()鐢ㄤ簬鑾峰彇绯荤粺褰撳墠鏃堕棿 - PeopleAddTime smalldatetime default(getdate()) - -5.鎻掑叆鏁版嵁 -insert into Department values('琛屾斂閮','鍏徃涓荤琛屾斂宸ヤ綔鐨勯儴闂'); - -6.between ...and ... - -select * from People where PeopleSalary between 10000 and 20000 - -7.闄嶅簭\鍗囧簭 - -select * from People order by PeopleSalary desc \ asc - - - -8.妯$硦鏌ヨ like - -妯$硦鏌ヨ -%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 -_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ -[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 -[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 - -1.)鏌ヨ濮撳垬 - -select * from People where PeopleName like'鍒%' - -2.)鍚湁鈥滃皻鈥濇垨鑰呪滃彶鈥濈殑鍛樺伐淇℃伅 - -where PeopleName like'%灏%' or PeopleName like'%鍙%' - -3.)鍚嶅瓧鏄2涓瓧 - -where PeopleName like'鍒榑' - -4.)鍚嶅瓧涓鍏变笁涓瓧鐨勫憳宸ヤ俊鎭 - -where PeopleName like'__棣' - -5.)寮澶138鐨勫憳宸ヤ俊鎭 - -where PeoplePhone like'138%' - -6.)寮澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 - -where PeoplePhone like'138[7,8]%5' - -7.)寮澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 - -where PeoplePhone like'133[2-5]%[^2-3] - - - -9.闄愬埗闀垮害锛歭en -userName varchar(20) unique not null check(len(userName)>4), - -10.round(num,len,[type]) -鍏朵腑: -num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) - -11.year(getdate()) 鑾峰彇褰撳墠鏃堕棿 - -12.椤哄簭锛 - -鈥 select - -鈥 left jion - -鈥 group by - -鈥 having - -鈥 order by desc/asc - - - -13.锛氳寖寮 - -**绗竴鑼冨紡锛1NF锛夛細** - -![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429144806987-1479266927.png) - - -銆銆鍒1鍞竴纭畾鍒2, 鍒3, 鍒4, ...锛屽嵆鍒2, 鍒3, 鍒4, ...涓嶈兘鍐嶅垎瑁傚嚭鍏跺畠鍒椼 - -銆銆鍋囪鏈夊叧绯绘ā寮忓垪1: 璁㈠崟鍚; 鍒2: 鍟嗗搧銆備竴涓鍗曚笅鍙互鏈夊涓晢鍝侊紝鍗冲垪2: 鍟嗗搧鍙互鍒嗚鎴愬晢鍝丄, 鍟嗗搧B, 鍟嗗搧C, ...锛屾墍浠ュ垪1: 璁㈠崟鍚; 鍒2: 鍟嗗搧杩欐牱鐨勫叧绯绘ā寮忎笉绗﹀悎绗竴鑼冨紡銆 - -# 銆绗簩鑼冨紡锛2NF锛夛細 - -![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429145214099-1241070153.png) - - - - - - - - - - -鈥冣冩弧瓒2NF鐨勫墠鎻愭槸蹇呴』婊¤冻1NF銆 - -銆銆姝ゅ锛屽叧绯绘ā寮忛渶瑕佸寘鍚袱閮ㄥ垎鍐呭銆備竴鏄繀椤绘湁涓涓紙鍙婁互涓婏級涓婚敭锛涗簩鏄病鏈夊寘鍚湪涓婚敭涓殑鍒楀繀椤诲叏閮ㄤ緷璧栦簬鍏ㄩ儴涓婚敭锛岃屼笉鑳藉彧渚濊禆浜庝富閿殑涓閮ㄥ垎鑰屼笉渚濊禆鍏ㄩ儴涓婚敭銆 - -鈥冣冨畾涔夊惉璧锋潵鏈夌偣缁曪紝涓嶆厡锛岀洿鎺ョ湅鍥撅紝鍙湁鍏ㄩ儴鐨勯潪涓婚敭鍒椾緷璧栦簬鍏ㄩ儴涓婚敭锛屾墠婊¤冻绗簩鑼冨紡銆 - -銆銆**绗笁鑼冨紡锛3NF锛夛細** - -![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429145526908-1013297767.png) - - - - - - - - -銆銆婊¤冻3NF鐨勫墠鎻愭槸蹇呴』婊¤冻2NF銆 - -銆銆鍙﹀鍏崇郴妯″紡鐨勯潪涓婚敭鍒楀繀椤荤洿鎺ヤ緷璧栦簬涓婚敭锛屼笉鑳藉瓨鍦ㄤ紶閫掍緷璧栥傚嵆涓嶈兘瀛樺湪锛氶潪涓婚敭鍒梞鏃緷璧栦簬鍏ㄩ儴涓婚敭锛屽張渚濊禆浜庨潪涓婚敭鍒梟鐨勬儏鍐点 - -銆銆瀹氫箟鍚捣鏉ヨ繕鏄湁鐐圭粫锛屼笉鎱岋紝鐩存帴鐪嬪浘锛屽彧瑕侀潪涓婚敭鍐呴儴瀛樺湪浼犻掍緷璧栵紝灏变笉婊¤冻绗笁鑼冨紡銆 - -銆銆鍋囪瀛樺湪鍏崇郴妯″紡涓婚敭1: 璇剧▼缂栧彿; 鍒1: 鏁欏笀鍚; 鍒2: 鏁欏笀瀹跺涵鍦板潃銆傛樉鐒舵弧瓒崇涓鑼冨紡鍜岀浜岃寖寮忥紝浣嗘槸鏁欏笀瀹跺涵鍦板潃浼犻掍緷璧栦簬鏁欏笀鍚嶏紝鎵浠ヤ笉婊¤冻绗笁鑼冨紡銆 - - - +1.--default浠h〃瀛楁榛樿鍊; check鍙互瑙勫畾瀛楁鍊肩殑绾︽潫鏉′欢; + PeopleSex nvarchar(1) default('鐢') check(PeopleSex='鐢' or PeopleSex='濂') not null, + +2.decimal: + +鈥 PeopleSalary decimal(12,2) check(PeopleSalary>= 1000 and PeopleSalary <= 100000) not null, +鈥 + +3.--unique浠h〃鍞竴绾︽潫锛屼负鏁版嵁鎻愪緵鍞竴鎬т繚璇; + PeoplePhone nvarchar(20) unique not null, + +4.--datetime鍜宻malldatetime閮藉彲浠ヨ〃绀烘椂闂寸被鍨嬶紝getdate()鐢ㄤ簬鑾峰彇绯荤粺褰撳墠鏃堕棿 + PeopleAddTime smalldatetime default(getdate()) + +5.鎻掑叆鏁版嵁 +insert into Department values('琛屾斂閮','鍏徃涓荤琛屾斂宸ヤ綔鐨勯儴闂'); + +6.between ...and ... + +select * from People where PeopleSalary between 10000 and 20000 + +7.闄嶅簭\鍗囧簭 + +select * from People order by PeopleSalary desc \ asc + + + +8.妯$硦鏌ヨ like + +妯$硦鏌ヨ +%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 +_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ +[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 +[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 + +1.)鏌ヨ濮撳垬 + +select * from People where PeopleName like'鍒%' + +2.)鍚湁鈥滃皻鈥濇垨鑰呪滃彶鈥濈殑鍛樺伐淇℃伅 + +where PeopleName like'%灏%' or PeopleName like'%鍙%' + +3.)鍚嶅瓧鏄2涓瓧 + +where PeopleName like'鍒榑' + +4.)鍚嶅瓧涓鍏变笁涓瓧鐨勫憳宸ヤ俊鎭 + +where PeopleName like'__棣' + +5.)寮澶138鐨勫憳宸ヤ俊鎭 + +where PeoplePhone like'138%' + +6.)寮澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 + +where PeoplePhone like'138[7,8]%5' + +7.)寮澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 + +where PeoplePhone like'133[2-5]%[^2-3] + + + +9.闄愬埗闀垮害锛歭en +userName varchar(20) unique not null check(len(userName)>4), + +10.round(num,len,[type]) +鍏朵腑: +num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) + +11.year(getdate()) 鑾峰彇褰撳墠鏃堕棿 + +12.椤哄簭锛 + +鈥 select + +鈥 left jion + +鈥 group by + +鈥 having + +鈥 order by desc/asc + + + +13.锛氳寖寮 + +**绗竴鑼冨紡锛1NF锛夛細** + +![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429144806987-1479266927.png) + + +銆銆鍒1鍞竴纭畾鍒2, 鍒3, 鍒4, ...锛屽嵆鍒2, 鍒3, 鍒4, ...涓嶈兘鍐嶅垎瑁傚嚭鍏跺畠鍒椼 + +銆銆鍋囪鏈夊叧绯绘ā寮忓垪1: 璁㈠崟鍚; 鍒2: 鍟嗗搧銆備竴涓鍗曚笅鍙互鏈夊涓晢鍝侊紝鍗冲垪2: 鍟嗗搧鍙互鍒嗚鎴愬晢鍝丄, 鍟嗗搧B, 鍟嗗搧C, ...锛屾墍浠ュ垪1: 璁㈠崟鍚; 鍒2: 鍟嗗搧杩欐牱鐨勫叧绯绘ā寮忎笉绗﹀悎绗竴鑼冨紡銆 + +# 銆绗簩鑼冨紡锛2NF锛夛細 + +![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429145214099-1241070153.png) + + + + + + + + + + +鈥冣冩弧瓒2NF鐨勫墠鎻愭槸蹇呴』婊¤冻1NF銆 + +銆銆姝ゅ锛屽叧绯绘ā寮忛渶瑕佸寘鍚袱閮ㄥ垎鍐呭銆備竴鏄繀椤绘湁涓涓紙鍙婁互涓婏級涓婚敭锛涗簩鏄病鏈夊寘鍚湪涓婚敭涓殑鍒楀繀椤诲叏閮ㄤ緷璧栦簬鍏ㄩ儴涓婚敭锛岃屼笉鑳藉彧渚濊禆浜庝富閿殑涓閮ㄥ垎鑰屼笉渚濊禆鍏ㄩ儴涓婚敭銆 + +鈥冣冨畾涔夊惉璧锋潵鏈夌偣缁曪紝涓嶆厡锛岀洿鎺ョ湅鍥撅紝鍙湁鍏ㄩ儴鐨勯潪涓婚敭鍒椾緷璧栦簬鍏ㄩ儴涓婚敭锛屾墠婊¤冻绗簩鑼冨紡銆 + +銆銆**绗笁鑼冨紡锛3NF锛夛細** + +![img](https://img2020.cnblogs.com/blog/944376/202104/944376-20210429145526908-1013297767.png) + + + + + + + + +銆銆婊¤冻3NF鐨勫墠鎻愭槸蹇呴』婊¤冻2NF銆 + +銆銆鍙﹀鍏崇郴妯″紡鐨勯潪涓婚敭鍒楀繀椤荤洿鎺ヤ緷璧栦簬涓婚敭锛屼笉鑳藉瓨鍦ㄤ紶閫掍緷璧栥傚嵆涓嶈兘瀛樺湪锛氶潪涓婚敭鍒梞鏃緷璧栦簬鍏ㄩ儴涓婚敭锛屽張渚濊禆浜庨潪涓婚敭鍒梟鐨勬儏鍐点 + +銆銆瀹氫箟鍚捣鏉ヨ繕鏄湁鐐圭粫锛屼笉鎱岋紝鐩存帴鐪嬪浘锛屽彧瑕侀潪涓婚敭鍐呴儴瀛樺湪浼犻掍緷璧栵紝灏变笉婊¤冻绗笁鑼冨紡銆 + +銆銆鍋囪瀛樺湪鍏崇郴妯″紡涓婚敭1: 璇剧▼缂栧彿; 鍒1: 鏁欏笀鍚; 鍒2: 鏁欏笀瀹跺涵鍦板潃銆傛樉鐒舵弧瓒崇涓鑼冨紡鍜岀浜岃寖寮忥紝浣嗘槸鏁欏笀瀹跺涵鍦板潃浼犻掍緷璧栦簬鏁欏笀鍚嶏紝鎵浠ヤ笉婊¤冻绗笁鑼冨紡銆 + + +