Rij invoegen als waarden nog niet bestaan ​​in Postgresl

Insert Row If Values Don T Already Exist Postgresl



Het kennen en manipuleren van databasemanagementsystemen heeft ons bekend gemaakt met wijzigingen aan databases. Dit omvat meestal het maken, invoegen, bijwerken en verwijderen van functies die op specifieke tabellen worden toegepast. In het huidige artikel zullen we zien hoe gegevens worden beheerd door de invoegmethode. We moeten een tabel maken waarin we willen invoegen. Insert-instructie wordt gebruikt voor het toevoegen van nieuwe gegevens in rijen tabellen. PostgreSQL inserts-instructie bevat enkele regels voor het succesvol uitvoeren van een query. Eerst moeten we de tabelnaam vermelden gevolgd door kolomnamen (attributen) waar we rijen willen invoegen. Ten tweede moeten we de waarden invoeren, gescheiden door een komma na de VALUE-clausule. Ten slotte moet elke waarde in dezelfde volgorde staan ​​als de reeks attributenlijsten die wordt gegeven tijdens het maken van een bepaalde tabel.

Syntaxis

>> INSERT NAAR BINNENTAFEL NAAM(kolom1,kolom) WAARDEN (‘waarde1’, ‘waarde2’);

Hier is een kolom de attributen van de tabel. Trefwoord VALUE wordt gebruikt om waarden in te voeren. 'Waarde' zijn de gegevens van tabellen die moeten worden ingevoerd.







Rijfuncties invoegen in PostgreSQL-shell (psql)

Na een succesvolle installatie van postgresql zullen we de databasenaam, het poortnummer en het wachtwoord invoeren. Psql wordt gestart. We zullen dan respectievelijk zoekopdrachten uitvoeren.





Voorbeeld 1: INSERT gebruiken om nieuwe records aan tabellen toe te voegen
Na de syntaxis zullen we de volgende query maken. Om een ​​rij in de tabel in te voegen, maken we een tabel met de naam klant. Respectieve tabel bevat 3 kolommen. Het gegevenstype van bepaalde kolommen moet worden vermeld om gegevens in die kolom in te voeren en redundantie te voorkomen. Query om een ​​tabel te maken is:





>> creëren tafelklant(ID kaartint,naam varchar (40), landvarchar (40));

Nadat we de tabel hebben gemaakt, gaan we nu gegevens invoeren door rijen handmatig in afzonderlijke query's in te voegen. Ten eerste noemen we de kolomnaam om de nauwkeurigheid van gegevens in bepaalde kolommen met betrekking tot attributen te behouden. En dan worden waarden ingevoerd. Waarden worden gecodeerd door enkele coma's, omdat ze zonder enige wijziging moeten worden ingevoegd.



>> invoegen naar binnenklant(ID kaart,naam, land) waarden ('1',‘Alia’, ‘Pakistan’);

Na elke succesvolle invoeging is de uitvoer 0 1, wat betekent dat er 1 rij per keer wordt ingevoegd. In de query zoals eerder vermeld, hebben we gegevens 4 keer ingevoegd. Om de resultaten te bekijken, gebruiken we de volgende query:

>> selecteer*vanklant;

Voorbeeld 2: INSERT-instructie gebruiken bij het toevoegen van meerdere rijen in een enkele query
Dezelfde benadering wordt gebruikt bij het invoegen van gegevens, maar bij het niet vaak invoeren van invoeginstructies. We zullen gegevens in één keer invoeren door een bepaalde zoekopdracht te gebruiken; alle waarden van één rij worden gescheiden door Door de volgende query te gebruiken, zullen we de vereiste uitvoer bereiken:

Voorbeeld 3: INSERT meerdere rijen in één tabel op basis van getallen in een andere tabel
Dit voorbeeld heeft betrekking op het invoegen van gegevens van de ene tabel naar de andere. Beschouw twee tabellen, a en b. Tabel a heeft 2 attributen, namelijk naam en klasse. Door een CREATE-query toe te passen, introduceren we een tabel. Na het maken van de tabel worden gegevens ingevoerd met behulp van een invoegquery.

>> creëren tafeltot(naam varchar (30),klas varchar (40));
>> Invoegen naar binnentotwaarden (‘Amna’,1),('bhishma','2'),(‘gejaagd’,’3'),('Omlaag',4');

Met behulp van de overschrijdingstheorie worden vier waarden in de tabel ingevoegd. We kunnen controleren met behulp van select statements.

Op dezelfde manier zullen we tabel b maken, met attributen van alle namen en onderwerpen. Dezelfde 2 query's worden toegepast om het record in te voegen en op te halen uit de overeenkomstige tabel.

>> creëren tafelB(alle namen varchar(30), onderwerp varchar(70));

Haal het record door de geselecteerde theorie.

>> selecteer*vanB;

Waarden van tabel invoegen B in de tabel gebruiken we de volgende query. Deze query zal zo werken dat alle namen in tabel B wordt in de tabel ingevoegd tot met het tellen van getallen die het aantal keren dat een bepaald getal voorkomt in de respectievelijke kolom van de tabel B . b.allnames vertegenwoordigt de objectfunctie om de tabel op te geven. De functie Count (b.allnames) werkt om het totale aantal exemplaren te tellen. Omdat elke naam in één keer voorkomt, heeft de resulterende kolom 1 nummer.

>> Invoegen naar binnentot(naam,klas) selecteerb.allenamen, tel(b.allenamen) vanBgroep doorb.allenamen;

Voorbeeld 4: INSERT data in rijen indien niet bestaat
Deze query wordt gebruikt om rijen in te voeren als deze niet aanwezig zijn. Ten eerste controleert de verstrekte query of de rij al aanwezig is of niet. Als het al bestaat, worden er geen gegevens toegevoegd. En als er geen gegevens in een rij aanwezig zijn, wordt de nieuwe invoeging vastgehouden. Hier is tmp een tijdelijke variabele die wordt gebruikt om gegevens enige tijd op te slaan.

>> invoegen naar binnenB(alle namen, onderwerp) selecteer*van (selecteer'Kinza'alsalle namen, 'islamiaat'alsonderwerp) alstmpwaar niet bestaat ( selecteeralle namenvanBwaaralle namen='Sundus'begrenzing 1);

Voorbeeld 5: PostgreSQL Upsert met behulp van de INSERT-instructie
Deze functie heeft twee varianten:

  • Update: als er een conflict optreedt, als het record overeenkomt met de bestaande gegevens in de tabel, wordt het bijgewerkt met nieuwe gegevens.
  • Als er een conflict optreedt, doe dan niets : Als een record overeenkomt met de bestaande gegevens in de tabel, slaat het het record over, of als er een fout wordt gevonden, wordt het ook genegeerd.

In eerste instantie zullen we een tabel vormen met enkele voorbeeldgegevens.

>> CREËREN TAFELtbl2(ID kaartINT PRIMAIRE TOETS,Naam KARAKTER VARIANT);

Na het maken van een tabel zullen we gegevens in tbl2 invoegen met behulp van een query:

>> INSERT NAAR BINNENtbl2WAARDEN (1,'oezma'),(2,'abdul'),(3,'Hamna'),(4,'fatima'),(5,'shiza'),(6,'javeria');

Als er een conflict optreedt, werkt u bij:

>>INSERT NAAR BINNENtbl2WAARDEN (8,'Rijden') AANCONFLICT(ID kaart) DOEN UPDATE SET Naam=Uitgesloten.Naam;

Eerst zullen we gegevens invoeren met behulp van de conflictquery van id 8 en de naam Rida. Dezelfde zoekopdracht wordt gebruikt met dezelfde id; de naam wordt gewijzigd. Nu zult u zien hoe namen worden gewijzigd op dezelfde id in de tabel.

>> INSERT NAAR BINNENtbl2WAARDEN (8,'Werk') AANCONFLICT(ID kaart) DOEN UPDATE SET Naam =Uitgesloten.Naam;

We hebben geconstateerd dat er een conflict was op id 8, dus de opgegeven rij is bijgewerkt.

Als er een conflict optreedt, doe dan niets

>> INSERT NAAR BINNENtbl2WAARDEN (9,'Hira') AANCONFLICT(ID kaart) DOEN NIETS;

Met deze query wordt een nieuwe rij ingevoegd. Daarna zullen we dezelfde query gebruiken om het conflict te zien dat zich heeft voorgedaan.

>>INSERT NAAR BINNENtbl2WAARDEN (9,'Hira') AANCONFLICT(ID kaart) DOEN NIETS;

Volgens de bovenstaande afbeelding zult u zien dat na het uitvoeren van de query INSERT 0 0 laat zien dat er geen gegevens zijn ingevoerd.

Conclusie

We hebben een glimp opgevangen van het begrip concept van het invoegen van rijen in tabellen waar gegevens niet aanwezig zijn, of waar het invoegen niet is voltooid, als er een record wordt gevonden, om redundantie in databaserelaties te verminderen.