{"id":31742,"date":"2025-10-13T12:40:55","date_gmt":"2025-10-13T09:40:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31742"},"modified":"2025-10-13T12:40:55","modified_gmt":"2025-10-13T09:40:55","slug":"postgresqlde-sorgulara-giris","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/","title":{"rendered":"PostgreSQL&#8217;de Sorgulara Giri\u015f"},"content":{"rendered":"<p><body><\/p>\n<h2>PostgreSQL&#8217;de Sorgulara Giri\u015f<\/h2>\n<p>\u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemleri (RDBMS), modern yaz\u0131l\u0131m uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturur. Bu sistemler aras\u0131nda PostgreSQL, a\u00e7\u0131k kaynakl\u0131, g\u00fc\u00e7l\u00fc, esnek ve y\u00fcksek performansl\u0131 yap\u0131s\u0131yla \u00f6ne \u00e7\u0131kmaktad\u0131r. PostgreSQL&#8217;in g\u00fcc\u00fcn\u00fc tam olarak kullanabilmek i\u00e7in, veri taban\u0131nda depolanan bilgilere eri\u015fmek, bunlar\u0131 manip\u00fcle etmek ve y\u00f6netmek amac\u0131yla kullan\u0131lan sorgular\u0131 anlamak hayati \u00f6neme sahiptir. Bu makale, PostgreSQL&#8217;de sorgular\u0131n temel prensiplerini, \u00e7e\u015fitli sorgu t\u00fcrlerini ve en yayg\u0131n kullan\u0131lan komutlar\u0131 detayl\u0131 bir \u015fekilde ele alarak, veri taban\u0131yla etkile\u015fim kurmak isteyen herkes i\u00e7in kapsaml\u0131 bir ba\u015flang\u0131\u00e7 rehberi sunmay\u0131 ama\u00e7lamaktad\u0131r.<\/p>\n<p>Veri taban\u0131 sorgular\u0131, Structured Query Language (SQL) ad\u0131 verilen standart bir dil arac\u0131l\u0131\u011f\u0131yla ifade edilir. SQL, veri taban\u0131ndan bilgi almak (SELECT), yeni veri eklemek (INSERT), mevcut veriyi g\u00fcncellemek (UPDATE) ve veriyi silmek (DELETE) gibi temel i\u015flemleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Ayr\u0131ca, veri taban\u0131 yap\u0131s\u0131n\u0131 tan\u0131mlamak (CREATE TABLE, ALTER TABLE) ve y\u00f6netmek i\u00e7in de kullan\u0131l\u0131r. PostgreSQL, SQL standartlar\u0131na b\u00fcy\u00fck \u00f6l\u00e7\u00fcde uyum sa\u011flamakla birlikte, kendine \u00f6zg\u00fc baz\u0131 ek \u00f6zellikler ve fonksiyonlar da sunar.<\/p>\n<p>Bu rehberde, basit veri \u00e7ekme i\u015flemlerinden ba\u015flayarak, filtreleme, s\u0131ralama, gruplama ve farkl\u0131 tablolar\u0131 birle\u015ftirme gibi daha karma\u015f\u0131k sorgu tekniklerine kadar ad\u0131m ad\u0131m ilerleyece\u011fiz. Her bir b\u00f6l\u00fcm, ilgili SQL komutunun s\u00f6zdizimini, kullan\u0131m amac\u0131n\u0131 ve pratik \u00f6rneklerle peki\u015ftirilmi\u015f a\u00e7\u0131klamalar\u0131n\u0131 i\u00e7erecektir. Amac\u0131m\u0131z, okuyucular\u0131n PostgreSQL veri tabanlar\u0131nda etkili ve verimli sorgular yazma becerilerini geli\u015ftirmelerine yard\u0131mc\u0131 olmakt\u0131r.<\/p>\n<h2>Veri Taban\u0131 ve Tablo Yap\u0131s\u0131 Hakk\u0131nda K\u0131sa Bir Bilgi<\/h2>\n<p>Bir sorgunun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamadan \u00f6nce, veri taban\u0131 ve tablo kavramlar\u0131na k\u0131saca de\u011finmek faydal\u0131 olacakt\u0131r. Bir veri taban\u0131, birbiriyle ili\u015fkili veri koleksiyonudur. Bu veriler, tablolarda d\u00fczenli bir \u015fekilde saklan\u0131r. Her tablo, belirli bir konu hakk\u0131ndaki verileri i\u00e7erir ve s\u00fctunlar (kolonlar) ile sat\u0131rlardan (kay\u0131tlar\/tuple&#8217;lar) olu\u015fur.<\/p>\n<ul>\n<li><b>S\u00fctunlar:<\/b> Bir tablodaki her s\u00fctun, belirli bir veri t\u00fcr\u00fcn\u00fc (\u00f6rne\u011fin, metin, say\u0131, tarih) temsil eder ve bir \u00f6zelli\u011fe (\u00f6rne\u011fin, &#8216;ad&#8217;, &#8216;soyad&#8217;, &#8216;ya\u015f&#8217;) kar\u015f\u0131l\u0131k gelir.<\/li>\n<li><b>Sat\u0131rlar:<\/b> Her sat\u0131r, bir varl\u0131\u011f\u0131n veya \u00f6\u011fenin t\u00fcm \u00f6zelliklerini i\u00e7eren tek bir kay\u0131t\u0131 temsil eder.<\/li>\n<\/ul>\n<p>\u00d6rnek olarak, bir &#8216;\u00c7al\u0131\u015fanlar&#8217; tablosunu d\u00fc\u015f\u00fcnelim. Bu tablo, &#8216;id&#8217;, &#8216;ad&#8217;, &#8216;soyad&#8217;, &#8216;pozisyon&#8217;, &#8216;maa\u015f&#8217; gibi s\u00fctunlara sahip olabilir. Her bir sat\u0131r ise belirli bir \u00e7al\u0131\u015fan\u0131n bilgilerini i\u00e7erecektir.<\/p>\n<pre><code class=\"language-sql\">\nCREATE TABLE Calisanlar (\n    id SERIAL PRIMARY KEY,\n    ad VARCHAR(50) NOT NULL,\n    soyad VARCHAR(50) NOT NULL,\n    pozisyon VARCHAR(100),\n    maas DECIMAL(10, 2),\n    ise_giris_tarihi DATE\n);\n\nINSERT INTO Calisanlar (ad, soyad, pozisyon, maas, ise_giris_tarihi) VALUES\n('Ay\u015fe', 'Y\u0131lmaz', 'Yaz\u0131l\u0131m Geli\u015ftirici', 75000.00, '2020-01-15'),\n('Mehmet', 'Demir', 'Proje Y\u00f6neticisi', 90000.00, '2018-06-01'),\n('Zeynep', 'Kaya', 'Veri Analisti', 68000.00, '2021-03-10'),\n('Ali', 'Can', 'Yaz\u0131l\u0131m Geli\u015ftirici', 78000.00, '2019-09-20'),\n('Elif', 'Ak', '\u0130nsan Kaynaklar\u0131 Uzman\u0131', 60000.00, '2022-02-01');\n<\/code><\/pre>\n<p>Bu tablo ve \u00f6rnek veriler, sonraki sorgu \u00f6rneklerimiz i\u00e7in temel te\u015fkil edecektir.<\/p>\n<h2>Temel SELECT Sorgular\u0131<\/h2>\n<p><code>SELECT<\/code> ifadesi, SQL&#8217;in en s\u0131k kullan\u0131lan ve en temel komutudur. Veri taban\u0131ndan veri \u00e7ekmek i\u00e7in kullan\u0131l\u0131r. \u00c7ekmek istedi\u011finiz s\u00fctunlar\u0131, hangi tablodan \u00e7ekece\u011finizi ve belirli ko\u015fullara g\u00f6re nas\u0131l filtreleyece\u011finizi belirtmenize olanak tan\u0131r.<\/p>\n<h3>S\u00fctun Se\u00e7imi<\/h3>\n<p>Belirli s\u00fctunlar\u0131 se\u00e7mek i\u00e7in, <code>SELECT<\/code> anahtar kelimesinden sonra \u00e7ekmek istedi\u011finiz s\u00fctun adlar\u0131n\u0131 virg\u00fclle ay\u0131rarak listelersiniz.<\/p>\n<pre><code class=\"language-sql\">\nSELECT ad, soyad, pozisyon FROM Calisanlar;\n<\/code><\/pre>\n<p>Bu sorgu, &#8216;Calisanlar&#8217; tablosundan her \u00e7al\u0131\u015fan\u0131n sadece &#8216;ad&#8217;, &#8216;soyad&#8217; ve &#8216;pozisyon&#8217; bilgilerini d\u00f6nd\u00fcrecektir.<\/p>\n<h3>T\u00fcm S\u00fctunlar\u0131 Se\u00e7me<\/h3>\n<p>Bir tablodaki t\u00fcm s\u00fctunlar\u0131 se\u00e7mek isterseniz, s\u00fctun adlar\u0131 yerine y\u0131ld\u0131z (<code>*<\/code>) karakterini kullanabilirsiniz. Bu, genellikle h\u0131zl\u0131 bir kontrol veya t\u00fcm veriye ihtiyac\u0131n\u0131z oldu\u011funda kullan\u0131\u015fl\u0131d\u0131r, ancak performans a\u00e7\u0131s\u0131ndan gereksiz s\u00fctunlar\u0131 \u00e7ekmekten ka\u00e7\u0131nmak genellikle daha iyi bir uygulamad\u0131r.<\/p>\n<pre><code class=\"language-sql\">\nSELECT * FROM Calisanlar;\n<\/code><\/pre>\n<p>Bu sorgu, &#8216;Calisanlar&#8217; tablosundaki t\u00fcm s\u00fctunlar\u0131 ve t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcrecektir.<\/p>\n<h3>Benzersiz De\u011ferler (DISTINCT)<\/h3>\n<p>Bazen bir s\u00fctundaki benzersiz de\u011ferleri g\u00f6rmek isteyebilirsiniz. \u00d6rne\u011fin, hangi pozisyonlar\u0131n mevcut oldu\u011funu \u00f6\u011frenmek i\u00e7in <code>DISTINCT<\/code> anahtar kelimesini kullanabilirsiniz.<\/p>\n<pre><code class=\"language-sql\">\nSELECT DISTINCT pozisyon FROM Calisanlar;\n<\/code><\/pre>\n<p>Bu sorgu, &#8216;Calisanlar&#8217; tablosundaki t\u00fcm farkl\u0131 pozisyonlar\u0131 listeleyecektir, tekrar edenleri g\u00f6stermeyecektir.<\/p>\n<h3>K\u0131s\u0131tl\u0131 Veri Se\u00e7imi (WHERE Clause)<\/h3>\n<p>Bir tablodaki t\u00fcm veriler yerine, belirli ko\u015fullar\u0131 sa\u011flayan sat\u0131rlar\u0131 se\u00e7mek i\u00e7in <code>WHERE<\/code> anahtar kelimesini kullan\u0131r\u0131z. Bu, sorgular\u0131n\u0131z\u0131n g\u00fcc\u00fcn\u00fc ve esnekli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran temel bir \u00f6zelliktir.<\/p>\n<h4>Kar\u015f\u0131la\u015ft\u0131rma Operat\u00f6rleri<\/h4>\n<p><code>WHERE<\/code> ko\u015fullar\u0131nda yayg\u0131n olarak kullan\u0131lan kar\u015f\u0131la\u015ft\u0131rma operat\u00f6rleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>=<\/code> (E\u015fittir)<\/li>\n<li><code>!=<\/code> veya <code><><\/code> (E\u015fit De\u011fildir)<\/li>\n<li><code><<\/code> (K\u00fc\u00e7\u00fckt\u00fcr)<\/li>\n<li><code>><\/code> (B\u00fcy\u00fckt\u00fcr)<\/li>\n<li><code><=<\/code> (K\u00fc\u00e7\u00fck veya E\u015fittir)<\/li>\n<li><code>>=<\/code> (B\u00fcy\u00fck veya E\u015fittir)<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Pozisyonu 'Yaz\u0131l\u0131m Geli\u015ftirici' olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad FROM Calisanlar WHERE pozisyon = 'Yaz\u0131l\u0131m Geli\u015ftirici';\n\n-- Maa\u015f\u0131 70000'den y\u00fcksek olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, maas FROM Calisanlar WHERE maas > 70000.00;\n<\/code><\/pre>\n<h4>Mant\u0131ksal Operat\u00f6rler<\/h4>\n<p>Birden fazla ko\u015fulu birle\u015ftirmek i\u00e7in mant\u0131ksal operat\u00f6rler kullan\u0131l\u0131r:<\/p>\n<ul>\n<li><code>AND<\/code>: Her iki ko\u015ful da do\u011fruysa.<\/li>\n<li><code>OR<\/code>: Ko\u015fullardan en az biri do\u011fruysa.<\/li>\n<li><code>NOT<\/code>: Ko\u015ful yanl\u0131\u015fsa.<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Pozisyonu 'Yaz\u0131l\u0131m Geli\u015ftirici' olan VE maa\u015f\u0131 75000'den y\u00fcksek olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, pozisyon, maas FROM Calisanlar WHERE pozisyon = 'Yaz\u0131l\u0131m Geli\u015ftirici' AND maas > 75000.00;\n\n-- Pozisyonu 'Proje Y\u00f6neticisi' VEYA 'Veri Analisti' olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, pozisyon FROM Calisanlar WHERE pozisyon = 'Proje Y\u00f6neticisi' OR pozisyon = 'Veri Analisti';\n\n-- Pozisyonu 'Yaz\u0131l\u0131m Geli\u015ftirici' OLMAYAN \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, pozisyon FROM Calisanlar WHERE NOT pozisyon = 'Yaz\u0131l\u0131m Geli\u015ftirici';\n<\/code><\/pre>\n<h4>\u00d6zel Operat\u00f6rler<\/h4>\n<p>Baz\u0131 \u00f6zel durumlar i\u00e7in tasarlanm\u0131\u015f operat\u00f6rler de mevcuttur:<\/p>\n<ul>\n<li><code>IN<\/code>: Bir de\u011fer listesi i\u00e7inde olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/li>\n<li><code>BETWEEN<\/code>: Bir de\u011fer aral\u0131\u011f\u0131 i\u00e7inde olup olmad\u0131\u011f\u0131n\u0131 kontrol eder (dahil).<\/li>\n<li><code>LIKE<\/code>: Belirli bir desene uyan metin de\u011ferlerini arar (<code>%<\/code> s\u0131f\u0131r veya daha fazla karakteri, <code>_<\/code> tek bir karakteri temsil eder).<\/li>\n<li><code>IS NULL<\/code> \/ <code>IS NOT NULL<\/code>: Bir s\u00fctunun de\u011feri NULL olup olmad\u0131\u011f\u0131n\u0131 kontrol eder.<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Pozisyonu 'Yaz\u0131l\u0131m Geli\u015ftirici' veya 'Proje Y\u00f6neticisi' olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, pozisyon FROM Calisanlar WHERE pozisyon IN ('Yaz\u0131l\u0131m Geli\u015ftirici', 'Proje Y\u00f6neticisi');\n\n-- Maa\u015f\u0131 65000 ile 80000 aras\u0131nda olan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad, maas FROM Calisanlar WHERE maas BETWEEN 65000.00 AND 80000.00;\n\n-- Ad\u0131 'A' ile ba\u015flayan \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT ad, soyad FROM Calisanlar WHERE ad LIKE 'A%';\n\n-- Pozisyonu NULL olan \u00e7al\u0131\u015fanlar\u0131 getir (\u00f6rnek tablomuzda yok ama mant\u0131\u011f\u0131 g\u00f6sterir)\n-- SELECT ad, soyad FROM Calisanlar WHERE pozisyon IS NULL;\n<\/code><\/pre>\n<h2>Verileri S\u0131ralama (ORDER BY)<\/h2>\n<p>Sorgu sonu\u00e7lar\u0131n\u0131 belirli bir s\u0131raya g\u00f6re d\u00fczenlemek i\u00e7in <code>ORDER BY<\/code> anahtar kelimesini kullan\u0131r\u0131z. Bu, verilerinizi daha anlaml\u0131 bir \u015fekilde sunman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h3>Artan\/Azalan S\u0131ralama (ASC\/DESC)<\/h3>\n<p>Varsay\u0131lan olarak, <code>ORDER BY<\/code> artan s\u0131rada (alfabetik veya say\u0131sal olarak k\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe) s\u0131ralar (<code>ASC<\/code>). Azalan s\u0131rada s\u0131ralamak i\u00e7in <code>DESC<\/code> anahtar kelimesini kullanmal\u0131s\u0131n\u0131z.<\/p>\n<pre><code class=\"language-sql\">\n-- \u00c7al\u0131\u015fanlar\u0131 maa\u015flar\u0131na g\u00f6re artan s\u0131rada s\u0131rala\nSELECT ad, soyad, maas FROM Calisanlar ORDER BY maas ASC;\n\n-- \u00c7al\u0131\u015fanlar\u0131 maa\u015flar\u0131na g\u00f6re azalan s\u0131rada s\u0131rala\nSELECT ad, soyad, maas FROM Calisanlar ORDER BY maas DESC;\n\n-- \u00c7al\u0131\u015fanlar\u0131 soyad\u0131na g\u00f6re alfabetik olarak s\u0131rala\nSELECT ad, soyad FROM Calisanlar ORDER BY soyad; -- ASC varsay\u0131land\u0131r\n<\/code><\/pre>\n<h3>Birden Fazla S\u00fctuna G\u00f6re S\u0131ralama<\/h3>\n<p>Birden fazla s\u00fctuna g\u00f6re s\u0131ralama yapabilirsiniz. Bu durumda, ilk s\u00fctuna g\u00f6re s\u0131ralama yap\u0131l\u0131r, e\u011fer ayn\u0131 de\u011ferlere sahip sat\u0131rlar varsa, ikinci s\u00fctuna g\u00f6re s\u0131ralama yap\u0131l\u0131r ve bu b\u00f6yle devam eder.<\/p>\n<pre><code class=\"language-sql\">\n-- \u00c7al\u0131\u015fanlar\u0131 pozisyona g\u00f6re artan, ard\u0131ndan maa\u015fa g\u00f6re azalan s\u0131rada s\u0131rala\nSELECT ad, soyad, pozisyon, maas FROM Calisanlar ORDER BY pozisyon ASC, maas DESC;\n<\/code><\/pre>\n<h2>Verileri Gruplama (GROUP BY)<\/h2>\n<p><code>GROUP BY<\/code> anahtar kelimesi, bir veya daha fazla s\u00fctunun de\u011ferlerine g\u00f6re sat\u0131rlar\u0131 gruplamak i\u00e7in kullan\u0131l\u0131r. Genellikle, gruplanm\u0131\u015f veriler \u00fczerinde toplama fonksiyonlar\u0131 (aggregate functions) ile birlikte kullan\u0131l\u0131r.<\/p>\n<h3>Aggregate Fonksiyonlar<\/h3>\n<p>Toplama fonksiyonlar\u0131, bir grup sat\u0131r \u00fczerinde hesaplama yaparak tek bir sonu\u00e7 de\u011feri d\u00f6nd\u00fcr\u00fcr. En yayg\u0131n kullan\u0131lanlar:<\/p>\n<ul>\n<li><code>COUNT()<\/code>: Bir gruptaki sat\u0131r say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>SUM()<\/code>: Bir s\u00fctundaki de\u011ferlerin toplam\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>AVG()<\/code>: Bir s\u00fctundaki de\u011ferlerin ortalamas\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>MIN()<\/code>: Bir s\u00fctundaki en k\u00fc\u00e7\u00fck de\u011feri d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>MAX()<\/code>: Bir s\u00fctundaki en b\u00fcy\u00fck de\u011feri d\u00f6nd\u00fcr\u00fcr.<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Her pozisyondaki \u00e7al\u0131\u015fan say\u0131s\u0131n\u0131 bul\nSELECT pozisyon, COUNT(*) AS CalisanSayisi FROM Calisanlar GROUP BY pozisyon;\n\n-- Her pozisyondaki ortalama maa\u015f\u0131 bul\nSELECT pozisyon, AVG(maas) AS OrtalamaMaas FROM Calisanlar GROUP BY pozisyon;\n\n-- Her pozisyondaki en y\u00fcksek ve en d\u00fc\u015f\u00fck maa\u015f\u0131 bul\nSELECT pozisyon, MAX(maas) AS EnYuksekMaas, MIN(maas) AS EnDusukMaas FROM Calisanlar GROUP BY pozisyon;\n<\/code><\/pre>\n<h3>Gruplanm\u0131\u015f Verileri Filtreleme (HAVING)<\/h3>\n<p><code>WHERE<\/code> anahtar kelimesi tek tek sat\u0131rlar\u0131 filtrelerken, <code>HAVING<\/code> anahtar kelimesi <code>GROUP BY<\/code> ile olu\u015fturulan gruplar\u0131 filtrelemek i\u00e7in kullan\u0131l\u0131r. <code>WHERE<\/code>, <code>GROUP BY<\/code>'dan \u00f6nce uygulan\u0131rken, <code>HAVING<\/code> <code>GROUP BY<\/code>'dan sonra uygulan\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- \u00c7al\u0131\u015fan say\u0131s\u0131 2'den fazla olan pozisyonlar\u0131 ve \u00e7al\u0131\u015fan say\u0131lar\u0131n\u0131 getir\nSELECT pozisyon, COUNT(*) AS CalisanSayisi\nFROM Calisanlar\nGROUP BY pozisyon\nHAVING COUNT(*) > 1;\n\n-- Ortalama maa\u015f\u0131 70000'den y\u00fcksek olan pozisyonlar\u0131 ve ortalama maa\u015flar\u0131n\u0131 getir\nSELECT pozisyon, AVG(maas) AS OrtalamaMaas\nFROM Calisanlar\nGROUP BY pozisyon\nHAVING AVG(maas) > 70000.00;\n<\/code><\/pre>\n<h2>Tablolar\u0131 Birle\u015ftirme (JOIN)<\/h2>\n<p>\u0130li\u015fkisel veri tabanlar\u0131n\u0131n en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, farkl\u0131 tablolardaki verileri birbiriyle ili\u015fkilendirerek birle\u015ftirebilme yetene\u011fidir. <code>JOIN<\/code> anahtar kelimesi, ortak bir s\u00fctun (veya s\u00fctunlar) arac\u0131l\u0131\u011f\u0131yla iki veya daha fazla tablodan sat\u0131rlar\u0131 birle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Bu, daha karma\u015f\u0131k ve anlaml\u0131 veri setleri olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<p>\u00d6rnek bir 'Departmanlar' tablosu olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-sql\">\nCREATE TABLE Departmanlar (\n    departman_id SERIAL PRIMARY KEY,\n    departman_adi VARCHAR(100) NOT NULL\n);\n\nINSERT INTO Departmanlar (departman_adi) VALUES\n('Yaz\u0131l\u0131m Geli\u015ftirme'),\n('Proje Y\u00f6netimi'),\n('Veri Analizi'),\n('\u0130nsan Kaynaklar\u0131');\n\n-- Calisanlar tablosuna departman_id s\u00fctunu ekleyelim ve g\u00fcncelleyelim\nALTER TABLE Calisanlar ADD COLUMN departman_id INT;\n\nUPDATE Calisanlar SET departman_id = 1 WHERE pozisyon = 'Yaz\u0131l\u0131m Geli\u015ftirici';\nUPDATE Calisanlar SET departman_id = 2 WHERE pozisyon = 'Proje Y\u00f6neticisi';\nUPDATE Calisanlar SET departman_id = 3 WHERE pozisyon = 'Veri Analisti';\nUPDATE Calisanlar SET departman_id = 4 WHERE pozisyon = '\u0130nsan Kaynaklar\u0131 Uzman\u0131';\n<\/code><\/pre>\n<h3>INNER JOIN<\/h3>\n<p><code>INNER JOIN<\/code>, her iki tabloda da e\u015fle\u015fen kay\u0131tlara sahip sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Yani, her iki tabloda da ortak de\u011fere sahip olmayan sat\u0131rlar sonu\u00e7 k\u00fcmesinde yer almaz.<\/p>\n<pre><code class=\"language-sql\">\n-- \u00c7al\u0131\u015fanlar\u0131 departman bilgileriyle birle\u015ftir\nSELECT C.ad, C.soyad, C.pozisyon, D.departman_adi\nFROM Calisanlar AS C\nINNER JOIN Departmanlar AS D ON C.departman_id = D.departman_id;\n<\/code><\/pre>\n<p>Burada <code>AS C<\/code> ve <code>AS D<\/code>, tablolar i\u00e7in takma adlar (alias) tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r, bu da sorguyu daha okunakl\u0131 hale getirir.<\/p>\n<h3>LEFT JOIN (LEFT OUTER JOIN)<\/h3>\n<p><code>LEFT JOIN<\/code>, 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 bulunamayan sol tablo sat\u0131rlar\u0131 i\u00e7in, sa\u011f tablonun s\u00fctunlar\u0131 <code>NULL<\/code> de\u011ferleri i\u00e7erecektir.<\/p>\n<pre><code class=\"language-sql\">\n-- T\u00fcm \u00e7al\u0131\u015fanlar\u0131 ve varsa departman bilgilerini getir\nSELECT C.ad, C.soyad, D.departman_adi\nFROM Calisanlar AS C\nLEFT JOIN Departmanlar AS D ON C.departman_id = D.departman_id;\n<\/code><\/pre>\n<h3>RIGHT JOIN (RIGHT OUTER JOIN)<\/h3>\n<p><code>RIGHT JOIN<\/code>, 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 bulunamayan sa\u011f tablo sat\u0131rlar\u0131 i\u00e7in, sol tablonun s\u00fctunlar\u0131 <code>NULL<\/code> de\u011ferleri i\u00e7erecektir.<\/p>\n<pre><code class=\"language-sql\">\n-- T\u00fcm departmanlar\u0131 ve varsa ilgili \u00e7al\u0131\u015fanlar\u0131 getir\nSELECT D.departman_adi, C.ad, C.soyad\nFROM Calisanlar AS C\nRIGHT JOIN Departmanlar AS D ON C.departman_id = D.departman_id;\n<\/code><\/pre>\n<h3>FULL JOIN (FULL OUTER JOIN)<\/h3>\n<p><code>FULL JOIN<\/code>, her iki tablodaki t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fme bulunamayan yerlerde <code>NULL<\/code> de\u011ferleri kullan\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- T\u00fcm \u00e7al\u0131\u015fanlar\u0131 ve t\u00fcm departmanlar\u0131 (e\u015fle\u015fen veya e\u015fle\u015fmeyen) getir\nSELECT C.ad, C.soyad, D.departman_adi\nFROM Calisanlar AS C\nFULL JOIN Departmanlar AS D ON C.departman_id = D.departman_id;\n<\/code><\/pre>\n<p>Bu join t\u00fcrleri, veri taban\u0131ndaki ili\u015fkisel verileri birle\u015ftirerek karma\u015f\u0131k raporlar ve analizler olu\u015fturmak i\u00e7in temel ara\u00e7lard\u0131r.<\/p>\n<h2>Veri Manip\u00fclasyon Dili (DML) Komutlar\u0131: INSERT, UPDATE, DELETE<\/h2>\n<p><code>SELECT<\/code> komutu verileri okumak i\u00e7in kullan\u0131l\u0131rken, DML komutlar\u0131 veri taban\u0131ndaki veriyi de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Veri Ekleme (INSERT)<\/h3>\n<p><code>INSERT INTO<\/code> komutu, bir tabloya yeni sat\u0131rlar eklemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>T\u00fcm S\u00fctunlara Ekleme<\/h4>\n<p>E\u011fer t\u00fcm s\u00fctunlara de\u011fer ekliyorsan\u0131z ve s\u0131ralama tablo tan\u0131m\u0131ndaki gibiyse, s\u00fctun adlar\u0131n\u0131 belirtmek zorunda de\u011filsiniz (ancak belirtmek iyi bir uygulamad\u0131r).<\/p>\n<pre><code class=\"language-sql\">\nINSERT INTO Calisanlar (ad, soyad, pozisyon, maas, ise_giris_tarihi, departman_id)\nVALUES ('Burak', '\u00d6zt\u00fcrk', 'Donan\u0131m M\u00fchendisi', 82000.00, '2023-05-01', NULL); -- Yeni bir departman eklenmedi\u011fi varsay\u0131m\u0131yla\n<\/code><\/pre>\n<h4>Belirli S\u00fctunlara Ekleme<\/h4>\n<p>Sadece belirli s\u00fctunlara de\u011fer eklemek isterseniz, <code>INSERT INTO<\/code> ifadesinden sonra parantez i\u00e7inde s\u00fctun adlar\u0131n\u0131 belirtmelisiniz.<\/p>\n<pre><code class=\"language-sql\">\nINSERT INTO Calisanlar (ad, soyad) VALUES ('Selin', '\u00c7elik');\n-- Di\u011fer s\u00fctunlar varsay\u0131lan de\u011ferlerini al\u0131r veya NULL olur (e\u011fer NOT NULL k\u0131s\u0131tlamas\u0131 yoksa)\n<\/code><\/pre>\n<h3>Veri G\u00fcncelleme (UPDATE)<\/h3>\n<p><code>UPDATE<\/code> komutu, bir tablodaki mevcut verileri de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- Mehmet Demir'in pozisyonunu ve maa\u015f\u0131n\u0131 g\u00fcncelle\nUPDATE Calisanlar\nSET pozisyon = 'K\u0131demli Proje Y\u00f6neticisi', maas = 95000.00\nWHERE ad = 'Mehmet' AND soyad = 'Demir';\n<\/code><\/pre>\n<p><b>Uyar\u0131:<\/b> <code>WHERE<\/code> ko\u015fulu olmadan bir <code>UPDATE<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, tablodaki <b>t\u00fcm<\/b> sat\u0131rlar\u0131n belirtilen s\u00fctunlar\u0131 g\u00fcncellenir. Bu, veri kayb\u0131na yol a\u00e7abilecek tehlikeli bir i\u015flemdir. Her zaman <code>UPDATE<\/code> komutlar\u0131n\u0131z\u0131 <code>WHERE<\/code> ko\u015fuluyla dikkatlice hedefledi\u011finizden emin olun.<\/p>\n<h3>Veri Silme (DELETE)<\/h3>\n<p><code>DELETE FROM<\/code> komutu, bir tablodan sat\u0131rlar\u0131 silmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- Ad\u0131 'Selin' olan \u00e7al\u0131\u015fan\u0131 sil\nDELETE FROM Calisanlar WHERE ad = 'Selin';\n<\/code><\/pre>\n<p><b>Uyar\u0131:<\/b> <code>WHERE<\/code> ko\u015fulu olmadan bir <code>DELETE FROM<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, tablodaki <b>t\u00fcm<\/b> sat\u0131rlar silinir. Bu da geri al\u0131namaz bir veri kayb\u0131na yol a\u00e7abilir. <code>DELETE<\/code> komutlar\u0131n\u0131 daima <code>WHERE<\/code> ko\u015fuluyla dikkatlice kullan\u0131n.<\/p>\n<h2>Veri Tan\u0131mlama Dili (DDL) Komutlar\u0131na K\u0131sa Bak\u0131\u015f<\/h2>\n<p>SQL sadece veri manip\u00fclasyonu i\u00e7in de\u011fil, ayn\u0131 zamanda veri taban\u0131 yap\u0131s\u0131n\u0131 tan\u0131mlamak ve y\u00f6netmek i\u00e7in de kullan\u0131l\u0131r. Bu komutlara Veri Tan\u0131mlama Dili (DDL) denir.<\/p>\n<h3>CREATE TABLE<\/h3>\n<p>Yeni bir tablo olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">\nCREATE TABLE Urunler (\n    urun_id SERIAL PRIMARY KEY,\n    urun_adi VARCHAR(100) NOT NULL,\n    fiyat DECIMAL(10, 2),\n    stok_miktari INT DEFAULT 0\n);\n<\/code><\/pre>\n<h3>ALTER TABLE<\/h3>\n<p>Mevcut bir tablonun yap\u0131s\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r (s\u00fctun ekleme, silme, de\u011fi\u015ftirme vb.).<\/p>\n<pre><code class=\"language-sql\">\n-- Urunler tablosuna 'aciklama' s\u00fctunu ekle\nALTER TABLE Urunler ADD COLUMN aciklama TEXT;\n\n-- Calisanlar tablosundaki 'maas' s\u00fctununun veri tipini de\u011fi\u015ftir (\u00f6rne\u011fin, daha b\u00fcy\u00fck bir hassasiyet i\u00e7in)\n-- ALTER TABLE Calisanlar ALTER COLUMN maas TYPE DECIMAL(12, 2);\n<\/code><\/pre>\n<h3>DROP TABLE<\/h3>\n<p>Mevcut bir tabloyu tamamen silmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- Urunler tablosunu sil\nDROP TABLE Urunler;\n<\/code><\/pre>\n<p><b>Uyar\u0131:<\/b> <code>DROP TABLE<\/code> komutu, tabloyu ve i\u00e7indeki t\u00fcm verileri kal\u0131c\u0131 olarak siler. Bu i\u015flem geri al\u0131namaz.<\/p>\n<h2>Geli\u015fmi\u015f Sorgu Konular\u0131<\/h2>\n<p>Temel sorgulama becerilerinizi geli\u015ftirdikten sonra, PostgreSQL'in sundu\u011fu daha karma\u015f\u0131k \u00f6zelliklere y\u00f6nelebilirsiniz. Bunlar, daha g\u00fc\u00e7l\u00fc ve esnek sorgular yazman\u0131za olanak tan\u0131r.<\/p>\n<h3>Alt Sorgular (Subqueries)<\/h3>\n<p>Bir alt sorgu (veya i\u00e7 sorgu), ba\u015fka bir SQL sorgusu i\u00e7ine yerle\u015ftirilmi\u015f bir sorgudur. Alt sorgular, genellikle bir <code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code> veya <code>DELETE<\/code> ifadesinin <code>WHERE<\/code> veya <code>FROM<\/code> yan t\u00fcmcelerinde kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- Ortalama maa\u015ftan daha y\u00fcksek maa\u015f alan \u00e7al\u0131\u015fanlar\u0131 bul\nSELECT ad, soyad, maas\nFROM Calisanlar\nWHERE maas > (SELECT AVG(maas) FROM Calisanlar);\n<\/code><\/pre>\n<h3>Ortak Tablo \u0130fadeleri (CTE - WITH Clause)<\/h3>\n<p>Ortak Tablo \u0130fadeleri (Common Table Expressions - CTE'ler), karma\u015f\u0131k sorgular\u0131 daha okunabilir ve y\u00f6netilebilir par\u00e7alara ay\u0131rmak i\u00e7in kullan\u0131l\u0131r. Bir CTE, <code>WITH<\/code> anahtar kelimesiyle tan\u0131mlan\u0131r ve daha sonra ana sorguda sanki ge\u00e7ici bir tabloymu\u015f gibi kullan\u0131labilir.<\/p>\n<pre><code class=\"language-sql\">\nWITH YuksekMaasliCalisanlar AS (\n    SELECT ad, soyad, maas\n    FROM Calisanlar\n    WHERE maas > 70000.00\n)\nSELECT * FROM YuksekMaasliCalisanlar ORDER BY maas DESC;\n<\/code><\/pre>\n<h3>Pencere Fonksiyonlar\u0131 (Window Functions)<\/h3>\n<p>Pencere fonksiyonlar\u0131, bir sorgu sonu\u00e7 k\u00fcmesindeki ilgili sat\u0131rlar\u0131n (\"pencere\") bir b\u00f6l\u00fcm\u00fc \u00fczerinde hesaplamalar yapman\u0131z\u0131 sa\u011flar. <code>GROUP BY<\/code>'dan farkl\u0131 olarak, pencere fonksiyonlar\u0131 sat\u0131rlar\u0131 gruplamaz ve sat\u0131r say\u0131s\u0131n\u0131 azaltmaz, her sat\u0131r i\u00e7in bir sonu\u00e7 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-sql\">\n-- Her \u00e7al\u0131\u015fan\u0131n kendi departman\u0131ndaki maa\u015f s\u0131ralamas\u0131n\u0131 ve ortalama maa\u015f\u0131 g\u00f6ster\nSELECT\n    ad,\n    soyad,\n    pozisyon,\n    maas,\n    RANK() OVER (PARTITION BY departman_id ORDER BY maas DESC) AS departman_ici_maas_sirasi,\n    AVG(maas) OVER (PARTITION BY departman_id) AS departman_ort_maas\nFROM Calisanlar;\n<\/code><\/pre>\n<h2>Performans \u0130pu\u00e7lar\u0131 ve \u0130ndeksleme<\/h2>\n<p>B\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken sorgu performans\u0131 kritik hale gelir. PostgreSQL, sorgu optimizasyonu i\u00e7in \u00e7e\u015fitli ara\u00e7lar ve teknikler sunar:<\/p>\n<ul>\n<li><b>\u0130ndeksleme:<\/b> S\u0131k\u00e7a sorgulanan s\u00fctunlara indeks eklemek, veri arama ve s\u0131ralama i\u015flemlerini h\u0131zland\u0131r\u0131r. \u00d6rne\u011fin, <code>WHERE<\/code> yan t\u00fcmcelerinde veya <code>JOIN<\/code> ko\u015fullar\u0131nda kullan\u0131lan s\u00fctunlara indeks eklemek faydal\u0131d\u0131r.\n<pre><code class=\"language-sql\">\n        CREATE INDEX idx_calisanlar_soyad ON Calisanlar (soyad);\n        CREATE INDEX idx_calisanlar_maas ON Calisanlar (maas);\n        <\/code><\/pre>\n<\/li>\n<li><b>EXPLAIN ANALYZE:<\/b> Bir sorgunun nas\u0131l y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fcn\u00fc ve 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 etmenize yard\u0131mc\u0131 olur.\n<pre><code class=\"language-sql\">\n        EXPLAIN ANALYZE SELECT * FROM Calisanlar WHERE maas > 70000;\n        <\/code><\/pre>\n<\/li>\n<li><b>Gereksiz S\u00fctunlardan Ka\u00e7\u0131n\u0131n:<\/b> <code>SELECT *<\/code> yerine yaln\u0131zca ihtiyac\u0131n\u0131z olan s\u00fctunlar\u0131 se\u00e7in.<\/li>\n<li><b>JOIN Optimizasyonu:<\/b> B\u00fcy\u00fck tablolarda <code>JOIN<\/code> yaparken uygun indekslerin oldu\u011fundan emin olun.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu makalede, PostgreSQL'de sorgular\u0131n temellerinden ba\u015flayarak, veri \u00e7ekme (SELECT), filtreleme (WHERE), s\u0131ralama (ORDER BY), gruplama (GROUP BY), tablolar\u0131 birle\u015ftirme (JOIN) ve veri manip\u00fclasyonu (INSERT, UPDATE, DELETE) gibi temel DML komutlar\u0131na derinlemesine bir bak\u0131\u015f att\u0131k. Ayr\u0131ca, veri taban\u0131 yap\u0131s\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan DDL komutlar\u0131na ve alt sorgular, CTE'ler, pencere fonksiyonlar\u0131 gibi daha geli\u015fmi\u015f sorgu tekniklerine de de\u011findik. Son olarak, sorgu performans\u0131n\u0131 optimize etmek i\u00e7in indeksleme ve <code>EXPLAIN ANALYZE<\/code> gibi \u00f6nemli ipu\u00e7lar\u0131n\u0131 payla\u015ft\u0131k.<\/p>\n<p>PostgreSQL, geni\u015f bir \u00f6zellik setine ve esnek bir yap\u0131ya sahip g\u00fc\u00e7l\u00fc bir veri taban\u0131d\u0131r. Bu makalede sunulan bilgiler, PostgreSQL ile etkili bir \u015fekilde \u00e7al\u0131\u015fmaya ba\u015flaman\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r. Ancak, veri taban\u0131 d\u00fcnyas\u0131 s\u00fcrekli geli\u015fmekte ve \u00f6\u011frenilecek \u00e7ok \u015fey bulunmaktad\u0131r. Karma\u015f\u0131k veri modelleriyle \u00e7al\u0131\u015f\u0131rken veya performans sorunlar\u0131yla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda, PostgreSQL'in resmi dok\u00fcmantasyonunu incelemek, topluluk forumlar\u0131ndan destek almak ve s\u00fcrekli pratik yapmak, becerilerinizi daha da ileriye ta\u015f\u0131yacakt\u0131r.<\/p>\n<p>Unutmay\u0131n ki etkili bir veri taban\u0131 y\u00f6neticisi veya geli\u015ftiricisi olmak, sadece SQL s\u00f6zdizimini bilmekle kalmaz, ayn\u0131 zamanda veri modellerini anlama, sorgu performans\u0131n\u0131 optimize etme ve veri g\u00fcvenli\u011fini sa\u011flama gibi konular\u0131 da kapsar. Bu rehber, yolculu\u011funuzda \u00f6nemli bir ilk ad\u0131m olarak hizmet etmeyi umuyor.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"PostgreSQL&#8217;de Sorgulara Giri\u015f\n\u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemleri (RDBMS), modern yaz\u0131l\u0131m uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturur. Bu","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-31742","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 Sorgulara Giri\u015f - 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-sorgulara-giris\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL&#039;de Sorgulara Giri\u015f\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL&#039;de Sorgulara Giri\u015f \u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemleri (RDBMS), modern yaz\u0131l\u0131m uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturur. Bu\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-13T09:40:55+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=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL&#8217;de Sorgulara Giri\u015f\",\"datePublished\":\"2025-10-13T09:40:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\"},\"wordCount\":2282,\"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-sorgulara-giris\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\",\"name\":\"PostgreSQL'de Sorgulara Giri\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-13T09:40:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL&#8217;de Sorgulara Giri\u015f\"}]},{\"@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 Sorgulara Giri\u015f - 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-sorgulara-giris\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL'de Sorgulara Giri\u015f","og_description":"PostgreSQL'de Sorgulara Giri\u015f \u0130li\u015fkisel veritaban\u0131 y\u00f6netim sistemleri (RDBMS), modern yaz\u0131l\u0131m uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturur. Bu","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-13T09:40:55+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL&#8217;de Sorgulara Giri\u015f","datePublished":"2025-10-13T09:40:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/"},"wordCount":2282,"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-sorgulara-giris\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/","name":"PostgreSQL'de Sorgulara Giri\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-13T09:40:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-sorgulara-giris\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL&#8217;de Sorgulara Giri\u015f"}]},{"@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\/31742","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=31742"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31742\/revisions"}],"predecessor-version":[{"id":31743,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31742\/revisions\/31743"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}