mysql 字段处理函数_MySQL创建字段+数据处理函数+集锦数据(聚集函数)+分组数据_mysql...

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() 函数来拼接两个列);

888e2b7f892ab64396402d423b9d103c.png

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

10

10

4)执行算术能力

f77a8d93cb9faf160da04bfb4df74937.png

10

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

f67140da5ec661081d408f7552afeb53.png

10

【2】使用数据处理函数

1)上一章中的 rtrim() + ltrim() + trim() 就是一个利用函数的荔枝;

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

2)文本处理函数

633f75c76e64d5d11b5fd7c06b0a4dce.png

f3f1cd1cded760d71414d56287f70c6b.png

10

3)日期和时间处理函数10

f0247bd756d1212259cf965e8465b276.png

10

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

problem+solution)

91abf994d0806276b223d7bf42e8bfb8.png

10

problem)如上图所示,对于datetime 类型的 deal_time ,where deal_time='2016-05-10' 检索失败;

solution)指示MySQL 仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期和整个列值进行比较。为此,必须使用Date()函数;

b71359228e07203b1e0a50732614c627.png

10

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

4123f8ecdee1f0e9751800cf09c5d7ed.png

10

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

05eab629dffb7e9245e3f8045de12446.png

cc1cdebb34a1c983081f4913ce7ac5aa.png

10

10

5)数值处理函数

0325089946598214d724f85ce2f0c909.png

10

【3】汇总数据

1)聚集函数:如确定表中行数;获得表中行组的和;找出表列的最大值,最小值和平均值;

1.1)聚集函数定义:运行在行组上, 计算和返回单个值的函数;

4787c8d6349f692cb770f49cf19ebc9a.png

10

1.2)avg()函数10

119dafce1212fe412a745d1c3ce58825.png

10

Attention)NULL值:avg() 函数忽略列值为null 的行;

1.3)count() 函数 的两种用法

func1)使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值;

func2)使用count(column)对特定列中具有值的进行计数,忽略NULL 值;

c60e2b4411f92d5e46ebec86f1bab0fa.png

10

10

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

cea800403f813036a2d78227aadab283.png

10

2)聚集不同值:以上5个聚集函数都可以如下使用:

2.1)对所有的行执行计算,指定all 参数或不给参数(因为all 是默认行为);

2.2)只包含不同的值,指定distinct 参数;

看个荔枝)考虑各个不同的price(distinct==不同的)

1e7f4faa90cad0fc401436cb8fe6f9e4.png

3)组合聚集函数10

fce43ee6a52be6d2412de75222b58c66.png

10

【4】分组数据(group by  和 having 子句)

1)数据分组:统计每个供应商提供的产生数量;

2)创建分组:分组是在select 语句中通过 group by 子句创建的;

32e024e7a0758dfd6cc517d9ef553b29.png

10

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 关键字,可以得到每个分组以及每个分组汇总级别(针对每个分组)的值;

10

4)过滤分组

4.1)过滤分组使用 having子句进行处理;

4.2)where子句和having子句的区别(Difference):

D1)where过滤行,而having 过滤列;

D2)where 在数据分组前进行过滤,而having在数据分组后进行过滤;(干货——这是where 和having一个重要的区别)

72ecd69006936ab21890adb281889b1b.png

10

Attention)having子句的位置:having子句过滤是基于group by的,它在group by子句的后面 ;

看个荔枝)证明where 在数据分组前进行过滤,而having在数据分组后进行过滤;(干货——这是where 和having一个重要的区别)

495a197b5cb2ef8f9c149d36870a4337.png

10

5)分组和排序(group by 和 order by)

5.1)group by 和 order by的不同

b237a6036eb6fb3298f125132f915767.png

10

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

6cde1f4e56971d0bacbecb82f8511170.png

106)select 子句的顺序

ee1131f0d88a4fe5651fe271156cbb63.png

984b2e1ac0b9822f0ebbaf1cd426c6da.png

10

10

欢迎大家阅读《MySQL创建字段+数据处理函数+集锦数据(聚集函数)+分组数据_mysql》,跪求各位点评,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值