Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

UPDATE e DELETE

Utilizzare le istruzioni UPDATE e DELETE del linguaggio SQL per aggiornare ed eliminare i record all'interno di un database NoSQL come OrientDB.
Utilizzare le istruzioni UPDATE e DELETE del linguaggio SQL per aggiornare ed eliminare i record all'interno di un database NoSQL come OrientDB.
Link copiato negli appunti

Altre due operazioni molto comuni nella manipolazione dei dati sono la modifica e la cancellazione. Per complementare quindi la trattazione delle operazioni CRUD su OrientDB, in questa lezione vedremo come queste operazioni sono implementate dai comandi SQL UPDATE e DELETE. Negli esempi, si assumerà che sia disponibile una classe di nome Persona, cui corrispondono alcuni record già creati.

UPDATE: modificare i dati

Iniziamo mostrando un esempio, un'operazione di UPDATE in tipico stile relazionale:

UPDATE Persona SET nome='Roberto' WHERE nome='Carlo'

Con il comando UPDATE viene innanzitutto espresso il nome della classe cui il record da modificare appartiene. In particolare, poi, la direttiva SET specifica che la stringa Roberto dovrà essere assegnata al campo nome in tutti i record in cui il campo nome è valorizzato con Carlo.

In alternativa al nome della classe si può richiedere la modifica solo nell'ambito di un singolo cluster:

UPDATE cluster:elenco SET nome='Roberto' WHERE nome='Carlo'

o passando il numero di un record specifico:

UPDATE #11:10 SET nome='Roberto'

Si ricordi in quest'ultimo caso che il numero del record deve essere completo di riferimento al cluster, il tutto precedeuto
dal simbolo #.

Un altro aspetto importante e particolarmente comodo nell'interfacciamento con gli ambienti di programmazione è la possibilità di
fornire un intero record in formato JSON:

UPDATE #11:9 CONTENT {"nome":"Saverio","cognome":"Verdi","eta":91}

Ciò è consentito dalla direttiva CONTENT, che prende il posto di SET. In questo caso, si è modificato il valore di un record specifico, fornendone il numero; in alternativa, si possono utilizzare i consueti meccanismi di UPDATE specificando una classe o il nome di un cluster. Nel caso in cui, invece, non si volesse sostituire il contenuto del record ma accodarvi altri dati sempre in formato JSON, si utilizza la parola chiave MERGE al posto di CONTENT:

UPDATE #11:9 MERGE {"indirizzo":"Via Ascoli n. 56","citta":"Napoli"}

Si noti che qualora i campi aggiunti con MERGE non fossero inclusi nella struttura della classe, la modifica sarà permessa se la classe non è stata definita in strict mode, come spiegato nelle lezioni precedenti.

In aggiunta a quanto visto, un documento può essere anche incluso interamente in un campo di record, ed il suo valore può essere manipolato nel seguente modo:

UPDATE #11:9 SET abitazione={"indirizzo":"Via delle Rose n. 25", "citta":{"nome":"Napoli","provincia":"NA", "CAP":"80121"}}

Un'altra direttiva che può essere utilizzata congiuntamente ad UPDATE è INCREMENT, utile quando si vuole incrementare un valore di una certa quantità costante:

UPDATE #11:9 INCREMENT quantita=3

Nell'esempio, il campo quantita nel record numero #11:9 verrà incrementato di 3.

UPDATE: manipolare collezioni e mappe

Il variegato contesto dei tipi di dato messi a disposizione da OrientDB offre, tra l'altro, anche collezioni e mappe, che possono essere incluse in un campo di un record. Negli esempi che seguono supporremo che vi sia una classe in cui ogni record rappresenta un gruppo di persone, e che i link degli appartenenti sono inclusi nel campo elenco:

CREATE CLASS GruppiDiPersone
INSERT INTO GruppiDiPersone CONTENT {"elenco":["#11:9"]}

Abbiamo anche inserito un nuovo record (con ID #11:12) che contiene una collezione di link a record, popolata al momento con il solo riferimento #11:9. Supponiamo di voler aggiungere all'elenco il riferimento al nodo #11:0:

UPDATE #11:12 ADD elenco=#11:0

Analogamente, con il seguente comando viene rimosso il riferimento al nodo #11:9:

UPDATE #11:12 REMOVE nomi=#11:9

Per le mappe, si potranno svolgere operazioni simili utilizzando i comandi UPDATE...PUT e UPDATE...REMOVE, rispettivamente per inserire una nuova coppia chiave/valore e per rimuovere un valore in base alla chiave. Poichè stiamo parlando di mappe di link a nodi, in questo caso i valori saranno sempre dei riferimenti ad altri nodi:

UPDATE GruppiDiPersone PUT comitato='Presidente',#11:2
UPDATE GruppiDiPersone REMOVE comitato='Presidente'

DELETE: cancellare record

Il comando DELETE permette di cancellare uno o più record appartenenti ad una classe o ad un cluster specifico, in base a condizioni dettate dalla clausola WHERE:

DELETE FROM Persona WHERE nome='Giovanni'

oppure:

DELETE FROM cluster:nuovo WHERE nome='Giovanni'

È possibile anche porre un limite numerico alle cancellazioni tramite la parola chiave LIMIT, fermi restando i criteri di selezione dei record:

DELETE FROM Persona WHERE nome='Giovanni' LIMIT 20

Ti consigliamo anche