Every site has its own SQL database for app data. It lives next to your site on the edge, scales to zero and is isolated from every other site.
Design a table
Open the Tables workspace and press New. Add columns in Schema and save. Column types are text, number, boolean, date, json and reference (another table’s row). Every row also has id, createdAt and updatedAt. Mark columns you filter on as indexed.
Browse and edit rows
The Rows view is a data browser: add, edit and delete rows, and load more as you scroll. Edits made here skip row rules, since you are the owner.
Row rules
Rules decide what visitors and workflows may read and write. Each is an expression with row and user in scope. A row is hidden when the read rule is false; a write is refused when the write rule is false for the stored row or the new one.
// orders: visitors see and change only their own rows; admins see all
read: row.userId == user.id || user.roles.includes('admin')
write: row.userId == user.id
Use tables in workflows
Server workflows read and write with Query table (filters with eq, neq, lt, lte, gt, gte, contains, isNull, notNull, plus a cursor), Get row, Insert row, Update row and Delete row. Type the table’s name or id in their Table parameter. Every write can trigger table-event workflows.
Visitors
The Visitors view lists the people who signed up on your site, marks unverified emails, and lets you define site roles and assign them. See Visitor accounts.
Limits
The total rows per site depend on the site plan. For very large datasets, connect an external database through an integration instead.