{"id":8815,"date":"2026-01-23T22:12:26","date_gmt":"2026-01-23T19:12:26","guid":{"rendered":"https:\/\/sunucun.com.tr\/bilgi\/?post_type=dt_articles&#038;p=8815"},"modified":"2026-01-23T22:13:32","modified_gmt":"2026-01-23T19:13:32","slug":"mysql-join-islemleri","status":"publish","type":"post","link":"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/","title":{"rendered":"MySQL Join \u0130\u015flemleri"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#Temel_MySQL_Join_Islemleri_ve_Cesitleri\" >Temel MySQL Join \u0130\u015flemleri ve \u00c7e\u015fitleri<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#INNER_JOIN\" >INNER JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#LEFT_JOIN\" >LEFT JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#RIGHT_JOIN\" >RIGHT JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#FULL_JOIN\" >FULL JOIN<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sunucun.com.tr\/blog\/mysql-join-islemleri\/#CROSS_JOIN\" >CROSS JOIN<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<figure class=\"wp-block-image aligncenter size-medium is-resized\">\n  <img src=\"https:\/\/sunucun.com.tr\/blog\/wp-content\/uploads\/2026\/01\/text-mysql-join-islemleri.jpg\" class=\"size-medium aligncenter\" style=\"width:100%;\" alt=\"MySQL Join \u0130\u015flemleri, INNER JOIN kullanarak iki tablodaki yaln\u0131zca e\u015fle\u015fen kay\u0131tlar\u0131 nas\u0131l birle\u015ftirdi\u011fini g\u00f6sterir.\" title=\"Veri K\u00fcmelerinin INNER JOIN ile Kesi\u015fimi\" loading=\"lazy\" decoding=\"async\"><figcaption>\n    MySQL Join \u0130\u015flemleri, INNER JOIN kullanarak iki tablodaki yaln\u0131zca e\u015fle\u015fen kay\u0131tlar\u0131 nas\u0131l birle\u015ftirdi\u011fini g\u00f6sterir.<br \/>\n  <\/figcaption><\/figure>\n<p>\nMySQL Join \u0130\u015flemleri<\/p>\n<p>Veritaban\u0131 y\u00f6netim sistemlerinde, veriler genellikle birbiriyle ili\u015fkili birden fazla tabloda saklan\u0131r. Bu tablolar aras\u0131ndaki ili\u015fkileri kullanarak anlaml\u0131 ve birle\u015fik veri setleri olu\u015fturmak, veri analizi ve raporlama s\u00fcre\u00e7lerinin temelini olu\u015fturur. <strong>MySQL Join \u0130\u015flemleri<\/strong>, bu da\u011f\u0131n\u0131k verileri tek bir sorgu alt\u0131nda birle\u015ftirerek karma\u015f\u0131k sorulara yan\u0131t bulmam\u0131z\u0131 sa\u011flayan g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r. Farkl\u0131 senaryolara y\u00f6nelik olarak geli\u015ftirilmi\u015f \u00e7e\u015fitli join t\u00fcrleri, veri ili\u015fkilerini do\u011fru bir \u015fekilde y\u00f6netmek ve sorgu performans\u0131n\u0131 optimize etmek i\u00e7in kritik bir rol oynar. Bu makalede, en yayg\u0131n kullan\u0131lan MySQL join t\u00fcrlerini derinlemesine inceleyecek ve her birinin pratik kullan\u0131m alanlar\u0131n\u0131 somut \u00f6rneklerle a\u00e7\u0131klayaca\u011f\u0131z. Etkili bir veritaban\u0131 sorgulamas\u0131 i\u00e7in bu mekanizmalar\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korumak ve istenen sonu\u00e7lar\u0131 hassas bir \u015fekilde elde etmek i\u00e7in zorunludur.<\/p>\n<p>Veritaban\u0131 tasar\u0131m\u0131nda <a href=\"https:\/\/tr.wikipedia.org\/wiki\/Veritaban%C4%B1_normalizasyonu\" rel=\"follow noopener\" target=\"_blank\">normalizasyon kurallar\u0131<\/a> gere\u011fi bilgiler farkl\u0131 tablolara b\u00f6l\u00fcn\u00fcr. \u00d6rne\u011fin, m\u00fc\u015fteri bilgileri bir tabloda, bu m\u00fc\u015fterilerin sipari\u015fleri ise ba\u015fka bir tabloda tutulur. \u0130\u015fte bu noktada, belirli bir m\u00fc\u015fterinin t\u00fcm sipari\u015flerini listelemek istedi\u011fimizde join i\u015flemleri devreye girer. Her bir join t\u00fcr\u00fc, tablolar\u0131 birle\u015ftirirken farkl\u0131 bir mant\u0131k izler ve bu nedenle do\u011fru join t\u00fcr\u00fcn\u00fc se\u00e7mek, sorgu sonucunun do\u011frulu\u011funu do\u011frudan etkiler. Daha fazla teknik ayr\u0131nt\u0131 ve s\u00f6zdizimi i\u00e7in <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/join.html\" target=\"_blank\" rel=\"noopener\">resmi MySQL dok\u00fcmantasyonunu<\/a> incelemek, temel bilgileri peki\u015ftirmek ad\u0131na faydal\u0131 olacakt\u0131r.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Temel_MySQL_Join_Islemleri_ve_Cesitleri\"><\/span>Temel MySQL Join \u0130\u015flemleri ve \u00c7e\u015fitleri<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>MySQL, farkl\u0131 veri birle\u015ftirme ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamak \u00fczere \u00e7e\u015fitli join operat\u00f6rleri sunar. Her biri, tablolar aras\u0131ndaki e\u015fle\u015fme ko\u015fullar\u0131na g\u00f6re farkl\u0131 sonu\u00e7 k\u00fcmeleri \u00fcretir. Bu b\u00f6l\u00fcmde, <code>INNER JOIN<\/code>, <code>LEFT JOIN<\/code>, <code>RIGHT JOIN<\/code>, <code>FULL JOIN<\/code> ve <code>CROSS JOIN<\/code> gibi temel join t\u00fcrlerini ele alaca\u011f\u0131z.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"INNER_JOIN\"><\/span>INNER JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>INNER JOIN<\/strong>, iki veya daha fazla tablo aras\u0131nda, belirtilen ko\u015fula uyan ve her iki tabloda da kar\u015f\u0131l\u0131\u011f\u0131 olan kay\u0131tlar\u0131 getiren en temel ve en s\u0131k kullan\u0131lan join t\u00fcr\u00fcd\u00fcr. Bu birle\u015ftirme mant\u0131\u011f\u0131, iki veri k\u00fcmesinin kesi\u015fimini almak gibidir. E\u011fer bir tablodaki sat\u0131r\u0131n birle\u015ftirme s\u00fctunundaki de\u011feri di\u011fer tabloda mevcut de\u011filse, o sat\u0131r sonu\u00e7 k\u00fcmesine dahil edilmez. Bu nedenle, yaln\u0131zca tam e\u015fle\u015fen verileri analiz etmek istedi\u011finizde ideal bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p><em>\u00d6rnek Sorgu:<\/em><\/p>\n<p><code>SELECT orders.order_id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;<\/code><\/p>\n<p>Bu sorgu, &#8220;orders&#8221; ve &#8220;customers&#8221; tablolar\u0131n\u0131 <code>customer_id<\/code> s\u00fctunu \u00fczerinden birle\u015ftirir. Yaln\u0131zca &#8220;orders&#8221; tablosunda m\u00fc\u015fteri ID&#8217;si bulunan ve bu ID&#8217;nin &#8220;customers&#8221; tablosunda da bir kar\u015f\u0131l\u0131\u011f\u0131 oldu\u011fu sipari\u015fleri ve ilgili m\u00fc\u015fteri adlar\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. Sipari\u015fi olan ancak m\u00fc\u015fteri kayd\u0131 silinmi\u015f bir m\u00fc\u015fteri veya hi\u00e7 sipari\u015f vermemi\u015f bir m\u00fc\u015fteri bu sonu\u00e7 listesinde yer almaz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"LEFT_JOIN\"><\/span>LEFT JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>LEFT JOIN<\/strong> (veya <code>LEFT OUTER JOIN<\/code>), soldaki (ilk belirtilen) tablodaki <em>t\u00fcm<\/em> sat\u0131rlar\u0131 ve sa\u011fdaki (ikinci belirtilen) tablodan yaln\u0131zca e\u015fle\u015fen sat\u0131rlar\u0131 getirir. E\u011fer sa\u011fdaki tabloda bir e\u015fle\u015fme bulunamazsa, sa\u011f tablodan gelmesi beklenen s\u00fctunlar\u0131n de\u011ferleri <em>NULL<\/em> olarak ayarlan\u0131r. Bu join t\u00fcr\u00fc, bir ana tablodaki t\u00fcm kay\u0131tlar\u0131 korumak ve bu kay\u0131tlara ili\u015fkin ek bilgileri (varsa) ba\u015fka bir tablodan eklemek istedi\u011finizde kullan\u0131l\u0131r. \u00d6rne\u011fin, t\u00fcm sipari\u015fleri ve varsa bu sipari\u015fleri veren m\u00fc\u015fterilerin bilgilerini listelemek i\u00e7in idealdir.<\/p>\n<p><em>\u00d6rnek Sorgu:<\/em><\/p>\n<p><code>SELECT orders.order_id, customers.name FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id;<\/code><\/p>\n<p>Bu sorgu, &#8220;orders&#8221; tablosundaki b\u00fct\u00fcn sipari\u015fleri listeler. Her sipari\u015f i\u00e7in ilgili m\u00fc\u015fteri ad\u0131n\u0131 &#8220;customers&#8221; tablosundan al\u0131r. E\u011fer bir sipari\u015fin <code>customer_id<\/code> de\u011feri &#8220;customers&#8221; tablosunda bulunmuyorsa (\u00f6rne\u011fin, misafir sipari\u015fi veya hatal\u0131 veri), <code>customers.name<\/code> s\u00fctunu o sat\u0131r i\u00e7in <em>NULL<\/em> de\u011feriyle d\u00f6ner. B\u00f6ylece hi\u00e7bir sipari\u015f kayd\u0131n\u0131 kaybetmemi\u015f olursunuz.<\/p>\n<p><\/p>\n<figure class=\"wp-block-image aligncenter size-medium is-resized\">\n  <img src=\"https:\/\/sunucun.com.tr\/blog\/wp-content\/uploads\/2026\/01\/text2-mysql-join-islemleri.jpg\" class=\"size-medium aligncenter\" style=\"width:100%;\" alt=\"MySQL Join \u0130\u015flemleri ile farkl\u0131 tablolardaki ili\u015fkili verilerin birle\u015ftirilmesi ve sorgulanmas\u0131 s\u00fcreci.\" title=\"Veritaban\u0131 Tablolar\u0131 Aras\u0131nda \u0130li\u015fkisel Veri Ba\u011flant\u0131s\u0131\" loading=\"lazy\" decoding=\"async\"><figcaption>\n    MySQL Join \u0130\u015flemleri ile farkl\u0131 tablolardaki ili\u015fkili verilerin birle\u015ftirilmesi ve sorgulanmas\u0131 s\u00fcreci.<br \/>\n  <\/figcaption><\/figure>\n<p><\/p>\n<h3><span class=\"ez-toc-section\" id=\"RIGHT_JOIN\"><\/span>RIGHT JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>RIGHT JOIN<\/strong> (veya <code>RIGHT OUTER JOIN<\/code>), <code>LEFT JOIN<\/code>&#8216;in tam tersi mant\u0131kla \u00e7al\u0131\u015f\u0131r. Sa\u011fdaki (ikinci belirtilen) tablodaki <em>t\u00fcm<\/em> sat\u0131rlar\u0131 ve soldaki (ilk belirtilen) tablodan yaln\u0131zca e\u015fle\u015fen sat\u0131rlar\u0131 getirir. Soldaki tabloda bir e\u015fle\u015fme bulunamazsa, sol tablodan gelmesi beklenen s\u00fctunlar\u0131n de\u011ferleri <em>NULL<\/em> olarak ayarlan\u0131r. Bu join, sa\u011fdaki tablonun veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korumak istedi\u011finiz senaryolar i\u00e7in uygundur. \u00d6rne\u011fin, t\u00fcm m\u00fc\u015fterileri ve varsa verdikleri sipari\u015fleri g\u00f6rmek istedi\u011finizde kullan\u0131l\u0131r.<\/p>\n<p><em>\u00d6rnek Sorgu:<\/em><\/p>\n<p><code>SELECT orders.order_id, customers.name FROM orders RIGHT JOIN customers ON orders.customer_id = customers.customer_id;<\/code><\/p>\n<p>Bu sorgu, &#8220;customers&#8221; tablosundaki b\u00fct\u00fcn m\u00fc\u015fterileri listeler. Her m\u00fc\u015fteri i\u00e7in, &#8220;orders&#8221; tablosundan verdikleri sipari\u015flerin ID&#8217;sini getirir. E\u011fer bir m\u00fc\u015fteri hi\u00e7 sipari\u015f vermemi\u015fse, <code>orders.order_id<\/code> s\u00fctunu o m\u00fc\u015fteri i\u00e7in <em>NULL<\/em> olarak g\u00f6r\u00fcn\u00fcr. Bu sayede hangi m\u00fc\u015fterilerin hi\u00e7 aktif olmad\u0131\u011f\u0131n\u0131 kolayca tespit edebilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"FULL_JOIN\"><\/span>FULL JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>FULL JOIN<\/strong> (veya <code>FULL OUTER JOIN<\/code>), hem sol hem de sa\u011f tablodaki <em>t\u00fcm<\/em> sat\u0131rlar\u0131 birle\u015ftirir. E\u015fle\u015fme olan sat\u0131rlar i\u00e7in her iki tablodan da veriler getirilir. E\u015fle\u015fme olmayan sat\u0131rlar i\u00e7in ise, hangi tabloda veri eksikse o tablodan gelen s\u00fctunlara <em>NULL<\/em> de\u011feri atan\u0131r. Bu join t\u00fcr\u00fc, her iki tablodaki verilerin tamam\u0131n\u0131 tek bir sonu\u00e7 setinde g\u00f6rmek ve hangi kayd\u0131n hangi tabloda kar\u015f\u0131l\u0131\u011f\u0131 olmad\u0131\u011f\u0131n\u0131 analiz etmek i\u00e7in kullan\u0131l\u0131r. MySQL&#8217;de <code>FULL JOIN<\/code> anahtar kelimesi do\u011frudan desteklenmez; ancak bu i\u015flevsellik, <code>LEFT JOIN<\/code> ve <code>RIGHT JOIN<\/code> sorgular\u0131n\u0131n <code>UNION<\/code> ile birle\u015ftirilmesiyle elde edilebilir.<\/p>\n<p><em>\u00d6rnek Sorgu (MySQL&#8217;de Sim\u00fclasyon):<\/em><\/p>\n<p><code>SELECT orders.order_id, customers.name FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id UNION SELECT orders.order_id, customers.name FROM orders RIGHT JOIN customers ON orders.customer_id = customers.customer_id;<\/code><\/p>\n<p>Bu birle\u015fik sorgu, hem t\u00fcm sipari\u015fleri (e\u015fle\u015fen m\u00fc\u015fteri bilgileriyle) hem de t\u00fcm m\u00fc\u015fterileri (e\u015fle\u015fen sipari\u015f bilgileriyle) tek bir listede toplar. Sonu\u00e7 olarak, hi\u00e7 sipari\u015f vermemi\u015f m\u00fc\u015fteriler ve m\u00fc\u015fteri bilgisi olmayan sipari\u015fler de dahil olmak \u00fczere her iki tablodaki t\u00fcm kay\u0131tlar sonu\u00e7 k\u00fcmesinde yer al\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"CROSS_JOIN\"><\/span>CROSS JOIN<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>CROSS JOIN<\/strong>, iki tablo aras\u0131nda kartezyen \u00e7arp\u0131m olu\u015fturur. Yani, ilk tablodaki her bir sat\u0131r\u0131, ikinci tablodaki her bir sat\u0131rla tek tek e\u015fle\u015ftirir. Bu birle\u015ftirme t\u00fcr\u00fcnde bir <code>ON<\/code> ko\u015fulu belirtilmez. Sonu\u00e7 olarak ortaya \u00e7\u0131kan sat\u0131r say\u0131s\u0131, ilk tablodaki sat\u0131r say\u0131s\u0131n\u0131n ikinci tablodaki sat\u0131r say\u0131s\u0131yla \u00e7arp\u0131m\u0131na e\u015fittir. Genellikle b\u00fcy\u00fck veri setlerinde performans\u0131 olumsuz etkileyebilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r. Ancak test verisi olu\u015fturmak veya t\u00fcm olas\u0131 kombinasyonlar\u0131 g\u00f6rmek gereken \u00f6zel durumlarda olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p><em>\u00d6rnek Sorgu:<\/em><\/p>\n<p><code>SELECT * FROM products CROSS JOIN categories;<\/code><\/p>\n<p>Bu sorgu, &#8220;products&#8221; tablosundaki her bir \u00fcr\u00fcn\u00fc, &#8220;categories&#8221; tablosundaki her bir kategoriyle e\u015fle\u015ftirerek devasa bir sonu\u00e7 k\u00fcmesi olu\u015fturur. \u00d6rne\u011fin, 100 \u00fcr\u00fcn ve 10 kategori varsa, sonu\u00e7ta 1000 sat\u0131rl\u0131k bir tablo elde edilir. Bu, her \u00fcr\u00fcn\u00fcn her kategoriye atanm\u0131\u015f gibi oldu\u011fu bir kombinasyon listesi sunar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MySQL Join \u0130\u015flemleri, INNER JOIN kullanarak iki tablodaki yaln\u0131zca e\u015fle\u015fen kay\u0131tlar\u0131 nas\u0131l birle\u015ftirdi\u011fini g\u00f6sterir. MySQL Join \u0130\u015flemleri Veritaban\u0131 y\u00f6netim sistemlerinde, veriler genellikle birbiriyle ili\u015fkili birden fazla tabloda saklan\u0131r. Bu tablolar aras\u0131ndaki ili\u015fkileri kullanarak anlaml\u0131 ve birle\u015fik veri setleri olu\u015fturmak, veri analizi ve raporlama s\u00fcre\u00e7lerinin temelini olu\u015fturur. MySQL Join \u0130\u015flemleri, bu da\u011f\u0131n\u0131k verileri tek bir sorgu&hellip;<\/p>\n","protected":false},"author":1,"featured_media":18879,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[1470],"tags":[],"class_list":["post-8815","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysql"],"_links":{"self":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=8815"}],"version-history":[{"count":3,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8815\/revisions"}],"predecessor-version":[{"id":18882,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8815\/revisions\/18882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/media\/18879"}],"wp:attachment":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=8815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=8815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=8815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}