SQL中的查询和事务有什么区别

  • 本文关键字:区别 事务 查询 SQL sql
  • 更新时间 :
  • 英文 :


第一次学习SQL时,我的老师说查询总是会返回某种信息,而事务会使数据被读取或放入数据库。我很困惑,因为为什么人们会说INSERT是SQL中的一个查询?有人能给初学者解释一下吗?

查询通常指SELECT语句,但也可能指数据修改——UPDATEINSERTDELETEMERGE是常见的DML("数据修改语言"(语句。就我个人而言,我会将这四个操作称为DML语句,并为SELECT语句保留查询;我觉得这是一个有用的区别。

数据库实现了一组称为ACID属性的属性。基本上说,任何SQL语句都可以看到一致的数据,而不管数据库中发生了什么。考虑这些问题的一个简单方法是,所有操作都是序列化的——一个语句在另一个语句开始之前完成,即使在多用户环境中也是如此。序列化可确保操作彼此隔离。在实践中,序列化是非常昂贵的,数据库有其他机制来确保完整性,但在学习概念时,它是一个有用的抽象。

什么是交易?事务是数据库在修改数据时用来确保数据完整性的机制。事务通常由一条修改数据的语句组成。但这并不是必须的。事实上,您可以在单个事务中进行一组复杂的数据转换。

交易的三个关键操作是:

  • 开始事务:告诉数据库事务正在开始。事务内的所有变化对于其他用户是不可见的;"活动">
  • COMMIT TRANSACTION:使所有更改在数据库中可见。从概念上讲,这是瞬间发生的。数据库保证其他用户不会看到数据的部分更改(即强制数据完整性(
  • 回滚事务:撤消所有工作。没有其他用户看到这些更改

注意:许多数据库都有削弱数据完整性的选项。对于那些知道自己在做什么的用户来说,这些对于性能原因非常有用。

我应该注意的是,如果数据库上的所有操作都是SELECT语句,那么事务就没有必要了。数据没有变化,因此数据的视图是一致的。因此,事务通常与DML语句相关联。

一个简单的解释就像这个Query is a single instruction like SELECT, UPDATE, DELETE etctransaction is group of query to perform particular task

  • 在货币交易操作的情况下,我们需要执行多个任务,如select accountverify balancedebit balancecredit balance,因此这4个查询可以一起形成一个txn

使用SQL数据库可以同时获得事务和查询。这里有一个简单的解释:

  • 查询是对表内CRUD(创建(insert(、更新(set
  • 事务或多或少是执行单个或多个语句/查询/操作的过程

这意味着一个事务包含一些交互,而一个查询就是一种交互的例子。重要的是要知道,交易就像在网上购买东西。你操作并标记你想买的东西,但前提是你点击";购买";你最终会得到并支付这些东西。对于事务,这意味着它们需要在之后提交,否则将再次撤消(回滚(。大多数情况下,你的框架会在每次交互后自动提交更改,并用它结束事务

评论,以防你有更多问题。

最新更新