{"id":32803,"date":"2025-10-26T04:40:47","date_gmt":"2025-10-26T01:40:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32803"},"modified":"2025-10-26T04:40:47","modified_gmt":"2025-10-26T01:40:47","slug":"postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/","title":{"rendered":"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma"},"content":{"rendered":"<p><body><\/p>\n<h2>PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma<\/h2>\n<p>PostgreSQL, d\u00fcnyan\u0131n en geli\u015fmi\u015f a\u00e7\u0131k kaynakl\u0131 ili\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinden (RDBMS) biridir. G\u00fcvenilirli\u011fi, sa\u011flam \u00f6zellik setleri ve performans\u0131yla bilinir. Veritaban\u0131 sistemlerinin kalbinde veri bulunur ve bu veriye eri\u015fmenin, onu manip\u00fcle etmenin ve analiz etmenin temel yolu SQL (Structured Query Language) kullanmakt\u0131r. SQL&#8217;in en s\u0131k kullan\u0131lan ve en g\u00fc\u00e7l\u00fc komutlar\u0131ndan biri <code>SELECT<\/code> komutudur. Bu makale, PostgreSQL&#8217;de <code>SELECT<\/code> komutunu kullanarak nas\u0131l veri sorgular\u0131 olu\u015fturulaca\u011f\u0131n\u0131, temelden ba\u015flayarak daha karma\u015f\u0131k senaryolara kadar ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r.<\/p>\n<h3>Giri\u015f: SQL ve SELECT Komutunun \u00d6nemi<\/h3>\n<p>SQL, veritabanlar\u0131yla ileti\u015fim kurmak i\u00e7in tasarlanm\u0131\u015f standart bir dildir. Veri Tan\u0131mlama Dili (DDL) ve Veri \u0130\u015fleme Dili (DML) olmak \u00fczere iki ana kategoriye ayr\u0131l\u0131r. <code>SELECT<\/code> komutu, DML&#8217;nin bir par\u00e7as\u0131d\u0131r ve veritaban\u0131ndan veri almak i\u00e7in kullan\u0131l\u0131r. Bir veritaban\u0131n\u0131n t\u00fcm g\u00fcc\u00fc, depolanan verilerden anlaml\u0131 bilgiler \u00e7\u0131karabilme yetene\u011finde yatar. <code>SELECT<\/code> komutu, bu bilgiyi \u00e7e\u015fitli kriterlere g\u00f6re filtreleme, s\u0131ralama, gruplama ve birle\u015ftirme esnekli\u011fi sunarak bu yetene\u011fi sa\u011flar. \u0130ster basit bir tablo listeleme, ister birden fazla tabloyu birle\u015ftiren karma\u015f\u0131k bir analiz olsun, <code>SELECT<\/code> komutu her zaman merkezdedir.<\/p>\n<p>Bu makalede, PostgreSQL&#8217;in <code>SELECT<\/code> komutuyla sundu\u011fu zengin \u00f6zellikleri detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Sorgular\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, verileri nas\u0131l filtreleyece\u011finizi, s\u0131ralayaca\u011f\u0131n\u0131z\u0131, gruplayaca\u011f\u0131n\u0131z\u0131, farkl\u0131 tablolar\u0131 nas\u0131l birle\u015ftirece\u011finizi ve daha geli\u015fmi\u015f sorgulama tekniklerini nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz.<\/p>\n<h3>Temel SELECT \u0130fadeleri<\/h3>\n<p><code>SELECT<\/code> komutunun en basit kullan\u0131m\u0131, bir tablodan t\u00fcm sat\u0131rlar\u0131 ve s\u00fctunlar\u0131 veya belirli s\u00fctunlar\u0131 getirmektir.<\/p>\n<h4>T\u00fcm S\u00fctunlar\u0131 Se\u00e7me<\/h4>\n<p>Bir tablodaki t\u00fcm s\u00fctunlar\u0131 ve sat\u0131rlar\u0131 g\u00f6rmek i\u00e7in <code>*<\/code> (y\u0131ld\u0131z) karakterini kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-sql\">SELECT * FROM urunler;<\/code><\/pre>\n<p>Bu sorgu, <code>urunler<\/code> tablosundaki t\u00fcm \u00fcr\u00fcnlerin t\u00fcm bilgilerini (\u00fcr\u00fcn ad\u0131, fiyat, stok vb.) d\u00f6nd\u00fcrecektir.<\/p>\n<h4>Belirli S\u00fctunlar\u0131 Se\u00e7me<\/h4>\n<p>Yaln\u0131zca belirli s\u00fctunlar\u0131 g\u00f6rmek istedi\u011fimizde, bu s\u00fctunlar\u0131n adlar\u0131n\u0131 <code>SELECT<\/code> anahtar kelimesinden sonra virg\u00fclle ay\u0131rarak listeleriz.<\/p>\n<pre><code class=\"language-sql\">SELECT urun_adi, fiyat FROM urunler;<\/code><\/pre>\n<p>Bu sorgu, <code>urunler<\/code> tablosundan yaln\u0131zca <code>urun_adi<\/code> ve <code>fiyat<\/code> s\u00fctunlar\u0131n\u0131 getirir.<\/p>\n<h4>Benzersiz De\u011ferleri Se\u00e7me (DISTINCT)<\/h4>\n<p>Bir s\u00fctundaki yinelenen de\u011ferleri ortadan kald\u0131rarak yaln\u0131zca benzersiz de\u011ferleri almak i\u00e7in <code>DISTINCT<\/code> anahtar kelimesini kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-sql\">SELECT DISTINCT kategori FROM urunler;<\/code><\/pre>\n<p>Bu sorgu, <code>urunler<\/code> tablosundaki t\u00fcm benzersiz \u00fcr\u00fcn kategorilerini listeleyecektir.<\/p>\n<h4>S\u00fctunlara Takma Ad Verme (AS)<\/h4>\n<p>Sorgu sonu\u00e7lar\u0131nda s\u00fctun adlar\u0131n\u0131 daha anla\u015f\u0131l\u0131r hale getirmek veya karma\u015f\u0131k ifadeler i\u00e7in k\u0131sa adlar vermek amac\u0131yla takma adlar (alias) kullanabiliriz. <code>AS<\/code> anahtar kelimesi ile takma ad verilir. <code>AS<\/code> anahtar kelimesi iste\u011fe ba\u011fl\u0131d\u0131r, ancak okunabilirli\u011fi art\u0131r\u0131r.<\/p>\n<pre><code class=\"language-sql\">SELECT urun_adi AS \"\u00dcr\u00fcn Ad\u0131\", fiyat AS \"Birim Fiyat\" FROM urunler;<\/code><\/pre>\n<p>Bu sorgu, <code>urun_adi<\/code> s\u00fctununu &#8220;\u00dcr\u00fcn Ad\u0131&#8221; ve <code>fiyat<\/code> s\u00fctununu &#8220;Birim Fiyat&#8221; olarak d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h4>Sabit De\u011ferler ve Aritmetik \u0130\u015flemler<\/h4>\n<p><code>SELECT<\/code> komutu sadece tablolardan veri \u00e7ekmekle kalmaz, ayn\u0131 zamanda sabit de\u011ferler d\u00f6nd\u00fcrebilir veya aritmetik i\u015flemler yapabilir.<\/p>\n<pre><code class=\"language-sql\">SELECT 'Merhaba D\u00fcnya' AS mesaj;\nSELECT 10 * 5 AS sonuc;\nSELECT urun_adi, fiyat * 1.18 AS kdvli_fiyat FROM urunler; -- Fiyata KDV ekleme<\/code><\/pre>\n<h3>Verileri WHERE Yan T\u00fcmcesi ile Filtreleme<\/h3>\n<p><code>WHERE<\/code> yan t\u00fcmcesi, belirli ko\u015fullar\u0131 kar\u015f\u0131layan sat\u0131rlar\u0131 se\u00e7mek i\u00e7in kullan\u0131l\u0131r. Bu, b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7inde arad\u0131\u011f\u0131m\u0131z spesifik bilgilere ula\u015fman\u0131n en temel yoludur.<\/p>\n<h4>Kar\u015f\u0131la\u015ft\u0131rma Operat\u00f6rleri<\/h4>\n<p><code>WHERE<\/code> ile birlikte kullan\u0131lan temel kar\u015f\u0131la\u015ft\u0131rma operat\u00f6rleri \u015funlard\u0131r:<br \/>\n&#8211; <code>=<\/code> (E\u015fit)<br \/>\n&#8211; <code>!=<\/code> veya <code><><\/code> (E\u015fit De\u011fil)<br \/>\n&#8211; <code><<\/code> (K\u00fc\u00e7\u00fckt\u00fcr)<br \/>\n- <code>><\/code> (B\u00fcy\u00fckt\u00fcr)<br \/>\n- <code><=<\/code> (K\u00fc\u00e7\u00fck E\u015fittir)<br \/>\n- <code>>=<\/code> (B\u00fcy\u00fck E\u015fittir)<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 50'den b\u00fcy\u00fck \u00fcr\u00fcnler\nSELECT urun_adi, fiyat FROM urunler WHERE fiyat > 50;\n\n-- Stok miktar\u0131 100'e e\u015fit olmayan \u00fcr\u00fcnler\nSELECT urun_adi, stok_miktari FROM urunler WHERE stok_miktari != 100;\n\n-- Kay\u0131t tarihi 2023'ten sonra olan m\u00fc\u015fteriler\nSELECT ad, soyad, kayit_tarihi FROM musteriler WHERE kayit_tarihi > '2023-01-01';<\/code><\/pre>\n<h4>Mant\u0131ksal Operat\u00f6rler<\/h4>\n<p>Birden fazla ko\u015fulu birle\u015ftirmek i\u00e7in <code>AND<\/code>, <code>OR<\/code> ve <code>NOT<\/code> mant\u0131ksal operat\u00f6rleri kullan\u0131l\u0131r.<\/p>\n<p>*   <code>AND<\/code>: T\u00fcm ko\u015fullar do\u011fruysa do\u011fru d\u00f6ner.<br \/>\n*   <code>OR<\/code>: Ko\u015fullardan herhangi biri do\u011fruysa do\u011fru d\u00f6ner.<br \/>\n*   <code>NOT<\/code>: Bir ko\u015fulun tersini al\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 50 ile 100 aras\u0131nda (dahil) olan ve kategori 'Elektronik' olan \u00fcr\u00fcnler\nSELECT urun_adi, fiyat, kategori\nFROM urunler\nWHERE fiyat >= 50 AND fiyat <= 100 AND kategori = 'Elektronik';\n\n-- Kategori 'Giyim' veya 'Aksesuar' olan \u00fcr\u00fcnler\nSELECT urun_adi, kategori\nFROM urunler\nWHERE kategori = 'Giyim' OR kategori = 'Aksesuar';\n\n-- Fiyat\u0131 50'den b\u00fcy\u00fck olmayan \u00fcr\u00fcnler (yani 50 veya daha az)\nSELECT urun_adi, fiyat FROM urunler WHERE NOT (fiyat > 50);<\/code><\/pre>\n<h4>\u00d6zel Operat\u00f6rler<\/h4>\n<p>SQL'de daha karma\u015f\u0131k filtreleme senaryolar\u0131 i\u00e7in \u00f6zel operat\u00f6rler bulunur.<\/p>\n<h5>BETWEEN<\/h5>\n<p>Belirli bir aral\u0131ktaki de\u011ferleri se\u00e7mek i\u00e7in kullan\u0131l\u0131r (s\u0131n\u0131rlar dahil).<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 50 ile 100 aras\u0131nda olan \u00fcr\u00fcnler\nSELECT urun_adi, fiyat FROM urunler WHERE fiyat BETWEEN 50 AND 100;<\/code><\/pre>\n<h5>IN<\/h5>\n<p>Bir de\u011fer listesindeki herhangi bir de\u011ferle e\u015fle\u015fen sat\u0131rlar\u0131 se\u00e7mek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Kategori 'Elektronik', 'Kitap' veya 'Giyim' olan \u00fcr\u00fcnler\nSELECT urun_adi, kategori FROM urunler WHERE kategori IN ('Elektronik', 'Kitap', 'Giyim');<\/code><\/pre>\n<h5>LIKE \/ ILIKE<\/h5>\n<p>Metin s\u00fctunlar\u0131nda desen e\u015fle\u015ftirme yapmak i\u00e7in kullan\u0131l\u0131r.<br \/>\n- <code>%<\/code>: S\u0131f\u0131r veya daha fazla karakteri temsil eder.<br \/>\n- <code>_<\/code>: Tek bir karakteri temsil eder.<br \/>\n<code>ILIKE<\/code>, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z arama yapar (PostgreSQL'e \u00f6zg\u00fcd\u00fcr).<\/p>\n<pre><code class=\"language-sql\">-- Ad\u0131 'A' ile ba\u015flayan m\u00fc\u015fteriler\nSELECT ad, soyad FROM musteriler WHERE ad LIKE 'A%';\n\n-- Soyad\u0131 'an' ile biten m\u00fc\u015fteriler\nSELECT ad, soyad FROM musteriler WHERE soyad LIKE '%an';\n\n-- Ad\u0131nda 'el' ge\u00e7en m\u00fc\u015fteriler (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z)\nSELECT ad, soyad FROM musteriler WHERE ad ILIKE '%el%';<\/code><\/pre>\n<h5>IS NULL \/ IS NOT NULL<\/h5>\n<p>Bir s\u00fctunun bo\u015f (NULL) olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- E-posta adresi belirtilmemi\u015f m\u00fc\u015fteriler\nSELECT ad, soyad FROM musteriler WHERE email IS NULL;\n\n-- E-posta adresi belirtilmi\u015f m\u00fc\u015fteriler\nSELECT ad, soyad FROM musteriler WHERE email IS NOT NULL;<\/code><\/pre>\n<h3>Sonu\u00e7lar\u0131 ORDER BY ile S\u0131ralama<\/h3>\n<p><code>ORDER BY<\/code> yan t\u00fcmcesi, sorgu sonu\u00e7lar\u0131n\u0131 bir veya daha fazla s\u00fctuna g\u00f6re artan (<code>ASC<\/code>) veya azalan (<code>DESC<\/code>) d\u00fczende s\u0131ralamak i\u00e7in kullan\u0131l\u0131r. Varsay\u0131lan s\u0131ralama <code>ASC<\/code>'dir.<\/p>\n<pre><code class=\"language-sql\">-- \u00dcr\u00fcnleri fiyata g\u00f6re artan s\u0131rada s\u0131ralama\nSELECT urun_adi, fiyat FROM urunler ORDER BY fiyat ASC;\n\n-- \u00dcr\u00fcnleri fiyata g\u00f6re azalan s\u0131rada s\u0131ralama\nSELECT urun_adi, fiyat FROM urunler ORDER BY fiyat DESC;\n\n-- \u00d6nce kategoriye g\u00f6re (artan), sonra fiyata g\u00f6re (azalan) s\u0131ralama\nSELECT urun_adi, kategori, fiyat\nFROM urunler\nORDER BY kategori ASC, fiyat DESC;<\/code><\/pre>\n<p><code>NULLS FIRST<\/code> veya <code>NULLS LAST<\/code> anahtar kelimeleri ile NULL de\u011ferlerin s\u0131ralamada nerede g\u00f6r\u00fcnece\u011fini belirleyebilirsiniz.<\/p>\n<pre><code class=\"language-sql\">-- E-posta adresi olan m\u00fc\u015fterileri soyada g\u00f6re s\u0131rala, e-posta NULL olanlar en sona gelsin\nSELECT ad, soyad, email FROM musteriler ORDER BY email NULLS LAST, soyad ASC;<\/code><\/pre>\n<h3>Sonu\u00e7lar\u0131 LIMIT ve OFFSET ile S\u0131n\u0131rlama<\/h3>\n<p>B\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken, bazen sonu\u00e7lar\u0131n tamam\u0131n\u0131 de\u011fil, yaln\u0131zca belirli bir k\u0131sm\u0131n\u0131 g\u00f6rmek isteriz. <code>LIMIT<\/code> ve <code>OFFSET<\/code> bu ama\u00e7la kullan\u0131l\u0131r.<\/p>\n<p>*   <code>LIMIT<\/code>: D\u00f6nd\u00fcr\u00fclecek maksimum sat\u0131r say\u0131s\u0131n\u0131 belirler.<br \/>\n*   <code>OFFSET<\/code>: Sorgu sonucunun ba\u015flang\u0131c\u0131ndan atlanacak sat\u0131r say\u0131s\u0131n\u0131 belirler. Genellikle sayfalama (pagination) i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- En pahal\u0131 5 \u00fcr\u00fcn\u00fc listele\nSELECT urun_adi, fiyat FROM urunler ORDER BY fiyat DESC LIMIT 5;\n\n-- En pahal\u0131 5 \u00fcr\u00fcnden sonraki 3 \u00fcr\u00fcn\u00fc listele (6. \u00fcr\u00fcnden 8. \u00fcr\u00fcne kadar)\nSELECT urun_adi, fiyat FROM urunler ORDER BY fiyat DESC LIMIT 3 OFFSET 5;<\/code><\/pre>\n<h3>Toplama Fonksiyonlar\u0131<\/h3>\n<p>Toplama (Aggregate) fonksiyonlar\u0131, bir grup sat\u0131r \u00fczerinde hesaplama yaparak tek bir sonu\u00e7 de\u011feri d\u00f6nd\u00fcr\u00fcr. Genellikle <code>GROUP BY<\/code> yan t\u00fcmcesi ile birlikte kullan\u0131l\u0131rlar.<\/p>\n<p><em>   <code>COUNT()<\/code>: Sat\u0131r say\u0131s\u0131n\u0131 sayar. <code>COUNT(<\/em>)<\/code> t\u00fcm sat\u0131rlar\u0131, <code>COUNT(sutun_adi)<\/code> NULL olmayan de\u011ferleri sayar. <code>COUNT(DISTINCT sutun_adi)<\/code> benzersiz NULL olmayan de\u011ferleri sayar.<br \/>\n*   <code>SUM()<\/code>: Bir s\u00fctundaki say\u0131sal de\u011ferlerin toplam\u0131n\u0131 hesaplar.<br \/>\n*   <code>AVG()<\/code>: Bir s\u00fctundaki say\u0131sal de\u011ferlerin ortalamas\u0131n\u0131 hesaplar.<br \/>\n*   <code>MIN()<\/code>: Bir s\u00fctundaki en k\u00fc\u00e7\u00fck de\u011feri bulur.<br \/>\n*   <code>MAX()<\/code>: Bir s\u00fctundaki en b\u00fcy\u00fck de\u011feri bulur.<\/p>\n<pre><code class=\"language-sql\">-- Toplam \u00fcr\u00fcn say\u0131s\u0131n\u0131 bul\nSELECT COUNT(*) AS toplam_urun_sayisi FROM urunler;\n\n-- Ortalama \u00fcr\u00fcn fiyat\u0131n\u0131 bul\nSELECT AVG(fiyat) AS ortalama_fiyat FROM urunler;\n\n-- En pahal\u0131 \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131 bul\nSELECT MAX(fiyat) AS en_yuksek_fiyat FROM urunler;\n\n-- Toplam stok miktar\u0131n\u0131 bul\nSELECT SUM(stok_miktari) AS toplam_stok FROM urunler;\n\n-- Ka\u00e7 farkl\u0131 kategori oldu\u011funu bul\nSELECT COUNT(DISTINCT kategori) AS farkli_kategori_sayisi FROM urunler;<\/code><\/pre>\n<h3>Verileri GROUP BY ile Gruplama<\/h3>\n<p><code>GROUP BY<\/code> yan t\u00fcmcesi, sat\u0131rlar\u0131 bir veya daha fazla s\u00fctunun ortak de\u011ferlerine g\u00f6re gruplamak ve her grup i\u00e7in toplama fonksiyonlar\u0131n\u0131 uygulamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Her kategoride ka\u00e7 \u00fcr\u00fcn oldu\u011funu bul\nSELECT kategori, COUNT(*) AS urun_sayisi\nFROM urunler\nGROUP BY kategori;\n\n-- Her kategorideki ortalama fiyat\u0131 bul\nSELECT kategori, AVG(fiyat) AS ortalama_fiyat\nFROM urunler\nGROUP BY kategori;\n\n-- Her m\u00fc\u015fterinin toplam sipari\u015f tutar\u0131n\u0131 bul\nSELECT musteri_id, SUM(toplam_tutar) AS toplam_harcama\nFROM siparisler\nGROUP BY musteri_id;<\/code><\/pre>\n<p><code>GROUP BY<\/code> kullan\u0131rken, <code>SELECT<\/code> listesindeki toplama fonksiyonu olmayan t\u00fcm s\u00fctunlar <code>GROUP BY<\/code> yan t\u00fcmcesinde de yer almal\u0131d\u0131r.<\/p>\n<h3>Gruplar\u0131 HAVING ile Filtreleme<\/h3>\n<p><code>WHERE<\/code> yan t\u00fcmcesi tek tek sat\u0131rlar\u0131 filtrelerken, <code>HAVING<\/code> yan t\u00fcmcesi <code>GROUP BY<\/code> ile olu\u015fturulan gruplar\u0131 filtrelemek i\u00e7in kullan\u0131l\u0131r. <code>HAVING<\/code>, toplama fonksiyonlar\u0131n\u0131n sonu\u00e7lar\u0131na ko\u015ful uygulaman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- En az 2 \u00fcr\u00fcn\u00fc olan kategorileri listele\nSELECT kategori, COUNT(*) AS urun_sayisi\nFROM urunler\nGROUP BY kategori\nHAVING COUNT(*) >= 2;\n\n-- Toplam sipari\u015f tutar\u0131 1000'den fazla olan m\u00fc\u015fterileri ve harcamalar\u0131n\u0131 listele\nSELECT musteri_id, SUM(toplam_tutar) AS toplam_harcama\nFROM siparisler\nGROUP BY musteri_id\nHAVING SUM(toplam_tutar) > 1000;\n\n-- Ortalama fiyat\u0131 75'ten y\u00fcksek olan kategorileri, \u00fcr\u00fcn say\u0131s\u0131yla birlikte listele\nSELECT kategori, COUNT(*) AS urun_sayisi, AVG(fiyat) AS ortalama_fiyat\nFROM urunler\nGROUP BY kategori\nHAVING AVG(fiyat) > 75;<\/code><\/pre>\n<h3>Tablolar\u0131 Birle\u015ftirme (JOIN)<\/h3>\n<p>Veritabanlar\u0131 genellikle bilgiyi birden fazla tabloda saklar. Bu tablolar aras\u0131ndaki ili\u015fkileri kullanarak verileri birle\u015ftirmek i\u00e7in <code>JOIN<\/code> i\u015flemleri kullan\u0131l\u0131r.<\/p>\n<h4>INNER JOIN<\/h4>\n<p>Her iki tabloda da e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fmeyen sat\u0131rlar sonu\u00e7ta yer almaz.<\/p>\n<pre><code class=\"language-sql\">-- M\u00fc\u015fterilerin sipari\u015flerini listele\nSELECT m.ad, m.soyad, s.siparis_id, s.siparis_tarihi, s.toplam_tutar\nFROM musteriler AS m\nINNER JOIN siparisler AS s ON m.musteri_id = s.musteri_id;<\/code><\/pre>\n<h4>LEFT JOIN (LEFT OUTER JOIN)<\/h4>\n<p>Sol tablodaki t\u00fcm sat\u0131rlar\u0131 ve sa\u011f tablodaki e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Sa\u011f tabloda e\u015fle\u015fme yoksa, sa\u011f tablonun s\u00fctunlar\u0131 i\u00e7in <code>NULL<\/code> de\u011ferleri d\u00f6nd\u00fcr\u00fcl\u00fcr.<\/p>\n<pre><code class=\"language-sql\">-- T\u00fcm m\u00fc\u015fterileri ve varsa sipari\u015flerini listele (sipari\u015fi olmayanlar da dahil)\nSELECT m.ad, m.soyad, s.siparis_id, s.siparis_tarihi\nFROM musteriler AS m\nLEFT JOIN siparisler AS s ON m.musteri_id = s.musteri_id;\n\n-- Hi\u00e7 sipari\u015f vermemi\u015f m\u00fc\u015fterileri bul\nSELECT m.ad, m.soyad\nFROM musteriler AS m\nLEFT JOIN siparisler AS s ON m.musteri_id = s.musteri_id\nWHERE s.siparis_id IS NULL;<\/code><\/pre>\n<h4>RIGHT JOIN (RIGHT OUTER JOIN)<\/h4>\n<p>Sa\u011f tablodaki t\u00fcm sat\u0131rlar\u0131 ve sol tablodaki e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Sol tabloda e\u015fle\u015fme yoksa, sol tablonun s\u00fctunlar\u0131 i\u00e7in <code>NULL<\/code> de\u011ferleri d\u00f6nd\u00fcr\u00fcl\u00fcr. (Genellikle LEFT JOIN ile ayn\u0131 sonucu elde etmek i\u00e7in tablolar\u0131n yerini de\u011fi\u015ftirmek daha yayg\u0131nd\u0131r.)<\/p>\n<pre><code class=\"language-sql\">-- T\u00fcm sipari\u015fleri ve varsa sipari\u015fi veren m\u00fc\u015fterileri listele\nSELECT m.ad, m.soyad, s.siparis_id, s.siparis_tarihi\nFROM musteriler AS m\nRIGHT JOIN siparisler AS s ON m.musteri_id = s.musteri_id;<\/code><\/pre>\n<h4>FULL OUTER JOIN<\/h4>\n<p>Her iki tablodaki t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fme olmayan yerlerde <code>NULL<\/code> de\u011ferler yer al\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- T\u00fcm m\u00fc\u015fterileri ve t\u00fcm sipari\u015fleri, e\u015fle\u015fen veya e\u015fle\u015fmeyen t\u00fcm durumlar\u0131 g\u00f6ster\nSELECT m.ad, m.soyad, s.siparis_id, s.siparis_tarihi\nFROM musteriler AS m\nFULL OUTER JOIN siparisler AS s ON m.musteri_id = s.musteri_id;<\/code><\/pre>\n<h4>CROSS JOIN<\/h4>\n<p>\u0130ki tablodaki t\u00fcm sat\u0131rlar\u0131n kartezyen \u00e7arp\u0131m\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. Yani, ilk tablodaki her sat\u0131r i\u00e7in ikinci tablodaki her sat\u0131rla bir kombinasyon olu\u015fturur. Genellikle dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Her \u00fcr\u00fcnle her kategorinin olas\u0131 kombinasyonlar\u0131n\u0131 g\u00f6ster (pratik kullan\u0131m alanlar\u0131 k\u0131s\u0131tl\u0131d\u0131r)\nSELECT u.urun_adi, u.kategori, k.kategori_adi\nFROM urunler AS u\nCROSS JOIN kategoriler AS k; -- kategoriler tablosu oldu\u011funu varsayal\u0131m<\/code><\/pre>\n<h4>Self-Join<\/h4>\n<p>Bir tablonun kendisiyle birle\u015ftirilmesidir. Genellikle ayn\u0131 tablo i\u00e7indeki hiyerar\u015fik veya ili\u015fkili verileri sorgulamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Ayn\u0131 \u015fehirde ya\u015fayan m\u00fc\u015fteri \u00e7iftlerini bul\nSELECT m1.ad AS musteri1_ad, m1.soyad AS musteri1_soyad,\n       m2.ad AS musteri2_ad, m2.soyad AS musteri2_soyad,\n       m1.sehir\nFROM musteriler AS m1\nINNER JOIN musteriler AS m2 ON m1.sehir = m2.sehir AND m1.musteri_id != m2.musteri_id;<\/code><\/pre>\n<h3>Alt Sorgular (Nested Queries)<\/h3>\n<p>Alt sorgu (subquery veya nested query), ba\u015fka bir SQL sorgusunun i\u00e7ine g\u00f6m\u00fcl\u00fc bir sorgudur. Alt sorgular, ana sorgunun bir par\u00e7as\u0131 olarak \u00e7al\u0131\u015f\u0131r ve ana sorguya veri sa\u011flar.<\/p>\n<h4>WHERE Yan T\u00fcmcesinde Alt Sorgular<\/h4>\n<p>En yayg\u0131n kullan\u0131m alanlar\u0131ndan biridir. Bir ko\u015fulun de\u011ferini veya de\u011fer listesini dinamik olarak belirlemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Ortalama fiyattan daha pahal\u0131 olan \u00fcr\u00fcnleri bul\nSELECT urun_adi, fiyat\nFROM urunler\nWHERE fiyat > (SELECT AVG(fiyat) FROM urunler);\n\n-- Hi\u00e7 sipari\u015f vermemi\u015f m\u00fc\u015fterileri bul (IN ile)\nSELECT ad, soyad\nFROM musteriler\nWHERE musteri_id NOT IN (SELECT DISTINCT musteri_id FROM siparisler);\n\n-- Belirli bir kategorideki en pahal\u0131 \u00fcr\u00fcn\u00fc bul\nSELECT urun_adi, fiyat, kategori\nFROM urunler\nWHERE (kategori, fiyat) IN (SELECT kategori, MAX(fiyat) FROM urunler GROUP BY kategori);<\/code><\/pre>\n<h4>SELECT Yan T\u00fcmcesinde Alt Sorgular (Scalar Subqueries)<\/h4>\n<p><code>SELECT<\/code> listesinde tek bir de\u011fer d\u00f6nd\u00fcren alt sorgular kullan\u0131labilir.<\/p>\n<pre><code class=\"language-sql\">-- Her \u00fcr\u00fcn i\u00e7in, o \u00fcr\u00fcn\u00fcn kategorisindeki ortalama fiyat\u0131 g\u00f6ster\nSELECT urun_adi, fiyat, kategori,\n       (SELECT AVG(fiyat) FROM urunler WHERE kategori = u.kategori) AS kategori_ortalama_fiyat\nFROM urunler AS u;<\/code><\/pre>\n<h4>FROM Yan T\u00fcmcesinde Alt Sorgular (Derived Tables)<\/h4>\n<p>Bir alt sorgunun sonucunu ge\u00e7ici bir tablo olarak kullanmak i\u00e7in <code>FROM<\/code> yan t\u00fcmcesinde alt sorgu kullan\u0131l\u0131r. Bu ge\u00e7ici tabloya bir takma ad verilmelidir.<\/p>\n<pre><code class=\"language-sql\">-- En \u00e7ok sipari\u015f veren ilk 3 m\u00fc\u015fteriyi bul\nSELECT t.ad, t.soyad, t.toplam_siparis\nFROM (\n    SELECT m.ad, m.soyad, COUNT(s.siparis_id) AS toplam_siparis\n    FROM musteriler AS m\n    INNER JOIN siparisler AS s ON m.musteri_id = s.musteri_id\n    GROUP BY m.ad, m.soyad\n    ORDER BY toplam_siparis DESC\n    LIMIT 3\n) AS t;<\/code><\/pre>\n<h3>Sonu\u00e7 K\u00fcmelerini Birle\u015ftirme (Set Operat\u00f6rleri)<\/h3>\n<p>Birden fazla <code>SELECT<\/code> sorgusunun sonu\u00e7lar\u0131n\u0131 tek bir sonu\u00e7 k\u00fcmesinde birle\u015ftirmek i\u00e7in set operat\u00f6rleri kullan\u0131l\u0131r. Bu operat\u00f6rleri kullan\u0131rken, birle\u015ftirilen sorgular\u0131n ayn\u0131 say\u0131da s\u00fctuna ve uyumlu veri tiplerine sahip olmas\u0131 gerekir.<\/p>\n<h4>UNION<\/h4>\n<p>\u0130ki veya daha fazla sorgunun sonu\u00e7lar\u0131n\u0131 birle\u015ftirir ve yinelenen sat\u0131rlar\u0131 kald\u0131r\u0131r.<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 100'den y\u00fcksek \u00fcr\u00fcn adlar\u0131 ile stok miktar\u0131 50'den az olan \u00fcr\u00fcn adlar\u0131n\u0131 birle\u015ftir\nSELECT urun_adi FROM urunler WHERE fiyat > 100\nUNION\nSELECT urun_adi FROM urunler WHERE stok_miktari < 50;<\/code><\/pre>\n<h4>UNION ALL<\/h4>\n<p>\u0130ki veya daha fazla sorgunun sonu\u00e7lar\u0131n\u0131 birle\u015ftirir ve yinelenen sat\u0131rlar\u0131 korur.<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 100'den y\u00fcksek \u00fcr\u00fcn adlar\u0131 ile stok miktar\u0131 50'den az olan \u00fcr\u00fcn adlar\u0131n\u0131 yinelenenlerle birlikte birle\u015ftir\nSELECT urun_adi FROM urunler WHERE fiyat > 100\nUNION ALL\nSELECT urun_adi FROM urunler WHERE stok_miktari < 50;<\/code><\/pre>\n<h4>INTERSECT<\/h4>\n<p>\u0130ki sorgunun ortak olan sat\u0131rlar\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-sql\">-- Hem fiyat\u0131 100'den y\u00fcksek hem de stok miktar\u0131 50'den az olan \u00fcr\u00fcn adlar\u0131n\u0131 bul\nSELECT urun_adi FROM urunler WHERE fiyat > 100\nINTERSECT\nSELECT urun_adi FROM urunler WHERE stok_miktari < 50;<\/code><\/pre>\n<h4>EXCEPT<\/h4>\n<p>\u0130lk sorgunun sonu\u00e7lar\u0131nda olup, ikinci sorgunun sonu\u00e7lar\u0131nda olmayan sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-sql\">-- Fiyat\u0131 100'den y\u00fcksek olan ancak stok miktar\u0131 50'den az olmayan \u00fcr\u00fcn adlar\u0131n\u0131 bul\nSELECT urun_adi FROM urunler WHERE fiyat > 100\nEXCEPT\nSELECT urun_adi FROM urunler WHERE stok_miktari < 50;<\/code><\/pre>\n<h3>Geli\u015fmi\u015f SELECT \u00d6zellikleri<\/h3>\n<p>PostgreSQL, <code>SELECT<\/code> komutunun g\u00fcc\u00fcn\u00fc art\u0131ran bir\u00e7ok geli\u015fmi\u015f \u00f6zellik sunar.<\/p>\n<h4>Pencere Fonksiyonlar\u0131 (Window Functions)<\/h4>\n<p>Pencere fonksiyonlar\u0131, mevcut sat\u0131rla ili\u015fkili bir dizi tablo sat\u0131r\u0131 \u00fczerinde hesaplama yapar. <code>GROUP BY<\/code> gibi sat\u0131rlar\u0131 tek bir \u00e7\u0131kt\u0131 sat\u0131r\u0131nda daraltmazlar, bunun yerine her sat\u0131r i\u00e7in bir sonu\u00e7 d\u00f6nd\u00fcr\u00fcrler.<\/p>\n<pre><code class=\"language-sql\">-- Her \u00fcr\u00fcn\u00fcn kendi kategorisindeki s\u0131ralamas\u0131n\u0131 fiyata g\u00f6re bul\nSELECT urun_adi, kategori, fiyat,\n       ROW_NUMBER() OVER (PARTITION BY kategori ORDER BY fiyat DESC) AS kategori_sira\nFROM urunler;\n\n-- Her \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131, bir \u00f6nceki \u00fcr\u00fcn\u00fcn fiyat\u0131yla kar\u015f\u0131la\u015ft\u0131r\nSELECT urun_adi, fiyat,\n       LAG(fiyat, 1, 0) OVER (PARTITION BY kategori ORDER BY fiyat) AS onceki_fiyat\nFROM urunler;<\/code><\/pre>\n<p><code>OVER<\/code> yan t\u00fcmcesi, pencereyi (yani fonksiyonun \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 sat\u0131r k\u00fcmesini) tan\u0131mlar. <code>PARTITION BY<\/code> pencereyi gruplara ay\u0131r\u0131r, <code>ORDER BY<\/code> ise bu pencere i\u00e7indeki s\u0131ralamay\u0131 belirler.<\/p>\n<h4>Ortak Tablo \u0130fadeleri (Common Table Expressions - CTEs)<\/h4>\n<p>CTE'ler, <code>WITH<\/code> anahtar kelimesiyle tan\u0131mlanan adland\u0131r\u0131lm\u0131\u015f ge\u00e7ici sonu\u00e7 k\u00fcmeleridir. Karma\u015f\u0131k sorgular\u0131 daha k\u00fc\u00e7\u00fck, daha okunabilir par\u00e7alara ay\u0131rmak i\u00e7in kullan\u0131l\u0131rlar.<\/p>\n<pre><code class=\"language-sql\">-- En \u00e7ok sipari\u015f veren m\u00fc\u015fterileri CTE kullanarak bul\nWITH MusteriSiparisSayilari AS (\n    SELECT musteri_id, COUNT(siparis_id) AS siparis_sayisi\n    FROM siparisler\n    GROUP BY musteri_id\n)\nSELECT m.ad, m.soyad, mss.siparis_sayisi\nFROM musteriler AS m\nINNER JOIN MusteriSiparisSayilari AS mss ON m.musteri_id = mss.musteri_id\nORDER BY mss.siparis_sayisi DESC\nLIMIT 5;<\/code><\/pre>\n<p>CTE'ler, \u00f6zellikle karma\u015f\u0131k hesaplamalar veya \u00e7oklu alt sorgular\u0131n oldu\u011fu durumlarda sorgunun okunabilirli\u011fini ve y\u00f6netilebilirli\u011fini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Ayr\u0131ca, kendini referans alabilen (recursive) CTE'ler ile hiyerar\u015fik verileri sorgulamak da m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h3>Verimli Sorgular Yazmak \u0130\u00e7in En \u0130yi Uygulamalar<\/h3>\n<p><code>SELECT<\/code> komutunu do\u011fru kullanmak, sadece do\u011fru sonu\u00e7lar\u0131 almak de\u011fil, ayn\u0131 zamanda bu sonu\u00e7lar\u0131 verimli bir \u015fekilde almakt\u0131r.<\/p>\n<p><em>   <strong>Yaln\u0131zca \u0130htiya\u00e7 Duyulan S\u00fctunlar\u0131 Se\u00e7in (<code>SELECT <\/em><\/code>'tan ka\u00e7\u0131n\u0131n):<\/strong> \u00d6zellikle b\u00fcy\u00fck tablolarda, gereksiz s\u00fctunlar\u0131 se\u00e7mek a\u011f trafi\u011fini ve bellek kullan\u0131m\u0131n\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>Uygun \u0130ndeksler Kullan\u0131n:<\/strong> <code>WHERE<\/code>, <code>JOIN<\/code>, <code>ORDER BY<\/code> ve <code>GROUP BY<\/code> yan t\u00fcmcelerinde kullan\u0131lan s\u00fctunlara indeks eklemek sorgu performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<br \/>\n*   <strong><code>EXPLAIN ANALYZE<\/code> Kullan\u0131n:<\/strong> Sorgular\u0131n\u0131z\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, hangi ad\u0131mlar\u0131n ne kadar zaman ald\u0131\u011f\u0131n\u0131 anlamak i\u00e7in <code>EXPLAIN ANALYZE<\/code> komutunu kullan\u0131n. Bu, performans darbo\u011fazlar\u0131n\u0131 tespit etmenin en iyi yoludur.<br \/>\n*   <strong><code>LIKE<\/code> ile \u00d6nde Gelen Joker Karakterlerden Ka\u00e7\u0131n\u0131n:<\/strong> <code>LIKE '%kelime'<\/code> gibi sorgular indeksleri kullanamaz ve tam tablo taramas\u0131na neden olabilir. M\u00fcmk\u00fcnse <code>LIKE 'kelime%'<\/code> kullan\u0131n veya tam metin arama \u00e7\u00f6z\u00fcmlerini de\u011ferlendirin.<br \/>\n*   <strong>Veri Tiplerini Do\u011fru Kullan\u0131n:<\/strong> Kar\u015f\u0131la\u015ft\u0131rma yaparken veya birle\u015ftirme yaparken veri tiplerinin uyumlu oldu\u011fundan emin olun. Gereksiz tip d\u00f6n\u00fc\u015f\u00fcmleri performans\u0131 d\u00fc\u015f\u00fcrebilir.<br \/>\n*   <strong>Karma\u015f\u0131k Sorgularda CTE'leri Kullan\u0131n:<\/strong> CTE'ler, sorgular\u0131 daha mod\u00fcler ve okunabilir hale getirerek hata ay\u0131klamay\u0131 ve bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>K\u00fc\u00e7\u00fck Veri K\u00fcmeleriyle Test Edin:<\/strong> Geli\u015ftirme a\u015famas\u0131nda b\u00fcy\u00fck veri k\u00fcmeleri yerine daha k\u00fc\u00e7\u00fck, temsili veri k\u00fcmeleriyle \u00e7al\u0131\u015fmak daha h\u0131zl\u0131 geri bildirim sa\u011flar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>PostgreSQL'de <code>SELECT<\/code> komutu, veritaban\u0131 y\u00f6netiminin temel ta\u015f\u0131d\u0131r ve verilerden anlaml\u0131 bilgiler \u00e7\u0131karman\u0131n anahtar\u0131n\u0131 sunar. Temel veri \u00e7ekme i\u015flemlerinden ba\u015flayarak, <code>WHERE<\/code> ile filtreleme, <code>ORDER BY<\/code> ile s\u0131ralama, <code>GROUP BY<\/code> ve toplama fonksiyonlar\u0131 ile \u00f6zetleme, <code>JOIN<\/code> ile tablolar\u0131 birle\u015ftirme ve alt sorgular ile karma\u015f\u0131k mant\u0131k olu\u015fturma gibi bir\u00e7ok yetene\u011fi bar\u0131nd\u0131r\u0131r. Ayr\u0131ca, pencere fonksiyonlar\u0131 ve CTE'ler gibi geli\u015fmi\u015f \u00f6zellikler, daha karma\u015f\u0131k analitik ve raporlama ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lar sa\u011flar.<\/p>\n<p>Bu makalede ele al\u0131nan konular, PostgreSQL'de veri sorgulama yeteneklerinizi geli\u015ftirmek i\u00e7in sa\u011flam bir temel olu\u015fturmaktad\u0131r. Etkili ve verimli sorgular yazmak, pratik ve deneyim gerektirir. Bu nedenle, \u00f6\u011frendi\u011finiz bu komutlar\u0131 kendi veritabanlar\u0131n\u0131zda denemekten \u00e7ekinmeyin. SQL'in sundu\u011fu sonsuz olas\u0131l\u0131klar\u0131 ke\u015ffetmeye devam edin ve verilerinizden en iyi \u015fekilde yararlan\u0131n.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma\nPostgreSQL, d\u00fcnyan\u0131n en geli\u015fmi\u015f a\u00e7\u0131k kaynakl\u0131 ili\u015fkisel veritaban\u0131 y\u00f6n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[644],"tags":[],"class_list":{"0":"post-32803","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-postgresql","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL&#039;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL&#039;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL&#039;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma PostgreSQL, d\u00fcnyan\u0131n en geli\u015fmi\u015f a\u00e7\u0131k kaynakl\u0131 ili\u015fkisel veritaban\u0131 y\u00f6n\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-26T01:40:47+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma\",\"datePublished\":\"2025-10-26T01:40:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\"},\"wordCount\":2130,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\",\"name\":\"PostgreSQL'de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-26T01:40:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL'de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL'de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma","og_description":"PostgreSQL'de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma PostgreSQL, d\u00fcnyan\u0131n en geli\u015fmi\u015f a\u00e7\u0131k kaynakl\u0131 ili\u015fkisel veritaban\u0131 y\u00f6n","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-26T01:40:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma","datePublished":"2025-10-26T01:40:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/"},"wordCount":2130,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PostgreSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/","name":"PostgreSQL'de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-26T01:40:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-select-komutunu-kullanarak-veri-sorgulari-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL&#8217;de SELECT Komutunu Kullanarak Veri Sorgular\u0131 Olu\u015fturma"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32803"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32803\/revisions"}],"predecessor-version":[{"id":32804,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32803\/revisions\/32804"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}