Indsæt række, hvis værdier ikke allerede findes i Postgresl

Insert Row If Values Don T Already Exist Postgresl



At kende og manipulere databasesystemer har gjort os bekendt med ændringer i databaser. Hvilket typisk indebærer at oprette, indsætte, opdatere og slette funktioner, der anvendes på bestemte tabeller. I den aktuelle artikel vil vi se, hvordan data administreres ved indsættelsesmetoden. Vi skal lave en tabel, hvor vi ønsker indsættelse. Indsæt sætning bruges til tilføjelse af nye data i rækker af tabeller. PostgreSQL indsætter erklæring dækker nogle regler for vellykket udførelse af en forespørgsel. For det første skal vi nævne tabelnavnet efterfulgt af kolonnenavne (attributter), hvor vi vil indsætte rækker. For det andet skal vi indtaste værdierne adskilt med et komma efter VALUE -klausulen. Endelig skal hver værdi være i samme rækkefølge, som sekvensen af ​​attributlister angives, mens der oprettes en bestemt tabel.

Syntaks

>> INDSÆT IND ITABLENAVN(kolonne1,kolonne) VÆRDIER ('Værdi1', 'værdi2');

Her er en kolonne tabellens attributter. Søgeord VALUE bruges til at indtaste værdier. 'Værdi' er dataene i tabeller, der skal indtastes.







Indsætte rækkefunktioner i PostgreSQL -shell (psql)

Efter en vellykket installation af postgresql indtaster vi databasens navn, portnummer og adgangskode. Psql vil blive startet. Vi vil derefter udføre forespørgsler.





Eksempel 1: Brug af INSERT til at tilføje nye poster til tabeller
Efter syntaksen opretter vi følgende forespørgsel. For at indsætte en række i tabellen opretter vi en tabel med navnet kunde. Den respektive tabel indeholder 3 kolonner. Datatype for bestemte kolonner bør nævnes for at indtaste data i den kolonne og for at undgå redundans. Forespørgsel til at oprette en tabel er:





>> skab bordkunde(idint,navn varchar (40), Landvarchar (40));

Efter at have oprettet tabellen, vil vi nu indtaste data ved at indsætte rækker manuelt i separate forespørgsler. For det første nævner vi kolonnenavnet for at opretholde nøjagtigheden af ​​data, især kolonner vedrørende attributter. Og derefter vil værdier blive indtastet. Værdier kodes af enkelt koma, da de skal indsættes uden ændringer.



>> indsæt ind ikunde(id,navn, Land) værdier ('1','Alia', 'Pakistan');

Efter hver vellykket indsættelse vil output være 0 1, hvilket betyder, at der indsættes 1 række ad gangen. I forespørgslen som tidligere nævnt har vi indsat data 4 gange. For at se resultaterne bruger vi følgende forespørgsel:

>> Vælg*frakunde;

Eksempel 2: Brug af INSERT -sætning til at tilføje flere rækker i en enkelt forespørgsel
Den samme fremgangsmåde bruges til at indsætte data, men ikke indføre indsatsudsagn mange gange. Vi indtaster data på én gang ved at bruge en bestemt forespørgsel; alle værdier for en række adskilles med Ved at bruge følgende forespørgsel opnår vi det nødvendige output

Eksempel 3: INSERT flere rækker i en tabel baseret på tal i en anden tabel
Dette eksempel vedrører indsættelse af data fra en tabel til en anden. Overvej to borde, a og b. Tabel a har 2 attributter, dvs. navn og klasse. Ved at anvende en CREATE -forespørgsel introducerer vi en tabel. Efter oprettelsen af ​​tabellen indtastes data ved hjælp af en indsættelsesforespørgsel.

>> skab bordtil(navn varchar (30),klasse varchar (40));
>> Indsæt ind itilværdier ('Amna',1),('bhishma', '2'),('Javed', '3'),('Ned',4');

Fire værdier indsættes i tabellen ved hjælp af den overskridende teori. Vi kan kontrollere ved hjælp af udvalgte udsagn.

På samme måde vil vi oprette tabel b med attributter for alle navne og emner. De samme 2 forespørgsler vil blive anvendt til at indsætte og hente posten fra den tilsvarende tabel.

>> skab bordb(alle navne varchar(30), emne varchar(70));

Hent posten ved at vælge teori.

>> Vælg*frab;

For at indsætte værdier i tabellen b i tabellen vil vi bruge følgende forespørgsel. Denne forespørgsel fungerer på en sådan måde, at alle navne i tabellen b indsættes i tabellen til med optælling af tal, der viser antallet af forekomster af et bestemt tal i den respektive tabelkolonne b . b. alle navne repræsenterer objektfunktionen til at specificere tabellen. Count (b.allnames) funktion fungerer til at tælle total forekomst. Da hvert navn forekommer på én gang, vil den resulterende kolonne have 1 nummer.

>> Indsæt ind itil(navn,klasse) Vælgb. alle navne, tæl(b. alle navne) frabgruppe vedb. alle navne;

Eksempel 4: INSERT data i rækker, hvis de ikke findes
Denne forespørgsel bruges til at indtaste rækker, hvis den ikke findes. For det første kontrollerer den medfølgende forespørgsel, om rækken allerede er til stede eller ej. Hvis det allerede findes, tilføjes data ikke. Og hvis data ikke er til stede i en række, vil den nye indsættelse blive holdt. Her er tmp en midlertidig variabel, der bruges til at gemme data i nogen tid.

>> indsæt ind ib(alle navne, emne) Vælg*fra (Vælg'Kinza'somalle navne, 'islamiat'somemne) somtmphvor ikke findes ( Vælgalle navnefrabhvoralle navne='Sundus'begrænse 1);

Eksempel 5: PostgreSQL Upsert ved hjælp af INSERT -erklæring
Denne funktion har to varianter:

  • Opdatering: hvis der opstår en konflikt, hvis posten matcher de eksisterende data i tabellen, opdateres den med nye data.
  • Hvis der opstår en konflikt, skal du ikke gøre noget : Hvis en post matcher de eksisterende data i tabellen, springer den over posten, eller hvis der opstår en fejl, ignoreres den også.

I første omgang danner vi en tabel med nogle eksempeldata.

>> SKAB BORDtbl2(IDINT PRIMÆR NØGLE,Navn KARAKTER VARIERENDE);

Efter oprettelse af tabel indsætter vi data i tbl2 ved hjælp af forespørgsel:

>> INDSÆT IND Itbl2VÆRDIER (1,'uzma'),(2,'abdul'),(3,'Hamna'),(4,'fatima'),(5,'shiza'),(6,'javeria');

Hvis der opstår en konflikt, skal du opdatere:

>>INDSÆT IND Itbl2VÆRDIER (8,'Ride') KONFLIKT(ID) GØR OPDATER SÆT Navn=Ekskluderet.Navn;

Først vil vi indtaste data ved hjælp af konfliktforespørgslen efter id 8 og navnet Rida. Den samme forespørgsel vil blive brugt efter samme id; navnet ændres. Nu vil du bemærke, hvordan navne vil blive ændret på det samme id i tabellen.

>> INDSÆT IND Itbl2VÆRDIER (8,'Arbejde') KONFLIKT(ID) GØR OPDATER SÆT Navn =Ekskluderet.Navn;

Vi har fundet ud af, at der var en konflikt på id 8, så den angivne række opdateres.

Hvis der opstår en konflikt, skal du ikke gøre noget

>> INDSÆT IND Itbl2VÆRDIER (9,'Hira') KONFLIKT(ID) GØR IKKE NOGET;

Ved hjælp af denne forespørgsel indsættes en ny række. Derefter vil vi bruge den samme forespørgsel til at se den konflikt, der opstod.

>>INDSÆT IND Itbl2VÆRDIER (9,'Hira') KONFLIKT(ID) GØR IKKE NOGET;

Ifølge ovenstående billede vil du se, at efter udførelsen af ​​forespørgslen INSERT 0 0 viser, at der ikke er indtastet nogen data.

Konklusion

Vi har taget et glimt af forståelsesbegrebet om at indsætte rækker i tabeller, hvor data enten ikke er til stede, eller indsættelse ikke er afsluttet, hvis der findes en registrering, for at reducere redundans i databaseforhold.