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.

  • 📥 Kernesyntaks: INSERT INTO `tabelnavn`(kolonne_1,kolonne_2) VALUES (værdi_1,værdi_2) opretter én ny række i den navngivne tabel.
  • 🔤 Citatregel: Streng- og datoværdier kræver enkelte anførselstegn; numeriske værdier angives uden anførselstegn.
  • 0️⃣ Førende nulfælde: Et telefonnummer uden anførselstegn læses som et tal, så det indledende nul udelades lydløst.
  • 🔀 Kolonneorden: Kolonnerækkefølgen i forespørgslen er irrelevant, forudsat at hver værdi er knyttet til dens matchende kolonne.
  • 🕳️ Udeladte kolonner: Kolonner, der udelades fra sætningen, modtager NULL eller deres deklarerede standardværdi.
  • 📑 Bord til bord: INSERT INTO … SELECT kopierer rækker mellem tabeller, når kolonnestrukturerne justeres.

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 e-mail
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);
}

Ofte Stillede Spørgsmål

MySQL afviser den med en duplikatindtastningsfejl. Brug INSERT IGNORE for at springe rækken over lydløst, eller INSERT … ON DUPLICATE KEY UPDATE for at opdatere den eksisterende række i stedet.

Kør SELECT LAST_INSERT_ID() direkte efter insertet, eller kald mysqli_insert_id($conn) i PHP. Det returnerer AUTO_INCREMENT-nøglen genereret for den seneste række på din egen forbindelse.

Sammenkæd aldrig brugerinput i forespørgselsstrengen. Brug forberedte sætninger med bundne parametre, så værdier overføres separat fra SQL og kan ikke udføres som kommandoer.

Ja. AI-assistenter omdanner regneark eller almindelige beskrivelser til INSERT-sætninger, og MySQL Workbench kan køre dem. Tjek kolonnerækkefølge og citering, da en model kan gætte skemaet.

Indsæt den først i en udviklingskopi. AI-genererede rækker kan ødelægge fremmednøgler, overskride kolonnelængder eller opfinde ugyldige datoer. Kør batchen i en transaktion, så den kan rulles tilbage.

Opsummer dette indlæg med: