Mi az INSERT INTO?
Az INSERT INTO az adatok tárolására szolgál a táblákban. Az INSERT parancs új sort hoz létre a táblázatban az adatok tárolására. Az adatokat általában az adatbázis tetején futó alkalmazásprogramok szolgáltatják.
Alapszintaktika
Nézzük meg az INSERT INTO MySQL parancs alapvető szintaxisát:
INSERT INTO `table_name` (oszlop_1, oszlop_2,…) ÉRTÉKEK (érték_1, érték_2, ...);
ITT
- Az INSERT INTO "table_name" az a parancs, amely megmondja a MySQL szervernek, hogy adjon hozzá egy új sort a "table_name" nevű táblához.
- (oszlop_1, oszlop_2,…) adja meg az új MySQL sorban frissítendő oszlopokat
- Az VALUES (érték_1, érték_2,…) meghatározza az új sorba adandó értékeket
Az új táblázatba beillesztendő adatértékek megadásakor a következőket kell figyelembe venni:
- Karakterlánc-adattípusok - az összes karakterlánc-értéket egyetlen idézőjelbe kell foglalni.
- Numerikus adattípusok - az összes numerikus értéket közvetlenül kell megadni anélkül, hogy azokat egyetlen vagy dupla idézőjelbe kellene foglalni.
- Dátum adattípusok - a dátumértékeket egyetlen idézőjelben csatolja „ÉÉÉÉ-HH-NN” formátumban.
Példa:
Tegyük fel, hogy a következő új könyvtártagokkal rendelkezünk, amelyeket fel kell venni az adatbázisba.
Teljes nevek | Születési dátum | nem | Valódi cím | postázási cím | Elérhetőség | Email cím |
---|---|---|---|---|---|---|
Leonard Hofstadter | Férfi | Woodcrest | 0845738767 | |||
Sheldon Cooper | Férfi | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Férfi | Fairview | 0938867763 | |||
Leslie Winkle | 1984. 02. 14 | Férfi | 0987636553 | |||
Howard Wolowitz | 1981. augusztus 24 | Férfi | déli Park | PO Box 4563 | 0987786553 | Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. |
ADJUK be az adatokat egyesével. Leonard Hofstadterrel kezdjük. A kapcsolattartó számot numerikus adattípusként kezeljük, és nem csatoljuk az idézőjeleket.
INSERT INTO "tagok" ("teljes_nevek", "nem", "fizikai_cím", "elérhetőség_szám") ÉRTÉKEK ("Leonard Hofstadter", "Férfi", "Woodcrest", 0845738767);
A fenti parancsfájl végrehajtása eldobja a 0 értéket Leonard kapcsolattartási számától. Ennek oka, hogy az értéket numerikus értékként kezeljük, és az elején a nulla (0) eldobásra kerül, mivel nem szignifikáns.
Az ilyen problémák elkerülése érdekében az értéket egyetlen idézőjelbe kell foglalni, az alábbiak szerint -
INSERT INTO "tagok" ("teljes_nevek", "nem", "fizikai_cím", "kapcsolattartó_szám") ÉRTÉKEK ("Sheldon Cooper", "Férfi", "Woodcrest", "0976736763");
A fenti esetben a nullát (0) nem vesszük el
Az oszlopok sorrendjének megváltoztatása nincs hatással az INSERT lekérdezésre a MySQL-ben, mindaddig, amíg a helyes értékeket hozzárendelték a megfelelő oszlopokhoz.
Az alább látható lekérdezés bemutatja a fenti pontot.
INSERT INTO "tagok" ("kapcsolat_szám", "nem", "teljes_nevek", "fizikai_cím") ÉRTÉKEK ("0938867763", "Férfi", "Rajesh Koothrappali", "Woodcrest");
A fenti lekérdezések kihagyták a születési dátum oszlopot. Alapértelmezés szerint a MySQL NULL értékeket fog beilleszteni az INSERT lekérdezésből kihagyott oszlopokba.
Helyezzük be a Leslie nyilvántartását, amely a születési dátumot tartalmazza. A dátumértéket egyetlen idézőjelben kell feltüntetni az „ÉÉÉÉ-HH-NN” formátumban.
INSERT INTO "tagok" ("teljes_nevek", "születési dátum", "nem", "fizikai_cím", "kapcsolattartó_szám") ÉRTÉKEK ("Leslie Winkle", "1984-02-14", "Férfi", "Woodcrest", " 0987636553 ”);
A fenti lekérdezések mindegyike meghatározta az oszlopokat, és a MySQL insert utasítás értékeihez rendelte őket. Ha a táblázat MINDEN oszlopának értékét adjuk meg, akkor kihagyhatjuk az oszlopokat a MySQL beszúrási lekérdezésből.
Példa:-
INSERT INTO "tagok" ÉRTÉKEI (9, "Howard Wolowitz", "Male", "1981-08-24",
"SouthPark", "PO Box 4563", "0987786553", "lwolowitz [at] email.me") ;
Most használjuk a SELECT utasítást a tagtáblázat összes sorának megtekintéséhez.
SELECT * FROM `members`;
Tagsági szám | teljes_nevek | nem | születési dátum | valódi cím | postázási cím | folytatás_ szám | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Női | 1980-07-21 | Első utca 4. sz | Privát táska | 0759 253 542 | Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. |
2 | Janet Smith Jones | Női | 1980-06-23 | Melrose 123 | NULLA | NULLA | Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. |
3 | Robert Phil | Férfi | 1989-07-12 | 3. utca 34 | NULLA | 12345 | Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. |
4 | Gloria Williams | Női | 1984-02-14 | 2. utca 23 | NULLA | NULLA | NULLA |
5. | Leonard Hofstadter | Férfi | NULLA | Woodcrest | NULLA | 845738767 | NULLA |
6. | Sheldon Cooper | Férfi | NULLA | Woodcrest | NULLA | 976736763 | NULLA |
7 | Rajesh Koothrappali | Férfi | NULLA | Woodcrest | NULLA | 938867763 | NULLA |
8. | Leslie Winkle | Férfi | 1984-02-14 | Woodcrest | NULLA | 987636553 | NULLA |
9. | Howard Wolowitz | Férfi | 1981-08-24 | Déli Park | PO Box 4563 | 987786553 | Ezt az e-mail címet a spamrobotok ellen védjük. Engedélyezze a Javascript használatát a megtekintéshez. |
Figyelje meg, hogy Leonard Hofstadter kapcsolattartási száma a nulláról (0) esett le a kapcsolat számáról. A többi kapcsolattartási szám az elején nem ejtette a nullát (0).
Beillesztés egy másik táblázat táblájába
Az INSERT paranccsal adatok is beilleszthetők egy másik tábla táblájába. Az alapszintaktika az alábbiakban látható.
INSERT INTO table_1 SELECT * FROM table_2;
Most nézzünk meg egy gyakorlati példát. Demonstrációs célokra létrehozunk egy dummy táblázatot a filmkategóriákhoz. Az új kategóriatáblát kategóriaarchívumnak hívjuk. Az alábbi szkript létrehozza a táblázatot.
CREATE TABLE `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` megjegyzések` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
A táblázat létrehozásához hajtsa végre a fenti parancsfájlt.
Helyezzük be most a kategóriák táblázat összes sorát a kategóriák archívum táblájába. Az alább látható szkript segít abban, hogy ezt elérjük.
INSERT INTO `categories_archive` SELECT * FROM` categories`;
A fenti szkript végrehajtása a kategóriák táblázat összes sorát beszúrja a kategóriák archívum táblájába. Vegye figyelembe, hogy a táblázatoknak meg kell egyezniük a szkript működéséhez. Robusztusabb szkript az, amely a beszúrótábla oszlopneveit az adatokat tartalmazó táblázatban feltérképezi.
Az alább látható lekérdezés bemutatja használatát.
INSERT INTO `categories_archive` (kategória_azonosító, kategória_neve, megjegyzések) SELECT kategória_azonosító, kategória_neve, megjegyzések FROM` kategóriákból ';
A SELECT lekérdezés végrehajtása
KIVÁLASZTÁS * FROM `categories_archive`
az alábbi eredményeket mutatja.
category_id | kategória név | megjegyzések |
---|---|---|
1 | Komédia | Filmek humorral |
2 | Romantikus | Szerelmi történetek |
3 | Epikus | Történeti filmek |
4 | Borzalom | NULLA |
5. | Tudományos-fantasztikus | NULLA |
6. | Krimi | NULLA |
7 | Akció | NULLA |
8. | Romantikus komédia | NULLA |
9. | Rajzfilmek | NULLA |
10. | Rajzfilmek | NULLA |
PHP példa: Helyezze be a MySQL táblába
A mysqli_query függvény SQL lekérdezések végrehajtására szolgál.
A függvény a következő lekérdezési típusok végrehajtására használható;
- Helyezze be
- Válassza a lehetőséget
- Frissítés
- töröl
A következő szintaxissal rendelkezik.
mysqli_query($db_handle,$query);
ITT,
"mysqli_query (
…) "Az SQL lekérdezéseket végrehajtó függvény.A "$ query" a végrehajtandó SQL lekérdezés
A "$ link_identifier" opcionális, felhasználható a szerverkapcsolat link továbbítására
Példa
$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);}}
Összegzés
- Az INSERT paranccsal új adatokat lehet hozzáadni egy táblához. A MySql új sort ad hozzá, amint a parancs végrehajtásra kerül.
- A dátumot és a karakterláncot egyetlen idézőjelben kell feltüntetni.
- A numerikus értékeket nem kell idézőjelek közé tenni.
- Az INSERT paranccsal adatok is beilleszthetők az egyik táblából a másikba.