概念:相似于Java中的方法,将一组逻辑语句封装在方法体内,对外暴露方法mysql
好处:一、隐藏了实现细节 二、提升了代码的重用性web
调用:select 函数名(实参列表)
【from 表】;sql
特色:
1:叫什么(函数名)
2:干什么(函数功能)数据库
分类:
1:单行函数
如concat,length,ifnull
包括:字符函数,数学函数,日期函数,其余函数,流程控制函数
2:分组函数
(1)功能:作统计使用svg
常见函数:
1、单行函数
字符函数
length----获取参数值的字节个数
concat----拼接字符串
substr----截取字符
instr-----返回子串第一次出现的索引,若是找不到,返回0
trim
upper-----字符串大写
lower-----字符串小写
lpad------用指定字符实现左填充指定长度
rpad------用指定字符实现右填充指定长度
replace—替换
数学函数
round-----四舍五入,或保留几位小数
ceil------向上取整
floor-----向下取整
truncate–截断
mod-------取余
日期函数
now
curdate—返回当前系统日期,不包括时间
curtime—返回当前系统时间,不包括日期
year
month
monthname–返回英文的月份
day
hour
minute
second
str_to_date
date_format函数
其余函数 version datebase user 流程控制函数 if case
SELECT LENGTH('joey'); SELECT LENGTH('张沛祺hahaha');
SELECT CONCAT(`last_name`,' ',`first_name`) AS 姓名 FROM employees;
SELECT UPPER('joey'); SELECT LOWER('ROSS');
实例:将姓变大写,名变小写,而后拼接spa
SELECT CONCAT(LOWER(`first_name`),' ',UPPER(`last_name`)) AS 姓名 FROM employees;
注意:mysql中索引从1开始code
截取从指定索引处后面的全部字符[>=4]orm
SELECT SUBSTR('李莫愁爱上陆展元',4) AS out_put;
截取从指定索引处指定字符长度的字符[>=1&&<=3]xml
SELECT SUBSTRING('李莫愁爱上陆展元',1,3);
案例:将名的首字符大写,其余字符小写,而后用_拼接
SELECT CONCAT(UPPER(SUBSTRING(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) AS out_put FROM employees;
返回子串第一次出现的索引,若是找不到,返回0
SELECT INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put FROM employees;
SELECT TRIM(' 张翠山 ') AS out_put;
#--------------------------------------
SELECT TRIM('aa' FROM 'aaaaaaa张翠山aaaa') AS out_put;
#用指定字符实现左填充指定长度
SELECT LPAD('张',5,'*') AS out_put;
#用指定字符实现右填充指定长度
SELECT RPAD('张',10,'*') AS out_put;
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS out_put;
SELECT ROUND(1.2); SELECT ROUND(1.65,1);#第二个参数是保留几位小数
返回>=该参数的最大整数
SELECT CEIL(1.2);
SELECT FLOOR(1.2);
SELECT TRUNCATE(1.2222,2);#第二个参数指的是保留几位小数
SELECT MOD(10,3);
SELECT NOW();
SELECT CURDATE();
SELECT CURTIME();
SELECT YEAR('2018-9-12'); SELECT MONTHNAME(NOW()) AS 年;#英文月份 SELECT YEAR(`hiredate`) AS 年 FROM employees;
SELECT STR_TO_DATE('9-13-1999','%m-%d-%Y') AS out_put;
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS 日期;
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
SELECT IF(10>5,'da','xiao') AS if函数; #----------------------------------------- SELECT IF(`commission_pct`IS NULL,'没奖金,呵呵','有奖金,嘿嘿') AS 备注 FROM employees;
Java中
switch(变量或表达式){
case 常量:语句1;break;
…
default:语句n;break;
}
MySQL中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或(语句1;)
when 常量2 then 要显示的值2或(语句2;)
when 常量3 then 要显示的值3或(语句3;)
…
else 要显示的值n或(语句n;)
end
SELECT salary AS 源工资,department_id, CASE department_id WHEN 30 THEN salary*1.1 WHEN 40 THEN salary*1.2 WHEN 50 THEN salary*1.3 ELSE salary END AS 新工资 FROM employees;
Java中:
if(条件){
语句1;
}else if(条件2){
语句2;
}else{
语句n;
}
MySQL中:
case
when 条件1 then 要显示的值1或(语句1;)
when 条件2 then 要显示的值2或(语句2;)
when 条件3 then 要显示的值1或(语句3;)
…
else 要显示的值n或(语句n;)
end
SELECT CASE WHEN salary>20000 THEN 'A' WHEN salary>15000 THEN 'B' WHEN salary>10000 THEN 'C' ELSE 'D' END AS 工资级别 FROM employees;