Mysql查询——学习阶段

1、开篇

搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间。另外还有一个地方需要注意的是我们写的sql语句。

一个拥有多年开发的资深开发者可以相比于刚从事开发经验不足的开发者写的sql效率要高些,数据量小基本没有什么关系。但是假如你在拥有高数据的BAT,或者国家企业,那这

条sql的差异就明显就大了。所以,能写出好的sql是相当重要的。

2、简单的查询sql

(1)select * from pj_appoint_order;    查询所有的约单,*表示这个表中所有的字段

(2)select id,user_name,user_phone from pj_appoint_order;    查询所有约单中id,user_name,user_phone这几个字段。

       当然你可以改变这个表中查询出来表中字段的名称,例如:

       select id as '编号',user_name as '用户名称',user_phone as '用户手机' from pj_appoint_order;

       select id  '编号',user_name  '用户名称',user_phone  '用户手机' from pj_appoint_order;

       有as和没有都可以。

(3)select distinct user_name from pj_appoint_order; distinct去掉重复的用户名(保留一个)

(4)select * from pj_account where score>88;查询用户积分大于88的用户,不包含88.

       当然,在我们mysql中
         大于号:>
         小于号:<
         大于等于>=
         小于等于<=
         不等于 != 或者 <>

(5)select * from stu where type ='超级会员' and score >90;   查询用户为超级会员并且积分大于90的用户所有信息

(6)表达式的学习:  not , or  ,in , between  and

       select * from pj_account where score between 75 and 85;

       select * from pj_account where not type='超级会员';

       select * from pj_account where type!='超级会员';

       select * from pj_account where score = 70 or score=81 or score=59;  查询用户积分为70或者81或者59的用户信息

      ---------------------------------查询面积为400或者500或者600的约单----------------------------------------------------------

       SELECT * FROM pj_appoint_order WHERE acreage IN(400,500,600);

       SELECT * FROM pj_appoint_order WHERE acreage = 400 OR acreage=500 OR acreage=600;

(7)like 与 通配符的使用
       _:占一个字符。
       %:多个字符进行匹配
     SELECT * FROM pj_appoint_order WHERE user_name LIKE '%哥%'

     SELECT * FROM pj_appoint_order WHERE user_name LIKE '_哥_'

(8)一般而言查询值为null的情况比较少,但是也是会存在的,查询null需要用is

      select * from pj_account where score is null;

      select * from pj_account where score is not null;

(9)排序 order by   mysql默认的是升序排序(asc)

     select * from pj_account order by id desc

(10) 聚集函数。聚合函数不对null进行操作
    count()//统计数量
    sum()//求和
    max() //最大
    min()//最小
    avg()//平均

    select count(*) from pj_account; 查询用户表中有多少条记录,其他的类似。可以自己试试。

    select round( avg(ifnull(score,0)),2) from pj_account; 求平均成绩。

    解析:如果积分是null则赋值为0,然后求平均值,求完平均值后保留两位小数。

(11) where 与 having 区别
         1.     having  对聚集函数进行条件筛选 ,如果最后的条件是 聚集函数 那么我们就用 having
         2.  具体的某一条数据 
      综合我们学习的查询相关关键字:
      书写的顺序:
      select,from,where,group by,having,order by;
      执行的顺序:
          from:找到我们要操作的表。
          where,group by,having, 相当与我们的条件
          select :查询
          order by:排序。

3、一份耕耘一份收货!兢兢业业,必有丰收。

posted @ 2016-12-29 11:16  陶庭开  阅读(259)  评论(0编辑  收藏  举报