数据库排序查询和单行函数

一,排序查询

        语法: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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值