Events are written to an append-only log called the event store, usually grouped into streams. One stream per account, per order, or per shopping cart is common. Appending is a simple insert, which is fast and avoids the lock contention you get from updating hot rows.
To get current state you load the stream and fold the events into an in-memory object called an aggregate. Replaying thousands of events on every read would be slow, so systems take periodic snapshots. A snapshot stores the computed state at event number 5000, and you only replay events 5001 onward.
Reads almost never hit the raw event log. Instead a projector subscribes to the event stream and builds read-optimized tables, search indexes, or caches. This pairing with CQRS, where writes go to the event store and reads come from projections, is so common that the two patterns are usually discussed together.
Because the log is the truth, you can build a brand new projection at any time by replaying history. Want a report you never thought of at launch? Write a new projector, replay every event from day one, and the table fills itself.