大小写规范和规则
- MySQL在Windows下:字段名、和记录中的字符串、保留字 不区分大小写
- 起名建议小写,关键字建议大写
关于null
- null参与运算结果一定为0
- 比较运算符
=
,只要有null参与返回值一定为0 关于null特殊的函数、关键字:
IFNULL(字段,返回值)
字段为null返回一个值
IS NULL
判断字符是否为null
<==>
安全比较符
7种联查:
匹配规则:
执行优先级 :
**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语法新特性
自然连接:
USING连接:
函数
- 函数分类:数值函数、字符串函数、日期与时间函数、流程控制函数、加密与解密函数、获取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) ;