MySQL数据库概述及数据准备
MySQL数据库常用命令
MySQL数据库查看表结构
MySQL查询字段
MySQL条件查询
MySQL排序
MySQL函数
MySQL分组函数/聚合函数/多行处理函数
MySQL分组查询
MySQL连接查询
MySQL子查询
MySQL UNION
MySQL中limit的用法
MySQL表
MySQL存储引擎
MySQL事务
MySQL索引
MySQL视图
MySQL DBA命令
MySQL数据库设计的三大范式
MySQL数据库练习题

MySQL函数

Lower

转换小写

upper

转换大写

substr

取子串(substr(被截取的字符串,起始下标,截取的长度)

length

取长度

trim

去空格

str_to_date

将字符串转换成日期

date_format

格式化日期

format

设置千分位

round

四舍五入

rand()

生成随机数

Ifnull

可以将null转换成一个具体值

lower

查询员工,将员工姓名全部转换成小写

select lower(ename) from emp;

upper

查询job为manager的员工

select * from emp where job=upper('manager');

substr

查询姓名以M开头所有的员工

select * from emp where substr(ename, 1, 1)=upper('m');

length

取得员工姓名长度为5的

select length(ename), ename from emp where length(ename)=5;

trim

trim会去首尾空格,不会去除中间的空格。

取得工作岗位为manager的所有员工

select * from emp where job=trim(upper('manager  '));

str_to_date (必须严格按照标准输出)

● 查询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 (字符串,匹配格式)

date_format

查询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;

round

四舍五入

select round(123.56);

rand()

生成随机数

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

ifnull

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;

数据处理函数又被称为单行处理函数,特点:输入一行输出一行

全部教程