Wat is INSERT IN?
INSERT INTO wordt gebruikt om gegevens in de tabellen op te slaan. Het INSERT-commando maakt een nieuwe rij in de tabel om gegevens op te slaan. De gegevens worden meestal geleverd door applicatieprogramma's die bovenop de database draaien.
Basissyntaxis
Laten we eens kijken naar de basissyntaxis van het INSERT INTO MySQL-commando:
INVOEGEN IN `tabelnaam` (kolom_1, kolom_2,…) WAARDEN (waarde_1, waarde_2,…);
HIER
- INSERT INTO `table_name` is het commando dat de MySQL-server vertelt om een nieuwe rij toe te voegen aan een tabel met de naam` table_name`.
- (column_1, column_2,…) specificeert de kolommen die moeten worden bijgewerkt in de nieuwe MySQL-rij
- WAARDEN (waarde_1, waarde_2,…) specificeert de waarden die aan de nieuwe rij moeten worden toegevoegd
Bij het aanleveren van de datawaarden die in de nieuwe tabel moeten worden ingevoegd, dient met het volgende rekening te worden gehouden:
- String-gegevenstypen - alle stringwaarden moeten tussen enkele aanhalingstekens staan.
- Numerieke gegevenstypen: alle numerieke waarden moeten rechtstreeks worden opgegeven zonder ze tussen enkele of dubbele aanhalingstekens te plaatsen.
- Datumgegevenstypen - plaats datumwaarden tussen enkele aanhalingstekens in de indeling 'JJJJ-MM-DD'.
Voorbeeld:
Stel dat we de volgende lijst hebben met nieuwe bibliotheekleden die aan de database moeten worden toegevoegd.
Volledige namen | Geboortedatum | geslacht | Fysiek adres | postadres | Contact nummer | E-mailadres |
---|---|---|---|---|---|---|
Leonard Hofstadter | Mannetje | Woodcrest | 0845738767 | |||
Sheldon Cooper | Mannetje | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Mannetje | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Mannetje | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Mannetje | South Park | Postbus 4563 | 0987786553 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
Laten we de gegevens een voor een INVOEGEN. We beginnen met Leonard Hofstadter. We behandelen het contactnummer als een numeriek gegevenstype en zetten het nummer niet tussen enkele aanhalingstekens.
INVOEGEN IN `leden` (` volledige_namen`, `geslacht`,` fysiek_adres`, `contactnummer`) WAARDEN ('Leonard Hofstadter', 'Man', 'Woodcrest', 0845738767);
Bij het uitvoeren van het bovenstaande script wordt de 0 van Leonard's contactnummer verwijderd. Dit komt doordat de waarde wordt behandeld als een numerieke waarde en de nul (0) aan het begin wordt verwijderd omdat deze niet significant is.
Om dergelijke problemen te voorkomen, moet de waarde tussen enkele aanhalingstekens worden geplaatst, zoals hieronder wordt weergegeven -
INVOEGEN IN `leden` (` volledige_namen`, `geslacht`,` fysiek_adres`, `contactnummer`) WAARDEN ('Sheldon Cooper', 'Mannelijk', 'Woodcrest', '0976736763');
In het bovenstaande geval wordt nul (0) niet verwijderd
Het wijzigen van de volgorde van de kolommen heeft geen effect op de INSERT-query in MySQL zolang de juiste waarden zijn toegewezen aan de juiste kolommen.
De onderstaande vraag illustreert het bovenstaande punt.
INVOEGEN IN `leden` (` contactnummer`, `geslacht`,` volledige_namen`, `fysiek_adres`) WAARDEN ('0938867763', 'Man', 'Rajesh Koothrappali', 'Woodcrest');
De bovenstaande zoekopdrachten hebben de geboortedatumkolom overgeslagen. MySQL zal standaard NULL-waarden invoegen in kolommen die worden weggelaten in de INSERT-query.
Laten we nu het record voor Leslie invoegen, waarin de geboortedatum is opgegeven. De datumwaarde moet tussen enkele aanhalingstekens worden geplaatst met de indeling 'JJJJ-MM-DD'.
INVOEGEN IN `leden` (` volledige_namen`, `geboortedatum`,` geslacht`, `fysiek_adres`,` contactnummer`) WAARDEN ('Leslie Winkle', '1984-02-14', 'Mannelijk', 'Woodcrest', ' 0987636553 ');
Alle bovenstaande query's specificeerden de kolommen en brachten ze in kaart met waarden in de MySQL-instructie insert. Als we waarden opgeven voor ALLE kolommen in de tabel, kunnen we de kolommen weglaten uit de MySQL-invoegquery.
Voorbeeld:-
INVOEGEN IN 'leden' WAARDEN (9, 'Howard Wolowitz', 'Male', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Laten we nu de SELECT-instructie gebruiken om alle rijen in de tabel van het lid te bekijken.
SELECT * FROM `members`;
lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contct_ nummer | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Vrouw | 21-07-1980 | First Street Plot No 4 | Privétas | 0759253542 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
2 | Janet Smith Jones | Vrouw | 23-06-1980 | Melrose 123 | NUL | NUL | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
3 | Robert Phil | Mannetje | 12-07-1989 | 3e straat 34 | NUL | 12345 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
4 | Gloria Williams | Vrouw | 14-02-1984 | 2e straat 23 | NUL | NUL | NUL |
5 | Leonard Hofstadter | Mannetje | NUL | Woodcrest | NUL | 845738767 | NUL |
6 | Sheldon Cooper | Mannetje | NUL | Woodcrest | NUL | 976736763 | NUL |
7 | Rajesh Koothrappali | Mannetje | NUL | Woodcrest | NUL | 938867763 | NUL |
8 | Leslie Winkle | Mannetje | 14-02-1984 | Woodcrest | NUL | 987636553 | NUL |
9 | Howard Wolowitz | Mannetje | 24-08-1981 | SouthPark | Postbus 4563 | 987786553 | Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken. |
Merk op dat het contactnummer voor Leonard Hofstadter de nul (0) van het contactnummer heeft laten vallen. De andere contactnummers hebben de nul (0) aan het begin niet laten vallen.
Invoegen in een tafel vanuit een andere tafel
De opdracht INSERT kan ook worden gebruikt om gegevens uit een andere tabel in een tabel in te voegen. De basissyntaxis is zoals hieronder weergegeven.
INSERT IN table_1 SELECT * FROM table_2;
Laten we nu naar een praktisch voorbeeld kijken. We zullen een dummy-tabel maken voor filmcategorieën voor demonstratiedoeleinden. We noemen de nieuwe categorietabel categories_archive. Het onderstaande script maakt de tabel.
CREATE TABLE `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) STANDAARD NULL,` opmerkingen` varchar (500) STANDAARD NULL, PRIMAIRE SLEUTEL (`categorie_id`))
Voer het bovenstaande script uit om de tabel te maken.
Laten we nu alle rijen uit de categorietabel invoegen in de categoriearchieftabel. Het onderstaande script helpt ons daarbij.
INVOEGEN IN `categorieën_archief` SELECTEER * UIT` categorieën`;
Door het bovenstaande script uit te voeren, worden alle rijen van de categorietabel ingevoegd in de categoriearchieftabel. Merk op dat de tabelstructuren hetzelfde moeten zijn om het script te laten werken. Een robuuster script is een script dat de kolomnamen in de invoegtabel toewijst aan die in de tabel met de gegevens.
De onderstaande vraag toont het gebruik ervan.
INVOEGEN IN `categorieën_archief` (categorie_id, categorie_naam, opmerkingen) SELECTEER categorie_id, categorie_naam, opmerkingen VAN` categorieën`;
De SELECT-query uitvoeren
SELECTEER * UIT `categorieën_archief`
geeft de volgende resultaten hieronder weergegeven.
categorie ID | categorie naam | opmerkingen |
---|---|---|
1 | Komedie | Films met humor |
2 | Romantisch | Liefdesverhalen |
3 | Episch | Verhaalachtige films |
4 | Verschrikking | NUL |
5 | Science fiction | NUL |
6 | Thriller | NUL |
7 | Actie | NUL |
8 | Romantische komedie | NUL |
9 | Tekenfilms | NUL |
10 | Tekenfilms | NUL |
PHP-voorbeeld: invoegen in MySQL-tabel
De functie mysqli_query wordt gebruikt om SQL-query's uit te voeren.
De functie kan worden gebruikt om de volgende typen query's uit te voeren;
- Invoegen
- Selecteer
- Bijwerken
- verwijderen
Het heeft de volgende syntaxis.
mysqli_query($db_handle,$query);
HIER,
"mysqli_query (
…) "Is de functie die de SQL-query's uitvoert."$ query" is de SQL-query die moet worden uitgevoerd
"$ link_identifier" is optioneel, het kan worden gebruikt om de serververbindingslink door te geven
Voorbeeld
$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);}}
Overzicht
- Het INSERT-commando wordt gebruikt om nieuwe gegevens aan een tabel toe te voegen. MySql zal een nieuwe rij toevoegen zodra de opdracht is uitgevoerd.
- De datum- en tekenreekswaarden moeten tussen enkele aanhalingstekens staan.
- De numerieke waarden hoeven niet tussen aanhalingstekens te staan.
- De opdracht INSERT kan ook worden gebruikt om gegevens van de ene tabel in de andere in te voegen.