MySQL INSERT INTO Query: Sådan tilføjes række i tabel (eksempel)
⚡ Smart opsummering
MySQL INSERT INTO Query tilføjer nye rækker til en tabel, enten ved at navngive målkolonnerne eksplicit eller ved at angive en værdi for hver kolonne. Korrekt anførsel af strenge, tal og datoer afgør, om de gemte data forbliver intakte.

Hvad er INSERT INTO?
INDSÆT IND bruges til at gemme data i tabellerne. INSERT-kommandoen opretter en ny række i tabellen til at gemme data. Dataene leveres normalt af applikationsprogrammer, der kører oven på databasen.
Grundlæggende syntaks
Lad os se på den grundlæggende syntaks for INSERT INTO MySQL kommando:
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
HER
- INSERT INTO `table_name` er kommandoen, der fortæller MySQL server for at tilføje en ny række i en tabel med navnet `table_name.`
- (column_1,column_2,...) angiver de kolonner, der skal opdateres i den nye MySQL række
- VALUES (værdi_1, værdi_2,...) angiver de værdier, der skal tilføjes i den nye række
Når du angiver de dataværdier, der skal indsættes i den nye tabel, skal følgende tages i betragtning:
- Strengdatatyper – alle strengværdier skal være omgivet af enkelte anførselstegn.
- Numeriske datatyper – alle numeriske værdier skal angives direkte uden at omslutte dem i enkelte eller dobbelte anførselstegn.
- Datodatatyper – indsæt datoværdier i enkelte anførselstegn i formatet 'ÅÅÅÅ-MM-DD'.
Indsættelse af flere rækker på én gang
En enkelt INSERT-sætning kan indeholde flere rækker. Adskil hvert sæt værdier med et komma. Én sætning er hurtigere end mange, fordi indekset opdateres én gang.
INSERT INTO `categories`(`category_name`,`remarks`) VALUES ('Documentary', 'Factual films'), ('Musical', 'Song driven films');
MySQL Eksempel på INDSÆT-forespørgsel
Antag, at vi har følgende liste over nye biblioteksmedlemmer, der skal tilføjes til databasen.
| Fuldstændige navne | Fødselsdato | køn | Fysisk adresse | postadresse | Kontakt nummer | E-mail-adresse |
|---|---|---|---|---|---|---|
| Leonard Hofstadter | Mand | Træstøtte | 0845738767 | |||
| Sheldon Cooper | Mand | Træstøtte | 0976736763 | |||
| Rajesh Koothrappali | Mand | Træstøtte | 0938867763 | |||
| Leslie Winkle | 14/02/1984 | Mand | Træstøtte | 0987636553 | ||
| Howard Wolowitz | 24/08/1981 | Mand | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Lad os INDSÆTTE dataene én række ad gangen, startende med Leonard Hofstadter. Vi behandler kontaktnummeret som en numerisk datatype og omslutter ikke nummeret i enkelte anførselstegn.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
Hvis ovenstående script udføres, fjernes 0'et fra Leonards kontaktnummer, fordi værdien behandles som numerisk, og et foranstillet nul ikke er signifikant.
For at undgå sådanne problemer skal værdien omsluttes af enkelte anførselstegn som vist nedenfor.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
⚠️ Tip: Gem telefonnumre, postnumre og lignende identifikatorer i en tekstkolonne, f.eks. VARCHAR. Numeriske kolonner må ikke have et foranstillet nul.
Ændring af kolonnerækkefølgen
Ændring af rækkefølgen af kolonnerne har ingen effekt på INSERT-forespørgslen i MySQL, så længe de korrekte værdier er blevet knyttet til de korrekte kolonner. Spørgsmålet nedenfor demonstrerer dette.
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');
Ovenstående forespørgsler sprang over fødselsdatokolonnen. Som standard, MySQL indsætter NULL-værdier i kolonner, der er udeladt fra INSERT-forespørgslen.
Lad os nu indsætte posten for Leslie, som har fødselsdatoen angivet. Datoværdien skal omsluttes af enkelte anførselstegn i formatet 'ÅÅÅÅ-MM-DD'.
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');
Udeladelse af kolonnelisten
Alle ovenstående forespørgsler navngav kolonnerne og knyttede dem til værdier. Hvis vi angiver værdier for ALLE kolonnerne i tabellen, kan kolonnelisten udelades fra MySQL indsæt forespørgsel.
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');
Lad os nu bruge SELECT erklæring for at se alle rækkerne i medlemstabellen.
SELECT * FROM `members`;
| medlemsnummer | fulde_ navne | køn | fødselsdato | fysisk adresse | postadresse | kontakt_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Kvinde | 21-07-1980 | First Street Plot nr. 4 | Privat taske | +0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Kvinde | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mand | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Kvinde | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Mand | NULL | Træstøtte | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mand | NULL | Træstøtte | NULL | 0976736763 | NULL |
| 7 | Rajesh Koothrappali | Mand | NULL | Træstøtte | NULL | 0938867763 | NULL |
| 8 | Leslie Winkle | Mand | 14-02-1984 | Træstøtte | NULL | 0987636553 | NULL |
| 9 | Howard Wolowitz | Mand | 24-08-1981 | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Bemærk at Leonard Hofstadters kontaktnummer har fjernet sit indledende nul, præcis som forudsagt. De anførte numre bevarer det.
Indsættelse i en tabel fra en anden tabel
INSERT-kommandoen kan også bruges til at indsætte data i en tabel fra en anden tabel. Den grundlæggende syntaks er som vist nedenfor.
INSERT INTO table_1 SELECT * FROM table_2;
Vi vil nu oprette en dummy-tabel for filmkategorier, kaldet categories_archive. Scriptet nedenfor skaber bordet.
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`))
Udfør ovenstående script for at oprette tabellen. Lad os nu indsætte alle rækkerne fra kategoritabellen i kategoriarkivtabellen.
INSERT INTO `categories_archive` SELECT * FROM `categories`;
Tabelstrukturerne skal være de samme for at scriptet kan fungere. Et mere robust script knytter kolonnenavnene i destinationstabellen til dem i tabellen, der indeholder dataene, som vist nedenfor.
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
Udførelse af SELECT-forespørgslen nedenfor giver følgende resultater.
SELECT * FROM `categories_archive`;
| kategori_id | CATEGORY_NAME | bemærkninger |
|---|---|---|
| 1 | Komedie | Film med humor |
| 2 | Romantisk | Kærlighedshistorier |
| 3 | Epic | Gamle historiefilm |
| 4 | Horror | NULL |
| 5 | Science Fiction | NULL |
| 6 | Thriller | NULL |
| 7 | Handling | NULL |
| 8 | Romantisk komedie | NULL |
| 9 | tegnefilm | NULL |
| 10 | tegnefilm | NULL |
PHP Eksempel: Indsæt i MySQL Bordlampe
Mysqli_query-funktionen bruges til at udføre SQL forespørgsler fra PHP. Den kører både Insert-, Select-, Update- og Delete-sætninger og har følgende syntaks.
mysqli_query($db_handle,$query);
HER,
- "mysqli_query(...)" er den funktion, der udfører SQL-forespørgslerne.
- "$query" er den SQL-forespørgsel, der skal udføres.
- “$db_handle” er serverforbindelseslinket, der returneres af mysqli_connect.
Eksempel
$servername = "localhost"; $username = "alex"; $password = "yPXuPT"; $dbname = "afmznf"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$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" . '<br>'; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }
