MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

【0】README
0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据” 的基础知识;

【1】创建计算字段
1)problem+solution
1.1)problem:存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换,计算或格式化过的数据;
1.2)solution:这就是计算字段发挥作用所在了, 计算字段是运行时在 select语句内创建的;
2)字段定义:基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段常用在计算字段的连接上;
Attention)建议在数据库服务器上完成对数据的转换和格式化工作,因为相比于客户机,数据库服务器完成这些操作要快得多;

3)拼接字段
3.1)拼接:将值联结到一起构成单个值(使用 concat() 函数来拼接两个列);

3.2)删除数据右侧多余空格来整理数据: 这可以通过RTrim()函数来实现,(不区分大小写,即rtrim()函数),当然也有ltrim() 函数 和 trim() 函数;

4)执行算术能力

Attention)MySQL中的now() 函数,返回当前日期和时间;


【2】使用数据处理函数
1)上一章中的 rtrim() + ltrim() + trim() 就是一个利用函数的荔枝;
Attention)能运行在多个系统上的代码称为可移植性;相对来说,多数SQL语句是可移植的,但函数的移植性却不强,几乎每种DBMS 的实现都支持其他实现不支持的函数;为了代码的可移植性,许多SQL 程序员不赞成使用特殊实现的功能;如果你决定使用函数,应该保证做好代码注释;(干货——不建议在MySQL中使用函数,因为其函数的可移植性不高);
2)文本处理函数


3)日期和时间处理函数

Attention)首先需要注意的是MySQL 使用的日期格式。无论你什么时候指定一个日期,不管是插入还是更新表值还是用where子句进行过滤,日期必须为格式 yyyy-mm-dd, 这是首选的日期格式,因为它排除了多义性(如 04/05/06 是 2006年5月4日还是2006年4月5日或2004年 5月6日呢?)
problem+solution)

problem)如上图所示,对于datetime 类型的 deal_time ,where deal_time='2016-05-10' 检索失败;
solution)指示MySQL 仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期和整个列值进行比较。为此,必须使用Date()函数;

Attention)date() 函数 和 time()函数都是在 MySQL4.1.1引入的;

4)还有一种日期需要比较。如,想要检索出 2005年9月下的所有订单,怎么办?(between ... and ... 语句)


5)数值处理函数


【3】汇总数据
1)聚集函数:如确定表中行数;获得表中行组的和;找出表列的最大值,最小值和平均值;
1.1)聚集函数定义:运行在行组上, 计算和返回单个值的函数;

1.2)avg()函数

Attention)NULL值:avg() 函数忽略列值为null 的行;
1.3)count() 函数 的两种用法
func1)使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值;
func2)使用count(column)对特定列中具有值的进行计数,忽略NULL 值;

1.4)max() 函数 和 min() 函数 + sum()函数

2)聚集不同值:以上5个聚集函数都可以如下使用:
2.1)对所有的行执行计算,指定all 参数或不给参数(因为all 是默认行为);
2.2)只包含不同的值,指定distinct 参数;
看个荔枝)考虑各个不同的price(distinct==不同的)

3)组合聚集函数



【4】分组数据(group by  和 having 子句)
1)数据分组:统计每个供应商提供的产生数量;
2)创建分组:分组是在select 语句中通过 group by 子句创建的;

3)在具体使用 group by 子句前,需要知道一些重要的规定(rules)
r1)group by 子句可以包含任意数目的列,这使得对分组可以嵌套,为数据分组提供更细致的控制(也即 group by column1, column2==先按照column1进行分组,再按照column2进行分组);
r2)如果在group by 子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算;
r3)group by子句中列出的每个列都必须是检索列或有效的表达式。如果在select中使用表达式,则必须在group by子句中指定相同的表达式,不能使用别名;
r4)初开聚集计算语句外,select语句中的每个列都必须在 group by 子句中给出;(干货规定)
r5)如果分组列中具有null 值, 则null 值将作为一个分组返回。 如果列中有多行NULL 值,它们将分为一组;
r6)group by 子句必须出现在 where 子句之后,order by 子句之前;(干货——group by 子句在 where子句和order by 子句的位置)
Attention)使用rollup:使用with rollup 关键字,可以得到每个分组以及每个分组汇总级别(针对每个分组)的值;

4)过滤分组
4.1)过滤分组使用 having子句进行处理;
4.2)where子句和having子句的区别(Difference):
D1)where过滤行,而having 过滤列;
D2)where 在数据分组前进行过滤,而having在数据分组后进行过滤;(干货——这是where 和having一个重要的区别)

Attention)having子句的位置:having子句过滤是基于group by的,它在group by子句的后面 ;
看个荔枝)证明where 在数据分组前进行过滤,而having在数据分组后进行过滤;(干货——这是where 和having一个重要的区别)

5)分组和排序(group by 和 order by)
5.1)group by 和 order by的不同

5.2)不要忘记group by:一般在使用 group by 子句时,应该也给出order by子句。这是保证数据正确排序的唯一方法;

6)select 子句的顺序


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache.camel_Apache Camel 3.2 – Camel的无反射配置

apache.camel在Apache Camel项目中,我们正在努力开发下一个即将发布的Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小,更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel,以使配…

MySQL数据检索+查询+全文本搜索

【0】README0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL数据检索查询全文本搜索” 的基础知识;【1】使用子查询1)查询定义:任何sql 语句都是查询。但此术语一般指 select语句;SQL 还允许…

selenium自动化测试_49自动化测试中最常见的Selenium异常

selenium自动化测试开发人员将始终在编写代码时牢记不同的场景,但是在某些情况下,实现可能无法按预期工作。 相同的原则也适用于测试代码,该代码主要用于测试现有产品的功能,发现bug并确保产品100%不受bug影响。 正确…

MySQL的CRUD操作+使用视图

【0】README0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL数据检索查询全文本搜索” 的基础知识;【1】插入数据1)insert是用来插入(或添加)行到数据库表的。插入可以用以下几种方式使用&a…

mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)

mega x通过超过62个小时的培训来掌握最流行的编程语言,从而树立信誉良好的开发人员职业 嘿,怪胎, 这一周,我们JCG促销专区 ,我们有另一个极端的报价 。我们正在提供一个巨大的96%off的完整2020 Python编程…

tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析

【0】README0.0)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(11)StandardWrapper源码剖析” 的基础知识;0.1)StandardWrapper 是 Catalina中对Wrapper接口的标准实现;要知道,tomcat 中有…

lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换

lambda表达式语法从Java 14开始, switch表达式具有其他Lambda式 ( case ... -> labels )语法,它不仅可以用作语句,还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法,如果标签匹配&#xff0…

装饰器模式(讲解+应用)

转载自 设计模式(5)装饰器模式(讲解应用)目录 装饰器模式为什么使用装饰器模式应用实例 装饰器模式 看到装饰器是在看《Thinking in Java》一书的时候,看到文件读写那边的时候,有提到装饰器模式&#xff0c…

quarkus_使用Quarkus调试容器中的系统测试(视频)

quarkus如果您能够借助容器在本地进行端到端测试应用程序,则可以提高开发效率。 在下面的视频中,我将展示如何使用Quarkus在Docker容器中调试本地系统测试。 这是我关于有效测试的视频课程的Quarkus扩展。 要全面了解,还可以查看以下资源&a…

MySQL事务管理+安全管理+MySQL数据类型

【0】README0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL事务管理安全管理MySQL数据类型” 的基础知识;【1】管理事务处理【1.1】事务处理1)并非所有引擎都支持事务管理,MyISAM 不支持,而…

超音速 启动_从根本上讲超音速亚原子Enterprise Java

超音速 启动我创建了一个视频,其中我用Quarkus解释了“超音速亚原子Java”,这是现代Java应用程序的运行时。 无论您是刚开始涉足Enterprise Java领域,还是已经是一位经验丰富的Java EE / J2EE开发人员,本课程都将指导您如何在2020…

利用java求积分(定积分和无穷限积分)

【0】README0.1)本文部分文字描述转自或译自 https://en.wikipedia.org/wiki/Simpson%27s_rule和 https://en.wikipedia.org/wiki/Numerical_integration#Methods_for_one-dimensional_integrals;旨在利用java求积分;(定积分和无穷…

Java的三种代理模式

转载自 Java的三种代理模式1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的…

后台审核管理 ergo_Kogito,ergo规则:从知识到服务,轻松自如

后台审核管理 ergo欢迎阅读有关Kogito倡议的博客系列的另一集,以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中,我们介绍了两种实现完整智能服务的新方法 : 独立的规则服务 集成智…

java转换文本文件到xlsx(自制缓冲区,无需先验文件行数)

【0】README0.1)本文代码利用了 Apache POI 框架 建立 java 到 xlsx 代码的联系;0.2)本文自制缓冲区从文本文件中读取数据读取,无需先验文件行数;0.3)本文通过缓冲区大小创建数组,数组容量自动增…

spring react_使用Spring WebFlux构建React性REST API –第3部分

spring react在上一篇文章的续篇中,我们将看到一个应用程序以公开React性REST API。 在此应用程序中,我们使用了 带有WebFlux的Spring Boot 具有响应式支持的Cassandra的Spring数据 卡桑德拉数据库 下面是应用程序的高级体系结构。 让我们看一下bui…

tomcat(12)org.apache.catalina.core.StandardContext源码剖析

【0】README0)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(12)StandardContext源码剖析” 的基础知识;1)Context实例表示一个具体的web 应用程序,其中包含一个或多个Wrapper实例,每个Wra…

jms面试题_最新的20多个JMS面试问答(2020)

jms面试题快速浏览JMS(Java消息服务)常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中,我们将了解2020年经常问到的JMS面试问题。作为面试的一部分,如果您有6年以上的经验,就有机会…

tomcat(13)Host和Engine容器

【0】README0.1)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(13)Host和Engine容器” 的基础知识;0.2)Host容器:若你想在同一个tomcat部署 上运行多个Context 容器的话,就需要使用 Host 容…

spring react_使用Spring WebFlux构建React性REST API –第2部分

spring react在上一篇文章的续篇中,我们将看到React式流规范及其实现之一,称为Project Reactor 。 React流规范定义了以下接口。 让我们看看这些接口的细节。 发布者→发布者是潜在数量不受限制的序列元素的提供者,可按其订阅者的要求发布它…