大小写规范和规则

  1. MySQL在Windows下:字段名、和记录中的字符串、保留字 不区分大小写
  2. 起名建议小写,关键字建议大写

关于null

  1. null参与运算结果一定为0
  2. 比较运算符=,只要有null参与返回值一定为0
  3. 关于null特殊的函数、关键字:

    IFNULL(字段,返回值) 字段为null返回一个值
    IS NULL 判断字符是否为null
    <==> 安全比较符

7种联查:

Screenshot_20220523_111932.jpg

匹配规则:

联表匹配图.png

执行优先级

**on > left join > where**

( on是先对表进行筛选再生成关联表,where是先生成关联表再对关联表进行筛选,on执行的优先级高于left join,而where的优先级低于left join

当我们使用on关键字时,会先根据on后面的条件进行筛选,条件为真时返回该行,由于on的优先级高于left join,所以left join关键字会把左表中没有匹配的所有行也都返回,然后生成临时表返回

where对与行的筛选是在left join之后的,也就是生成临时表之后才会对临时表进行筛选 )


union

union :取并集,并去重

union all :取并集


SQL99语法新特性

自然连接:SQL99语法新特性1.jpg

USING连接:
SQL99语法新特性2.png

函数

  • 函数分类:数值函数、字符串函数、日期与时间函数、流程控制函数、加密与解密函数、获取MySQL信息函数、聚合函数等。
  • 按照函数的角度分类:单行函数、聚合函数(分组函数、多行函数)

    单行函数

  • 可以相互嵌套

    聚合函数(分组函数、多行函数)

  • 在计算时会过滤null值

  • 不能相互嵌套

Group by

例子:select 字段A , AVG(字段B) from 表 where 字段C >1 Group by 字段A , 字段B having 字段D> 1 ;
字段B:主函数字段
字段A:非主函数字段

属性

  • 非主函数字段,必须在Group by当中

Group by当中的字段,可不出现Select当中

  • group by 声明在from之后,where之后,order by之前,ltmit之前
  • group by 后加 with rollup ,查询结果尾部会有一个聚合函数总计算,不能与order by一起使用

    与having、where

  • where不能使用聚合函数作为过滤条件

  • 过滤条件有聚合函数时用 having ,没有having、where都可以(建议用where,效率高)
  • 有Group by 在使用having

子查询

把一个查询结果作为一个临时表,在其他**过滤条件**和**from后表**和**order by**中使用
select * from (select * from 表A)where 字段1>(select * from 表B) ;