Queries fetch data; mutations change it (create/update/delete) and return the result; subscriptions stream live updates over a persistent connection (typically WebSocket). One schema defines all three, so the client uses the same typed, field-selecting syntax whether reading, writing, or listening.