# Database (/academy/database)



A spreadsheet you open. A **database** you never do.

Your app's memory lasts until the process dies. Refresh the tab, restart the [server](/academy/server), the in-memory todo list is gone. The database is the filing cabinet the [backend](/academy/frontend-backend) is allowed to open — drawers, labels, a lock on who may pull a folder. Millions of rows. Thousands of asks a second. No human scrolling.

Picture the demo you just scaffolded. Every user, every todo, every session badge, the Polar receipt from ten minutes ago. All of it in drawers:

* who signed in
* what they saved
* when it landed

Now ask the cabinet a question instead of walking the aisles:

* "Give me this user's unfinished todos."
* "Find the row with this email."
* "How many sign-ups since last night?"

That ask has a name. It's a **query**. You are not hunting. You are interrogating. The cabinet answers in a blink, even when the drawers are full.

That's the jump people miss. A sheet is something you stare at. A database is something software talks to in the hallway, all night, while the dining room stays quiet.

**Why the demo still has names tomorrow**

The [backend](/academy/frontend-backend) writes everything down here so it cannot forget. Users, todos, a hashed password, the file sitting in [object storage](/academy/object-storage) that still needs a row pointing at it. That's the whole reason you can [sign in](/academy/auth) tomorrow and the account is not a stranger.

No cabinet = no memory. Every visit starts from zero. A pretty room serving photographs of food.

When the [builder](/builder) asks SQLite, Postgres, MySQL, Mongo, Convex, it is asking which cabinet kit. SQLite is one file you could email. Postgres is a real room more than one app can enter. Mongo is folders of documents, not a grid. Convex owns the pantry with the kitchen. None of those is "more professional" at 3 a.m. The professional move is the one you can reset when you trash the data during a demo.

**The language on the labels**

When someone says "SQL," they mean the dialect you use to phrase the question. You do not have to learn it. But when an [agent](/academy/agent) says "I'll write a quick SQL query," you now know the job: ask the cabinet, don't open the drawer by hand. An [ORM](/academy/orm) is the clerk who speaks both TypeScript and cabinet, so your [schema](/academy/schema) is a promise instead of a hope.

You open a sheet. Software opens a cabinet. Same instinct. Different building.
