1.length 获取参数值的字节个数 SELECT LENGTH('join');#3 #一个汉字在utf8字符集中占3个字节 SELECT LENGTH('张三丰');#9 #查看当前数据库字符集 SHOW VARIABLES LIKE '%char%'; 2.concat 拼接字符串 SELECT CONCAT(last_name,'_',first_name) AS fullName FROM employees; 3.upper,lower SELECT UPPER('henry'); SELECT LOWER(last_name) FROM employees; 4.substr 、 substring 注:索引从1开始 #截取从指定索引处后面全部字符 SELECT SUBSTR('床前明月光',3);#明月光 #截取从指定索引处指定字符长度的字符 SELECT SUBSTR('床前明月光',2,2);#前明 5. instr 返回字符串第一次出现的索引,找不到就返回0 SELECT INSTR('窗前明月光','明月');#3 6. trim ①去除字符创首尾的空格 ② 替换字符串首尾的指定字符 SELECT LENGTH(TRIM(' abc '));//3 SELECT LENGTH(TRIM(' a b c '));//5 SELECT TRIM('a' FROM 'a窗前明a月a光a');//窗前明a月a光 7.lpad 用指定的字符实现左填充指定长度 SELECT LPAD('bbb',5,'a');#aabbb 8.rpad用指定的字符实现右填充 9.replace 替换 SELECT REPLACE('aaaaabbbbaaaa','a','b');# bbbbbbbbbbb
1 round 四舍五入 SELECT ROUND(1.55);#2 SELECT ROUND(1.45);#1 SELECT ROUND(1.456,2);#1.46 小数点后保留2位 2 向上取整,返回>=该参数的最小整数 SELECT CEIL(1.02);# 2 SELECT CEIL(-1.02);# -1 3 floor 向下取整,返回 <= 该参数的最大整数 SELECT FLOOR(1.02);# 1 SELECT FLOOR(-1.02);# -2 4 truncate 截断,截取小数点后的几位,若是是整数则返回原数 SELECT TRUNCATE(1.5999,1); #1.5 SELECT TRUNCATE(1.5999,2); #1.59 5 mod取余 SELECT MOD(4,2);# 0 SELECT MOD(4,3);#1
1 now 返回当前系统的日期+时间 SELECT NOW(); # 2020-06-09 07:58:44 2 curdate 返回仓前系统日期,不包含时间 SELECT CURDATE();# 2020-06-09 3 curtime 返回当前时间,不包含日期 SELECT CURTIME(); # 08:01:16
日期格式符:
web
4 year,month,monthname,hour,second 获取指定的部分日期 SELECT YEAR(NOW());# 2020 SELECT YEAR('1988-05-26');# 1988 SELECT MONTH(NOW());# 6 SELECT MONTHNAME(NOW());# June SELECT HOUR(NOW());# 8 SELECT MINUTE(NOW());# 6 SELECT SECOND(NOW()); # 19 5 str_to_date 将字符串经过指定格式转化成日期 SELECT STR_TO_DATE('1993-02-25','%Y-%c-%d') AS output;# 1993-02-25 6 date_format 将日期转换成字符串 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS output;# 2020-06-09
SELECT VERSION();//获取当前数据库版本 SELECT DATABASE();//获取当前所在数据库 SELECT USER();//获取链接当前数据库的用户
# 1 if函数:if else 效果 SELECT IF(10>5,'10','5'); SELECT last_name,commission_pct ,IF(commission_pct IS NULL,'没奖金,呵呵','有奖金,哈哈') 是否有奖金 FROM employees; # 2 case 语句 语法1: case 要判断的字段或表达式 when 常量1 then 要显示的值或语句1; when 常量2 then 要显示的值2或语句2; .... else 要显示的值n或语句n; end ...; #查询员工工资,要求,部门号30显示工资为1.1倍,部门号40显示工资的1.2倍,部门号50,显示工资的1.3倍 SELECT salary 原工资,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; 语法2:和1的区别是when后面不是常量而是表达式 case 要判断的字段或表达式 when 条件1 then 要显示的值或语句1; when 条件2 then 要显示的值2或语句2; .... else 要显示的值n或语句n; end ...; SELECT salary, CASE salary WHEN salary>20000 THEN 'a' WHEN salary>15000 THEN 'b' WHEN salary>10000 THEN 'c' ELSE 'D' END AS 工资等级 FROM employees;
分类:sum求和,avg平均值,max最大值,min最小值,count计算个数
特色:
1.sum avg通常用于处理数值型,max,min,cout能够处理任何类型
2.以上分组都忽略null值
3.能够和distinct搭配实现去重的运算
4.count函数,通常使用count(*)用做统计行数
count(任意常量)均可以统计行数数据库
SELECT COUNT(*) FROM employees; #统计employees中有多少条记录 SELECT SUM(salary)FROM employees; SELECT SUM(DISTINCT salary)FROM employees; SELECT AVG(salary)FROM employees; SELECT MIN(salary)FROM employees; SELECT MAX(salary)FROM employees;