PostgreSQL - WHERE Maddesi

PostgreSQL WHERE yan tümcesi, verileri tek tablodan alırken veya birden çok tabloyla birleştirilirken bir koşul belirtmek için kullanılır.

Verilen koşul karşılanırsa, ancak o zaman tablodan belirli bir değer döndürür. WHERE yan tümcesini kullanarak sonuç kümesine dahil edilmesini istemediğiniz satırları filtreleyebilirsiniz.

WHERE yan tümcesi yalnızca SELECT deyiminde değil, aynı zamanda sonraki bölümlerde inceleyeceğimiz UPDATE, DELETE deyimi vb. İçin de kullanılır.

Sözdizimi

WHERE yan tümcesine sahip SELECT deyiminin temel sözdizimi aşağıdaki gibidir -

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

Karşılaştırma veya mantıksal işleçleri kullanarak bir search_condition belirtebilirsiniz . >, <, =, LIKE, NOT, vb. gibi. Aşağıdaki örnekler bu kavramı açıklığa kavuşturacaktır.

Misal

Aşağıdaki gibi kayıtlara sahip ŞİRKET tablosunu düşünün -

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

PostgreSQL Mantıksal Operatörlerin kullanımını gösteren basit örnekler aşağıda verilmiştir. Aşağıdaki SELECT ifadesi, AGE'nin 25'ten büyük veya 25'e eşit olduğu tüm kayıtları listeleyecektir.AND maaş 65000,00 veya daha fazla ise -

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age |  address   | salary
----+-------+-----+------------+--------
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(2 rows)

Aşağıdaki SELECT deyimi, AGE'nin 25'ten büyük veya 25'e eşit olduğu tüm kayıtları listeler. OR maaş 65000,00 veya daha fazla ise -

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age | address     | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
(4 rows)

Aşağıdaki SELECT deyimi, AGE'nin NULL olmadığı tüm kayıtları listeler; bu, tüm kayıtlar anlamına gelir, çünkü kayıtların hiçbirinde AGE, NULL'a eşit değildir -

testdb=#  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age | address    | salary
 ----+-------+-----+------------+--------
   1 | Paul  |  32 | California |  20000
   2 | Allen |  25 | Texas      |  15000
   3 | Teddy |  23 | Norway     |  20000
   4 | Mark  |  25 | Rich-Mond  |  65000
   5 | David |  27 | Texas      |  85000
   6 | Kim   |  22 | South-Hall |  45000
   7 | James |  24 | Houston    |  10000
(7 rows)

Aşağıdaki SELECT deyimi, "Pa" dan sonra ne gelirse gelsin, NAME'nin "Pa" ile başladığı tüm kayıtları listeler.

testdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name | age |address    | salary
----+------+-----+-----------+--------
  1 | Paul |  32 | California|  20000

Aşağıdaki SELECT deyimi, AGE değerinin 25 veya 27 olduğu tüm kayıtları listeler -

testdb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

Aşağıdaki SELECT deyimi, AGE değerinin ne 25 ne de 27 olduğu tüm kayıtları listeler -

testdb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  3 | Teddy |  23 | Norway     |  20000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
(4 rows)

Aşağıdaki SELECT deyimi, AGE değerinin 25 VE 27 ARASINDA olduğu tüm kayıtları listeler -

testdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

Aşağıdaki SELECT deyimi, alt sorgunun, MAAŞ> 65000 ve daha sonra AGE alanına sahip tüm kayıtları bulduğu SQL alt sorgusunu kullanır ve daha sonra WHERE yan tümcesi, dış sorgudan AGE'nin döndürülen sonuçta bulunduğu tüm kayıtları listelemek için EXISTS işleci ile birlikte kullanılır. alt sorguya göre -

testdb=# SELECT AGE FROM COMPANY
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

age
-----
  32
  25
  23
  25
  27
  22
  24
(7 rows)

Aşağıdaki SELECT deyimi, alt sorgunun, MAAŞ> 65000 ve daha sonraki AGE alanına sahip tüm kayıtları bulduğu SQL alt sorgusunu kullanır ve daha sonra WHERE yan tümcesi, dış sorgudan AGE'nin yaştan daha büyük olduğu tüm kayıtları listelemek için> işleci ile birlikte kullanılır. alt sorgu tarafından döndürülen sonuç -

testdb=# SELECT * FROM COMPANY
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

Yukarıda verilen PostgreSQL ifadesi aşağıdaki sonucu verecektir -

id | name | age | address    | salary
----+------+-----+------------+--------
  1 | Paul |  32 | California |  20000