在資料庫的操作中,開發人員或者使用者為了取得資料記錄,需要檢索資料表中的資訊。在SQL語句中,檢索資料記錄是通過SELECT語句來完成的。SELECT語句可以檢索資料表或者視圖中的資料,並將查詢出來的資料以結果集的形式顯示出來。
1.查詢全部列的記錄
在SQL語句中,如果想要檢索資料表中全部列的記錄,就需要對資料表中的所有列進行查詢。在SQL語句中,提供了一種方便查詢資料表或者視圖的所有列的方法,其文法格式如下:
SELECT *FROM 表名或者視圖名[,表名或者視圖]
其中,SELECT語句後面的“*”號表示查詢資料表中的所有列,FROM子句後面的表名或者視圖名用來表示指定要查詢資料表或者視圖的名字。[]裡面指定的表名或者視圖是可選的,也就是說,FROM子句後面可以跟多個表或者視圖的名字,多個表或者視圖之間用逗號分開。
說明:FROM字句後面最多可以指定256個表或者視圖的名稱。
2.查詢表中指定的列
在實際開發應用中,很多時候,開發人員或者使用者並不希望看到資料表中所有的記錄,而只是對資料表中其中某一列或者某幾列的資料感興趣,此時就需要查詢資料表中指定列的資訊。在SELECT語句中查詢資料表或者視圖指定列的文法格式如下:
SELECT 目標列[,目標列,…]FROM 表名或者視圖名[,表名或者視圖]
其中,SELECT語句後面的目標列表示要查詢的指定列的名字。[]裡面指定的目標列式可選的。也就是說,SELECT語句中指定的目標列可以是一列也可以是多個列,指定多個列時,多個列名之間需要用逗號分開。FROM子句後面的表名或者視圖名用來表示指定要查詢資料表或者視圖的名字。[]裡面指定的表名或者視圖是可選的,也就是說,ROM語句後面可以跟多個表或者視圖的名字,多個表或者視圖之間用逗號分開。
3.查詢表中不重複的記錄
在使用SELECT語句執行查詢操作時,檢索的是資料表中所有滿足條件的行,如果資料表中有重複行也會被查詢出來。在實際應用中,往往不希望看到結果中有重複的記錄行存在。為了在查詢結果中不顯示重複的記錄行,在SELECT語句中就需要加上一個DISTINCT關鍵字排除查詢結果中的重複行記錄,格式如下:
SELECT DISTINCT 目標行[,目標行,...]FROM 表名或者視圖名[,表名或者視圖]
4.使用列別名查詢
在前面的SELECT語句顯示的查詢結果中,可以看到查詢結果中顯示的列的名字就是SELECT語句中指定的在資料表中定義的列的名字。這些在資料表的中定義的列的名字一般都是英文。有時,為了更好的理解某一列顯示的資訊,在SELECT語句中可以使用列別名的形式改變查詢結果中顯示的列的名字。其文法格式如下:
SELECT目標列 [AS] 列別名[,目標列 [AS] 列別名…]
FROM 表名或者視圖名[,表名或者視圖]
其中,SELECT語句後面的目標列表示要查詢的指定列的名字。AS關鍵字後面跟的就是要使用的列別名,其中關鍵字AS是可選的。
SELECT stuID AS 學生編號, stuName AS 學生姓名, age AS 年齡, sex AS 性別, birth AS 出生日期FROM T_student
在查詢結果中,欄位標題變成了別名的形式。說明:在SELECT語句中,可以使用一個空格代替關鍵字AS,空格後面再跟上列別名的名稱。
如果列別名中包含空格或特殊字元,例如點號(.)、逗號、分號、冒號等,此時就需要使用單引號或雙引號將別名引起來。
5.對查詢的記錄進行算術運算
SELECT語句中還可以使用算術運算子對指定的列進行算術運算。其中算術運算子包括加(+)、減(-)、乘(×)、除(÷)。其中乘除SELECT語句中的優先順序高於加減運算子的優先順序。通過使用算術運算可以取得所需要列的特定結果。
SELECT teaID AS 教師編號,teaName AS 教師姓名, salary*12 AS 年度營收FROM T_teacher
說明:SELECT語句中進行算術運算,只會改變顯示的查詢結果,並不會改變資料表中查詢的原有值。
6.使用串連符(||)串連欄位
在使用SELECT語句查詢的過程中,有時需要將兩個或者是更多的欄位串連起來顯示一個更有意義的結果。在SELECT語句中,如果需要將多個欄位串連起來,在Oracle資料庫中可以使用“||”串連符來完成。下面來看一個使用“||”串連符的例子。
MYSQL資料庫和Microsoft SQL server資料庫不支援使用"||"串連符串連欄位,如果想要串連多個欄位,在MYSQL中可以使用CONCAT函數;在SQL server中直接使用加號(+)運算子即可。
7.關於NULL值
在資料庫中,如果沒有為該列賦值,而且該列沒有預設值,此時查詢的結果就為空白值,即NULL。NULL既不表示空格,也不表示0。