我第一次学习SQL,我的老师说一个查询总是会返回某种信息,而一个事务将使数据被读取或放入数据库中。我感到困惑,因为为什么人们会说在SQL中INSERT是一个查询呢?能否请有经验的人解释一下给初学者听呢?
我第一次学习SQL,我的老师说一个查询总是会返回某种信息,而一个事务将使数据被读取或放入数据库中。我感到困惑,因为为什么人们会说在SQL中INSERT是一个查询呢?能否请有经验的人解释一下给初学者听呢?
一个查询通常是指SELECT
语句,但也可能指数据修改,如 UPDATE
, INSERT
, DELETE
, 和 MERGE
,这些是常见的 DML(“数据修改语言”)语句。个人而言,我会将这四个操作称为 DML 语句,并将 查询 保留给 SELECT
语句;我认为这是一个有用的区分。
数据库实现了一套称为 ACID 属性的属性集。它们基本上意味着任何 SQL 语句都可以看到一致的数据,无论数据库中正在发生什么。简单地说,所有操作都是串行化的 - 一个语句在另一个开始之前完成,即使在多用户环境中也是如此。串行化确保操作相互隔离。在实践中,串行化非常昂贵,因此数据库具有其他机制来确保完整性,但它在学习概念时是一种有用的抽象。
什么是事务?事务是数据库用来确保在修改数据时数据完整性的机制。事务通常由一个修改数据的语句组成。但这并不是必需的。实际上,在单个事务内可以有复杂的数据转换。
事务的三个关键操作是:
注意:许多数据库有降低数据完整性的选项。对于那些知道自己在做什么的用户来说,这些选项可能很有用。
值得一提的是,如果数据库中的所有操作都是 SELECT
语句,则不需要事务。数据不会发生变化,因此数据的视图是一致的。因此,通常情况下,事务与 DML 语句相关联。
简单来说,查询(Query)是一条指令,如SELECT、UPDATE、DELETE等
,而事务(Transaction)是一组查询,用于执行特定任务
选择账户
、验证余额
、扣除余额
和存入余额
,因此这4个查询可以组合在一起形成一个事务。在使用SQL数据库时,你会遇到事务和查询。以下是一个简单的解释:
这意味着一个事务包含了一些交互,而查询是其中一种交互的示例。需要知道的重要信息是,事务就像在线购物一样。你可以操作并标记想要购买的物品,但只有当你点击“购买”按钮后,你才会最终获得并支付商品。对于事务来说,这意味着它们需要在之后提交,否则它们将被撤销(回滚)。通常情况下,你的框架会在每次交互后自动提交更改并结束事务。
如果你有更多问题,请留言。