Általános szintaxis:
a) egy új sor beszúrása a táblázatba:
BESZÁLLÍTÁS<таблица>[(oszlopok)]
ÉRTÉKEK
b) Az allekérdezésben megadott forrásból vett egy vagy több sor beszúrása a táblázatba:
BESZÁLLÍTÁS<таблица>[(oszlopok)]
Szabályok:
Az Oszlopok szakaszban lévő elemek számának meg kell egyeznie az Értékek szakasz elemeinek számával; az adattípusoknak meg kell egyezniük, vagy lehetővé kell tenniük az implicit konverziót;
Abban az esetben, ha az "Oszlopok" rész hiányzik, az "Értékek" szakasznak annyi értéket kell tartalmaznia, ahány oszlop összesen van a szerkesztett táblázatban, továbbá az értékeket ugyanabban a sorrendben kell felsorolni, mint a táblázat oszlopai deklaráltak; ezért ajánlott mindig kifejezetten megadni azoknak az oszlopoknak a listáját, amelyekhez új értékeket kell hozzáadni;
A (b) szintaxis esetén a SELECT részlekérdezés címezhető vagy ugyanahhoz a táblához, vagy egy másik adatbázistáblához, vagy egy másik adatbázishoz a szerveren;
Ha a tábla egyes oszlopaihoz alapértelmezett érték van beállítva, és ezt az értéket kell használni a hozzáadott rekordban, akkor az oszlop "Értékek" részében meg kell írni kulcsszó ALAPÉRTELMEZETT.
Példák :
INSERT INTO részletek (detail_name)
ÉRTÉKEK ("csapágy")
INSERT INTO kínálat (szállító azonosítója, beszerzési mennyisége, beszerzési költsége,
szállítási_dátum, részletes_azonosító)
ÉRTÉKEK (4, 177, 453,45, "2009.09.25", 1)
BESZÁLLÍTÓ (szállító típusa, szállító neve)
ÉRTÉKEK (Alapértelmezett, "Smirnov S. S.")
Általános szintaxis:
FRISSÍTÉS<таблица>
KÉSZLET<столбец> = <значение> [, <столбец> = <значение>]
Példák :
BEÁLLÍTOTT súly = 210
SET material_name = "Tin"
WHERE anyagazonosító = 2
SET Department_id = NULL,
szállítási_dátum = szállítási_dátum + 1 /*a szállítási dátum egy nappal növelése
WHERE szállítási_azonosító = 1 VAGY osztály_azonosítója > 3
SET detail_name = részlet_neve + "!!!"
WHERE detail_name LIKE "_а%" ÉS súlya 6 ÉS 10 KÖZÖTT
Általános szintaxis:
TÖRÖL<таблица>
<условие>
Példák :
WHERE detail_id IN (2, 5, 8)
AHOL a súly NULL
Gyakorlat:
Töltse fel az adatbázist a ManagementStudio segítségével. Ehhez használja az "Object Browser" tábla helyi menüjének "Táblázat megnyitása" parancsát (4.1. ábra).
KIVÁLASZTÁS<список столбцов>
TÓL TŐL<таблица(-ы) источник>
A SELECT és FROM záradéknak minden lekérdezésben jelen kell lennie; más részek hiányozhatnak vagy részben jelen vannak.
A legegyszerűbb kérdések:
1. Válassza ki az alkatrészek nevét és súlyát
Rizs. 5.1. 1. lekérdezés eredményei
2. Válassza ki az összes információt az anyagtáblázatból
Rizs. 5.2. A 2. lekérdezés eredményei
A DISTINCT egyedisége
3. Válassza ki az egyedi szállítói kódokat a kínálati táblázatból
Rizs. 5.3. A 3. lekérdezés eredménye
WHERE korlátozás
4. Válassza ki az 1-es kódú alkatrész mennyiségét és szállítási dátumát
Rizs. 5.4. 4. lekérdezés eredménye
5. Válassza ki a szállítóneveket 1, 4 és 6 kóddal
Rizs. 5.5. Az 5. lekérdezés eredménye
6. Válassza ki az összes információt a 2009. 10. 1. előtti szállításokról
Rizs. 5.6. A 6. lekérdezés eredményei
7. Válassza ki az összes olyan alkatrészinformációt, amely nem "B" betűvel kezdődik (semmi esetre sem), és amelynek súlya kisebb, mint 50
Rizs. 5.7. A 7. lekérdezés eredménye
8. Válassza ki az anyag nevét és kódját az 5-10 g tömegű vagy a harmadik helyen „n” betűt tartalmazó alkatrészekhez.
Rizs. 5.8. A 8. lekérdezés eredménye
9. Válassza ki a 15 karakternél nem hosszabb szállítóneveket
Rizs. 5.9. A 9. lekérdezés eredménye
10. Válassza ki a hónapok és évek alkatrészellátását
Rizs. 5.10. A 10. lekérdezés eredménye
Rendezés ORDER BY
11. Rendelje meg a szállításokat először a szállítói kód, majd a szállítási dátum szerint
Rizs. 5.11. A 11. lekérdezés eredménye
12. Válassza ki a beszállítók nevét 4, 6, 8, 9 kóddal, fordított ABC sorrendben rendezve
Rizs. 5.12. A 12. lekérdezés eredménye
Összesítés és csoportosítás GROUP BY
Rizs. 5.13. A 13. lekérdezés eredménye
14. Határozza meg a 2-es kódú anyagból készült alkatrészek átlagos tömegét!
Rizs. 5.14. A 2. lekérdezés eredménye
15. A 2009.10.01. előtti szállítások közül válassza ki a legnagyobb és a legkisebb szállítást
Rizs. 5.15. A 15. lekérdezés eredménye
16. Az 5-8 tartományba eső kódokkal rendelkező beszállítók esetében számítsa ki az általuk szállított alkatrészek teljes számát
Rizs. 5.16. A 16. lekérdezés eredménye
Rizs. 5.17. A 17. lekérdezés eredménye
Csoportosítási korlátozással rendelkezik
18. Válasszon olyan anyagokat, amelyeknél a belőlük készült alkatrészek össztömege nem haladja meg a 20-at
Rizs. 5.18. A 18. lekérdezés eredménye
19. A 2008-as szállítások közül válassza ki azokat az alkatrészeket, amelyeket többször szállított
Rizs. 5.19. A 19. lekérdezés eredménye
Típus konverzióÖNTVÉNY
20. Szöveges formában tájékozódjon a szállítási dátumokról
Rizs. 5.20. A 20. lekérdezés eredménye
21. Szerezzen információkat az alkatrésztáblázatból karakterláncként "X alkatrésznek Y súlya van"
Rizs. 5.21. A 21. lekérdezés eredménye
AlternatívákÜGY
22. Ossza fel az alkatrészeket könnyű (legfeljebb 20 tömegű), közepes (20 és 50 közötti) és nehéz részekre
Rizs. 5.22. A 22. lekérdezés eredménye
NULL értékek kezelése
23. Tájékozódjon a részletekről és azok súlyáról, és ha az alkatrészhez nincs megadva súly, akkor NULL helyett -100-at írjon
Rizs. 5.23. A 23. lekérdezés eredménye
Létezési függvény LÉTEZIK
24. Csak azoknak az alkatrészeknek a nevét és anyagkódját válassza ki, amelyeket valaha is szállítottak
Rizs. 5.24. A 24. lekérdezés eredménye
25. Válassza ki azoknak az anyagoknak a nevét, amelyekből egyetlen alkatrész sem készül!
Rizs. 5.25. A 25. lekérdezés eredménye
Allekérdezések
26. Információt kaphat a legutóbbi (dátum szerinti) szállításról
Rizs. 5.26. A 26. lekérdezés eredménye
27. Vegye át az összes szállított alkatrészt a 2-es anyagkódból
Rizs. 5.27. A 27. lekérdezés eredménye
28. Minden szállító esetében tájékozódjon a szállítás legelső (dátum szerinti) időpontjáról
Rizs. 5.28. A 28. lekérdezés eredménye
29. Minden szállítónál kapja meg a nevét és az utolsó rendelés dátumát
Rizs. 5.29. A 29. lekérdezés eredménye
JOIN asztalok
30. Szerezzen egy táblázatot a nézetről: az alkatrész neve, az anyag neve, amelyből ez az alkatrész készült
Rizs. 5.30. A 30. lekérdezés eredménye
31. Szerezzen egy táblázatot a következő űrlappal: szállító, alkatrész neve, mennyisége és szállítási dátuma a meghatározott súlyú alkatrészekhez
Rizs. 5.31. A 31. lekérdezés eredménye
32. Válassza ki az összes információt azokról az alkatrészekről, amelyeket valaha is szállítottak
Rizs. 5.32. A 32. lekérdezés eredménye
Rizs. 5.33. A 33. lekérdezés eredménye
34. Válassza ki az anyagok és a belőlük készült alkatrészek nevét!
Rizs. 5.34. A 34. lekérdezés eredménye
35. Szerezzen be minden adatot a szállítókról, a szállításokról és a részletekről
Rizs. 5.35. A 35. lekérdezés eredménye
Csatlakozás UNION asztalokhoz
36. Szerezzen egy táblázatot az alkatrészek neveiről és súlyairól, és a táblázat utolsó sora tartalmazza az összegeket az összes alkatrész össztömegének formájában
Rizs. 5.36. A 36. lekérdezés eredménye
37. Készítsen két mezőből álló táblázatot, ahol az első mező az alkatrész, anyag, szállító vagy szállítási dátum neve, a második mező pedig az első mezőből származó karakterlánc hossza.
Rizs. 5.37. A 37. lekérdezés eredménye
Utolsó frissítés: 2017.07.13
Az adatok hozzáadásához az INSERT parancsot kell használni, amelynek formális szintaxisa a következő:
INSERT table_name [(oszlop_lista)] ÉRTÉKEK (érték1, érték2, ... értékN)
Az elején van egy INSERT INTO utasítás, majd zárójelben megadható az oszlopok listája, vesszővel elválasztva, melybe adatokat kell hozzáadni, a végén pedig a VALUES szó után zárójelben az értékeket Az oszlopokhoz hozzá kell adni.
Tegyük fel például, hogy a következő adatbázist korábban hozták létre:
ADATBÁZIS LÉTREHOZÁSA productsdb; GO USE productsdb; CREATE TABLE Termékek (ID INT IDENTITY PRIMARY KEY, Product Name NVARCHAR(30) NOT NULL, Gyártó NVARCHAR(20) NOT NULL, ProductCount INT ALAPÉRTELMEZETT 0, Price MONEY NOT NULL)
Adjunk hozzá egy sort az INSERT paranccsal:
INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)
Sikeres befejezése után SQL szerver A Management Studionak az „1 érintett sor(ok)” feliratot kell megjelenítenie az üzenetmezőben:
Vegye figyelembe, hogy az VALUES kulcsszó után zárójelben lévő oszlopok értékei a deklarálás sorrendjében kerülnek átadásra. Például a fenti CREATE TABLE utasításban láthatja, hogy az első oszlop az Id. De mivel az IDENTITY attribútum be van állítva, ennek az oszlopnak az értéke automatikusan generálódik, és elhagyható. A második oszlop a ProductName-et jelöli, így az első érték, az „iPhone 7” karakterlánc ebbe az oszlopba kerül átadásra. A második érték, az "Apple" karakterlánc a harmadik, Gyártó oszlopba kerül, és így tovább. Azaz az értékek a következőképpen kerülnek át az oszlopokba:
Terméknév: "iPhone 7"
Gyártó: Apple
Az értékek megadásakor megadhatja azokat az oszlopokat is, amelyekbe az értékek hozzáadódnak:
INSERT INTO Termékek (Terméknév, Ár, Gyártó) ÉRTÉKEI ("iPhone 6S", 41000, "Apple")
Itt csak három oszlopra van megadva az érték. És most az értékeket az oszlopok sorrendjében adjuk át:
Terméknév: "iPhone 6S"
Gyártó: Apple
Meghatározatlan oszlopokhoz (in ez az eset ProductCount) alapértelmezett értéket ad hozzá, ha a DEFAULT attribútum be van állítva, vagy NULL. A nem meghatározott oszlopoknak azonban érvénytelennek kell lenniük, vagy DEFAULT attribútummal kell rendelkezniük.
Egyszerre több sort is hozzáadhatunk:
INSERT INTO Products VALUES ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)
Ebben az esetben három sor kerül hozzáadásra a táblázathoz.
Hozzáadáskor megadhatjuk azt is, hogy az oszlop alapértelmezett értéke legyen a DEFAULT kulcsszó vagy a NULL használatával:
INSERT INTO Termékek (Terméknév, Gyártó, Termékszám, Ár) ÉRTÉKEK ("Mi6", "Xiaomi", ALAPÉRTELMEZETT, 28000)
Ebben az esetben a ProductCount oszlop alapértelmezett értéke lesz (ha be van állítva, ha nincs, akkor NULL).
Ha minden oszlop rendelkezik egy ALAPÉRTELMEZETT attribútummal, amely alapértelmezett értéket határoz meg, vagy nullázható, akkor az összes oszlophoz beszúrhat alapértelmezett értékeket:
INSERT INTO Products ALAPÉRTELMEZETT ÉRTÉKEK
De ha a Termékek táblát veszi, akkor egy ilyen parancs meghiúsul, mivel több mezőnek nincs DEFAULT attribútuma, és ugyanakkor nem engedélyezi a null értékeket.
Az INSERT utasítás új rekordokat szúr be egy táblába. Ebben az esetben az oszlopértékek lehetnek szó szerinti állandók, vagy egy részlekérdezés eredménye. Az első esetben külön INSERT utasítást használunk az egyes sorok beszúrására; a második esetben annyi sor kerül beszúrásra, amennyit az allekérdezés visszaadott.
Az operátor szintaxisa a következő:
INSERT INTO[(,...)]
(ÉRTÉKEK(,…) )
| ( ALAPÉRTELMEZETT ÉRTÉKEK )
Amint az a bemutatott szintaxisból látható, az oszlopok listája nem kötelező (a szintaxisleírásban a szögletes zárójelek jelzik ezt). Ha hiányzik, a beillesztett értékek listájának teljesnek kell lennie, azaz a táblázat összes oszlopához meg kell adni az értékeket. Az értékek sorrendjének meg kell egyeznie a CREATE TABLE utasításban megadott sorrenddel ahhoz a táblázathoz, amelybe a sorokat beilleszti. Ezenkívül ezeknek az értékeknek ugyanolyan adattípusúaknak kell lenniük, mint az oszlopoknak, amelyekbe be vannak írva. Példaként fontolja meg egy sor beszúrását a terméktáblázatba, amelyet a következő CREATE TABLE utasítás hozott létre:
CREATE TABLE termék
készítő karakter (1) NOT NULL,
model varchar(4) NOT NULL,
írja be a varchar(7)-et NOT NULL
Ehhez a táblázathoz legyen kötelező hozzáadni a B gyártó 1157-es PC-modelljét. Ezt a következő utasítással tehetjük meg:
INSERT INTO Product
ÉRTÉKEK ("B" , 1157 , "PC" );
Ha megadja az oszlopok listáját, megváltoztathatja azok sorrendjének „természetes” sorrendjét:
INSERT INTO Termék (típus, modell, gyártó)
ÉRTÉKEK ("PC" , 1157 , "B" );
Úgy tűnik, hogy ez egy teljesen felesleges funkció, ami csak még bonyolultabbá teszi a tervezést. Azonban akkor nyer, ha az oszlopok alapértelmezett értékekkel rendelkeznek. Tekintsük a következő táblázatszerkezetet:
TÁBLÁZAT LÉTREHOZÁSA termék_D
készítő karakter (1) NULL,
modell varchar(4) NULL ,
típus varchar (7) NOT NULL ALAPÉRTELMEZETT "PC"
Vegye figyelembe, hogy itt az összes oszlop értéke alapértelmezett értékkel rendelkezik (az első kettő NULL, az utolsó oszlop pedig a PC típusa). Most írhatnánk:
INSERT INTO Product_D(modell, gyártó)
ÉRTÉKEK(1157 , "B" );
Ebben az esetben egy sor beszúrásakor a hiányzó értéket az alapértelmezett érték, a PC helyettesíti. Vegye figyelembe, hogy ha nincs alapértelmezett érték megadva egy oszlophoz a CREATE TABLE utasításban, és egy NOT NULL megszorítás van megadva a NULL használatának megakadályozására ezt az oszlopot táblázatban az alapértelmezett érték NULL .
Felmerül a kérdés: lehetséges-e nem megadni az oszlopok listáját, és ennek ellenére az alapértelmezett értékeket használni? A válasz igen. Ehhez ahelyett, hogy kifejezetten megadná az értéket, használja a fenntartott szó ALAPÉRTELMEZETT :
INSERT INTO Product_D
ÉRTÉKEK ("B" , 1158 , ALAPÉRTÉKELÉS );
Mivel minden oszlopnak alapértelmezett értéke van, egy sor alapértelmezett értékekkel történő beszúrásához a következőt írhatja:
INSERT INTO Product_D
ÉRTÉKEK (ALAPÉRTELMEZETT , ALAPÉRTELMEZETT , ALAPÉRTELMEZETT ) ;
Van azonban erre az esetre egy speciális DEFAULT VALUES konstrukció (lásd az operátor szintaxisát), amellyel a fenti operátor átírható a következőre:
INSERT INTO Product_D ALAPÉRTELMEZETT ÉRTÉKEK ;
Vegye figyelembe, hogy amikor beszúr egy sort a táblázatba, minden korlátozás érvényesül ezt a táblázatot. Ez lehet korlátozás elsődleges kulcs vagy egyedi index, CHECK típusú ellenőrzési megszorítások, hivatkozási integritási megszorítások. Bármely korlátozás megsértése esetén a sor beillesztése elutasításra kerül. Tekintsük most egy segédlekérdezés használatának esetét. Tegyük fel, hogy a Termék_D táblába szeretnénk beszúrni a Termék tábla összes modelljéhez kapcsolódó sorát személyi számítógépek(type='PC'). Mivel a szükséges értékek már szerepelnek néhány táblázatban, a beszúrt sorok manuális kialakítása egyrészt nem hatékony, másrészt beviteli hibákat is megengedhet. Egy segédlekérdezés az alábbi problémákat oldja meg:
Ebben az esetben indokolt a "*" szimbólum használata a részlekérdezésben, mivel az oszlopok sorrendje mindkét tábla esetében azonos. Ha ez nem így lenne, akkor vagy az INSERT utasításban, vagy az allekérdezésben, vagy mindkettőben egy oszloplistát kell alkalmazni, amely megfelel az oszlopok sorrendjének:
Itt, mint korábban, nem minden oszlopot adhat meg, ha a meglévő alapértelmezett értékeket szeretné használni, például:
Ebben az esetben a Product_D tábla típusoszlopa az összes beszúrt sornál az alapértelmezett PC értékre lesz beállítva.
Ne feledje, hogy predikátumot tartalmazó részlekérdezés használatakor csak azok a sorok kerülnek beszúrásra, amelyeknél az állítmány értéke IGAZ (nem UNKNOWN !). Más szóval, ha a Termék tábla típusoszlopa nullázható lenne, és ez az érték több sorban szerepel, akkor ezek a sorok nem kerülnek be a Product_D táblába.
Az egyetlen sor INSERT utasításba történő beszúrásának korlátainak kiküszöbölése érdekében, amikor sorkonstruktort használunk egy VALUES záradékban, mesterséges trükk egy olyan segédlekérdezés használata, amely egy sort alkot UNION ALL záradékkal. Tehát ha több sort kell beszúrnunk egyetlen INSERT utasítással, a következőket írhatjuk:
INSERT INTO Product_D
SELECT "B" AS gyártó, 1158 AS modell, "PC" AS típus
UNIÓ MINDEN
SELECT "C", 2190, "Laptop"
UNIÓ MINDEN
KIVÁLASZTÁS "D" , 3219 , "Nyomtató" ;
Az UNION ALL használata előnyösebb, mint az UNION, még akkor is, ha garantált, hogy nem lesznek ismétlődő sorok, mert ebben az esetben nem történik meg a duplikációk ellenőrzése.
Megjegyzendő, hogy több sor beszúrása a string konstruktor segítségével már megvalósult A Microsoft Corporation által kifejlesztett relációs adatbázis-kezelő rendszer (DBMS).A strukturált lekérdezési nyelv egy általános célú számítógépes nyelv, amelyet relációs adatbázisokban lévő adatok létrehozására, módosítására és kezelésére használnak. SQL szerver 2008. Ennek a lehetőségnek a birtokában az utolsó lekérdezés átírható a következőképpen:
INSERT A termék_D ÉRTÉKEIBE
("B" , 1158 , "PC") ,
("C" , 2190 , "Laptop") ,
Ez a cikk az adatbázistáblák adatokkal való kitöltésére szolgál, vagyis az új rekordok beszúrásához szükséges SQL parancsokat tanulmányozzuk. Azt kell mondani, hogy a táblázatba írás kétféleképpen történhet:
1. számú módszer.
Próbáljunk meg egy új ország bejegyzést hozzáadni az országok táblázatához. A hozzáadás szintaxisa a következő lenne:
INSERT INTO táblanév (mező_1, mező_2, ...) ÉRTÉKEK (Érték_1, Érték_2, ...); Táblaszerkezetünk alapján az SQL lekérdezés a következő lenne:
INSERT INTO országok (ország_neve, mozaikszó_neve) VALUES ("Oroszország", "RU"); Így írtuk be táblázatunkba az „Oroszország” országról szóló bejegyzést. Itt mindennek világosnak és egyszerűnek kell lennie, a lényeg az, hogy alaposan nézze meg, mely mezőket adja meg az első zárójelben, és írja be az értékeket a második zárójelbe ugyanabban a sorrendben.
2. számú módszer.
A második út szerintem egy kicsit egyszerűbb, mert látod, hogy mit és milyen területet rendelsz hozzá. Higgye el nekem, ha a táblázatban rengeteg oszlop van, akkor nagyon könnyű összetéveszteni vagy figyelmen kívül hagyni a mezők sorrendjét az elsőben, és az értékek sorrendjét a második zárójelben. A második módszer szintaxisa a következő:
INSERT INTO táblanév SET mező_1 = érték_1, mező_2 = érték_2, ... ; Használjuk ezt a példát néhány információ bevitelére a táblába személyek, mivel több mező van, és a második módszer előnye azonnal érezhető lesz:
INSERT INTO személyek SET first_name="Ivan", last_name="Dulin", register_date="2012-06-14", country="1"; Most a táblázatunk a következő adatokat tartalmazza:
Valószínűleg észrevette, hogy nem adtunk meg életkor értéket, de kiderült, hogy kitöltött ... Minden helyes - a számára adott mező az alapértelmezett értéket 25-re állítottuk. Így most Ivan Dulinunk 25 évesként szerepel az adatbázisban. Lehet, hogy nem a legjobb példa az életkor mező alapértelmezett értékének megadása, de beállíthat olyan tulajdonságokat, mint például az oldal felhasználóinak értékelése vagy az oldalmegtekintések száma. Kezdetben 0-ra vannak állítva.
Ügyeljen a dátumformátumra is a MySQL-ben: ÉÉÉÉ-HH-NN. Ha nem tartja be, akkor a bejegyzései egyszerűen nem fognak szerepelni a táblázatban.
Mint látható, a szakma mező NULL-ként van kitöltve, ez az üres érték. Ebben a mezőben a "nem kötelező kitölteni (NULL)" tulajdonságot állítjuk be.
Kiegészítésként vegye figyelembe a következő parancsot:
ADATOK BETÖLTÉSE HELYI INFILE "D:\zapros.txt" TÁBLÁZATBA személyek; Mit gondolsz, most mit csináltunk?! És a következőket tettük: adatokat adtunk a táblázathoz személyek fájlból kérés.txt, amely a D meghajtón található. A fájlban lévő információnak a következő szerkezetűnek kell lennie:
Szakmák táblázata:
személy táblázat:
keresztnév | vezetéknév | kor | Regisztráció dátuma | ország | szakma |
Leonyid | Bilak | 45 | 2012-06-20 | 2 | 1 |
Yuri | Nazarov | 22 | 2012-06-21 | 3 | 1 |
Alla | Savenko | 25 | 2012-06-22 | 2 | 3 |
Irina | Nikolaeva | 31 | 2012-06-22 | 1 | 3 |
A korábban tárgyalt SELECT utasításon kívül a Data Manipulation Language (DML) további három utasítást tartalmaz: INSERT, UPDATE és DELETE. A SELECT utasításhoz hasonlóan ez a három utasítás táblákon vagy nézeteken működik. Ez a cikk az INSERT utasítással foglalkozik, a másik két utasítás pedig a következő cikkben lesz tárgyalva.
INSERT nyilatkozat sorokat (vagy sorrészeket) szúr be egy táblázatba. Ennek az utasításnak két különböző formája van:
BESZÁLLÍTÁS tab_name [(col_list)] ALAPÉRTELMEZETT ÉRTÉKEK | ÉRTÉKEK (( ALAPÉRTELMEZETT | NULL | kifejezés ) [ ,...n]) INSERT INTO lap_neve | view_name [(col_list)] (select_statement | execute_statement) Szintaxis konvenciók
Az utasítás első formája lehetővé teszi egy sor (vagy annak egy részének) beszúrását a táblázatba. Az INSERT utasítás második formája pedig lehetővé teszi egy SELECT utasítás eredményhalmazának vagy egy EXECUTE utasítással végrehajtott tárolt eljárásnak a táblába történő beszúrását. A tárolt eljárásnak vissza kell adnia a táblázatba beillesztendő adatokat. Az INSERT utasítással együtt használva a SELECT utasítás választhat értékeket egy másik vagy ugyanabból a táblából, amelybe az adatokat beszúrja, feltéve, hogy a megfelelő oszlopok adattípusai kompatibilisek.
Mindkét űrlap esetében az egyes beszúrt értékek adattípusának kompatibilisnek kell lennie a megfelelő táblázatoszlop adattípusával. Minden karakterláncot és ideiglenes adatot idézőjelbe kell tenni; A numerikus értékeket nem kell idézőjelbe tenni.
Az INSERT utasítás mindkét formája esetén az oszlopok explicit listája nem kötelező. Az oszloplista hiánya egyenértékű a táblázat összes oszlopának megadásával.
DEFAULT VALUES paraméter beszúrja az alapértelmezett értékeket az összes oszlophoz. A TIMESTAMP adattípusú vagy IDENTITY tulajdonságú oszlopok alapértelmezés szerint automatikusan értékekkel kerülnek beszúrásra rendszer által generált. Más adattípusok oszlopai esetén a megfelelő nem nulla alapértelmezett érték kerül beillesztésre, ha van ilyen, vagy NULL, ha van ilyen. Ha a null értékek nem engedélyezettek egy oszlophoz, és nincs alapértelmezett érték megadva az oszlophoz, az INSERT utasítás meghiúsul, és megjelenik egy megfelelő üzenet.
A következő példa sorokat szúr be a SampleDb adatbázis Employee táblájába, bemutatva, hogyan lehet az INSERT utasítással kis mennyiségű adatot beszúrni az adatbázisba:
HASZNÁLATA SampleDb; INSERT INTO Munkavállalói ÉRTÉKEK(34990, "Andrey", "Batonov", "d1"); INSERT INTO Munkavállalói ÉRTÉKEK(38640, "Aleksej", "Vasin", "d3");
Van két különböző utakértékek beszúrása egy új sorba. Az alábbi példában az INSERT utasítás kifejezetten a NULL kulcsszót használja, és beszúrja a NULL értéket a megfelelő oszlopba:
HASZNÁLATA SampleDb; INSERT INTO Munkavállalói ÉRTÉKEK(34991, "Andrey", "Batonov", NULL);
Ha értékeket szeretne beszúrni egy táblázat egyes (de nem az összes) oszlopába, általában kifejezetten meg kell adnia ezeket az oszlopokat. A meg nem adott oszlopoknak NULL értékeket kell engedélyezniük, vagy alapértelmezett értékkel kell rendelkezniük.
HASZNÁLATA SampleDb; INSERT INTO Munkavállaló(Id, Keresztnév, Vezetéknév) ÉRTÉKEK (34992, "Andrey", "Batonov");
Az előző két példa egyenértékű. Az Employee táblában az egyetlen oszlop, amely null értékeket engedélyez, a DepartmentNumber oszlop, és az összes többi oszlop esetében ezt az értéket a NOT NULL záradék tiltotta a CREATE TABLE utasításban.
Értékrend ben mondat ÉRTÉKEK Az INSERT utasítások eltérhetnek a CREATE TABLE utasításban megadott sorrendtől. Ebben az esetben a sorrendjüknek meg kell egyeznie az oszloplistában a megfelelő oszlopok sorrendjével. A következő példa az adatok eredetitől eltérő sorrendben történő beszúrására:
HASZNÁLATA SampleDb; INSERT INTO Employee(Részlegszám, Vezetéknév, Id, Keresztnév) ÉRTÉKEK ("d1", "Batonov", 34993, "Andrey");
Az INSERT utasítás második formája beszúr egy vagy több, az allekérdezés által kiválasztott sort a táblába. Az alábbi példa bemutatja, hogyan lehet sorokat beszúrni egy táblázatba az INSERT utasítás második formájával. Ebben az esetben egy lekérdezést hajtanak végre a Moszkvában található részlegek számának és nevének kiválasztásához, és a kapott készlet betöltését egy korábban létrehozott új táblázatba.
A fenti példában létrehozott új MoscowDepartment tábla ugyanazokat az oszlopokat tartalmazza, mint a meglévő osztálytáblázat, kivéve a hiányzó Hely oszlopot. Az INSERT utasításban található részlekérdezés kijelöli a Department tábla összes olyan sorát, amelynél a Hely oszlop értéke Moszkva, majd beszúródik a lekérdezés elején létrehozott új táblába.
Az alábbi példa egy másik módot mutat be sorok beszúrására egy táblázatba az INSERT utasítás második formájával. Ebben az esetben egy lekérdezést hajtanak végre a személyzeti számok, a projektszámok és a projekt kezdési dátumainak lekérésére minden, a p2 projekten dolgozó "menedzser" beosztású alkalmazottnál, majd betöltik a kapott halmazt egy új, az elején létrehozott táblába. a lekérdezésről:
HASZNÁLATA SampleDb; CREATE TABLE Manager Team(EmpId INT NOT NULL, ProjectNumber CHAR(4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";
Mielőtt az INSERT utasítással beszúrta volna a sorokat, a MoscowDepartment és a ManagerTeam táblák (a fenti példákban) üresek voltak. Ha a tábla már létezett és adatsorokat tartalmazott, akkor új sorok kerülnek hozzáadásra.