實用經典的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代碼。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章