What does ACID mean in databases?
ACID names four guarantees a database provides around transactions.
Atomicity means all or nothing. A transaction that updates several rows either applies completely or leaves no trace. A crash midway cannot produce half the change.
Consistency means the database moves from one valid state to another, respecting the constraints you defined. A transaction that would violate a uniqueness rule or a foreign key is rejected rather than committed.
Isolation means concurrent transactions do not interfere in ways that produce incorrect results. This is the most nuanced of the four, because it is not binary. Databases offer isolation levels trading strictness for concurrency, and the default is often weaker than people assume, permitting anomalies such as reading a value that another transaction changes before you write based on it.
Durability means once a transaction commits, it survives a crash. The data is on stable storage, not merely in memory.
The practical significance is that these move burden off your application. Without them, safely transferring a value between two records requires implementing your own recovery.
Two caveats matter in real systems. Isolation is the one to actually think about, because the default level allows behaviours that break read-then-write logic under concurrency; if that pattern matters, use explicit locking or a stricter level rather than assuming the default protects you. And durability depends on configuration, since some databases and cloud setups acknowledge a commit before it is fully persisted, trading a small window of risk for latency.
Many non-relational databases now offer transactions too, so the old framing of ACID as exclusively relational is out of date.