select 查询字段
from 表
【where 条件】——>可要可不要看情况
order by 排序列表(单个字段,多个字段之间用逗号隔开,表达式,函数,列数,及以上组合;asc升序 默认的,desc降序)
执行顺序
from 》 where 》select 》 order by
字符串函数
CONCAT(字符串,字段,…),拼接字符函数,可以写入多个字符串或是字段
SELECT CONCAT(字段,' hellow') from 表;
LENGTH(str),可写入字符串或是字段,获取字节长度
SELECT LENGTH('哈哈哈哈,嘻嘻嘻');
CHAR_LENGTH(str)可写入字符串或是字段,获取字符长度,有几个字符
SELECT CHAR_LENGTH('哈哈哈哈,嘻嘻嘻');
SUBSTRING(字符串,起始索引,截取字符长度)截取字串,起始索引是1开始;
SELECT SUBSTRING('张三丰爱上了郭襄',3,3);
SELECT SUBSTRING('张三丰爱上了郭襄',3,1);
SUBSTRING(字符串,起始索引),截取从起始索引及其之后的字符
SELECT SUBSTRING(‘张三丰爱上了郭襄’,3);重载
SUBSTR(str FROM pos FOR len),与截取字符串一样
SELECT SUBSTR('张三丰爱上了郭襄',2,4);
LEFT\RIGHT(字符串,截取长度),从左右开始截取
SELECT LEFT('asdfg',2);
SELECT RIGHT('asdfg',2);
INSTR(字符串,需要查询的第一次出现的字符串),获取字节第一次出现的索引
SELECT INSTR('三打白骨金aaa白骨金白骨金 白骨金','白骨金');
TRIM(指定需要去除的字符 from 字符串),默认的是去除前后空格,指定去除字符串前后的字符
SELECT TRIM(' 哈哈哈 嘻嘻嘻');
SELECT TRIM('x' FROM 'xxxxxx哈哈哈xx嘻嘻嘻xxxxx');
LPAD\RPAD(字符串,填充长度,填充字符),左右填充
SELECT LPAD('虚竹',10,'西夏公主');
SELECT RPAD('虚竹',10,'西夏公主');
UPPER(str)变大写字符,LOWER(str)变小写字符
STRCMP(字符串,字符串) 比较两个字符串的大小,第一个先比较若是同再比较第二个,若是不同则结束比较
SELECT STRCMP('郭襄','张三丰'); > 1
SELECT STRCMP('张三丰','郭襄'); < -1
SELECT STRCMP('郭襄','郭襄'); = 0
数学函数
ABS(数值),绝对值
SELECT ABS(-0.2);
CEIL(数值),向上取整
SELECT CEIL(0.2);
SELECT CEIL(-0.2);
FLOOR(数值),向下取整
SELECT FLOOR(0.2);
SELECT FLOOR(-0.2);
ROUND(数值,小数点后保留位数),四舍五入,默认保留整数
SELECT ROUND(1.25,1);
SELECT ROUND(1.25);
TRUNCATE(数值,保留位数),截断,保留小数点后面位数
SELECT TRUNCATE(1.252423,2);
MOD(数值,数值),% 取余数
SELECT MOD(10,3);
SELECT MOD(-10,-3);
SELECT MOD(-10,3);
SELECT -10%-3;
日期函数
NOW(),获取当前时间日期
SELECT NOW();
CURDATE() 只获取当前日期
SELECT CURDATE();
CURTIME() 只获取当前时间
SELECT CURTIME();
DATEDIFF(日期1,日期2) 计算两个时间之差,天为单位
SELECT DATEDIFF('2021-11-15','1996-11-15');
DATE_FORMAT(时间日期,指定的格式),指定时间日期格式
SELECT DATE_FORMAT('2021.6.8 08.41.0','%Y-%m-%d %H:%i:%s');
STR_TO_DATE(str,指定格式),解析字符串为合法日期
SELECT STR_TO_DATE('6/8 2021','%m/%d %Y');只可以根据字符串中的格式来写
流程控制函数
*IF(条件,是显示的结果,否显示的结果)*
/*CASE 表达式 与swith一样;类似多重if语句的,表达式直接直接写在when之后。
WHEN 值1 THEN 结果1 。。。。
ELSE 结果
END
*/
/*
部门号30,工资2倍
部门号50,工资3倍
部门号60,工资4倍
SELECT department_id,salary 旧工资,
CASE department_id
WHEN 30 THEN salary*2
WHEN 50 THEN salary*3
WHEN 60 THEN salary*4
ELSE
salary
END 新工资
FROM employees;
*/
#类似多重if语句的,表达式直接直接写在when之后。
/*
工资>20000,显示级别A
工资>15000,显示级别B
工资>10000,显示级别C
否则显示D
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE
'D'
END 级别
FROM employees;
*/