Hvad er INDSÆT I?
INSERT INTO bruges til at gemme data i tabellerne. INSERT-kommandoen 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-kommandoen:
INDSÆT I 'tabelnavn' (kolonne_1, kolonne_2,…) VÆRDIER (værdi_1, værdi_2,…);
HER
- INSERT INTO `table_name` er den kommando, der fortæller MySQL-serveren at tilføje en ny række til en tabel, der hedder` table_name.`
- (column_1, column_2,…) angiver de kolonner, der skal opdateres i den nye MySQL-række
- VALUES (value_1, value_2,…) angiver de værdier, der skal føjes til den nye række
Når du leverer de dataværdier, der skal indsættes i den nye tabel, skal følgende overvejes:
- Strengdatatyper - alle strengværdier skal være anbragt i enkelte anførselstegn.
- Numeriske datatyper - alle numeriske værdier skal leveres direkte uden at omslutte dem i enkelt eller dobbelt anførselstegn.
- Datodatatyper - omslut datoværdier i enkelt anførselstegn i formatet 'ÅÅÅÅ-MM-DD'.
Eksempel:
Antag, at vi har følgende liste over nye biblioteksmedlemmer, der skal føjes til databasen.
Fuld navne | Fødselsdato | køn | Fysisk adresse | postadresse | Kontakt nummer | Email adresse |
---|---|---|---|---|---|---|
Leonard Hofstadter | Han | Woodcrest | 0845738767 | |||
Sheldon Cooper | Han | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Han | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Han | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Han | South Park | Postboks 4563 | 0987786553 | Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den. |
Lad os indsætte data en efter en. Vi starter med Leonard Hofstadter. Vi behandler kontaktnummeret som en numerisk datatype og ikke vedlægger nummeret i enkelte tilbud.
INDSÆT I "medlemmer" ("fulde_navne", "køn", "fysisk_adresse", "kontaktnummer") VÆRDIER ('Leonard Hofstadter', 'Mand', 'Woodcrest', 0845738767);
Ved at udføre ovenstående script falder 0 fra Leonards kontaktnummer. Dette skyldes, at værdien vil blive behandlet som en numerisk værdi, og nul (0) i starten falder, da det ikke er signifikant.
For at undgå sådanne problemer skal værdien være lukket i enkelte tilbud som vist nedenfor -
INDSÆT I "medlemmer" ("fulde_navne", "køn", "fysisk_adresse", "kontakt_nummer") VÆRDIER ('Sheldon Cooper', 'Mand', 'Woodcrest', '0976736763');
I ovennævnte tilfælde slettes nul (0) ikke
Æ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 kortlagt til de korrekte kolonner.
Forespørgslen nedenfor viser ovenstående punkt.
INDSÆT I `medlemmer` (` kontakt_nummer`, `køn`,` fulde_navne`, `fysisk_adresse`) VÆRDIER ('0938867763', 'Mand', 'Rajesh Koothrappali', 'Woodcrest');
Ovenstående forespørgsler sprang over fødselsdatoen. Som standard indsætter MySQL NULL-værdier i kolonner, der er udeladt i INSERT-forespørgslen.
Lad os nu indsætte posten for Leslie, som har fødselsdatoen angivet. Datoværdien skal være lukket i enkelt anførselstegn ved brug af formatet 'ÅÅÅÅ-MM-DD'.
INDSÆT I "medlemmer" ("fulde_navne", "dato_fødsel", "køn", "fysisk_adresse", "kontakt_nummer") VÆRDIER ('Leslie Winkle', '1984-02-14', 'Mand', 'Woodcrest', ' 0987636553 ');
Alle ovenstående forespørgsler specificerede kolonnerne og kortlagde dem til værdier i MySQL-indsætningserklæringen. Hvis vi leverer værdier for ALLE kolonnerne i tabellen, kan vi udelade kolonnerne fra MySQL-indsætningsforespørgslen.
Eksempel:-
INDSÆT I `` medlemsVÆRDIER (9, 'Howard Wolowitz', 'Mand', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Lad os nu bruge SELECT-sætningen til at se alle rækkerne i medlemmets tabel.
SELECT * FROM `members`;
medlemsnummer | fulde_ navne | køn | fødselsdato | fysisk adresse | postadresse | kont.nr | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Kvinde | 21-07-1980 | First Street Plot No 4 | Privat taske | 0759 253 542 | Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den. |
2 | Janet Smith Jones | Kvinde | 23-06-1980 | Melrose 123 | NUL | NUL | Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den. |
3 | Robert Phil | Han | 12-07-1989 | 3rd Street 34 | NUL | 12345 | Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den. |
4 | Gloria Williams | Kvinde | 14-02-1984 | 2nd Street 23 | NUL | NUL | NUL |
5 | Leonard Hofstadter | Han | NUL | Woodcrest | NUL | 845738767 | NUL |
6 | Sheldon Cooper | Han | NUL | Woodcrest | NUL | 976736763 | NUL |
7 | Rajesh Koothrappali | Han | NUL | Woodcrest | NUL | 938867763 | NUL |
8 | Leslie Winkle | Han | 14-02-1984 | Woodcrest | NUL | 987636553 | NUL |
9 | Howard Wolowitz | Han | 24-08-1981 | South Park | Postboks 4563 | 987786553 | Denne e-mail-adresse er beskyttet mod spambots. Du skal aktivere JavaScript for at kunne se den. |
Bemærk kontaktnummeret for Leonard Hofstadter har droppet nul (0) fra kontaktnummeret. De andre kontaktnumre er ikke faldet nul (0) i starten.
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.
INDSÆT I tabel_1 VÆLG * FRA tabel_2;
Lad os nu se på et praktisk eksempel. Vi opretter en dummy-tabel til filmkategorier til demonstrationsformål. Vi kalder tabellen for nye kategorier kategorier_arkiv. Nedenstående script opretter tabellen.
OPRET TABEL `kategorier_arkiv` (` kategori_id` int (11) AUTO_INCREMENT, `kategori_navn` varchar (150) STANDARD NULL,` bemærkninger` varchar (500) STANDARD NULL, PRIMÆR NØGLE (`kategori_id`))
Udfør ovenstående script for at oprette tabellen.
Lad os nu indsætte alle rækkerne fra kategoritabellen i kategoriarkivtabellen. Nedenstående script hjælper os med at opnå det.
INSERT INTO `categories_archive` VÆLG * FRA` kategorier`;
Udførelse af ovenstående script indsætter alle rækkerne fra kategoritabellen i kategorierne arkivtabellen. Bemærk, at tabelstrukturer skal være de samme for at scriptet skal fungere. Et mere robust script er et, der kortlægger kolonnenavnene i indsætningstabellen til dem i tabellen, der indeholder dataene.
Forespørgslen nedenfor viser, hvordan den bruges.
INDSÆT I "kategorier_arkiv" (kategori-id, kategorienavn, bemærkninger) VÆLG kategori-id, kategorinavn, bemærkninger FRA "kategorier";
Udførelse af SELECT-forespørgslen
VÆLG * FRA `kategorier_arkiv`
giver følgende resultater vist nedenfor.
category_id | category_name | bemærkninger |
---|---|---|
1 | Komedie | Film med humor |
2 | Romantisk | Kærlighedshistorier |
3 | Episk | Historiske aktive film |
4 | Rædsel | NUL |
5 | Science Fiction | NUL |
6 | Thriller | NUL |
7 | Handling | NUL |
8 | Romantisk komedie | NUL |
9 | Tegneserier | NUL |
10 | Tegneserier | NUL |
PHP-eksempel: Indsæt i MySQL-tabel
Funktionen mysqli_query bruges til at udføre SQL-forespørgsler.
Funktionen kan bruges til at udføre følgende forespørgselstyper;
- Indsæt
- Vælg
- Opdatering
- slet
Den har følgende syntaks.
mysqli_query($db_handle,$query);
HER,
"mysqli_query (
...) "er den funktion, der udfører SQL-forespørgsler."$ forespørgsel" er den SQL-forespørgsel, der skal udføres
"$ link_identifier" er valgfri, den kan bruges til at videregive linket til serverforbindelse
Eksempel
$servername = "localhost";$username = "alex";$password = "yPXuPT";$dbname = "afmznf";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$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".'
';} else {echo "Error: " . $sql. "
" . 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 indeholdt i enkelt anførselstegn.
- De numeriske værdier behøver ikke at være indeholdt i anførselstegn.
- INSERT-kommandoen kan også bruges til at indsætte data fra en tabel i en anden.