MySQL INFOGA I fråga: Hur man lägger till rad i tabell (exempel)

⚡ Smart sammanfattning

MySQL INSERT INTO Query lägger till nya rader i en tabell, antingen genom att namnge målkolumnerna explicit eller genom att ange ett värde för varje kolumn. Korrekt citering av strängar, siffror och datum avgör om lagrade data förblir intakta.

  • 📥 Kärnsyntax: INSERT INTO `tabellnamn`(kolumn_1,kolumn_2) VÄRDEN (värde_1,värde_2) skapar en ny rad i den namngivna tabellen.
  • 🔤 Citatregel: Sträng- och datumvärden anges utan citattecken; numeriska värden anges utan citattecken.
  • 0️⃣ Ledande nollfälla: Ett telefonnummer utan citattecken läses som ett nummer, så den inledande nollan tas bort tyst.
  • 🔀 Kolumnordning: Kolumnordningen i frågan är irrelevant, förutsatt att varje värde mappas till sin matchande kolumn.
  • 🕳️ Utelämnade kolumner: Kolumner som utelämnas från kommandot får NULL, eller deras deklarerade standardvärde.
  • 📑 Bord till bord: INSERT INTO … SELECT kopierar rader mellan tabeller när kolumnstrukturerna är justerade.

Vad är INSERT INTO?

INSERT IN används för att lagra data i tabellerna. INSERT-kommandot skapar en ny rad i tabellen för att lagra data. Informationen tillhandahålls vanligtvis av applikationsprogram som körs ovanpå databasen.

Grundläggande syntax

Låt oss titta på den grundläggande syntaxen för INSERT INTO MySQL kommando:

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

HÄR

  • INSERT INTO `tabellnamn` är kommandot som talar om MySQL server för att lägga till en ny rad i en tabell med namnet `tabellnamn.`
  • (kolumn_1, kolumn_2,...) anger de kolumner som ska uppdateras i den nya MySQL v
  • VÄRDEN (värde_1, värde_2,...) anger de värden som ska läggas till i den nya raden

När du anger datavärdena som ska infogas i den nya tabellen bör följande beaktas:

  • Strängdatatyper – alla strängvärden ska omges av enkla citattecken.
  • Numeriska datatyper – alla numeriska värden ska anges direkt utan att omge dem med enkla eller dubbla citattecken.
  • Datumdatatyper – omge datumvärden inom enstaka citattecken i formatet 'ÅÅÅÅ-MM-DD'.

Infoga flera rader samtidigt

En enda INSERT-sats kan innehålla flera rader. Separera varje uppsättning värden med ett kommatecken. En sats är snabbare än många, eftersom indexet uppdateras en gång.

INSERT INTO `categories`(`category_name`,`remarks`) VALUES
('Documentary', 'Factual films'),
('Musical', 'Song driven films');

MySQL INSERT INTO-frågeexempel

Anta att vi har följande lista över nya biblioteksmedlemmar som behöver läggas till i databasen.

Fullständiga namn Födelsedatum kön Fysisk adress postadress Kontaktnummer E-postadress
Leonard Hofstadter man Trästomme 0845738767
Sheldon Cooper man Trästomme 0976736763
Rajesh Koothrappali man Trästomme 0938867763
Leslie Winkle 14/02/1984 man Trästomme 0987636553
Howard Wolowitz 24/08/1981 man Southpark PO Box 4563 0987786553 lwolowitz@email.me

Låt oss SÄTT IN informationen en rad i taget, med början med Leonard Hofstadter. Vi kommer att behandla kontaktnumret som en numerisk datatyp och inte omge numret med enkla citattecken.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);

Om du kör ovanstående skript tas 0:an från Leonards kontaktnummer bort, eftersom värdet behandlas som numeriskt och en inledande nolla inte är signifikant.

För att undvika sådana problem måste värdet omges av enkla citationstecken som visas nedan.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');

⚠️ Tips: Lagra telefonnummer, postnummer och liknande identifierare i en textkolumn som VARCHAR. Numeriska kolumner kan inte ha en inledande nolla.

Ändra kolumnordningen

Att ändra ordningen på kolumnerna har ingen effekt på INSERT-frågan i MySQL, så länge som rätt värden har mappats till rätt kolumner. Frågan nedan visar detta.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');

Ovanstående frågor hoppade över kolumnen för födelsedatum. Som standard, MySQL infogar NULL-värden i kolumner som utelämnas från INSERT-frågan.

Nu infogar vi posten för Leslie, som har födelsedatumet angivet. Datumvärdet måste omges av enkla citattecken med 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');

Utelämna kolumnlistan

Alla ovanstående frågor namngav kolumnerna och mappade dem till värden. Om vi ​​anger värden för ALLA kolumner i tabellen kan kolumnlistan utelämnas från MySQL infoga fråga.

INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24',
'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz@email.me');

Låt oss nu använda SELECT-sats för att visa alla rader i medlemstabellen.

SELECT * FROM `members`;
medlemsnummer Fullständiga namn kön födelsedatum fysisk adress postadress kontakt_nummer e-mail
1 Janet Jones Kvinna 21-07-1980 First Street Tomt nr 4 Privat väska 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Kvinna 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil man 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Kvinna 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter man NULL Trästomme NULL 845738767 NULL
6 Sheldon Cooper man NULL Trästomme NULL 0976736763 NULL
7 Rajesh Koothrappali man NULL Trästomme NULL 0938867763 NULL
8 Leslie Winkle man 14-02-1984 Trästomme NULL 0987636553 NULL
9 Howard Wolowitz man 24-08-1981 Southpark PO Box 4563 0987786553 lwolowitz@email.me

Observera att Leonard Hofstadters kontaktnummer har tagit bort sin inledande nolla, precis som förutspått. De citattecknade numren behåller den.

Infoga i en tabell från en annan tabell

Kommandot INSERT kan också användas för att infoga data i en tabell från en annan tabell. Den grundläggande syntaxen är som visas nedan.

INSERT INTO table_1 SELECT * FROM table_2;

Vi ska nu skapa en dummy-tabell för filmkategorier, kallad categories_archive. Skriptet nedan skapar 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`))

Kör ovanstående skript för att skapa tabellen. Nu infogar vi alla rader från kategoritabellen i kategoriarkivtabellen.

INSERT INTO `categories_archive` SELECT * FROM `categories`;

Tabellstrukturerna måste vara desamma för att skriptet ska fungera. Ett mer robust skript mappar kolumnnamnen i måltabellen till de i tabellen som innehåller data, som visas nedan.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;

Att köra SELECT-frågan nedan ger följande resultat.

SELECT * FROM `categories_archive`;
kategori_id CATEGORY_NAME anmärkningar
1 Komedi Filmer med humor
2 Romantisk Kärlekshistorier
3 Episk Berättelse gamla filmer
4 Fasa NULL
5 Science Fiction NULL
6 Thriller NULL
7 Handling NULL
8 Romantisk komedi NULL
9 Tecknade serier NULL
10 Tecknade serier NULL

PHP Exempel: Infoga i MySQL Bord

Funktionen mysqli_query används för att köra SQL frågor från PHP. Den kör Insert-, Select-, Update- och Delete-satser på samma sätt och har följande syntax.

mysqli_query($db_handle,$query);

HÄR,

  • "mysqli_query(...)" är funktionen som exekverar SQL-frågorna.
  • "$query" är den SQL-fråga som ska köras.
  • "$db_handle" är serveranslutningslänken som returneras av mysqli_connect.

Exempelvis

$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);
}

Vanliga frågor

MySQL avvisar den med ett duplicerat inmatningsfel. Använd INSERT IGNORE för att hoppa över raden tyst, eller INSERT … ON DUPLICATE KEY UPDATE för att uppdatera den befintliga raden istället.

Kör SELECT LAST_INSERT_ID() direkt efter inserten, eller anropa mysqli_insert_id($conn) i PHP. Den returnerar AUTO_INCREMENT-nyckeln som genererats för den senaste raden på din egen anslutning.

Sammanfoga aldrig användarinmatning i frågesträngen. Använd förberedda satser med bundna parametrar, så att värdena överförs separat från SQL och kan inte köras som kommandon.

Ja. AI-assistenter omvandlar kalkylblad eller enkla beskrivningar till INSERT-satser, och MySQL Arbetsbänk kan köra dem. Kontrollera kolumnordningen och citeringen, eftersom en modell kan gissa schemat.

Infoga den först i en utvecklingskopia. AI-genererade rader kan förstöra främmande nycklar, överskrida kolumnlängder eller skapa ogiltiga datum. Kör batchen i en transaktion så att den kan återställas.

Sammanfatta detta inlägg med: