大聊MySQL查询(2)

在《大聊MySQL查询(1)》中已经介绍了,简单查询、条件查询、分组查询、分组函数。

(本文中用到的数据库下载:https://download.csdn.net/my

现在,再介绍查询的接下来的几个内容,首先我还是把查询顺序图放在这里:

   

1、order by    前面提到过 order by 现在详细介绍一下

        按照薪水由小到大排序(系统默认由小到大)                select * from emp order by sal;

                注: select * from emp order by sal asc; (这是系统默认的升序排列方式,所以可以省略asc)

                        select * from emp order by sal desc; (降序排列方式)

         取得job为MANAGER的员工,按照薪水由小到大排序         select * from emp where job='MANAGER' order by sal;

                注:如果包含where语句order by必须放到where后面,如果没有where语句order by放到表的后面。其实也就是说,先按照一定的条件进行筛选,然后将结果按照升序或降序显示出来。

         按照job和薪水升序     select * from emp order by job,sal;

               注:其实也就是说,先按照job的升序排列,在此基础上,如果有多条记录的job相同,则再把同一种的job按照sal的升序排列。

2、数据处理函数/单行处理函数

        简单说一下这一部分的内容,(这部分内容,主要是摘录 power node 那个老师讲的)

Lower

转换小写

upper

转换大写

substr

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

length

取长度

trim

去空格

str_to_date

将字符串转换成日期

date_format

格式化日期

format

设置千分位

round

四舍五入

rand()

生成随机数

Ifnull

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

     选几个来说一下

     a)  substr         查询姓名以M开头所有的员工              select * from emp where substr(ename, 1, 1)=upper('m');

     b)  trim             取得工作岗位为manager的所有员工      select * from emp where job=trim(upper('manager  '));

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

     c) str_to_date    查询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');

    d) 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;

    e) format      查询员工薪水加入千分位和保留两位小数        select empno, ename, Format(sal, 2) from emp;

    f) 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;

    g)  ifnull      select ifnull(comm,0) from emp;        如果commnull 就替换为 0

3、子查询

       这个地方我也不说什么,没有什么好说的,多写几个关于子查询的代码

         

    子查询就是嵌套的select语句,可以理解为子查询是一张表

4、limit 的使用

 

     取得前5条数据    select * from emp  limit 5;

     从第二条开始取两条数据   select * from emp  limit 1,2;

     limit 起始位置 ,长度

    算是完了吧,其实没有太多好写的,多练练可能比较好!!!!!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_24369689/article/details/83542092