Temel MsSQL (SQL Server) Komutları

Temel MsSQL (SQL Server) Komutları

SQL Server’da en çok kullanılan MsSQL komutlarını sizlerle paylaşıyoruz. Create database komutundan başlayıp triggerlara kadar kullanabileceğiniz kodlarımıza başlayalım…

SQL’DE CREATE DATABASE KOMUTU KULLANIMI (VERİTABANI OLUŞTURUR)

create database ornek -- ornek adında veritabanı oluşturur. -- iki kısa çizgi ekledikten sonra yorumlarınızı komutlarınıza yazabilirsiniz.

SQL’DE DROP DATABASE KOMUTU KULLANIMI (VERİTABANINI KALDIRIR)

drop database ornek -- drop database komutu ile adını belirttiğiniz veritabanını silebilirsiniz.

SQL SERVER’DA USE KOMUTU KULLANIMI(USE ‘DAN SONRA KULLANILAN VERİTABANI ADI GİRİLDİĞİNDE O VERİTABANI İÇİN SONRAKİ KOMUTLARI GERÇEKLEŞTİRİR) ve CREATE TABLE KOMUTU KULLANIMI(TABLO OLUŞTURUR)

use SqlOgreniyorum --SqlOgreniyorum veritabanını kullan demek... go create table Personel ( PersonelID int, Isim nvarchar(40), Soyisim nvarchar(40), EmailAdres nvarchar(40) )   -- create table komutu ile tablo oluşturulur. Örnek komutta da Personel adında tablo oluşturduk. İçerisinde PersonelID adında int tipinde, Isim adında nvarchar tipinde, Soyisim adında nvarchar tipinde, EmailAdres adında nvarchar tipinde sütunlar oluşturduk. 

ALTER TABLE KOMUTU KULLANIMI(TABLO BİLGİSİ GÜNCELLEME/DÜZENLEME) ADD KOMUTU

use SqlOgreniyorum go Alter table Personel Add TelefonNumarasi nvarchar(12)  --Alter table komutu ile Personel tablosu güncellenir --Add komutu ile TelefonNumarasi adında nvarchar tipinde bir sütun daha tablomuza eklenir.  --Aşağıdaki komutumuzla da bu son eklediğimiz sütunumuzu kaldıralım  Alter table Personel DROP COLUMN TelefonNumarasi  -- DROP COLUMN komutu ile adı verilen sütun kaldırıldı.

KOMUTLARI ÖZETLERSEK:

Create ile Veritabanı, Tablo kurma/oluşturma/yaratma işlemleri gerçekleştirilirken DROP ile veritabanı veya tablo kaldırma/silme işlemleri gerçekleştirilir. ALTER komutları güncelleme işlemlerinin tümünde kullanılır.

drop table Personel  -- Personel tablosunu kaldırır/siler...

SÜTUNLARA KAYIT EKLEME (INSERT INTO) KOMUTU KULLANIMI

--EN ÇOK KULLANILAN 1. KAYIT EKLEME YÖNTEMİ!  insert into Personel (PersonelID, Isim, Soyisim, EmailAdres) values(1, 'Tutku', 'ÇAKIR', 'webtutkusu@gmail.com')  -- insert into komutundan sonra tablo adı yazılır parantezler içinde sütun isimleri yazılır ve values komutu yazılarak tekrar parantez içine veri tipine göre içeriye alınacak değerler girilir.  --2.KAYIT EKLEME YÖNTEMİ  insert into Personel values(2, 'Ahmet', 'ÇAKIR','ahmet@tutkucakir.com.tr')  -- Bu yöntemde insert into tabloAdi komutundan sonra values komutu yazılarak direkt parantez içine veri tipine göre içeriye alınacak değerler girilir. UYARI: BU KOMUTTA tabloda yer alan tüm sütunlar atlanmadan sırasına göre değerlendirilmelidir.  --1.yöntemde belirtilen sütunlara atama yapılırken, 2.yöntemde tablodaki tüm sütunlara sırasıyla atama gerçekleştirilir. Sıraya uyulmazsa kayıt işleminde hata gerçekleşebilir.

SELECT ile VERİ LİSTELEME

select * from personel  -- Personel tablosundaki tüm verileri tüm sütunlarla birlikte listeler

UPDATE KOMUTU VE WHERE ŞARTI KULLANIMI

update Personel set Isim='Ahmet Şerif' where PersonelID=1  -- ÖRNEK KOMUTTA PersonelID değeri 1 olan kayıt bulunur ve Isim sütunundaki değer Ahmet Şerif olarak değiştirilir.  -- UPDATE TABLOADI SET SUTUNADI=YENİ DEĞER, SUTUNADI2=YENİDEĞER2 WHERE ID=IDNO şeklinde komut kullanılır.  --Where şarttır. Where olmazda tüm kayıtlar aynı şekilde değiştirilir. --Delete komutunda da where çok önemlidir, where koşulu belirtilmezde tüm verilerimizi kaybedebiliriz.

DELETE KOMUTU KULLANIMI

select * from Personel -- select * from Personel komutu ile Personel tablomuzdaki tüm verilerimizi listeledik.  delete Personel where PersonelID=1  -- Bu komut ile Personel tablomuzda yer alan PersonelID sütununda 1 değerine sahip kaydımızı sildik.

SELECT KOMUTUNDA BAZI SÜTUNLARI GETİRMEK

use AdventureWorksDW2012 go  -- tüm tabloyu listeletelim select * from SalesLTProduct   -- sadece belirlediğimiz sütunları getirelim select Name, ProductNumber,Color from SalesLTProduct  -- Name, ProductNumber, Color adlı sütunları ve bunlara girilen verileri listeler.

SELECT VE AS KOMUTU KULLANIMI (LİSTENEN TABLOLARA GEÇİCİ İSİM ATAMAK)

select  Name as Isım,  ProductNumber, Color  from SalesLTProduct  -- as geçici isim ataması yapar. Sütun adının geçici olarak belirtilen isimde görünmesini sağlar... -- Örnek kodda Name yerinde listelenen veride sütun başlığında Isım yazar
Boşluklu isimler için ise kapalı parantez kullanırız...  select  Name as Isım,  ProductNumber as [Urun Numaralari], Color  from SalesLTProduct  -- ProductNumer yerine sütun başlığında Urun Numaralari yazar.

SELECT VE WHERE, AND, OR, IN KULLANIMI

select * from SalesLTProduct where ProductNumber='HL-U509'  -- Bu komutla ProductNumber='HL-U509' değerine karşılık gelen kayıtlar listelenir. WHERE bir koşul komutudur.   select * from SalesLT.Product where Color='Black' and ProductModelID='9'  --Color değeri Black ve ProductModelID değeri 9 olan kayıtları listeler -- Yani birden çok koşul için and komutu koşullar arasında yazılır. -- AND komutunda iki koşul da sağlanmalıdır. Biri sağlanmaz ise kayıt görüntülenmez. -- OR komutunda ise koşullardan biri sağlansa kayıt getirilir.  select * from SalesLT.Product where Color='Black' or ProductModelID='9' -- Color değeri Black veya ProductModelID değeri 9 olan tüm kayıtlar listelenir.  select * from SalesLT.Product where Color='Black' or Color='Yellow'  select * from SalesLT.Product where Color IN ('black','yellow','blue') -- Bir sütunda birden çok değer kullanacaksak IN kullanırız. -- IN komutunu bir önceki örnekte kulladık. Color alanında bulunan black, yellow ve blue değerlerini alan tüm kayıtlar listelenir.

LIKE VE NOT LIKE KOMUTU KULLANIMI (ARAMA YAPMAK İÇİN KULLANIRIZ)

-- % Birden fazla bilinmeyen karakteri temsil eder... -- _ İfadesi tek bir bilinmeyen karakteri temsil eder...  select Name from SalesLT.Product where Name like '%Half%'  -- Name sutunu içerisinde half geçen kayıtlar listelenir   select Name from SalesLT.Product where Name not like '%Half%'  -- Name sutunu içerisinde half geçmeyen kayıtlar listelenir

BETWEEN KOMUTU KULLANIMI

--between kullanımı adı üzerinde iki değerin arasında kalan verileri getirir...  --Örnek:  select * from SalesLT.Product where ListPrice Between 500 and 1500  --Fiyatı 500 ila 1500 olanları listeler    select * from SalesLT.Product where Size Between '50' and '60'  --Size sütunundaki nvarchar değelerinin 50 ila 60 arasındakini listeler...

SELECT SUTUNADI * FROM TABLOADI VE ORDER BY ÖRNEKLERİ

select Name,* from SalesLT.Product  -- İlk önce Name sütununu getirir sonra tüm sütunları  select Name,* from SalesLT.Product order by Size asc  -- Size sütununu A'dan Z'ye doğru sıralar  select Name,* from SalesLT.Product order by Size desc  -- Size sütununu Z'den A'ya doğru sıralar

DISTINCT KOMUTU KULLANIMI (TEKİL VERİLERİ LİSTELER)

select Distinct Color from SalesLT.Product  -- Distinct Bu Color sütunundaki tekil tüm verileri getirir

TABLO OLUŞTURMA / OLUŞTURULAN TABLOLARDAKİ SÜTUNLARA NOT NULL DEĞERİ EKLEMEK

create table OrnekSon( Kolon1 int, Kolon2 nvarchar(20) )  create table Ornek1 ( ID int not null, Isim nvarchar(30) )  --not null komutuyla oluşturulmuş sütuna kayıt eklendiğinde o sütun boş bırakılamaz. Mutlaka değer almalıdır. --INSERT INTO ile veri ekleyelim  insert into Ornek1(ID, Isim) values (1, 'Tutku')  

UNIQUE KULLANIMI

create table Ornek2 ( ID int Unique, Isim nvarchar(30) )  insert into Ornek2(ID, Isim) values(1, 'Tutku')  select * from Ornek2   insert into Ornek2(ID, Isim) values(1, 'Murat') -- Constraints lerden Unique kullandığından kayıt eklerken ID alanına ikinci kez 1 veremeyiz.

İLİŞKİSEL VERİTABANINA GİRİŞ YAPALIM

Primary Key ve Foreign Key oluşturalım:

create table Musteri( ID int primary key, Isim nvarchar(20), Soyisim nvarchar(20) )  --primary key kullandığımızdan ID değeri aynı zamanda Unique olur...  insert into Musteri (ID,Isim, Soyisim) values(1,'Tutku','ÇAKIR')  --ikinci kez ID için 1 değerini veremeyiz...  create table Musteri_Iletisim( ID int, TelefonI nvarchar(12), TelefonII nvarchar(12), foreign key(ID) references Musteri(ID) )  -- ilişki kurmak için foreign key(ID) için Musteri(ID) alanını referans gösterdik.

CHECK KULLANIMI

Create table ornek4( ID int primary key, Isim nvarchar(20), Soyisim nvarchar(20), Yas int check(Yas>10) )  -- check koşulu sağlamayan ifadenin tabloya eklenmesini engeller.  insert into ornek4 (ID, Isim, Soyisim, Yas) values(1,'TUtku','ÇAKIR', 28) -- kayıt başarılı insert into ornek4 (ID, Isim, Soyisim, Yas) values(2,'Ahmet','ÇAKIR', 10) -- The statement has been terminated. KAyıt başarısız

DEFAULT KULLANIMI:

create table ornek5 ( Isim nvarchar(20), Soyisim nvarchar(20), EmailAdres nvarchar(20) default 'info@tutkucakir.com.tr' )  insert into ornek5 (Isim, Soyisim, EmailAdres) values('Tutku', 'Çakır', 'webtutkusu@gmail.com') -- kayıt eklendi   insert into ornek5 (Isim, Soyisim) values('Ahmet', 'Çakır2')  select * from ornek5  --default varsayılan değeri yazar...

TABLO KALDIRMA

drop table Musteri_Iletisim drop table Musteri

STORED PROCEDURE GİRİŞ:

create table Musteri ( ID int primary key, Isim nvarchar(30), Soyisim  nvarchar(30), EmailAdres  nvarchar(60) default 'info@tutkucakir.com.tr', OlusturmaTarih datetime default getdate() )  --getdate() o zamandaki tarihi verir.   create table MusteriGirisBilgileri ( MID int primary key, KullaniciAdi  nvarchar(30) unique not null, Sifre  nvarchar(10) check(Len(sifre)>6), GizliSoru  nvarchar(40), Cevap  nvarchar(40), foreign key (MID) references Musteri(ID)  )  -- Len sifre uzunluğunu verir, check şart belirtir, unique o sütundaki kayıtlarda tekillik sağlar yani mükerrer kullanıcı adı seçilmesini engeller.  create table Urun ( UrunID int primary key, Tanim  nvarchar(50) not null, Adet  int check(Adet>0) )  create table Satis ( ID int primary key, MID int not null, UID int not null, SatilanAdet int check(SatilanAdet>0) )    --create proc  create procedure SP_Muster_YeniKayit ( @ID int, @Isim  nvarchar(30), @Soyisim  nvarchar(30), @EmailAdres  nvarchar(60), @OlusturmaTarih datetime, @KullaniciAdi  nvarchar(30), @Sifre  nvarchar(10), @GizliSoru nvarchar(40), @Cevap  nvarchar(40) ) as begin insert into Musteri(ID,Isim, Soyisim,EmailAdres,OlusturmaTarih) values(@ID,@Isim,@Soyisim,@EmailAdres,@OlusturmaTarih) --@@rowcount --etkilenen kayıt sayısını geriye döner 	if(@@ROWCOUNT>0) 	begin 	insert into MusteriGirisBilgileri (MID, KullaniciAdi, Sifre, GizliSoru, Cevap) values(@ID, @KullaniciAdi,@Sifre, @GizliSoru, @Cevap) 	end end

SP ÇALIŞTIRMA

USE [SqlOgreniyorum] GO  DECLARE	@return_value int  EXEC	@return_value = [dbo].[SP_Muster_YeniKayit] 		@ID = 1, 		@Isim = N'Tutku', 		@Soyisim = N'ÇAKIR', 		@EmailAdres = N'webtutkusu@gmail.com', 		@OlusturmaTarih = NULL, 		@KullaniciAdi = N'tutku.cakir', 		@Sifre = N'1234567', 		@GizliSoru = N'merhaba', 		@Cevap = N'sql'  SELECT	'Return Value' = @return_value  GO  --kayıt başarılı

SP’Yİ GÜNCELLEYELİM

alter procedure SP_Muster_YeniKayit ( @ID int, @Isim  nvarchar(30), @Soyisim  nvarchar(30), @EmailAdres  nvarchar(60), @KullaniciAdi  nvarchar(30), @Sifre  nvarchar(10), @GizliSoru nvarchar(40), @Cevap  nvarchar(40) ) as begin insert into Musteri(ID,Isim, Soyisim,EmailAdres) values(@ID,@Isim,@Soyisim,@EmailAdres) --@@rowcount --etkilenen kayıt sayısını geriye döner 	if(@@ROWCOUNT>0) 	begin 	insert into MusteriGirisBilgileri (MID, KullaniciAdi, Sifre, GizliSoru, Cevap) values(@ID, @KullaniciAdi,@Sifre, @GizliSoru, @Cevap) 	end end  --alter ile güncelledik

UPDATE, DELETE GİBİ SP’LER EKLEYELİM:

 --with encryption ile SP'mizi şifrelemiş oluruz. Yani SQL serverda sağ tuş ile modify edemeyiz. Bu yüzden şifreleme yaparak çalışıyorsak T SQL kodlarımızın yedeği bizde olması gerekir.   alter procedure SP_Muster_YeniKayit ( @ID int, @Isim  nvarchar(30), @Soyisim  nvarchar(30), @EmailAdres  nvarchar(60), @KullaniciAdi  nvarchar(30), @Sifre  nvarchar(10), @GizliSoru nvarchar(40), @Cevap  nvarchar(40) ) with encryption as begin insert into Musteri(ID,Isim, Soyisim,EmailAdres) values(@ID,@Isim,@Soyisim,@EmailAdres) --@@rowcount --etkilenen kayıt sayısını geriye döner 	if(@@ROWCOUNT>0) 	begin 	insert into MusteriGirisBilgileri (MID, KullaniciAdi, Sifre, GizliSoru, Cevap) values(@ID, @KullaniciAdi,@Sifre, @GizliSoru, @Cevap) 	end end

MAX, MIN KULLANIMI

Select Max(StandardCost) from SalesLT.Product  --- Sütundaki MAX değeri bulur...   Select Min(StandardCost) from SalesLT.Product  --- Sütundaki Minimum değeri bulur...   Select Min(StandardCost) as ENDUSUKDEGER from SalesLT.Product  --- Sütundaki Minimum değeri bulur...

COUNT İLE KAYIT SAYISI ÇIKARTMA

-- Count fonksiyonu  -- select count(kolon) from tablo where şart...  --Komutumuz:   use AdventureWorksDW2012 go  select count(ProductNumber) from SalesLT.Product where Color='Black'

AVG KULLANIMI

-- AVG fonksiyonu kolon içerisindeki ortalamayı bulur...  select AVG(ListPrice) from SalesLT.Product where Color='Black'

SUM KULLANIMI

--SUM fonksiyonu belirtilen kodda gelen değerleri toplar  select SUM(ListPrice) from SalesLT.Product where Color='Black'

UPPER KULLANIMI

--UPPER KULLANIMI select UPPER(Name) from SalesLT.Product  --UPPER KULLANIMI (SÜTUNA GEÇİCİ AD VERİLMİŞ HALİ) select UPPER(Name) as [URUN ADLARI] from SalesLT.Product

LOWER KULLANIMI

--LOWER KULLANIMI (SÜTUNA GEÇİCİ AD VERİLMİŞ HALİ) select LOWER(Name) as [URUN ADLARI] from SalesLT.Product

LEN KULLANIMI

--LEN(KARAKTER SAYISINI BELİRTİR)  ve DATALENGTH(BOYUTUNU BELİRTİR) komutları...   select Name, LEN(Name) as MetinselUzunluk from SalesLT.Product --İKİ SUTUN GÖRÜNÜR  select Name, LEN(Name) as MetinselUzunluk, DATALENGTH(Name) as BYTE from SalesLT.Product -- 3 SÜTUN GÖRÜNÜR NAME, METİNSELUZUNLUK, BYTE  -- METİNSELUZUNLUK VE BYTE SÜTUNLARI SANALDIR. NAME SÜTUNU ASIL SÜTUNDUR.

CONCAT KULLANIMI

-- BİR VEYA BİRDEN FAZLA STRİNG KOLONUMUZU BİRLEŞTİRİP TEK SÜTUNMUŞ GİBİ BİRLEŞTİRME İŞLEMİDİR.  select Name,ProductNumber, Name+''+ProductNumber as IKISUTUN from SalesLT.Product where Name is not null --iki sutunu + ile de birleştirebiliriz --yada  select Name,ProductNumber, CONCAT(Name, ProductNumber) as [IKI SUTUN CONCAT İLE] from SalesLT.Product where Name is not null 

LEFT, RIGHT KULLANIMI

-- LEFT OR RIGHT select Name, LEFT(Name,4) as [SOLDAKİ İLK 4 KARAKTER] from SalesLT.Product  select Name, RIGHT(Name,4) as [SAĞ TARAFTAN İLK 4 KARAKTER] from SalesLT.Product

SUBSTRING KULLANIMI

select Name, SUBSTRING(Name,2,5) as [2.INDEX VE 4.INDEX ARASINDAKİ KARAKTERLER] from SalesLT.Product --1. INDEX ILK HARFTIR... 2.INDEX METNIN İKİNCİ HARFİDİR.

Group by gruplayarak ürün rengine göre fiyatını çıkaralım:

select Color, Sum(ListPrice) from SalesLT.Product group by Color  --Renk renk gruplayarak karşımıza fiyat sütununu çıkarır...  -- aşağıdaki komutta Renk gruplarındaki en düşük ve en yüksek tutarları çıkarır  select Color, Min(ListPrice) as ENUCUZ, Max(ListPrice) as ENPAHALI from SalesLT.Product group by Color
select Color, Min(ListPrice) as ENUCUZ, Max(ListPrice) as ENPAHALI from SalesLT.Product group by Color having Min(ListPrice)>8 order by Min(ListPrice) asc  -- Group by 'da şartlama işlemi Having ile yapılır... Normalde where de kullandığımız şartları Group by'da having ile yaparız.

JOIN KULLANIMLARI

--Inner join kullanımı  select * from SalesLT.Product inner join SalesLT.ProductCategory on SalesLT.Product.ProductCategoryID=SalesLT.ProductCategory.ProductCategoryID  -- iki tablo birleşik görünür...  -- INNER JOIN YAPISI  select SalesLT.Product.Name as URUNADI, SalesLT.ProductCategory.Name as KategoriAdi from SalesLT.Product inner join SalesLT.ProductCategory on SalesLT.Product.ProductCategoryID=SalesLT.ProductCategory.ProductCategoryID  --Ürün adı ve Kategori adları bitişik görünür diğer veriler görünmez...  select SP.Name as URUNADI, SPC.Name as KategoriAdi from SalesLT.Product as SP inner join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID  -- as ile tablolara takma ad kullanmıştık o takma adlarla Inner Join kodunu yeniden düzenledik.   -- Left Join ile tablo asıl tablonun sağına, Right Joinde ise asıl tablonun soluna gelir... Eşleşmeyen tablolardaki ilişkiler için NULL değeri döner  select SP.Name as URUNADI, SPC.Name as KategoriAdi from SalesLT.Product as SP left join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID  select SP.Name as URUNADI, SPC.Name as KategoriAdi from SalesLT.Product as SP right join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID   --FULL Join  select SP.Name as URUNADI, SPC.Name as KategoriAdi from SalesLT.Product as SP full join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID
--Inner  select SPC.Name as [KATEGORİ ADI], SP.Color as [RENK] from SalesLT.Product as SP inner join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID  --  --Inner Join ve Group by kullanımı  select SPC.Name as [KATEGORİ ADI], SP.Color as [RENK], from SalesLT.Product as SP inner join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID group by SP.Color, SPC.Name  --  select SPC.Name as [KATEGORİ ADI], SP.Color as [RENK], sum(SP.ProductID) as [TOPLAM ADET], avg(SP.ListPrice) as [Ortalama Fiyat] from SalesLT.Product as SP inner join SalesLT.ProductCategory as SPC on SP.ProductCategoryID=SPC.ProductCategoryID group by SP.Color, SPC.Name 

DECLARE VE PRINT

-- T SQL içerisinde yeni bir değişken oluşturma işleminde declare komutu kullanılır. -- Genel yazımı: -- declare @degiskenadi // değişken isimleri diğer dillerdeki gibi kurallara tabidir -- set @degiskenadi = 'Tutku' şeklinde set edilebilir.  declare @TamIsim nvarchar(30) set @TamIsim = 'Tutku ÇAKIR' print @TamIsim  --yada  declare @TamIsim2 nvarchar(30) = 'Ahmet ÇAKIR' print @TamIsim2  -- Örnek  declare @ToplamKayitSayisi int select @ToplamKayitSayisi=count(*) from SalesLT.Product print @ToplamKayitSayisi

TABLE TIPINDE DECLARE

--Declare >> Table  declare @Personel table ( ID int, Isim nvarchar(20), Soyisim nvarchar(20) )  insert into @Personel(ID,Isim,Soyisim) values(1, 'Tutku','ÇAKIR') select * from @Personel  update @Personel set Isim='Ahmet' where ID=1  select * from @Personel

IF ELSE KULLANIMI

declare @KullaniciAdi nvarchar(20), @Sifre nvarchar(20) set @KullaniciAdi = 'Demo' set @Sifre = 'Demo'  if @KullaniciAdi = 'Demo' and @Sifre='Demo2' begin print 'Kullanıcı Giriş İşlemi Başarılı' end  else begin print 'Kullanıcı Giriş İşlemi Başarısız!' end   -- yada  declare @ToplamKayitSayisi int select @ToplamKayitSayisi = count(*) from SalesLT.Product  if @ToplamKayitSayisi <= 100 begin print 'Toplam Sayı 100 den küçük veya eşittir' end else begin  print 'Toplam sayı 100 den büyüktür' end

CASE WHEN KULLANIMI (C#’TA SWITCH CASE AKLINIZA GELSİN)

use AdventureWorksDW2012  select Name,Color from SalesLT.Product  select Name, ( case Color when 'Black' then 'Siyah' when 'Blue' then 'Mavi' when 'Grey' then 'Gri' when 'Multi' then 'Çok Renkli' when 'NA' then 'Renksiz' when 'Red' then 'Kırmızı' when 'Silver' then 'Gümüş' when 'Silver/Black' then 'Gümüş Siyah' when 'White' then 'Beyaz' when 'Yellow' then 'Sarı' else 'Renk Tanımlanmamış' end) as RENKLER from SalesLT.Product  )

WHILE DONGUSU

-- Genel Kullanımı  -- while şart --begin ----komut --end   declare @Isim nvarchar(20) = 'Tutku ÇAKIR'  declare @Sayac int=0  while @Sayac <=Len(@Isim) begin print substring(@Isim, 1,@Sayac) set @Sayac=@Sayac+1 end print 'While döngüsü bitti'

TEMP TABLE KULLANIMI

--GEÇİCİ TABLODUR SQL KAPANIP AÇILDIĞINDA SİLİNİR.  -- Local Temp Table: # -- Global Temp Table: ##  create table #Personel ( Id int primary key, Isim nvarchar(20) not null, Soyisim nvarchar(20) not null )  insert into #Personel values(1, 'Tutku', 'ÇAKIR')  select * from #Personel  update #Personel set Isim='Ahmet' where Id=1  select * from #Personel  Delete from #Personel where Id=1  select * from #Personel

TRY CATCH KULLANIMI

-- TRY CATCH --BEGIN TRY --ISLEM VEYA ISLEMLER --END TRY --BEGIN CATCH --HATA OLDUĞU ZAMAN YAPMAK İSTEDİĞİMİZ --END CATCH  begin try insert into #Personel (ID) values ('Tutku') end try begin Catch print 'Hata Oluştu' end Catch

KULLANICI TANIMLI FONKSİYONLAR:

-- Scaler fonksiyonu tek değer döndürüyor   use AdventureWorksDW2012  --create function FonksiyonAdi --(  --) --returns tip --as --begin --fonksiyon --end  create function UrunIDIsimAl ( @ID int ) returns nvarchar(200) as begin    declare @BulunanIsim nvarchar(200) if(Exists(select count(*) from SalesLT.Product where ProductID=@ID)) begin select @BulunanIsim = Name from SalesLT.Product where ProductID=@ID end else begin set @BulunanIsim = 'Aradığınız ID Değeri Bulunamadı' end  return @BulunanIsim end  select dbo.UrunIDIsimAl(680)  select * from SalesLT.Product  -- Tekrar fonksiyonu düzenleyelim  alter function UrunIDIsimAl ( @ID int ) returns nvarchar(200) as begin    declare @BulunanIsim nvarchar(200) if(Exists(select * from SalesLT.Product where ProductID=@ID)) begin select @BulunanIsim = Name from SalesLT.Product where ProductID=@ID end else begin set @BulunanIsim = 'Aradığınız ID Değeri Bulunamadı' end  return @BulunanIsim end  select dbo.UrunIDIsimAl(1)  -- EKranda Aradığınız ID Değeri Bulunamadı yazdı  drop function UrunIDIsimAl -- üstteki komut ile de fonksiyonu kaldırabiliriz...  -- -- --  -- Table fonksiyonu ise geriye tablo döndürüyor  create function IDProduct ( @ID int ) returns table as return (select * from SalesLT.Product where ProductID=@ID)   select * from dbo.IDProduct(680)   --   --Geriye tablo döndüren fonksiyonlar...  create function Personel ( ) returns @PersonelTablo table ( ID int, Isim nvarchar(20), SoyIsim nvarchar(20) ) as begin insert into @PersonelTablo (ID,Isim, SoyIsim) values(1,'Tutku','ÇAKIR') return end  select * from dbo.Personel()

TRIGGERLER

--Genel Kullanımı --Create Trigger triggerAdi --ON tabloAdi --FOR/AFTER/INSTEAD OF VE INSERT / UPDATE / DELETE --AS --Begin ----SQL İfadeler --End  create table Personel( ID int, Isim nvarchar(20), Soyisim nvarchar(20) )  insert into Personel(ID, Isim, Soyisim) values(1,'Tutku', 'ÇAKIR')  select * from personel  create trigger YeniPersonelEkleTrigger on Personel after insert AS begin select 'Yeni Personel Eklendi' end  insert into Personel values(2,'Ahmet', 'ÇAKIR') --Satırda Yeni Personel Eklendi yazar...  --------------------------  create trigger YeniPersonelGuncelleTrigger on Personel after update AS begin select 'Yeni Personel Güncellendi' end  go --aynı anda iki kod komut bloğunun çalıştırır  create trigger YeniPersonelSilTrigger on Personel after delete AS begin select 'Yeni Personel Silindi' end  update Personel set Isim='Ahmet Şerif' where ID=2 --Yeni Personel Güncellendi yazar delete from Personel where ID=2 --Yeni Personel Silindi yazar
alter trigger YeniPersonelSilTrigger on Personel after delete AS begin select 'Personel Silindi' end  -- alter komutu ile triger içeriği güncellendi  delete from Personel where ID=1 -- Personel Silindi yazar  drop trigger YeniPersonelSilTrigger  -- drop komutu ile triggerımızı kaldırabiliriz.
--Aşağıdaki komutla Insert ettikten sonra eklenen veri değeri listelenir  alter trigger YeniPersonelEkleTrigger on Personel after insert AS begin select * from inserted end  insert into Personel(ID, Isim, Soyisim) values(1,'Tutku', 'ÇAKIR')
create trigger YeniPersonelSilTrigger on Personel after delete AS begin select * from deleted -- sanal bir tablo end  delete from Personel where ID=1 --ekranda silinen satır anlık olarak görünür select * from personel --silindiğini doğrulamak için tekrar select ile sorguladığımızda verinin olmadığını görebiliriz.
insert into Personel values(1,'Tutku','ÇAKIR')  alter trigger YeniPersonelGuncelleTrigger on Personel after update AS begin select * from inserted select * from deleted end  update Personel set Isim='Yakup' where ID=1    --Önceki satır ve yeni hali ayrı tablolar halinde listelenir...
create table Musteri ( ID int primary key, Isim nvarchar(20), Soyisim nvarchar(20), EmailAdres nvarchar(30), Yas int )  create trigger MusteriYasSinirKontrol on Musteri for insert --tablomuza değer gelmeden önce yapılan kontroldür as begin  if exists(select * from inserted where Yas<20) begin raiserror('Müşterilerin yaş sınırı 20 dir',1,1) rollback transaction end end   insert into Musteri (ID, Isim, Soyisim, EmailAdres, Yas) values (1,'Tutku','ÇAKIR','webtutkusu@gmail.com',35) --kayıt oldu insert into Musteri (ID, Isim, Soyisim, EmailAdres, Yas) values (2,'Ahmet','ÇAKIR','webtutkusu@gmail.com',15) -- Müşterilerin yaş sınırı 20 dir yazdı. Ve hata verdi.

Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir