Infoga rad om värden inte redan finns i Postgresl

Insert Row If Values Don T Already Exist Postgresl



Att känna till och manipulera databashanteringssystem har gjort oss bekanta med ändringar av databaser. Vilket vanligtvis innebär att skapa, infoga, uppdatera och ta bort funktioner som tillämpas på specifika tabeller. I den aktuella artikeln kommer vi att se hur data hanteras med infogningsmetoden. Vi måste skapa en tabell där vi vill infoga. Insert -sats används för att lägga till nya data i tabellerader. PostgreSQL -insatser -uttalande täcker några regler för ett framgångsrikt genomförande av en fråga. Först måste vi nämna tabellnamnet följt av kolumnnamn (attribut) där vi vill infoga rader. För det andra måste vi ange värdena, separerade med ett komma efter VALUE -satsen. Slutligen måste varje värde vara i samma ordning som sekvensen av attributlistor tillhandahålls medan du skapar en viss tabell.

Syntax

>> FÖRA IN IN ITABLENAMN(kolumn1,kolumn) VÄRDEN ('Värde1', 'värde2');

Här är en kolumn tabellens attribut. Nyckelordet VALUE används för att ange värden. 'Värde' är data i tabeller som ska anges.







Infoga radfunktioner i PostgreSQL -skal (psql)

Efter lyckad installation av postgresql kommer vi att ange databasens namn, portnummer och lösenord. Psql kommer att initieras. Vi kommer sedan att utföra frågor.





Exempel 1: Använda INSERT för att lägga till nya poster i tabeller
Efter syntaxen skapar vi följande fråga. För att infoga en rad i tabellen skapar vi en tabell med namnet kund. Tabellen innehåller tre kolumner. Datatyp för specifika kolumner bör nämnas för att mata in data i den kolumnen och för att undvika redundans. Fråga för att skapa en tabell är:





>> skapa tabellkund(idint,namn varchar (40), Landvarchar (40));

Efter att ha skapat tabellen kommer vi nu att mata in data genom att infoga rader manuellt i separata frågor. För det första nämner vi kolumnnamnet för att upprätthålla noggrannheten hos data i vissa kolumner angående attribut. Och sedan kommer värden att anges. Värdena kodas av enstaka koma, eftersom de ska infogas utan någon ändring.



>> Föra in in ikund(id,namn, Land) värden ('1','Alia', 'Pakistan');

Efter varje lyckad infogning kommer utmatningen att vara 0 1, vilket innebär att 1 rad infogas åt gången. I frågan som nämnts tidigare har vi infogat data 4 gånger. För att se resultaten använder vi följande fråga:

>> Välj*frånkund;

Exempel 2: Användning av INSERT -sats för att lägga till flera rader i en enda fråga
Samma tillvägagångssätt används för att infoga data men inte infoga infoga uttalanden många gånger. Vi kommer att mata in data direkt med hjälp av en viss fråga; alla värden på en rad separeras med Genom att använda följande fråga kommer vi att uppnå önskad utdata

Exempel 3: SÄTT in flera rader i en tabell baserat på siffror i en annan tabell
Detta exempel avser infogning av data från en tabell till en annan. Tänk på två tabeller, a och b. Tabell a har 2 attribut, dvs namn och klass. Genom att använda en CREATE -fråga introducerar vi en tabell. Efter skapandet av tabellen kommer data att matas in med hjälp av en infogningsfråga.

>> skapa tabelltill(namn varchar (30),klass varchar (40));
>> Föra in in itillvärden ('Amna',1),('bhishma', '2'),('Javed', '3'),('Ner',4');

Fyra värden infogas i tabellen med hjälp av överskridande teori. Vi kan kontrollera med hjälp av utvalda uttalanden.

På samma sätt kommer vi att skapa tabell b, med attribut för alla namn och ämnen. Samma två frågor kommer att tillämpas för att infoga och hämta posten från motsvarande tabell.

>> skapa tabellb(allnamn varchar(30), ämne varchar(70));

Hämta posten genom att välja teori.

>> Välj*frånb;

För att infoga tabellvärden b i tabellen använder vi följande fråga. Denna fråga fungerar på ett sådant sätt att alla namn i tabellen b kommer att infogas i tabellen till med räkningen av siffror som visar antalet förekomster av ett visst tal i respektive kolumn i tabellen b . b.allnamn representerar objektfunktionen för att specificera tabellen. Funktionen Count (b.allnames) fungerar för att räkna total förekomst. Eftersom varje namn förekommer på en gång, kommer den resulterande kolumnen att ha 1 nummer.

>> Föra in in itill(namn,klass) Väljb. alla namn, räkna(b. alla namn) frånbgrupp förbib. alla namn;

Exempel 4: INSERT data i rader om det inte finns
Denna fråga används för att ange rader om den inte finns. Först kontrollerar den angivna frågan om raden redan finns eller inte. Om det redan finns, läggs inte data till. Och om data inte finns i rad kommer den nya infogningen att hållas. Här är tmp en tillfällig variabel som används för att lagra data under en tid.

>> Föra in in ib(alla namn, ämne) Välj*från (Välj'Kinza'somallnamn, 'islamiat'somämne) somtmpvar inte existerar ( Väljalla namnfrånbvaralla namn='Sundus'begränsa 1);

Exempel 5: PostgreSQL Upsert med hjälp av INSERT -uttalande
Denna funktion har två sorter:

  • Uppdatering: om en konflikt uppstår, om posten matchar befintliga data i tabellen uppdateras den med nya data.
  • Om det uppstår en konflikt, gör ingenting : Om en post matchar befintliga data i tabellen hoppar den över posten, eller om ett fel uppstår ignoreras den också.

Inledningsvis kommer vi att bilda en tabell med några exempeldata.

>> SKAPA TABELLtbl2(IDINT PRIMÄR NYCKEL,namn KARAKTER VARIERAR);

Efter att ha skapat tabellen kommer vi att infoga data i tbl2 med hjälp av frågan:

>> FÖRA IN IN Itbl2VÄRDEN (1,'uzma'),(2,'abdul'),(3,'Hamna'),(4,'fatima'),(5,'shiza'),(6,'javeria');

Uppdatera om en konflikt uppstår:

>>FÖRA IN IN Itbl2VÄRDEN (8,'Rida') KONFLIKT(ID) DO UPPDATERING UPPSÄTTNING namn=Utesluten.namn;

Till en början kommer vi att mata in data med hjälp av konfliktfrågan för id 8 och namnet Rida. Samma fråga kommer att användas efter samma id; namnet kommer att ändras. Nu kommer du att märka hur namn kommer att ändras på samma id i tabellen.

>> FÖRA IN IN Itbl2VÄRDEN (8,'Arbete') KONFLIKT(ID) DO UPPDATERING UPPSÄTTNING namn =Utesluten.namn;

Vi har upptäckt att det fanns en konflikt på id 8, så den angivna raden uppdateras.

Om det uppstår en konflikt, gör ingenting

>> FÖRA IN IN Itbl2VÄRDEN (9,'Hira') KONFLIKT(ID) DO INGENTING;

Med denna fråga infogas en ny rad. Efter det kommer vi att använda if if the same query to see the conflict that occurred.

>>FÖRA IN IN Itbl2VÄRDEN (9,'Hira') KONFLIKT(ID) DO INGENTING;

Enligt ovanstående bild kommer du att se att efter genomförandet av frågan INSERT 0 0 visar ingen data.

Slutsats

Vi har fått en glimt av förståelsebegreppet att infoga rader i tabeller där data antingen inte finns, eller infogning inte slutförs, om någon post hittas, för att minska redundans i databasrelationer.