SQL View

View

New View>Add Table>All Columns>Save>Listeleme
Select * From Listeleme

Adı F ile başlayan kişileri listeleyen view oluşturunuz.
>SQL Query Analyzer

Create View FListele
AS
Select * From isim
Where ad like 'F%'
Select * From FListele

User Defined Data Types

User Defined Data Types

Bu bölümde özel veri tipi tanımlanır.
Name:Ozel, Data Type:Varchar…, Length:8000, Rule:……, Default:……..

SQL Rules

SQL Rules bölümünde şartlar tanımlayabiliriz.

SQL Default

Defaults
 
Null kayıtlara değer atar.
>New Default
Name=Uyarı
Value=’Bilgi girmediniz.’

SQL Fonksiyon Tanımlama, Create Function

Fonksiyon Tanımlama

kisi_id parametre olarak gönderilen kaydın adını ve soyadını birleştirerek geri döndüren fonksiyonu oluşturunuz.

CREATE FUNCTION tamisimal (@gelenkisi_id int)
RETURNS varchar(100) AS
BEGIN
Declare @tam varchar(100)
Select @tam=ad+' '+soyad From isim
Where kisi_id=@gelenkisi_id
Return @tam
END

>
Declare @gecici varchar(100)
Exec @gecici=tamisimal 2
Print @gecici
fatma ftm

11)Veritabanının adres alnının boş olup olmadığını kontrol ederek adres girilmediyse ekrana adres gilirmemiş yazdırın, eğer adres gilirmişse girilen adres ekranda görünsün.

CREATE FUNCTION adreskontrol (@gelenadres varchar(50))
RETURNS varchar (50) AS
BEGIN
if @gelenadres is null
Set @gelenadres='Adres girilmemiş.'
Return @gelenadres
END

>Select kisi_id, ad, soyad, dbo.adreskontrol(adres), tlf From isim

SQL Return Parametresi

Return Parametresi

Dışarıdan alınan iki değişkenin değerini çarpıp sonucu geri döndüren bir prosedür yazınız.
CREATE PROCEDURE Carp
@a int, @b int
AS
Return @a*@b
GO

>SQL Query Analyzer' aşağıdaki kodu yazınız.
Declare @sonuc int
Exec @sonuc=carp 3,4
Print @sonuc

Girilen müşteri ve yeni telefom numarasına göre varolan müşterinin telefonu değişecektir.Eğer müşteri numarası boş bırakılırsa lütfen müşteri numarası giriniz mesajı, eğer müşteri numarası yanlış girilirse böyle bir müşteri yok mesajı verilecektir. Herşey doğru ise başarılı bir şekilde ekrana yazdırılacaktır.

CREATE PROCEDURE tlfdegisikligi
@kisi_id int=null,
@tlf varchar(11)=null
AS
if @kisi_id is null
Begin
Print 'Lütfen müşeri numarası giriniz.'
Return
End
If Not Exists
(Select * From isim where kisi_id=@kisi_id)
Begin
Print 'Böyle bit müşteri yok.'
Return
End
Update isim Set tlf=@tlf
Where kisi_id=@kisi_id
Print 'Başarılı şekilde değiştirildi.'
Return
GO

>Exec tlfdegisikligi 2,05362626262

SQL Procedure, SQL Prosedür Oluşturma

Procedure

Prosedürleri Query Analyzer'de Exec komutu ile çalıştırabilirsiniz.

Kisi_id sini parametre olarak alıp kişinin özelliklerini gösteren bir procedure yazınız.

CREATE PROCEDURE SecileniListele
@secilenkisi_id int
AS
Select * From isim Where kisi_id=@secilenkisi_id
GO
>Exec SecileniListele 5

Ad ve soyadı parametre olarak alıp o kişinin özelliklerini ekranda yazan bir procedure yazınız.
CREATE PROCEDURE SecileniListeleAdSoyad
@secilenad varchar(50),
@secilensoyad varchar(50)
AS
Select kisi_id, ad, soyad, adres, tlf From isim Where ad=@secilenad And soyad=@secilensoyad
GO

>Exec SecileniListeleAdSoyad Ayşe,Eldem

Kisi_id parametre olarak, o kaydı silen bir prosedür yazınız.

CREATE PROCEDURE Sil
@silinecekid int
AS
Delete From isim Where kisi_id=@silinecekid
GO

>Exec Sil 1

Kisi_id si 2-4 arasında olanların okullarını Akören MYO olarak değiştiriniz.

CREATE PROCEDURE OkulGuncelle
@ilk int,
@son int
AS
Update isim Set okul='Akören Myo' Where kisi_id between @ilk and @son

>Exec OkulGuncelle 1,4

0532 ile başlayan Türkcell numaralarını içeren bir prosedür oluşturup bunları ekranda gösteriniz.

CREATE PROCEDURE Turkcell
AS
Select * From isim
Where tlf like '0532%'

>Exec Turkcell

Türkcell numaralarının olduğu kayıtları deneme tablosuna aktarın.
Query Analyzere aşağıdaki kodu yazınız.

Insert Into Deneme
Exec Turkcell

Ad alanının ilk iki karakteri ile telefon alanının ilk 4 karakterini birleştirip kişi id ile ekranda listeleyen prosedürü yazınız.

CREATE PROCEDURE Birlestirme AS
Select kisi_id, substring(ad,1,2) + substring(tlf,1,4) From isim

>Exec Birlestirme

SQL Case When

Case--When Yapısı

Case
When Şart Then Komutlar
When Şart Then Komutlar
Else
Komutlar
End

Soru:Sayfa sayısı 100-300 arasında olanlara %10 indirim.300-600 arasında olanlara %15 indirim.600 den fazla olanlara %20 indirim, 100 den az olanlara ise indirim yok yazdırınız.

Select ad As 'Kitap Adı',sayfa As 'Sayfa Sayısı',[İndirim Oranı]=
Case
When (sayfa>100 and sayfa<301) Then '%10 İndirim' When (sayfa>300 and sayfa<601) Then '%15 İndirim' When (sayfa>600) then '%20 İndirim'
Else 'İndirim Yok.'
End
From Kitap

SQL Else If Yapısı

If Else Yapısı

If Şart
Begin
Komutlar
End

Else

Begin
Komutlar
End


Soru:Değişkende verilen sayının değerini 100’den büyük olup olmadığını kontrol ediniz.

1.Yol
Declare @sayi Int
Set @sayi = 105
If @sayi>100                             >Sayi 100 den Büyük
   Print 'Sayi 100 den Büyük'
Else
   Print 'Sayi 100 den Küçük'

2. Yol
Declare @sayi Int
Set @sayi = 100
If @sayi>100
   Print 'Sayi 100 den Büyük.'
Else if @sayi<100
   Print 'Sayi 100 den Küçük.'
Else
   Print 'Sayi 100 e Eşit.' 


Else If Örneği
Declare @Kdv varchar(5), @Fiyat money
Set @Fiyat=500                                        >KDV Dahil Fiyat          
Set @Kdv='Dahil'                                         -------------------------
If @Kdv='Dahil'                                          >590.000000
Select @Fiyat*1.18 As 'KDV Dahil Fiyat'
Else Print 'KDV Dahil Değil'
 

KDV Dahil Fiyatı Print Komutu İle Yazdırma
declare @fiyat money,@kdv varchar(20)
set @fiyat=500
set @kdv='dahil'
if @kdv='dahil'
begin
set @fiyat=@fiyat*1.18
print convert(varchar(10),@fiyat)
end
else print convert (varchar(10),@fiyat)



Kitap tablosundaki SQLServer2005 kitabının var olup olmadığını kontrol ederek, eğer varsa kaydı silip, ekrana kayıt silindi diye yazdırınız. Eğer kitap yoksa böyle bir kitap yok diye yazdırınız.

If Exists(Select * From Kitap Where ad='SQLServer2005')
Begin
Delete From Kitap Where ad='SQLServer2005'
Print 'Kitap silindi.'
End
Else Print 'Böyle bir kitap yok.'

Kitap silindi.
Böyle bir kitap yok.
 

SQL Karakter Fonksiyonları

Lower()
Metni küçük harfe çevirir.
Declare @ad varchar(20), @soyad varchar(20)         >aydin
Set @ad='AYDIN'
Set @soyad='İstanbullu'
Print Lower(@ad)

Upper()
Metni büyük harfe çevirir.
Declare @ad varchar(20), @soyad varchar(20)        >İSTANBULLU
Set @ad='Aydin'
Set @soyad='İstanbullu'
Print Upper(@soyad)

Reverse()
Metni ters çevirir.
Declare @ad varchar(20), @soyad varchar(20)          >ullubnatsİ
Set @ad='Aydın'
Set @soyad='İstanbullu'
Select Reverse(@soyad)

SubString()
Bir metinde belirtilen karakterden itibaren belirli sayıda karakter almak için kullanılır.
Declare @ad varchar(20), @soyad varchar(20)
Set @ad='Aydın'                                                  >sta
Set @soyad='İstanbullu'
Select SubString(@soyad,2,3)

Ltrim()
Metnin başında bulunan boşlukları siler.
Declare @ad varchar(20), @soyad varchar(20)         >Aydın
Set @ad=' Aydın'
Set @soyad='İstanbullu'
Select Ltrim (@ad)

Rtrim()
Metnin sonunda bulunan boşlukları siler.
Declare @ad varchar(20), @soyad varchar(20)          >Aydın
Set @ad='Aydın '
Set @soyad='İstanbullu '
Print (@ad)
Print Rtrim (@ad)