Mysql基础学习(三)

一、SQL单行函数:

  1. 字符函数
  2. 数值函数
  3. 日期函数
  4. 转换函数
  5. 流程控制函数

①.单行函数特征:对单行进行操作,每行返回一个结果,返回值有可能和原参数数据类型不一致,单行行数可以写在SELECT WHERE ORDER BY 字句中, 函数可以嵌套
②.单行函数的分类:字符函数、数值函数、日期函数、转换函数、流程控制函数

1.字符函数:

  1. LOWER(str) 将字符全部转为小写
  2. UPPER(str) 将字符全部转为大写
SELECT LOWER(name) 小写, UPPER(name) 大写
FROM stu;
  1. CONCAT(str1,str2,…) 用于字符拼接
  2. SUBSTR(str,pos,len) 用于截取长度 从pos位置截取len位(pos从1开始 len中空格也为长度)
SELECT CONCAT(name,id), SUBSTR(name,3,2)
FROM stu;
  1. Length()返回字符串的存储长度
  2. CHAR_LENGTH(str)返回字符的个数
SELECT LENGTH(name), CHAR_LENGTH(name)
FROM stu;
  1. LPAD(str,len,padstr) 左补齐
  2. RPAD(str,len,padstr) 右补齐 填充
SELECT LPAD(name,8,'*'), RPAD(name,8,'$'), name
FROM stu;
  1. TRIM(str) = trim(both ’ ’ from str) 左右剪切
  2. REPEAT(str,count) 把字符串重复count次之后返回
SELECT REPEAT(name, 3),
FROM stu;
  1. REVERSE(str) 翻转

select REVERSE(last_name), last_name
from employees

  1. RIGHT(str,len) LEFT(str,len) substring类似的功能 字符串的截取。

select RIGHT(last_name,2), LEFT(last_name,3),last_name
from employees

  1. SPACE(N) 生成空格

select concat(‘a’,space(10),’*’)

  1. INSTR(str,substr) 从str中查找substr,返回第一次出现的位置 位置从1开始,如果找不到 返回0

SELECT INStr(‘hello world’,‘o’) from dual

2.数值函数

  1. ABS(X) 绝对值
  2. CEIL(X) 往上取整
  3. FLOOR(X) 往下取整
  4. MOD(N,M) 返回x%y 的值
  5. ROUND(x,y) 四舍五入,参数x的y位小数
  6. RAND() 随机数 0>= result <1
  7. TRUNCATE(x,D) 截取位数
SELECT ABS(-1.9),CEIL(1.112),FLOOR(1.99)

SELECT MOD(8.19,3),MOD(2,0),MOD(3.11,3)

四舍五入
SELECT ROUND(1.234567,5),TRUNCATE(1.234567,5),ROUND(1274.567,-2),TRUNCATE(1274.567,-2) 


0-100的随机数
SELECT CEIL(RAND() * 100)

3. 日期函数

NOW 当前时间
CURDATE 当前日期
CURTIME 当前时间
UNIX_TIMESTAMP() 时间戳 返回秒数
FROM_UNIXTIME(秒数) 返回日期 基准时间 1970-01-01 08:00:00
DATE_FORMAT(date,format_str) date转成string 格式化 类型转换
(format_str : %Y 四位 %y 两位 %M-英文的月名 %m 月的数值(01-12)%D 月的第几天 %d(0-31) %H(0-23) %h(1-12) %i %s)
DATE_ADD() DATE_ADD() 函数向日期添加指定的时间间隔。
(day year hour minute second minth week quarter)
DATE_SUB() 函数从日期减去指定的时间间隔。
DATEDIFF(datepart,startdate,enddate)函数返回两个日期之间的时间。

SELECT NOW() as 当前详细日期时间,CURDATE() as 当前日期,CURTIME() as 当前时间;
SELECT UNIX_TIMESTAMP('1970-01-01 09:00:00'),FROM_UNIXTIME(3600);
SELECT DATE_FORMAT(hiredate,'%Y年%m月%d日 %H时 %i分 %s秒')
FROM stu;
SELECT DATE_ADD(hiredate,INTERVAL 7 day),DATE_SUB(hiredate,INTERVAL 7 day),hiredate
FROM stu;

4. 转换函数

1.日期和字符串互转
DATE_FORMAT(date,format)日期转成字符串
STR_TO_DATE(str,format) 字符串转成日期

SELECT DATEDIFF(NOW(),STR_TO_DATE('1978/01/01','%Y/%m/%d'));

2.数值和字符串 隐式转换 concat(123,’’)

3.通用转换
CAST(expr AS type), CONVERT(expr,type)

5.流程控制函数

IFNULL(expr1,expr2)
IF(expr1,expr2,expr3) 第一个表达式如果为true 返回2,否则返回3
CASE exp WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE result3 END
CASE WHEN exp1 THEN result1 WHEN exp2 THEN result2 ELSE result3 END


SELECT IF(id is null,0,id)
FROM stu;

SELECT *, 
   (case job_id when 'boss' then '老板' 
                when 'teacher' THEN  '老师'
                ELSE '学生' END) as 职位
FROM jobs

你可能感兴趣的:(Mysql学习)