关键词触发数据库的内在功能。这些关键词在有时甚至是查询所必需的。例如“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 令函数更有用