MySQL INSERT INTO Lekérdezés: Sor hozzáadása a táblázathoz (példa)

⚡ Okos összefoglaló

MySQL Az INSERT INTO lekérdezés új sorokat ad hozzá egy táblázathoz, akár a cél oszlopok explicit elnevezésével, akár minden oszlop értékének megadásával. A karakterláncok, számok és dátumok helyes idézőjelei határozzák meg, hogy a tárolt adatok épségben megmaradnak-e.

  • 📥 Alapvető szintaxis: INSERT INTO `table_name`(column_1,column_2) VALUES (value_1,value_2) egy új sort hoz létre a névvel ellátott táblában.
  • 🔤 Idézési szabály: A karakterlánc- és dátumértékekhez aposztrófok szükségesek; a numerikus értékek idézőjelek nélkül adhatók meg.
  • 0️⃣ Vezető nullcsapda: Egy idézőjelek között nem szereplő telefonszámot számként olvas a rendszer, így a kezdő nullát csendben elhagyja.
  • 🔀 Oszlopsorrend: A lekérdezésen belüli oszlopsorrend lényegtelen, feltéve, hogy minden érték a megfelelő oszlophoz van leképezve.
  • 🕳️ Kihagyott oszlopok: Az utasításból kihagyott oszlopok NULL értéket, vagy a deklarált alapértelmezett értéküket kapják.
  • 📑 Asztalról asztalra: Az INSERT INTO … SELECT parancs sorokat másol a táblázatok között, amikor az oszlopszerkezetek igazodnak.

Mi az INSERT INTO?

INSERT INTO az adatok táblázatokban történő tárolására szolgál. Az INSERT parancs egy ú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 biztosítják.

Alapszintaxis

Nézzük meg az INSERT INTO alapvető szintaxisát MySQL parancs:

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

ITT

  • INSERT INTO A `tábla_neve` az a parancs, amely megmondja MySQL szervert, hogy új sort adjon a `tábla_neve.` nevű táblához
  • (oszlop_1,oszlop_2,…) megadja a frissítendő oszlopokat az új MySQL sor
  • Az VALUES (érték_1,érték_2,…) meghatározza az új sorba hozzá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 idézőjelek közé kell tenni.
  • Numerikus adattípusok – minden numerikus értéket közvetlenül kell megadni, idézőjelek közé vagy dupla idézőjelek közé téve.
  • Dátum adattípusok – a dátumértékeket idézőjelbe helyezze „ÉÉÉÉ-HH-NN” formátumban.

Több sor beszúrása egyszerre

Egyetlen INSERT utasítás több sort is tartalmazhat. Az egyes értékkészleteket vesszővel válassza el. Egy utasítás gyorsabb, mint sok, mivel az index egyszer frissül.

INSERT INTO `categories`(`category_name`,`remarks`) VALUES
('Documentary', 'Factual films'),
('Musical', 'Song driven films');

MySQL INSERT INTO lekérdezési példa

Tegyük fel, hogy megvan a következő lista azokról az új könyvtártagokról, amelyeket fel kell venni az adatbázisba.

Teljes nevek Születési idő nemek Valódi cím postázási cím Elérhetőség E-mail címe
Leonard Hofstadter férfi Woodcrest 0845738767
Sheldon Cooper férfi Woodcrest 0976736763
Rajesh Koothrappali férfi Woodcrest 0938867763
Leslie Winkle 14/02/1984 férfi Woodcrest 0987636553
Howard Wolowitz 24/08/1981 férfi Déli Park PO Box 4563 0987786553 lwolowitz@email.me

SZŰRJÜK BE az adatokat soronként, Leonard Hofstadterrel kezdve. A telefonszámot numerikus adattípusként kezeljük, és nem tesszük aposztrófok közé.

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

A fenti szkript végrehajtása során a program eltávolítja a 0-t Leonard telefonszámából, mivel az értéket numerikusként kezeli, és a kezdő nulla nem jelentős.

Az ilyen problémák elkerülése érdekében az értéket aposztrófok közé kell tenni, az alábbiak szerint.

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

⚠️ Tipp: Telefonszámokat, irányítószámokat és hasonló azonosítókat tároljon szöveges oszlopban, például VARCHAR oszlopban. A numerikus oszlopok nem tartalmazhatnak kezdő nullát.

Az oszlopsorrend módosítása

Az oszlopok sorrendjének megváltoztatása nincs hatással az INSERT lekérdezésre MySQL, feltéve, hogy a megfelelő értékek a megfelelő oszlopokhoz vannak leképezve. Az alábbi lekérdezés ezt a pontot demonstrálja.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`) VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');

A fenti lekérdezések kihagyták a születési dátum oszlopot. Alapértelmezés szerint, MySQL NULL értékeket szúr be az INSERT lekérdezésből kihagyott oszlopokba.

Most illesszük be Leslie rekordját, amely tartalmazza a születési dátumot. A dátumértéket aposztrófok közé kell tenni, az „ÉÉÉÉ-HH-NN” formátumot használva.

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');

Az oszloplista kihagyása

A fenti lekérdezések mindegyike elnevezte az oszlopokat és értékekhez rendelte őket. Ha a táblázat ÖSSZES oszlopához megadjuk az értékeket, az oszloplista elhagyható a lekérdezésből. MySQL lekérdezés beszúrása.

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

Használjuk most a SELECT utasítás a tagok tábla összes sorának megtekintéséhez.

SELECT * FROM `members`;
Tagsági szám teljes_ nevek nemek születési dátum valódi cím postázási cím kapcsolat_szám email
1 Janet Jones 21-07-1980 4. számú első utcai telek Privát táska 0759 alkalmazott janetjones@yagoo.cm
2 Janet Smith Jones 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil férfi 12-07-1989 3. utca 34 NULL 12345 rm@tstreet.com
4 Gloria Williams 14-02-1984 2. utca 23 NULL NULL NULL
5 Leonard Hofstadter férfi NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper férfi NULL Woodcrest NULL 0976736763 NULL
7 Rajesh Koothrappali férfi NULL Woodcrest NULL 0938867763 NULL
8 Leslie Winkle férfi 14-02-1984 Woodcrest NULL 0987636553 NULL
9 Howard Wolowitz férfi 24-08-1981 Déli Park PO Box 4563 0987786553 lwolowitz@email.me

Figyeljük meg, hogy Leonard Hofstadter telefonszámának kezdő nullája lekerült, pontosan az előrejelzésnek megfelelően. Az idézőjelek megtartották.

Beszúrás egy másik táblázatból egy táblázatba

Az INSERT paranccsal egy másik táblából is beszúrhatunk adatokat egy táblába. Az alapvető szintaxis az alábbiak szerint látható.

INSERT INTO table_1 SELECT * FROM table_2;

Most létrehozunk egy próbatáblát a filmkategóriákhoz, amelyet categories_archive-nak hívunk. 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, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Hajtsa végre a fenti szkriptet a tábla létrehozásához. Most illessze be a kategóriák tábla összes sorát a kategóriák archívumtáblájába.

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

A szkript működéséhez a táblázatok szerkezetének azonosnak kell lennie. Egy robusztusabb szkript a céltábla oszlopneveit az adatokat tartalmazó táblázat oszlopneveihez rendeli, az alábbiak szerint.

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

Az alábbi SELECT lekérdezés végrehajtása a következő eredményeket adja.

SELECT * FROM `categories_archive`;
kategória_azonosítója CATEGORY_NAME megjegyzések
1 Vígjáték Filmek humorral
2 Romantikus Szerelmi történetek
3 Epikus Régi történetű filmek
4 Borzalom NULL
5 Tudományos fantasztikum NULL
6 Krimi NULL
7 Akció NULL
8 Romantikus komédia NULL
9 Rajzfilmek NULL
10 Rajzfilmek NULL

PHP példa: Insert into MySQL Táblázat

A mysqli_query függvény végrehajtására szolgál SQL PHP lekérdezéseket futtat. Insert, Select, Update és Delete utasításokat egyaránt futtat, és a következő szintaxissal rendelkezik.

mysqli_query($db_handle,$query);

ITT,

  • A „mysqli_query(…)” az SQL lekérdezéseket végrehajtó függvény.
  • A „$query” a végrehajtandó SQL lekérdezés.
  • A „$db_handle” a mysqli_connect által visszaadott szerverkapcsolati hivatkozás.

Példa

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

GYIK

MySQL elutasítja duplikált bejegyzés hibával. Az INSERT IGNORE paranccsal csendesen kihagyhatja a sort, vagy az INSERT … ON DUPLICATE KEY UPDATE paranccsal frissítheti a meglévő sort.

Futtasd a SELECT LAST_INSERT_ID() függvényt közvetlenül a beszúrás után, vagy hívd meg a mysqli_insert_id($conn) függvényt PHP-ben. Ez visszaadja a saját kapcsolatod legújabb sorához generált AUTO_INCREMENT kulcsot.

Soha ne fűzze össze a felhasználói bevitelt a lekérdezési karakterláncba. Használjon előre elkészített utasításokat kötött paraméterekkel, hogy az értékek külön utazzanak a lekérdezéstől. SQL és nem hajthatók végre parancsként.

Igen. A mesterséges intelligencia asszisztensek táblázatokat vagy egyszerű leírásokat alakítanak át INSERT utasításokká, és MySQL Workbench futtathatja őket. Ellenőrizze az oszlopok sorrendjét és az idézőjeleket, mert egy modell kitalálhatja a sémát.

Először illeszd be egy fejlesztői példányba. A mesterséges intelligencia által generált sorok felboríthatják az idegen kulcsokat, meghaladhatják az oszlopok hosszát, vagy érvénytelen dátumokat hozhatnak létre. Futtasd le a köteget egy tranzakcióban, hogy vissza lehessen görgetni.

Foglald össze ezt a bejegyzést a következőképpen: