INSERT INTO VALUES() utasítás
Kitaláltuk a táblák létrehozását, most nézzük meg részletesen, hogyan lehet adatokat hozzáadni egy táblához SQL lekérdezéssel.
Valójában ezt nagyon egyszerű megtenni, de számos árnyalat van. Az adatok táblázatba történő beszúrásának legegyszerűbb módja két dolgot igényel:
- oszlopnevek
- oszlopértékek (adatok)
Az oszlopneveket meg kell adni, mivel nagyon gyakran az oszlopoknak olyan alapértelmezett értékei vannak, amelyek nincsenek megadva az adatok beszúrásakor. És általában minden táblában van legalább egy ilyen oszlop, például sorazonosító.
Az adatok táblázatba történő beszúrására vonatkozó lekérdezés általános formája így néz ki:
INSERT INTO table (column1, column2, column3) VALUES
(value1, value2, value3),
(value1, value2, value3),
(value1, value2, value3);
Például, ha új rekordot szeretne beszúrni a felhasználói táblába, a lekérdezés így fog kinézni:
INSERT INTO user (name, level, created_time) VALUES
('Rabinovich', 5, ‘2022-06-06’);
INSERT INTO SELECT utasítás
Az adatok táblába történő beszúrásának másik gyakori forgatókönyve az, hogy átveszi azokat egy másik táblából, sémából vagy akár egy DBMS-ből.
Ehhez létezik egy másik INSERT INTO lekérdezési formátum, amelyben az VALUES rész helyett adatkijelölő lekérdezést adhatunk meg.
Az ilyen kérés általános formája:
INSERT INTO table (column1, column2, column3)
SELECT-request;
Írjunk egy lekérdezést, amely az alkalmazotti táblából az összes felhasználót hozzáadja a felhasználói táblához:
INSERT INTO user (name, created_time)
SELECT employee.name, employee.join_date
FROM employee;
A munkavállalói táblázatban különféle adatok vannak, de ezek közül csak két mezőt választunk ki - a nevet és a céghez érkezés időpontját.
Ezenkívül a felhasználói tábla megköveteli a felhasználói szint - szint megadását. Az alkalmazottak nem rendelkeznek szinttel az alkalmazottak táblájában, ezért azt a tényt fogjuk használni, hogy a felhasználói tábla szintmezője alapértelmezett értéket tartalmaz. Csak nem adjuk meg a szintet, és az SQL beállítja az alapértelmezett értéket.
Tegyük fel, hogy nem vagyunk megelégedve az alapértelmezett értékkel, és azt szeretnénk, hogy a szint 99 legyen, és lecseréljük a user.created_time-ot a mai dátumra, akkor ezt írhatjuk:
INSERT INTO user (name, level, created_time)
SELECT employee.name, 99, CURDATE()
FROM employee;
Sokat lehetne még tenni, de azt hiszem, ez most elég lesz. Bővebben a MySQL hivatalos oldalán olvashat.
GO TO FULL VERSION