MySQL之sql字句

yuluodisuihe 2018-09-18 原文

MySQL之sql子句

一、sql子句
   1、作用
      <1> select:基本的查询语句,用来表中查询数据,确定结果集的内容。
      <2> from(join):确定数据的来源,生成相应的临时表
      <3> where:对from子句得到的临时表进行条件筛选,得到相应的临时表
      <4> group by:把条件筛选后的结果进行分组
      <5> having:与where子句作用类似,但是只作用于分组后的数据。对分组后的数据进行相关判断。
      <6> order by:对生成的结果集进行相应的排序。
      <7> limit:指定返回的结果集的行数。
 
    2、执行顺序
          from -> where -> select -> group by -> having -> order by -> limit
         注:1、where中不能使用聚合函数,因为聚合函数针对结果集。
                2、where中不能使用select中创建的别名,因为where在select前执行。
                3、group by后的每个分组只会返回一条记录,对于多个值可在select中使用聚合函数进行合并
                4、group by开始可以使用select中创建的别名。
 
    3、实例
1 select a.user_id as uid,count(a.id) as count
2 from application as a
3 where a.created_at > '20180101'
4 group by uid
5 having count > 0
6 limit 8
 
二、union 和 in 
   1、union:总是会创建一个临时表,然后再将数据返回给用户。且不加all时会进行去重,影响效率
 1 (select a.id,a.user_id
 2  from application as a
 3  limit 20
 4 )
 5 union all
 6 (select a.id,a.user_id
 7  from application as a
 8  limit 20
 9 )
10 limit 50
    注:limit 20是对两个select语句分别limit,最后的limit对union all形成的临时表进行limit。虽然使用了limit 50,但临时表实际只有40条数据。
 
   2、in:可在where子句中规定多个值。
    注:1、in() 关联子查询效率比较差,避免使用。
           2、避免使用多个范围条件,即where中使用多个in,会导致无法完全使用多列索引
 
三、count
    作用:1、使用count(*)统计行数
              2、使用count(col)统计某个列值的数量,但是要求这个列值是非空的(不统计null)
     注:count(*) 会忽略所有的列而直接统计行数,而不会扩展为所有的列。
 
四、group by 和 distinct
   1、group by:聚合函数,根据不同的列进行分组。但只会返回每个分组的一条记录,故可以实现去重的效果。
   2、distinct:用于去重。
select count(distinct a.id)              select distinct a.id, a.uer_id                    select a.id, distinct a.user_id
from application as a                    from applicatin as a                              from application as a
# 对id进行去重后count                      # 对id、user_id去重                                # 语法错误
  注:group by的效率低于distinct
 
 
 
 
 
 
 
发表于 2018-09-18 22:29 雨落滴碎荷 阅读() 评论() 编辑 收藏

 

版权声明:本文为yuluodisuihe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yuluodisuihe/p/9671853.html

MySQL之sql字句的更多相关文章

随机推荐

  1. 移动端与H5页面像素的差异与关系

      最近工作任务主要是移动端内嵌H5页面,一次与原生进行像素交互下,发现了这个天坑,再次做个记录...

  2. WeihanLi.Npoi 1.7.0 更新

    WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1. […]...

  3. .NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有

    全国成百上千家互联网彩票公司,都有足球赛事资料库系统,但是他们不共享,都是自己采集,而有大量的业余研究人员,特 […]...

  4. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多。虽然扩展库,比如pandas和Numpy,使处理大数据 […]...

  5. Oracle的时间计算

    1.时间的变化 (1)时间的变化 select sysdate "当前时间",sysdate+1 "加一天", […]...

  6. [UWP] WinUI 2.6 使用指南

    2021年6月24日,Windows 11 正式对外发布,对于UWP开发者来说,这一天同样值得纪念,因为Win […]...

  7. 要想成为一位优秀的工程师?一定要具备这些职业技能!

    严谨度 目标: 做事严谨,无偏差,完成度高,干净利索 相关技能: 目标明确度 练习方式: 日报 任务 编码规范 […]...

  8. 等额本息计算公式推导 – hduhans

    等额本息计算公式推导 2017-04-27 23:17  hduhans  阅读(23630)  评论(3)  […]...

展开目录

目录导航