PostgreSQL WHERE klausulen brukes til å angi en tilstand under henting av data fra én tabell eller bli med flere bord
Hvis den gitte tilstanden er fornøyd, først da den returnerer bestemt verdi fra Bordet. Du kan filtrere ut rader som du ikke vil ha med i resultatet-set ved hjelp WHERE-leddet.
WHERE klausulen ikke bare brukes i SELECT-setning, men det er også brukt i UPDATE, DELETE-setningen osv, som vi vil undersøke i de påfølgende kapitlene
Syntax
Den grunnleggende syntaks av SELECT-setning med WHERE klausulen er som følger:.
SELECT COLUMN1, COLUMN2, columnNFROM table_nameWHERE [SEARCH_CONDITION ]
Du kan angi en SEARCH_CONDITION
hjelp sammenligning eller logiske operatører. som >, <, =, SOM, NOT, etc. Nedenfor eksempler ville gjøre dette konseptet klart
Eksempel:.
Tenk bordet COMPANY ha poster som følger:
testdb # select * from COMPANY; id | Navn | alder | adressere | lønn ---- + ------- + ----- + ----------- + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norge | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 (7 p)
Her er enkle eksempler som viser riktig bruk av PostgreSQL logiske operatører. Etter SELECT-setningen vil liste ned alle poster der alder er større enn eller lik 25 og Selge lønn er større enn eller lik 65000.00:
testdb = # SELECT * FROM selskap hvor AGE > = 25 OG LØNN > = 65000;
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------ + -------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (to rader)
Etter SELECT-setningen lister ned alle poster der alder er større enn eller lik 25 OR
lønn er større enn eller lik 65000.00:
testdb = # SELECT * FROM selskap hvor AGE > = 25 ELLER LØNN > = 65000;
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------- + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (4 rader)
Etter SELECT-setningen lister ned alle poster der alder er ikke NULL som betyr alle postene fordi ingen av plata er å ha AGE lik NULL:
testdb = # SELECT * FROM selskap hvor AGE IS NOT NULL;
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------ + -------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norge | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 (7 p)
Etter SELECT-setningen lister ned alle poster der navn som begynner med "Pa", spiller ingen rolle hva som kommer etter "Pa".
Testdb = # SELECT * FROM selskap der navn som 'Pa% ';
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adresse | lønn ---- + ------ + ----- + ----------- + -------- 1 | Paul | 32 | California | 20000
Etter SELECT-setningen lister ned alle poster der AGE verdi er enten 25 eller 27:
testdb = # SELECT * FROM selskap hvor AGE IN (25, 27);
Over PostgreSQL uttalelse vil produsere følgende Resultatet:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------ + -------- 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (3 rader)
Etter SELECT-setningen lister ned alle poster der AGE verdi verken 25 eller 27:
testdb = # SELECT * FROM selskap hvor AGE NOT IN (25, 27);
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------ + -------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norge | 20000 6 | Kim | 22 | Sør-Hall | 45000 7 | James | 24 | Houston | 10000 (4 rader)
Etter SELECT-setningen lister ned alle poster der AGE verdien er i mellom 25 og 27:
testdb = # SELECT * FROM COMPANY der alder mellom 25 og 27;
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------- + ----- + ------------ + -------- 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (3 rader)
Etter SELECT-setningen gjør bruk av SQL delspørring hvor subquery finner alle postene med AGE felt med LØNN > 65000 og senere WHERE klausulen brukes sammen med EXISTS operatøren å liste ned alle postene der AGE fra utsiden spør eksisterer i resultatet returneres av sub-spørring:
testdb = # SELECT alder fra selskap hvor EXISTS (SELECT alder fra selskap hvor LØNN > 65000);
Over PostgreSQL uttalelse vil produsere følgende resultat:
alder ----- 32 25 23 25 27 22 24 (7 p)
Etter SELECT-setningen gjør bruk av SQL subquery hvor subquery finner alle postene med AGE felt med LØNN > 65000 og senere WHERE klausulen blir brukt sammen med > operatøren å liste ned alle postene hvor AGE utenfra spørring er større enn alders i resultatet returneres av sub-spørring:
testdb = # SELECT * FROM selskap hvor AGE > (VELG Alder fra selskap hvor LØNN > 65000);
Over PostgreSQL uttalelse vil produsere følgende resultat:
id | Navn | alder | adressere | lønn ---- + ------ + ----- + ------------ + -------- 1 | Paul | 32 | California | 20000