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. codeforces 632+ E. Thief in a Shop

    E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  2. 领域驱动设计常见问题FAQ

    本文出处:http://www.cqrs.nu/Faq What is a domain? The field for which a system is built. Airport managem ...

  3. 使用PHPMailer发送邮件

    如果要使用php发送邮件,则可以使用PHP 内置的mail() 函数,但是mail()函数需要有服务器支持 必须有自己的邮件服务器,如果使用stmp服务来发送邮件的话相当于代替别人发送,而不是从自己服 ...

  4. 深入浅出node(1) Node简介

    这一系列主要是自己在学习深入浅出node.js这本书的学习笔试,部分加入了自己的一些理解 分享给一起学习node的小伙伴 自己还是个初学者 有很多地方理解的不到位 一起交流 一 什么是node 1.1 ...

  5. css之水平居中设置

    行内元素:     div,p{text-align:center;} 定宽块状元素:  第一宽度固定,第二margin-left和margin-right均是auto.div{border:1px ...

  6. Linux安全基础:配置network

    在 Linux 系统中,TCP/IP 网络是通过若干个文本文件进行配置的,需要编辑这些文件来完成联网工作.系统中重要的有关网络配置文件有以下几项: /etc/sysconfig/network/etc ...

  7. popupwindow展示

    样式: layout: popup_appinfo.xml <?xml version="1.0" encoding="utf-8"?> <L ...

  8. routes.rb和link_to的一些规则

    rails文档中描述了一个知识,link_to方法用于产生链接,但链接是根据routes.rb中的路由规则来产生的.这又分为面向资源和非面向资源两种产生链接的方法.比如 routes.rb文件中有两条 ...

  9. 原生JS 表单提交验证器

    转载:http://www.cnblogs.com/sicd/p/4613628.html 一.前言 最近在开发一个新项目,需要做登陆等一系列的表单提交页面.在经过“缜密”的讨论后,我们决定 不用外部 ...

  10. vim添加代码折叠功能

    用空格或者za命名改变,添加如下到vimrc文件 " Enable folding set foldmethod=indent set foldlevel=99 " Enable ...