2024/4/16 MySQL语法面试题

本文讨论了SQL中的count()函数在主键和非主键情况下的差异,比较了内连接、外连接、on与where的区别,解释了delete、drop、truncate的差异,以及Union和Unionall的异同,并介绍了数据库的三大范式。
摘要由CSDN通过智能技术生成

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

首先,需要知道count()函数是返回表中某个列的非null值的数量。
所以,如果非主键不能为null,则结果相同。
如果非主键可以为null,则结果可能不同。

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

count(*) = count(1) > count(主键) > count(非主键)

count(*) 相当于 count(0) = count(1)

count(主键) 是对主键进行遍历,相比于count(*)和count(1)多了一步读取主键值。所以相对会慢一点。
count(非主键) 会采用全表扫描的方式来技术。所以效率最差。

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

内连接和外连接都用于连表查询。
内连接是只返回两个表匹配的数据行,外连接可以返回两个表匹配和不匹配的数据行。

外连接又分为左外连接和右外连接:
左外连接:返回左表中的所有行和右表中匹配的行。如果右表中没有匹配的行,则用null值填充。
右外连接:返回右表中的所有行和左表中匹配的行。如果左表中没有匹配的行,则用null值填充。

外连接时 on 和 where 过滤条件区别?

on 用于指定两个表之间的关联条件。
where 用于对连接后的结果进一步筛选。

having 和 where 的区别

where 是在 group by 之前进行筛选。
having 是在 group by 之后进行筛选,可以使用聚合函数。

delete、drop、truncate 有什么区别?

delete 是DML语言,只删除指定数据。而且,delete 删除数据只是给数据打上删除标签,目的是为了空间复用,所以delete删除数据后,磁盘大小不会缩减。
drop 是删除表结构和表中所有的数据,truncate 是只删除表中所有的记录,表结构不会被删除,drop 和 truncate 删除的数据都是不可以回滚的,并且删除表会立即释放磁盘空间。
从删除表的性能来看,drop > truncate > delete。

Union 和 Union all 的区别

union:合并完需要去重
union all :合并完不去重

数据库三大范式是什么?

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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值