2024/4/19 2024/4/16 MySQL语法面试题

本文讨论了SQL中的count函数在主键和非主键上的差异,以及count(*)、count(1)的效率比较。还介绍了内连接、外连接的区别,on和where在关联查询中的作用,having与where的区分,以及delete、drop、truncate的异同,以及Union和Unionall的去重特性,最后概述了数据库的三大范式。

count(主键)和 count(非主键)结果会有不同吗?

count(主键)和 count(非主键)结果可能不同,也可能相同。
主要是因为count()函数是对非null值进行个数统计。
但是非主键可能有null值,所以可能结果会小于count(主键)的结果。

count(*)、count(1)、count(主键)、count(非主键)效率排行

count(*)相当于count(0),与count(1)的效率相同。
count(主键)是对主键值进行遍历,比count(1)多了遍历一个主键值,所以count(1)效果更好
count(非主键)是对整表进行遍历,所以最慢。

MySQL内连接、外连接有什么区别?

内连接和外连接都用于联表查询。
内连接返回两个表匹配的行,外连接返回两个表匹配和不匹配的行。

外连接时的on和where过滤条件有什么区别?

on是对两表连接条件的描述。
where是对连接之后的表的过滤条件。

having和where的区别

having是对group by之后表的过滤条件,可以使用聚类函数。
where是对group by之前表的过滤条件。

delete、drop、truncate 有什么区别?

delete是对数据的逻辑删除,drop是删除整表,truncate是删除表中所有数据。

Union 和 Union all 的区别

union合并后表需要去重,union all合并后表不需要去重

数据库三大范式是什么?

第一范式要求所有数据都具有不可再分的性质
第二范式要求解决部分依赖的问题
第三范式要求解决传递依赖的问题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值