﻿
{"id":164,"date":"2012-03-12T21:59:04","date_gmt":"2012-03-12T21:59:04","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=164"},"modified":"2012-05-01T20:34:53","modified_gmt":"2012-05-01T20:34:53","slug":"transact-sqlinsert-bulk-insert-update-delete-truncate-identity-rowncount-checkident","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/transact-sqlinsert-bulk-insert-update-delete-truncate-identity-rowncount-checkident\/","title":{"rendered":"Transact Sql(Insert-Bulk Insert-Update-Delete-Truncate-@@Identity-@@Rowncount-Checkident)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131mda insert,update ve delete komutlar\u0131n\u0131n ayr\u0131nt\u0131lar\u0131n\u0131 g\u00f6rece\u011fiz.<br \/>\n<!--more--><strong><span style=\"color: #ff0000;\">INSERT \u00d6ZET<\/span><\/strong><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert into Personeller(Adi,SoyAdi) values('ggg','aaa')\r\n<\/pre>\n<hr \/>\n<p>into kullanmadanda yaz\u0131labilir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller(Adi,SoyAdi) values('ggg','aaa')\r\n<\/pre>\n<hr \/>\n<p>Kolonun kabul etti\u011fi veri tipinde ve karakter uzunlu\u011funda kay\u0131t yap\u0131lmal\u0131d\u0131r.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller(Adi,SoyAdi) values('Gen\u00e7ay','uzunkavakalt\u0131ndayataruyuro\u011fullar\u0131')\r\n<\/pre>\n<hr \/>\n<p>\u2018String or binary data would be truncated\u2019 hatas\u0131 al\u0131n\u0131r.Bunun anlam\u0131 veri girilen kolona veri tipinin uymad\u0131\u011f\u0131n\u0131 ya da karakter uzunlu\u011funun uymad\u0131\u011f\u0131n\u0131 belirtir.<\/p>\n<p>\u201cNot Null\u201d olarak ayarl\u0131 kolonlara mutlaka de\u011fer g\u00f6nderilmelidir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller(Adi,SoyAdi,Unvan) values('Gen\u00e7ay',\u2019Y\u0131ld\u0131z\u2019,Null)\r\n<\/pre>\n<hr \/>\n<p>Null olabilir olarak ayarlanan kolona normal de\u011fer g\u00f6nderilebilece\u011fi gibi,Null de\u011ferde g\u00f6nderilebilir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller(Adi,SoyAdi) values('Gen\u00e7ay','Y\u0131ld\u0131z')\r\ninsert Personeller(Adi,SoyAdi) values('Mehmet','\u00c7akmak')\r\ninsert Personeller(Adi,SoyAdi) values('Ali','Y\u0131ld\u0131r\u0131m')\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi 3 kay\u0131t yap\u0131lm\u0131\u015ft\u0131r.Bunu a\u015fa\u011f\u0131daki gibi daha sade bir \u015fekilde de yapabiliriz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller(Adi,SoyAdi) values('Gen\u00e7ay','Y\u0131ld\u0131z'),\r\n('Mehmet','\u00c7akmak'),\r\n('Ali','Y\u0131ld\u0131r\u0131m')\r\n<\/pre>\n<hr \/>\n<p>E\u011fer bir tablonun t\u00fcm kolonlar\u0131na veri g\u00f6nderilecekse () i\u00e7ine kolon ismi yazmak zorunda de\u011filiz.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert Personeller() values('kolon1 veri','kolon2 veri','kolon.. veri')\r\n<\/pre>\n<hr \/>\n<p>\u015eimdi \u201cNorthwind\u201d veritaban\u0131m\u0131za,i\u00e7inde sadece isim ve soyisim olan iki kolonluk,\u201dp\u201d ad\u0131nda bir tablo yapal\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ninsert P select Adi,SoyAdi from Personeller\r\n<\/pre>\n<hr \/>\n<p>Olu\u015fturdu\u011fumuz \u201cp\u201d isimli tablomuza,select sorgusundan d\u00f6nen b\u00fct\u00fcn verileri atm\u0131\u015f bulunuyoruz.<br \/>\nAma dikkat etmemiz gereken husus var,<br \/>\nSelect sorgusundan d\u00f6nen kolon say\u0131s\u0131 ile insert edilmek istenen tablonun kolon say\u0131s\u0131 e\u015fit olmal\u0131d\u0131r.Ayriyetten bu kolonlar\u0131n veri tipleride e\u015fit olmal\u0131d\u0131r.<\/p>\n<p>Yukarda manuel olarak \u201cp\u201d isminde bir tablo olu\u015fturup \u201cinsert\u201d komutuyla \u201cselect\u201d ifadesinden d\u00f6nen verileri i\u00e7ine insert ettik.Birde hi\u00e7 tablo olu\u015fturmadan \u201cselect\u201d ifadesiyle otomatik tablo olu\u015fturur ve i\u00e7ine insert yap\u0131lmas\u0131n\u0131 sa\u011flayabiliriz.<\/p>\n<p>Bu i\u015flem \u201cselect into\u201d komutu ile yap\u0131labilir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nselect * into deneme from Personeller\r\n<\/pre>\n<hr \/>\n<p>Personeller tablosundan t\u00fcm kolonlar\u0131(*) \u00e7ek.Deneme isminde bir tablo olu\u015ftur ve i\u00e7ine insert et.Bu y\u00f6ntemle olu\u015fturulan deneme isimli tabloda primary key anahtar ve foreign key ler olu\u015fturulmaz.<\/p>\n<p><strong><span style=\"color: #ff0000;\">BULK INSERT (Bir text dosyas\u0131ndaki verileri bir tabloya insert etmek )<\/span><\/strong><\/p>\n<p>\u00d6nceden haz\u0131rlad\u0131\u011f\u0131m\u0131z \u201cdeneme3\u201d ismindeki tabloya C dizisindeki deneme.txt dosyas\u0131ndaki verileri aktaral\u0131m.<\/p>\n<p>Tabi \u00f6ncelikle deneme3 tablosundaki kolonlar .txt dosyas\u0131ndaki kolonlarla ayn\u0131 say\u0131da olmal\u0131d\u0131r.<br \/>\n.txt dosyas\u0131ndaki kolonlar\u0131,stunlar\u0131,sat\u0131rlar\u0131 nas\u0131l anl\u0131caz diye sorarsan\u0131z e\u011fer \u201cTAB\u201d ve \u201cENTER\u201d ayra\u00e7lar\u0131n\u0131 kullanaca\u011f\u0131z.\u201dTAB\u201d ile ayr\u0131lm\u0131\u015f olanlar kolonlar\u0131,\u201dENTER\u201d ile ayr\u0131lm\u0131\u015f olanlarda sat\u0131rlar\u0131 temsil etmektedir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nbulk insert deneme3\r\nfrom 'C:\\deneme.txt'\r\nwith\r\n(\r\nfieldterminator = '\\t', -- .txt dosyas\u0131nda kolonlar \u201cTAB\u201d ile ayr\u0131lm\u0131\u015f.\r\nrowterminator = '\\n' -- .txt dosyas\u0131nda say\u0131rlar \u201cENTER\u201d ile ayr\u0131lm\u0131\u015f.\r\n)\r\n<\/pre>\n<hr \/>\n<p><strong><span style=\"color: #ff0000;\">UPDATE \u00d6ZET<\/span><\/strong><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate Personeller set Adi='Gen\u00e7ay'\r\n<\/pre>\n<hr \/>\n<p>Dikkat! \u201cPersoneller\u201d tablosundaki \u201cAdi\u201d kolonunun hepsi \u201cGen\u00e7ay\u201d diye g\u00fcncellenir.\u015eart yazmam\u0131z laz\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate Personeller set Adi='Gen\u00e7ay' where Adi='ggg'\r\n<\/pre>\n<hr \/>\n<p>\u201cAdi\u201d,\u201cggg\u201d olan verilerin \u201cAdi\u201d ni \u201cGen\u00e7ay\u201d yapt\u0131k.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate Nakliyeciler set SirketAdi+='-ltd'\r\n<\/pre>\n<hr \/>\n<p>\u201cNakliyeciler\u201d tablosundaki \u201cSirketAdi\u201d kolonundaki verilerin sonuna \u201c-ltd\u201d ekledik.<br \/>\nBa\u015fka bir tablo kullanarak g\u00fcncelleme yapmak.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate Urunler set Urunler.UrunAdi=Kategoriler.KategoriAdi from Urunler inner join Kategoriler on Urunler.KategoriID=Kategoriler.KategoriID\r\n<\/pre>\n<hr \/>\n<p>\u201cset\u201d kodundan sonraki \u201cUrunler.UrunAdi=Kategoriler.KategoriAdi\u201d\u00a0 anlam\u0131 \u201cUrunler\u201d tablosundaki \u201cUrunAdi\u201d kolonuna , \u201cKategoriler\u201d tablosundaki \u201cKategoriAdi\u201d kolonunundaki verileri at.Tabi bunlar\u0131 yapabilmek i\u00e7in bu iki tablo aras\u0131nda ba\u011flant\u0131 kurmamuz gerekecektir.\u201dfrom\u201d etiketini yaz\u0131p bu iki tablo \u00fczerinden inner join yaparak ba\u011flant\u0131 kuruyoruz.<\/p>\n<p>Subquery ile g\u00fcncelleme yapmak.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate Urunler set UrunAdi = (select Adi from Personeller where UnvanEki='Dr.')\r\n<\/pre>\n<hr \/>\n<p>Top ifadesi ile g\u00fcncelleme<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nupdate top(4) Urunler set UrunAdi='X-' + UrunAdi\r\n<\/pre>\n<hr \/>\n<p>\u0130lk 4 \u00fcr\u00fcn\u00fcm\u00fcn ad\u0131n\u0131n ba\u015f\u0131na \u201cX-\u201c koy.Dikkat etmemiz gereken nokta , select yaparken \u201ctop 4\u201d olurken,update te \u201ctop (4)\u201d yani parantez i\u00e7inde olmal\u0131d\u0131r.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>DELETE \u00d6ZET<\/strong><\/span><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndelete from Personeller\r\n<\/pre>\n<hr \/>\n<p>Dikkat! Bu \u015fekilde \u201cPersoneller\u201d tablosundaki veriler u\u00e7ma\u011fa var\u0131rlar.\u015eart yazmam\u0131z gerekiyor.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndelete from Personeller where Adi='Gen\u00e7ay'\r\n<\/pre>\n<hr \/>\n<p>Ad\u0131 ,Gen\u00e7ay olan verilerin hepsini sil.<\/p>\n<p>NOT : Delete ile tablodaki t\u00fcm kay\u0131tlar silinse bile, identity olan kolon s\u0131f\u0131rlanmaz. identity olan kolon da s\u0131f\u0131rlanarak tablodaki t\u00fcm kay\u0131tlar silinmek isteniyorsa truncate kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p><strong><span style=\"color: #ff0000;\">TRUNCATE<\/span><\/strong><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ntruncate table p\r\n<\/pre>\n<hr \/>\n<p>Bu i\u015flemden sonra p tablosundaki identity olan kolon s\u0131f\u0131rlanacakt\u0131r.<\/p>\n<p>Not:Delete ile tablo temizlenirken where \u015fart\u0131 kullan\u0131labilir ama truncate te kullan\u0131lamaz.Bunun sebebi, veritaban\u0131m\u0131z\u0131 haz\u0131rlam\u0131\u015f\u0131z,her\u015fey tamam,testler bilmemneler yap\u0131lm\u0131\u015f ve m\u00fc\u015fteriye verilmeyi bekliyor.Son kez truncate yap\u0131larak sanki yeni tasarlanm\u0131\u015f ve hi\u00e7 ellenmemi\u015f bir veritaban\u0131n\u0131 m\u00fc\u015fteriye teslim ediyoruz.<\/p>\n<p><strong><span style=\"color: #ff0000;\">@@IDENTITY&#8211;@@ROWCOUNT<\/span><\/strong><\/p>\n<p><span style=\"color: #99cc00;\">@@identity =<\/span> En son eklenen kayd\u0131n,identity olarak tan\u0131mlanm\u0131\u015f kolonundaki veriyi getirir.<br \/>\n<span style=\"color: #99cc00;\">@@rowcount =<\/span> Yap\u0131lan i\u015flem sonucunda,ka\u00e7 kay\u0131tl\u0131k bir i\u015flem yap\u0131ld\u0131\u011f\u0131n\u0131 s\u00f6yler.<\/p>\n<p>\u015eimdi @@identity ile ilgili bir \u00f6rnek yapal\u0131m.<\/p>\n<p>\u00d6ncelikle en son eklenen personelimin personel id sininin ka\u00e7 oldu\u011funu g\u00f6stertelim.<br \/>\n(PersonelId kolonu identitydir.)<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n1.Yol &gt;&gt; select MAX(PersonelID) from Personeller\r\n2.Yol &gt;&gt; select top 1 PersonelID from Personeller order by PersonelID desc\r\n3.Yol &gt;&gt; insert Personeller(Adi,SoyAdi) values('Gen\u00e7ay','Y\u0131ld\u0131z')\r\nselect @@IDENTITY\r\n<\/pre>\n<hr \/>\n<p>\u015eimdide @@rowcount komutunu \u00f6rneklendirelim.<\/p>\n<p>Bakal\u0131m delete i\u015flemi sonucunda ka\u00e7 kay\u0131t silinmi\u015f.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndelete from Personeller where Adi='Gen\u00e7ay'\r\nselect @@ROWCOUNT\r\n<\/pre>\n<hr \/>\n<p><strong><span style=\"color: #ff0000;\">\u0130STED\u0130\u011e\u0130M\u0130Z TABLONUN IDENTITY \u00d6ZELL\u0130KL\u0130 KOLONUNU \u0130STED\u0130\u011e\u0130M\u0130Z DE\u011eERDE BA\u015eLATMA<\/span><\/strong><\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndbcc checkident(Personeller,reseed,27)\r\n<\/pre>\n<hr \/>\n<p>\u00dcsteki komut sayesinde \u201cPersoneller\u201d tablosundaki identity \u00f6zelli\u011fine sahip olan kolonu 27den ba\u015flatabiliyoruz.<br \/>\nAncak o yazd\u0131\u011f\u0131m\u0131za de\u011fer veritaban\u0131n\u0131n i\u00e7indeki de\u011ferlerden b\u00fcy\u00fck olmak zorundad\u0131r.Yani,en son identity de\u011feri 30 varsayal\u0131m ve biz bu komutla 15 yaparsak e\u011fer,insert etme ve baz\u0131 durumlarda sorunlar olu\u015facakt\u0131r.<\/p>\n<p>\u00dcstelik pek tavsiye edilen bir yap\u0131 de\u011fildir.<\/p>\n<p><span style=\"font-size: small; font-family: terminal, monaco;\"><strong><br \/>\n<\/strong><\/span><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda insert,update ve delete komutlar\u0131n\u0131n ayr\u0131nt\u0131lar\u0131n\u0131 g\u00f6rece\u011fiz.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/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":[100,101,102,103,87,79,85,104,86],"class_list":["post-164","post","type-post","status-publish","format-standard","hentry","category-veritabani","tag-identity","tag-rowncount","tag-bulk-insert","tag-checkident","tag-delete","tag-insert","tag-transact-sql","tag-truncate","tag-update"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=164"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/164\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}