数据库MySQL--常见函数
例子文件: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--常见函数的更多相关文章
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- Robot Framework-DatabaseLibrary数据库(MySql)
Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...
- paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
paip.导入数据英文音标到数据库mysql为空的问题之道解决原理 #---原因:mysql 导入工具的bug #---解决:使用双引号不个音标括起来. 作者 老哇的爪子 Attilax 艾龙, E ...
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
paip.解决 数据库mysql增加列 字段很慢添加字段很慢 #环境如下: mysql5.6 数据仅仅3w alter table xxx add column yyy int default ...
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递
http://niuzhenxin.iteye.com/blog/1706203 Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...
- 数据库MySQL多个数据库服务冲突
一.目标名称 MySQL 二.目标版本 mysql-5.6.24-win32.1432006610.zip 三.环境信息 系统:windows 7 旗舰版 防火墙:关闭 —— 注意:如果防火墙不关闭 ...
- paip.将数据导入到在英语语音数据库mysql道路解决空原则问题
paip.将数据导入到在英语语音数据库mysql道路解决空原则问题 #---原因:mysql 导入工具bug #---解决:不要使用双引号括注音. 笔者 老哇爪 Attilax 艾龙. EMAIL: ...
- Yii Framework2.0开发教程(5)数据库mysql性能
继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...
- cpanel导入大数据库(mysql)的方法
phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却很容易出错.特别是导入工作,通常5M已经是它的极限了.这里,主要介绍一下如何通过cPanel导入大型的 ...
- 前端学习数据库MYSQL
这篇文章主要写了 1.数据库MYSQL 2.基本上会遇到的所有SQL语句 数据库可视化软件------Navicat 数据库里边存放的是表,表与表之间是有关联的,而且可以对表进行相关操作(增,删,改, ...
随机推荐
- 在VMware软件下创建CentOs虚拟机
1.创建新的虚拟机. 打开VMware软件,点击主页内创建新的虚拟机 2.进入新建虚拟机向导 点击典型,点击下一步 3.在下一步中单击稍后安装操作系统 点击下一步 4.选择操作系统类型 因为CentO ...
- Jackson第一个程序
再进入学习jackson库的细节之前,让我们来看看应用程序操作功能.在这个例子中,我们创建一个Student类.将创建一个JSON字符串学生的详细信息,并将其反序列化到学生的对象,然后将其序列化到JS ...
- python库argparse中type的新奇指定方法
最近在看一些项目的源码,总是能学到好多东西. 关于arparse中type的类型指定 不止可以指定常规类型,还可以加一些自己类型判断,具体用法如下(来源): def str2bool(v): &quo ...
- RTL_PROCESS_MODULE_INFORMATION
typedef struct _RTL_PROCESS_MODULE_INFORMATION { HANDLE Section; // Not filled in PVOID MappedBase; ...
- spring mvc 配置后,web中的html页面报404,该怎么处理
问题描述: 在根目录webapp下的jsp页面可以通过url直接访问,而html页面就会报404错误. 解决方案1: 在spring-mvc.xml中添加如下配置: <!--将静态文件指定到某个 ...
- Red5流媒体服务器开发
Red5流媒体服务器开发总结 Red5 是 支持Windows,Linux等多平台的RTMP流媒体服务器,最早属于谷歌下的开源项目,先已移植到Github,地址为https://github.com/ ...
- 代码托管平台--GitHub 使用小结
一.GitHub介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管.在GitHub,用户可以十分轻易地找到海量的开源代码. 很多IT行业的人到求职的 ...
- PHP算法之罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 ...
- backface-visibility:hidden
backface-visibility:hidden 不面向屏幕时隐藏
- BCZM : 1.9
有n个学生参加见面会,分别对m个研究组中的若干个感兴趣,为了满足所有学生的要求,每个学生都能参加自己感兴趣的见面会,如果每个见面会的时间为t,如何安排才能使得所有见面会的总时间最短? 分析: 先建立模 ...