T-SQL:從 SELECT 開始

T-SQL 包含兩個主要的部份,標準的 SQL 陳述式以及擴充的 SQL Server 專屬語法元素,標準的 SQL 陳述式是整個 T-SQL 的核心,這個部份通用於各種不同廠商所推出的資料庫系統,因此,學習T-SQL第一步,建議從這個部份下去著手,比較不會混淆。

SQL陳述式是由各種SQL運算子關鍵字所組成,開始學習標準的SQL陳述式,第一個要認識的便是SELECT與FROM這兩個個關鍵字,它們用來取得某個資料表的內容,語法如下:

SELECT fieldlist FROM tableName

這段語法的意思是說,從名稱為tableName的資料表中,取出fieldlist欄位的內容。

這僅是最簡單的語法,SELECT可以搭配其他的運算子關鍵字達到非常複雜的資料存取功能,例如WHERE、GROUP BY、HAVING以及ORDER BY等等,不過,在你繼續認識這些運算子之前,還必須瞭解上述語法中,fieldlist的一些相關議題。

一個資料表會包含一個或一個以上的資料,fieldlist指定所要取得的欄位,例如以下的SQL敘述:

SELECT Name FROM Product

其中的語法代表從Product資料表中,將Name欄位的資料取回。如果要取得一個以上的欄位資料,則將資料名稱以逗點「,」隔開即可,例如:

SELECT Name, ProductName FROM Product

如果,你想要一次取回所有的資料欄位內容,則以下的語法可以滿足你的需求:

SELECT * FROM Product

直接使用「*」表示所有的欄位是一種很糟糕的寫法,應該盡量避免,這種語法傳回所有欄位,當然也包含了不必要的欄位,就算你需要所有的欄位,也建議明確的列出欄位名稱,主要的原因有兩個:

1.欄位的順序:如果以「*」取得資料,則回傳的欄位是以資料庫原始的欄位順序回傳,將來如果改變了順序,透過索引存取的欄位資料就會出問題。

2.欄位變更與擴充:未來如果刪改資料表本身的欄位,則可能導至原來的語法取得錯誤的資料內容。

基於上述的理,也為了自己好,「*」這個東西就放在心裏就好,當然,如果只是想測測資料的回傳,用用也無妨,畢竟很方便。

沒有留言: