数据库处理函数

目录

一、单行处理函数

二、多行处理函数(分组函数) 


一、单行处理函数

单行处理函数常见的有哪些?

1、lower 转换小写        select lower(ename) as ename from emp;

2、upper 转换大写        select upper(name) as name from t_student;

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

select substr(ename, 1, 1) as ename from emp;        注意:起始下标从1开始,没有0.

找出员工名字第一个字母是A的员工信息?

        第一种方式:模糊查询        select ename from emp where ename like 'A%';

        第二种方式:substr函数      select ename from emp where substr (ename,1,1) = 'A';

        首字母大写        select upper(substr(name,1,1))  from t_student;

                                  select concat (upper (substr (name,1,1)) ,substr (name,2,length (name) - 1))                         as result from t_student;

4、length 取长度        select length (ename)enamelength from emp;

5、trim 去空格        select * from emp where ename = trim('    KING');

6、str_ to date 将字符串转换成日期

7、date format 格式化日期

8、format 设置千分位

9、round 四舍五入        

        select round(1236.567,1) as result from emp;//保留1个小数

        select round(1236.567,2) as result from emp;//保留2个小数

        select round(1236.567,-1) as result from emp;//保留到十位。

10、rand()生成随机数        select rand() from emp;

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

注意:NULL只要参与运算,最终结果一定是NULL。为了避免这个现象,需要使用ifnull函数。ifnull函数用法:ifnull(数据,被当做哪个值)如果“数据”为NULL的时候,把这个数据结构当做哪个值。

补助为NULL的时候,将补助当做0        

        select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;

12、concat函数进行字符串的拼接        select concat(empno,ename) from emp;

13、case..when..then.when..then..else..end

当员工的工作岗位是MANAGER的时候,工资上调108,当工作岗位是SALESMAN的时候,工资上调508,其它正常。|(注意:不修改数据库,只是将查询结果显示为工资上调)

select ename,job,sal from emp;

select

        ename,

        job,

        (case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newsal

from

        emp;

二、多行处理函数(分组函数) 

多行处理函数的特点:输入多行,最终输出一行。

5个:count 计数          select count (ename) from emp;

         sum 求和            select sum(sal) from emp;

         avg 平均值          select avg(sal) from emp;

         max 最大值         select max(sal) from emp;

         min 最小值          select min(sal) from emp;

注意:

        1、分组函数在使用的时候必须先进行分组,然后才能用。

        2、如果没有对数据进行分组,整张表默认为一组。

        3、分组函数自动忽略NULL,你不需要提前对NULL进行处理。

        4、分组函数中count(*)和count(具体字段)有什么区别?

                count(具体字段):表示统计该字段下所有不为NULL的元素的总数。

                count(*):统计表当中的总行数。(只要有一行数据count则++)因为每一行记录不可

        能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。

        5、分组函数不能够直接使用在where子句中。

                因为分组函数在使用的时候必须先分组之后才能使用。where执行的时候,还没有分

        组。所以where后面不能出现分组函数。

        6、所有的分组函数可以组合起来一起用。

分组查询

        1、在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作。这个时候我们需要使用分组查询。

        select

                ...

        from

                ...

        group by

        ...

        计算每个部门的工资和?         select job,sum(sal) from emp group by job; 

        注意:在一条select语句当中,如果有group by语句的话,select后面只能跟:参加分组的字段,以及分组函数。其它的一律不能跟。  

        找出每个部门的最高薪资?        select deptno,max (sal) from emp group by deptno;
     

        2、使用having可以对分完组之后的数据进一步过滤。having不能单独使用,having不能代替where,having必须和group by联合使用。

        eg:要求显示最高薪资大于3000

                select deptno,max (sal) from emp group by deptno having max(sal) > 3000;

                select deptno,max (sal) from emp where sal > 3000 group by deptno;      

        优化策略:where和having,优先选择where,where实在完成不了了,再选择having。 

   3、将之前的关键字全部组合在一起,来看一下他们的执行顺序?

                select...

                from...

                where...

                group by...

                having...

                order by...

        以上关键字的顺序不能颠倒1.from  2. where  3. group by  4.having  5.select  6.order by

        从某张表中查询数据,先经过where条件筛选出有价值的数据。对这些有价值的数据进行分组。分组之后可以使用having继续筛选。select查询出来。最后排序输出!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人spider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值