sql语法提高

1. 一个select语句的执行顺序
    a:from clause
    b:where clause
    c:group by clause
    d:select clause
    e:having clause
    f:order by clause 2.分组查询    在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数     中。 3. whare 和 having的区别    
  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
  •  4. Union VS Union All
        a:Union 会把两个结果集排序,并且除去重复的元素(效率差,轻易不要用)
        b:Union All仅仅是把两个结果集合并,没有排序,也不去除重复元素(效率好) 5. 尽量不要使用 is null 与 is not null作为查询条件
      任何包含null值的列都将不会被包含在索引中,如果某列数据中存在空值,那么对该列建立索引的性能提升是值得怀疑的,尤其是将null作为查询条件 的一部分时。建议一方面避免使用is null和is not null, 另一方面不要让数据库字段中存在null, 即使没有内容,也应利用缺省值,或者手动的填入一个值,如:’’ 空字符串。 
    函数作用支持性
    sum(列名) 求和
     
    max(列名) 最大值
     
    min(列名) 最小值
     
    avg(列名) 平均值
     
    first(列名) 第一条记录 仅Access支持
    last(列名) 最后一条记录 仅Access支持
    count(列名) 统计记录数 注意和count(*)的区别
    MySQL:

    GROUP_CONCAT(expr)  

    这个方法不错 可以将 分组的字符串 以,连接起来

    SELECT x.No1ModelName,GROUP_CONCAT(No1ModelDate) from product x
    GROUP BY x.No1ModelName;

    相关内容推荐