MySQL INFOGA I fråga: Hur man lägger till rad i tabell (exempel)
Vad är INSERT INTO?
INSERT IN används för att lagra data i tabellerna. Kommandot INSERT skapar en ny rad i tabellen för att lagra data. Datan 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 i enkla eller dubbla citattecken.
- Datumdatatyper – omge datumvärden inom enstaka citattecken i formatet 'ÅÅÅÅ-MM-DD'.
Exempelvis:
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 | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | man | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | man | South Park | PO Box 4563 | 0987786553 | lwolowitz@email.me |
Låt oss INFOGA data en efter en. Vi börjar med Leonard Hofstadter. Vi kommer att behandla kontaktnumret som en numerisk datatyp och inte bifoga numret i enstaka citattecken.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
Genom att köra ovanstående skript tappas nollan från Leonards kontaktnummer. Detta beror på att värdet kommer att behandlas som ett numeriskt värde, och nollan (0) i början tas bort eftersom den inte är signifikant.
För att undvika sådana problem måste värdet omges av enkla citattecken som visas nedan –
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
I ovanstående fall kommer noll(0) inte att tas bort
Att ändra ordningen på kolumnerna har ingen effekt på INSERT-frågan i MySQL så länge de korrekta värdena har mappats till rätt kolumner.
Frågan som visas nedan visar punkten ovan.
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 kommer att infoga NULL-värden i kolumner som utelämnas i INSERT-frågan.
Låt oss nu infoga posten för Leslie, som har födelsedatumet angett. Datumvärdet ska 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');
Alla ovanstående frågor specificerade kolumnerna och mappade dem till värden i MySQL infoga uttalande. Om vi tillhandahåller värden för ALLA kolumner i tabellen, kan vi utelämna kolumnerna från MySQL infoga fråga.
Exempel:-
INSERT INTO `members` VALUES (9,'Howard Wolowitz','Male','1981-08-24', 'SouthPark','P.O. Box 4563', '0987786553', 'lwolowitz[at]email.me');
Låt oss nu använda SELECT-sats för att se alla rader i medlemmens tabell.
SELECT * FROM `members`;
medlemsnummer | Fullständiga namn | kön | födelsedatum | fysisk adress | postadress | kontakt_nummer | |
---|---|---|---|---|---|---|---|
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 kontaktnumret för Leonard Hofstadter har tagit bort nollan (0) från kontaktnumret. De andra kontaktnumren har inte sjunkit nollan (0) i början.
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;
Låt oss nu titta på ett praktiskt exempel. Vi kommer att skapa en dummy-tabell för filmkategorier för demonstrationsändamål. Vi kommer att kalla de nya kategorierna tabellen kategorier_arkiv. Skriptet som visas 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`))
Utför skriptet ovan för att skapa tabellen.
Låt oss nu infoga alla rader från kategoritabellen i kategoriarkivtabellen. Skriptet som visas nedan hjälper oss att uppnå det.
INSERT INTO `categories_archive` SELECT * FROM `categories`;
Genom att köra ovanstående skript infogas alla rader från kategoritabellen i kategoriarkivtabellen. Observera att tabellstrukturerna måste vara desamma för att skriptet ska fungera. Ett mer robust skript är ett som mappar kolumnnamnen i infogningstabellen till de i tabellen som innehåller data.
Frågan som visas nedan visar dess användning.
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
Kör SELECT-frågan
SELECT * FROM `categories_archive`
ger följande resultat som visas nedan.
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.
Funktionen SQL infoga i tabell kan användas för att köra följande frågetyper:
- Insert
- Välja
- Uppdatering
- radera
Den har följande syntax.
mysqli_query($db_handle,$query);
HÄR,
"mysqli_query(...)" är funktionen som exekverar SQL-frågorna.
"$query" är SQL-frågan som ska köras
"$link_identifier" är valfritt, det kan användas för att skicka in serveranslutningslänken
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); } }
Sammanfattning
- Kommandot INSERT används för att lägga till ny data i en tabell. MySql kommer att lägga till en ny rad när kommandot har utförts.
- Datum- och strängvärdena bör omges av enkla citattecken.
- De numeriska värdena behöver inte stå inom citattecken.
- Kommandot INSERT kan också användas för att infoga data från en tabell till en annan.