mysql学习小贴士

一.count(*)、count(列)、count(1)的区别

count(1)会统计表中的所有记录数,包含字段为null的记录

count(列)会统计该字段在表中出现的次数,忽略字段为null的情况,即不统计字段为null的记录

执行效果上:

count(*)包含了所有的列,相当于行数,在统计结果的时候,不会忽略列值为null

count(1)包含了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为null

count(列)只包括列名那一列,在统计结果的时候,会忽略列值为null的计数,即某个字段值为null时,不统计

执行效率上:

count(列)会比count(1)快

列名不为主键,count(1)会比count(列)快

如果表多个列并且没有主键,则count(1)执行优于count(*)

如果有主键,则select count(主键列)的效率是最快的

如果表只有一个字段,则select count(*)最快

 

二.where、having、on的区别

数据库执行顺序

(8)select (9)distinct (11)top num(select list) (1)from (3)<join_type>join (2)on (4)where (5)group by

(6)with (7)having (10)order by

where是在group by之前执行的,所以where后面不能使用聚合函数来进行数据过滤

只能使用from表里的字段来进行数据过滤

having是在group by 之后执行的,那么这些数据是已经分过组的了,可以使用聚合函数来进行数据的分组过滤

举例说明一下

 

三.空字符串和空的区别

空字符串表现为"",占用内存空间

空表现为null,不占用内存空间

注:oracle数据库中没有区分空字符串和空,其他大多数数据库都有区分

 

四.delete和truncate的区别

delete删除数据后没有释放内存空间,没有重置自增列

truncate删除数据后会释放内存空间,重置自增列,从1开始计数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值