zoukankan      html  css  js  c++  java
  • mysql之select+五种子句的理解

    select 可以包含很复杂,很丰富的逻辑,最能考验一个人的逻辑思维能力和sql语句的掌握程度,我是这么认为,以前的很多次面试几乎都死在它手上,所以才有了今天的这篇日志,下定决心把它学好。

    where 表达式

    我们要这样理解,表达式放在表中的哪一行成立,哪一行就取出来

    =,>,<,>=,<=,!=/<>,and,or,between and,in,not

    group by

    分组,一般和统计函数配合使用才有意义

    max,min,avg,count,sum

    having 表达式

    数据在表中,表在硬盘或内存以文件形式存在

    和where区别:where 是针对表文件发挥作用的。

    查询出的结果,也可以看成一张表,其文件一般临时存在于缓冲区

    having就是针对查询结果发挥作用的。

    所以应该现有where,才有having

    order by 排序

    可以针对字段进行排序,order by 字段1 [asc] 升序,[desc] 降序

    有可能一个字段排序不出结果,可以选用其他字段继续排序,

    order by 字段1 [asc/desc],字段2 [asc/desc]

    limit [offset,] N

    offset:偏移量

    N:取出的条目

    例如:要取某张表3-5行的记录,

    select * from tableName limit 2,3;

    注意:where->group by->having-order by->limit,必须按顺序出现。

    子查询(重点)

    where型的子查询:把内层查询的结果作为外层查询比较的条件

    差不多这种形式:

    select * from tableName where tid = (select tid from ...);

    from型子查询:把内层查询的结果,当做一张临时表,供外层继续查询

    形式:select * from (select * from ...)  as temp group by...;

    exists型子查询:把外层的查询结果拿到内层,看内层的查询是否成立

    形式:select oid from outTable o where exists(select * from inTable i where i.oid=o.oid);

  • 相关阅读:
    Android组件化框架设计与实践
    浅谈Android进阶之路
    Android APP 性能优化的一些思考
    有关 Hybrid 开发模式实践总结
    开发人员必备的技能——单元测试
    有关Android插件化思考
    人生的意义到底是什么?
    Asp.Net Core 3.1学习-读取、监听json配置文件(7)
    Asp.Net Core 3.1学习-依赖注入、服务生命周期(6)
    Asp.Net Core 3.1学习- 应用程序的启动过程(5)
  • 原文地址:https://www.cnblogs.com/a757956132/p/4314912.html
Copyright © 2011-2022 走看看