1. 程式人生 > >簡單的資料檢索

簡單的資料檢索

“取出一張表中所有的資料”是最簡單的資料檢索任務,完成這個最簡單任務的SQL語句也是最簡單的,我們只要執行“SELECT * FROM 表名”即可。比如我們執行下面的SQL語句:


SELECT * FROM T_Employee

執行完畢我們就能在輸出結果中看到下面的執行結果:

執行結果中列出了表中的所有行,而且包含了表中每一列的資料。

上面的SQL 語句執行的結果中包含了表中每一列的資料,有的時候並不需要所有列的資料。比如我們只需要檢索所有員工的工號,如果我們採用“SELECT* FROM T_Employee”進行檢索的話,資料庫系統會將所有列的資料從資料庫中取出來,然後通過網路傳送給我們,這不僅會佔用不必要的CPU 資源和記憶體資源,而且會佔用一定的網路頻寬,這在我們這種測試模式下不會有影響,但是如果是在真實的生產環境中的話就會大大降低系統的吞吐量,因此最好在檢索的之後只檢索需要的列。那麼如何只檢索出需要的列呢?

檢索出所有的列的SQL 語句為“SELECT FROM T_Employee”,其中的星號“”就意味著“所有列”,那麼我們只要將星號“*”替換成我們要檢索的列名就可以了。比如我

們執行下面的SQL語句:


SELECT FNumber FROM T_Employee

這就表示我們要檢索出表T_Employee 中的所有資料,並且只取出FNumber 列。執行完畢我們就能在輸出結果中看到下面的執行結果:


FNumber

DEV001

DEV002

HR001

HR002

IT001

SALES001

SALES002

SALES003

可以看到只有FNumber 列中的資料被檢索出來了。

上面的SQL 語句列出了FNumber 列中的資料,那麼如果想列出不止一個列中的資料呢?非常簡單,只要在SELECT 語句後列出各個列的列名就可以了,需要注意的就是各個列之間要用半形的逗號“,”分隔開。比如我們執行下面的SQL語句:


SELECT FName,FAge FROM T_Employee

這就表示我們要檢索出表T_Employee 中的所有資料,並且只取出FName和FAge兩列的內容。執行完畢我們就能在輸出結果中看到下面的執行結果。

可以看到,執行結果中列出了所有員工的姓名和他們的年齡。

如果要用這種顯式指定資料列的方式取出所有列,我們就可以編寫下面的SQL:

SELECT FNumber,FName,FAge,FSalary FROM T_Employee

執行完畢我們就能在輸出結果中看到下面的執行結果。

這和“SELECT FROM T_Employee”的執行結果是一致的,也就是說“SELECT FNumber,FName,FAge,FSalary FROM T_Employee”和“SELECT FROM T_Employee”是等價的。

  • 列別名

由於編碼命名規範、程式設計框架要求等的限制,資料表的列名有的時候意思並不是非常易讀,比如T_Employee中的姓名欄位名稱為FName,而如果我們能用Name甚至“姓名”來代表這個欄位就更清晰易懂了,可是欄位名已經不能更改了,那麼難道就不能用別的名字來使用已有欄位了嗎?

當然不是!就像可以為每個人取一個外號一樣,我們可以為欄位取一個別名,這樣就可以使用這個別名來引用這個列了。別名的定義格式為“列名AS 別名”,比如我們要為FNumber欄位取別名為Number16,FName欄位取別名為Name、FAge 欄位取別名為Age、為FSalary

欄位取別名為Salary,那麼編寫下面的SQL即可:


SELECT FNumber AS Number1,FName AS Name,FAge AS Age,FSalary AS Salary FROM T_Employee 

執行完畢我們就能在輸出結果中看到下面的執行結果:

這裡的執行結果和“SELECT FNumber,FName,FAge,FSalary FROM T_Employee”

執行結果一樣,唯一不同的地方就是表頭中的列名,這裡的表頭的列名就是我們為各列設定的別名。

定義別名的時候“AS”不是必須的,是可以省略的,比如下面的SQL也是正確的:


SELECT FNumber Number1,FName Name,FAge Age,FSalary Salary FROM T_Employee

如果資料庫系統支援中文列名,那麼還可以用中文來為列設定別名,這樣可讀性就更好了,比如在MSSQLServer中文版上執行下面的SQL:


SELECT FNumber 工號,FName 姓名,FAge 年齡,FSalary 工資FROM T_Employee

執行完畢我們就能在輸出結果中看到下面的執行結果: