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 | |
---|---|---|---|---|---|---|---|
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.