唐山网站建设

设为主页 加入收藏 繁體中文

教你轻松掌控常常使用的子句、关键词和函数

核心提示:SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的情势存在。 子句是1种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。

SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的情势存在。 子句是1种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。

关键词触发数据库的内在功能。这些关键词在有时乃至是查询所必须的。例如“INSERT INTO table_name (column1) VALUES (‘data1’);”语句中的INTO和VALUE就是如此。我们将了解DISTINCT关键词,它能触发1些非常有用的可选功能。

下面总结了1些最常常使用的子句、关键词和函数。然后我会对每1部份举例说明。

ORDER BY – 依照指定列排序返回结果的子句

DISTINCT – 只返回结果集合内唯1行的关键词

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_name1列还是依照升序排序的。

SELECT * FROM Sales ORDER BY net_amount DESC,
last_name, first_name;

1 2 3 4 下1页

核心提示:SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的情势存在。 子句是1种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。

在依照定义的列名排序以后,大多数数据库随后将依照数据表内的第1列排序然后顺序向右再排序。具体的实现各有变化,因此,假设排序在利用中比较重要那末你应当明确地定义所要排序的列。

另外1值得留意的题目是,采取ORDER BY子句(和WHERE子句),你正在用来排序结果的数据列其实不1定得是返回结果集合的1部份。只要所有援用的列都在数据表内存在则下例完全有效:

SELECT company, first_name, net_amount FROM Sales
ORDER BY start_date, last_name;
 
DISTINCT返回不重复结果

DISTINCT关键词只返回结果集合内不重复的数据行。例如,有时你可能需要找出Sales表内的公司,但是你又不想看见每个条目。因而你可以用DISTINCT对应每1公司名返回1行数据:

SELECT DISTINCT company FROM Sales;

在使用DISTINCT时,它适用于所有的要求列。假设你打算列出表内的所有销售职员和他们所代表的公司而非每1销售记录,那末你可使用以下语句。留意,这样操纵还可能返回同1公司的若干条目等等。

SELECT DISTINCT company, last_name, first_name FROM Sales;
 
你还可以在对结果缩小范围和进行排序时结合SELECT语句使用DISTINCT。为了肯定显示的内容,数据库首先会证实精练的要求是否是匹配数据行,然后利用DISTINCT功能。在全部结果集合都得以肯定以后即处理ORDER BY子句。以下例所示,只有net_amount大于100的数据行才被返回。由于DISTINCT保存遇见的第1个匹配查询条件的数据行而抛弃其他匹配行,所以ORDER BY语句所援用的net_amount看起来就好象产生了随机的结果。

SELECT DISTINCT company, last_name,
first_name FROM Sales WHERE
net_amount > 100 ORDER BY company,
net_amount;

函数利用逻辑

返回单1值的函数称做聚集函数(aggregate function)。通过利用程序访问以下聚集函数的结果时,包括结果的“字段名”就是你所使用的实际函数。例如,在分析你的数据库结果时,结果数组的键值可能以下所示:

$keyname = “COUNT(*)”;
$resultkey = “AVG(net_amount)”;

COUNT

COUNT函数计算出结果集合中的数据行数。和其他函数1样它接受1个参数。以下的基本示例能告知你数据表内的行数:SELECT COUNT(*) FROM Sales;

你也能够用它来计算任何结果集合中的行数。

SELECT COUNT(*) FROM Sales WHERE net_amount > 100;

假设你想看看某特定列有多少行包括非空值,那你无妨对该列使用COUNT函数。留意,除非数据库设置为字段为空时缺省填充NULL否则将返回表内数据行的总数。另外,列出的列在超出1个的情况下会引发毛病。

SELECT COUNT(company) FROM Sales;

COUNT还可以用来计算DISTINCT结果集合中的行数。

SELECT COUNT(DISTINCT company, last_name) FROM Sales;
 
COUNT语句通常常使用在程序中肯定FOR循环的循环次数。

上1页 1 2 3 4 下1页

核心提示:SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的情势存在。 子句是1种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。

AVG

AVG返回某列所有字段的均匀值,该列必须是数字数据类型。该函数用列的名字作为其参数,假设列字段数据类型是非数字类型的则函数返回“0”。SELECT AVG(net_amount) FROM Sales;

你可以结合子句限制该函数的利用范围。

SELECT AVG(net_amount) FROM Sales WHERE company LIKE ‘獵D Co%’;
 
就象所有聚集函数1样,ORDER BY语句将被忽视。

SUM

SUM的工作方式和AVG差未几,只不过该函数返回结果集合中所有字段值的和。

SELECT SUM(net_amount) FROM Sales WHERE net_amount > 100;
 
AVG、SUM、MIN和MAX函数在没有指定列的情况下都会返回毛病,所以你不能使用“*”通配符。

MIN

MIN返回指定列中最小的非空值。假设指定列是数字数据类型则结果将是最小的数字。假设它是1种字符串数据类型则函数将返回按字母表顺序出现的第1个值。

SELECT MIN(net_amount) FROM Sales
WHERE last_name = “Smith”;
SELECT MIN(last_name) FROM Sales;
 
MAX

MAX的工作方式和MIN函数1样,只不过该函数返回最大的非空值。该函数也能够用于字符串或数字列。

SELECT MAX(net_amount) FROM Sales;
SELECT MAX(company) FROM Sales WHERE net_amount > 100;
 
MAX函数有时还用在包括自动递增键字段的列上肯定下1条目的键ID。除非你正在运行1个非公然的数据库,否则在使用这1信息插进下1条目时务必谨慎,以防其他用户先你履行数据操纵。

GROUP BY 令函数更有用

固然以上提到的所有这些函数都能提供相当有用的信息,但是,假设有GROUP BY子句帮忙的话更能让你在列的字段子集中利用这些函数。不要对你的Sales表中每1家公司1次又1次地履行MAX函数查询——你完全可以带GROUP BY子句取得一样的结果:

SELECT company, MAX(net_amount) FROM Sales GROUP BY company;

这样做可以取得每家公司net_amount的的最大值。在选择多列名的时候也能够采取该语句,你还可以用多列来对函数结果分组。

下面的例子演示了以上各种方式。首先,包括GROUP BY子句可以令你指定要显示的其他列。但是,你得知道这个例子将返回在组中碰到的第1个last_name值;Sum( net_amount )将显示全部公司的结果而不单单针对匹配姓氏的数据行。这是由于,我们只使用了Company字段来定义我们的组。

SELECT company, last_name,
SUM(net_amount) FROM Sales GROUP BY company;
 
在上面的例子中,last_name列实际上并没有提供甚么有用的信息,但这样做是为了在下1个例子中要用到的功能做豫备。你可以创建多列定义的组。这样便可以够在结果集合中产生针对特定行的函数结果,而结果集合则是由所有指定的GROUP BY列联合起来创建的:

SELECT company, AVG(net_amount), last_name FROM Sales GROUP BY company, last_name;

上面的例子给每家公司中每1姓氏给出了均匀的net_amount。你列出GROUP BY列的顺序控制着结果的排序,但是实际的函数值结果是1样的。

上1页 1 2 3 4 下1页

核心提示:SELECT语句具有种类繁多的各类选项,这些选项可以用来控制数据返回的方式。这些选项以子句、关键词和函数的情势存在。 子句是1种修改结果的语句。子句不是必要的语句但它对数据的内容及其显示进行了提炼。WHERE子句就是这样的子句。

下面的例子表明如何组织结果而不显示分组的列。在有些场合这样做是很有用的,例如,假设要显示个人的销售量但却不显示姓名便可以用上下面的例子了:

SELECT company, COUNT(sale_id)
FROM Sales GROUP BY company, last_name;
 
限制使用GROUP BY的查询

如你在以上示例中所看到的那样,你可以结合WHERE字句利用以上的概念限制查询的范围。WHERE子句会首先被计算,然后履行函数。在使用组的时候就是这样的。

SELECT company, AVG(net_amount), FROM Sales WHERE net_amount > 100 GROUP BY company;

上面的例子只对那些满足WHERE限制条件的数据行适用AVG函数。留意,WHERE子句必须放在GROUP BY子句之前。你还可以用HAVING语句对分组计算以后限制返回的结果集合。

SELECT company, AVG(net_amount),
FROM Sales WHERE last_name BETWEEN ‘a’
AND ‘m’ GROUP BY company HAVING
AVG(net_amount) > 500;

上1页 1 2 3 4 唐山网站建设www.fw8.net
TAG:数据,函数,选项,语句,子句
评论加载中...
内容:
评论者: 验证码: