Cos'è INSERT INTO?
INSERT INTO viene utilizzato per memorizzare i dati nelle tabelle. Il comando INSERT crea una nuova riga nella tabella per memorizzare i dati. I dati vengono generalmente forniti da programmi applicativi che vengono eseguiti sul database.
Sintassi di base
Diamo un'occhiata alla sintassi di base del comando INSERT INTO MySQL:
INSERT INTO `table_name` (column_1, column_2,…) VALUES (value_1, value_2,…);
QUI
- INSERT INTO "table_name" è il comando che dice al server MySQL di aggiungere una nuova riga in una tabella chiamata "table_name".
- (column_1, column_2,…) specifica le colonne da aggiornare nella nuova riga MySQL
- VALUES (value_1, value_2,…) specifica i valori da aggiungere nella nuova riga
Quando si forniscono i valori dei dati da inserire nella nuova tabella, è necessario considerare quanto segue:
- Tipi di dati stringa: tutti i valori stringa devono essere racchiusi tra virgolette singole.
- Tipi di dati numerici: tutti i valori numerici devono essere forniti direttamente senza racchiuderli tra virgolette singole o doppie.
- Tipi di dati della data: racchiudi i valori della data tra virgolette nel formato "AAAA-MM-GG".
Esempio:
Supponiamo di avere il seguente elenco di nuovi membri della libreria che devono essere aggiunti al database.
Nomi completi | Data di nascita | Genere | Indirizzo fisico | indirizzo postale | Numero di contatto | Indirizzo e-mail |
---|---|---|---|---|---|---|
Leonard Hofstadter | Maschio | Woodcrest | 0845738767 | |||
Sheldon Cooper | Maschio | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Maschio | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Maschio | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Maschio | Parco Sud | PO Box 4563 | 0987786553 | Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. |
Inseriamo i dati uno per uno. Inizieremo con Leonard Hofstadter. Tratteremo il numero di contatto come un tipo di dati numerico e non racchiuderemo il numero tra virgolette singole.
INSERISCI IN `membri` (` full_names`, `gender`,` physical_address`, `contact_number`) VALORI ('Leonard Hofstadter', 'Male', 'Woodcrest', 0845738767);
L'esecuzione dello script precedente elimina lo 0 dal numero di contatto di Leonard. Questo perché il valore verrà trattato come un valore numerico e lo zero (0) all'inizio viene eliminato poiché non è significativo.
Per evitare tali problemi, il valore deve essere racchiuso tra virgolette singole come mostrato di seguito:
INSERISCI IN `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALORI ('Sheldon Cooper', 'Male', 'Woodcrest', '0976736763');
Nel caso precedente, zero (0) non verrà eliminato
La modifica dell'ordine delle colonne non ha alcun effetto sulla query INSERT in MySQL fintanto che i valori corretti sono stati mappati alle colonne corrette.
La query mostrata di seguito dimostra il punto precedente.
INSERISCI IN `members` (` contact_number`, `gender`,` full_names`, `physical_address`) VALORI ('0938867763', 'Male', 'Rajesh Koothrappali', 'Woodcrest');
Le query precedenti hanno saltato la colonna della data di nascita. Per impostazione predefinita, MySQL inserirà valori NULL nelle colonne che vengono omesse nella query INSERT.
Inseriamo ora il record per Leslie, di cui è fornita la data di nascita. Il valore della data deve essere racchiuso tra virgolette singole utilizzando il formato "AAAA-MM-GG".
INSERISCI IN `membri` (` full_names`, `date_of_birth`,` gender`, `physical_address`,` contact_number`) VALORI ('Leslie Winkle', '1984-02-14', 'Male', 'Woodcrest', ' 0987636553 ');
Tutte le query precedenti hanno specificato le colonne e le hanno mappate ai valori nell'istruzione di inserimento di MySQL. Se stiamo fornendo valori per TUTTE le colonne nella tabella, possiamo omettere le colonne dalla query di inserimento MySQL.
Esempio:-
INSERT INTO `members` VALUES (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Usiamo ora l'istruzione SELECT per visualizzare tutte le righe nella tabella del membro.
SELECT * FROM `members`;
numero_appartenenza | full_ names | Genere | data di nascita | indirizzo fisico | indirizzo postale | contct_ numero | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Femmina | 21-07-1980 | First Street Plot n. 4 | Borsa privata | 0759 253 542 | Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. |
2 | Janet Smith Jones | Femmina | 23-06-1980 | Melrose 123 | NULLO | NULLO | Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. |
3 | Robert Phil | Maschio | 12-07-1989 | 3a strada 34 | NULLO | 12345 | Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. |
4 | Gloria Williams | Femmina | 14-02-1984 | 2nd Street 23 | NULLO | NULLO | NULLO |
5 | Leonard Hofstadter | Maschio | NULLO | Woodcrest | NULLO | 845738767 | NULLO |
6 | Sheldon Cooper | Maschio | NULLO | Woodcrest | NULLO | 976736763 | NULLO |
7 | Rajesh Koothrappali | Maschio | NULLO | Woodcrest | NULLO | 938867763 | NULLO |
8 | Leslie Winkle | Maschio | 14-02-1984 | Woodcrest | NULLO | 987636553 | NULLO |
9 | Howard Wolowitz | Maschio | 24-08-1981 | Parco Sud | PO Box 4563 | 987786553 | Questo indirizzo email è protetto dagli spambots. Devi abilitare JavaScript per vederlo. |
Si noti che il numero di contatto di Leonard Hofstadter ha eliminato lo zero (0) dal numero di contatto. Gli altri numeri di contatto non hanno lasciato cadere lo zero (0) all'inizio.
Inserimento in una tabella da un'altra tabella
Il comando INSERT può essere utilizzato anche per inserire dati in una tabella da un'altra tabella. La sintassi di base è quella mostrata di seguito.
INSERT INTO table_1 SELECT * FROM table_2;
Vediamo ora un esempio pratico. Creeremo una tabella fittizia per le categorie di film a scopo dimostrativo. Chiameremo la nuova tabella delle categorie categories_archive. Lo script mostrato di seguito crea la tabella.
CREATE TABLE `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` remarks` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Esegui lo script precedente per creare la tabella.
Inseriamo ora tutte le righe dalla tabella delle categorie nella tabella dell'archivio delle categorie. Lo script mostrato di seguito ci aiuta a raggiungere questo obiettivo.
INSERISCI IN `categories_archive` SELEZIONA * DA` categories`;
L'esecuzione dello script precedente inserisce tutte le righe dalla tabella delle categorie nella tabella dell'archivio delle categorie. Nota che le strutture delle tabelle dovranno essere le stesse affinché lo script funzioni. Uno script più robusto è quello che mappa i nomi delle colonne nella tabella di inserimento a quelli nella tabella contenente i dati.
La query mostrata di seguito ne dimostra l'utilizzo.
INSERISCI IN `categories_archive` (category_id, category_name, remarks) SELEZIONA category_id, category_name, note FROM` categories`;
Esecuzione della query SELECT
SELEZIONA * DA `categories_archive`
fornisce i seguenti risultati mostrati di seguito.
category_id | Nome della categoria | osservazioni |
---|---|---|
1 | Commedia | Film con umorismo |
2 | Romantico | Storie d'amore |
3 | Epico | Storia di film antichi |
4 | Orrore | NULLO |
5 | Fantascienza | NULLO |
6 | Romanzo giallo | NULLO |
7 | Azione | NULLO |
8 | Commedia romantica | NULLO |
9 | Cartoni animati | NULLO |
10 | Cartoni animati | NULLO |
Esempio PHP: inserire nella tabella MySQL
La funzione mysqli_query viene utilizzata per eseguire query SQL.
La funzione può essere utilizzata per eseguire i seguenti tipi di query;
- Inserire
- Selezionare
- Aggiornare
- Elimina
Ha la seguente sintassi.
mysqli_query($db_handle,$query);
QUI,
"mysqli_query (
...) "è la funzione che esegue le query SQL."$ query" è la query SQL da eseguire
"$ link_identifier" è facoltativo, può essere utilizzato per passare il collegamento di connessione al server
Esempio
$servername = "localhost";$username = "alex";$password = "yPXuPT";$dbname = "afmznf";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {die("Connection failed: " . mysqli_connect_error());}$sql= "INSERT INTO addkeyworddata(link, keyword)VALUES ('https://www.guru99.com/','1000')";if (mysqli_query($conn, $sql)) {echo "New record created successfully".'
';} else {echo "Error: " . $sql. "
" . mysqli_error($conn);}}
Sommario
- Il comando INSERT viene utilizzato per aggiungere nuovi dati in una tabella. MySql aggiungerà una nuova riga, una volta eseguito il comando.
- I valori di data e stringa devono essere racchiusi tra virgolette singole.
- I valori numerici non devono essere racchiusi tra virgolette.
- Il comando INSERT può essere utilizzato anche per inserire dati da una tabella a un'altra.