{"id":441,"date":"2024-03-01T21:44:17","date_gmt":"2024-03-01T18:44:17","guid":{"rendered":"https:\/\/mudosdigital.com\/tr\/?p=441"},"modified":"2024-03-01T21:48:44","modified_gmt":"2024-03-01T18:48:44","slug":"sql-delimiter-nedir-ne-icin-kullanilir","status":"publish","type":"post","link":"https:\/\/mudosdigital.com\/tr\/sql-delimiter-nedir-ne-icin-kullanilir\/","title":{"rendered":"SQL &#8216;Delimiter&#8217; nedir, ne i\u00e7in kullan\u0131l\u0131r?"},"content":{"rendered":"\n<p>SQL sorgularda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z ilk gizemlerden biri <code>DELIMITER<\/code>&#8216;in ne i\u015fe yarad\u0131\u011f\u0131d\u0131r. Bu, \u00f6zellikle sakl\u0131 yordamlar, tetikleyiciler ve fonksiyonlar gibi daha karma\u015f\u0131k SQL yap\u0131lar\u0131n\u0131 ke\u015ffetmeye ba\u015flad\u0131\u011f\u0131m\u0131zda, \u00f6nemli bir rol oynar. S\u0131radan bir SQL kullan\u0131c\u0131s\u0131n\u0131n nadiren kar\u015f\u0131la\u015faca\u011f\u0131 bu \u00f6zellik, asl\u0131nda veritaban\u0131 d\u00fcnyas\u0131n\u0131n derinliklerinde gizli, g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Peki SQL delimiter kullan\u0131m\u0131 nas\u0131ld\u0131r? SQL delimiter \u00f6rnek kullan\u0131mlar\u0131 nelerdir?<\/p>\n\n\n\n<p><code>DELIMITER<\/code>, SQL ifadelerini birbirinden ay\u0131rmak i\u00e7in kullan\u0131lan gizemli bir sembol setidir ve bu semboller, SQL&#8217;in \u00e7ok katmanl\u0131 yap\u0131s\u0131n\u0131n do\u011fru \u015fekilde i\u015flenmesini sa\u011flar. Bu yaz\u0131da, <code>DELIMITER<\/code>&#8216;in nas\u0131l bir kurtar\u0131c\u0131 oldu\u011funu ve SQL b\u00fcy\u00fcc\u00fclerinin neden bu arac\u0131 sakl\u0131 tuttuklar\u0131n\u0131 ke\u015ffedece\u011fiz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SQL&#8217;de Delimiter nedir?<\/h2>\n\n\n\n<p>SQL&#8217;de <code>DELIMITER<\/code> kelimesi, SQL komutlar\u0131n\u0131 birbirinden ay\u0131rmak i\u00e7in kullan\u0131lan \u00f6zel bir karakter ya da karakter dizisini belirlemek i\u00e7in kullan\u0131l\u0131r. Bu, genellikle sakl\u0131 yordamlar (stored procedures), tetikleyiciler (triggers), fonksiyonlar (functions) veya batch SQL komutlar\u0131 yazarken gereklidir. \u00c7\u00fcnk\u00fc bu t\u00fcr yap\u0131lar i\u00e7erisinde, standart SQL ifade ay\u0131r\u0131c\u0131s\u0131 olan noktal\u0131 virg\u00fcl (<code>;<\/code>) kullan\u0131lmaya devam ederse, SQL motoru her noktal\u0131 virg\u00fclde ifadenin sona erdi\u011fini d\u00fc\u015f\u00fcn\u00fcr ve komutu erken \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015f\u0131r. Bu da genellikle s\u00f6z dizimi hatalar\u0131na yol a\u00e7ar.<\/p>\n\n\n<ul class=\"wp-block-latest-posts__list wp-block-latest-posts\"><li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/mudosdigital.com\/tr\/wordpress-yerel-gelistirme-ortami-docker-ile-adim-adim-rehber\/\">WordPress Yerel Geli\u015ftirme Ortam\u0131 \u2013 Docker ile Ad\u0131m Ad\u0131m Rehber<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/mudosdigital.com\/tr\/looker-studio-ile-tekil-sayfa-performans-grafigi-olusturma\/\">Looker Studio ile Tekil Sayfa Performans Grafi\u011fi Olu\u015fturma<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/mudosdigital.com\/tr\/seoda-vektor-nedir-semantik-arama-ve-siralamadaki-rolu\/\">SEO\u2019da Anahtar Kelime Vekt\u00f6rleri ve Semantik Aramadaki Rol\u00fc<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/mudosdigital.com\/tr\/tiklama-orani-to-nedir-anahtar-kelime-to-artirma-yollari\/\">T\u0131klama Oran\u0131 (TO) Nedir? Anahtar Kelime TO Art\u0131rma Yollar\u0131<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/mudosdigital.com\/tr\/googlebot-rehberi-nedir-nasil-calisir-ve-sitenizi-nasil-etkiler\/\">Googlebot Rehberi: Nedir, Nas\u0131l \u00c7al\u0131\u015f\u0131r ve Sitenizi Nas\u0131l Etkiler?<\/a><\/li>\n<\/ul>\n\n\n<p><code>DELIMITER<\/code> kullan\u0131m\u0131 genellikle MySQL veya MariaDB gibi veritaban\u0131 y\u00f6netim sistemlerinde g\u00f6r\u00fcl\u00fcr. Bu sistemlerde, <code>DELIMITER<\/code> kullanarak, SQL ifadelerini ay\u0131rmak i\u00e7in ge\u00e7ici olarak farkl\u0131 bir ayra\u00e7 belirleyebilirsiniz. Bu, sakl\u0131 yordamlar\u0131n veya di\u011fer karma\u015f\u0131k SQL bloklar\u0131n\u0131n i\u00e7inde noktal\u0131 virg\u00fcl kullanman\u0131za olanak tan\u0131r.<\/p>\n\n\n\n<p>\u00d6rne\u011fin, bir sakl\u0131 yordam olu\u015ftururken, yordam\u0131n ba\u015flang\u0131c\u0131n\u0131 ve sonunu belirlemek i\u00e7in <code>DELIMITER<\/code> kullanabilirsiniz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER \/\/ -- DELIMITER'\u0131 \/\/ olarak de\u011fi\u015ftiriyoruz\n\nCREATE PROCEDURE MyProcedure()\nBEGIN\n    -- Sakl\u0131 yordam\u0131n i\u00e7eri\u011fi\n    SELECT 'Hello, World!';\nEND\/\/\n\nDELIMITER ; -- DELIMITER'\u0131 tekrar noktal\u0131 virg\u00fcle \u00e7eviriyoruz<\/code><\/pre>\n\n\n\n<p>Bu \u00f6rnekte, <code>DELIMITER \/\/<\/code> ifadesi ile ayra\u00e7 <code>\/\/<\/code> olarak de\u011fi\u015ftirilmi\u015ftir. Bu sayede, sakl\u0131 yordam\u0131n i\u00e7indeki noktal\u0131 virg\u00fcller (<code>;<\/code>) komut sonu olarak alg\u0131lanmaz. Sakl\u0131 yordam tan\u0131m\u0131 <code>END\/\/<\/code> ile sonland\u0131r\u0131ld\u0131ktan sonra, <code>DELIMITER ;<\/code> ifadesi ile standart SQL ifade ay\u0131r\u0131c\u0131s\u0131 olan noktal\u0131 virg\u00fcle (<code>;<\/code>) geri d\u00f6n\u00fcl\u00fcr.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00d6rnekler<\/h2>\n\n\n\n<p>SQL <code>DELIMITER<\/code> kullan\u0131m\u0131yla ilgili daha fazla \u00f6rnek senaryo olu\u015fturmak, konunun daha iyi anla\u015f\u0131lmas\u0131n\u0131 sa\u011flayabilir. \u0130\u015fte bu kavram\u0131 farkl\u0131 durumlarda nas\u0131l kullanabilece\u011finize dair baz\u0131 senaryolar:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c7ok Ad\u0131ml\u0131 Sakl\u0131 Yordam Olu\u015fturma<\/h3>\n\n\n\n<p>Bir sakl\u0131 yordam i\u00e7erisinde birden fazla SQL komutu \u00e7al\u0131\u015ft\u0131rmak istedi\u011finizde, her bir komutu noktal\u0131 virg\u00fcl ile ay\u0131rman\u0131z gerekir. Ancak, bu sakl\u0131 yordam\u0131 olu\u015ftururken kullan\u0131lan noktal\u0131 virg\u00fcller, komutlar\u0131n erken sonlanmas\u0131na neden olabilir. Bu durumda <code>DELIMITER<\/code> kullanarak bu sorunu \u00e7\u00f6zebilirsiniz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER $$\n\nCREATE PROCEDURE UpdateAndNotify()\nBEGIN\n    UPDATE Customers SET status = 'Active' WHERE expires_at &lt; NOW(); -- Birinci komut\n    INSERT INTO Notifications (message) VALUES ('Customer status updated'); -- \u0130kinci komut\nEND $$\n\nDELIMITER ;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Tetikleyici Tan\u0131mlama<\/h3>\n\n\n\n<p>Tetikleyiciler, veritaban\u0131ndaki bir tabloya yap\u0131lan belirli i\u015flemler sonras\u0131 otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131lan \u00f6zel sakl\u0131 yordamlard\u0131r. Bir tetikleyici olu\u015ftururken, yine noktal\u0131 virg\u00fcl kullanman\u0131z gerekebilir. <code>DELIMITER<\/code> kullanarak, tetikleyicinin d\u00fczg\u00fcn bir \u015fekilde tan\u0131mlanmas\u0131n\u0131 sa\u011flayabilirsiniz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER $$\n\nCREATE TRIGGER AfterOrderInsert\nAFTER INSERT ON Orders\nFOR EACH ROW\nBEGIN\n    INSERT INTO AuditLog (description) VALUES ('New order added');\nEND $$\n\nDELIMITER ;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Fonksiyon Tan\u0131mlama<\/h3>\n\n\n\n<p>Bir SQL fonksiyonu tan\u0131mlarken de benzer bir durum s\u00f6z konusudur. Fonksiyon i\u00e7inde birden fazla SQL ifadesi kullan\u0131ld\u0131\u011f\u0131nda, <code>DELIMITER<\/code> kullan\u0131m\u0131 i\u015fleri kolayla\u015ft\u0131r\u0131r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER $$\n\nCREATE FUNCTION TotalOrders (customerId INT)\nRETURNS INT\nBEGIN\n    DECLARE orderCount INT;\n    SELECT COUNT(*) INTO orderCount FROM Orders WHERE customer_id = customerId;\n    RETURN orderCount;\nEND $$\n\nDELIMITER ;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Karma\u015f\u0131k SQL Scriptleri<\/h3>\n\n\n\n<p>B\u00fcy\u00fck ve karma\u015f\u0131k SQL scriptleri yazarken, birden \u00e7ok sakl\u0131 yordam, tetikleyici ve fonksiyon tan\u0131mlamalar\u0131n\u0131 i\u00e7erebilirsiniz. Bu t\u00fcr scriptlerde, her bir bile\u015feni ba\u015far\u0131yla tan\u0131mlamak i\u00e7in <code>DELIMITER<\/code>&#8216;in ak\u0131ll\u0131ca kullan\u0131lmas\u0131 gerekir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER $$\n\n-- Sakl\u0131 yordam tan\u0131m\u0131\nCREATE PROCEDURE ResetAccounts() BEGIN ... END $$\n\n-- Tetikleyici tan\u0131m\u0131\nCREATE TRIGGER CheckBalance AFTER UPDATE ON Accounts FOR EACH ROW BEGIN ... END $$\n\n-- Fonksiyon tan\u0131m\u0131\nCREATE FUNCTION CalculateInterest (amount DECIMAL(10,2)) RETURNS DECIMAL(10,2) BEGIN ... END $$\n\nDELIMITER ;<\/code><\/pre>\n\n\n\n<p>Bu \u00f6rnekler, <code>DELIMITER<\/code>&#8216;in SQL&#8217;de, \u00f6zellikle sakl\u0131 yordamlar, tetikleyiciler ve fonksiyonlar gibi karma\u015f\u0131k yap\u0131lar olu\u015ftururken nas\u0131l bir temel ta\u015f oldu\u011funu g\u00f6sterir. Her senaryoda, <code>DELIMITER<\/code> kullan\u0131m\u0131, SQL motorunun her bir komutu ve tan\u0131m\u0131 do\u011fru bir \u015fekilde i\u015flemesini sa\u011flar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL sorgularda kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z ilk gizemlerden biri DELIMITER&#8216;in ne i\u015fe yarad\u0131\u011f\u0131d\u0131r. Bu, \u00f6zellikle sakl\u0131 yordamlar, tetikleyiciler ve fonksiyonlar gibi daha karma\u015f\u0131k SQL yap\u0131lar\u0131n\u0131 ke\u015ffetmeye ba\u015flad\u0131\u011f\u0131m\u0131zda, \u00f6nemli bir rol oynar. S\u0131radan bir SQL kullan\u0131c\u0131s\u0131n\u0131n nadiren kar\u015f\u0131la\u015faca\u011f\u0131 bu \u00f6zellik, asl\u0131nda veritaban\u0131 d\u00fcnyas\u0131n\u0131n derinliklerinde gizli, g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Peki SQL delimiter kullan\u0131m\u0131 nas\u0131ld\u0131r? SQL delimiter \u00f6rnek kullan\u0131mlar\u0131 nelerdir? DELIMITER, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[40,37,36,41],"class_list":["post-441","post","type-post","status-publish","format-standard","hentry","category-blog","tag-delimiter","tag-mariadb","tag-mysql","tag-sql"],"_links":{"self":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/comments?post=441"}],"version-history":[{"count":3,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/441\/revisions"}],"predecessor-version":[{"id":447,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/posts\/441\/revisions\/447"}],"wp:attachment":[{"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/media?parent=441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/categories?post=441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mudosdigital.com\/tr\/wp-json\/wp\/v2\/tags?post=441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}