数学函数
SELECT CEIL(1.2); --进一取整:2SELECT FLOOR(1.9);--舍一取整:1SELECT ROUND(3.56789,2);--四舍五入,显示两位小数:3.57SELECT TRUNCATE(3.456789,3);--截断处理,显示三位小数:3.456SELECT MOD(5,2);--取余,5%2SELECT 5 MOD 2; --取余,5%2SELECT 5%2; --取余,5%2SELECT ABS(-12);--取绝对值:12SELECT POWER(2,3);--幂运算:2的3次方 - 8SELECT PI();--取圆周率:3.141593SELECT RAND();--取随机数SELECT RAND(1);--标识随机数SELECT RAND(1);--这个值和上次的值是一样的SELECT SIGN(-12);--取符号:-1SELECT SIGN(12); --取符号:1SELECT SIGN(0); --取符号:0SELECT EXP(2); --e的2次方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
