例子文件:https://files.cnblogs.com/files/Vera-y/myemployees.zip

函数:将一组逻辑语句封装在函数体中,对外暴露函数名

调用:select 函数名() from 表;(若用到表中的字段则家上‘from 表’)

函数分类:   1.单行函数(例:concate、length、ifnull)

      2.分组函数(统计函数,聚合函数,组函数):做统计使用的(传入一组值,返回一个值)

单行函数:

一、字符函数

1.length: 获取参数值的字节数

  select length('john');  结果:4

  select length('张三丰hahaha');  结果:15

2.cancat:拼接字符串

  select cancat('a','b','c'); 结果:abc

3.upper(都变大写)、lower(都变为小写)

  select upper('john');   结果:JOHN

  select lower('JOhn');   结果: john

  例:select concat(upper('hello'), lower('JOHN'));   结果:HELLOjohn

4.substr(同substring): 索引截取字符串(默认从1开始索引)

  select substr('指定字符串拉布拉多不拉多',8)  as out_put;  结果:拉多不拉多

  select substr('指定字符串拉布拉多不拉多',3,4)  as out_put;  结果:字符串拉    # 表示从3位置开始索引,索引4个字符

5.instr: 返回子字符串在字符串中的起始索引,若子字符串不在字符串里则返回0

  select instr('杨不悔爱上了尹六侠','尹六侠') as out_put;   结果:7

6.trim:去掉字符串前后指定字符,默认去掉空格

  select trim('     张 翠 翠            ');   结果:张 翠 翠

  select trim('a' FROM 'aaaaaa张 aaaa翠aa 翠aaaaaaaaaa');   结果:张 aaaa翠aa 翠

7.lpad:用指定的字符实现左填充到指定长度

  select lpad('殷素素', 10, '*');     结果:*******殷素素

  select lpad('殷素素', 2, '*');     结果:殷素

8.rpad: 用指定的字符实现右填充到指定长度

  select rpad('殷素素', 10, '*');     结果:殷素素*******

9.replace:替换

  select replace('张无忌爱上了周芷若', '周芷若', '赵敏');  结果:张无忌爱上了赵敏

二、数学函数    

1.round :四舍五入

  select round(-1.55);   结果:-2

  select round(1.56775, 2);   结果:1.57   # 结果保留2位

2.ceil : 向上取整,返回>=该参数的最小整数

  select ceil(5.6);  结果:6

  select ceil(-1.09);  结果:-1

3.floor :向下取整,返回<= 该参数的最大整数

  select floor(-9.99);  结果:-10

  select floor(5.66);    结果:5

4.truncate :截断(小数点后保留1位)

  select truncate(1.69999);   结果:1.6

5.mod : 取余

  select mod(10, -3);    结果:1    # mod(a,b)   :    a-a/b*b   (被除数为负,则结果为负)

6.rand:获取随机数,返回0-1之间的小数

  select rand();   结果:0.8565648699706093

三、日期函数

1.now:返回当前系统日期+时间

  select now();   结果:2019-05-25 08:40:40

2.curdate: 返回当前系统日期,不包含时间

  select curdate();   结果:2019-05-25

3.curtime:返回当前系统时间,不包含日期

  select curtime();   结果:08:42:43

4.获取指定的部分:年(year)、月(month)、月名(monthname)、日(day)、小时(hour)、分钟(minute)、秒(second)

  select year(now()) as 年;   结果:2019

  select year('1998-09-05') as 年;    结果:1998

  select monthname(now()) as 月名;    结果:  May

%Y 四位的年份
%y 两位的年份
%m 月份(01,02....12)
%c 月份(1,2.....12)
%d 日(01,02.....)
%H 小时(24小时制)
%h 小时(12小时制)
%i 分钟(00,01....59)
%s 秒(00,01.....59)

5.str_to_date:将日期格式的字符转换为指定格式的日期(1998-09-05)

  select str_to_date('1998-9-5','%Y-%c-%d');   结果:1998-09-05   #格式一一对应

  select str_to_date('9-5 1998','%c-%d %Y') as out_put;   结果:1998-09-05

6.date_format:将日期转换为字符

  select date_format(now(),'%m月%d日 %y年');   结果:05月25日 19年

四、其他函数

1.version: 查看当前版本号

  select version();

2.database:查看当前数据库

  select database();

3.user:查看当前用户  

  select user();

4.password('字符'):返回字符的密码形式

  select password('字符');      # 靠后的数据库版本已弃用

5.md5('字符') : 返回字符的MD5的加密形式

  select md5('字符');   结果:9c07532d0c9acfecfc4ec2eb265c3e03

五、流程控制函数

1.if函数

  select if(10>5,'大','小');    结果:大     # 第一个参数为条件,若成立(ture),则返回第二个参数,若不成立(false),则返回第三个参数。

2.case函数(使用一):

语法:   case 要判断的字段或表达式

    when 常量1 then 要显示的值1或语句1;    # 显示值(搭配select使用):后面没有;,显示语句(存储过程里使用):后面有;

    when 常量2 then 要显示的值2或语句2;

    .....

    else 要显示的值n 或语句n;      # else 代表默认的情况

    end

例:查询员工的工资,要求:部门号=30,显示工资为1.1倍,部门号=40,显示工资为1.2倍,其他部门,显示原工资

  select

  salary as 原始工资, department_id,

  case department_id

  when 30 then salary*1.1     # 注意这里是没有;的

  when 40 then salary*1.2

  else salary

  end as 新工资

  from employees;

3.case函数(使用二):

语法:

  case

  when 条件1 then 要显示的值1或语句1;

  when 条件2 then 要显示的值2或语句2;

  ....

  else 要显示的值n 或语句n;

  end

例:查询员工工资情况,若工资>13000,显示A级别,若工资>8000,显示B级别

  select salary,

  case

  when salary>13000 then 'A'

  when salary>8000 then 'B'

  else 'C'

  end as 工资级别

  from employees;

分组函数

一、简单使用

1.sum:求和

  select sum(salary) from employees;    结果:691400.00

2.avg : 平均值

  select avg(salary) from employees;   结果:6461.682243

3.max : 最大值

  select max(salary) from employees;    结果:24000.00

4.min : 最小值

  select min(salary) from employees;  结果:2100.00

5.count : 计算个数

  select count(salary) from employees;  结果:107

二、函数参数支持哪些类型

1.sum、avg 用于处理数值型

2.max、min、count 可以处理任何类型

3.以上的分组函数都忽略null值(注:count本身为计算非空(!null)值的个数)

三、和distinct搭配

都可以和distinct搭配使用,distinct(去重)

  select sum(distinct salary) from employees;   # 表示salary去重后求和

四、count函数详细介绍

  select count(*) from employees;    # * 表示统计所有的行数(只要一行中有一个不为空,则本行数被记上)

  select count('xx') from employees;  # 表示在表中加入了一列的‘xx’数值,然后count再进行统计‘xx’的个数,来达到统计所有行的目的

(一般使用count(*)来统计行数)

五、datediff : 计算两个日期相差的天数

  select datediff('2019-5-25','2017-3-7');   结果:809

注:和分组函数一同查询的字段要求是group by后的字段(因为分组函数最后计算出来只有一行,若和其他的函数一起使用(例:单行函数),则列表结果可能呈现不规则,这在sql中是没有意义的)

数据库MySQL--常见函数的更多相关文章

  1. MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  2. Robot Framework-DatabaseLibrary数据库(MySql)

    Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...

  3. paip.导入数据英文音标到数据库mysql为空的问题之道解决原理

    paip.导入数据英文音标到数据库mysql为空的问题之道解决原理 #---原因:mysql 导入工具的bug #---解决:使用双引号不个音标括起来. 作者 老哇的爪子 Attilax 艾龙,  E ...

  4. paip.解决 数据库mysql增加列 字段很慢添加字段很慢

    paip.解决 数据库mysql增加列 字段很慢添加字段很慢 #环境如下: mysql5.6    数据仅仅3w alter table xxx add column yyy int default ...

  5. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  6. 数据库MySQL多个数据库服务冲突

    一.目标名称 MySQL 二.目标版本 mysql-5.6.24-win32.1432006610.zip 三.环境信息 系统:windows 7 旗舰版 防火墙:关闭  —— 注意:如果防火墙不关闭 ...

  7. paip.将数据导入到在英语语音数据库mysql道路解决空原则问题

    paip.将数据导入到在英语语音数据库mysql道路解决空原则问题 #---原因:mysql 导入工具bug #---解决:不要使用双引号括注音. 笔者 老哇爪 Attilax 艾龙.  EMAIL: ...

  8. Yii Framework2.0开发教程(5)数据库mysql性能

    继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...

  9. cpanel导入大数据库(mysql)的方法

    phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却很容易出错.特别是导入工作,通常5M已经是它的极限了.这里,主要介绍一下如何通过cPanel导入大型的 ...

  10. 前端学习数据库MYSQL

    这篇文章主要写了 1.数据库MYSQL 2.基本上会遇到的所有SQL语句 数据库可视化软件------Navicat 数据库里边存放的是表,表与表之间是有关联的,而且可以对表进行相关操作(增,删,改, ...

随机推荐

  1. leetcode.数组.27移除元素-Java

    1. 具体题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空 ...

  2. 找到最大或者最小的N个元素

    heapq模块中的两个函数nlargest()和nsmallest() import heapq nums = [1,5,6,458,6,787,5,45,6] print(heapq.nlarges ...

  3. 实体类Json串转成DataTable

    private DataTable GetJsonToDataTable(string json) { List<Object_DeclareInfo> arrayList = JsonC ...

  4. 微信小程序改变全局变量

    假设A为登录页面并将登录获得的用户信息保存到app.js中的全局变量userInfo中,然后在B页面进行使用. app.js globalData:{    userInfo:null, } a.js ...

  5. CSRF攻击防御方法

    CSRF攻击防御方法 目前防御 CSRF 攻击主要有三种策略: 1. 验证 HTTP Referer 字段: 根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP ...

  6. 安装memcached报错:If it's already installed, specify its path using --with-libevent=/dir/

    一.安装memcached,执行./configure --prefix=/usr/local/memcached时候报错: 问题:If it's already installed, specify ...

  7. 深入浅出的Object.defineProperty()

    vue的原理 观察者模式和订阅-发布者模式. Vue实例被创建时,会遍历data属性,并通过Object.defineProperty将 这些属性转化为getter/setter,并进行追踪依赖.每当 ...

  8. element中的tree组件实现菜单分配

    返回的菜单数据 tree组件的使用 <el-tree ref="menuList" // :data="menuList" // 展示数据 :props= ...

  9. 扩展欧几里得原理的应用:POJ1061青蛙的约会

    /* POJ 1061: 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 123709 Accepted: 26395 ...

  10. 虚树(树形dp套路)模板——bzoj2286

    虚树的核心就是把关键点和关键点的lca重新生成一棵树,然后在这棵树上进行dp https://www.cnblogs.com/zwfymqz/p/9175152.html  写的很好的博客 建立虚树的 ...