知识大全 SELECT语句选项
Posted 函数
篇首语:勤勉而顽强地钻研,永远可以使你百尺竿头更进一步。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SELECT语句选项相关的知识,希望对你有一定的参考价值。
跟我学SQL:SELECT语句选项 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
用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 BEEEN a AND k ORDER BY last_name; 你可以对多列数据排序 优先顺序按从左到右依次降低 所以查询语句中各列的排列顺序很重要 SELECT * FROM Contacts ORDER BY pany 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; 在按照定义的列名排序以后 大多数数据库随后将按照数据表内的第一列排序然后顺序向右再排序 具体的实现各有变化 因此 如果排序在应用中比较重要那么你应该明确地定义所要排序的列 另外一值得注意的问题是 采用ORDER BY子句(以及WHERE子句) 你正在用来排序结果的数据列并不一定得是返回结果集合的一部分 只要所有引用的列都在数据表内存在则下例完全有效 SELECT pany first_name net_amount FROM Sales ORDER BY start_date last_name; DISTINCT返回不重复结果 DISTINCT关键词只返回结果集合内不重复的数据行 例如 有时你可能需要找出Sales表内的公司 但是你又不想看见每个条目 于是你可以用DISTINCT对应每一公司名返回一行数据 SELECT DISTINCT pany FROM Sales; 在使用DISTINCT时 它适用于所有的请求列 如果你打算列出表内的所有销售人员和他们所代表的公司而非每一销售记录 那么你可以使用下列语句 注意 这样操作还可能返回同一公司的若干条目等等 SELECT DISTINCT pany last_name first_name FROM Sales; 你还可以在对结果缩小范围和进行排序时结合SELECT语句使用DISTINCT 为了确定显示的内容 数据库首先会证实精练的请求是否匹配数据行 然后应用DISTINCT功能 在全部结果集合都得以确定之后即处理ORDER BY子句 如下例所示 只有net_amount大于 的数据行才被返回 由于DISTINCT保留遇见的第 个匹配查询条件的数据行而丢弃其他匹配行 所以ORDER BY语句所引用的net_amount看起来就好象产生了随机的结果 SELECT DISTINCT pany last_name first_name FROM Sales WHERE net_amount > ORDER BY pany net_amount; 函数应用逻辑 返回单一值的函数称做聚集函数(aggregate function) 通过应用程序访问下列聚集函数的结果时 包含结果的 字段名 就是你所使用的实际函数 例如 在分析你的数据库结果时 结果数组的键值可能如下所示 $keyname = COUNT(*) ; $resultkey = AVG(net_amount) ; COUNT COUNT函数计算出结果集合中的数据行数 和其他函数一样它接受一个参数 以下的基本示例能告诉你数据表内的行数 SELECT COUNT(*) FROM Sales; 你也可以用它来计算任何结果集合中的行数 SELECT COUNT(*) FROM Sales WHERE net_amount > ; 如果你想看看某特定列有多少行包含非空值 那你不妨对该列使用COUNT函数 注意 除非数据库设置为字段为空时缺省填充NULL否则将返回表内数据行的总数 另外 列出的列在超出一个的情况下会引起错误 SELECT COUNT(pany) FROM Sales; COUNT还可以用来计算DISTINCT结果集合中的行数 SELECT COUNT(DISTINCT pany last_name) FROM Sales; COUNT语句通常用在程序中确定FOR循环的循环次数 AVG AVG返回某列所有字段的平均值 该列必须是数字数据类型 该函数用列的名字作为其参数 如果列字段数据类型是非数字类型的则函数返回 SELECT AVG(net_amount) FROM Sales; 你可以结合子句限制该函数的应用范围 SELECT AVG(net_amount) FROM Sales WHERE pany LIKE %ABCD Co% ; 就象所有聚集函数一样 ORDER BY语句将被忽略 SUM SUM的工作方式和AVG差不多 只不过该函数返回结果集合中所有字段值的和 SELECT SUM(net_amount) FROM Sales WHERE net_amount > ; AVG SUM MIN和MAX函数在没有指定列的情况下都会返回错误 所以你不能使用 * 通配符 MIN MIN返回指定列中最小的非空值 如果指定列是数字数据类型则结果将是最小的数字 如果它是一种字符串数据类型则函数将返回按字母表顺序出现的第 个值 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(pany) FROM Sales WHERE net_amount > ; MAX函数有时还用在包含自动递增键字段的列上确定下一条目的键ID 除非你正在运行一个非公开的数据库 否则在使用这一信息插入下一条目时务必谨慎 以防其他用户先你执行数据操作 GROUP BY 令函数更有用 虽然以上提到的所有这些函数都能提供相当有用的信息 但是 如果有GROUP BY子句帮忙的话更能让你在列的字段子集中应用这些函数 不要对你的Sales表中每一家公司一次又一次地执行MAX函数查询——你完全可以带GROUP BY子句获得同样的结果 SELECT pany MAX(net_amount) FROM Sales GROUP BY pany; 这样做可以获得每家公司net_amount的的最大值 在选择多列名的时候也可以采用该语句 你还可以用多列来对函数结果分组 下面的例子演示了以上各种方式 首先 包括GROUP BY子句可以令你指定要显示的其他列 然而 你得知道这个例子将返回在组中遇到的第 个last_name值 Sum( net_amount )将显示全部公司的结果而不仅仅针对匹配姓氏的数据行 这是因为 我们只使用了Company字段来定义我们的组 SELECT pany last_name SUM(net_amount) FROM Sales GROUP BY pany; 在上面的例子中 last_name列实际上并没有提供什么有用的信息 但这样做是为了在下一个例子中要用到的功能做准备 你可以创建多列定义的组 这样就可以在结果集合中产生针对特定行的函数结果 而结果集合则是由所有指定的GROUP BY列联合起来创建的 SELECT pany AVG(net_amount) last_name FROM Sales GROUP BY pany last_name; 上面的例子给每家公司中每一姓氏给出了平均的net_amount 你列出GROUP BY列的顺序控制着结果的排序 但是实际的函数值结果是一样的 下面的例子表明如何组织结果而不显示分组的列 在有些场合这样做是很有用的 例如 如果要显示个人的销售量但却不显示姓名就能用上下面的例子了 SELECT pany COUNT(sale_id) FROM Sales GROUP BY pany last_name; 限制使用GROUP BY的查询 如你在以上示例中所看到的那样 你可以结合WHERE字句利用以上的概念限制查询的范围 WHERE子句会首先被计算 然后执行函数 在使用组的时候就是这样的 SELECT pany AVG(net_amount) FROM Sales WHERE net_amount > GROUP BY pany; 上面的例子只对那些满足WHERE限制条件的数据行适用AVG函数 注意 WHERE子句必须放在GROUP BY子句之前 你还可以用HAVING语句对分组计算之后限制返回的结果集合 SELECT pany AVG(net_amount) FROM Sales WHERE last_name BEEEN a AND m GROUP BY pany HAVING AVG(net_amount) > ; 上面的语句计算每家公司net_amount的平均值 而且只计算那些姓氏满足限制条件的销售人员的销售量 同时只显示大于 的结果 cha138/Article/program/SQLServer/201311/21992相关参考
SQL实战新手入门:获取数据-SELECT语句(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL实战新手入门:获取数据-SELECT语句(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL实战新手入门:获取数据-SELECT语句(4) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
查询语句(SELECT)的优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这篇文章是基于In
DB2SELECT语句高级用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1、创建结果表crea
通过SELECT语句实现两个记录集的比较 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前言
快速掌握MySQL数据库中SELECT语句[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
快速掌握MySQL数据库中SELECT语句[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 从一条select语句看Oracle数据库查询工作原理
从一条select语句看Oracle数据库查询工作原理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 SQL多表链接查询、嵌入SELECT语句的子查询技术
SQL多表链接查询、嵌入SELECT语句的子查询技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!