一,排序查询
语法:select 查询列表 from 表名 where 筛选条件 order by 排序列表 【desc,asc】
案例一,查询员工信息,要求工资从高到底排序:DESC(高到低),ASC(低到高)默认为升序
select * from emp order by salary DESC;
案例二,查询部门编号=>90的员工信息,按入职时间的先后顺序进行排序
select * from emp where deptno>=90 order by hiredate ASC;
案例三,按年薪的高低显示员工的信息和年薪 【按表达式排序】
select * salary*12*(1+IFNULl(commission,0))年薪 from emp order by salary*12*(1+IFNULL(commission,0))DESC;
案例四,按年薪的高低显示员工的信息和年薪 【按别名排序】
select * salary*12*(1+IFNULl(commission,0))年薪 from emp order by 年薪 DESC;
案例五,按姓名的长度显示员工的姓名和工资【按函数排序】Length(‘ ’)
select Length(last_name) 字节长度,last_name,salary from emp order by Length(last_name) DESC;
案例六,查询员工信息,要求按工资排序,再按员工编号排序【按多个字段排序】
select * from emp order by salary ASC ,empno DESC
二,常见函数:
1, 功能:类似于java中的方法;
(1)隐藏了实现细节,提高了代码的重用性
(2)调用:select 函数名 () 【from 表】;
(3)特点:叫什么(函数名),干什么(函数的功能)
(4)单行函数:concat ,length,ifnull,分组函数:(做统计使用)又称统计函数
(5)单行函数:字符函数,数学函数,日期函数,其他函数,流程控制函数
2,单行函数
(1)字符函数:
案例一:length 一个中文占三个字节,一个英文占一个字节。
案例二:concat 拼接字符串
案例三:upper,lower 大小写
案例四:substr,substring 方法重载,substr (“”,下标,长度)索引从1开始,截取7后面的字符
(1)姓名中首字符大写,其他字符小写然后用_拼接,显示出来
select concat (upper(substr(“last_name”,1,1)),'_',lower(“last_name”,2))out_put from emp
案例五:instr 返回起始索引;instr(‘1233’,1),返回索引第一次出现的索引,找不到返回0
案例六:trim 去掉前后指定字符。trim ('a' from ' a 张三a ')
案例七:LPAD 从左边开始填充指定字符,指定到长度 lapd(“”,2,“*”)
案例八:RPAD 从右边开始填充指定字符,指定到长度 lapd(“”,2,“*”)
案例九:replace
3,数学函数:
案例一,round:四舍五入 select round(1.2879,2);保留两位小数
案例二,cell 向上取整,返回>=该参数的最小整数 select cell(-1.02);
案例三,floor 向下取整,返回<=该参数的最大整数 select cell(-9.99);
案例四,truncate 截断 select truncate (1.65,1)截断,不会四舍五入
案例五,mod 取余 与%相似 整数除整数,还是整数,不会保留小数。a-a/b*b
4,日期函数
案例一,now 返回当前系统日期+时间
案例二,curdate 返回当前系统日期,不包含时间
案例三,curtime 返回当前系统时间,不包含日期
案例四, 可以获取指定的部分,年,月,日,时,分,秒 monthname 英文
案例五,str_to_date 将字符通过指定的格式转成日期 str_to_date("1999-3-2","%Y-%c-%d")
进行转换可以提高业务能力:
案例六,date_format:将日期转换为字符,date_format(now(),“%y年%m月%m日”)
5,其他函数
(1)version()版本 database()数据库 user()
6,流程控制函数
(1)if 函数,if else函数 的效果
案例一, select if(10>5,'大',‘小’)
select last_name, commission ,if(commission is null ,‘没奖金’,‘有奖金’) 备注 from emp
(2),case函数 case的使用方式一,switch case 的效果
mysql中: case 要判断的字段或者表达式
when 常量1 then 要显示的值1或者语句1;
when 常量2 then 要显示的值2或者语句2;
... else 要显示的值或者语句;
end
案例二:查询员工的工资,要求 部门号=30,显示的工资为1.1倍 部门号=40,显示的工资为1.2倍 部门号=50,显示的工资为1.3倍 其他部门,显示的工资为原工资
select salary 原始工资,deptno,
case deptno
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary
end as 新工资
from emp
(3)case的使用方式二:类似多重if
case
when 条件1 (true or false)then 要显示的值1或者语句1
when 条件2 (true or false)then 要显示的值2或者语句2
... else要显示的值n或者语句n
end
案例三:查询员工的工资的情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别
select empname , salary ,case
when salary>20000 then A
when salary>150000 then B
when salary>10000 then C
else D
end AS '工资级别'
from emp;
7,单行函数:
字符函数:length,concat,substr,instr,trim,upper,lower,lapd,rpad,replace
数学函数: round,ceil,floor,truncare,mod
日期函数:now,curdate,curtime,year,month,monthname,day,hour,minute,second,str_to_date,date_format
其他函数:version ,database,user
控制函数:if,case