Illessze be a sort, ha az értékek még nem léteznek a Postgresl -ben

Insert Row If Values Don T Already Exist Postgresl



Az adatbázis -kezelő rendszerek ismerete és kezelése megismertette velünk az adatbázisokkal kapcsolatos módosításokat. Ez általában az egyes táblázatokban alkalmazott függvények létrehozását, beszúrását, frissítését és törlését foglalja magában. A jelenlegi cikkben látni fogjuk, hogyan kezelik az adatokat a beillesztési módszerrel. Létre kell hoznunk egy táblázatot, amelybe beillesztést szeretnénk. Az Insert utasítást új adatok hozzáadására használják a táblázatok soraiban. A PostgreSQL beszúrások utasítás néhány szabályt tartalmaz a lekérdezés sikeres végrehajtásához. Először is meg kell említenünk a táblázat nevét, majd az oszlopnevet (attribútumot), ahová sorokat szeretnénk beszúrni. Másodszor, meg kell adnunk az értékeket, vesszővel elválasztva a VALUE záradék után. Végül minden értéknek ugyanabban a sorrendben kell lennie, mint ahogyan az attribútumlisták sorrendjét megadják egy adott táblázat létrehozása során.

Szintaxis

>> INSERT BATABLENAME(oszlop1,oszlop) ÉRTÉKEK („Érték1”, „érték2”);

Itt egy oszlop a táblázat attribútumai. A VALUE kulcsszó értékek megadására szolgál. Az „érték” a megadandó táblázatok adatai.





Sorfüggvények beszúrása a PostgreSQL shellbe (psql)

A postgresql sikeres telepítése után beírjuk az adatbázis nevét, portszámát és jelszavát. A Psql elindul. Ezután lekérdezéseket hajtunk végre.





1. példa: Az INSERT használatával új rekordokat adhat hozzá a táblákhoz
A szintaxist követve elkészítjük a következő lekérdezést. A táblázatba egy sor beszúrásához létrehozunk egy ügyfél nevű táblázatot. A megfelelő táblázat 3 oszlopot tartalmaz. Az adott oszlopok adattípusát meg kell említeni, hogy adatokat vigyen be az oszlopba, és elkerülje a redundanciát. A táblázat létrehozásának lekérdezése a következő:





>> teremt asztalvevő(idint,név varchar (40), országvarchar (40));

A táblázat létrehozása után most úgy adunk meg adatokat, hogy sorokat kézzel beszúrunk külön lekérdezésekbe. Először is megemlítjük az oszlop nevét, hogy fenntartsuk az adatok pontosságát bizonyos attribútumokra vonatkozó oszlopokban. Ezután az értékeket kell megadni. Az értékeket egyetlen kóma kódolja, mivel azokat változtatás nélkül kell beszúrni.



>> betét -bavevő(azonosító,név, ország) értékeket ('1',„Alia”, „Pakisztán”);

Minden sikeres beillesztés után a kimenet 0 1 lesz, ami azt jelenti, hogy egyszerre 1 sor kerül beszúrásra. A lekérdezésben, amint azt korábban említettük, 4 alkalommal szúrtunk be adatokat. Az eredmények megtekintéséhez a következő lekérdezést fogjuk használni:

>> válassza ki*tól tőlvevő;

2. példa: INSERT utasítás használata több sor hozzáadásához egyetlen lekérdezéshez
Ugyanezt a megközelítést alkalmazzák az adatok beszúrása során, de sokszor nem a beszúrási utasítások bevezetésekor. Egyszerre adunk meg adatokat egy bizonyos lekérdezés használatával; Egy sor összes értéke elválasztásra kerül A következő lekérdezés használatával elérjük a kívánt kimenetet

3. példa: Több sor beillesztése egy táblázatba egy másik táblázat számai alapján
Ez a példa az adatok egyik táblázatból a másikba történő beszúrására vonatkozik. Tekintsünk két táblázatot, a és b. Az a táblázat 2 attribútummal rendelkezik, azaz név és osztály. A CREATE lekérdezés alkalmazásával bevezetünk egy táblázatot. A táblázat létrehozása után az adatok beszúrása lekérdezés használatával történik.

>> teremt asztalnak nek(név varchar (30),osztály varchar (40));
>> Beszúrás -banak nekértékeket ('Amna',1),('bhishma', '2'),(„Börtön”, ”3'),('Le',4');

Négy érték kerül beillesztésre a táblázatba a túllépés elmélete alapján. Kiválasztott utasításokkal ellenőrizhetjük.

Hasonlóképpen elkészítjük a b táblát, amely minden név és tárgy attribútumaival rendelkezik. Ugyanaz a két lekérdezés lesz alkalmazva a rekord beszúrásához és a megfelelő táblázatból való lekéréséhez.

>> teremt asztalb(minden név varchar(30), tárgy varchar(70));

A rekord kiválasztása kiválasztott elmélet alapján.

>> válassza ki*tól tőlb;

A táblázat értékeinek beszúrása b táblázatban a következő lekérdezést fogjuk használni. Ez a lekérdezés úgy fog működni, hogy a táblázatban szereplő összes név b táblázatba kerül nak nek a számok számolásával, amelyek egy adott szám előfordulását mutatják a táblázat megfelelő oszlopában b . b. az összes név a tábla megadására szolgáló objektumfüggvényt jelenti. A Count (b.allnames) függvény a teljes előfordulást számolja. Mivel minden név egyszerre fordul elő, így a kapott oszlop 1 számból áll.

>> Beszúrás -banak nek(név,osztály) válassza kib.nevek, gróf(b. minden név) tól tőlbcsoport általb. minden név;

4. példa: INSERT adatok sorokban, ha nem léteznek
Ez a lekérdezés sorok bevitelére szolgál, ha nincs jelen. Először is a megadott lekérdezés ellenőrzi, hogy a sor már jelen van -e vagy sem. Ha már létezik, akkor az adatok nem kerülnek hozzáadásra. És ha az adatok nincsenek sorban, akkor az új beszúrást megtartják. Itt a tmp egy ideiglenes változó, amelyet adatok tárolására használnak egy ideig.

>> betét -bab(minden név, tárgy) válassza ki*tól től (válassza ki„Kinza”mintminden név, 'iszlám'minttantárgy) minttmpahol nem létezik ( válassza kiminden névtól tőlbaholminden név='Sundus'határ 1);

5. példa: PostgreSQL Upsert az INSERT utasítás használatával
Ennek a funkciónak két fajtája van:

  • Frissítés: ha konfliktus lép fel, ha a rekord megegyezik a táblázatban meglévő adatokkal, akkor új adatokkal frissül.
  • Ha konfliktus történik, ne tegyen semmit : Ha egy rekord megegyezik a táblázatban meglévő adatokkal, akkor kihagyja a rekordot, vagy ha hibát állapít meg, azt is figyelmen kívül hagyja.

Kezdetben táblázatot készítünk néhány mintaadattal.

>> TEREMT ASZTALtbl2(AzonosítóINT ELSŐDLEGES KULCS,Név JELLEMZŐVÁLTOZTATÁS);

A táblázat létrehozása után adatokat fogunk beszúrni a tbl2 -be a lekérdezés használatával:

>> INSERT BAtbl2ÉRTÉKEK (1,'uzma'),(2,'Abdul'),(3,'Hamna'),(4,'fatima'),(5,'shiza'),(6,„javeria”);

Ütközés esetén frissítse:

>>INSERT BAtbl2ÉRTÉKEK (8,'Lovagol') TOVÁBBKONFLIKTUS(Azonosító) DO FRISSÍTÉS KÉSZLET Név=Kizárt.Név;

Először adatokat adunk meg a 8. azonosító és a Rida név konfliktuslekérdezésével. Ugyanazt a lekérdezést kell használni ugyanazt az azonosítót követve; a név megváltozik. Most észre fogja venni, hogy a nevek hogyan módosulnak ugyanazon az azonosítón a táblázatban.

>> INSERT BAtbl2ÉRTÉKEK (8,'Munka') TOVÁBBKONFLIKTUS(Azonosító) DO FRISSÍTÉS KÉSZLET Név =Kizárt.Név;

Azt találtuk, hogy ütközés történt a 8. azonosítón, ezért a megadott sor frissítésre kerül.

Ha konfliktus történik, ne tegyen semmit

>> INSERT BAtbl2ÉRTÉKEK (9,'Hira') TOVÁBBKONFLIKTUS(Azonosító) DO SEMMI;

Ezzel a lekérdezéssel egy új sor kerül beszúrásra. Ezt követően, ha ugyanazt a lekérdezést használjuk, akkor látjuk a felmerült ütközést.

>>INSERT BAtbl2ÉRTÉKEK (9,'Hira') TOVÁBBKONFLIKTUS(Azonosító) DO SEMMI;

A fenti kép szerint látni fogja, hogy az INSERT 0 0 lekérdezés végrehajtása után nincs adat megadva.

Következtetés

Az adatbázis -relációk redundanciájának csökkentése érdekében bepillantást nyertünk abba a megértési koncepcióba, hogy sorokat illesszünk be azokba a táblázatokba, amelyekben vagy nincs adat, vagy a beszúrást nem fejezték be, ha találnak rekordokat.