{"id":35002,"date":"2025-11-24T18:31:07","date_gmt":"2025-11-24T15:31:07","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/"},"modified":"2025-11-24T18:31:07","modified_gmt":"2025-11-24T15:31:07","slug":"sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/","title":{"rendered":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f"},"content":{"rendered":"<p>SQL&#8217;in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital \u00e7a\u011f\u0131nda veri, adeta yeni bir petrol niteli\u011findedir. \u0130\u015fletmelerin kararlar\u0131n\u0131 y\u00f6nlendiren, stratejilerini \u015fekillendiren ve rekabet avantaj\u0131 sa\u011flayan en de\u011ferli varl\u0131klardan biridir. Ancak verinin ham hali tek ba\u015f\u0131na pek bir anlam ifade etmez. Onu anlaml\u0131 bilgilere d\u00f6n\u00fc\u015ft\u00fcrebilmek, analiz edebilmek ve etkin bir \u015fekilde y\u00f6netebilmek i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lara ihtiyac\u0131m\u0131z vard\u0131r. \u0130\u015fte tam bu noktada, \u0130li\u015fkisel Veri Taban\u0131 Y\u00f6netim Sistemleri (RDBMS) ile ileti\u015fim kurmam\u0131z\u0131 sa\u011flayan standart dil olan SQL (Structured Query Language) devreye girer. Y\u0131llard\u0131r veri profesyonellerinin vazge\u00e7ilmez arac\u0131 olan SQL, basit sorgulardan karma\u015f\u0131k raporlamalara kadar geni\u015f bir yelpazede kullan\u0131lmaktad\u0131r. Belki de y\u0131llar \u00f6nce SQL \u00f6\u011frendiniz, ancak g\u00fcndelik i\u015flerinizde sadece belirli komutlar\u0131 kulland\u0131\u011f\u0131n\u0131z i\u00e7in baz\u0131 temel bilgilerin pasland\u0131\u011f\u0131n\u0131 fark ettiniz. Ya da veri d\u00fcnyas\u0131na yeni ad\u0131m atm\u0131\u015f bir profesyonel olarak, SQL\u2019in ne kadar \u00f6nemli oldu\u011funu ancak nereden ba\u015flayaca\u011f\u0131n\u0131z\u0131 bilemedi\u011finizi d\u00fc\u015f\u00fcn\u00fcyorsunuz.<\/p>\n<p>Bu makale, ister SQL ile ilk kez tan\u0131\u015f\u0131yor olun, ister mevcut bilgilerinizi peki\u015ftirmek isteyin, herkes i\u00e7in kapsaml\u0131 bir rehber niteli\u011findedir. SQL\u2019in temel prensiplerinden ba\u015flayarak, en s\u0131k kullan\u0131lan komutlar\u0131 uygulamal\u0131 \u00f6rneklerle a\u00e7\u0131klayacak, ger\u00e7ek d\u00fcnya senaryolar\u0131yla bilginizi peki\u015ftirece\u011fiz. Ayr\u0131ca, sorgu performans\u0131n\u0131z\u0131 art\u0131racak ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131yla bilginizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z. Veri taban\u0131 optimizasyonundan do\u011fru veri tiplerini kullanmaya kadar bir\u00e7ok \u00f6nemli konuya de\u011finece\u011fiz. Amac\u0131m\u0131z, sadece kod yazmay\u0131 \u00f6\u011fretmek de\u011fil, ayn\u0131 zamanda veri taban\u0131 mant\u0131\u011f\u0131n\u0131 kavraman\u0131z\u0131 ve kar\u015f\u0131la\u015fabilece\u011finiz problemleri \u00e7\u00f6zebilecek analitik bir bak\u0131\u015f a\u00e7\u0131s\u0131 kazanman\u0131z\u0131 sa\u011flamakt\u0131r. \u00c7\u00fcnk\u00fc SQL sadece bir kodlama dili de\u011fil, ayn\u0131 zamanda veriyi anlama ve onunla etkile\u015fim kurma bi\u00e7imidir. Haz\u0131rsan\u0131z, SQL\u2019in derinliklerine bir yolculu\u011fa \u00e7\u0131kal\u0131m ve veri d\u00fcnyas\u0131ndaki ustal\u0131\u011f\u0131n\u0131z\u0131 birlikte yeniden in\u015fa edelim. Bu yolculukta edinece\u011finiz bilgiler, kariyerinizde size yeni kap\u0131lar a\u00e7acak ve veriyle daha g\u00fc\u00e7l\u00fc bir ili\u015fki kurman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h2>SQL Nedir ve Veri Taban\u0131 D\u00fcnyas\u0131ndaki Yeri Nas\u0131ld\u0131r?<\/h2>\n<p>SQL, yani Yap\u0131sal Sorgu Dili (Structured Query Language), veri tabanlar\u0131yla etkile\u015fim kurmak i\u00e7in tasarlanm\u0131\u015f standart bir programlama dilidir. Veri tabanlar\u0131na veri ekleme, de\u011fi\u015ftirme, silme ve en \u00f6nemlisi sorgulama i\u015flemleri i\u00e7in kullan\u0131l\u0131r. 1970&#8217;li y\u0131llar\u0131n ba\u015flar\u0131nda geli\u015ftirilen SQL, o zamandan beri veri y\u00f6netimi d\u00fcnyas\u0131nda merkezi bir rol oynamaktad\u0131r. Temel olarak, SQL ili\u015fkisel veri tabanlar\u0131 (Relational Database Management Systems &#8211; RDBMS) ile \u00e7al\u0131\u015f\u0131r. \u0130li\u015fkisel veri tabanlar\u0131, veriyi \u00f6nceden tan\u0131mlanm\u0131\u015f ili\u015fkilerle birbirine ba\u011fl\u0131 tablolar halinde d\u00fczenler. Her tablo, belirli bir varl\u0131k (\u00f6rne\u011fin, &#8220;M\u00fc\u015fteriler&#8221; veya &#8220;\u00dcr\u00fcnler&#8221;) hakk\u0131ndaki bilgileri i\u00e7erir ve bu bilgiler sat\u0131rlar (kay\u0131tlar) ve s\u00fctunlar (alanlar) \u015feklinde organize edilir.<\/p>\n<p>Bir veri taban\u0131nda, her tablonun genellikle bir &#8220;birincil anahtar\u0131&#8221; (Primary Key) bulunur. Bu anahtar, tablodaki her sat\u0131r\u0131 benzersiz bir \u015fekilde tan\u0131mlayan bir veya birden fazla s\u00fctundur. \u00d6rne\u011fin, bir &#8220;M\u00fc\u015fteriler&#8221; tablosunda &#8220;MusteriID&#8221; birincil anahtar olabilir. Bunun yan\u0131 s\u0131ra, &#8220;yabanc\u0131 anahtarlar&#8221; (Foreign Key) da kritik \u00f6neme sahiptir. Yabanc\u0131 anahtarlar, bir tablonun di\u011fer bir tablodaki birincil anahtar\u0131 referans alarak tablolar aras\u0131ndaki ili\u015fkileri kurmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, bir &#8220;Sipari\u015fler&#8221; tablosunda &#8220;MusteriID&#8221; yabanc\u0131 anahtar olarak bulunarak, o sipari\u015fin hangi m\u00fc\u015fteriye ait oldu\u011funu g\u00f6sterir. Bu ili\u015fkisel yap\u0131, verinin tutarl\u0131l\u0131\u011f\u0131n\u0131 ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken, ayn\u0131 zamanda karma\u015f\u0131k sorgulamalar yap\u0131lmas\u0131na olanak tan\u0131r.<\/p>\n<p>G\u00fcn\u00fcm\u00fczde MySQL, PostgreSQL, Microsoft SQL Server, Oracle ve SQLite gibi bir\u00e7ok pop\u00fcler RDBMS bulunmaktad\u0131r. Bu sistemler, b\u00fcy\u00fck \u00f6l\u00e7\u00fcde SQL standartlar\u0131n\u0131 takip etse de, kendine \u00f6zg\u00fc baz\u0131 ek \u00f6zelliklere veya s\u00f6zdizimsel farkl\u0131l\u0131klara sahip olabilirler. Ancak temel SQL komutlar\u0131 genellikle t\u00fcm platformlarda benzer \u015fekilde \u00e7al\u0131\u015f\u0131r. Veri analistleri, yaz\u0131l\u0131m geli\u015ftiriciler, veri bilimciler ve sistem y\u00f6neticileri dahil olmak \u00fczere bir\u00e7ok profesyonel i\u00e7in SQL bilgisi olmazsa olmazd\u0131r. \u015eirketlerin sat\u0131\u015f verilerini analiz etmekten, web uygulamalar\u0131n\u0131n arka plan\u0131nda kullan\u0131c\u0131 bilgilerini y\u00f6netmeye, finansal raporlar olu\u015fturmaktan, envanter takibine kadar geni\u015f bir kullan\u0131m alan\u0131na sahiptir. Veriyi do\u011fru bir \u015fekilde sorgulayabilmek, manip\u00fcle edebilmek ve y\u00f6netebilmek, g\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda rekabet\u00e7i kalmak i\u00e7in kritik bir yetkinliktir. Bu nedenle, SQL\u2019in temellerini sa\u011flam bir \u015fekilde \u00f6\u011frenmek, veri odakl\u0131 bir kariyer i\u00e7in at\u0131lacak en \u00f6nemli ad\u0131mlardan biridir.<\/p>\n<h2>Temel Veri Sorgulama Sanat\u0131: SELECT Komutu Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n<p>SQL&#8217;in en temel ve en s\u0131k kullan\u0131lan komutu <code>SELECT<\/code>&#8216;tir. Bu komut, veri taban\u0131ndan bilgi \u00e7ekmek i\u00e7in kullan\u0131l\u0131r. Veri taban\u0131n\u0131n kalbi niteli\u011findedir \u00e7\u00fcnk\u00fc t\u00fcm analiz ve raporlama i\u015flemleri genellikle bu komutla ba\u015flar. Bir veri taban\u0131ndan ne t\u00fcr veriler almak istedi\u011finizi, hangi tablodan almak istedi\u011finizi ve hangi ko\u015fullara g\u00f6re filtrelemek istedi\u011finizi <code>SELECT<\/code> komutuyla belirtirsiniz. Bu b\u00f6l\u00fcmde, <code>SELECT<\/code> komutunun temel kullan\u0131mlar\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek ve \u00e7e\u015fitli \u00f6rneklerle peki\u015ftirece\u011fiz.<\/p>\n<p>En basit haliyle, bir tablodaki t\u00fcm s\u00fctunlar\u0131 ve t\u00fcm sat\u0131rlar\u0131 g\u00f6rmek i\u00e7in y\u0131ld\u0131z (*) karakterini kullan\u0131r\u0131z:<\/p>\n<pre><code>\nSELECT *\nFROM Musteriler;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, \"Musteriler\" tablosundaki her \u015feyi d\u00f6nd\u00fcrecektir. Ancak genellikle t\u00fcm s\u00fctunlara ihtiyac\u0131m\u0131z olmaz. Yaln\u0131zca belirli s\u00fctunlar\u0131 se\u00e7mek i\u00e7in, s\u00fctun adlar\u0131n\u0131 virg\u00fclle ay\u0131rarak <code>SELECT<\/code> komutundan sonra yazar\u0131z:<\/p>\n<pre><code>\nSELECT Ad, Soyad, Eposta\nFROM Musteriler;\n<\/pre>\n<p><\/code><\/p>\n<p>Veriyi filtrelemek, yani sadece belirli ko\u015fullar\u0131 sa\u011flayan sat\u0131rlar\u0131 almak i\u00e7in <code>WHERE<\/code> anahtar kelimesini kullan\u0131r\u0131z. Bu, SQL sorgular\u0131n\u0131z\u0131n g\u00fcc\u00fcn\u00fc b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131ran \u00e7ok \u00f6nemli bir k\u0131s\u0131md\u0131r:<\/p>\n<pre><code>\nSELECT Ad, Soyad, Sehir\nFROM Musteriler\nWHERE Sehir = '\u0130stanbul';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu sadece \u0130stanbul'da ya\u015fayan m\u00fc\u015fterilerin ad, soyad ve \u015fehir bilgilerini d\u00f6nd\u00fcrecektir. Birden fazla filtreleme ko\u015fulu i\u00e7in <code>AND<\/code> ve <code>OR<\/code> operat\u00f6rlerini kullanabiliriz:<\/p>\n<pre><code>\nSELECT Ad, Soyad, Sehir, Yas\nFROM Musteriler\nWHERE Sehir = 'Ankara' AND Yas > 30;\n<\/pre>\n<p><\/code><\/p>\n<p>E\u011fer yinelenen de\u011ferleri ortadan kald\u0131rmak istiyorsak, <code>DISTINCT<\/code> anahtar kelimesi imdad\u0131m\u0131za yeti\u015fir. \u00d6rne\u011fin, m\u00fc\u015fterilerimizin hangi farkl\u0131 \u015fehirlerden oldu\u011funu g\u00f6rmek istersek:<\/p>\n<pre><code>\nSELECT DISTINCT Sehir\nFROM Musteriler;\n<\/pre>\n<p><\/code><\/p>\n<p>Sonu\u00e7lar\u0131 belirli bir s\u0131raya g\u00f6re d\u00fczenlemek i\u00e7in <code>ORDER BY<\/code> komutunu kullan\u0131r\u0131z. Varsay\u0131lan olarak artan (ASC) s\u0131ralama yap\u0131l\u0131r, azalan (DESC) i\u00e7in a\u00e7\u0131k\u00e7a belirtmemiz gerekir:<\/p>\n<pre><code>\nSELECT Ad, Soyad, Yas\nFROM Musteriler\nWHERE Sehir = '\u0130zmir'\nORDER BY Yas DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Baz\u0131 durumlarda sadece ilk N kayd\u0131 g\u00f6rmek isteyebiliriz. Bunun i\u00e7in farkl\u0131 veri tabanlar\u0131nda <code>LIMIT<\/code> (MySQL, PostgreSQL) veya <code>TOP<\/code> (SQL Server) kullan\u0131l\u0131r:<\/p>\n<pre><code>\n-- MySQL\/PostgreSQL i\u00e7in\nSELECT Ad, Soyad\nFROM Musteriler\nORDER BY MusteriID\nLIMIT 5;\n\n-- SQL Server i\u00e7in\nSELECT TOP 5 Ad, Soyad\nFROM Musteriler\nORDER BY MusteriID;\n<\/pre>\n<p><\/code><\/p>\n<h3>Vaka Analizi: Online Ma\u011faza M\u00fc\u015fteri Sorgulamas\u0131<\/h3>\n<p>Bir online ma\u011faza sahibisiniz ve belirli kriterlere uyan m\u00fc\u015fterileri hedeflemek istiyorsunuz. Amac\u0131n\u0131z, son 3 ay i\u00e7inde al\u0131\u015fveri\u015f yapm\u0131\u015f, belirli bir \u015fehirde ya\u015fayan ve e-posta pazarlamas\u0131na izin vermi\u015f m\u00fc\u015fterilerin adlar\u0131n\u0131, e-posta adreslerini ve son sipari\u015f tarihlerini \u00e7ekmek.<\/p>\n<pre><code>\nSELECT M.Ad, M.Soyad, M.Eposta, S.SiparisTarihi\nFROM Musteriler M\nJOIN Siparisler S ON M.MusteriID = S.MusteriID\nWHERE M.Sehir = '\u0130stanbul'\n  AND M.EpostaPazarlamaIzni = TRUE\n  AND S.SiparisTarihi >= DATE('now', '-3 months') -- veya GETDATE(), CURRENT_DATE() veri taban\u0131na g\u00f6re\nORDER BY S.SiparisTarihi DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>JOIN<\/code> komutunu da kullanarak \"Musteriler\" ve \"Siparisler\" tablolar\u0131n\u0131 birle\u015ftirdik. <code>WHERE<\/code> ile filtreleme yapt\u0131k ve <code>ORDER BY<\/code> ile sonu\u00e7lar\u0131 s\u0131ralad\u0131k. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>SELECT<\/code> komutu temelden karma\u015f\u0131\u011fa do\u011fru veri sorgulamada ne kadar g\u00fc\u00e7l\u00fc bir ara\u00e7 olabilece\u011fini g\u00f6sterir.<\/p>\n<h2>Veri Manip\u00fclasyonu: INSERT, UPDATE, DELETE \u0130\u015flemleri Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Veri taban\u0131ndan sadece bilgi \u00e7ekmek yeterli de\u011fildir; ayn\u0131 zamanda veri taban\u0131ndaki bilgileri y\u00f6netebilmek, yeni kay\u0131tlar ekleyebilmek, mevcutlar\u0131 g\u00fcncelleyebilmek ve gereksizleri silebilmek de b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu i\u015flemler i\u00e7in s\u0131ras\u0131yla <code>INSERT INTO<\/code>, <code>UPDATE<\/code> ve <code>DELETE FROM<\/code> komutlar\u0131n\u0131 kullan\u0131r\u0131z. Bu komutlar, veri taban\u0131n\u0131z\u0131n canl\u0131l\u0131\u011f\u0131n\u0131 ve g\u00fcncelli\u011fini sa\u011flayan temel ta\u015flard\u0131r. Ancak unutulmamal\u0131d\u0131r ki, veri manip\u00fclasyonu yaparken \u00e7ok dikkatli olmak gerekir; yanl\u0131\u015f bir komut ciddi veri kay\u0131plar\u0131na yol a\u00e7abilir.<\/p>\n<h3>INSERT INTO: Veri Taban\u0131na Yeni Kay\u0131t Ekleme<\/h3>\n<p><code>INSERT INTO<\/code> komutu, bir tabloya yeni bir sat\u0131r (kay\u0131t) eklemek i\u00e7in kullan\u0131l\u0131r. \u0130ki ana kullan\u0131m \u015fekli vard\u0131r: Ya t\u00fcm s\u00fctunlara veri eklenir ya da sadece belirli s\u00fctunlara veri eklenir. T\u00fcm s\u00fctunlara veri eklerken, de\u011ferlerin tablodaki s\u00fctunlar\u0131n s\u0131ras\u0131na uygun oldu\u011fundan emin olmal\u0131y\u0131z:<\/p>\n<pre><code>\nINSERT INTO Urunler (UrunAdi, Kategori, StokAdedi, Fiyat)\nVALUES ('Ak\u0131ll\u0131 Saat', 'Elektronik', 150, 2499.99);\n<\/pre>\n<p><\/code><\/p>\n<p>E\u011fer t\u00fcm s\u00fctunlara de\u011fer ekliyorsak ve s\u00fctun s\u0131ras\u0131n\u0131 biliyorsak, s\u00fctun adlar\u0131n\u0131 belirtmeden de ekleme yapabiliriz, ancak bu y\u00f6ntem tavsiye edilmez \u00e7\u00fcnk\u00fc tablo yap\u0131s\u0131 de\u011fi\u015fti\u011finde hata olu\u015fabilir:<\/p>\n<pre><code>\nINSERT INTO Urunler\nVALUES ('Kablosuz Kulakl\u0131k', 'Elektronik', 300, 899.50);\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Her zaman <code>INSERT INTO<\/code> komutunda s\u00fctun adlar\u0131n\u0131 belirtmek, kodunuzun daha okunabilir ve gelecekteki de\u011fi\u015fikliklere kar\u015f\u0131 daha dayan\u0131kl\u0131 olmas\u0131n\u0131 sa\u011flar.\n<\/div>\n<h3>UPDATE: Mevcut Kay\u0131tlar\u0131 G\u00fcncelleme<\/h3>\n<p><code>UPDATE<\/code> komutu, bir tablodaki mevcut kay\u0131tlar\u0131n bir veya daha fazla s\u00fctunundaki de\u011ferleri de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Bu komutun en kritik par\u00e7as\u0131 <code>WHERE<\/code> yan t\u00fcmcesidir. <code>WHERE<\/code> kullanmadan bir <code>UPDATE<\/code> \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, tablodaki <strong>t\u00fcm<\/strong> kay\u0131tlar\u0131n belirtilen s\u00fctunlar\u0131 g\u00fcncellenecektir ki bu genellikle istenmeyen bir durumdur.<\/p>\n<pre><code>\nUPDATE Urunler\nSET Fiyat = 2299.99\nWHERE UrunAdi = 'Ak\u0131ll\u0131 Saat';\n<\/pre>\n<p><\/code><\/p>\n<p>Birden fazla s\u00fctunu ayn\u0131 anda g\u00fcncelleyebiliriz:<\/p>\n<pre><code>\nUPDATE Urunler\nSET StokAdedi = 120, Fiyat = 2399.00\nWHERE UrunAdi = 'Ak\u0131ll\u0131 Saat';\n<\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>WHERE<\/code> ko\u015fulu, hangi \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131n g\u00fcncellenece\u011fini belirleyerek veri tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flar.<\/p>\n<h3>DELETE FROM: Kay\u0131tlar\u0131 Silme<\/h3>\n<p><code>DELETE FROM<\/code> komutu, bir tablodan bir veya daha fazla kayd\u0131 silmek i\u00e7in kullan\u0131l\u0131r. <code>UPDATE<\/code> komutunda oldu\u011fu gibi, <code>DELETE FROM<\/code> komutunda da <code>WHERE<\/code> yan t\u00fcmcesi hayati \u00f6neme sahiptir. <code>WHERE<\/code> kullanmadan \u00e7al\u0131\u015ft\u0131r\u0131lan bir <code>DELETE FROM<\/code> komutu, tablodaki <strong>t\u00fcm<\/strong> kay\u0131tlar\u0131 silecektir.<\/p>\n<pre><code>\nDELETE FROM Urunler\nWHERE UrunAdi = 'Kablosuz Kulakl\u0131k';\n<\/pre>\n<p><\/code><\/p>\n<p>Belirli bir kategoriye ait t\u00fcm \u00fcr\u00fcnleri silmek gibi daha geni\u015f kapsaml\u0131 silme i\u015flemleri de yapabiliriz:<\/p>\n<pre><code>\nDELETE FROM Urunler\nWHERE Kategori = 'Eski Koleksiyon';\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar\u0131 kullan\u0131rken her zaman bir i\u015flem (transaction) i\u00e7inde \u00e7al\u0131\u015fmak ve potansiyel veri kay\u0131plar\u0131na kar\u015f\u0131 yedekleme almak iyi bir pratiktir. Yanl\u0131\u015f bir <code>DELETE<\/code> veya <code>UPDATE<\/code> i\u015flemi geri d\u00f6nd\u00fcr\u00fclemez sonu\u00e7lar do\u011furabilir.<\/p>\n<h3>Vaka Analizi: Envanter Y\u00f6netimi<\/h3>\n<p>Bir e-ticaret \u015firketinin envanterini y\u00f6netiyorsunuz. Yeni bir \u00fcr\u00fcn eklemeniz, mevcut bir \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131 g\u00fcncellemeniz ve sat\u0131\u015f\u0131 biten bir \u00fcr\u00fcn\u00fc envanterden \u00e7\u0131karman\u0131z gerekiyor.<\/p>\n<ol>\n<li><strong>Yeni \u00dcr\u00fcn Ekleme:<\/strong> \"Diz\u00fcst\u00fc Bilgisayar\", \"Bilgisayar\", 50 adet, 15000.00 TL<\/li>\n<pre><code>\nINSERT INTO Urunler (UrunAdi, Kategori, StokAdedi, Fiyat)\nVALUES ('Diz\u00fcst\u00fc Bilgisayar', 'Bilgisayar', 50, 15000.00);\n    <\/pre>\n<p><\/code><\/p>\n<li><strong>Fiyat G\u00fcncelleme:<\/strong> \"Ak\u0131ll\u0131 Saat\"in fiyat\u0131n\u0131 %10 indirimle 2299.99 TL'den 2069.99 TL'ye d\u00fc\u015f\u00fcr\u00fcn.<\/li>\n<pre><code>\nUPDATE Urunler\nSET Fiyat = Fiyat * 0.90\nWHERE UrunAdi = 'Ak\u0131ll\u0131 Saat';\n    <\/pre>\n<p><\/code><\/p>\n<li><strong>\u00dcr\u00fcn \u00c7\u0131karma:<\/strong> \"Eski Nesil Telefon\" art\u0131k stokta yok ve sat\u0131\u015ftan kald\u0131r\u0131lmas\u0131 gerekiyor.<\/li>\n<pre><code>\nDELETE FROM Urunler\nWHERE UrunAdi = 'Eski Nesil Telefon';\n    <\/pre>\n<p><\/code>\n<\/ol>\n<p>Bu komutlar, veri taban\u0131n\u0131zdaki veriyi dinamik bir \u015fekilde y\u00f6netmenizi sa\u011flar. G\u00fc\u00e7l\u00fc olmalar\u0131n\u0131n yan\u0131 s\u0131ra, dikkatli kullan\u0131lmas\u0131 gereken komutlard\u0131r. \u00d6zellikle \u00fcretim ortamlar\u0131nda bu t\u00fcr i\u015flemleri yapmadan \u00f6nce her zaman bir test ortam\u0131nda deneme yapmak ve yedek almak kritik \u00f6neme sahiptir.<\/p>\n<h2>Tablolar\u0131 Birle\u015ftirmek: JOIN Operasyonlar\u0131 Neden \u00d6nemlidir?<\/h2>\n<p>Ger\u00e7ek d\u00fcnya veri tabanlar\u0131 nadiren tek bir b\u00fcy\u00fck tablodan olu\u015fur. Veri tekrar\u0131n\u0131 \u00f6nlemek, veri tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamak ve veri taban\u0131 performans\u0131n\u0131 art\u0131rmak amac\u0131yla veri genellikle birden \u00e7ok, daha k\u00fc\u00e7\u00fck tablolara b\u00f6l\u00fcn\u00fcr (normalizasyon). \u00d6rne\u011fin, bir e-ticaret sisteminde m\u00fc\u015fteri bilgileri bir \"Musteriler\" tablosunda, sipari\u015f bilgileri \"Siparisler\" tablosunda ve sipari\u015f edilen \u00fcr\u00fcnlerin detaylar\u0131 \"SiparisDetay\" tablosunda tutulabilir. Ancak bu ayr\u0131 tablolar\u0131n bilgileri bir araya getirilmedi\u011finde tam bir resme sahip olamay\u0131z. \u0130\u015fte tam bu noktada SQL'deki <code>JOIN<\/code> operasyonlar\u0131 devreye girer. <code>JOIN<\/code>'ler, ili\u015fkisel veri tabanlar\u0131ndaki farkl\u0131 tablolar\u0131, aralar\u0131ndaki ortak s\u00fctunlar\u0131 (genellikle yabanc\u0131 anahtarlar arac\u0131l\u0131\u011f\u0131yla) kullanarak birle\u015ftirmemizi sa\u011flar. Bu sayede, farkl\u0131 tablolarda saklanan bilgileri tek bir sorgu sonucunda birle\u015ftirerek anlaml\u0131 veriler elde edebiliriz.<\/p>\n<p>En s\u0131k kullan\u0131lan <code>JOIN<\/code> t\u00fcrleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>INNER JOIN:<\/strong> Her iki tabloda da e\u015fle\u015fen kay\u0131tlara sahip sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fme yoksa, o sat\u0131rlar sonu\u00e7 k\u00fcmesinde yer almaz.<\/li>\n<li><strong>LEFT (OUTER) JOIN:<\/strong> Sol tablodaki t\u00fcm sat\u0131rlar\u0131 ve sa\u011f tabloda e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Sa\u011f tabloda e\u015fle\u015fme bulunamazsa, sa\u011f tablonun s\u00fctunlar\u0131 i\u00e7in <code>NULL<\/code> de\u011ferler d\u00f6ner.<\/li>\n<li><strong>RIGHT (OUTER) JOIN:<\/strong> Sa\u011f tablodaki t\u00fcm sat\u0131rlar\u0131 ve sol tabloda e\u015fle\u015fen sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. Sol tabloda e\u015fle\u015fme bulunamazsa, sol tablonun s\u00fctunlar\u0131 i\u00e7in <code>NULL<\/code> de\u011ferler d\u00f6ner.<\/li>\n<li><strong>FULL (OUTER) JOIN:<\/strong> Her iki tablodaki t\u00fcm sat\u0131rlar\u0131 d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fme bulunamayan yerlerde <code>NULL<\/code> de\u011ferler olu\u015fur. (Baz\u0131 veri tabanlar\u0131nda desteklenmez, UNION ile taklit edilebilir.)<\/li>\n<\/ul>\n<p>Bir <code>JOIN<\/code> i\u015flemi genellikle <code>ON<\/code> anahtar kelimesiyle hangi s\u00fctunlar \u00fczerinden birle\u015ftirme yap\u0131laca\u011f\u0131n\u0131 belirtir.<\/p>\n<h3>INNER JOIN Kullan\u0131m\u0131<\/h3>\n<p>En yayg\u0131n kullan\u0131lan <code>JOIN<\/code> t\u00fcr\u00fcd\u00fcr. Sadece her iki tabloda da bir e\u015fle\u015fme oldu\u011funda veri d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code>\nSELECT M.Ad, M.Soyad, S.SiparisID, S.SiparisTarihi\nFROM Musteriler M\nINNER JOIN Siparisler S ON M.MusteriID = S.MusteriID;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, sadece sipari\u015f vermi\u015f m\u00fc\u015fterilerin ad\u0131n\u0131, soyad\u0131n\u0131, sipari\u015f kimli\u011fini ve tarihini g\u00f6sterecektir. Hi\u00e7 sipari\u015f vermemi\u015f m\u00fc\u015fteriler listede yer almaz.<\/p>\n<h3>LEFT JOIN Kullan\u0131m\u0131<\/h3>\n<p>Sol taraftaki tablonun t\u00fcm kay\u0131tlar\u0131n\u0131 ve sa\u011f taraftaki tablodan e\u015fle\u015fen kay\u0131tlar\u0131 almak istedi\u011fimizde <code>LEFT JOIN<\/code> kullan\u0131r\u0131z. E\u011fer sa\u011f tabloda bir e\u015fle\u015fme yoksa, sa\u011f tablonun s\u00fctunlar\u0131 <code>NULL<\/code> olarak d\u00f6ner.<\/p>\n<pre><code>\nSELECT M.Ad, M.Soyad, S.SiparisID, S.SiparisTarihi\nFROM Musteriler M\nLEFT JOIN Siparisler S ON M.MusteriID = S.MusteriID;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, t\u00fcm m\u00fc\u015fterileri listeleyecek, hatta hi\u00e7 sipari\u015f vermemi\u015f olanlar\u0131 bile. Sipari\u015f vermeyen m\u00fc\u015fterilerin <code>SiparisID<\/code> ve <code>SiparisTarihi<\/code> s\u00fctunlar\u0131 <code>NULL<\/code> olarak g\u00f6r\u00fcnecektir.<\/p>\n<h3>Vaka Analizi: M\u00fc\u015fteri Sipari\u015f Detaylar\u0131<\/h3>\n<p>Bir e-ticaret platformunda, hangi m\u00fc\u015fterinin hangi \u00fcr\u00fcnlerden ne kadar sipari\u015f verdi\u011fini g\u00f6rmek istiyorsunuz. Bunun i\u00e7in \"Musteriler\", \"Siparisler\" ve \"SiparisDetay\" tablolar\u0131n\u0131 birle\u015ftirmeniz gerekiyor. Ayr\u0131ca, her sipari\u015fin toplam tutar\u0131n\u0131 da hesaplamak istiyorsunuz.<\/p>\n<pre><code>\nSELECT\n    M.Ad,\n    M.Soyad,\n    S.SiparisID,\n    S.SiparisTarihi,\n    SD.UrunAdi,\n    SD.Miktar,\n    SD.BirimFiyat,\n    (SD.Miktar * SD.BirimFiyat) AS ToplamUrunTutari\nFROM Musteriler M\nINNER JOIN Siparisler S ON M.MusteriID = S.MusteriID\nINNER JOIN SiparisDetay SD ON S.SiparisID = SD.SiparisID\nORDER BY M.Soyad, S.SiparisTarihi DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, birden fazla <code>INNER JOIN<\/code> kullanarak \u00fc\u00e7 farkl\u0131 tablodaki verileri ba\u015far\u0131l\u0131 bir \u015fekilde birle\u015ftirir. Her m\u00fc\u015fteri i\u00e7in, verdi\u011fi sipari\u015flerin detaylar\u0131n\u0131 (\u00fcr\u00fcn ad\u0131, miktar\u0131, birim fiyat\u0131 ve her \u00fcr\u00fcn kaleminin toplam tutar\u0131) listeleyerek kapsaml\u0131 bir rapor sunar. <code>JOIN<\/code> operasyonlar\u0131, karma\u015f\u0131k ili\u015fkisel veri tabanlar\u0131ndan anlaml\u0131 ve birle\u015fik bilgi elde etmek i\u00e7in vazge\u00e7ilmezdir. Do\u011fru <code>JOIN<\/code> t\u00fcr\u00fcn\u00fc se\u00e7mek, alaca\u011f\u0131n\u0131z sonu\u00e7 k\u00fcmesinin do\u011frulu\u011fu ve eksiksizli\u011fi a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir.<\/p>\n<h2>Verileri Gruplama ve \u00d6zetleme: GROUP BY ve Aggregate Fonksiyonlar\u0131 Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<p>Veri tabanlar\u0131ndan ham veriyi \u00e7ekmek genellikle ilk ad\u0131md\u0131r. Ancak \u00e7o\u011fu zaman, bu ham veriyi daha anlaml\u0131 \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmek isteriz. \u00d6rne\u011fin, her bir \u00fcr\u00fcn kategorisindeki toplam sat\u0131\u015flar\u0131, ortalama sipari\u015f tutar\u0131n\u0131 veya en pahal\u0131 \u00fcr\u00fcn\u00fc bulmak isteyebiliriz. \u0130\u015fte bu t\u00fcr \u00f6zetleme ve gruplama i\u015flemleri i\u00e7in SQL, g\u00fc\u00e7l\u00fc \"Aggregate Fonksiyonlar\u0131\" ve <code>GROUP BY<\/code> yan t\u00fcmcesini sunar. Bu ara\u00e7lar, binlerce hatta milyonlarca sat\u0131rl\u0131k veriden tek bir anlaml\u0131 sonu\u00e7 (veya grupland\u0131r\u0131lm\u0131\u015f sonu\u00e7lar) elde etmenizi sa\u011flar.<\/p>\n<h3>Aggregate Fonksiyonlar\u0131<\/h3>\n<p>Aggregate fonksiyonlar\u0131, bir s\u00fctundaki bir de\u011fer k\u00fcmesi \u00fczerinde bir hesaplama yapar ve tek bir de\u011fer d\u00f6nd\u00fcr\u00fcr. En yayg\u0131n kullan\u0131lan aggregate fonksiyonlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>COUNT()<\/code>: Bir s\u00fctundaki (NULL olmayan) sat\u0131r say\u0131s\u0131n\u0131 veya <code>COUNT(*)<\/code> ile toplam sat\u0131r say\u0131s\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>SUM()<\/code>: Bir say\u0131sal s\u00fctunun toplam\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>AVG()<\/code>: Bir say\u0131sal s\u00fctunun ortalama de\u011ferini 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<p>\u00d6rne\u011fin, toplam sipari\u015f say\u0131s\u0131n\u0131 bulmak i\u00e7in:<\/p>\n<pre><code>\nSELECT COUNT(SiparisID) AS ToplamSiparisSayisi\nFROM Siparisler;\n<\/pre>\n<p><\/code><\/p>\n<p>T\u00fcm \u00fcr\u00fcnlerin ortalama fiyat\u0131n\u0131 bulmak i\u00e7in:<\/p>\n<pre><code>\nSELECT AVG(Fiyat) AS OrtalamaUrunFiyati\nFROM Urunler;\n<\/pre>\n<p><\/code><\/p>\n<h3>GROUP BY Yan T\u00fcmcesi<\/h3>\n<p>Aggregate fonksiyonlar\u0131n\u0131 tek ba\u015f\u0131na kulland\u0131\u011f\u0131n\u0131zda, t\u00fcm tablo i\u00e7in tek bir sonu\u00e7 elde edersiniz. Ancak, veriyi belirli gruplara ay\u0131rarak her grup i\u00e7in ayr\u0131 ayr\u0131 \u00f6zet bilgiler almak istedi\u011finizde <code>GROUP BY<\/code> yan t\u00fcmcesini kullan\u0131rs\u0131n\u0131z. <code>GROUP BY<\/code>, bir veya daha fazla s\u00fctuna g\u00f6re sat\u0131rlar\u0131 grupland\u0131r\u0131r ve aggregate fonksiyonlar\u0131n\u0131 bu gruplar \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>\u00d6rne\u011fin, her kategori i\u00e7in ayr\u0131 ayr\u0131 \u00fcr\u00fcn say\u0131s\u0131n\u0131 bulmak istersek:<\/p>\n<pre><code>\nSELECT Kategori, COUNT(UrunID) AS UrunSayisi\nFROM Urunler\nGROUP BY Kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>Her m\u00fc\u015fterinin verdi\u011fi toplam sipari\u015f tutar\u0131n\u0131 hesaplamak i\u00e7in:<\/p>\n<pre><code>\nSELECT M.Ad, M.Soyad, SUM(SD.Miktar * SD.BirimFiyat) AS ToplamSiparisTutari\nFROM Musteriler M\nJOIN Siparisler S ON M.MusteriID = S.MusteriID\nJOIN SiparisDetay SD ON S.SiparisID = SD.SiparisID\nGROUP BY M.MusteriID, M.Ad, M.Soyad -- Ad ve Soyad da GROUP BY i\u00e7inde olmal\u0131\nORDER BY ToplamSiparisTutari DESC;\n<\/pre>\n<p><\/code><\/p>\n<p><code>GROUP BY<\/code> kullan\u0131rken dikkat edilmesi gereken \u00f6nemli bir kural \u015fudur: <code>SELECT<\/code> listesinde yer alan ve aggregate fonksiyonu i\u00e7inde olmayan t\u00fcm s\u00fctunlar, <code>GROUP BY<\/code> yan t\u00fcmcesinde de yer almal\u0131d\u0131r. Aksi takdirde, SQL veri taban\u0131 y\u00f6neticisi hangi s\u00fctun \u00fczerinden gruplama yapaca\u011f\u0131n\u0131 bilemez ve hata verir.<\/p>\n<h3>HAVING Yan T\u00fcmcesi<\/h3>\n<p><code>WHERE<\/code> yan t\u00fcmcesini daha \u00f6nce, tek tek sat\u0131rlar\u0131 filtrelemek i\u00e7in kulland\u0131\u011f\u0131m\u0131z\u0131 g\u00f6rm\u00fc\u015ft\u00fck. Ancak, grupland\u0131r\u0131lm\u0131\u015f veriyi filtrelemek istedi\u011fimizde <code>WHERE<\/code> yetersiz kal\u0131r. \u0130\u015fte bu noktada <code>HAVING<\/code> yan t\u00fcmcesi devreye girer. <code>HAVING<\/code>, <code>GROUP BY<\/code> ile olu\u015fturulan gruplar\u0131, aggregate fonksiyonlar\u0131n\u0131n sonu\u00e7lar\u0131na g\u00f6re filtrelemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>\u00d6rne\u011fin, sadece toplam sipari\u015f tutar\u0131 1000 TL'yi a\u015fan m\u00fc\u015fterileri listelemek istersek:<\/p>\n<pre><code>\nSELECT M.Ad, M.Soyad, SUM(SD.Miktar * SD.BirimFiyat) AS ToplamSiparisTutari\nFROM Musteriler M\nJOIN Siparisler S ON M.MusteriID = S.MusteriID\nJOIN SiparisDetay SD ON S.SiparisID = SD.SiparisID\nGROUP BY M.MusteriID, M.Ad, M.Soyad\nHAVING SUM(SD.Miktar * SD.BirimFiyat) > 1000\nORDER BY ToplamSiparisTutari DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Burada <code>HAVING<\/code>, <code>SUM()<\/code> fonksiyonunun sonucunu kullanarak gruplar\u0131 filtrelemi\u015ftir. <code>WHERE<\/code>, grupland\u0131rma yap\u0131lmadan \u00f6nce sat\u0131rlar\u0131 filtrelerken, <code>HAVING<\/code> grupland\u0131rma yap\u0131ld\u0131ktan sonra gruplar\u0131 filtreler. Bu ayr\u0131m \u00e7ok \u00f6nemlidir.<\/p>\n<h3>Vaka Analizi: Ayl\u0131k Sat\u0131\u015f Raporu<\/h3>\n<p>Bir perakende \u015firketinde, ayl\u0131k sat\u0131\u015f performans\u0131n\u0131 analiz etmekle g\u00f6revlisiniz. Her ay i\u00e7in toplam sat\u0131\u015f tutar\u0131n\u0131 ve o ay i\u00e7inde ger\u00e7ekle\u015fen sipari\u015f say\u0131s\u0131n\u0131 g\u00f6rmek istiyorsunuz. Ayr\u0131ca, sadece toplam sat\u0131\u015f tutar\u0131 5000 TL'yi a\u015fan aylar\u0131 rapora dahil etmek istiyorsunuz.<\/p>\n<pre><code>\nSELECT\n    STRFTIME('%Y-%m', SiparisTarihi) AS Ay, -- SQLite i\u00e7in, di\u011fer DB'ler i\u00e7in DATE_FORMAT, FORMAT gibi fonksiyonlar kullan\u0131l\u0131r\n    COUNT(SiparisID) AS ToplamSiparisSayisi,\n    SUM(ToplamTutar) AS AylikToplamSatis\nFROM Siparisler\nGROUP BY Ay\nHAVING AylikToplamSatis > 5000\nORDER BY Ay;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, sipari\u015f tablosundaki veriyi aylara g\u00f6re gruplar, her ay i\u00e7in toplam sipari\u015f say\u0131s\u0131n\u0131 ve sat\u0131\u015f tutar\u0131n\u0131 hesaplar, ard\u0131ndan sadece belirli bir sat\u0131\u015f e\u015fi\u011fini ge\u00e7en aylar\u0131 g\u00f6sterir. <code>GROUP BY<\/code> ve aggregate fonksiyonlar\u0131, b\u00fcy\u00fck veri k\u00fcmelerinden anlaml\u0131 i\u015f zekas\u0131 elde etmek i\u00e7in son derece g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve Performans Optimizasyonu: SQL Sorgular\u0131n\u0131z\u0131 Nas\u0131l H\u0131zland\u0131r\u0131rs\u0131n\u0131z?<\/h2>\n<p>SQL'in temel komutlar\u0131na hakim olmak harikad\u0131r, ancak ger\u00e7ek d\u00fcnya uygulamalar\u0131nda, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken, sorgu performans\u0131n\u0131n \u00f6nemi yads\u0131namaz. Yava\u015f \u00e7al\u0131\u015fan sorgular, uygulama performans\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr, kullan\u0131c\u0131 deneyimini olumsuz etkiler ve hatta sistem kaynaklar\u0131n\u0131 gereksiz yere t\u00fcketerek maliyetleri art\u0131rabilir. Bu b\u00f6l\u00fcmde, SQL sorgular\u0131n\u0131z\u0131 daha h\u0131zl\u0131 ve verimli hale getirmek i\u00e7in kullanabilece\u011finiz ileri d\u00fczey ipu\u00e7lar\u0131na ve performans optimizasyon tekniklerine odaklanaca\u011f\u0131z.<\/p>\n<h3>1. \u0130ndeksleme Stratejileri<\/h3>\n<p>\u0130ndeksler, veri taban\u0131ndaki belirli s\u00fctunlar \u00fczerinde h\u0131zl\u0131 arama yapmay\u0131 sa\u011flayan \u00f6zel arama tablolar\u0131d\u0131r. T\u0131pk\u0131 bir kitab\u0131n i\u00e7indekiler veya anahtar kelime dizini gibi, indeksler de veri taban\u0131 motorunun ilgili verilere \u00e7ok daha h\u0131zl\u0131 ula\u015fmas\u0131n\u0131 sa\u011flar. \u00d6zellikle <code>WHERE<\/code> yan t\u00fcmcesinde s\u0131k\u00e7a kullan\u0131lan s\u00fctunlar, <code>JOIN<\/code> ko\u015fullar\u0131nda kullan\u0131lan s\u00fctunlar ve <code>ORDER BY<\/code> veya <code>GROUP BY<\/code> ile s\u0131ralama\/grupland\u0131rma yap\u0131lan s\u00fctunlar i\u00e7in indeks olu\u015fturmak performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<pre><code>\nCREATE INDEX IX_Musteriler_Sehir\nON Musteriler (Sehir);\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: \u00c7ok fazla indeks olu\u015fturmak veri ekleme, g\u00fcncelleme ve silme (INSERT, UPDATE, DELETE) i\u015flemlerini yava\u015flatabilir \u00e7\u00fcnk\u00fc her veri de\u011fi\u015fikli\u011finde indekslerin de g\u00fcncellenmesi gerekir. Bu y\u00fczden sadece en kritik sorgular\u0131n\u0131zdaki kilit s\u00fctunlara indeks eklemeye \u00f6zen g\u00f6sterin.\n<\/div>\n<h3>2. Sorgu Plan\u0131 Analizi (EXPLAIN)<\/h3>\n<p>Bir sorgunun neden yava\u015f \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlaman\u0131n en iyi yolu, veri taban\u0131 y\u00f6netim sisteminin (DBMS) o sorguyu nas\u0131l y\u00fcr\u00fctt\u00fc\u011f\u00fcn\u00fc analiz etmektir. \u00c7o\u011fu RDBMS, bir sorgunun \"sorgu plan\u0131n\u0131\" (execution plan) g\u00f6steren bir <code>EXPLAIN<\/code> (veya benzeri) komutu sunar. Bu plan, veri taban\u0131n\u0131n hangi indeksleri kulland\u0131\u011f\u0131n\u0131, hangi tablolar\u0131 hangi s\u0131rada okudu\u011funu ve hangi maliyetli i\u015flemleri yapt\u0131\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde g\u00f6sterir. Sorgu plan\u0131n\u0131 inceleyerek, performans darbo\u011fazlar\u0131n\u0131 tespit edebilir ve optimizasyon stratejileri geli\u015ftirebilirsiniz.<\/p>\n<pre><code>\nEXPLAIN SELECT Ad, Soyad FROM Musteriler WHERE Sehir = '\u0130stanbul';\n<\/pre>\n<p><\/code><\/p>\n<h3>3. Do\u011fru Veri Tiplerini Kullanma<\/h3>\n<p>Tablo olu\u015ftururken veya de\u011fi\u015ftirirken, s\u00fctunlar i\u00e7in do\u011fru veri tiplerini se\u00e7mek performans\u0131 etkiler. \u00d6rne\u011fin, say\u0131sal bir de\u011fer i\u00e7in <code>VARCHAR<\/code> yerine <code>INT<\/code> veya <code>DECIMAL<\/code> kullanmak, hem depolama alan\u0131ndan tasarruf sa\u011flar hem de veri taban\u0131n\u0131n kar\u015f\u0131la\u015ft\u0131rma ve aritmetik i\u015flemleri daha h\u0131zl\u0131 yapmas\u0131na olanak tan\u0131r. Gere\u011finden b\u00fcy\u00fck veri tipleri kullanmaktan ka\u00e7\u0131n\u0131n.<\/p>\n<h3>4. Subquery'ler (Alt Sorgular) Yerine JOIN Kullan\u0131m\u0131<\/h3>\n<p>Karma\u015f\u0131k sorgularda alt sorgular kullanmak yerine \u00e7o\u011fu zaman <code>JOIN<\/code> operasyonlar\u0131 daha verimli olabilir. Alt sorgular her bir d\u0131\u015f sorgu sat\u0131r\u0131 i\u00e7in tekrar \u00e7al\u0131\u015ft\u0131r\u0131labilece\u011finden performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olabilirken, <code>JOIN<\/code>'ler veri taban\u0131 optimizat\u00f6rleri taraf\u0131ndan genellikle daha etkin bir \u015fekilde i\u015flenir.<\/p>\n<pre><code>\n-- Alt sorgu \u00f6rne\u011fi (potansiyel olarak daha yava\u015f)\nSELECT UrunAdi FROM Urunler\nWHERE UrunID IN (SELECT UrunID FROM SiparisDetay WHERE Miktar > 10);\n\n-- JOIN ile ayn\u0131 i\u015flem (genellikle daha h\u0131zl\u0131)\nSELECT DISTINCT U.UrunAdi\nFROM Urunler U\nINNER JOIN SiparisDetay SD ON U.UrunID = SD.UrunID\nWHERE SD.Miktar > 10;\n<\/pre>\n<p><\/code><\/p>\n<h3>5. Yeterli Bellek (RAM) ve H\u0131zl\u0131 Depolama<\/h3>\n<p>SQL performans\u0131 sadece sorgu yaz\u0131m \u015feklinizle ilgili de\u011fildir, ayn\u0131 zamanda \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 donan\u0131m altyap\u0131s\u0131yla da do\u011frudan ili\u015fkilidir. Veri taban\u0131 sunucusuna yeterli bellek (RAM) sa\u011flamak, disk I\/O i\u015flemlerini azaltarak sorgu h\u0131z\u0131n\u0131 art\u0131r\u0131r. Ayr\u0131ca, SSD gibi h\u0131zl\u0131 depolama birimleri kullanmak, veri okuma ve yazma i\u015flemlerini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<h3>6. Mobil Uyumlu HTML ve SQL \u0130li\u015fkisi (Konsept)<\/h3>\n<p>Makalenin HTML \u00e7\u0131kt\u0131s\u0131yla ilgili bir not olarak, modern web uygulamalar\u0131 genellikle mobil uyumlu tasar\u0131mlar gerektirir. SQL, do\u011frudan HTML \u00e7\u0131kt\u0131s\u0131 \u00fcretmese de, web uygulamalar\u0131n\u0131z\u0131n arka plan\u0131ndaki veri taban\u0131 performans\u0131n\u0131n, son kullan\u0131c\u0131 aray\u00fcz\u00fcndeki (mobil veya masa\u00fcst\u00fc) h\u0131z ve ak\u0131c\u0131l\u0131k \u00fczerinde do\u011frudan etkisi vard\u0131r. Mobil uyumlu bir aray\u00fcz olu\u015fturan front-end geli\u015ftiriciler, veriyi h\u0131zl\u0131 bir \u015fekilde \u00e7ekebilmek i\u00e7in optimize edilmi\u015f SQL sorgular\u0131na ihtiya\u00e7 duyarlar. CSS'deki <code>@media<\/code> sorgular\u0131 mobil cihazlara \u00f6zel stil kurallar\u0131 tan\u0131mlasa da, bu stillerin beslendi\u011fi veri h\u0131zl\u0131 gelmezse, kullan\u0131c\u0131 deneyimi yine de k\u00f6t\u00fc olacakt\u0131r. Dolay\u0131s\u0131yla, optimize edilmi\u015f SQL sorgular\u0131, mobil uyumlu bir web uygulamas\u0131n\u0131n temelini olu\u015fturan h\u0131zl\u0131 veri eri\u015fimi i\u00e7in olmazsa olmazd\u0131r.<\/p>\n<pre><code>\n\/* \u00d6rnek bir mobil uyumlu CSS medya sorgusu *\/\n@media screen and (max-width: 768px) {\n  .container {\n    width: 95%;\n  }\n  .sidebar {\n    display: none;\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>SQL sorgular\u0131n\u0131z\u0131 bu ipu\u00e7lar\u0131 do\u011frultusunda optimize etmek, uygulaman\u0131z\u0131n genel performans\u0131n\u0131 art\u0131rarak hem geli\u015ftiriciler hem de son kullan\u0131c\u0131lar i\u00e7in daha iyi bir deneyim sa\u011flayacakt\u0131r. Performans optimizasyonu s\u00fcrekli bir s\u00fcre\u00e7tir ve d\u00fczenli izleme ile analiz gerektirir.<\/p>\n<h2>Sonu\u00e7: SQL Bilginizi S\u00fcrekli G\u00fcncel Tutman\u0131n Yollar\u0131 Nelerdir?<\/h2>\n<p>SQL, veri taban\u0131 y\u00f6netiminin ve veri analizinin temel ta\u015f\u0131 olmaya devam ediyor. Bu makalede, SQL'in temel komutlar\u0131ndan (<code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>), tablolar\u0131 birle\u015ftirmeye (<code>JOIN<\/code>), verileri gruplamaya ve \u00f6zetlemeye (<code>GROUP BY<\/code>, Aggregate Fonksiyonlar\u0131) ve son olarak sorgu performans\u0131n\u0131 optimize etmeye kadar geni\u015f bir yelpazede konular\u0131 ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, SQL sadece bir dil de\u011fil, ayn\u0131 zamanda veriyi anlama, sorgulama ve ondan de\u011fer yaratma sanat\u0131d\u0131r. Temelleri sa\u011flam atmak, daha karma\u015f\u0131k veri analizi ve y\u00f6netim g\u00f6revlerinin \u00fcstesinden gelmenizi sa\u011flayacak g\u00fc\u00e7l\u00fc bir temel olu\u015fturur. SQL'e hakim olmak, veri odakl\u0131 herhangi bir kariyer yolunda size rekabet avantaj\u0131 kazand\u0131racakt\u0131r. Ancak veri d\u00fcnyas\u0131 s\u00fcrekli geli\u015fti\u011fi i\u00e7in, SQL bilginizi s\u00fcrekli g\u00fcncel tutmak ve yeni \u00f6zellikleri takip etmek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r.<\/p>\n<p>Bilginizi g\u00fcncel tutmak i\u00e7in \u015funlar\u0131 yapabilirsiniz:<\/p>\n<ul>\n<li><strong>S\u00fcrekli Pratik Yap\u0131n:<\/strong> HackerRank, LeetCode gibi platformlarda SQL al\u0131\u015ft\u0131rmalar\u0131 \u00e7\u00f6zmek, bilgilerinizi canl\u0131 tutman\u0131n en iyi yoludur.<\/li>\n<li><strong>Ger\u00e7ek D\u00fcnya Projelerinde Kullan\u0131n:<\/strong> Kendi k\u00fc\u00e7\u00fck veri taban\u0131 projelerinizi olu\u015fturun veya a\u00e7\u0131k kaynakl\u0131 veri k\u00fcmeleri \u00fczerinde \u00e7al\u0131\u015f\u0131n.<\/li>\n<li><strong>Dok\u00fcmantasyonlar\u0131 Okuyun:<\/strong> Kulland\u0131\u011f\u0131n\u0131z veri taban\u0131 sisteminin (MySQL, PostgreSQL vb.) resmi dok\u00fcmantasyonunu d\u00fczenli olarak inceleyin.<\/li>\n<li><strong>Topluluklara Kat\u0131l\u0131n:<\/strong> SQL forumlar\u0131nda, Stack Overflow gibi platformlarda sorular sorun ve ba\u015fkalar\u0131n\u0131n sorular\u0131na cevap vererek \u00f6\u011frenin.<\/li>\n<li><strong>Bloglar\u0131 ve E\u011fitimleri Takip Edin:<\/strong> Sekt\u00f6rdeki yenilikleri ve en iyi uygulamalar\u0131 takip etmek i\u00e7in uzman bloglar\u0131n\u0131 ve online e\u011fitimleri izleyin.<\/li>\n<\/ul>\n<p>Unutmay\u0131n, \"Mastering SQL\" bir var\u0131\u015f noktas\u0131 de\u011fil, s\u00fcrekli bir \u00f6\u011frenme yolculu\u011fudur. Her yeni sorgu, her yeni problem size yeni bir \u015feyler \u00f6\u011fretme potansiyeline sahiptir. Veriyle \u00e7al\u0131\u015fmaktan keyif al\u0131n ve bu g\u00fc\u00e7l\u00fc dilin sundu\u011fu sonsuz imkanlar\u0131 ke\u015ffetmeye devam edin!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n        <strong>SQL \u00f6\u011frenmek ne kadar s\u00fcrer?<\/strong><\/p>\n<p>SQL'in temellerini \u00f6\u011frenmek genellikle birka\u00e7 hafta veya ay s\u00fcrebilir, ancak ileri d\u00fczey konularda ustala\u015fmak ve performans optimizasyonu becerileri kazanmak y\u0131llar s\u00fcren pratik ve deneyim gerektirebilir. Ki\u015fisel \u00f6\u011frenme h\u0131z\u0131n\u0131za ve harcad\u0131\u011f\u0131n\u0131z zamana ba\u011fl\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>SQL bilmek kariyerimde ne gibi kap\u0131lar a\u00e7ar?<\/strong><\/p>\n<p>SQL, veri analisti, veri bilimcisi, veri m\u00fchendisi, yaz\u0131l\u0131m geli\u015ftirici (\u00f6zellikle back-end), i\u015f zekas\u0131 uzman\u0131 ve veri taban\u0131 y\u00f6neticisi gibi bir\u00e7ok rolde temel bir beceridir. Veriyle ilgili hemen hemen her sekt\u00f6rde SQL bilgisine ihtiya\u00e7 duyulur ve bu size geni\u015f bir kariyer yelpazesi sunar.<\/p>\n<\/li>\n<li>\n        <strong>Farkl\u0131 SQL leh\u00e7eleri aras\u0131nda b\u00fcy\u00fck farklar var m\u0131?<\/strong><\/p>\n<p>Temel SQL komutlar\u0131 (<code>SELECT<\/code>, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code>, <code>JOIN<\/code>, <code>GROUP BY<\/code>) \u00e7o\u011fu veri taban\u0131 sistemi aras\u0131nda benzerdir. Ancak, pencere fonksiyonlar\u0131, tarih\/saat fonksiyonlar\u0131, depolanm\u0131\u015f prosed\u00fcrler veya baz\u0131 \u00f6zel optimizasyon ipu\u00e7lar\u0131 gibi ileri d\u00fczey \u00f6zelliklerde veri tabanlar\u0131 aras\u0131nda s\u00f6zdizimsel farkl\u0131l\u0131klar veya ek \u00f6zellikler bulunabilir.<\/p>\n<\/li>\n<li>\n        <strong>SQL'i hangi ara\u00e7larla kullanabilirim?<\/strong><\/p>\n<p>SQL sorgular\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak ve veri tabanlar\u0131n\u0131 y\u00f6netmek i\u00e7in bir\u00e7ok ara\u00e7 mevcuttur. Bunlar aras\u0131nda MySQL Workbench, pgAdmin (PostgreSQL i\u00e7in), SQL Server Management Studio (Microsoft SQL Server i\u00e7in), DBeaver (evrensel bir ara\u00e7) ve hatta komut sat\u0131r\u0131 aray\u00fczleri bulunur. \u00c7o\u011fu programlama dilinin (Python, Java, C# vb.) de veri tabanlar\u0131yla etkile\u015fim kurmak i\u00e7in k\u00fct\u00fcphaneleri ve API'leri vard\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>SQL \u00f6\u011frenmeye nereden ba\u015flamal\u0131y\u0131m?<\/strong><\/p>\n<p>\u00d6\u011frenmeye ba\u015flamak i\u00e7in en iyi yol, temel komutlar\u0131 (<code>SELECT<\/code>, <code>FROM<\/code>, <code>WHERE<\/code>) k\u00fc\u00e7\u00fck bir \u00f6rnek veri taban\u0131 \u00fczerinde pratik yaparak anlamakt\u0131r. Online kurslar, interaktif \u00f6\u011frenme platformlar\u0131 (\u00f6rne\u011fin Codecademy, Khan Academy'nin SQL dersleri) ve bu makale gibi kapsaml\u0131 rehberler harika ba\u015flang\u0131\u00e7 noktalar\u0131d\u0131r. Ard\u0131ndan, <code>JOIN<\/code>, <code>GROUP BY<\/code> gibi daha karma\u015f\u0131k konulara ge\u00e7i\u015f yapabilirsiniz.<\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"SQL&#8217;in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi&hellip;","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":[1505],"tags":[],"class_list":{"0":"post-35002","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","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>SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f<\/title>\n<meta name=\"description\" content=\"SQL&#039;in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.\" \/>\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\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f\" \/>\n<meta property=\"og:description\" content=\"SQL&#039;in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-24T15:31:07+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=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f\",\"datePublished\":\"2025-11-24T15:31:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\"},\"wordCount\":4365,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\",\"name\":\"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-24T15:31:07+00:00\",\"description\":\"SQL'in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden 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":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f","description":"SQL'in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.","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\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f","og_description":"SQL'in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.","og_url":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-24T15:31:07+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f","datePublished":"2025-11-24T15:31:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/"},"wordCount":4365,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/","url":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/","name":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden Giri\u015f","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-24T15:31:07+00:00","description":"SQL'in temellerini yeniden ke\u015ffedin! Bu kapsaml\u0131 rehberle veri tabanlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlayacak, temel sorgulardan karma\u015f\u0131k i\u015flemlere kadar SQL bilginizi sa\u011flamla\u015ft\u0131racaks\u0131n\u0131z. Veri analizi ve y\u00f6netimi becerilerinizi s\u0131f\u0131rdan zirveye ta\u015f\u0131y\u0131n.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sql-temellerinde-ustalasma-veri-dunyasina-yeniden-giris\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Temellerinde Ustala\u015fma: Veri D\u00fcnyas\u0131na Yeniden 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\/35002","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=35002"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35002\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}