原文:
幾個sql小知識
寫在前面的話:之前做的乙個專案,資料庫及系統整體構架設計完成之後,和弟兄們經過一段時間的編碼,系統如期上線,剛開始執行一切良好,後來隨著資料量的急劇膨脹,慢慢出現了很多莫名其妙的問題,經過除錯,修改了資料庫中幾個儲存過程的一些問題。有意思的是,有乙個儲存過程裡,為了實現乙個小的功能,寫了好多好多的**,又是游標又是迴圈的,其實用系統的乙個預設函式就能解決掉。這裡想說的是,學習工作之餘,在沒有要解決問題的壓力之下,還是建議系統的看看書,對於一些認為沒啥用的知識點,也建議去仔細的看看,練練手,說不定什麼時候就用到了,到時也好有針對性的去查,不至於盲目的按照自己的思路,重複的創造一些低效的解決方法。
*****=正文開始**********=
1.的使用
當我們所要查的表是系統關鍵字或者表名中含有空格時,需要用括起來,例如新建了兩個表,分別為user,user info,那麼select * from user和select * from user info就要報錯,需要寫成:select * from [user] 和 select * from [user info],不過千萬不要因為有的幫助,就隨意起名了,那是自找麻煩,不過我確實看到有人把使用者表起名為user的。
2.nullif函式
nullif(expression1,expression2):給定兩個引數expression1和expression2,如果兩個引數相等,則返回null;否則就返回第乙個引數。
等價於:case when expression1=expression2 then null else expression1。
例如select nullif(1,1)返回null,select nullif(1,2)返回1。
有乙個實際的應用,例如防止除0操作的放生,可以使用a/nullif(b,0),這樣就不怕b是0了,當然除0操作也可以通過別的方式判斷。
3.null
null是個神奇的東西,表示空值,未知值,任何數與它加減乘除都返回null。
4.isnull函式
isnull(expression1,expression2):給定兩個引數expression1和expression2,如果expression1是null,那麼返回expression2,否則返回expression1。
等價於:case when expression1 is null then expression2 else expression1。
例如select isnull(null,1)返回1,select isnull(1,2)返回1。
有乙個實際的應用,可以對空值進行預設值替代,例如select isnull(email,'沒有填寫email') from table1,所有email為null的,用'沒有填寫email'來替代。
5.coalesce函式
coalesce(expression1,expression2,expression3,......):接受一系列的表示式或列,返回第乙個非空的值。
例如select coalesce(null,null,4,null,null,5),那麼返回4,如果裡面的引數都為null,那麼會報錯。
6.with ties
與top()和order by 一起用,可以返回多於top的行。防止丟失想要的資訊。
例如:有個表table1
(1)select * from table1 order by name desc :結果如下:
(2)select top(3) * from table1 order by name desc:結果如下:(只有三條)
(3)select top(3) with ties * from table1 order by name desc:結果如下:
7.order by newid():返回隨機排序結果。
8.between a and b:返回大於等於a,小於等於b的結果。如果a>b,那麼返回null。
9.不要在where條件中使用函式,會強制每一行都計算該函式,無法使用索引查詢。
例如:select * from table1 where id+3>5和select * from table1 where id>5-3,後者效率比前者高。
10.許多以_desc結尾的列,是為了更友好的表示乙個列的含義。
例如:select * from sys.databases
11.推薦乙個小外掛程式,sql prompt,配合microsoft sql server management studio,使用起來非常方便,同時再加上以下幾個快捷鍵:
(1)ctrl+5或f5,執行**,如果想執行特定的語句,那麼只是選中該語句,然後f5或ctrl+e即可。
(2)ctrl+l:顯示執行計畫。
(3)ctrl+r:顯示隱藏下面的結果視窗,增大自己書寫sql的空間。
(4)ctrl+k,然後按y,格式化sql**。
推薦幾個SQL小知識
寫在前面的話 之前做的乙個專案,資料庫及系統整體構架設計完成之後,和弟兄們經過一段時間的編碼,系統如期上線,剛開始執行一切良好,後來隨著資料量的急劇膨脹,慢慢出現了很多莫名其妙的問題,經過除錯,修改了資料庫中幾個儲存過程的一些問題。有意思的是,有乙個儲存過程裡,為了實現乙個小的功能,寫了好多好多的 ...
sql小知識筆記
1.浮點型常用numeric,用法 numeric m,n m代表連上小數字總共有多少位 即這個浮點數的總位數 n代表小數點後的位數。如果省略n寫成numeric m 可以表示整數。float也有一種用法,float n 其中n是浮點數的精度。2.isnull 列名,整數n 函式,他的作用是當該列為...
中國護照的幾個小知識
護照號碼英文縮寫代號和長度 電子護照包括2011版外交電子護照 2011版公務電子護照 2011版公務普通電子護照和2012版普通電子護照。現行有效傳統護照包括2002版外交護照 2005版公務護照 2007版公務普通護照和1997版普通護照。電子護照和傳統護照的證件號碼長度均為9個字元。對於電子護...