truncate、delete与drop区别?having和where的区别?

truncate、delete与drop区别

相同点:
  1. truncate 和不带 where 子句的 delete 、以及 drop 都会删除表内所有数据。
  2. drop truncate 都是 DDL 语句(数据定义语言),执行后会自动提交。
不同点:
  1. truncate delete 只删除数据不删除表的结构;drop 语句将删除表的结构被依赖的约束、触发器、索引;
  2. 一般来说,执行速度: drop > truncate > delete

在数据库操作中,DELETE是可恢复的操作,而TRUNCATEDROP是不可恢复的操作。 

truncatedelete的区别

  1. 操作方式:TRUNCATE TABLE是一种DDL(数据定义语言)操作,用于快速删除整个表中的数据,包括释放表占用的存储空间,但不会记录在事务日志中。DELETE是一种DML(数据操纵语言)作,用于逐行删除指定条件下的数据,并记录在事务日志中。
  2. 返回值:TRUNCATE TABLE操作不返回任何删除的行数或删除结果,而DELETE操作返回已删除的行数。
  3. 回滚:TRUNCATE TABLE不可回滚,即无法撤消删除操作DELETE语句可以在事务中使用,可以通过ROLLBACK来撤销删除操作。
  4. 触发器:TRUNCATE TABLE不激活表上的触发器,而DELETE语句会触发与表关联的DELETE触发器。
  5. 速度和效率:由于TRUNCATE TABLE是一种快速删除整个表中的数据的操作,相对于DELETE句,它通常更快且具有更好的性能

havingwhere的区别

  • WHERE在查询之前对行进行筛选,而HAVING在分组后对结果进行筛选
  • WHERE可以在任何SELECT查询中使用,而HAVING通常与GROUP BY一起使用。
  • WHERE对单个行进行筛选,HAVING对分组后的结果进行筛选。
假设我们有一个名为 orders 的表,包含以下列: order_id customer_id order_date
total_amount 。我们想要根据销售总额分组,并找出销售总额大于 1000 的顾客。

使用WHERE子句进行筛选:

SELECT customer_id, SUM(total_amount) AS total_sales
FROM orders
WHERE total_amount > 1000
GROUP BY customer_id;
在这个例子中, WHERE 子句用于在查询之前对行进行过滤,筛选出销售总额大于 1000 的订单。然后,根据顾客ID 进行分组,并计算每个顾客的销售总额。

使用HAVING子句进行筛选:

SELECT customer_id, SUM(total_amount) AS total_sales
FROM orders
GROUP BY customer_id
HAVING total_sales > 1000;
在这个例子中,我们先将订单表按顾客 ID 分组,然后计算每个顾客的销售总额。然后,在 HAVING 子句中,我们筛选出销售总额大于1000 的顾客。需要注意的是, HAVING 子句在分组之后进行筛选。
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值