Che cos'è il CRUD (create, read, update, delete)?

Aggiornato: ottobre 2026

Il CRUD è l’acronimo di create, read, update e delete: le quattro operazioni di base che ogni archivio di dati persistente deve supportare. Coniato in Managing the Data-base Environment di James Martin (1983), resta l’acronimo più duraturo del lavoro di backend perché nomina il pavimento: qualunque altra cosa faccia il sistema, i record devono venire al mondo, essere ritrovati, cambiare e sparire.

Punti chiave

DomandaRisposta
I quattro verbiCreare · Leggere · Aggiornare · Eliminare – il minimo della persistenza
In SQLINSERT · SELECT · UPDATE · DELETE
Su HTTPPOST · GET · PUT/PATCH · DELETE
vs. RESTIl CRUD è ciò che si fa ai dati; REST è il modo in cui i client raggiungono le risorse
La mossa modernaIl livello CRUD si genera, non si scrive

CRUD in quattro linguaggi

-- Il CRUD in SQL: la mappatura originale
INSERT INTO tasks (title) VALUES ('Write the launch post');   -- C
SELECT * FROM tasks WHERE done = false;                       -- R
UPDATE tasks SET done = true WHERE id = 42;                   -- U
DELETE FROM tasks WHERE id = 42;                              -- D

E lo stesso ciclo nel modo in cui lo esprime un SDK – la forma che il codice applicativo scrive davvero:

// JavaScript / Node.js — Back4app JS SDK
// The full CRUD cycle on one object
const task = new Parse.Object('Task');
task.set('title', 'Write the launch post');            // C — create
await task.save();

const fetched = await new Parse.Query('Task')
  .equalTo('done', false).first();                     // R — read

fetched.set('done', true);                             // U — update
await fetched.save();

await fetched.destroy();                               // D — delete

Una tabella per mapparli tutti

La mappatura a sei colonne che nessun singolo riferimento mette insieme:

OperazioneSQLVerbo HTTPStatoDatabase documentaleIdioma SDK/ORM
CreareINSERTPOST201insertOneobject.save() (nuovo)
LeggereSELECTGET200find / findOnequery.find() / .get()
AggiornareUPDATEPUT / PATCH200updateOneobject.save() (campi modificati)
EliminareDELETEDELETE204deleteOneobject.destroy()

Due note a piè di pagina della specifica HTTP che vale davvero la pena conoscere: GET è sicuro (nessun cambiamento di stato), PUT e DELETE sono idempotenti (ripetibili senza danni), POST non è né l’uno né l’altro – ed è per questo che la logica di retry li tratta in modo diverso, e perché PUT significa “sostituire tutto” mentre PATCH significa “modificare una parte”.

Dove accade il CRUD

Dove accadono le operazioni CRUD in uno stackUn'interfaccia utente innesca chiamate SDK o HTTP; il livello API mappa i verbi sulle operazioni, applica permessi e validazione, ed esegue le istruzioni di database corrispondenti sull'archivio.

UI
form, elenchi, pulsanti

Livello API
verbi → operazioni
permessi · validazione

Database
INSERT · SELECT
UPDATE · DELETE

Un'interfaccia utente innesca chiamate SDK o HTTP; il livello API mappa i verbi sulle operazioni, applica permessi e validazione, ed esegue le istruzioni di database corrispondenti sull'archivio.

Il diagramma è anche il promemoria di sicurezza: ogni verbo attraversa il livello API, ed è lì che permessi e validazione hanno il loro posto – una superficie CRUD senza controllo degli accessi per singola operazione è un database pubblico con qualche passaggio in più.

CRUD vs. REST

DomandaCRUDREST
Che cosa nominaOperazioni sui datiUno stile architetturale per client e risorse
Definito daQuattro verbiVincoli: assenza di stato, interfaccia uniforme, cacheabilità…
Dove viveSQL, SDK, code, in qualsiasi postoAPI HTTP
RelazioneIl payload abituale degli endpoint RESTSi mappa spesso sul CRUD – ma può esporre azioni non CRUD

La lezione pratica: un’API REST è spesso un’API CRUD vestita da HTTP – ma “approvare la fattura” ha diritto di stare in un’API e non è un verbo CRUD, e il CRUD esiste tranquillamente senza HTTP all’orizzonte. I termini collaborano; non sono in concorrenza.

Casi d’uso tipici

  • L’app CRUD in senso proprio. Pannelli di amministrazione, CMS, CRM, magazzino, prenotazioni – la maggior parte del software aziendale, con onore.
  • Prototipi e MVP. I quattro verbi su una manciata di classi sono la prima versione della maggior parte dei prodotti.
  • API generate automaticamente. Schema in ingresso, superficie CRUD in uscita – il default moderno che trasforma i quattro verbi in configurazione invece che in codice, trattato per esteso nella voce sulle API generate automaticamente.
  • Strumenti di amministrazione e supporto. Griglie visuali sulla stessa superficie CRUD, permessi compresi.
  • Il substrato sotto tutto il resto. Anche i sistemi event-sourced e pesanti di workflow espongono CRUD da qualche parte – impostazioni, profili, dati di riferimento.

Ogni azione deve essere CRUD? Matrice decisionale

Modellare come CRUD quando…Cercare qualcosa di più quando…
Lo stato corrente del record è la veritàLa storia è il dominio → event sourcing
La modifica è il modello mentale di chi usa il prodottoLetture e scritture scalano in modo diverso → CQRS
”Eliminare” può davvero rimuovereVerifica o annullamento pretendono il soft delete
Le modifiche concorrenti sono rareSi profilano aggiornamenti perduti → locking ottimistico, versioni
L’azione è “cambiare questo record”L’azione è un verbo di business → va nominato il workflow

L’ultima riga è il design smell che vale la pena memorizzare: quando i nomi degli endpoint derivano verso updateStatus, il dominio sta chiedendo verbi propri.

Limiti e trade-off

  • L’aggiornamento distrugge la storia. La mutazione in loco è l’atto fondativo del CRUD e la sua perdita fondativa: tutto ciò che ha bisogno di sapere “com’era martedì” vuole journaling o eventi.
  • Eliminare è una politica, non un verbo. Soft delete contro hard delete scambia la verificabilità con la cancellazione pretesa dai regimi di privacy e con la complessità delle query; conviene decidere per classe, in modo deliberato.
  • La concorrenza non ha un prezzo esposto. Due update, vince l’ultimo che scrive, la modifica del primo scompare in silenzio – campi di versione e salvataggi condizionali sono l’antidoto standard.
  • List è il quinto verbo. Filtri, ordinamenti e paginazione portano gran parte del traffico reale di lettura e gran parte dei bug prestazionali – è la ragione d’essere di CRUDL e BREAD.
  • Le API CRUD possono diventare anemiche. Una superficie che è solo righe-in-righe-fuori spinge la logica di business verso i client; i workflow restano lato server, accanto ai dati.

Le operazioni CRUD su Back4app

Back4app è una piattaforma open-source di Backend as a Service (BaaS) che combina database gestito, API REST e GraphQL generate automaticamente, autenticazione, archiviazione di file e funzioni serverless con Cloud Code. Il suo rapporto con questo articolo è una sottrazione: si definisce una classe e tutta la matrice CRUD qui sopra esiste di colpo – endpoint REST secondo la colonna HTTP, mutation GraphQL e gli idiomi SDK delle schede di codice, con i permessi a livello di classe che presidiano ogni verbo e i trigger beforeSave che si fanno carico della validazione. I quattro verbi smettono di essere la codebase e diventano il vocabolario.

Domande frequenti

Che cosa significa CRUD?

Create, Read, Update, Delete – creare, leggere, aggiornare, eliminare: le quattro operazioni fondamentali dell'archiviazione persistente, e il minimo che qualsiasi applicazione poggiata su dati deve supportare. L'acronimo è stato diffuso da James Martin nel suo libro del 1983 Managing the Data-base Environment, con la semantica collegata formalizzata da Haim Kilov nel 1990 – ed è quindi uno dei termini più antichi ancora in uso quotidiano nel vocabolario del backend.

Come si mappa il CRUD su SQL e su HTTP?

Due mappature pulite che ogni sviluppatore memorizza una volta per sempre: in SQL creare è INSERT, leggere è SELECT, aggiornare è UPDATE, eliminare è DELETE. Su HTTP creare è POST, leggere è GET, aggiornare è PUT per la sostituzione completa oppure PATCH per modifiche parziali, ed eliminare è DELETE – con 201, 200 e 204 come codici di stato del percorso felice, rispettivamente.

CRUD e REST sono la stessa cosa?

No – rispondono a domande diverse. CRUD nomina ciò che si fa ai dati; REST è uno stile architetturale che descrive come i client interagiscono con le risorse su HTTP, con vincoli come l'assenza di stato e l'interfaccia uniforme. Gli endpoint REST si mappano spesso in modo pulito sul CRUD, ma REST può esporre azioni non CRUD, e il CRUD vive serenamente fuori da HTTP – in sessioni SQL, negli SDK e nelle code.

Qual è la differenza fra PUT e PATCH?

La portata dell'aggiornamento. PUT sostituisce l'intera risorsa con la rappresentazione inviata – idempotente per definizione, perché inviarla due volte produce lo stesso stato. PATCH applica una modifica parziale: cambiano solo i campi inviati. La maggior parte del traffico reale di "aggiornamento" ha la forma di un PATCH, ed è per questo che i metodi save() degli SDK inviano solo i campi modificati.

Che cos'è un'app CRUD?

Un'applicazione il cui ciclo centrale consiste nel creare, consultare, modificare ed eliminare record – pannelli di amministrazione, CMS, CRM, sistemi di magazzino e di prenotazione. È un termine vagamente sprezzante che non dovrebbe esserlo: la maggior parte del software aziendale è CRUD in fondo, ed è esattamente il motivo per cui le piattaforme che generano il livello CRUD in automatico eliminano così tanto lavoro.

Che cos'è un soft delete?

Marcare un record come eliminato – con un flag o un timestamp – invece di rimuoverlo. Preserva lo storico verificabile, l'integrità referenziale e l'annullamento, al prezzo di filtrare ogni query e complicare i vincoli di unicità. Il suo opposto, lo hard delete, è la rimozione reale, che i regimi di privacy come le richieste di cancellazione del GDPR possono davvero richiedere. Gran parte dei sistemi ha bisogno di una politica deliberata per classe, non di un comportamento predefinito.

Quando il CRUD non basta?

Quando il dominio riguarda eventi e storia invece dello stato corrente. L'aggiornamento in loco distrugge il passato – l'event sourcing tiene un registro in sola aggiunta e da lì deriva lo stato; CQRS separa del tutto i modelli di lettura e di scrittura. E azioni di business come "approvare la fattura" o "concludere l'ordine" sono workflow, non modifiche di righe: modellarle come semplici update nasconde il dominio. Il CRUD è il pavimento dell'accesso ai dati, non il soffitto.

Che cosa sono varianti del CRUD come CRUDL e BREAD?

Estensioni e riscritture della stessa idea: CRUDL aggiunge List come operazione distinta dalla lettura di un singolo record; BREAD lo compita Browse, Read, Edit, Add, Delete. Riconoscono la verità pratica che elencare collezioni – con filtri e paginazione – è un'operazione a sé, con decisioni di progetto proprie, e non semplicemente "leggere, al plurale".

Termini correlati

Confronta con

Fonti di approfondimento

Pronto a costruire il tuo backend?

Avvia il tuo progetto su Back4app in pochi minuti: database, autenticazione, API e Cloud Code inclusi. Nessuna carta di credito richiesta.

Scritto e revisionato da Back4app Engineering, Back4app Engineering · Pubblicato il 2026-10-05