zoukankan      html  css  js  c++  java
  • MySQL-sql语句

    mysql varchar类型字段=0取出的是什么

    1.表字段applyStatus设计为varchar型,在查询语句中条件写的是写的是applyStatus=0 而不是applyStatus='0',结果中查出来一堆applyStatus为null的数据

    偶然发现一个奇葩问题,varchar类型字段=0取出的东西什么都有,有中文,有数字字母组合,但是却不是全集,这是怎么回事?
    当比较数字和varchar时,mysql会把varchar转换为数字,首字符为数字0的,或者其他字符的都会转换为0,varchar类型字段=0 只能排除首字符为非零数字的字符串

    2.order by 与索引
    ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了。另一个是把结果选好之后再排序。

    order by的字段不在where条件不在select中     有排序操作 

    order by的字段不在where条件但在select中     有排序操作 

    order by的字段在where条件但不在select中     无排序操作 

    order by的字段在where条件但不在select中(倒序)     无排序操作

    结论: 

    当order by 字段出现在where条件中时,才会利用索引而无需排序操作。其他情况,order by不会出现排序操作。 

    一条SQL实际上可以分为三步。

    1.得到数据

    2.处理数据 

    3.返回处理后的数据 

    比如上面的这条语句select sid from zhuyuehua.student where sid < 50000 and id < 50000 order by id desc

    第一步:根据where条件和统计信息生成执行计划,得到数据。 

    第二步:将得到的数据排序。 

    当执行处理数据(order by)时,数据库会先查看第一步的执行计划,看order by 的字段是否在执行计划中利用了索引。如果是,则可以利用索引顺序而直接取得已经排好序的数据。如果不是,则排序操作。 

    第三步:返回排序后的数据。 

  • 相关阅读:
    认识Cookie和状态管理
    python之requests库使用问题汇总
    如何掌握所有的程序语言--王垠
    非 GUI 模式运行 JMeter 压力测试
    Python 如何将字符串转为字典
    python之operator操作符函数
    python3使用xlrd、xlwt、xlutils、openpyxl、xlsxwriter操作excel
    《敏捷软件测试:测试人员与敏捷团队的实践指南》
    Jmeter跨线程组传递变量
    Jmeter获取当前时间、历史时间、未来时间的方式
  • 原文地址:https://www.cnblogs.com/hongyedeboke/p/9372632.html
Copyright © 2011-2022 走看看