Kenan kılıçaslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
SQL Server

SQL Server’da Matematik ve Mantıksal İşlemler

Matematik Operatörler

+ : Toplama

- : Çıkartma

* : Çarpma

/ : Bölme

% : Modül (bölmeden sonra kalan)

İşlem Öncelik Sırası

1.Öncelik : parantez içi
2.Öncelik : çarpma, bölme
3.Öncelik : toplama, çıkartma

2+3-7+5 

Yukarıdaki işlemde önce 2 ile 3 toplanır, sonuçtan 7 çıkarılır ve elde edilen sonuca 5 eklenir.

5/2
Yukarıdaki işlemde 5 tamsayısı 2 tamsayısına bölünür. Sonuç bir tamsayıdır ve değeri ondalık kısım atılarak 2 olur.
5/2 = 2
int+int = int
int+reel = reel
reel+reel = reel

Mantıksal Operatörler

Veritabanından veri almak, veri değiştirmek, veri silmek için bazı mantıksal işlemler yapmak gerekir.

Aslında programcılıkta iyi bir mantık bilgisine ihtiyaç vardır.

Veritabanında mantıksal işlemler

UPDATE ...   WHERE mantıksal ifade
DELETE ...   WHERE mantıksal ifade
SELECT ...   WHERE mantıksal ifade

mantıksal ifadenin doğru (true) sonuç verdiği kayıtlarda; UPDATE, DELETE ve SELECT işlemleri yapılabilir. Yanlış sonuç veren kayıtlar hariçte kalır.

=  Eşit
>  Büyük
<  Küçük
>=  Büyük veya eşit
<=  Küçük veya eşit
<>  Eşit değil

Karşılaştırma Operatörleri Örnekleri

a, b, c ve d değeleri aşağıdaki gibi olsun.

a=6      b=20       c=60     d=20

Bu değerlerden aşağıdaki örnekleri üretelim.

a=b      sonuç yanlış (false)
b=d      sonuç doğru (true)
a>b      sonuç yanlış (false)
c>d      sonuç doğru (true)
a>=b      sonuç: yanlış
b>=d      sonuç: doğru
c>=d      sonuç: doğru
a<b       sonuç: doğru
a<>b 	  sonuç doğru
d<>b 	  sonuç yanlış

NOT Operatörü

NOT operatörü doğrulama tablosu aşağıdadır.
x NOT x
dogru yanlış
yanlış doğru

AND Operatörü

AND operatörü doğrulama tablosu aşağıdadır.
x y x AND y
dogru dogru dogru
dogru yanlış yanlış
yanlış doğru yanlış
yanlış yanlış yanlış

OR Operatörü

OR operatörü doğrulama tablosu aşağıdadır.
x y x OR y
dogru dogru dogru
dogru yanlış dogru
yanlış doğru dogru
yanlış yanlış yanlış

IN ve NOT IN Operatörü

Bir karşılaştırma için ard arda OR operatörü kullanmak yerine IN operatörü kullanılmaktadır.

örneğin  grubu değeri  "A1",  "B2", "C2","T3" değerinden biri ise OR deyimi ile aşağıdaki gibi yazılır.

... WHERE (grubu='A1') OR (grubu='B2')  OR 
                        (grubu='C2') OR (grubu='T3')

Aynı deyimi  IN operatörü ile yazarsak,

... WHERE grubu IN ( 'A1', ' B2', 'C2', 'T3')

Aynı deyimi NOT IN operatörü ile yazarsak.

... WHERE grubu NOT IN ( 'A1', 'B2', 'C2', 'T3')

A1, B2, C2, T3 harici olanları dikkate alır.

LIKE ve NOT LIKE operatörü

Bu deyim ile herhangibir verinin içindekine göre süzme işlemi yapar. Örneğin adı "AL" ile başlayan verilerin dökümünü almak için,

... WHERE adi LIKE 'AL%'

Örneğin adı "AL" ile başlamayan verilerin dökümünü almak için,

... WHERE adi NOT LIKE 'AL%'

şeklinde yazılır.

İşaret Anlamı
% Kullanıldığı tarafta sıfır veya çok sayıda karakter var
_ Herbir bir alt çizgi herhangi bir karaktere denk gelir.
[] Karakter aralığı belirtilir. Bu aralığın içindekileri alır.
[^] Karakter aralığı belirtilir. Bu aralığın dışındakileri alır.
Örnekler

adı kolonu AL kelimesi veya AL ile başlayan tüm kayıtlar

... WHERE adı LIKE 'AL%'

adı kolonu AL kelimesi veya içinde AL yazan tüm kayıtlar

... WHERE adı LIKE '%AL%'

adı kolonu AL kelimesi veya AL ile biten tüm kayıtlar

... WHERE adı LIKE '%AL'

ilk iki karakteri AL ve 3. karakteri herhangibir karakter olan tüm kayıtlar

... WHERE adı LIKE 'AL_'

saat 9 olan ve dakika kısmında herhangi bir sayı yazan tüm kayıtlar.

... WHERE saat LIKE '9:__'

adı kolonunun 1.karakteri A-D arasında ve 2.karakteri H-Z arasında olan tüm kayıtlar.

... WHERE adı LIKE '[A-D][H-Z]%'

Adı kolonu A-D ile başlamayan tüm kayıtlar.

... WHERE adı LIKE '[^A-D]%'

adı kolonu AL ile başlamayan tüm kayıtlar

... WHERE adı NOT LIKE 'AL%'

adı kolonu içinde AL olmayan tüm kayıtlar

... WHERE adı NOT LIKE ‘%AL%'

adı kolonu AL ile bitmeyen tüm kayıtlar

... WHERE adı NOT LIKE '%AL'

ilk iki karakteri AL ve 3. karakteri herhangibir karakter olmayan tüm kayıtlar

... WHERE adı NOT LIKE 'AL_'

BETWEEN ve NOT BETWEEN operatörü

Değerlerin belli aralıkların içinde veya dışında olduğunu belirtir.

tarih aralığının '01/01/91' -  '01/01/92' olması durumunda deyim aşağıdaki gibi yazılır.

... WHERE tarih BETWEEN '01/01/91' AND '01/01/92'

yukarıdaki deyim aşağıdaki gibi de yazılabilirdi.

... WHERE tarih >= '01/01/91' AND tarih <='01/01/92'

tarih aralığının '01/01/91' -  '01/01/92' dışında olması durumunda deyim aşağıdaki gibi yazılır.

... WHERE tarih NOT BETWEEN '01/01/91' AND '01/01/92'

yukarıdaki deyim aşağıdaki gibi de yazılabilirdi.

... WHERE tarih < '01/01/91' AND tarih > '01/01/92'

IS NULL ve IS NOT NULL operatörü

Örneğin, adı kolonuna değer girilmemiş tüm kayıtlar getirilir.

... WHERE adı IS NULL

yada aşağıdaki gibi yazılırsa veri girilmiş olanlar yani NULL değer içermeyen kayıtlar sorgulanır.

... WHERE adı IS NOT NULL

Genel Bir Örnek Çözelim

Aşağıdaki mantıksal işlemin sonucu true ve false dan hangisidir.

('YTL' IN ('USD ' , 'EUR' )  AND 'CANSU' LIKE '[ABCD]A%') 
      OR 10 < 10 AND (10 BETWEEN 0.9 AND 10) OR (15=25)

Parantez öncelikli olarak, soldan sağa doğru çözeceğiz. Bu denklemde

'YTL' IN ('USD ' , 'EUR' )  AND 'CANSU' LIKE '[ABCD]A%'
ifadesi parantez içinde, önce bu ifadeyi çözeceğiz. Arada AND bağlacı var ve IN operatörü kullanılmış. AND diğer tarafında LIKE operatörü var

AND opratörünün solunda yer alan 'YTL' IN ('USD ' , 'EUR' ) işlemi false değerini verir çünkü YTL değeri IN operatörünün kapsadığı değer içinde değildir.

AND opratörü kullanıldığında bir adet bile false varsa, sonuç false'dir sağ taraftaki işleme bakmaksızın bu işlemin false olduğunu söyleyebilir.

Biz yine de ikinci tarafa bakalım; 'CANSU' LIKE '[ABCD]A%' işleminde ilk karakter ABCD karakterinde birisimi ve ikinci karakter A olan tüm kayıtlar mı diye bakacağız. Bakınca CANSU bu şartı sağlıyor. Değer true'dur. AND operatörünün solu false, sağı true yani false AND true = false'dir.

Devam edersek; ilk OR operatörüne kadar olan değer false, 10<10 değeri de false, 10 BETWEEN 0.9 AND 10 değeri true ve 15=25 değeri false

false OR false AND true OR false

İşlemde AND olduğundan ve AND'in solu false olduğu için bu işlemin sonucu false'dir.

beyaz_sayfa_en_alt_oval