關鍵詞觸發數據庫的內在功能。這些關鍵詞在有時甚至是查詢所必需的。例如“INSERT INTO table_name (column1) VALUES (‘data1’);”語句中的INTO和VALUE就是如此。我們將了解DISTINCT關鍵詞,它能觸發一些非常有用的可選功能。
下面總結了一些最常用的子句、關鍵詞和函數。然后我會對每一部分舉例說明。
ORDER BY – 按照指定列排序返回結果的子句 DISTINCT – 只返回結果集合內唯一行的關鍵詞 COUNT -- 返回匹配查詢的數據行總數數值的函數 AVG – 該函數返回指定列的平均值 SUM –該函數把指定的列中的數字加起來 MIN – 該函數返回列中最小的非NULL值 MAX –該函數返回列中的最大值 GROUP BY – 按列匯集查詢函數結果的子句 用ORDER BY對查詢結果排序 ORDER BY子句讓數據庫對查詢結果排序,這樣你就無須自己編寫應用程序進行“手工”排序了。ORDER BY子句必須放在查詢語句的結尾。其基本用法如下:
SELECT * FROM Contacts ORDER BY first_name;
你可以隨意在任何選擇語句中使用ORDER BY 子句返回多列結果。你還可以用它連接其他子句: SELECT first_name, last_name FROM Contacts WHERE first_name BETWEEN ‘a’ AND ‘k’ ORDER BY last_name;
你可以對多列數據排序。優先順序按從左到右依次降低,所以查詢語句中各列的排列順序很重要。 SELECT * FROM Contacts ORDER BY company, last_name, first_name;
查詢結果默認按數字或者字母的升序排序。你可以在ORDER BY 子句后面加上DESC關鍵詞改成降序排列。在下面的例子中,最高的net_amount排在最先(降序)。假如兩行或者兩行以上數據都包含了同樣的net_amount值,那么同行中last_name值在字母表中最先出現的排先,因為last_name一列還是按照升序排序的。 SELECT * FROM Sales ORDER BY net_amount DESC, last_name, first_name;
COUNT還可以用來計算DISTINCT結果集合中的行數。 SELECT COUNT(DISTINCT company, last_name) FROM Sales;
COUNT語句通常用在程序中確定FOR循環的循環次數。
AVG AVG返回某列所有字段的平均值,該列必須是數字數據類型。該函數用列的名字作為其參數,如果列字段數據類型是非數字類型的則函數返回“0”。SELECT AVG(net_amount) FROM Sales;
你可以結合子句限制該函數的應用范圍。
SELECT AVG(net_amount) FROM Sales WHERE company LIKE ‘%ABCD Co%’;
就象所有聚集函數一樣,ORDER BY語句將被忽略。
SUM
SUM的工作方式和AVG差不多,只不過該函數返回結果集合中所有字段值的和。 SELECT SUM(net_amount) FROM Sales WHERE net_amount > 100;
AVG、SUM、MIN和MAX函數在沒有指定列的情況下都會返回錯誤,所以你不能使用“*”通配符。
MIN MIN返回指定列中最小的非空值。如果指定列是數字數據類型則結果將是最小的數字。如果它是一種字符串數據類型則函數將返回按字母表順序出現的第1個值。SELECT MIN(net_amount) FROM Sales WHERE last_name = “Smith”; SELECT MIN(last_name) FROM Sales;
MAX
MAX的工作方式和MIN函數一樣,只不過該函數返回最大的非空值。該函數也可以用于字符串或者數字列 SELECT MAX(net_amount) FROM Sales; SELECT MAX(company) FROM Sales WHERE net_amount > 100;
MAX函數有時還用在包含自動遞增鍵字段的列上確定下一條目的鍵ID。除非你正在運行一個非公開的數據庫,否則在使用這一信息插入下一條目時務必謹慎,以防其他用戶先你執行數據操作。 GROUP BY 令函數更有用