Mar 31 2006
Query di INSERT in MySQL Server (SQL)
Prima di partire per un giro nella “tranquilla”
Parigi scrivo breve articolo per spiegare diverse modalitą con cui scrivere query di INSERT in mysql e in generale con il linguaggio SQL.
Per inserire i dati in mysql abbiamo sostanzialmente tre possibili differenti sintassi in
INSERT.
Di seguito vi allego la sintassi come da manuale:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Or:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Or:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT …
Semplificando quanto fornito dal manuale di mysql vediamo insieme il funzionamento
di INSERT con degli esempi pratici che andrete ad eseguire sul nostro progettino:
Prendiamo per esempio una tabella con campi:
IDfornitore (PK) auto incrementale
fornitore varchar (200)
INSERT INTO fornitore VALUES (”, ‘Eforhum.it’);
Attenzione: in mysql 5 usare la seguente sintassi:
INSERT INTO fornitore VALUES (NULL, ‘Eforhum.it’);
Questo perchč mysql 5 non accetta pił valori per la chiave primaria autoincrement numerica passati come ” dove si intende valore presente ma blank, vuole assolutamente NULL, ovvero valore NON presente.
Sostanzialmente utilizzando questa sintassi possiamo dire che la query Ć¢ā¬ÅpassaĆ¢ā¬Ā alla
tabella Ć¢ā¬ÅfornitoreĆ¢ā¬Ā i valori da inserire in ordine di campo.
Il vantaggi di usare questa sintassi di INSERT sono:
VANTAGGI:
1. Velocitą di esecuzione
2. SQL molto scarno e rapido da scrivere
SVANTAGGI:
1. Bisogna conoscere molto bene i campi della tabella e l’ordine in cui sono messi
2. In caso di modifiche al DB bisogna sistemare subito le query
3. Lettura della query abbastanza difficile
INSERT INTO fornitore (IDfornitore, fornitore) VALUES (”, ‘Eforhum.it’);
Come possiamo notare che l’unica cosa che cambia č la definizione dell’ordine dei
campi in cui mysql inserirą i valori.
VANTAGGI:
1. Buona velocitą di esecuzione delle query
2. In caso di modifiche al DB (anche se č fondamentale aggiornare le query) non si
rischia di incorrere in inserimenti errati. Stesso discorso vale per l’ordine dei campi
che se cambia non inficia sulla validitą della query.
SVANTAGGI:
1. Non di facile lettura
INSERT INTO fornitore SET fornitore = ‘eforhum.it’;
Con questa sintassi possiamo notare che vengono associati campo = valore
VANTAGGI:
1. Se viene cambiato il DB o l’ordine dei campi le query non portano ad errori di
inserimento (a meno che non si siano eliminate delle colonne)
2. Facilitą di lettura SQL di INSERT
SVANTAGGI:
1. SQL forse un pą ridondante
Approfondite le varie sintassi possiamo facilmente dedurre che la soluzione migliore č
di utilizzare l’SQL di INSERT che prevete il setting di campi = valore, questo sia per
facilitą di lettura che per leggibilitą dell’SQL.
Infatti se immaginiamo una tabella di 30/40 campi le prime due opzioni non
garantiscono una facile lettura per l’individuazione di eventuali errori.
Ciao a tutti, Maxgrante
info[AT]massimo-caselli[DOT]com