MySQL基本知识 -- 进阶(常用的函数)

Tags: MySQL MySQL进阶


1.计算字段

1.概念
如果客户端想要的数据格式不是数据库直接在表中存储的数据格式的话,有两种处理方式。第一种为拿到数据库表中的原始数据,客户端再对其进行处理格式化第二种就是把数据的格式化放在数据库中实现。显然出于降低数据库与客户端之间链接的资源消耗,提高客户端响应其他类型请求的性能,提高创建应用的可伸缩性并且数据库服务器完成相同操作更高效等原因,将数据处理部分放在数据库中更合理。此时经数据库新计算出来的结果便是计算字段。计算字段并不实际存在于表中。

2.创建计算字段

  • 拼接字段

    将两个列的值联结在一起,在MySQL中可以使用Concat()函数来拼接。
SELECT Concat(columnName1, '(', columnName2) AS tableName3 FROM tableName;

Concat()把多个串拼接成一个较长的串。其参数需要一个或多个指定的串,各个串之间用逗号分开.

As将拼接出来的字段起别名叫做tableName

  • 执行算数计算
SELECT columnName1 * columnName2 AS columnName FROM tableName;

在MySQL检索的时候进行算数计算(+,-,*,/)

注意:
SELECT 提供了测试和实验函数与计算的一个很好的方法。省略SELECT子语句以便简单的访问和处理表达式。例如SELECT 3*6;将返回18。
  • 使用函数

    常用的文本处理函数

    | 函 数 | 说 明 |

    | ----------- | ---------------- |

    | Left() | 返回串左边的字符 |

    | Length() | 返回串的长度 |

    | Locate() | 找出串的一个子串 |

    | Lower() | 将串转化为小写 |

    | LTrim() | 去掉串左边的空格 |

    | Right() | 返回串右边的字符 |

    | RTrim() | 去掉串右边的空格 |

    | SubString() | 返回子串的字符 |

    | Upper() | 将串转化为大写 |

常用的日期时间函数

函数 说明
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurTime() 返回当前时间
CurDate() 返回当前日期
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 日期运算函数
Date_Format() 格式化日期或时间
Day() 返回日期的天数部分
DayOfWeek() 返回日期对应为星期几
Hour() 返回时间的小时部分
Minute() 返回时间的分钟部分
Month() 返回日期的月份
Now() 当前日期时间
Second() 返回时间的秒部分
Time() 返回时间
Year() 返回年份
注意:
1.MySQL的日期格式最好为yyyy-mm-dd,因为消除了多义性。
2.日期比较最好使用日期函数进行WHERE匹配,否则匹配会出错。比如:
SELECT * FROM tableName WHERE date = '2016-03-01'
当某一列存储的值为2016-03-01 12:00:00时,上述语句会匹配失败。解决方法就是使用Date(date)指示MySQL仅提取列的日期部分。
3.使用日期函数可以很好的进行日期比较搜索。比如需要查找出在2016年03月的所有列,可以使用:SELECT * FROM tableName WHERE Year(date) = 2016 AND Month(date) = 3;

常用的数值处理函数

函数 说明
Abs() 返回数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回数的指数值
Mod() 取余
Pi() 圆周率
Rand() 生成随机数
Sin() 正弦
Sqrt() 平方根
Tan() 正切
3.汇总数据
对表中的数据(而不是实际数据本身)汇总,得到汇总的信息。
3.1 聚集函数
聚集函数运行在行组上,计算和返回单个值的函数。

常用的聚集函数

函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列的和
SELECT AVG(prod_price) AS avg_price FROM tableName;

为了获得多个列的平均值必须使用多个AVG()函数。AVG()函数会忽略掉值为NULL的行。

SELECT COUNT(*) AS num_count FROM tableName;
SELECT COUNT(columnName) AS num_count FROM tableName;

COUNT()函数有两种使用方法。使用COUNT(*)对表中行的数目进行计数,不管表中包含的是空值还是非空值。使用COUNT(columnName)对columnName列中具有非空值的行进行计数,忽略NULL值。

SELECT SUM(columnName) AS sum_column FROM tableName;
SELECT SUM(columnName1 * columnName2) AS sum_column FROM tableName;

SUM()函数会忽略NULL的值。

SELECT COUNT(*) AS num_count, MIN(columnName) AS min_column,  AVG(columnName) AS avg_column FROM tableName;

聚集函数可以组合在一起使用。

MySQL的基本知识 -- 函数的更多相关文章

  1. [置顶] Mysql存储过程入门知识

    Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...

  2. MySql学习笔记——存储函数

    在学习完存储过程后,今天主要回顾一下mysql中的存储函数的知识. 函数与存储过程的区别 首先,存储函数也是过程式对象之一,与存储过程相似.它们都是由SQL和过程式语句组成的代码片断,并且可以从应用程 ...

  3. MySQL系列理论知识

    内容: 1.视图 2.触发器 3.事务 4.存储过程 5.内置函数 6.流程控制 7.索引与慢查询优化 —————————————————————————————— 1.视图: 1.视图是什么: 视图 ...

  4. MySQL数据库基础知识及优化

    MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...

  5. mysql存储过程和存储函数

    mysql存储过程和存储函数 存数函数代码示例: DROP PROCEDURE IF EXISTS calc_ci_day_suc_rate; delimiter // CREATE FUNCTION ...

  6. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  7. Mysql中使用find_in_set函数查找字符串

    mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不 ...

  8. MySQL 获得当前日期时间 函数

    获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------- ...

  9. 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数

      1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

随机推荐

  1. Error LNK1104 cannot open file 'libboost_system-vc140-mt-gd-1_58.lib'

    I had a similar problem when trying to use boost unit testing in Visual Studio 2015 (Community Editi ...

  2. 从零开始学Python第八周:网络编程基础(socket)

    Socket网络编程 一,Socket编程 (1)Socket方法介绍 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Soc ...

  3. ABP 初探 之基于EasyUI的CURD

    结束了天天加班的项目,项目虽然结束,但还是有点小问题,只能在后期优化当中完成了,本次做项目采用了,MVC.Webapi.Entityframework,在园了里看到了有关ABP的介绍,同样ABP也是最 ...

  4. 让T4脱离VS生成代码

    让T4脱离VS生成代码 最近项目快结束:空闲时间相对多一点:为了以后工作方便点:索性研究了VS的T4: 写个代码生成器:以后可以通过代码生成器调用项目里面的Dll直接生成代码或者xml: 应用以下两个 ...

  5. 用childNodes获取子元素 换行会产生一个子元素

    <div id='div1'> <div id='div2'> <div id='div3'></div> </div> <div c ...

  6. rem计算适配

    git地址:https://github.com/wjf444128852/about-web-rem 建议在CSS引入之前引入下面这段JS代码,比例1rem:100px. 用了这个JS就不用在CSS ...

  7. jquery编写插件的方法

     版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三种方式 1.添加新的全局函数 2 ...

  8. Android Activity launchMode研究

    Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ...

  9. sqlserver下调试sql语句

    现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...

  10. Android(Java)控制GPIO的方法及耗时分析

    前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO.实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限.本文重点介绍 ...