第一次学习SQL时,我的老师说查询总是会返回某种信息,而事务会使数据被读取或放入数据库。我很困惑,因为为什么人们会说INSERT是SQL中的一个查询?有人能给初学者解释一下吗?
查询通常指SELECT
语句,但也可能指数据修改——UPDATE
、INSERT
、DELETE
和MERGE
是常见的DML("数据修改语言"(语句。就我个人而言,我会将这四个操作称为DML语句,并为SELECT
语句保留查询;我觉得这是一个有用的区别。
数据库实现了一组称为ACID属性的属性。基本上说,任何SQL语句都可以看到一致的数据,而不管数据库中发生了什么。考虑这些问题的一个简单方法是,所有操作都是序列化的——一个语句在另一个语句开始之前完成,即使在多用户环境中也是如此。序列化可确保操作彼此隔离。在实践中,序列化是非常昂贵的,数据库有其他机制来确保完整性,但在学习概念时,它是一个有用的抽象。
什么是交易?事务是数据库在修改数据时用来确保数据完整性的机制。事务通常由一条修改数据的语句组成。但这并不是必须的。事实上,您可以在单个事务中进行一组复杂的数据转换。
交易的三个关键操作是:
- 开始事务:告诉数据库事务正在开始。事务内的所有变化对于其他用户是不可见的;"活动">
- COMMIT TRANSACTION:使所有更改在数据库中可见。从概念上讲,这是瞬间发生的。数据库保证其他用户不会看到数据的部分更改(即强制数据完整性(
- 回滚事务:撤消所有工作。没有其他用户看到这些更改
注意:许多数据库都有削弱数据完整性的选项。对于那些知道自己在做什么的用户来说,这些对于性能原因非常有用。
我应该注意的是,如果数据库上的所有操作都是SELECT
语句,那么事务就没有必要了。数据没有变化,因此数据的视图是一致的。因此,事务通常与DML语句相关联。
一个简单的解释就像这个Query is a single instruction like SELECT, UPDATE, DELETE etc
和transaction is group of query to perform particular task
- 在货币交易操作的情况下,我们需要执行多个任务,如
select account
、verify balance
、debit balance
和credit balance
,因此这4个查询可以一起形成一个txn
使用SQL数据库可以同时获得事务和查询。这里有一个简单的解释:
- 查询是对表内CRUD(创建(insert(、更新(set
- 事务或多或少是执行单个或多个语句/查询/操作的过程
这意味着一个事务包含一些交互,而一个查询就是一种交互的例子。重要的是要知道,交易就像在网上购买东西。你操作并标记你想买的东西,但前提是你点击";购买";你最终会得到并支付这些东西。对于事务,这意味着它们需要在之后提交,否则将再次撤消(回滚(。大多数情况下,你的框架会在每次交互后自动提交更改,并用它结束事务
评论,以防你有更多问题。