亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

幾個(gè)SQL小知識(shí)

系統(tǒng) 1644 0
原文: 幾個(gè)SQL小知識(shí)

寫在前面的話:之前做的一個(gè)項(xiàng)目,數(shù)據(jù)庫(kù)及系統(tǒng)整體構(gòu)架設(shè)計(jì)完成之后,和弟兄們經(jīng)過(guò)一段時(shí)間的編碼,系統(tǒng)如期上線,剛開始運(yùn)行一切良好,后來(lái)隨著數(shù)據(jù)量的急劇膨脹,慢慢出現(xiàn)了很多莫名其妙的問(wèn)題,經(jīng)過(guò)調(diào)試,修改了數(shù)據(jù)庫(kù)中幾個(gè)存儲(chǔ)過(guò)程的一些問(wèn)題。有意思的是,有一個(gè)存儲(chǔ)過(guò)程里,為了實(shí)現(xiàn)一個(gè)小的功能,寫了好多好多的代碼,又是游標(biāo)又是循環(huán)的,其實(shí)用系統(tǒng)的一個(gè)默認(rèn)函數(shù)就能解決掉。這里想說(shuō)的是,學(xué)習(xí)工作之余,在沒(méi)有要解決問(wèn)題的壓力之下,還是建議 系統(tǒng)的看看書 ,對(duì)于一些認(rèn)為沒(méi)啥用的知識(shí)點(diǎn),也建議去仔細(xì)的看看,練練手,說(shuō)不定什么時(shí)候就用到了,到時(shí)也好有針對(duì)性的去查,不至于盲目的按照自己的思路,重復(fù)的創(chuàng)造一些低效的解決方法。

======正文開始===========

1.[]的使用

  當(dāng)我們所要查的表是系統(tǒng)關(guān)鍵字或者表名中含有空格時(shí),需要用[]括起來(lái),例如新建了兩個(gè)表,分別為user,user info,那么select * from user和select * from user info就要報(bào)錯(cuò),需要寫成:select * from [user] 和 select * from [user info], 不過(guò)千萬(wàn)不要因?yàn)橛衃]的幫助,就隨意起名了,那是自找麻煩,不過(guò)我確實(shí)看到有人把用戶表起名為user的。

2.NULLIF函數(shù)

  NULLIF(Expression1,Expression2):給定兩個(gè)參數(shù)Expression1和Expression2,如果兩個(gè)參數(shù)相等,則返回NULL;否則就返回第一個(gè)參數(shù)。

  等價(jià)于:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。

  例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。

  有一個(gè)實(shí)際的應(yīng)用,例如防止除0操作的放生,可以使用a/NULLIF(b,0),這樣就不怕b是0了,當(dāng)然除0操作也可以通過(guò)別的方式判斷。

3.NULL

  NULL是個(gè)神奇的東西,表示空值,未知值,任何數(shù)與它加減乘除都返回NULL。

4.ISNULL函數(shù)

  ISNULL(Expression1,Expression2):給定兩個(gè)參數(shù)Expression1和Expression2,如果Expression1是NULL,那么返回Expression2,否則返回Expression1。

  等價(jià)于:Case WHEN Expression1 is NULL Then Expression2 ELSE Expression1。

  例如Select ISNULL(NULL,1)返回1,Select ISNULL(1,2)返回1。

  有一個(gè)實(shí)際的應(yīng)用,可以對(duì)空值進(jìn)行默認(rèn)值替代,例如SELECT ISNULL(email,'沒(méi)有填寫email') from table1,所有email為null的,用'沒(méi)有填寫email'來(lái)替代。

?5.COALESCE函數(shù)

  COALESCE(Expression1,Expression2,Expression3,......):接受一系列的表達(dá)式或列,返回第一個(gè)非空的值。

? ? ? 例如SELECT COALESCE(NULL,NULL,4,NULL,NULL,5),那么返回4,如果里面的參數(shù)都為NULL,那么會(huì)報(bào)錯(cuò)。

6.WITH TIES

  與top()和order by 一起用,可以返回多于top的行。防止丟失想要的信息。

  例如:有個(gè)表table1

(1)select * from table1 order by name desc :結(jié)果如下:

幾個(gè)SQL小知識(shí)

(2)select top(3) * from table1 order by name desc:結(jié)果如下:(只有三條)

幾個(gè)SQL小知識(shí)

(3)select top(3) with ties * from table1 order by name desc:結(jié)果如下:

幾個(gè)SQL小知識(shí)

7.ORDER BY NEWID():返回隨機(jī)排序結(jié)果。

8.BETWEEN a AND b:返回 大于等于 a, 小于等于 b的結(jié)果。如果a>b,那么返回NULL。

9.不要在where條件中使用函數(shù),會(huì)強(qiáng)制每一行都計(jì)算該函數(shù),無(wú)法使用索引查找。

  例如:select * from table1 where id+3>5和select * from table1 where id>5-3,后者效率比前者高。

10.許多以_desc結(jié)尾的列,是為了更友好的表示一個(gè)列的含義。

  例如:SELECT * FROM sys.databases

幾個(gè)SQL小知識(shí)

11.推薦一個(gè)小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起來(lái)非常方便,同時(shí)再加上以下幾個(gè)快捷鍵:

  (1)ctrl+5或F5,運(yùn)行代碼,如果想運(yùn)行特定的語(yǔ)句,那么只是選中該語(yǔ)句,然后F5或ctrl+E即可。

  (2)ctrl+L:顯示執(zhí)行計(jì)劃。

  (3)ctrl+R:顯示隱藏下面的結(jié)果窗口,增大自己書寫sql的空間。

  (4)ctrl+K,然后按Y,格式化SQL代碼。

?

幾個(gè)SQL小知識(shí)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品玖玖玖在线观看 | 欧美激情在线精品一区二区 | 中文字幕在线播 | 欧美日本视频在线观看 | 日韩欧美一区二区三区久久 | 殴美毛片 | 欧美中文字幕一二三四区 | 日韩欧美亚洲国产一区二区三区 | 色第一页 | 农村寡妇一级毛片免费看视频 | 日本一级片网站 | 欧美精品专区免费观看 | 美女一级毛片免费不卡视频 | 久久精品99久久香蕉国产色戒 | 狠狠艹 | 黄wwwwww | 91一级片| 久久99一区 | 色综合精品 | av在线色 | 亚洲成人看片 | 国产麻豆高清视频在线第一页 | 夜夜爱夜夜爽夜夜做夜夜欢 | 国产又黄又a又潮娇喘视频 国产又色又爽又黄又刺激18 | 久久国产精品成人免费 | 欧美jizz40性欧美 | 午夜国产精品久久影院 | 色视频在线免费观看 | 久久国产精品只做精品 | 91在线手机精品免费观看 | 国产精品亚洲欧美 | 国产成人综合久久综合 | 精品亚洲成a人在线播放 | 欧美一级久久久久久久久大 | www成人网| 久久久久久中文字幕 | 欧美一二区 | 国内精品伊人久久久影院 | 天天操操操 | 国产欧美在线播放 | 久久精品五月天 |