【公告】網站目前停止所有的課程訂閱服務,除了 7 月底預計完成上線的 KBF 餘下課程影片,將不會再新增其它課程內容,原有學員權益不受影響,造成不便還請見諒,我們正在開發以 Python 為主的課程主題,未來將會合併且擴充目前的課程內容,提供更好的課程訂閱服務,感謝學員的支持。

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

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

沒有留言: