# database.pizza > End-user documentation for database.pizza, PizzaSQL, and its PostgreSQL and HTTP interfaces. Use the canonical Markdown links below when supplying context to an AI tool. The full documentation corpus is available at https://docs.database.pizza/llms-full.txt. ## Documentation - [Using these docs with AI](https://docs.database.pizza/raw/ai.md): Feed database.pizza's documentation to AI tools via llms.txt, raw Markdown, and the copy-page action — and prompt it well. - [API keys & permissions](https://docs.database.pizza/raw/clients/api-keys.md): How API keys work, what scopes mean, and how to keep them safe. - [HTTP query API](https://docs.database.pizza/raw/clients/http-api.md): Reference for the managed HTTP endpoint that executes SQL with a Bearer API key. - [JavaScript](https://docs.database.pizza/raw/clients/javascript.md): Query database.pizza from Node.js and the browser using pg or fetch. - [PostgreSQL clients](https://docs.database.pizza/raw/clients/postgresql.md): Connect to database.pizza with psql, GUIs, and PostgreSQL drivers in any language. - [Python](https://docs.database.pizza/raw/clients/python.md): Query database.pizza from Python using psycopg or the HTTP query API. - [REST API (preview)](https://docs.database.pizza/raw/clients/rest-api.md): Preview the auto-generated CRUD endpoints for your tables, secured by DB_ACCESS or REST_API keys. - [Concurrency](https://docs.database.pizza/raw/engine/concurrency.md): How PizzaSQL handles concurrent queries — per-database locking, in-memory caches, and why there is no MVCC. - [Indexes](https://docs.database.pizza/raw/engine/indexes.md): How CREATE INDEX works, what persists, what is rebuilt in memory, and the narrow conditions under which an index is actually used. - [Transactions](https://docs.database.pizza/raw/engine/transactions.md): How BEGIN/COMMIT/ROLLBACK and SAVEPOINT work — an undo log guarded by a database-wide lock, not MVCC. - [Connect](https://docs.database.pizza/raw/getting-started/connect.md): Connection strings and parameters for the PostgreSQL wire protocol and the HTTP query API. - [Your first schema](https://docs.database.pizza/raw/getting-started/first-schema.md): Design and create a realistic schema with tables, constraints, and indexes, then query it. - [Quickstart](https://docs.database.pizza/raw/getting-started/quickstart.md): Create an organization, a database, and an API key, then run your first query over PostgreSQL or HTTP. - [Errors & troubleshooting](https://docs.database.pizza/raw/guides/errors.md): Understand the error responses from the HTTP, REST, and PostgreSQL surfaces, and how to fix them. - [Import & export](https://docs.database.pizza/raw/guides/import-export.md): Move data into and out of your database using SQL dumps, CSV, and SQLite files. - [Limits & quotas](https://docs.database.pizza/raw/guides/limits.md): The resource limits that apply to your databases and the SQL compatibility boundaries you should know. - [database.pizza](https://docs.database.pizza/raw/index.md): Build on database.pizza — a managed database service powered by the PizzaSQL engine, with a PostgreSQL-compatible wire protocol and an HTTP query API. - [Architecture](https://docs.database.pizza/raw/internals/architecture.md): The PizzaSQL engine's components and how they connect — lexer, parser, analyzer, executor, and the PizzaKV storage backend. - [Catalog & schema](https://docs.database.pizza/raw/internals/catalog.md): How PizzaSQL tracks tables, columns, and indexes — the in-memory catalog, the schema cache, and how they stay in sync. - [PostgreSQL protocol](https://docs.database.pizza/raw/internals/postgres-protocol.md): How PizzaSQL implements the PostgreSQL wire protocol — what's supported, what's emulated, and how the managed proxy layers auth and routing on top. - [Query lifecycle](https://docs.database.pizza/raw/internals/query-lifecycle.md): What happens between a SQL string and a result — parse, analyze, lock, plan (such as it is), execute, and return. - [Storage model](https://docs.database.pizza/raw/internals/storage.md): How PizzaSQL maps tables, rows, schemas, and indexes onto PizzaKV keys, and what lives in memory versus on disk. - [Compatibility](https://docs.database.pizza/raw/sql-reference/compatibility.md): How PizzaSQL differs from SQLite and PostgreSQL — the honest gap list, including features that parse but do nothing. - [Constraints](https://docs.database.pizza/raw/sql-reference/constraints.md): What PRIMARY KEY, NOT NULL, DEFAULT, UNIQUE, CHECK, and FOREIGN KEY actually do in PizzaSQL — and which ones are not enforced. - [Data types](https://docs.database.pizza/raw/sql-reference/data-types.md): How PizzaSQL stores and coerces values — SQLite-style type affinity over JSON-backed rows, not strict typed columns. - [Expressions & operators](https://docs.database.pizza/raw/sql-reference/expressions.md): Operators, CASE, IN, BETWEEN, LIKE, CAST, and subqueries — with precise coercion and three-valued logic semantics. - [Functions](https://docs.database.pizza/raw/sql-reference/functions.md): Every built-in scalar and aggregate function, with an honest list of which are real and which are declared but not implemented. - [SQL at a glance](https://docs.database.pizza/raw/sql-reference/overview.md): The PizzaSQL dialect in one page — what it is, what it supports, and where it deliberately differs from both SQLite and PostgreSQL. - [Statements](https://docs.database.pizza/raw/sql-reference/statements.md): Reference for every SQL statement PizzaSQL accepts — SELECT, INSERT, UPDATE, DELETE, DDL, transactions, and PRAGMA. ## Important context - PizzaSQL uses SQLite-style type affinity and exposes a PostgreSQL-compatible wire interface. It is not PostgreSQL itself. - Prefer the compatibility page before generating production SQL. - Never place a real API key in prompts, source code, or logs.