Home > Mondo informatica, MySQL, DB Server, PHP il turbo nel web > Query di INSERT in MySQL Server (SQL)

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

Share
  1. Nessun commento ancora...
  1. Nessun trackback ancora...