MySQL教程
Lower |
转换小写 |
upper |
转换大写 |
substr |
取子串(substr(被截取的字符串,起始下标,截取的长度)) |
length |
取长度 |
trim |
去空格 |
str_to_date |
将字符串转换成日期 |
date_format |
格式化日期 |
format |
设置千分位 |
round |
四舍五入 |
rand() |
生成随机数 |
Ifnull |
可以将null转换成一个具体值 |
lower
查询员工,将员工姓名全部转换成小写
select lower(ename) from emp;
查询job为manager的员工
select * from emp where job=upper('manager');
查询姓名以M开头所有的员工
select * from emp where substr(ename, 1, 1)=upper('m');
取得员工姓名长度为5的
select length(ename), ename from emp where length(ename)=5;
trim会去首尾空格,不会去除中间的空格。
取得工作岗位为manager的所有员工
select * from emp where job=trim(upper('manager '));
● 查询1981-02-20入职的员工(第一种方法,与数据库的格式匹配上)
select * from emp where HIREDATE='1981-02-20';
● 查询1981-02-20入职的员工(第二种方法,将字符串转换成date类型)
select * from emp where HIREDATE=str_to_date('1981-02-20','%Y-%m-%d');
select * from emp where HIREDATE=str_to_date('02-20-1981','%m-%d-%Y');
str_to_date可以将字符串转换成日期,具体格式str_to_date (字符串,匹配格式)
查询1981-02-20以后入职的员工,将入职日期格式化成yyyy-mm-dd hh:mm:ss
select empno, ename, date_format(hiredate, '%Y-%m-%d %H:%i:%s') as hiredate from emp;
select date_format(now(),'%Y-%m-%d %H %i %s');
now() 获得当前时间
日期格式的说明
%Y:代表4位的年份
%y:代表2位的年份
%m:代表月, 格式为(01……12)
%c:代表月, 格式为(1……12)
%H:代表小时,格式为(00……23)
%h:代表小时,格式为(01……12)
%i:代表分钟, 格式为(00……59)
%r:代表时间,格式为12 小时(hh:mm:ss [AP]M)
%T:代表时间,格式为24 小时(hh:mm:ss)
%S:代表秒,格式为(00……59)
%s:代表秒,格式为(00……59)
format
● 查询员工薪水加入千分位
select empno, ename, Format(sal, 0) from emp;
● 查询员工薪水加入千分位和保留两位小数
select empno, ename, Format(sal, 2) from emp;
四舍五入
select round(123.56);
生成随机数
select rand();
随机抽取记录数
select * from emp order by rand() limit 2;
order by 必须写上。
case … when … then …..else …end
如果job为MANAGERG薪水上涨10%,如果job为SALESMAN工资上涨50%
select empno, ename, job, sal, case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 end as newsal from emp;
其他的工资不动,需要添加else
select e.*,sal ,case job when 'salesman' then sal*1.1 when 'clerk' then sal*1.2 else sal end as new_sal from emp e;
e.*:取emp表所有的字段 , emp as e 是表的别名可以省略as emp e
select ifnull(comm,0) from emp;
如果comm为null 就替换为 0
在SQL语句当中若有NULL值参与数学运算,计算结果一定是NULL
为了防止计算结果出现NULL,建议先使用ifnull空值处理函数预先处理。
以下SQL是计算年薪的:
select empno,ename,sal,(sal+ifnull(comm,0))*12 as yearsal from emp;
数据处理函数又被称为单行处理函数,特点:输入一行输出一行