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.
Bir cevap yazın