Il comando INSERT INTO in MariaDB consente di ag­giun­ge­re nuovi record a una tabella già esistente. Si tratta di uno dei comandi SQL fon­da­men­ta­li, uti­liz­za­to per ag­giun­ge­re nuovi dati a un database o ampliare le in­for­ma­zio­ni già presenti.

Cos’è il comando INSERT in MariaDB?

Il comando INSERT in MariaDB consente di inserire nuovi dati in una tabella, ag­giun­gen­do intere righe alla struttura esistente. Ogni volta che un utente si registra, invia un modulo o crea un nuovo prodotto, il sistema esegue in back­ground il comando INSERT INTO.

Durante l’in­se­ri­men­to, MariaDB verifica che i valori cor­ri­spon­da­no ai tipi di dati delle colonne e che tutti i campi ob­bli­ga­to­ri siano compilati. Se i valori violano re­stri­zio­ni quali NOT NULL, UNIQUE o FOREIGN KEY, il database rifiuta l’ope­ra­zio­ne. Pertanto, la struttura della tabella di de­sti­na­zio­ne e l’in­di­ca­zio­ne corretta delle colonne sono fon­da­men­ta­li per l’utilizzo di INSERT.

Qual è la sintassi del comando INSERT INTO in MariaDB?

La sintassi standard per INSERT INTO è:

INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
sql
  • table_name indica la tabella di de­sti­na­zio­ne, dove i dati verranno scritti.
  • L’elenco delle colonne (column1, column2, ...) è fa­col­ta­ti­vo, ma con­si­glia­to.
  • Nel campo VALUES si spe­ci­fi­ca­no i valori da inserire nelle colonne indicate.

I valori vengono associati alle colonne secondo l’ordine definito. Se il numero o l’ordine dei valori non cor­ri­spon­de a quello delle colonne, si verifica un errore.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

Quali parametri e varianti esistono per INSERT INTO in MariaDB?

Il comando INSERT INTO è fles­si­bi­le e può essere adattato a diversi casi d’uso. Le prin­ci­pa­li varianti sono:

Elenco delle colonne

È possibile indicare tutte le colonne o solo alcune. Se non viene spe­ci­fi­ca­to l’elenco delle colonne, MariaDB si aspetterà un valore per ogni colonna definita nella tabella, nello stesso ordine in cui sono state create.

INSERT INTO users VALUES (1, 'Anna', 'anna@example.com');
sql

Se desideri compilare solo colonne spe­ci­fi­che, esegui il seguente comando:

INSERT INTO users (name, email) VALUES ('Anna', 'anna@example.com');
sql

In questo caso, vengono compilati solo i campi name ed email.

Inserire più righe

Questa sintassi è più ef­fi­cien­te rispetto a più comandi MariaDB INSERT singoli, so­prat­tut­to in caso di grandi volumi di dati:

INSERT INTO products (name, price)
VALUES ('pen', 1.50),
    ('notepad', 2.00),
    ('bag', 9.90);
sql

INSERT IGNORE

Con il comando IGNORE, MariaDB ignora le righe che violano le re­stri­zio­ni e continua con le restanti.

INSERT IGNORE INTO users (id, name) VALUES (1, 'Anna');
sql

INSERT ... ON DUPLICATE KEY UPDATE

Questa sintassi permette di ag­gior­na­re una riga esistente in caso di conflitto su una chiave univoca:

INSERT INTO users (id, name)
VALUES (1, 'Anna')
ON DUPLICATE KEY UPDATE name = 'Anna';
sql

È utile per combinare in­se­ri­men­to e ag­gior­na­men­to in un’unica istru­zio­ne, ad esempio nei processi di im­por­ta­zio­ne, sin­cro­niz­za­zio­ne o ope­ra­zio­ni au­to­ma­tiz­za­te.

Inserire i dati con SELECT

Con SELECT puoi copiare record da una tabella all’altra:

INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
sql

Esempi d’uso per il comando INSERT INTO in MariaDB

Di seguito alcuni scenari pratici per l’uso di INSERT INTO.

Re­gi­stra­zio­ne utenti

In questo esempio, MariaDB aggiunge una nuova persona alla tabella users. I valori delle colonne name ed email pro­ven­go­no da un modulo o da un’ap­pli­ca­zio­ne. Il valore NOW() re­sti­tui­sce la marca temporale della re­gi­stra­zio­ne, ovvero il momento esatto in cui l’utente si registra:

INSERT INTO users (name, email, created_at)
VALUES ('Lena', 'lena@example.com', NOW());
sql

Questo metodo è adatto ai moduli web di re­gi­stra­zio­ne, dove ogni in­se­ri­men­to viene re­gi­stra­to di­ret­ta­men­te nel database. È im­por­tan­te che created_at sia di tipo DATETIME o TIMESTAMP, in modo che NOW() venga me­mo­riz­za­to cor­ret­ta­men­te.

Copiare dati da un’altra tabella

Questo esempio mostra come tra­sfe­ri­re dati esistenti da una tabella (orders) a un’altra tabella (archive_orders). MariaDB seleziona tutti gli ordini con lo stato 'completed' e tra­sfe­ri­sce le colonne id e status.

INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
sql

Questi comandi vengono uti­liz­za­ti per l’ar­chi­via­zio­ne, la pulizia dei dati e la creazione di report. Ricordati di ve­ri­fi­ca­re sempre che la struttura, ad esempio i tipi di colonna, sia la stessa nella tabella di origine e nella tabella di de­sti­na­zio­ne, al­tri­men­ti MariaDB non eseguirà il comando.

Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa
Vai al menu prin­ci­pa­le