MySQL INSERT INTO Query: Sådan tilføjes række i tabel (eksempel)

Hvad er INSERT INTO?

INDSÆT IND bruges til at gemme data i tabellerne. Kommandoen INSERT opretter en ny række i tabellen til lagring af 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 leveres direkte uden at omslutte dem i enkelte eller dobbelte anførselstegn.
  • Datodatatyper – indsæt datoværdier i enkelte anførselstegn i formatet 'ÅÅÅÅ-MM-DD'.


Eksempel:

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 Fairview 0938867763
Leslie Winkle 14/02/1984 Mand 0987636553
Howard Wolowitz 24/08/1981 Mand South Park PO Box 4563 0987786553 lwolowitz@email.me

Lad os INDSÆTTE data én efter én. Vi starter med Leonard Hofstadter. Vi behandler kontaktnummeret som en numerisk datatype og angiver ikke nummeret i enkelte anførselstegn.

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

Udførelse af ovenstående script taber 0'et fra Leonards kontaktnummer. Dette skyldes, at værdien vil blive behandlet som en numerisk værdi, og nullet (0) i begyndelsen slettes, da det ikke er signifikant.

For at undgå sådanne problemer skal værdien angives i enkelte anførselstegn som vist nedenfor –

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

I ovenstående tilfælde vil nul(0) ikke blive slettet


Æ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 tilknyttet de rigtige kolonner.

Forespørgslen vist nedenfor demonstrerer ovenstående punkt.

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 vil indsætte NULL-værdier i kolonner, der er udeladt i INSERT-forespørgslen.

Lad os nu indsætte posten for Leslie, som har fødselsdatoen oplyst. Datoværdien skal være omgivet af enkelte anførselstegn ved brug af 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');

Alle ovenstående forespørgsler specificerede kolonnerne og tilknyttede dem til værdier i MySQL indsæt erklæring. Hvis vi angiver værdier for ALLE kolonnerne i tabellen, kan vi udelade kolonnerne fra MySQL indsæt forespørgsel.

Eksempel:-

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

Lad os nu bruge SELECT erklæring for at se alle rækkerne i medlemmets tabel.

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 kontaktnummeret for Leonard Hofstadter har slettet nullet (0) fra kontaktnummeret. De andre kontaktnumre har ikke faldet nul (0) i begyndelsen.

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;

Lad os nu se på et praktisk eksempel. Vi vil oprette en dummy-tabel til filmkategorier til demonstrationsformål. Vi vil kalde de nye kategorier tabel kategorier_arkiv. Scriptet vist 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. Scriptet vist nedenfor hjælper os med at opnå det.

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

Ved at udføre ovenstående script indsættes alle rækkerne fra kategoritabellen i kategoriarkivtabellen. Bemærk, at tabelstrukturerne skal være de samme, for at scriptet kan fungere. Et mere robust script er et, der kortlægger kolonnenavnene i indsættelsestabellen med dem i tabellen, der indeholder dataene.

Forespørgslen vist nedenfor viser dens brug.

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

Udførelse af SELECT-forespørgslen

SELECT * FROM `categories_archive`

giver følgende resultater vist nedenfor.

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.

Funktionen SQL-indsæt i tabel kan bruges til at udføre følgende forespørgselstyper:

  • indsatte
  • Type
  • Opdatering
  • slette

Den 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

"$link_identifier" er valgfri, den kan bruges til at sende serverforbindelseslinket

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

Resumé

  • INSERT-kommandoen bruges til at tilføje nye data til en tabel. MySql tilføjer en ny række, når kommandoen er udført.
  • Dato- og strengværdierne skal være omgivet af enkelte anførselstegn.
  • De numeriske værdier behøver ikke at være omgivet af anførselstegn.
  • INSERT-kommandoen kan også bruges til at indsætte data fra en tabel i en anden.