数学函数

  1. SELECT CEIL(1.2); --进一取整:2
  2. SELECT FLOOR(1.9);--舍一取整:1
  3. SELECT ROUND(3.56789,2);--四舍五入,显示两位小数:3.57
  4. SELECT TRUNCATE(3.456789,3);--截断处理,显示三位小数:3.456
  5. SELECT MOD(5,2);--取余,5%2
  6. SELECT 5 MOD 2; --取余,5%2
  7. SELECT 5%2; --取余,5%2
  8. SELECT ABS(-12);--取绝对值:12
  9. SELECT POWER(2,3);--幂运算:23次方 - 8
  10. SELECT PI();--取圆周率:3.141593
  11. SELECT RAND();--取随机数
  12. SELECT RAND(1);--标识随机数
  13. SELECT RAND(1);--这个值和上次的值是一样的
  14. SELECT SIGN(-12);--取符号:-1
  15. SELECT SIGN(12); --取符号:1
  16. SELECT SIGN(0); --取符号:0
  17. SELECT EXP(2); --e2次方
  18. SELECT FORMAT(1000254.333,1);-- 千分位,保留一位小数位:1,000,254.3

字符串函数

--测试字符串函数

--CHAR_LENGTH():得到字符串的字符数
SELECT CHAR_LENGTH('abc');--3
SELECT CHAR_LENGTH('你好啊');--3

--LENGTH():得到字符串的长度
SELECT LENGTH('abc');  --3
SELECT LENGTH('你好啊');--6

--CONCAT(S1,S2...):将字符串合并成一个字符串
SELECT CONCAT('a','b','c');--abc
--如果字符串中包含NULL,返回的拼接结果就是NULL
SELECT CONCAT('a','b','c',NULL);--NULL

--CONCAT_WS(x,s1,s2,s3...):以指定分隔符拼接字符串
--WS:with seprator
SELECT CONCAT_WS('-','a','b','c');-- a-b-c
SELECT CONCAT_WS('-','a','b','c',NULL);-- a-b-c
SELECT CONCAT_WS(NULL,'a','b','c');-- NULL

--将字符串转化成大写或者小写 UPPER()|UCASE() LOWER()|LCASE()
SELECT UPPER('hello song'),UCASE('hello imooc'),LOWER('HELLO ADMIN'),LCASE('HELLO EVERYBODY');
--HELLO SONG,HELLO IMOOC,hello admin,hello everybody

--字符串反转
SELECT REVERSE('abc');--cba

--LEFT()|RIGHT():返回字符串的前几个字符或者后几个字符
SELECT LEFT('hello',2),RIGHT('hello',2);
--he,lo

--LPAD()|RPAD():用字符串填充到指定长度
SELECT LPAD('abc',10,'?');--???????abc
SELECT RPAD('abc',10,'?');--abc???????

--去掉字符串两端的空格TRIM()|LTRIM()|RTRIM()
SELECT CONCAT('*',TRIM(' abc '),'*'),CONCAT('*',LTRIM(' abc '),'*'),CONCAT('*',RTRIM(' abc '),'*');
-- *abc*,*abc *,* abc*

--REPEAT():重复指定的次数
SELECT REPEAT('hello',3);-- hellohellohello

--REPLACE():替换字符串
SELECT REPLACE('hello song','song','nian');-- hello nian

--截取字符串SUBSTRING
--以下意思是从第一位开始,截取三位
SELECT SUBSTRING('abcdef',1,3); -- abc

--比较字符串STRCMP
SELECT STRCMP('a','b'); -- -1
SELECT STRCMP('b','b'); -- 0
SELECT STRCMP('z','b'); -- 1

日期时间函数

--日期常用函数

--返回当前日期
SELECT CURDATE(),CURRENT_DATE();
--2017-12.17,2017-12.17

--返回当前时间
SELECT CURTIME(),CURRENT_TIME();
--21:53:41,21:53:41

--返回当前日期时间
SELECT NOW(),CURRENT_TIMESTAMP(),SYSDATE();
--2017-12-17 21:55:44,2017-12-17 21:55:44,2017-12-17 21:55:44

--返回日期中的月份和月份的名称
SELECT MONTH('2017-02-19');--2
SELECT MONTH(CURDATE()),MONTHNAME(CURDATE());--12,December

--返回星期几
SELECT DAYNAME(NOW());--Sunday

--返回一周内的第几天
--1:星期天,2:星期一,3:星期二,4:星期三,5:星期四,6:星期五,7:星期六
SELECT DAYOFWEEK(NOW());

--返回一年中的第几周
SELECT WEEK(NOW());--51

SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
--2017 12 17 22 9 20

--DATEDIFF()计算两个日期相差的天数
SELECT DATEDIFF('2017-03-01','2017-03-05');-- -4
SELECT DATEDIFF('2017-03-05','2017-03-01');--  4

--改变日期表示格式
SELECT DATE_FORMAT('2016-06-01','%Y/%m/%d');--2016/06/01
SELECT DATE_FORMAT('2016-06-01','%Y/%M/%D');--2016/June/1st

其他常用函数

--其他常用函数

--查看当前版本,当前线程的ID
SELECT VERSION(),CONNECTION_ID();

--得到当前登录的用户
SELECT USER(),CURRENT_USER(),SYSTEM_USER(),SESSION_USER();

--得到上一步插入操作产生AUTO_INCREMENT的值
SELECT LAST_INSERT_ID();

--得到32位的加密结果
SELECT MD5('song');

--PASSWORD():密码加密算法
SELECT PASSWORD('root');

--查询用户root的密码,与上面的PASSWORD('root')是一致的
SELECT * FROM mysql.user WHERE user='root'\G;

设置行号

SELECT @rowNum:=@rowNum+1,a.* FROM ls_lesson_record a,(SELECT @rowNum:=0) b WHERE a.`gym_user_id` = 509;
UPDATE ls_lesson_record lr1
INNER JOIN (
SELECT @rowNum:=@rowNum+1 as rowNumber,tmp1.* 
FROM ls_lesson_record tmp1,(SELECT @rowNum:=0) tmp2
WHERE tmp1.`gym_user_id` = 509
) lr2 
ON lr1.id = lr2.id 
SET lr1.sequence = lr2.rowNumber